自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 go-resiliency源码解析之-batcher

创建一个batch对象需要2个参数:Timeout:超时,这是一个batch对象收集输入参数的时间。work函数变量:在timeout超时后,会调用一次work函数,来处理每一个输入参数。

2023-05-07 15:07:03 161

原创 go-resiliency源码解析之-semaphore

这个是我问ChatGPT的文档Semaphore 是一种用于同步进程间共享资源的机制。Semaphore 可以看作是一个计数器,用于保护一定数量的共享资源。当进程需要访问共享资源时,它必须先从 Semaphore 中获取一个许可证,然后才能访问共享资源。当进程完成了对共享资源的访问后,它必须将许可证返还给 Semaphore。Semaphore 可以防止多个进程同时访问共享资源,从而避免了竞争条件的发生,保证了程序的正确性和可靠性。Semaphore 是多进程编程中常用的技术之一。

2023-05-05 14:15:55 108

原创 go-resiliency源码解析之-timeout

​ 今天看到项目里用到了go-resiliency这个库,库整体比较简单,代码量不大。主要实现go中几种常见的模式:后面分析下这几种模式的实现- circuit-breaker 熔断器- semaphore 信号量- timeout 函数超时- batching 批处理- retriable 可重复。

2023-05-05 14:11:44 484

原创 chatgpt可以帮做42件事,总有一个适合你

我正在「Gochat:探索go语言和chatgpt」和朋友们讨论有趣的话题,你⼀起来吧?chatgpt可以帮做42件事,总有一个适合你。

2023-04-15 16:19:40 137

原创 使用chatgpt一分钟帮你实现思维导图

简单说,Markdown 是一种轻量级标记语言,它通过简单的规则来让文本格式化,使文本在任何设备上看起来都很不错。想到一个课题,然后人工梳理出内容大纲,是个挺费精力的事情。需要再次提醒的是,工具只是为了帮我们提升工作效率,并不是让我们偷懒,一个靠谱的学习大纲,需要人们根据实际情况打磨调整。本篇基础篇课程,实操起来很简单,但却非常的实用。导入,选择菜单栏上 文件->导入,选择导入Markdown,选择你刚刚保存的文件导入。本篇内容的主题:利用ChatGPT,一分钟帮你实现详尽的思维导图。

2023-04-15 10:39:35 3880

原创 Go项目布局建议

当然对go工程项目不同,大小不同布局也可能是有所不同的,这个可以根据实际需求来定,下面是一个go标准布局参考 :https://github.com/golang-standards/project-layout。cmd目录:一般go项目会把main.go文件放在该目录下,cmd下会创建一个目录,这个目录的作用是在go build的时候生成执行文件名称。sql: 存放工程的sql文件,如果是工程比较大尤其是微服务化,也会把sql文件单独放在一个仓库,这样方便跟踪整个sql对库表的改动。

2023-04-15 10:32:35 560

原创 go实现雪花算法

优点并发高,缺点无法持久化。(这里要强调一点,redis默认和常用的持久化策略是有1s间隔的)唯一ID可以说是分布式场景下最常见的需求了,前几天发现有一个服务里面使用的唯一ID直接使用的纳秒时间戳。优点实现简单,数据持久化,缺点并发不要,在多数据中心下数据无法合并。优点 性能高,实现不去复杂 缺点:依赖计算机时钟,如果时钟错误可能导致Id回滚。所以我们的选择一个更合适的唯一Id生成方案。这种唯一ID获取方式有没有什么问题了?2.多节点部署情况下有没有Id冲突?1.大并发情况下,有没有Id冲突?

2023-04-15 10:26:34 117

原创 2道关于chan的面试题

在协程里判断done来判断是否退出协程,在另外一个协程实际不会写入数据到done,而是直接close(done)操作nil的chan : 对于nil chan不管是读还是写都不会触发panic, 而是阻塞。2、交流共享 ChatGPT 的各种信息,资源互换,答疑关于 ChatGPT 的问题。解答:解答:内置函数len()和cap()分别用于获取chan的数据个数和缓冲区大小。所以只有对关闭的chan进行写操作会触发panic ,答案选4。3、分享如何利用 ChatGPT 提升工作效率,分享变现机会。

2023-04-11 21:41:13 619

原创 使用Go每分钟处理百万个请求

前两天马斯克,Bengio等千位AI科技人士签署暂停巨型 AI 实验公开信,在这封信里马斯克等人呼吁所有人工智能实验室立即暂停训练比 GPT-4 更强大的人工智能系统(包括目前正在训练的 GPT-5)至少 6 个月,同时利用这段时间共同开发和实施一套用于高级人工智能设计和开发的共享安全协议,并由独立的外部专家进行严格审计和监督。但我认为:硅基反噬碳基的可能性不是没有,核心是自我意识究竟是如何产生的,主流学派认为是控制分工+天量级的链接。2、分享ChatGPT相关最新使用方法技巧以及通过AI变现的方法。

2023-04-11 20:49:04 179

原创 node.js+cocoscreator自研斗地主游戏

@TOC欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会带来全...

2019-09-13 23:05:40 15149 44

原创 C++取虚函数指针

#include <string>#include <iostream>//using namespace std;using std::string;using std::cout;using std::endl;class A{public: A(){}; ~A(){}; virtual void show1() { cou...

2018-06-22 17:53:27 803

原创 bitcoin代码之MerkleTree

1.Merkle Tree概念Merkle树是一种哈希二叉树,它是一种用作快速归纳和校验大规模数据完整性的数据结构2.Merkle Tree在区块链作用merkle数在bitcoin里有2个主要作用2.1归纳一个区块里全部交易为一个32字节值hash值。​ 比特币使用Merkle树的方式进行验证,相对于哈希列表,Merkle树是一种哈希二叉树,它的明显的一个...

2018-03-02 14:32:01 2072 3

原创 linux系能分析和瓶颈查找

何为负载?  1.在top里输出loadaverage aa  bb  cc或者 cat /proc/loadavg,在一定时间内进程平均等待时间,如果这个参数值高,说明系能负载高. 2.进程为什么会等待执行?    多任务的OS,进程执行都是分时被调度  A-B-内核-A 过程    进程的状态(ps auxw) 1.TASK_RUN(可被调度运行)  ,2.可中断等待(长期时间

2015-05-27 16:08:36 1845

原创 网络服务器开发总结

一、概述经过多年网络服务器开发实战,于此总结实践体会。本文涉及到异步连接、异步域名解析、热更新、过载保护与网络模型及协程等,但不会涉及到accept4、epoll等基本知识点。二、可写事件相信大多数初学者都会迷惑可写事件的作用,可能觉得可写事件没有什么意义。但在网络服务器中监听并处理可写事件必不可少,其作用在于判断连接是否可以发送数据,主要用于当网络原因暂时无法立即发送数据时监听。

2014-09-23 13:49:56 5171

转载 TCP封包粘包半包

TCP-IP详解卷1第17章中17.2节对TCP服务原理作了一个简明介绍(以下蓝色字体摘自《TCP-IP详解卷1第17章17.2节》):尽管T C P和U D P都使用相同的网络层(I P),T C P却向应用层提供与U D P完全不同的服务。T C P提供一种面向连接的、可靠的字节流服务。面向连接意味着两个使用T C P的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须先

2014-09-16 14:15:25 1903

原创 boost在linux下编译

zui'jboost编译#tar xvzf boost_1_54_0.tar.gz#cd boost_1_54_0./bootstrap.sh#./b2 install --prefix=/usr/local

2014-09-11 14:38:03 726

原创 VS下真机调试android native app(以cocos2dx手游为例)

0.虽然使用手游为例,但适用于任何原生C++ NDK编译方式。1. 先说说项目背景, cocos2dx的手游,开发一般在windows vs下开发调试,IOS下使用xcode也能很方便的调试,但android就没那么幸运了,一般调试就靠log来分析问题,总觉得效率低下。调试原生的android程序adb ,cygwin gdb-ndk,ecplise下android native app也

2014-08-18 16:19:41 13097 5

原创 数组链表

/*数组:在删除的时候需要移动数组元素开销大链表:无法使用预先分配固定内存,并且无法使用索引方式在O(1)复杂度下删除数组链表优点:1.在插入O(1),删除的复杂度都是O(N),带索引删除复杂度为O(1)2.并且可以预先把需要的内存分配好*/class CAList{public: CAList(unsigned int Count,unsigned int Elem

2013-08-25 21:48:21 5825

原创 游戏后台之高效定时器-最小堆

2013-07-18 22:09:10 1375

原创 游戏后台之高效定时器-时间轮

尽请期待

2013-07-08 18:29:37 7718

原创 游戏后台里的通用技术之二分查找和排序

//通用二分查找//key带查找的key//base数组的起始地址 (数组必须为已序)//count数组元素个数//vsize 一个元素内存大小//equ == 1 equ为1时, 返回找到等于key的索引, equ为0时, 找到第一个小于key的值 //compar用户自定义函数 compar返回 0 key > mid int BSearch(void* key,con

2013-04-06 18:58:25 866

原创 游戏后台里的通用技术之环形缓冲区

1.什么是环形缓冲区?环形缓冲区一般是一段连续的buffer空间,空间可以是new或者使用vector分配,这些空间对计算机来说是线性的,但我们在读取或者写入的时候需要%来计算读写的位置,这样就抽象成环了。2.什么时候用环形缓冲区game的后台通常是几个程序来组成一个集群。这样几个后台进程必然需要通信。比如下面一个简单的结构  client--------- 接

2013-03-31 20:55:28 1268

原创 时间和game后台

1.计算机"时间"的概念,世界时间和本地时间世界时间:简单的时候就是不同国家的日出、日落时间必定有所偏差,这些偏差就是所谓的时差。所以需要一个统一的时间作为各国的换算标准,根据世界时间和时差换算成本地时间。整个地球分为二十四时区(一天24小时嘛),每个时区都有自己的本地时间,北京时间是UCT时间加上8小时而UCT就是世界时间,UCT+8就是我们的本地时间2."时间"在游戏后

2013-03-24 12:39:06 1584

原创 游戏后台里的通用技术之异步处理和回调

.什么是回调函数?回调在不用的语言可以用不同的实现手法,比如C/C++一般使用函数指针,C#这类没有指针的语言可以使用委托,回调的本质上是先用函数指针存储函数的地址,在处理完某个事件/或者满足某个条件的时候调用函数来处理。2.为什么需要回调了?在game后台很多处理需要异步的经行,这样才能保证后台程序的高效性。既然需要异步处理,那就是在某个时间点后或者满足某个条件后调用预先

2013-03-10 22:22:47 1883

原创 哈希表

/*hash在实际工程里是用的很多的,主要是hash提供了O(1)常量的存储和查找时间那如何自己设计一个hash需要考虑哪些方面了?hash有2种实现方式,一种是链式的hash,还有一种是开地址hash方面 下面来看看开地址hash如何实现负载因子 a = n/m  n为元素个数  m为槽个数在链式hash里a表示在均匀散列的情况下,每个槽存放元素个数,也就是平均找出次数

2013-02-03 22:10:29 619

原创 游戏后台Cache技术和运用

///////////////////////////////////////////////////////////////////////////*1.为什么需要cache,有那些好处?从下面几点考虑后台程序会创建大量的对象,也就是动态分配内存,通常的做法是new XXX。然后在不用的时候在delete XXX。这样new和delete会消耗一定cpu,最重要的是在长期ne

2013-01-28 22:15:24 1016

转载 游戏场景管理

先说明几个问题1) 地图是原点是在左上角(0,0),从左向右是X轴的递增,从上到下是Y的递增。2) 根据ZONE的大小把整张地图分割为一个个相连的ZONE,大小根据需求定,我们定为600*400(客户端最大屏幕 1600 * 900)3) 分完之后地图就是这个样子了(每个数子就是一个ZONE,9宫格的一个格子)    0    1    2    3    4    5

2013-01-22 23:29:09 919

原创 游戏后台设计考虑点(来自工作实践中的一些经验)

游戏后台设计考虑点1.系统核心设计  架构,整个服务器大区的架构设计  服务器机型选择,考虑成本和性能的性价比  合理划分进程,保持系统简单2.扩展性  从10几万到百万能否轻松的平滑扩展 (如架构扩展,系统32到64)  需求不断变化,数据是否能平台升级,如数据库3.安全性  防止崩溃,防止恶意攻击  有没有单点故障4.自动化运

2013-01-22 23:27:17 2672

原创 管家婆代码下载地址

下载地址www.pudn.com/downloads507/sourcecode/windows/detail2108032.html

2013-01-06 17:27:20 282592 4

原创 准备分享QT做的管家婆

看到很多留言都想要份代码学习,待我整理下就分享给大家。

2012-12-15 10:51:57 1518 3

原创 位图bitmap的实现作用

#include #include //位图类class CBitMap{public:   CBitMap(size_t count)  {    if (count     {        count = 1;    }    m_count = count;    m_bitmap = new unsigned char[m_co

2012-12-02 14:53:25 2352

原创 通用插入排序

#include  #include #include struct node{  int key;  int data;};bool InsertSort(void* data,size_t size,size_t esize,int (*compare)(void* key1,void* key2)){   char* a = (char

2012-12-01 22:54:06 680

原创 ace为网络底层的网络架构

一个ace为网络底层的网络架构 去年写的,使用ace做底层的服务器网络架构,代码构建使用cmake工具,代码可运行在linux和windows2个平台上。CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性。使用使用cmake很容易生成win

2012-08-19 11:12:26 1391 2

原创 emule--电驴

一番小折腾,终于编译过了电驴代码。emule也算是被广泛使用的p2p下载工具,现在像QQ旋风,迅雷都集成了emule的协议,这样旋风,迅雷就可以直接下载emule的资源了。emule作为一个开源软件在代码质量和设计上还是有很多可以学习的地方。尤其是搞p2p网络开发这块的更应该看下。源代码是在官网下载的版本是V0.49,下面是emule主界面。 有想一起研究emule的可以找我要编译好的

2012-07-30 22:39:41 1296 3

原创 刚工作时写的个下载器

刚工作时写的HTTP多线程个下载器。直接上王道,很早写的,没怎么完整测试过,要代码的留言 ~下载提示个性化设置

2012-07-22 13:26:28 2009 16

原创 管家婆之网速测试

好久没写了,终于完成网速测试的插件功能。  主界面 网速测试中 测试完毕   使用QQ管家网速测试比较  由测试比较可以看出管家婆测试我的网速平均速度为489KB/秒,管家为478

2012-06-30 20:05:44 2119 3

原创 管家婆系统优化--启动项管理 (续)

上一篇http://user.qzone.qq.com/149550122/infocenter#!app=2&pos=1335101475 启动项管理新增功能:1.增加了搜索线程和搜索时的动画,在第一次初始化时候启动搜索线程,该线程负责 目录启动项,注册表启动项,windows服务,计划任务的搜索,然后保存。当搜索完毕的时候通知主UI更新,并停止动画。

2012-05-03 19:34:10 1686

原创 管家婆系统优化--启动项管理

新进展1.完成了垃圾清理功能模块对浏览器和视频缓存的扫描,支持对IE,360,谷歌,火狐,搜狗,QQ浏览器缓存扫描。视频文件对迅雷,优酷,QQLive和PPlive视频文件缓存扫描。2.增加系统启动模块功能,现在只加了“启动项”的检测,还没有加禁止。一键优化,启动服务项,计划任务等功能还没开始。

2012-04-23 09:23:07 1998 3

原创 管家婆之垃圾清理功能

闲暇之余终于完成了“垃圾清理功”能主要框架和对windows垃圾文件的搜索和清,。浏览器缓存和视频软件存储垃圾文件逻辑还未实现。通过插件系统挂接上“垃圾清理”组件。   垃圾清理主对话框  搜索后结果,现在只完成了对windows垃圾文件搜索,浏览器缓存和视频软件存储垃圾文件

2012-04-15 23:44:19 5838 1

原创 Windows文件系统以及文件粉碎原理

1.1硬盘揭秘:物理存储方式:目前的存储方式有磁存储,电存储,光存储。U盘就是电存储,VCD,DVD光盘用的是光存储,我们计算机用的硬盘就是用的磁存储。各种存储方式在物理存储介质不同外,在逻辑层面上都是基于文件系统结构的方式,也就是用户看到的任何文件数据都是已文件和目录的形式展现在我们面前。 小小历史   1956年9月蓝色巨人IBM想世界展示了第一套磁盘系统IBM350 RA

2012-04-05 16:39:03 14663 15

空空如也

空空如也

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

TA关注的人

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