几个Web前端UI框架

  • Bootstrap :Twitter 的一个用于前端开发的开源工具包。
  • Topcoat :以灰白为主调,清新简约。有Desktop Preview版和Mobile Preview版。
  • Purecss :号称最小的CSS模块,只有5.7KB,还带一个皮肤生成器。(中文版)
  • Atlassian Design Guidelines: 来自 Bitbucket 的前端组件库。
  • arkui:豆瓣阅读的UI库
  • NEJ:网易的前端开发框架
  • Foundation:再一个灵活易用的库
  • NEC:同样是网易的前端CSS开源项目,提供漂亮简单的样式解决方案,包括了规范、框架、代码库、插件等内容

继续阅读“几个Web前端UI框架”

Objective-C 计算代码运行时间

第一种:(最简单的NSDate)

第二种:(将运行代码放入下面的Block中,返回时间)

继续阅读“Objective-C 计算代码运行时间”

iOS多线程编程:线程同步总结

1:原子操作 – OSAtomic系列函数

iOS平台下的原子操作函数都以OSAtomic开头,使用时需要包含头文件。不同线程如果通过原子操作函数对同一变量进行操作,可以保证一个线程的操作不会影响到其他线程内对此变量的操作,因为这些操作都是原子式的。因为原子操作只能对内置类型进行操作,所以原子操作能够同步的线程只能位于同一个进程的地址空间内。

2:锁 – NSLock系列对象

iOS平台下的锁对象为NSLock对象,进入锁通过调用lock函数,解锁调用unlock函数(因为iOS中大部分的线程同步类都继承自NSLocking协议,所以其加锁/解锁的操作基本都为lock/unlock函数),同一个NSLock对象成功调用lock函数后,在其显式unlock之前任何线程都不能再对此NSLock对象加锁,以达到互斥访问的目的。除了lock函数,对NSLock加锁的函数还包括tryLock以及lockBeforeDate函数,lock函数在成功加锁之间会一直阻塞,而tryLock会尝试加锁,如果不成功,不会阻塞,而是直接返回NO,lockBeforeDate则是阻塞到传入的NSDate日期为止。
继续阅读“iOS多线程编程:线程同步总结”

Objective-C——在Cocoa Touch框架中使用迭代器模式

苹果公司用自己的命名规则“枚举器/枚举”改写了迭代器模式,用于相关基础类的各种方法。从现在开始,我将使用“枚举”一词,它就是苹果版本的“迭 代”。在这个模式中它们是一个意思。基础框架中的NSEnumerator类实现了迭代器模式。抽象NSEnumerator类的私有具体子类返回枚举器 对象,能够顺序遍历各种集合——数组、集(set)、字典(值与键),把集合中的对象返回给客户端。

NSDirectoryEnumerator是个关系较远的类。这个类的实例递归枚举文件系统中一个目录的内容。

NSArray、NSSet和NSDictionary这样的集合类,定义了返回与集合的类型相应的NSEnumerator子类实例的方法。所有 的枚举器都以同样的方式工作。可以在一个循环中向枚举器发送nextObject消息,从枚举器取得对象,直到它返回nil表示遍历结束。
继续阅读“Objective-C——在Cocoa Touch框架中使用迭代器模式”

poll使用详解(精髓)

epoll – I/O event notification facility

在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。
相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。并且,在linux/posix_types.h头文件有这样的声明:
#define __FD_SETSIZE 1024
表示select最多同时监听1024个fd,当然,可以通过修改头文件再重编译内核来扩大这个数目,但这似乎并不治本。
继续阅读“poll使用详解(精髓)”

php session使用,实现后台管理

后台当然不能像前台一样,任由用户去浏览和管理,不然,程式没有什么管理性了,一般后台管理都用COOKIE和SESSION两种方法实现,在这里讲解一下用SESSION实现管理的,因为用SESSION相对来说安全性好点

php session使用说明:

由于 Session 是以文本文件形式存储在服务器端的,所以不怕客户端修改 Session 内容。实际上在服务器端的 Session 文件,PHP 自动修改 Session 文件的权限,只保留了系统读和写权限,而且不能通过 ftp 修改,所以安全得多。

  对于 Cookie 来说,假设我们要验证用户是否登陆,就必须在 Cookie 中保存用户名和密码(可能是 md5 加密后字符串),并在每次请求页面的时候进行验证。如果用户名和密码存储在数据库,每次都要执行一次数据库查询,给数据库造成多余的负担。因为我们并不能只做一次验证。为什么呢?因为客户端 Cookie 中的信息是有可能被修改的。假如你存储 $admin 变量来表示用户是否登陆,$admin 为 true 的时候表示登陆,为 false 的时候表示未登录,在第一次通过验证后将 $admin 等于 true 存储在 Cookie,下次就不用验证了,这样对么?错了,假如有人伪造一个值为 true 的 $admin 变量那不是就立即取的了管理权限么?非常的不安全。

  而 Session 就不同了,Session 是存储在服务器端的,远程用户没办法修改 Session 文件的内容,因此我们可以单纯存储一个 $admin 变量来判断是否登陆,首次验证通过后设置 $admin 值为 true,以后判断该值是否为 true,假如不是,转入登陆界面,这样就可以减少很多数据库操作了。而且可以减少每次为了验证 Cookie 而传递密码的不安全性了(Session 验证只需要传递一次,假如你没有使用 SSL 安全协议的话)。即使密码进行了 md5 加密,也是很容易被截获的。

  当然使用 Session 还有很多优点,比如控制容易,可以按照用户自定义存储等(存储于数据库)。我这里就不多说了。

  Session 在 php.ini 是否需要设置呢?一般不需要的,因为并不是每个人都有修改 php.ini 的权限,默认 Session 的存放路径是服务器的系统临时文件夹,我们可以自定义存放在自己的文件夹里,这个稍后介绍。
继续阅读“php session使用,实现后台管理”

在线程中使用NSTimer

方法一:

继续阅读“在线程中使用NSTimer”