- 浏览: 137139 次
- 性别:
- 来自: 北京
最新评论
文章列表
看书看到内存对齐一段时,突然想研究一下内存对齐最底层的原理.查找资料后总结如下.
先用一句话来概括:
“数据项只能存储在地址是数据项大小的整数倍的内存位置上” 例如int是4个字节,则只能在地址是0,4,8等位置上(即最后字节可以整除4).
不同的系统有不同的对齐系数(一般32位系统是4字节(正好是32位数据线宽度),64位是8),,可以通过#pragma pack(n)来设置.大于N的类型按N为基准来对齐.小于N的按自己为基准对齐.
如对齐系数是4,
struct test{
int a; sizeof(a) = 4 == 4,按4对齐(占据0-3)
char b; siz ...
HASH是NGINX核心数据结构之一.见几个链接.分析的很详细
1.http://www.linuxidc.com/Linux/2012-08/67040.htm
2.http://www.oschina.net/question/234345_42065
3.http://blog.csdn.net/lifeibo/article/details/5897126
4.http://code.google.com/p/nginxsrp/wiki/NginxCodeReview
//ngx_hash_key_t中的key即为ngx_hash_elt中的name(name余下的部分跟在name[1 ...
1.贪心算法和动态规划区别
贪心算法是自顶向下的,它会先做在当时看起来最优的选择.
而动态规划则自底向上的,先寻找子问题的最优解,然后再选择.
以矩阵链相乘举例.
A0A1A2A3A4
动态规划会先把问题支解到最小,然后一步步向上选择最优的子问题.
而动态规划会先算A0-A4的最好选择.比如是2,则再分别选择A0-A2,A3-A4的最优解
read属于系统调用,它的缓存是基于内核的缓冲,是记在内核空间的.
而fgetc是标准函数, 是在用户空间I/O缓冲区的
比如用fgetc读一个字节,fgetc有可能从内核中预读1024个字节到I/O缓冲区中,再返回第一个字节,这时该文件在内核中记录的读写位置是1024,而在FILE结构体中记录的读写位置是1.
所以如果read一次读取的缓冲大小是1个字节,则1K的文件,read需要调1024次系统调用.而同样是一次只读一个字节,fgetc只调用一次系统调用.
IPC代表一个时钟周期内指令的执行条数.主频代表单位时间内的时钟周期数.
所以两者共同决定了CPU的效率.即主频*IPC,单位时间内指令执行数.
条件传送与分支预测.
- 博客分类:
- 计算机系统原理
传统的CPU会利用分支预测来保持指令执行序列的流水线(即执行当前指令的同时取下一条指令).
但如果预测失败则代价太大.
新一代的CPU采用了条件传送指令.该方法预先计算出所有分支的结果以保持流水线指令序列.最后用一句cmovl(根据条件判断选择执行或跳过,一条指令内完成)指令来结束
设置.mp3 MIME类型为audio/mpeg
有时我们建了一些特殊符号的文件。导致rm不能删除该文件。
如我建了一个文件.touch ’
如果你要用rm直接删除’这个文件是不可能的。
有两种办法。
1:用转义符号。rm \’
2:根据文件的inode号码删除,
ls -bi;//列出文件的node号码
find -inum "ls出来的inode码" -exec rm -i {} \;
转载:http://hi.baidu.com/enkili/blog/item/296a4af9dd5e4ec4b48f31ce.html
作个记录。
http://blogger.org.cn/blog/more.asp?name=Qr&id=30342
1.fsockopen远程获取文件时有一个问题。
一般是这样获取。
class SyncBook{
private $fp;
function SyncBook(){
$this->fp = fsockopen('ip', 'port');
}
function test(){
$query = "?mcpid={$this->mcpid}&am ...
现在防止SQL注入最常用的方法基本上就是参数化条件了。
原理是因为用这种方式处理时,数据库服务器会先编译传入的SQL语句,而不把参数代入。编译完成后再把参数替换。所以你的注入是无法被执行的。
比如用PHP实现。
1.mysql_query类型函数实现
$query = sprintf('select * from book where id = "%s"', '33');
mysql_query($query, $conn);
2.mysqli实现
这种实现,PHP MYSQLi 类本身本身已经提供了预处理。
$mysqli ...
最近在做一个项目,用iconv转化UTF-8为GB2312时老是少转几千字。后来上网一查才发现iconv在遇到“-”时后面的字节就不转了直接丢了。
所以最好用mb_convert_encoding
MYSQL存储int字段时,有时会加上int(8)这样的数字.这个数字对int的长度并没有影响 ,因为int已经规定是11位了.加这个数字是为了配合zerofill使用.如果int(4),存储的数字为11,则会补上前面两位,变成0011.
SSH第一次登录步骤:
1.客户端发出连接请求.
2.服务器端接收到请求然后寻找该客户端有没有在自己主机上存有公钥记录.
3.第一次登录 没有,则会发送自己的公钥给服务器.并要求客户端输入密码.
4.客户端输入密码后会用接收到服务器的公钥给该 密码加密,发送到服务器.
5.服务器接收到密码后利用自己的私钥解密.
6.如果解密成功则连接成功.
若不是第一次登录.
1.客户端发出请求.
2.服务器接收到请求在自己主机上找到了客户端的公钥记录,则生成一个随机数利用客户端的公钥加密发送给客户端.
3.客户端利用自己的密钥解密,然后再用服务器端的公钥加密发送给服务器.
4.服 ...