会员
周边
捐助
新闻
博问
闪存
赞助商
Chat2DB
所有博客
当前博客
我的博客
我的园子
账号设置
简洁模式
...
退出登录
注册
登录
天驰
要成为绝世高手,并非一朝一夕,除非是天生武学奇才。但是这种人…万中无一。------好明显我就是这种人
博客园
首页
新随笔
联系
管理
订阅
上一页
1
2
3
4
5
6
7
8
9
下一页
2011年10月19日
文件和目录管理
摘要: 1、文件与其元数据Linux获取文件状态的时候会把其相关的元数据放在stat结构中,如下:struct stat { dev_t st_dev; //文件设备节点 ino_t st_ino; //ino mode_t st_mode; //文件模式 nlink_t st_nlink; //硬链接数目 uid_t st_uid; //用户ID gid_t st_gid; //组ID dev_t st_rdev; //如果是设备,设备编号 ...
阅读全文
posted @ 2011-10-19 16:18 GG大婶
阅读(1309)
评论(0)
推荐(0)
编辑
2011年10月17日
设计模式之Observer
摘要: 基本概念观察者模式中有最基本的两个角色:Observable和Observer。涉及到的基本操作有:Observable在Observer中订阅,要接受消息。Observable取消注册(或者Observer将其删除)。Observer有了消息之后通知Observable。总的来看还是比较简单的。Observer中保存所有的Observable,然后在需要通知的时候调用notifyObservers来实现。下面是观察者模式的类图:对于java中的观察者模式框架下面给出一个例子:import java.util.Observable;import java.util.Observer;class
阅读全文
posted @ 2011-10-17 13:58 GG大婶
阅读(243)
评论(0)
推荐(0)
编辑
高级进程管理
摘要: 1、让出处理器 Linux提供一个系统调用运行进程主动让出执行权:sched_yield。进程运行的好好的,为什么需要这个函数呢?有一种情况是用户空间线程的锁定。如果一个线程试图取得另一个线程所持有的锁,则新的线程应该让出处理器知道该锁变为可用。用户空间锁没有内核的支持,这是一个最间单、最有效率的做法。但是现在Linux线程实现引入一个使用futexes的优化解决方案。 另一个情况是在有处理器密集型程序可用周期性调用sched_yield,试图将该进程对系统的冲击减到最小。不管怎么说,如何调度程序应该是系统的事情,而不是进程自己去管。eg:int main(){ int ret, i...
阅读全文
posted @ 2011-10-17 09:55 GG大婶
阅读(1678)
评论(2)
推荐(1)
编辑
2011年10月15日
Mina之polling
摘要: polling下面包含了实现了基于轮询策略的select调用或其他类型的I/O轮询系统调用的基类。先看抽象类AbstractPollingIoAcceptor,成员如下:public abstract class AbstractPollingIoAcceptor<T extends AbstractIoSession, H> extends AbstractIoAcceptor { private final IoProcessor<T> processor; private final boolean createdProcessor; private final
阅读全文
posted @ 2011-10-15 18:11 GG大婶
阅读(561)
评论(0)
推荐(0)
编辑
2011年10月14日
Mina之session
摘要: 1、IoSession与底层的传输层类型无关,表示通信双端的连接。提供用户自定义属性,可以用于在过滤器和处理器之间交换用户自定义协议相关信息。每个会话都由一个Service来提供服务,同时有一个Handler负责此会话的I/O事件处理。最重要的两个方法就是read和write,这两个方法都是异步执行,如要真正完成必须在其结果上进行等待。关闭会话的方法close也是异步执行的,也就是应等待返回的CloseFuture,此外,还有另一种关闭方式closeOnFlush,它和close的区别是会先flush掉写请求队列中的请求数据,但同样是异步的。会话的读写类型是可配置的,在运行中可设置此端是否可读
阅读全文
posted @ 2011-10-14 13:20 GG大婶
阅读(22698)
评论(0)
推荐(2)
编辑
2011年10月13日
Mina之service
摘要: 1、TransportMetadata定义了一组操作底层的元数据信息,它的一个实现是DefaultTransportMetadata,维护的信息如下: private final String providerName; private final String name; private final boolean connectionless; private final boolean fragmentation; private final Class<? extends SocketAddress> addressType; private fin...
阅读全文
posted @ 2011-10-13 17:24 GG大婶
阅读(1079)
评论(0)
推荐(0)
编辑
用户和组ID
摘要: 与进程相关的用户ID有四个:真实的、有效的、被保存的、文件系统的用户ID。真实的ID是指启动进程的用户的ID。有效用户ID是指正在运行的进程的用户ID。被保存的ID是进程最初的有效用户ID。有效用户ID最重要,是确认进程凭证期间所检查的用户ID,真实ID和被保存的ID可作为替代品。root用户可以给uid提供任何值,但是普通用户只能提供真实ID或者被保存的用户ID。下面是和各种ID相关的方法,不详细:int main(){ printf("uid:%d\n", (int)getuid()); printf("pid:%d\n", (int)getpid(
阅读全文
posted @ 2011-10-13 09:41 GG大婶
阅读(323)
评论(5)
推荐(0)
编辑
进程管理
摘要: 可以通过execl函数把新的程序加载到内存中,把当前进程的映像替换成新的映像。path指向程序的位置,arg是新程序的第一个参数,省略号表示数目不定的参数,但是必须以NULL结束:int execl(const char *path, const char *arg, ...);下面是该函数的一个例子,该段代码加载了ls对应的程序,ls运行结束之后返回,而不再执行main中在其后面的代码:int main(){ int ret = execl("/bin/ls","ls", NULL); if(ret == -1){ printf("调用exe
阅读全文
posted @ 2011-10-13 08:41 GG大婶
阅读(1329)
评论(1)
推荐(0)
编辑
2011年10月12日
同步化、同步及异步操作
摘要: “同步”和“异步”这两个概念强调的是I/O操作在返回之前是否需要等待某个时间,而“同步化”强调的是必须发生何种事件。比如写入操作的四种情况如下:“同步化”+“同步”:操作会等到数据被刷入磁盘后返回,比如文件以O_SYNC模式打开;“同步化”+“异步”:虽然操作会在请求插入队列的时候就返回,但是该操作会保证数据刷入磁盘“异步化”+“同步”:数据写入内核缓冲中才返回,但是该操作只会影响内核缓冲区,这是通常方式;“异步化”+“异步”:操作插入请求队列就马上返回了。为什么会需要异步I/O操作?操作的时候不想被阻塞,那么是不是可以认为I/O操作的开销为0?把插入队列、I/O提交内核、接受操作完成通知等动
阅读全文
posted @ 2011-10-12 14:34 GG大婶
阅读(1858)
评论(0)
推荐(2)
编辑
2011年10月11日
一般文件I/O用法建议
摘要: 可以调用posix_fadvise函数来设置一些操作文件的方式,比如要清楚一定区域内的缓存可以使用下面代码:int main(){ int fd = open("test", O_RDWR); int ret = posix_fadvise(fd, 0, 10, POSIX_FADV_DONTNEED); printf("%d\n", ret); if(ret == -1){ printf("posix_fadvise调用失败!\n"); } close(fd); return 0;}调用该函数后内核会把所指定的范围从页面缓冲区回收,
阅读全文
posted @ 2011-10-11 20:10 GG大婶
阅读(3286)
评论(1)
推荐(0)
编辑
上一页
1
2
3
4
5
6
7
8
9
下一页
公告