memcpy
和 memmove
都可用于复制一段内存。
它们之间的区别很简单:
memmove
更安全:当源内存块和目标内存块存在重叠区域时,memcpy
的行为是未定义的。它可能崩溃或产生错误数据。而且在debug 和 release 模式下的表现各不相同。memcpy
更快。
这是两种不同编程思想的实现。一种更注重安全, 一种更注重效率。
下面是两个方法可能的实现方式.
memcpy
和 memmove
都可用于复制一段内存。
它们之间的区别很简单:
memmove
更安全:当源内存块和目标内存块存在重叠区域时,memcpy
的行为是未定义的。它可能崩溃或产生错误数据。而且在debug 和 release 模式下的表现各不相同。memcpy
更快。这是两种不同编程思想的实现。一种更注重安全, 一种更注重效率。
下面是两个方法可能的实现方式.
Cookie
指某些网站为了辨别用户身份而储存在用户本地终端(Client Side)上的数据,它是一种古老的技术, 由网景公司的前雇员卢·蒙特利在1993年3月发明。
Cookie 格式是一系列键值对, 以 ;
组合,如下
1 |
TBLkisOn=0; GeoIP=US:CA:Los_Angeles:34.05:-118.26:v4; mwPhp7Seed=9d0 |
当然, Cookie还有更多的内容,如创建时间,过期时间等,对应的域等等。一般而言,为了安全只允许页面访问该域下的Cookie.
根据 Cookie 的时效性可以将 Cookie 分为两类,一种是会话型Cookie (Session Cookie), 只保存于内存中, 当浏览器退出的时候,即清除这些 Cookie. 第二种是持续型 Cookie (Persistent Cookie),也就是当浏览器退出的时候仍然保留的Cookie.
Chromium 中Cookie操作的类结构如下所示:
其中 CookieStore
是主要的导出接口,CookieMonster
是重要的实现接口,它相当于是 Cookie 的管理器。它有几个作用:一是实现 CookieMonster
中的接口,二是报告前者的事件,如 Cookie 更新信息等,三是 Cookie对象(即 CanonicalCookie
) 的集合。
PersistentCookieStore
持久化类,SQLitePersistentCookieStore
是持久化的具体实现,负责实际的存储动作。
Chrome 的 Cookie使用 Sqlite存储,是位于 %AppData%\Local\Google\Chrome\User Data\Default
目录下的 Cookies
文件。