从事互联网开发工作,写博客,记录问题与学习支持,并分析
最近在做报表统计,跑hadoop任务。 之前也跑过map/reduce但是数据量不大,遇到某些map/reduce执行时间特别长的问题。 执行时间长有几种可能性: 1. 单个map/reduce任务处理的任务大。
编写hadoop任务经常需要用到partition和排序。这里记录一下几个参数。 1. 概念 Partition:分桶过程,用户输出的key经过partition分发到不同的reduce里,因而partitioner就是分桶器,一般用平台默认的hash分桶也可以自己指定。
正则表达式用的地方是很多的。比如字符串处理过程中。最近遇到记录一下。 1. 比如在shell中 1 #!/bin/bash 2 3 str="date:2017-11-28 os:centos blackbord:blog" 4 5 echo $str | grep centos --colo...
通常情况做简单的运算,很多命令里面都是支持的。比如for, awk等。 1 #!/bin/bash 2 3 num=0 4 #for循环这里的数字也是运算 5 #也可以使用 seq 0 5 6 #也可以使用数组 7 for ((i=0;i
新安装的ubuntu,执行shell命令,都怀疑自己的shell水平了。 原来, ubuntu默认的是dash, 需要手动执行命令将dash改为bash. 命令: sudo dpkg-reconfigure dash。 然后出现的界面中选择 NO, 之后就正常啦。
html中偶尔会使用到列表,记录一下。 1 DOCTYPE html> 2 3 4 5 6 .level_1{list-style-type:decimal;} 7 .
Python感觉是模仿Java, 到处都需要加try..catch...。 这里记录一下用法,方便后续使用。 1 # -*- coding:utf-8 -*- 2 3 import os 4 import logging 5 import traceback 6 7 #设置log, 这里使用默认log 8 logging.
用到了html字符串校验,这里记录一下。 1 2 3 4 function on_click(){ 5 var email = document.
这题应该见的不少了,写写记录一下。 实现该功能分析: (1) O(1) 时间完成查找,那除了 hash 别无选择。 (2) LRU 最近最少使用算法,为了方便数据的淘汰。需要对最近访问的数据放未访问数据之前。
使用C语言用到了二维数组 1 #include 2 #include 3 using namespace std; 4 5 void print_arr_fun1(int arr[][3], int row){ 6 for (int i = 0; i < row; ++i...
介绍 Tmux 是一个工具,用于在一个终端窗口中运行多个终端会话。 不仅如此,你还可以通过 Tmux 使终端会话运行于后台或是按需接入、断开会话,这个功能非常实用。 很好的工具,记录一下,以后要常用。
这两个概念还是不太一样的。下面来说说个人的理解,记录一下。 1. 镜像 镜像可以理解为一份完全一样的拷贝。也就是"深度拷贝",一个复制品。 比如 iso映像文件,ubuntu-12.04.5-desktop-amd64.iso 比如 数据的多副本,用于多副本容灾、或者应对高峰读取。
SkipList在leveldb以及lucence中都广为使用,是比较高效的数据结构。由于它的代码以及原理实现的简单性,更为人们所接受。 所有操作均从上向下逐层查找,越上层一次next操作跨度越大。其实现是典型的空间换时间。
1. 快速排序基本算法 1 #include 2 const static int NUM = 47; 3 4 int quick_sort(int *a, int start, int end){ 5 if (start >= end) 6 return...
写代码中需要用到读取配置,最近在写python,记录一下。 如下,假设有这样的配置。 [db] db_host=127.0.0.1 db_port=3306 db_user=root db_pass= [concurrent] thread=200 processor=400 可以使用ConfigParser模块来读取、写入配置。
编程中遇到个问题,python json.loads时元素顺序可能会发生变化。 这个对于一些需要使用元素顺序来做一些策略的代码来说是致命的。 在网上查了查,结合自己的知识总结一下。 使用dict时,Key是无序的。
工作中使用到了json schema格式校验的问题,在网上查了些资料,结合自己的理解记录一下。 json schema可以对json结果字符串做出一些约束,例如: 1. 值类型是:array, object, number, string等等 2.
写代码会遇到整数除法需要上取整的情况。 1. 整数除法的话,可以自己写^_^ 1 #!/bin/bash 2 3 num=101 ##被除数 4 pre=10 ##除数 5 6 ##线上取整 7 res=$[(num+pre-1)/pre] 8 echo ...
看一些代码时,会遇到likely unlikely, 查了查网上的资料,结合自己的理解记录一下。 1. 一些概念 指令周期是指执行一条指令所需要的时间,一般由若干个机器周期组成,是从取指令、分析指令到指令执行完所需的全部。
软中断信号(signal,又简称为信号)用来通知进程发生了异步事件。进程之间可以互相通过系统调用kill发送软中断信号。 内核也可以因为内部事件而给进程发送信号,通知进程发生了某个事件。 注意,信号只是用来通知某进程发生了什么事件,并不给该进程传递任何数据。
python中json数据的使用。 dumps和loads也是需要成对使用的,就像c++ new/delete malloc/free一样需要成对使用。 看着像json的字符串,也不一定是json字符串。
指针函数是个函数,是返回指针类型到函数。 函数指针是个指针,是指向函数地址到指针。 区分两者的关键点是,函数名是否用*和括号“包围”起来。 1 #include 2 int *create_node(int); //指针函数声明 3 int *(*fun)(int); //函数指针声明, 指向返回int*且有一个int参数的函数.
遇到了这个问题。记录一下。用strpos查找字符串来进行字符串包含判断。 1 更多可以看w3school的函数说明 http://www.w3school.com.cn/php/func_string_strpos.asp
pthread_create方法遇到类方法时总会报 argument of type ‘void* (Thread::)(void*)’ does not match ‘void* (*)(void*)’pthread_create方法第三个参数只能是C函数指针或者类到静态函数指针。
编程中会遇到调用其他语言到库,这里记录一下Python调用C++。 Python底层是C, 所以调用C还是比较方便。调用C++有些麻烦。 Python提供了ctypes, 方便将Python类型转为C类型,实现传参数、函数返回类型的对应。
记录一下shell中数组的使用 主要是数组元素的创建,元素的增、删、改操作。 1 #!/bin/bash 2 3 #基本数组操作 4 a=(1 2 3) ##()表示空数组 5 echo "第0个元素:"${a[0]} 6 echo "所有元素: "${a[@]} 7 echo...
1. 背景 多线程中经常需要使用到锁(pthread_mutex_t)来完成多个线程之间的互斥操作。 但是互斥锁有一个明显到缺点: 只有两种状态,锁定和非锁定。 而条件变量则通过允许线程阻塞并等待另一个线程发送唤醒信号的方法弥补了互斥锁的不足,它常和互斥锁一起使用。
C++中使用到的资源可能很多,并且一些资源获取后还必须释放归还给系统, 列举几个如: 1. 打开的文件句柄 2. 数据库连接 3. 互斥锁 4. 动态分配new出来的内存 5. 网络socket连接 C++中有智能指针,比如shared_ptr,可以自动释放指针指向的资源。
异常,让一个函数在遇到自己无法处理的问题时可以即时抛出,希望他到调用着直接或者间接的处理该异常。 错误的处理依然是一件很困难的事情,C++的异常机制为程序员提供了一种处理错误的方式,使程序员可以更自然的方式处理错误。
内置宏和预编译指令, 在代码调试、单元测试、跨平台代码中经常会用到。这里记录一下。 1. 内置宏 (文件名,当前行号,当前日期,当前时间,当前执行方法名) __FILE____LINE____DATE____TIME__ __FUNCTION__ 2.
C++并不支持反射机制,只能自己实现。 如果需要实现字字符串到函数到映射,一定要使用到函数指针。 简单实现反射机制,根据字符串来构造相应到类。主要有以下几点: (1) 可以使用map保存字符从到函数指针到映射。
遇到一个不错的php代码。记录一下。 在写php代码时,经常会遇到需要返回值的情况,可以统一设置一下返回值的格式。下面就是一个不错的例子。 配置类Return.conf.php 1
使用模板能够极大到使得代码可重用。 记录一下,方便后续使用。 1. 函数模板,支持多种类型参数 1 #include 2 #include 3 4 //函数模板 5 template 6 T add(T a, T b){ 7 return a + b; 8 } ...
编程中经常需要在程序中使用shell命令来简化程序,这里记录一下。 1. C++ 执行shell命令 1 #include 2 #include 3 #include 4 5 int exec_cmd(std::string cmd, std::string &res){ 6 if (cmd.
1. 背景 库:就是已经编写好的,后续可以直接使用的代码。 c++静态库:会合入到最终生成的程序,使得结果文件比较大。优点是不再有任何依赖。 c++动态库:动态库,一个文件可以多个代码同时使用内存中只有一份,节省内存,可以随主代码一起编译。
比较文件夹diff,可以直接使用diff命令 [root@~]# diff -urNa dir1 dir2 -a Treat all files as text and compare them line-by-line, even if they do not seem to be text.
C++标准库中的提供了比ANSI C的更高级的一些功能,即单纯性、类型安全和可扩展性。 在C++中经常会使用到snprintf来格式化一些输出。为了正确地完成这个任务,必须确保证目标缓冲区有足够大空间以容纳转换完的字符串。
Shell中并没有真正意义的多线程,要实现多线程可以启动多个后端进程,最大程度利用cpu性能。 直接看代码示例吧。 (1) 顺序执行的代码 1 #!/bin/bash 2 date 3 for i in `seq 1 5` 4 do 5 { 6 echo "sleep 5" ...
提供ftp服务时需要获取文件绝对路径,这里记录一下。 1 #include 2 #include 3 #include 4 5 int main(){ 6 const char *file_name = "filename"; 7 char a...
写程序经常需要用到从文件或者标准输入中按行读取信息,这里汇总一下。方便使用 1. C++ 读取文件 1 #include 2 #include 3 4 int main(){ 5 const char* in_file = "input_file_name"...
(1)echo [A@XY log]$ echo -e "ab\t45" #带格式输出ab 45[A@XY log]$ echo "ab\t45" #无格式输出ab\t45 [A@XY log]$ echo -e "ab\t45\c" #不输出换行ab 45[A@...
Python语言本身是支持多线程的,不像PHP语言。 下面的例子是多个线程做同一批任务,任务总是有task_num个,每次线程做一个任务(print),做完后继续取任务,直到所有任务完成为止。 1 #coding:utf-8 2 import threading 3 4 st...
1.刷机的概念 刷机,手机方面的专业术语,是指通过一定的方法更改或替换手机中原本存在的一些语言、图片、铃声、软件或者操作系统。通俗来讲,刷机就是给手机重装系统。刷机可以使手机的功能更加完善,并且使手机还原到原始状态。
在网页中可以设置如“联系我们”、“问题反馈”等所谓的邮箱链接,类似网页超链接,只是可以直接打开默认邮箱程序。 使用联系我们就可以。 如下代码实例: 1 2 3 contact us 4 5 6 contact us 7 8 显示: 点击直接链接,直接可以打开默认的邮件服务器。
随机读取数据,如何保证真随机是不可能的,因为计算机的随机函数是伪随机的。 但是在不考虑计算机随机函数的情况下,如何保证数据的随机采样呢? 1.系统提供的shuffle函数 C++/Java都提供有shuffle函数,可以对容器内部的数据打乱,保持随机排序。
晚上回来,同学说面试遇到了一个SQL面试题目,自己做了一下,总结总结。 题目如下: 下面是产品数据表(产品id,颜色col,数量num),其中每种产品有1~2种颜色。 求每种产品各颜色的数量差值(对于只有一种颜色的保留产品总数) 解法如下: 1.先求出每种产品各颜色的数量 这个不难,直接使用group by 就可以啦。
这个是常见的对二叉树的操作。总结一下: 设节点的数据结构,如下: 1 class TreeNode { 2 char val; 3 TreeNode left = null; 4 TreeNode right = null; 5 6 TreeNode(char _val) { 7 this.val = _val; 8 } 9 } 1.二叉树深度 这个可以使用递归,分别求出左子树的深度、右子树的深度,两个深度的较大值+1即可。
1.题目 如题,将长为L的木棒随机折成3段,则3段构成三角形的概率是多少? 2.解析 这个与其说是编程题目,倒不如说是个数学题目。可能是你没有见过,或者没有过这种解题思想。(还是那句,一回生两回熟,类推吧) 设分成的三段木棍的长度分别为:x,y,L-x-y。
Curl是Linux下一个很强大的http命令行工具,其功能十分强大。1) 二话不说,先从这里开始吧!$ curl http://www.linuxidc.com回车之后,www.linuxidc.
1.题目 如标题,求大于整数N(N>=0)的第一个回文数的字符串表示形式。 这个题目也是当时笔试第一次见到,花了一个小时才做出了。慢慢总结还是挺简单的。 2.分析 分析如下: (1)一位数N(9除外)。