自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 资源 (1)
  • 收藏
  • 关注

原创 socket的write/send还是是否是线程安全?

在多线程的网络服务器程序中, 对同一个客户端多线程同时发送数据是经常可能发生的事情, 也就是有可能会多线程的对一个fd调用send/write, 那么这种操作是否需要加锁?并发写套接字是否导致系统缓冲区数据混乱呢? 网上搜了下,有人说可以写,有人说不能,linux man page也没有说明。 看来需要写程序测试。 写了个server的代码进行测试。10个线程同时对一个fd进行

2016-10-16 21:06:22 10673 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 626

转载 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 499

原创 Linux进程间通信——使用信号量

http://blog.csdn.net/ljianhui/article/details/10243617

2015-09-05 15:44:30 550

转载 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 22378 2

原创 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 711

原创 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 1981

原创 根据网卡(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 2339

原创 单链表逆转的优化算法

逆转单链表的优化算法, 不需要中间数组,来逆转, 直接上代码#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 460

转载 CPU流水线简介

对于CPU来说,它的工作可分为获取指令、解码、运算、结果几个步骤。其中前两步由指令控制器完成,后两步则由运算器完成。按照传统的方式,所有指令按顺序执行,先由指令控制器工作,完成一条指令的前两步,然后运算器工作,完成后两步,依此类推……很明显,当指令控制器工作时运算器基本上处于闲置状态,当运算器在工作时指令控制器又在休息,这样就造成了相当大的资源浪费。于是CPU借鉴了工业生产中被广泛应用的流水线设计

2014-01-16 09:09:09 911

转载 如何查看并杀死僵尸进程

如何查看并杀死僵尸进程?最近工作过程中,发现好几台服务器出现僵死进程(如图)。   用下面的命令找出僵死进程  ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]'  命令注解:  -A 参数列出所有进程  -o 自定义输出字段 我们设定显示字段为 stat(状态), ppid(进程父id), pid(进程

2014-01-14 09:20:13 705

原创 nfs网络文件系统

apt-get install nfs-kernel-servermount -t nfs ip:/root/xx     /mnt/

2014-01-13 17:38:10 475

原创 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 396

原创 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 814

原创 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 4040

原创 根据主机域名获得主机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 642

原创 调试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 618

原创 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 4094

原创 一个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 943

原创 git远程分支的管理和代码提交

首先从远程代码仓库中克隆一份代码, 直接用git clone remote_repository,假设远程代码仓库有2个分支, master和test分支, 默认是master分支, git clone会克隆远程的所有分支到本地(可以用git branch -r查看远程的所有分支). 然后checkout 到默认的一个分支上, 这里默认的分支是masterclone代码以后, 可以切换到远

2013-12-04 20:43:36 7725

原创 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 1070

原创 c/c++程序的编译过程小结

c/c++程序编译时是对每个编译单元单独进行编译, 生成.o目标文件, 最后由连接器对所有的.o文件进行链接生成最后的可执行程序。这里的编译单元是指.c, .cc, 和cpp文件。 每个编译单元是相互独立编译的,而且互不影响的. 当编译器对编译单元编译时, 会生成包含变量和函数定义, 地址的.o文件, 比如, 有一个src1.cpp, int global = 1;int func() {

2013-11-16 11:56:28 740

DOS下GUI程序开发

使用tc进行DOS环境下的菜单设计,图形绘制,动画播放,乐曲的演奏等等较高级的涉及GUI的功能

2008-12-16

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除