- 博客(103)
- 资源 (24)
- 收藏
- 关注
转载 php session机制
【php】PHP中Session ID的实现原理Session 的工作机制是:为每个访问者创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在 cookie 中,亦或通过 URL 进行传导。PHPSESSIONID的生产算法原理如下:hash_func = md5 / sha1 #可由php.ini配置PHPSESSIONID = hash_func(客...
2020-04-14 11:19:42
331
原创 操作系统ING
操作系统:段地址×16 + 偏移地址 = 物理地址 一个字条可以写 (0-99) 要传递150 第一个可以写 50第二个纸条可以写 10 (规定第二个字条的数字要乘 ×10) 最后结果 150...
2018-10-25 10:59:07
270
转载 TCP状态转换图
注:主动、被动 与 服务器、客户端没有明确的对应关系。这个图N多人都知道,它排除和定位网络或系统故障时大有帮助,但是怎样牢牢地将这张图刻在脑中呢?那么你就一定要对这张图的每一个状态,及转换的过程有深刻 的认识,不能只停留在一知半解之中。下面对这张图的11种状态详细解析一下,以便加强记忆!不过在这之前,先回顾一下TCP建立连接的三次握手过程,以及 关闭连接的四次握手过程。1、建立连接协议(三次握手)...
2018-04-12 16:38:30
293
转载 TCP三次握手
原文见:http://packetlife.net/blog/2010/jun/7/understanding-tcp-sequence-acknowledgment-numbers/ 如果你正在读这篇文章,很可能你对TCP“非著名”的“三次握手”或者说“SYN,SYN/ACK,ACK”已经很熟悉了。不幸的是,对很多人来说,对TCP的学习就仅限于此了。尽管年代久远,TCP仍是一个相当复杂并且值得研...
2018-04-12 15:16:28
226
原创 算法:两种算法相比较(选择和插入排序)
选择排序:保持已排序的部分不变化,这通常是左边的部分,拿一个数据和右边的部分进行比较 经过 N*N/2次的比较和 N-1次的交换。插入排序:保持未排序的部分不变化,这通常是右边的部分,拿一个数据和左边的进行比较后遇到合适的位置插入,平均 N*N/4的比较和N*N/4次的交换。选择:当数据中有已经部分排序的数据可以使用插入速度较快。比较:可以使用随机函数将数据打乱比较一下
2017-07-26 16:03:45
599
原创 算法:插入排序
插入排序移动数据找到合适的位置插入,保持右边的部分不变化(这个选择排序相反,选择排序是右边的部分变化左边已排序的部分不变化)。通过移动和插入实现数据的有序排列。public static void InsertSort() { int N=10; int a[] = {2,-1,5,4,1,6,8,9,7,0}; int key; int i,j; for(i=1;
2017-07-26 15:51:19
276
原创 算法:选择
public static void SelectSort() { int N = 10; int a[] = {2,4,6,5,7,9,8,10,1,3}; int tmp = 0; for(int i=0;i<N;i++) { int min = i; for(int j=i+1;j<N;j++) { if(a[min]>a[j])
2017-07-26 14:32:54
334
原创 算法之:二分法
二分法网上有很多资料了,这里盗用一下算法第四版的代码.int lo = 0;int hi = a.length-1;while(lo{int lo = 0;int hi = a.length-1;while(lo{int mid = lo+(hi-lo)/2;if (keyelse if (key>a[mid]) lo = mid+1;else
2017-07-26 11:00:21
922
转载 再谈互斥锁与条件变量!
pthread_cond_wait总和一个互斥锁结合使用。在调用pthread_cond_wait前要先获取锁。pthread_cond_wait函数执行时先自动释放指定的锁,然后等待条件变量的变化。在函数调用返回之前,自动将指定的互斥量重新锁住。int pthread_cond_signal(pthread_cond_t * cond);pthread_cond_signal通过
2017-06-02 15:10:11
280
转载 C++继承体系中Is a 关系 和has a关系
在学习继承的过程中,不管是在书中还是在网上找资料,都跟多态分不开,其中还有个很抓人眼球的问题,那就是书上总是说的is-a关系和has-a关系。 很多书中讲到继承时都会说: public继承是一个接口继承,保持is-a原则,每个父类可用的成员对子类也可用,因为每个子类对象也都是一个父类对象。 (子类 is a 父类) protetced/private继承是一个实现继承,基类
2017-05-27 17:20:50
764
转载 10年跳槽经验总结 高级人才不用找工作
首先,真正的高级人才是不用找工作的,因为只有被工作找的份。 但是,难免有些高级人才厌倦了旧的工作环境,或者遇到天花板,没有了发展空间,或者遇到新老板上任后排除异己来提拔自己的亲信等等,如果您真打算自己去找工作,那么至少需注意以下几点: 1。网上求职尤其需注意那些一天到晚在网上打招聘广告的公司。这类公司通常分成两类: 一类是垃圾公司,如一些别有用心的保险公司、中介公司
2017-05-27 15:33:16
1173
1
转载 高效程序员应该养成的七个习惯
对于软件工程师来说,工作也许意味着许多东西 -- 稳定的收入、做自己感兴趣的项目、找一份更好工作的跳板,或者你只是喜欢与其他程序员共事。但说到“效率”,强调的是在一定时间内按质完成项目的能力。Phil Chu根据自己的经验提出了高效程序员应该养成的七个习惯。建议去看看作者的原文(可能需要代理才能正常访问)。 理解你的需求 成为一个有效率的程序员首先要知道如何正确的支配自己的时间。对时间
2017-05-27 15:31:39
290
转载 C++向上转换
在 C/C++ 中经常会发生数据类型的转换,例如将 int 类型的数据赋值给 float 类型的变量时,编译器会先把 int 类型的数据转换为 float 类型再赋值;反过来,float 类型的数据在经过类型转换后也可以赋值给 int 类型的变量。数据类型转换的前提是,编译器知道如何对数据进行取舍。例如:int a = 10.9;printf("%d\n", a);
2017-05-26 10:29:27
860
原创 子类使用构造函数初始化父类的私有数据
#incldue using namespace std;class AA{private:int a;public:AA(int a1):a(a1){}};class BB{private:int b;public:BB(int t1,t2):AAA(t1),b(t2){}};int main(void){retur
2017-05-26 09:15:23
1798
原创 Navicat连接mysql
1 向mysql授权可以使用root访问。2 Nacicat的常规设置 输入ip地址账号和密码。ssh也要设置(必须要设置,不然连不上!!!!)。
2017-05-14 23:38:56
290
转载 Makefile 自动生成依赖
虽然以前对Makefile有个基本概念,但是真正到自己去写一个哪怕是简单的Makefile时也会遇到不少的麻烦。 现在我有如下文件 dList.h dList.c memory.c debug.c debug.h test.c aaron.h 其中包含关系如下: aaron.h-->dList.h debug.h dList.c-->aaron.h debu
2017-04-14 12:59:47
466
转载 非阻塞的connect 353页
转自:http://www.cnblogs.com/shiqgfmj/archive/2010/12/29/1919434.html 非阻塞的socket客户端connect()困扰了一下午。因为是非阻塞,不管是否连接上都直接返回,所以就无法知道什么时候连接上。一开始想到网上找资料,可惜不多。于是MSDN,总算找到一句话。With a nonblocking socket, the
2017-04-12 16:01:36
396
转载 POSIX线程-互斥量
为什么需要互斥量线程最大的好处是它们可以通过全局变量来共享信息。但这个好处也带来了麻烦:有可能很多线程同时修改某一个全局变量,导致该全局变量出现错误。我们必须制定某些规则,使线程对该全局变量的修改不会导致错误。这个规则就是--同步。POSIX线程使用互斥量来进行同步,“经验表明,正确使用互斥量比使用通用信号灯之类的其他同步模型要容易,还能很容易地使用互斥量与条件变量建立任何同步模型”—PO
2017-04-06 10:31:52
640
转载 POSIX线程-条件变量(一)
为什么使用条件变量(condition variable)想想我们怎么实现下面的场景:当线程A需要通知线程B某件事情已经准备好,我们该怎么做? 我们通常的做法是:设置一个全局变量V,如果线程A已经准备好了某件事,则把V设置为1;线程B则不停得检测V,直到V变为1再继续下面的操作。这种做法的缺点是非常的浪费CPU,因为线程B需要不停的busy loop。 为了改善这种状况,引入了
2017-04-06 10:26:34
340
转载 pthread_cond_signal()和pthread_cond_wait()的典型使用方法
pthread_cond_signal()和pthread_cond_wait()的典型使用方法pthread_mutex_t mtx;pthread_cond_t cond;线程A中通知的执行的操作s = pthread_mutex_lock(&mtx)if (s != 0)err_exit();a++;/*谓词条件*/……do s
2017-04-06 10:17:17
10964
1
转载 函数 getaddrinfo 学习
最近使用socket编程, 用到这个函数。 网上资料很多,只是有一点没有提到,特记录下。函数原型: int getaddrinfo(const char *node, const char *service, const struct addrinfo *hints, struct addrinfo **res); void freeaddrinfo(struct addrinfo *
2017-03-30 13:56:57
350
原创 Class头类名 和 #include 头文件 的区别
1. #include头文件 是包含了文件中的声明和实现,当修改时,引用他的地方也会重新将引用它的文件进行重新编译。2 class 类名 只是声明有着一个类,可以使用这个类。3 使用范围: 如果是使用指针或者引用例如://TestA.h#include "TestA.h"class TestBclass TestA{public:TestB *m_b
2017-02-21 10:02:40
3195
原创 码农保护视力的颜色
vs中背景颜色的设置:RGB(红,绿,蓝):204,232,207HSL(色调,饱和度,亮度):85,90,205CSS,16进制:#CCE8CF这个颜色貌似是精神病院里的颜色,可以使人平静。
2016-11-25 11:05:53
733
转载 Lua中rawset和rawget的使用方法
丢掉那该死的元表有的时候,我们就不想从__index对应的元方法中查询值,我们也不想更新table时,也不想执行__newindex对应的方法,或者__newindex对应的table。那怎么办?在Lua中,当我们查询table中的值,或者更新table中的值时,不想理那该死的元表,我们可以使用rawget函数,调用rawget(tb, i)就是对table tb进行了一次“原始的(raw
2016-04-02 10:58:14
29945
转载 Lua中的协同程序之resume-yield间的数据返回研究
这篇文章主要介绍了Lua中的协同程序之resume-yield间的数据返回研究本文讲解了resume的参数、resume函数的第二个返回值、yield的返回值等内容,需要的朋友可以参考下这次要介绍几个其实很简单,但是一定要小心的返回值规则。1.resume的参数resume函数除了第一个参数是协同程序外,还能继续传其他参数,如下代码:复制
2016-03-25 16:52:47
1942
3
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人