自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

陈嘉怡的专栏

专注服务器。本人有对本博客的所有原创文章的版权。

  • 博客(26)
  • 收藏
  • 关注

原创 启动 sshd:/var/empty/sshd must be owned by root and not group or world-writable

/etc/init.d/sshd statusopenssh-daemon 已停输入/etc/init.d/sshd start出现启动 sshd:/var/empty/sshd must be owned by root and not group or world-writable这个是权限的问题  可采取以下解决  chown -R root.

2013-11-24 18:15:40 7585

原创 mysql 忘记密码

1.输入mysqld --skip-grant-tables回车。如果没有出现提示信息,那就对了。2.再开一个shell窗口(因为刚才那个shell窗口已经不能动了)。3.输入mysql回车,如果成功,将出现MySQL提示符 >4. 连接权限数据库>use mysql; (别忘了分号)5.改密码:> update user set password=password

2013-11-24 17:23:39 717

原创 mysql 启动错误(InnoDB: Operating system error number 13 )

service mysqld status 可以看mysqld状态service mysqld start 可以启动mysql出现启动错误可以查看/var/log/mysqld.log如果错误信息如下131124 00:00:43  mysqld started131124  0:00:43  InnoDB: Operating system error number 13 i

2013-11-24 16:25:12 31685 3

原创 检查bom

使用 这个 可以检查 本目录包括子目录的指定拓展名的文件是否是带bom的  grep -r $'\xEF\xBB\xBF' * |grep .cpp

2013-11-24 14:34:45 1290

原创 预编译输出编译信息 #pragma message

vs 有个预编译输出编译信息的方式,使用的是pragma message,但是linux下这个就没有效果,并且会出现警告。可以考虑的使用方式是如下:#ifdef WIN32#pragma message("message body")#else#warning "message body"#endif 但是 这些预编译的信息不能使用宏来表示,就是不能使用#define

2013-11-22 18:05:37 6217

原创 符号连接的层数过多

linux 下创建软连接出现符号连接的层数过多错误。(使用more filename可以查看)解决方式:目标文件使用绝对路径如:ln -s /home/workspace/Moon/Moon/moon/moon/Debug/moon  ./serverRun/moon

2013-11-22 10:51:48 12749

原创 gets函数和fgets函数

今天在LINUX下编译C程序时,出现了:warning: the `gets' function is dangerous and should not be used.这个warning。百度之后,得知问题出在程序中使用了 gets  ,Linux 下gcc编译器不支持这个函数,解决办法是使用 fgets[cpp] view p

2013-11-21 21:35:16 2864

原创 undefined reference to `clock_gettime' 链接错误

undefined reference to `clock_gettime' 链接错误解决方式:则你只需要在你的Makefile文件添加    -lrt 或eclipse 里面添加rt库即可。

2013-11-21 21:31:30 1457

原创 __THROW __nonnull

__THROW __nonnull ,不抛出异常和不让参数为空。Linux 下的定义是这样的: /usr/lib/string.h string.h:char *strcpy (char *__restrict __dest, __const char *__restrict __src)      __THROW __nonnull ((1, 2));

2013-11-21 14:51:26 5519 1

原创 __attribute__ ((format (printf, 2, 3)));

这句主要作用是提示编译器,对这个函数的调用需要像printf一样,用对应的format字符串来check可变参数的数据类型。例如:extern int myprintf (void *other, const char *fmt, ...)__attribute__ ((format (printf, 2, 3)));format (printf, 2, 3)告诉编译器,fmt相当于p

2013-11-20 20:42:44 2924

转载 某些debug宏

条件编译debug、release版本微软的编译器定义 _DEBUG 作为debug版本gcc 定义 DEBUG 作为debug版本。xcode使用gcc,所以也是定义DEBUG,将工程模式设为Debug可以看到GCC_PREPROCESSOR_DEFINITIONS这个变量定义了DEBUG。OTHER_CFLAGS也行,这是直接设定gcc的参数,所以需要使用gcc的语法,比如-D

2013-11-17 18:03:53 1395

原创 在指定的地址构造对象

在指定的地址构造对象,又不会生成对象,就是不用析构该对象。一般是在缓冲区里构造。可以指定地址,由模板编译类型,还可以传入参数。#include template inline void constructInPlace(T  *_Ptr){ // construct object at _Ptr with value _Valnew ((void  *)_Ptr) T(

2013-11-17 17:14:05 1985

转载 Linux下map hash_map和unordered_map效率比较

原理介绍map介绍Map是STL[1]的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部

2013-11-15 03:08:00 1175

原创 gcc 原子操作函数

gcc从4.1.2以后提供了__sync_*系列的内嵌函数,提供用于针对数字或布尔型变量的原子操作。1、原子操作的api函数(1)直接操作数的原子操作第一组返回更新前的值,第二组返回更新后的值type__sync_fetch_and_add(type*ptr,typevalue,...)type__sync_fetch_and_sub(type*ptr,type...

2013-11-15 02:49:20 10283

原创 lockfree 的队列的实现

一个高速无锁循环队列的实现。需要注意的是:(1)队列的大小(m_lMaxQueueSize)应该足够的大,避免处理不过来时,找半天找不到空位置。(2)还有一点是这种队列在push数据足够快时效率高点,不然pop时就阻塞了,改善的方式就是使用费阻塞的方式,判断几次没有就跳出去,还有这种队列也就在push数据足够快时效率高点,不然判断的次数就多了。(3)使用了原子操作的锁(4)需...

2013-11-15 02:26:19 4420

转载 centos gcc 升级

lambda表达式,想说爱你不容易。STL为我们提供了很多算法,却没有提供匿名函数,真是罪过!本文的故事从此开始。c++0x为我们带来了一阵春风,提供了lambda表达式,我们终于可以像c#那样去写程序了。int a,b;for_each(v.begin(),v.end(),[=](int &it){it = it*a+b;}); 因为平时都是vs2

2013-11-15 01:47:33 992

原创 enum 变量内存大小(c++)

关于占用内存的大小,enum类型本身是不占内存的,编译器直接替换。但是enum类型的变量肯定是占内存的(关于占用内存的大小,看后面详述)。enum需要特别注意的是它的取值范围和类型分配。关于确定enum的取值范围,如果一个enum中所有的枚举值非负,那么枚举的表示范围是[0,2^k - 1],其中2^k是使得所有枚举值位于此范围内的最小的2的幂。如果是有负值,那么范围就是[-2^k

2013-11-13 18:44:20 14803 1

原创 函数调用约定

(1) _stdcall调用_stdcall是Pascal程序的缺省调用方式,参数采用从右到左的压栈方式,被调函数自身在返回前清空堆栈。WIN32 Api都采用_stdcall调用方式,这样的宏定义说明了问题:  #define WINAPI _stdcall  按C编译方式,_stdcall调用约定在输出函数名前面加下划线,后面加“@”符号和参数的字节数,形如_funct

2013-11-13 05:54:42 821

原创 字符适配宏T

_T("")是一个宏,定义于tchar.h下。[1]   #define __T(x) L ## x   #define _T(x) __T(x)   他的作用是让你的程序支持Unicode编码   因为Windows使用两种字符集ANSI和UNICODE

2013-11-11 16:16:23 771

原创 自定义通用型空间配置器

自定义内存分配器,使用自定义类来封装stl,实现对自定义内存分配器的使用。其实stl的默认的分配器也算高效,自定义的主要是使用内存池的机制,不过测试过提升不明显。封装类如下:typedef std::string string;templatestruct basic_ostream: public std::basic_ostream >{};//typedef

2013-11-09 11:34:28 1187

原创 游戏服务器之网格屏索引

场景索引类nIndexScene ,可以让场景类继承场景索引类,可以方便场景实体索引的使用。/** * \author cjy * \description 带索引的场景基类,,封装了消息的发送 */templateclass nIndexScene : public nScene, public screen_index{    //typedef SceneEn

2013-11-08 22:17:49 2822 2

原创 互斥锁常用方式

几个比较实用的锁。互斥锁nMutex ,互斥锁nMutex的封装  auto_mutex_lock 自动互斥锁 只是方便解锁加锁。还有特化模板的锁和一般模板的锁,设计得不错,连判断都省了。不可复制类。常作为父类实现对象的不可复制,其实就是私有化拷贝复制函数和赋值函数,连实现都不需要,因为在代码中是不会出现的,所以不需要链接源代码。这里构造函数和析构函数是保护的,觉得其实不需要也可以,因为也用不

2013-11-08 21:24:54 1425

原创 epoll 内核分析

epoll是由一组系统调用组成。     int epoll_create(int size);     int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);     int epoll_wait(int epfd, struct epoll_event *events,int maxevents, in

2013-11-07 02:10:08 1220

转载 libev入门

libev是什么要了解libev,有必要先了解libevent。早在2000年libevent就发布了第一个版本。通过libevent的编程接口,可以实现在指定的事件发生后调用回调函数,指定的事件是文件描述符上的读写事件等。除了文件描述符的事件,libevent还支持定时器以及信号等。欲详细了解libevent可以参照其站点:http://monkey.org/~provos/libeve

2013-11-06 12:29:33 1301

转载 使用 libevent 和 libev 提高网络应用性能

管理多个 UNIX 网络连接构建现代的服务器应用程序需要以某种方法同时接收数百、数千甚至数万个事件,无论它们是内部请求还是网络连接,都要有效地处理它们的操作。有许多解决方案,但是 libevent 库和 libev 库能够大大提高性能和事件处理能力。在本文中,我们要讨论在 UNIX® 应用程序中使用和部署这些解决方案所用的基本结构和方法。libev 和 libevent 都可以在高

2013-11-06 12:28:28 1004

转载 libev源码分析libev数据结构整理

这里选取的版本为最新版:libev-4.04。libev的代码很简练,除了对高效I/O模型等的封装文件,核心文件就两个:ev.h和ev.c,其中ev.c大概4000行左右。代码大量用到了宏,并且宏还嵌套了宏,为了便于理解libev的代码,这里对宏进行了还原。ev_watcher结构体(其成员为其它结构的公共部分):typedef struct ev_watcher

2013-11-06 12:12:26 1252

空空如也

空空如也

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

TA关注的人

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