自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 shell 获取昨天的日期

有些操作系统支持 date  命令直接获取昨天的日期,比如 linux:strdate=`date -1d +"%Y%m%d"` 系统的不同,导致date命令有的支持有的不支持直接获取,这里给一个通用的脚本: #取昨天的时间month=`date   +%m`day=`date   +%d`year=`date   +%Y`month=`expr   $month...

2017-10-24 15:44:06 1277

linux C++ 数字和字符的转换

1、数字===》stringUSING_STD(string);USING_STD(vector);USING_STD(istringstream);USING_STD(ostringstream);USING_STD(ends);USING_STD(setbase);USING_STD(pair);USING_STD(numeric_limits);...

2017-10-19 15:16:27 933

原创 c++操作redis

相信做过服务端开发的应该都知道Redis的大名,它是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,我们后台是用C++开发的,问了下他们,用的缓存框架有Redis,SSDB,今天看了几个帖子,简单了解Redis的用法。记录一下过程。首先去官网下载最新的Redis源码http://redis.io/解压之后,进入目录编译makema...

2017-10-19 08:04:59 377

原创 redis协议

Redis协议*<args><cr><lf> 参数个数$<len><cr><lf> 第一个参数长度<arg0><cr><lf> 第一个参数$<len><cr><lf&a

2017-10-18 11:36:49 198

原创 MYSQL快速同步数据到Redis

举例场景:存储游戏玩家的任务数据,游戏服务器启动时将mysql中玩家的数据同步到redis中。从MySQL中将数据导入到Redis的Hash结构中。当然,最直接的做法就是遍历MySQL数据,一条一条写入到Redis中。这样没什么错,但是速度会非常慢。如果能够想法使得MySQL的查询输出数据直接能够与Redis命令行的输入数据协议相吻合,可以节省很多消耗和缩短时间。Mysql数据库...

2017-10-18 11:29:08 1760

原创 Redis实战

大约一年多前,公司同事开始使用Redis,不清楚是配置,还是版本的问题,当时的Redis经常在使用一段时间后,连接爆满且不释放。印象中,Redis 2.4.8以下的版本由于设计上的主从库同步问题,就会导致整个问题,不知是否确为这个Bug所致。但从那以后,我就很少敢去尝试使用Redis。曾想转投MongoDB,但公司同事给我的回复是,由于MongoDB宕机,数据丢失,公司损失惨重。于是,我一直停留...

2017-10-18 11:19:25 143

原创 Redis实战之Redis + Jedis(转自优快云)

 用Memcached,对于缓存对象大小有要求,单个对象不得大于1MB,且不支持复杂的数据类型,譬如SET等。基于这些限制,有必要考虑Redis!相关链接:Redis实战Redis实战之Redis + JedisRedis实战之征服 Redis + Jedis + Spring (一)Redis实战之征服 Redis + Jedis + Spring (二)Red...

2017-10-18 11:10:49 200

带bom的utf转gbk

场景:    linux服务器调用了webservice,等待webservice返回结果字符串A,A是utf编码格式,linux是采用的gbk编码格式,为了显而易见的看见A,需要把A转化为gbk格式进行显示,恰好A 带了bom头,转gbk的时候会失败,被bom给截断。 bom就只有3个字节,放在字符串的开始位置,这3个字节固定为:EF BB BF可以考虑跳过这3个字节再进行转g...

2016-11-24 08:59:35 328

wsting 转string

boolUnicode::wstringToString(constwstring&s, string&t) {wchar_twc;for (wstring::size_typei=0;i<s.length();++i) {wc=s[i];if (wc<0x80) {t+=static_cast<char>(wc);}e...

2016-11-09 10:44:37 548

linux string 转wstring

boolUnicode::stringToWstring(conststring&s, wstring&t) {t.reserve(t.length() +s.length());wchar_twc;unsignedintminval;unsignedcharc;string::size_typelen;for (string::size_ty...

2016-11-09 10:43:06 1223

equal_range

这个函数的作用是返回数组中某一个值的起始地址和结束地址,函数的使用前提是数组要排序好。 比如 vector<int> v1 v1.push_back(1)//下标0v1.push_back(2)//下标1v1.push_back(3)//下标2v1.push_back(4)//下标3v1.push_back(4)//下标4v1.push_back(...

2016-11-08 15:35:30 264

lower_bound

1、功能作用     lower_bound 的作用是在已经排好序的数组中返回第一个大于等于(不小于)你所给定的值。     比如,在vector元素中,有1,2,3,4,4,4,5.对应的下标是 0,1,2,3,4,5,6     通过lower_bound 查找4,那么返回的是下标3.  2、使用方法    首先看看lower_bound的函数原型有2个版本。...

2016-11-07 14:37:36 512

仿函数

仿函数,本质不是函数,而是可以象函数一样那么去使用。 普通函数int fun(int a){      return 2*a;} 那么我们使用的这个函数的时候,一般使用方式就是int b = fun(5); 仿函数class fun{public:     fun(){}     int operator ()(int a){   ...

2016-11-03 09:00:43 232

信号量Condition

前面有说道过互斥,互斥是异步的时候使用的,就是说,在资源的使用上,我用,你就不能用,我用完了你才可以用,没有逻辑上的相关性,而信号呢,是同步的时候用的,就是说这个步骤我做完了,需要下一个步骤开始了,我做完了通知你,你来处理下一步,有着逻辑上的相关性 声明:class Condition : public NonCopyable {public:    /**     * ...

2016-10-26 17:05:37 339

智能锁

在进行智能锁之前,需要了解一下什么叫 锁,参考http://konin.iteye.com/blog/2333350啥叫智能锁呢,就是我在想锁住资源的时候,就锁住,待资源使用完后,自动释放该锁,比如 {//锁生命周期开始 LockGuard<InfoOrderQueue> guard(m_queue);//加锁}//锁生命周期结束,自动释放锁 上面这段代码中,m_...

2016-10-26 16:09:55 514

异步互斥锁

什么情况下需要用到锁呢,就是多线程在使用同一个资源(变量),比如,在类A中有一个变量int i,A创建了3个线程,i作为变量传递给了这3个线程,每个线程都需要对这i进行修改,那么在使用 i 的时候,这3个线程都需要进行锁操作。 第一步 声明纯虚类:class Lock {public:    /**     * 析构函数     */    virtual ~Lock() {}   ...

2016-10-26 15:43:10 271

原创 线程池

线程池,首先要明白,线程池是用来管理线程类的,线程类的实现可以参考我前面说过的方法,连接: http://konin.iteye.com/blog/2333332既然是管理线程类,就必须要有一个容器(池子)来装这些线程类,同时间,要知道有那些线程类处于运行工作的状态,所以还要有一个容器装运行状态的线程 什么情况下需要用到线程池?场景1、一个业务,可以通过某种规则,用多个线程...

2016-10-26 15:15:46 126

如何完整的实现线程类

1.一般方法    一般情况下,使用线程,是用pthread_create函数创建一个线程,创建的过程中采用传递函数指针的方式来实现主体的业务逻辑。比如/*thread.c*/  #include <stdio.h>  #include <pthread.h>    /*线程一*/  void thread_1(void)  {      int i=0;    ...

2016-10-26 14:57:07 167

空空如也

空空如也

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

TA关注的人

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