• 等级
  • 359755 访问
  • 140 原创
  • 27 转发
  • 8397 排名
  • 137 评论
  • 106 获赞

redis网络通信模块源码分析

redis网络通信模块源码分析 作者 张小方,文章版权所有,转载请保留文章版权信息并注明出处。 导读 时下的业界,相对于传统的关系型数据库,以key-value思想实现的nosql内存数据库也是非常流行,而提到内存数据库,很多人第一反应就是redis。确实,redis以其高效的性能和优雅的实现成为众多内存数据库中的翘楚。前面章节介绍了单个服务器的基本结构,这个章节我们再来一个实战演习,即以redi...

2018-10-12 10:52:43

『腾讯后台开发』实习生技能要求

一、操作系统方面 1. 多线程相关与线程之间同步技术 熟练使用(但不局限于)以下linux API linux下的线程创建、等待、获取线程id int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg); int pthread_...

2018-08-20 23:47:39

从零学习游戏服务器开发(四)LogServer源码探究

这是从零学习开源项目的第四篇,上一篇是《从零学习开源项目系列(三) CSBattleMgr服务源码研究》,这篇文章我们一起来学习LogServer,中文意思可能是“日志服务器”。那么这个日志服务器到底做了哪些工作呢?我们在Visual Studio中将LogServer设置为启动项,然后按F5将LogServer启动起来,启动成功后显示如下图:从上图中,我们可以到大致做了三件事:1. 创建一个侦听...

2018-05-23 10:52:03

从零实现一款12306抢票软件

写在前面的话每年逢年过节,一票难求读者肯定不陌生。这篇文章,我们带领读者从零实现一款12306刷票软件,其核心原理还是通过发送http请求模拟登录12306网站的购票的过程,最后买到票。关于http请求的格式和如何组装http数据包给服务器发送请求,我们在上一篇文章《从零实现一个http服务器》中已经详细介绍过了,如果还不明白的朋友可以去那篇文章看下。郑重申明一下:这里介绍的技术仅供用于学习,不可...

2018-05-21 12:10:03

从零实现一个http服务器

我始终觉得,天生的出身很重要,但后天的努力更加重要,所以如今的很多“科班”往往不如后天努力的“非科班”。所以,我们需要重新给“专业”和“专家”下一个定义:所谓专业,就是别人搞你不搞,这就是你的“专业”;你和别人同时搞,你比别人搞的好,就是“专家”。说到http协议和http请求,很多人都知道,但是他们真的“知道”吗?我面试过很多求职者,一说到http协议,他们能滔滔不绝,然后我问他http协议的具...

2018-05-18 12:44:42

从零学习游戏服务器开发(三) CSBattleMgr服务源码研究

如上图所示,这篇文章我们将介绍CSBattleMgr的情况,但是我们不会去研究这个服务器的特别细节的东西(这些细节我们将在后面的文章中介绍)。阅读一个未知的项目源码如果我们开始就纠结于各种细节,那么我们最终会陷入“横看成岭侧成峰,远近高低各不同”的尴尬境界,浪费时间不说,可能收获也是事倍功半。所以,尽管我们不熟悉这套代码,我们还是尽量先从整体来把我,先大致了解各个服务的功能,细节部分回头我们再针对...

2018-05-17 10:44:07

从零学习游戏服务器开发(二) 最后一战概况

这份代码我也是无意中来自一个朋友,据他说也是来源于互联网,服务器端代码原来是linux版本的,但被厉害的大神修改成可以在Windows上运行。(如果不小心侵犯了您的版权,请联系我删除)。好在,这份代码中使用的大多数方法和接口都是可以跨Windows和linux两个平台的,所以linux开发下的朋友请不要感到不适,我们学习这份代码更多的不是纠结细节而是学习思路和源码。游戏主solution文件用Vi...

2018-05-15 10:44:43

从零学习游戏服务器开发(一) 从一款多人联机实时对战游戏开始

写在前面的话      经常有学生或者初学者问我如何去阅读和学习一个开源软件的代码,也有不少朋友在工作岗位时面对前同事留下的项目,由于文档不完善、代码注释少、工程数量大,而无从下手。本文将来通过一个多人联机实时对战游戏——最后一战,来解答以上问题。      其实,我以上问题在我是一个学生时,我也同样因此而困惑,但是后来,我发现,对于文档缺失、注释缺失的项目,需要自己摸索,虽然是挑战,同时也是机遇...

2018-05-15 10:43:55

理解Java Integer的缓存策略

本文将介绍 Java 中 Integer 缓存的相关知识。这是 Java 5 中引入的一个有助于节省内存、提高性能的特性。首先看一个使用 Integer 的示例代码,展示了 Integer 的缓存行为。接着我们将学习这种实现的原因和目的。你可以先猜猜下面 Java 程序的输出结果。很明显,这里有一些小陷阱,这也是我们写这篇文章的原因。12345678910111213141516171819202...

2018-04-26 16:34:17

将NULL指针赋值给std::string变量导致程序崩溃

如题:如上图,但是我们还会经常写这样的代码,例如我的flamingo中有代码如下(已经修正):位于queryresult.cpp中如果fields[i].name为NULL的话,程序将崩溃。备忘一下,以后将char*类型赋值给std::string类型一定记得检测一下是否为空指针。...

2018-04-26 14:44:35

用Android Studio进行NDK编程入门实例

参考了网上各种教程,跌跌撞撞最终才把流程走通,特此记录一下:有必要先交代下开发环境:操作系统:Win7Android Studio 3.0.1gradle 3.0.1首先,新建一个Android项目,然后在MainActivity的布局文件activity_main.xml文件中新增一个测试按钮,按钮id是btnTest,效果如下所示:然后在新增一个java类,包名是:package com.ct...

2018-04-17 20:04:15

解决无法链接GetFileVersionInfoSize、GetFileVersionInfo或VerQueryValue

xsvrDlg.obj : error LNK2019: unresolved external symbol _GetFileVersionInfoSizeW@8 referenced in function "public: int __thiscall CXsvrDlg::_UI_SetProductInfo(void)" (?_UI_SetProductInfo@CXsvrDlg@@QAE...

2018-04-10 13:33:37

这些年一直记不住的 Java I/O

阅读目录参考资料前言从对立到统一,字节流和字符流从抽象到具体,数据的来源和目的从简单到丰富,使用 Decorator 模式扩展功能Java 7 中引入的 NIO.2NIO.2 中的异步 I/O总结回到顶部参考资料  该文中的内容来源于 Oracle 的官方文档。Oracle 在 Java 方面的文档是非常完善的。对 Java 8 感兴趣的朋友,可以从这个总入口 Java SE 8 Document...

2018-04-02 22:27:36

Java String转byte数据长度不对

今天,在用Java设计一个网络通信协议时,将一个String通过其getBytes()方法转换成byte[]时,其长度不对,记录一下。byte[] byte1 = new byte[50]; String str = new String(byte, 0, 50); //此时byte1.length不等于byte2.length byte[] byte2 = str.getBytes();原

2018-03-18 13:39:20

2018年年初的面试经验谈

说下我的面试经验吧,都是亲身经历,不喜勿喷:我去年12月份从上一家公司离职,一直到今年3月份,基本上都在面试中度过来的。先交代下背景:坐标上海,做技术开发,我本人面试的职位是linux服务器开发,最倾向的职位是服务器开发主程或技术经理。我本人也是上几家公司的面试官,因为接下来几年面临着成家养小孩,技术上也到了瓶颈期,虽然拿了不少offer,但是想综合比对一下,于是就参加了很多的面试。我先后去了如下...

2018-03-15 13:57:46

金山卫士开源代码

自从金山卫士的代码部分开源以来,基于它出现了各种软件,有侧重界面库的,如SOUI,有侧重电脑安全管理的,下面是我维护的版本的部分截图:主界面垃圾清理ARP防火墙隐私保护器对于广大开发者尤其是广大做Windows安全方面的朋友来说,这套代码具有很大的借鉴意义,至少我们可以知道那些所谓的“电脑管家”到底对我们的电脑做了什么事情。代码下载地址:关注我的微信公众号『easyserverdev』,然后回复『...

2018-03-14 22:10:49

Gh0st源码分析(一)——Ghost简介和编译

     相信很多人都听说过Gh0st这款软件,它和灰鸽子等软件一样是十多年前安全方面的代表。本人有幸拿到一款Gh0st软件的源码,经我的改造,修正大量bug,终于让这款软件能在现在的Windows操作系统上正常运行。虽然,很多做法在新的操作系统中已经过时或者没有必要,但是其软件的架构原理、过杀毒软件的设计思路和许多经典的做法,非常值得我们学习,尤其是对Windows客户端开发的朋友来说,绝对是提...

2018-02-15 16:20:30

git合并远程仓库上的提交记录

有时候,我们用git提交代码时,因为我们的疏忽,会导致同一个问题,修改多次,因为反复提交多次,最终稳定下来,我们想把git上这些不成熟的提交记录合成一个终极记录。例如:git上依次有如下提交(按提交时间从新到旧):提交记录k提交记录m提交记录n4提交记录n3提交记录n2提交记录n1提交记录p提交记录q现在,我们想将提交记录n1~n4合并成一个提交记录n,怎么办呢?首先我们输入:git log 查看

2018-01-31 17:59:30

centos7 cannot find -lstdc++ 错误

解决CentOS 7 中,make源文件时出现 /usr/bin/ld: cannot find -lstdc++ 错误在CentOS 7中,使用static方法编译,需要安装static version of glibc-static libstdc++-static。使用如下命令安装yum install glibc-static libstdc++-static文章来源:https://ji

2018-01-13 20:43:06

git分支管理

git分支确实是一个非常好的东西,先看一个截图吧:这个图其实是很有讲究的,其中历史上的工作顺序是从C0->C1->C2->...->C13。下面开始正式备忘一下git与分支有关的记录。首先,需要明确的一个概念是无论是远程仓库还是本地仓库,git会自动将这个仓库命名成origin,默认会有一个主分支,叫master,所以引用origin仓库中master分支可以表示成orig...

2018-01-09 21:26:22

博客专家

analogous_love

关注
  • 湖北省 武汉市
奖章
  • 博客专家
  • 专栏达人
  • 持之以恒