前天听同事说让redis缓存永久不失效,然后自己做个key去控制缓存失效,如果到了过期了,则给第一个要访问db加锁,先用setnx,返回1,则获取到了锁,相当于拿到门票了,你可以进入db了。 后面人再想访问db,也得先setnx,发现返回0,说明没有获取到锁,就访问不了db了,还访问原来的老缓存。 觉得这个想法很妙,可以解决之前有提到缓存雪崩问题,后来网上也搜索了下,也有相关文章提到这方面的内容。

 

原文 http://blog.csdn.net/hengyunabc/article/details/20735701

 

最近看到nginx的合并回[……]

继续阅读

答案是:除域名,ip,端口外其它都加密。

昨天和同事说到传接口参数
我:直接用get,
同事:用post安全点。
我:说差不多吧,没本质区别。
同事:https时post参数抓包抓取不到,而get里参数可以抓取到。

今天就做个实验,看下是不是能抓取到https下的get的参数,用get访问了个https接口,得到下面包。
1-3号包 握手包
4-11号包 客户端,服务器hello包和key交换.中间还发现有证书太大,有PDU,分包了。
12号包 就是get请求了,点开看了下,什么也看不出来,就是加密的。而且连请求方式到底是get还是post都不知道。
15号包就是服[……]

继续阅读

intval opcode

intval.php

<?php 
$a = '10';
echo intval($a);

[root@localhost ~]# php -dvld.active=1 intval.php 
Finding entry points
Branch analysis from position: 0
Jump found. (Code = 62) Position 1 = -2
filename:       /root/intval.php
function name:  (null)
number of ops:  6
compiled vars:[......]

继续阅读

intval定义

PHP_FUNCTION(intval)
{
	zval **num;
	long arg_base;
	int base;

	switch (ZEND_NUM_ARGS()) {
		case 1:
			if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "Z", &num) == FAILURE) {
				return;
			}
			base = 10;
			break;

		case 2:
			if (zend_parse_parameters(ZEND_[......]

继续阅读

/dev/shm 是内存虚拟的硬盘

首先在/dev/shm建个tmp文件夹,然后与实际/tmp绑定

mkdir /dev/shm/tmp

chmod 1777 /dev/shm/tmp

mount –bind /dev/shm/tmp /tmp

临时修改/dev/shm大小

#mount -o size=1500M -o nr_inodes=1000000 -o noatime,nodiratime -o remount /dev/shm

mount -t tmpfs -o size=20m tmpfs /tmp 临时挂载使用[……]

继续阅读

NetCat,在网络工具中有“瑞士军刀”美誉,其有Windows和Linux的版本。因为它短小精悍(1.84版本也不过25k,旧版本或缩减版甚至更小)、功能实用,被设计为一个简单、可靠的网络工具,可通过TCP或UDP协议传输读写数据。同时,它还是一个网络应用Debug分析器,因为它可以根据需要创建各种不同类型的网络连接。

一、版本
通常的linux发行版中都带有NetCat(简称nc),甚至在拯救模式光盘中也由busybox提供了简版的nc工具。但不同的版本,其参数的使用略有差异。
NetCat 官方地址:http://netcat.sourceforge.net/

引用[ro[……]

继续阅读

网友提问:
为什么数据在内存里是以补码的形式存储?正数好理解,就是其本身.负数为何不能直接第一位1表示负,其后部分就按照正数表示.比如12345和-12345二进制表示只是第一位一个是0一个是1,后面15位一样.初学c语言不太了解其中的原因.
老师回答:
补吗是为了加减运算才出现的.我们都知道如果加一个负数,只要减去他对应的正数即可,
如 3+(-1)=3-1=2
计算机很笨,没这种思维,他加法就是加法
3+(-3) 如果按你的方法表示负数 结果时 0x03+0x83=0x86 显然不是0,因为计算机不会把加法变成减法.
那另一种就是取补吗,0x03+0xfd=0x00 这样[……]

继续阅读

一张图让你了解编程语言发展史

我们都知道,编程语言是一组用来定义计算机程序的语法规则。它是一种被标准化的交流语言,用来向计算机发出指令。一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。尽管人们多次试图创造一种通用的程序设计语言,却没有一次尝试是成功的。之所以有那么多种不同的编程语言存在的原因是设计程序语言的初衷不同,对语言学习曲线的追求不同,不同程序之间的运行成本差异等。

下面这张图片描绘了整个编程语言的历史。包括各种编程语言的发明人,编程语言的特点和适用领域,被什么网站或公司使用等。

History-Of-Programming-Languages-Veracode

编程语言的历史早于真正意义的[……]

继续阅读