自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 近值排序

近值排序近值排序report from :https://codereview.stackexchange.com/questions/48470/std-lib-like-c-function-to-find-nearest-elements-in-a-container近值排序report from :https://codereview.stackexchange.com/questio...

2018-11-29 09:34:11 168

转载 浅谈 C++ 中的 new/delete 和 new[]/delete[]

转载自:https://blog.csdn.net/hazir/article/details/21413833在 C++ 中,你也许经常使用 new 和 delete 来动态申请和释放内存,但你可曾想过以下问题呢?new 和 delete 是函数吗?new [] 和 ...

2018-07-23 14:18:22 164

转载 spdlog

https://github.com/gabime/spdlog/wiki/1.-QuickStart一个不错的log库,C++11标准,跨平台,线程安全别造轮子了

2018-07-10 10:39:27 1844

原创 敏感词过滤

敏感词过滤&防沉迷,基本所有上线系统都会用的基础功能吧,网上挺多代码的,也很多种方式,看的有点绕写了个自己感觉比较干净清楚的,结构也比较简单,记录一下insert 和 censor(审查、检查)都是递归,效率还好,win release版本5700的样本,length = 1000的censor_str 大概0.2msstruct mgc_node { std::unordere...

2018-06-25 14:09:50 390

原创 circular 基于std::array覆盖式

template<class _Ty, size_t _Size>class circular{public: class iterator_circual { public: private: size_t _pos; const circular<_Ty, _Size>* _buf; publ...

2018-06-20 17:39:58 307

原创 安全的文件操作

_extraHandle = fopen(_writeExtra.c_str(), "rb+"); if (!_extraHandle) { _extraHandle = fopen(_writeExtra.c_str(), "wb"); if (_extraHa...

2018-06-06 18:03:37 248

原创 记录:sql group rank

表结构:需求:按guild_id分组,user_level前三的character_id,如果user_level相同,取character_id较小的行如果是oracle、hive可以用 row_number over (PARTITION BY guild_id order by user_level desc, character_id asc)mysql 可以有两种方法:1:guild_i...

2018-05-08 11:36:41 501

原创 2017项目 review-message

游戏相关记录:(主要是一些项目经验的总结,记录一下方便查阅)google-protobuf:扩展 & 复合 & 引用,模块化业务逻辑,规范定义,减少相似度高的重复定义sql table maker:key (string) pk -- 自定义名称 eg:create_table_characterversion (string) pk  -- 一般是时间戳就好 eg:2018010...

2018-02-18 16:57:23 346

原创 积累-destroy

#pragma once#include <vector>#include <list>#include <set>#include <map>#include <unordered_set>#include <unordered_map>#define SAFE_DELETE(point) do {dele...

2018-02-18 16:13:59 143

原创 C++11 std::async

C++11 的std::thread相关解决了不同平台线程调用方式不一致的问题,配合std::function & std::bind lambda ... 定义自己的线程池很方便。新标准还有一个字面意义更直白的异步函数 std::async#include #include #include void test_1(){ auto future = std::a

2018-02-06 11:02:59 271

原创 时间轮定时器

基础数据结构:event_type _type; // 类型uint64_t _index; // guid(时间戳)uint32_t _repeat; // 重复次数timer_callback _caller; // 回调时间轮结构定义:union timer_clock{ time64_t

2018-01-28 15:21:52 588

原创 split

templatevector split(const string& str, const string& delim){ vector ret; size_t off = 0; string::size_type index = str.find_first_of(delim, off); while (index != string::npos) { std::istring

2017-01-06 15:15:48 307

原创 系统内存占用

inline long long sys_get_memory_kb(){#ifdef _MSC_VER PROCESS_MEMORY_COUNTERS MEM; GetProcessMemoryInfo(GetCurrentProcess(), &MEM, sizeof(MEM)); return MEM.WorkingSetSize / 1024;#else std::ifst

2016-12-26 11:51:08 278

原创 网状高效排序双向链表

这是一个表头用网状的排序双向链表结构托管类,原本开发的原因是游戏服务器根据玩家战斗力排序的容器更新 & 查找效率不理想,希望有个新的方法替代,因为战斗力变化频率比较高,多个用户又可能是相同的战斗力,所以做了这个类似跳跃表的结构对数据分段enum EN_GRIDDING_SORT{ en_grd_sort_up, en_grd_sort_down,};templatestruct

2016-11-02 17:29:13 482

原创 简易版的随机地图方法,适合少数场景

简易版的随机地图方法,适合少数场景int array_1[][4] = { {1, 1, 1, 1}, {3, 3, 3, 3}, {5, 5, 5, 7},};int array_2[][5] = { {2, 2, 2, 2, 2}, {4, 4, 4, 4, 4}, {6, 6, 6, 6, 6}, {8, 8, 8, 8, 8},}

2016-06-17 16:12:33 1616

原创 腾讯tlog黑盒实现(伪代码)

客户端接口部分,这个编译成库文件// tlog_interface.hnamespace tlog{ class tlog_category_interface; class tlog_ctx_interface;};typedef tlog::tlog_ctx_interface* LPTLOGCTX;typedef tlog::tlog_category_interface*

2016-05-19 17:11:40 1548

原创 静态库单例问题

问题:静态库中实现的单例,一个动态库link了该静态库,另一个执行程序同时link了前面的静态库和动态库,会出现什么问题测试环境:window// lib .h#pragma onceclass libx_a{private: int _a;public: int get_a() { return _a; } void set_a(int a) { _a =

2016-01-06 16:19:22 1203

原创 C++11随机数

#pragma once#include // C++11随机数class random_help{private: std::default_random_engine _engine; std::mt19937_64 _mt19937_gen; std::random_device _rd;private: // noncopyable random_help(ran

2016-01-06 15:57:45 428

原创 mysql sequence 生成 & 遇到的问题

drop table if EXISTS test01;create table test01 (seq_id BIGINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, `index` INT UNSIGNED NOT NULL);drop table if EXISTS new_test01;create table new_test01 (`index

2016-01-06 15:36:44 1301

原创 环缓冲托管实现

class x_buffer{private: #pragma pack(1) typedef struct { volatile size_t _rd; volatile size_t _wd; volatile size_t _size; volatile bool _empty; char _data[1]; }x_buffer_data, *x_buffe

2015-12-21 16:23:50 475

转载 Mark GetProcAddress Using In Win & Unix

typedef std::string (*foo_t)(const std::string);foo_t foo = NULL;...# ifdef _WIN32 HMODULE hDLL = ::LoadLibrary(szMyLib); if (!hDll) { /*error*/ } foo = (foo_t)::GetProcAddress(hDLL, "foo")

2015-05-13 15:29:13 347

原创 环缓冲模拟实现

class CLoopBuffer{ private: char* m_pBegin; char* m_pEnd; char* m_pNextRead; char* m_pNextWrite; unsigned int m_nSize; public: CLoopBuffer() : m_pBegin(NULL) , m_pEnd(NULL) , m

2015-03-14 17:00:05 383

原创 std::map特性的小技巧

typedef std::pair > KEY;std::map mapTest;void FuncTest(){ auto FnInsert = [&](unsigned int key01, int key02, int value)->void { KEY key = std::make_pair(key01, key02); mapTest[key].insert(va

2014-08-23 16:41:44 1861

原创 mysql 触发器实现需求

drop trigger if exists tg_insert; delimiter $$ create trigger tg_insert before insert on ceshi FOR EACH ROW BEGIN declare ishave int; select 1 into ishave from ceshiyong where id

2014-05-15 10:28:47 441

原创 记录:关于三目运算符 ? :

x ? y : z;// 如果y/z是有返回值的函数,会再调用一遍 y/z返回值类型对应的拷贝构造// 即使前面没有写赋值语句

2014-04-10 22:31:09 424

原创 union 应用

struct stVec{union{struct {unsigned int x, y, z;};struct {unsigned int xyz[3];};};};struct stSequence{union {struct {unsigned char x, y, z, w;};struct 

2014-04-10 10:21:35 417

原创 ENSURE方式的log

//---------------------------------------------//// ENSURE 方式的log//---------------------------------------------//class CEnsureLog{private:   mutable std::string m_osLog;public

2014-04-06 17:17:55 1013

原创 key->value Table方式取值的一种方法 (使用lambda表达式)

// name2id.h#ifndef _NAME2ID_H_#define _NAME2ID_H_struct name2id{const char* name;int id;};int GetIDByName(const char* name);#endif // _NAME2ID_H_// name2id.cpp

2014-03-25 16:58:59 858

转载 C++11 lambda表达式

http://www.congci.com/item/cpp-right-value-lambda C++ 11中引入的一个非常重要的概念就是右值引用。理解右值引用是学习“移动语义”(move semantics)的基础。而要理解右值引用,就必须先区分左值与右值。       对左值和右值的一个最常见的误解是:等号左边的就是左值,等号右边的就是右值。左值和右值都是针对表达式而言的,

2014-03-22 16:36:19 563

转载 mysql sql语句大全

1、说明:创建数据库CREATE DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份sql server--- 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice'disk','testBack','c:\mss

2014-03-21 11:21:39 435

原创 mac 安装 muduo

最近在看陈硕先生的muduo开源库,很实用的库,书里也有很多可学习的知识。推荐一下。陈硕的博客【http://blog.csdn.net/solstice】muduo的安装依赖cmake,作者的主系统环境是linux,但是也提供了几个patch【http://en.wikipedia.org/wiki/Patch_(Unix)】的文件包含macos。在没有patch diff的情况下mac编译

2014-02-14 14:58:18 4011 2

原创 适合配置的验证方案

//////////////////////////////////////////////////////////////////////////////// 配置格式:I32| -> int32 类型,值在1、2、3中枚举// I64|[1,100] -> int64 类型,值在[1,100]范围内(全闭区间)// F32|(1.0,11.9) -

2013-12-31 17:30:04 522

转载 正则表达式集

验证数字的正则表达式集 验证数字:^[0-9]*$验证n位的数字:^\d{n}$验证至少n位数字:^\d{n,}$验证m-n位的数字:^\d{m,n}$验证零和非零开头的数字:^(0|[1-9][0-9]*)$验证有两位小数的正实数:^[0-9]+(.[0-9]{2})?$验证有1-3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$验证非零的正整数:^\+?[1-9][

2013-12-30 21:31:02 398

原创 Mysql Case When

SELECT CASE WHEN UpdateTs > CURDATE() AND UpdateTs = 3, 1, 0) ELSE 0 END AS IsMax FROM TestTable WHERE id=1;-- 上条语句:判断表TestTable 中 id=1 的行,UpdateTs 是否是今天,并且Count 是否小于等于 3。如果是:IsMax = 1 否:IsMax = 0UP

2013-12-09 18:18:26 504

原创 boost 序列化

#include #include #include #include #include #include #include class CTest{ public: bool m_b; char m_c; int m_i; flo

2013-12-06 11:49:03 769

原创 mysql 高效的update

// 在做一些表结构blob字段的拆分整理,可是一个对于不定长度的blob字段,update操作很耗时,Google发现临时表这种东西,大意是在mysql的内存分割出的一块区域,并且跟随当前session的终止自己会drop掉,很高效。--创建临时表CREATE temporary TABLE tmp ……--插入数据方法和普通表一样--更新临时表数据到普通表UPDATE desTab

2013-12-05 13:54:02 914

原创 计算当前时间到星期N之间的时间差

#include #include #include #include using namespace boost::posix_time;using namespace boost::gregorian;const std::string gStartDateTime = "2013-11-25 00:00:00"; // 周日 24点const unsigned int

2013-11-28 12:18:11 668

原创 内存的问题

最近遇到的内存问题比较严重,测试下来win32的程序在32机上最多可以分配出2G的内存,就会bad_alloc掉了。下面是整理的一些查找内存使用的代码。#include struct aaa{ int xxx; float yyy; char zzz;};#define CLIENTBLOCK new(__FILE__, __LINE__)#define NEW CL

2013-09-24 13:30:03 448

原创 Function & #define Function

我们经常定义#define的宏,比如#define MIN(x, y) (((x) 用来返回较小的一个值,很方便。但是如果x、y有一个是函数返回,那么这个函数会被访问两次#define MIN(x, y) (((x) < (y)) ? (x) : (y))int& getint(){ cout Call GetInt FunCall GetInt Fun10"

2013-09-12 12:45:35 1436

原创 vim 另存搜索项

:redir > xxx.txt:g/aaa/p:redir ENDredir 指定缓冲区结束写入的文件g/aaa/p搜索并显示包含aaa的行(放入缓冲区)redir END 写入指定文件linux 缓冲区cat > test.txt aaaaaaabbbbbbbccccccover    ---- 结束

2013-08-31 20:14:12 886

空空如也

空空如也

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

TA关注的人

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