常用linux指令-杂项(三)
文件夹管理
1 | cd //显示当前目录名或改变当前目录。 |
文件管理
1 | type //显示文本文件的内容。 |
网络命令
1 | ping //进行网络连接测试、名称解析 |
系统管理
1 | at //安排在特定日期和时间运行命令和程序 |
杂项
1 | //将文件按从新到旧排列,取第一个。 |
navicat for MySQL 快捷键
1 | ctrl+q //打开查询窗口 |
批处理常用Dos命令
1 | //删除n天前的文件 |
hero-server部分端口状态
netstat
ps:netstat 命令可以看服务器的进程间连接情况
netstat
参数:
1 | -a //(all)显示所有选项,默认不显示LISTEN相关 |
连接情况
netstat -t 配合 cygwin cat text.txt | grep cs -B 1
就可查看cs 进程 与其他进程的连接情况
场外:定位某玩家时指令
1 | find . -name "ws*" | xargs grep "1582180542,288096256" |
1 | /* |
多线程程序杂项
涉及多线程程序涉及的时候经常会出现一些令人难以思议的事情,用堆和栈分配一个变量可能在以后的执行中产生意想不到的结果,而这个结果的表现就是内存的非法被访问,导致内存的内容被更改。
理解这个现象的两个基本概念是:在一个进程的线程共享堆区,而进程中的线程各自维持自己堆栈。
在 windows 等平台上,不同线程缺省使用同一个堆,所以用 C 的 malloc (或者 windows 的 GlobalAlloc)分配内存的时候是使用了同步保护的。
如果没有同步保护,在两个线程同时执行内存操作的时候会产生竞争条件,可能导致堆内内存管理混乱。
比如两个线程分配了统一块内存地址,空闲链表指针错误等。
Symbian 的线程一般使用独立的堆空间。
这样每个线程可以直接在自己的堆里分配和释放,可以减少同步所引入的开销。
当线程退出的时候,系统直接回收线程的堆空间,线程内没有释放的内存空间也不会造成进程内的内存泄漏。
但是两个线程使用共用堆的时候,就必须用 critical section 或者 mutex 进行同步保护。
否则程序崩溃时早晚的事。
如果你的线程需要在共用堆上无规则的分配和释放任何数量和类型的对象,可以定制一个自己的 allcator,在 allocator 内部使用同步保护。
线程直接使用这个 allocator 分配内存就可以了。
这相当于实现自己的 malloc,free。
但是更建议你重新审查一下自己的系统,因为这种情况大多数是不必要的。
经过良好的设计,线程的本地堆应该能够满足大多数对象的需求。
如果有某一类对象需要在共享堆上创建和共享,这种需求是比较合理的,可以在这个类的 new 和 delete 上实现共享保护。