C语言使用JSON,cJSON库的使用

学习了点socket编程,发现通过TCP/UDP进行通信接收到的是连续的字节内容,于是想要传输有结构的数据,就想到了JSON,上网查了下,找到了从cJSON库,这个库简单易用,很不错。


Read more...

2013-12-21 C库

使用PHP进行网页数据抓取小结

抓取思路

  1. 通过CURL请求到页面html,假设URL是正确的,这一步需要注意的地方是服务器重定向问题、服务器检查请求的合法性(通常检查请求头,高级的还会通过动态的cookie值例如淘宝指数)。
  2. 将请求到的html(所获取的html是未经过js处理的)加载为DOM后,使用DOM库提供的方法从网页获取数据,同时也可以结合DOMXPath(获取网页数据XPath的路径可以使用chrome的控制台,在标签上右击鼠标,选择copy xpath,但注意这个xpath可能与你实际想要的有时会不同,注意禁止掉浏览器js运行)。另外一种方法就是使用php-simple-html-dom,这个库提供面向对象的方法像jquery那样从网页获取数据。

Read more...

2013-12-18 PHP应用

Linux线程实现

学习自:linux进程与线程

进程

进程是程序运行的实体,并且占有一定的系统资源。

线程

Linux的进程,线程实现是在核外进行的,核内提供的是创建进程的接口do_fork()。内核提供了 三个系统调用__clone()fork()以及vfort(),最终都用不同的参数调用do_fork()核内API。 do_fork() 提供了很多参数,包括CLONE_VM(共享内存空间)、CLONE_FS(共享文件系统信息)、CLONE_FILES(共享文件描述符表)、 CLONE_SIGHAND(共享信号句柄表)和CLONE_PID(共享进程ID,仅对核内进程,即0号进程有效)等。


Read more...

2013-11-27 线程

linux线程使用读写锁共享全局变量

学习自:Linux线程同步(3): 读写锁(rwlock)linux网络编程之posix 线程(一):pthread 系列函数 和 简单多线程服务器端程序

读写锁 (rwlock)功能特点简介

读写锁实际是一种特殊的自旋锁,它把对共享资源的访问者划分成读者和写者,读者只对共享资源进行读访问,写者则需要对共享资源进行写操作。这种锁相对于自旋锁而言,能提高并发性,因为在多处理器系统中,它允许同时有多个读者来访问共享资源,最大可能的读者数为实际的逻辑CPU数。写者是排他性的,一个读写锁同时只能有一个写者或多个读者(与CPU数相关),但不能同时既有读者又有写者。

在读写锁保持期间也是抢占失效的。

如果读写锁当前没有读者,也没有写者,那么写者可以立刻获得读写锁,否则它必须自旋在那里,直到没有任何写者或读者。如果读写锁没有写者,那么读者可以立即获得该读写锁,否则读者必须自旋在那里,直到写者释放该读写锁。


Read more...

2013-11-27 线程

Session和Cookie小结以及PHP单点登陆的实现

由于HTTP协议设计原则是无状态的(我的理解是:http的一个请求状态与下一个或上一个请求状态无关),但是近年来出现了种种需求,其中cookie的作用就是为了解决HTTP协议无状态的缺陷所作出的努力。后来出现的session机制则又是一种在客户端与服务器之间保持状态的解决方案。

Cookie的属性:name(名字);value(值);expire(过期时间);path(路径);domain(域);secure(安全);httponly(仅http)


Read more...

2013-11-22 PHP应用

Linux 进程、进程组、会话周期、控制终端

参考自Linux守护进程的编程实现

进程

为使程序能并发执行,且为了对并发(并发指两个或多个事件在同一时间间隔内发生)执行的程序加以描述和控制,于是引入了“进程”的概念。


Read more...

2013-11-11 进程

conky配置略懂点

###关于conky配置的一点说明

昨晚想安装个conky,但遇到了一些奇葩的问题,我的Linux Mint无法运行conky_clock_ring()这个函数,用于绘制有时钟的那个东东。网上有人解决了,可按照他们的方法,我这里就是不行。无奈,只好找那些没有时钟的conky了。


Read more...

2013-11-10 桌面美化