- 博客(22)
- 资源 (1)
- 收藏
- 关注
原创 socket的write/send还是是否是线程安全?
在多线程的网络服务器程序中, 对同一个客户端多线程同时发送数据是经常可能发生的事情, 也就是有可能会多线程的对一个fd调用send/write, 那么这种操作是否需要加锁?并发写套接字是否导致系统缓冲区数据混乱呢? 网上搜了下,有人说可以写,有人说不能,linux man page也没有说明。 看来需要写程序测试。 写了个server的代码进行测试。10个线程同时对一个fd进行
2016-10-16 21:06:22
10966
8
转载 google面试题
一、笔试题1、假设在n进制下,下面的等式成立,n值是()567*456=150216a、 9 b、 10 c、 12 d、 182、文法G:S->uvSvu|w所识别的语言是:()a、uvw*vu b、(uvwvu)* c、uv(uv)*wvu(vu)* d、(uv)*w(vu)*3、如下程序段输出是:()char str[][10]={"Hello","Googl
2015-09-23 14:43:47
685
转载 memmove 和 memcpy的区别
转自:http://blog.chinaunix.net/uid-26495963-id-3080058.htmlmemcpy和memmove()都是C语言中的库函数,在头文件string.h中,作用是拷贝一定长度的内存的内容,原型分别如下:void *memcpy(void *dst, const void *src, size_t count);void *memmove(void
2015-09-08 16:00:25
540
原创 Linux进程间通信——使用信号量
http://blog.youkuaiyun.com/ljianhui/article/details/10243617
2015-09-05 15:44:30
588
转载 Navicat访问MySQL出现1044/1045错误的解决方法
Navicat(或其他客户端工具)连接mysql:1045-Acess denied for user:'root'@'192.168.2.209'(Using password:YES)Navicat 出现1044/1045错误是网友们一直头疼的问题,本文以此进行详细介绍,需要了解的朋友可以参考下in Navicat for MySQL,PostgreSQL and Oracle产生错误
2015-09-05 11:43:23
22655
1
原创 TCP/IP中的CLOSE_WAIT和TIME_WAIT
在做TCP/IP网络程序时, 经常会遇到一些特殊的TCP连接状态, 比如CLOSE_WAIT, TIME_WAIT, 记录一下, 防止下次又忘记. 这两个状态的出现都与TCP连接的关闭有关。 由于TCP连接的关闭分为主动关闭和被动关闭两种,而CLOSE_WAIT状态出现在连接是被动关闭的情况,即对方关闭了连接。但如果我方收到对方关闭的消息后(如read函数返回0)并没有关闭连接,此时的连接
2015-09-02 20:28:41
782
原创 ldconfig配置动态库so
今天运行lua的时候出现了 "lua: symbol lookup error: /usr/local/lib/libreadline.so.6: undefined symbol: PC"的错误, google了一下找到了解决的办法, cd /usr/local/lib mkdir temp mv libreadline* temp/ ldconfi
2014-01-17 11:10:11
2031
原创 根据网卡(eth0, eth1)获得对应的IP地址
核心是利用 ioctl函数的SIOCGIFADDR 来获取int get_interface_addr(char *eth, char *ipaddr){ int sock_fd; struct sockaddr_in my_addr; struct ifreq ifr; if ((sock_fd = socket(PF_INET, SOCK_DGRAM, 0)) ==
2014-01-16 17:05:20
2408
原创 单链表逆转的优化算法
逆转单链表的优化算法, 不需要中间数组,来逆转, 直接上代码#include #include typedef struct list_node { int data; struct list_node *next;} list_node;list_node *list_create(int elements[], int length) { list_
2014-01-16 11:39:27
500
转载 CPU流水线简介
对于CPU来说,它的工作可分为获取指令、解码、运算、结果几个步骤。其中前两步由指令控制器完成,后两步则由运算器完成。按照传统的方式,所有指令按顺序执行,先由指令控制器工作,完成一条指令的前两步,然后运算器工作,完成后两步,依此类推……很明显,当指令控制器工作时运算器基本上处于闲置状态,当运算器在工作时指令控制器又在休息,这样就造成了相当大的资源浪费。于是CPU借鉴了工业生产中被广泛应用的流水线设计
2014-01-16 09:09:09
953
转载 如何查看并杀死僵尸进程
如何查看并杀死僵尸进程?最近工作过程中,发现好几台服务器出现僵死进程(如图)。 用下面的命令找出僵死进程 ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' 命令注解: -A 参数列出所有进程 -o 自定义输出字段 我们设定显示字段为 stat(状态), ppid(进程父id), pid(进程
2014-01-14 09:20:13
769
原创 nfs网络文件系统
apt-get install nfs-kernel-servermount -t nfs ip:/root/xx /mnt/
2014-01-13 17:38:10
510
原创 postgres数据库几个重要的备忘命令
1. about dumping -----pg_dump -h 10.0.253.110 -U postgres legendary -t festivals > dump.sql2. create or drop table in psql terminalpsql -h ... -U user -d dbnameDROP TABLE must be upper (
2014-01-10 10:32:14
424
原创 c和c++中goto的不同
一段很简单的代码#include #include int main(int argc, char *argv[], char *env[]) { int init = 1; if (time(0) % 10) { goto result; } int test = 1; test = time(0) % 1; resu
2014-01-04 17:48:33
875
原创 postgres中修改表结构
实际项目中经常会遇到要修改表结构的需求, 现在总结下postgres中修改表结构比如, 现在有个表,CREATE TABLE test( id bigint NOT NULL, name character varying, CONSTRAINT pk_test PRIMARY KEY (id) // 这个个约束(constraint), 主键约束)
2014-01-03 20:29:28
4128
原创 根据主机域名获得主机IP
根据域名(或者主机名)获得IPgethostbyname, 涉及到DNS解析#include #include #include #include #include static const char *hostname2 = "baidu.com";int main(int argc, char *argv[]) { struct hostent *host;
2014-01-02 21:15:21
678
原创 调试lua代码小结
因为看LUA代码时遇到几个不太明白的细节, 故想动手用gdb调试一下LUA的源代码, 方法如下1. 重新编译lua源代码, 因为要调试,把Makefile里面的编译选项加上-g参数(如果不加会出现Single stepping until exit from function, which has no line number information提升无调试信息),并修改-O2 为-
2014-01-02 13:46:11
662
原创 Lua编译错误小结
编译Lua代码, 出现以下错误/usr/lib/libreadline.so: undefined reference to `PC'/usr/lib/libreadline.so: undefined reference to `tgetflag'/usr/lib/ibreadline.so: undefined reference to `tgetent'/usr/lib/l
2013-12-30 16:12:05
4292
原创 一个Lua coroutine的例子
local coroutine_pool = { }local coroutine_yield = coroutine.yieldlocal function dispatch(param) print("function dispatch called", param)endlocal global_colocal function co_create(f)
2013-12-30 12:02:31
979
原创 git远程分支的管理和代码提交
首先从远程代码仓库中克隆一份代码, 直接用git clone remote_repository,假设远程代码仓库有2个分支, master和test分支, 默认是master分支, git clone会克隆远程的所有分支到本地(可以用git branch -r查看远程的所有分支). 然后checkout 到默认的一个分支上, 这里默认的分支是masterclone代码以后, 可以切换到远
2013-12-04 20:43:36
7795
原创 FreeBSD使用基础
今天安装了FreeBSD, 对于习惯了Linux的用户而言, 还是有点不一样。1. SSH登陆. 用putty登陆BSD主机, 输入root账号和密码, 会出现 Using keyboard-interactive authentication, 并且无法登陆成功, 原因在于bsd的ssh默认禁止远程使用root登陆主机, 可以用vi修改 /etc/ssh/sshd_config文件, 将pe
2013-11-29 22:40:29
1139
原创 c/c++程序的编译过程小结
c/c++程序编译时是对每个编译单元单独进行编译, 生成.o目标文件, 最后由连接器对所有的.o文件进行链接生成最后的可执行程序。这里的编译单元是指.c, .cc, 和cpp文件。 每个编译单元是相互独立编译的,而且互不影响的. 当编译器对编译单元编译时, 会生成包含变量和函数定义, 地址的.o文件, 比如, 有一个src1.cpp, int global = 1;int func() {
2013-11-16 11:56:28
777
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人