2017-06-17

  1. grep
    grep search_str –exclude-dir=DIR1 –exclude-dir=DIR2 -r .
    grep search_str –exclude=file(支持shell wildcard *, ?, […]) -r .

2017-06-21

  1. shell直接进行进制转换

一、16进制转换成10进制
printf %d 0xF
15
或者
echo $((16#F))
15

二、10进制转换成16进制
printf %x 15
f
或者
echo “obase=16;15”|bc
F

[anonymalias@qcloud ~]$let a=0xFF
[anonymalias@qcloud ~]$echo $a
255
[anonymalias@qcloud ~]$((a=0xFF))
[anonymalias@qcloud ~]$echo $a
255

将16进制转换成ASCII字符码
echo -e “\x30”

2017-07-03

MVC 模式结构
MVC 模式将应用分为模型、视图和控制器三个部分:

  1. 视图:数据的展现。
    视图是用户看到并与之交互的界面。视图向用户显示相关的数据,并能接收用户的输入数据,但是它并不进行任何实际的业务处理。视图可以向模型查询业务状态,但不能改变模型。视图还能接受模型发出的数据更新事件,从而对用户界面进行同步更新。
  2. 模型:应用对象。
    模型是应用程序的主体部分。 模型代表了业务数据和业务逻辑; 当数据发生改变时,它要负责通知视图部分;一个模型能为多个视图提供数据。由于同一个模型可以被多个视图重用,所以提高了应用的可重用性。
  3. 控制器:逻辑处理、控制实体数据在视图上展示、调用模型处理业务请求。
    当 Web 用户单击 Web 页面中的提交按钮来发送 HTML 表单时,控制器接收请求并调用相应的模型组件去处理请求,然后调用相应的视图来显示模型返回的数据。

2017-07-12

  1. 之前shell脚本中对于变量$var的计算过程中,例如:var1=$var 或者var1=”$var”, 我一直认为可加双引号也可以不加,但最近才意识到双引号还是加的好,因为到var变量中包含一些特殊字符时,可能会导致赋值操作的结果出现异常,

2017-07-17

http://blog.csdn.net/zcsylj/article/details/6752041

rebind的本质应该这么说:给定了类型T的分配器Allocator=allocator<T>,现在想根据相同的策略得到另外一个类型U的分配器allocator<U>
那么allocator<U> = allocator<T>::Rebind<U>::other
之所以要提供rebind界面,是因为容器只知道模板参数名Allocator,而不是其具体实现,容器只知道这样三个事情:
1、Alocator是T的分配器,但其内部实现策略是什么容器并不关心(可能是std::allocator,也可能是myallocator)。换句话说,容器并不知道allocator模板名。
2、类型T和类型U在逻辑上是相关的,比如在链表中,数据类型T和结点类型Node是有联系的。
3、容器希望按照和T一样的策略(具体的说就是相同的allocator模板名)来分配U类型的对象。
这时rebind的作用就体现出来了

2017-07-20

  1. https://github.com/bminor/glibc/blob/master/time/localtime.c

localtime函数不仅是不可重入的,而且连续执行两次都会有问题,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

/* The C Standard says that localtime and gmtime return the same pointer. */
struct tm _tmbuf;


/* Return the `struct tm' representation of *T in local time,
using *TP to store the result. */
struct tm *
__localtime_r (const time_t *t, struct tm *tp)
{
return __tz_convert (t, 1, tp);
}
weak_alias (__localtime_r, localtime_r)


/* Return the `struct tm' representation of *T in local time. */
struct tm *
localtime (const time_t *t)
{
return __tz_convert (t, 1, &_tmbuf);
}
libc_hidden_def (localtime)

2.std::transform工具

1
2
3
4
5
6
7
8
9
10
template <class InputIterator, class OutputIterator, class UnaryOperator>
OutputIterator transform (InputIterator first1, InputIterator last1,
OutputIterator result, UnaryOperator op)
{
while (first1 != last1) {
*result = op(*first1); // or: *result=binary_op(*first1,*first2++);
++result; ++first1;
}
return result;
}

2017-07-31

线性同余生成器