工作中积累的开发笔记
八卦之魂
爱耍双节棍的程序员
展开
-
使用 redis zset 保存 IM 聊天消息并判断消息可靠到达客户端
在服务端,用户收到的聊天消息,用一个 redis zset 保存,把聊天内容作为 member, 服务器时间戳当做 redis zset 的 score, 这样就可以对聊天记录进行排序其他人向用户发送聊天消息时,服务端先把聊天消息保存到 redis zset 中,然后再下发给客户端客户端每收到一个聊天消息,就把聊天消息的时间戳回复给服务器,这样服务器就能确认客户端读取了聊天消息服务端要记录...原创 2019-11-18 17:51:35 · 2062 阅读 · 0 评论 -
IM 朋友圈后台存储设计
数据库表设计存储用户发的微博 weiboCREATE TABLE weibo ( id bigint(20) NOT NULL AUTO_INCREMENT, account_id bigint(20) NOT NULL, photos_bin blob, msg_content varchar(2048) DEFAULT NULL, srv_timestamp bigint(20) NO...原创 2019-11-08 19:17:22 · 726 阅读 · 0 评论 -
在两个目录中寻找差异文件
开发环境VS2005 SP1,BOOST 1.36, STL, MarkUpSnap.h#pragma once class CSnap{ public: CSnap(void); ~CSnap(void); // 制作快照,并保存为 xml 文件 void SaveSnap( const char* szFileName );原创 2008-11-24 00:05:00 · 2039 阅读 · 0 评论 -
在同一个根目录下,给出一个〖参照路径〗,计算〖当前程序目录〗与〖参照路径〗的相对路径
给朋友写的时候,顺便贴上来了开发环境为 vc8 + boost1.36比如给定参照路径为 "c://temp1//temp2", 程序所在目录为 "c://Documents and Settings//Administrator//桌面//boost练习//pathProcess", 则 〖当前程序目录〗与〖参照路径〗的相对路径: ../../../../temp1/t原创 2008-12-01 00:55:00 · 1540 阅读 · 0 评论 -
使用 boost 解析 XML 文件中的节点属性
参考来源http://stackoverflow.com/questions/14010473/parsing-xml-attributes-with-boost花了两小时,总算解析出来,为了避免遗忘做个笔记XML 文件 TaskCfg.xml 内容如下原创 2015-11-20 16:16:50 · 4099 阅读 · 0 评论 -
twitter 雪花算法 golang 实现
// twitter 雪花算法// 把时间戳,工作机器ID, 序列号组合成一个 64位 int// 第一位不用, [2,42]这41位存放时间戳,[43,52]这10位存放机器id,[53,64]最后12位存放序列号原创 2017-04-14 20:55:28 · 2435 阅读 · 0 评论 -
消息队列 nsq 使用笔记
在远程机器 192.168.1.16 上启动 nsqlookupd, nsqadminnohup ./nsqlookupd &nohup ./nsqadmin --lookupd-http-address=127.0.0.1:4161 &nsqlookupd 占用 4161 端口有两个接口:TCP 端口(4160),nsqd 用它来广播。HTTP 端口(4161),客户端用它来发现...原创 2018-04-08 17:32:12 · 2193 阅读 · 0 评论 -
使用 etcd 和 redis 实现全国同服游戏的负载均衡,服务器弹性伸缩, 灰度发布
概述:每个玩家在游戏中都有唯一编号, 称为 roleID参与开发的全国同服游戏,每个游戏逻辑服务器( 以下简称 game ) 都是一个平行世界,每个 game 都有唯一编号: gameID, 玩家同一时刻只能登录到一个 game 中;可以使用 redis setnx 保存 roleID - gameID, 来确保某段时间内玩家登录到同一个指定的game, 以杜绝多终端登录同一帐号的风险; 在此...原创 2018-07-14 15:11:52 · 3296 阅读 · 4 评论 -
在 ubuntu desktop 18.04 上搭建 pulsar-client-go V2.3.2 开发环境
1在http://pulsar.apache.org/docs/en/client-libraries-cpp/中下载 dep 包并安装2在 /etc/profile 中增加下面几个配置export GOPROXY=https://athens.azurefd.netexport GO111MODULE=on保存后, 执行 source /etc/profile...原创 2019-06-13 16:38:47 · 602 阅读 · 0 评论 -
修改 xorm templates/goxorm/config 文件,以生成支持反射 json 格式的 go 语言数据库表结构体
设置 config 文件中的 genJson=1,生成的数据库表结构体就带 json 字样例如type account struct { Id int64 `json:"id" xorm:"autoincr index BIGINT(20"`//.....}如果 config 文件中的 genJson=0,生成的数据库表结构体就不带 json 字样type ...原创 2019-09-12 16:03:28 · 371 阅读 · 0 评论 -
通过快捷方式获取文件路径
#include bool ReadShortcut(LPWSTR lpwLnkFile, LPSTR lpDescFile){ bool bReturn = true; IShellLink *pShellLink; if(bReturn) { bReturn = (CoInitialize(NULL) == S_OK); if(bRe原创 2007-08-31 16:34:00 · 1293 阅读 · 0 评论 -
宽字符串和标准字符串的转换
char* WstringToString( const WCHAR* pWString ){ if ( wcslen( pWString ) > 999 ) { return NULL; } int nLen = WideCharToMultiByte( CP_ACP, 0, pWString, -1, NULL, 0, NULL原创 2008-08-24 22:07:00 · 1109 阅读 · 0 评论