08 2018 档案
摘要:https://www.cnblogs.com/HemJohn/p/5447683.html https://blog.codingnow.com/2016/03/skynet_tcp_package.html https://blog.codingnow.com/2015/01/skynet_ne
阅读全文
摘要:nodejs+mongodb https://blog.csdn.net/jessonlv/article/details/22718121 https://cnodejs.org/topic/5878f7d39f92195c1bf9ff40 Mongodb 与 MySQL对比
阅读全文
摘要:硬环境 CPU 内存的重要性 硬盘 RAID 操作系统的选择 不同的文件系统对数据库性能的影响 软环境 大量并发的处理 这涉及到使用进程池或线程池实现高效的并发模式(半同步/半异步和领导者/追随者模式),以及高效的逻辑处理方式--有限状态机 内存的规划使用 比如使用内存池,以空间换时间,被事先创建好
阅读全文
摘要:B+树由B树和索引顺序访问方法演化而来。 B+树是为磁盘或其他直接存取辅助设备设计的一种平衡查找树。 在B+树中,所有记录节点都是按键值的大小顺序存放在同一层的叶子节点上,由各叶子节点指针进行连接。 https://www.sohu.com/a/156886901_479559 MySQL技术内幕(
阅读全文
摘要:MySQL是单进程多线程,而Oracle等是多进程。 一般来说,关键的生产DBMS应该运行在自己的专用服务器上。 mysql包括 DBMS数据库管理系统(实例) 数据库(容器) 在mysql数据库中,实例与数据库的关系通常是一一对应的,但是,在集群情况下可能存在一个数据库被多个数据实例使用的情况。
阅读全文
摘要:查cpu cat /proc/cpuinfo | grep "physical id" | uniq | wc -l cat /proc/cpuinfo | grep "cpu cores" | uniq cat /proc/cpuinfo | grep 'model name' |uniq cat
阅读全文
摘要:redis数据库每个键值对都是由对象组成 数据库键总是一个字符串对象; 而数据库键的值则可以是字符串对象、列表对象、哈希对象、集合对象,有序集合对象。 字符串 redis没有直接使用c语言传统字符串,而是自己构建了一种名为简单动态字符串(SDS)的抽象类型。主要是为了解决'\0'的问题。 struc
阅读全文
摘要:RPC(Remote Procedure Call)—远程过程调用,RPC使得开发包括网络分布式多程序在内的应用程序更加容易。 https://blog.csdn.net/world6/article/details/79114105?from=timeline https://www.cnblog
阅读全文
摘要:翻译自:https://developers.google.com/protocol-buffers/docs/overview Protocol buffers是什么? Protocol buffers是一款灵活、高效、自动化的数据描述语言。类似于XML能够将结构化数据序列化,但比XML更小,更快
阅读全文
摘要:例子最好看这里 https://www.cnblogs.com/yinheyi/p/6081500.html 之前我翻译过两篇关于protocol buffers的文章:《protocol buffers简单介绍》《在Python中使用protocol buffers参考指南》 后来想想,现在自己是
阅读全文
摘要:https://www.cnblogs.com/youngerchina/p/5624453.html
阅读全文
摘要:AVL树得名于它的发明者。 AVL树是带有平衡条件的二叉查找树。这个平衡条件必须要容易保持,而且它须保证树的深度是O(logN)。 查找、插入和删除在平均和最坏情况下都是O(log n)。增加和删除可能需要通过一次或多次树旋转来重新平衡这个树。 AVL树本质上还是一棵二叉搜索树(因此读者可以看到我后
阅读全文
摘要:堆排序与快速排序,归并排序一样都是时间复杂度为O(N*logN)的几种常见排序方法。 堆排序是就地排序,辅助空间为O(1)。 它是不稳定的排序方法。(排序的稳定性是指如果在排序的序列中,存在前后相同的两个元素的话,排序前 和排序后他们的相对位置不发生变化) 先说说什么是堆,堆通常是一个可以被看做一棵
阅读全文
摘要:一个简单的例子: ctrl+c 1 信号本质 软中断信号(signal,又简称为信号)用来通知进程发生了异步事件。在软件层次上是对中断机制的一种模拟,在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。信号是进程间通信机制中唯一的异步通信机制,一个进程不必通过任何操作来等待信号的到
阅读全文
摘要:如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。 ⑵
阅读全文
摘要:服务器如何知道客户端异常断开连接? 心跳: 在服务器端可以采用SetSockOpt来设置keepalive属性,同时修改注册表,这样出现客户端异常退出的时候,服务器端就能够知道,并且上报应用层 time_wait状态与FIN状态 首先启动socket服务端,然后用客户端进行连接,用netstat –
阅读全文
摘要:grep查找, sed 编辑, awk 根据内容分析并处理. grep(关键字: 截取) 文本搜集工具, 结合正则表达式非常强大 awk(关键字:分析&处理) 一行一行的分析处理 sed(关键字: 编辑) 以行为单位的文本编辑工具 sed可以直接修改档案 sed 是一种新型的,非交互式的编辑器。它能
阅读全文
摘要:现在的网游更新很快,要延长网络游戏生命周期的方法是,更新,不断地更新,不断的将新内容呈现于玩家面前。这要求游戏程序的设计要有弹性,代码的重用至关重要。 今天就说说游戏中的工厂模式。 说到工厂模式,有简单工厂模式,工厂方法模式,抽象工厂模式。 (一)简单工厂模式 ps:面向对象的编程,并不是类越多越好
阅读全文
摘要:游戏中用到单例模式的例子很多,几乎适用于系统资源管理类中,如聊天,道具,日志等等。 单例模式(Singleton),保证了全局有且只有一个实例对象,保证自动地初始化该对象,使得程序在任何时候任何地方都可以访问、获取该对象。 通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。
阅读全文
摘要:使用_CrtSetDbgFlag https://blog.csdn.net/foreverhuylee/article/details/37922981 https://blog.csdn.net/chenyujing1234/article/details/8075667
阅读全文
摘要:时间复杂度 最理想 O(nlogn) 最差时间O(n^2) 像合并排序一样,快速排序也是基于分治模式的。下面是对一个典型子数组A[p..r]排序的分治过程的三个步骤: 分解: 数组A[p..r]]被划分成两个(可能空)子数组A[p..q-1]和A[q+1..r],使得A[p..q-1]中的每个元素都
阅读全文
摘要:lua中可以通过修改元表元方法来实现面向对象。 而table中的self相当于this。 lua中的table就是一种对象。 首先,table与对象一样可以拥有状态。 其次,table也与对象一样拥有一个独立于其值的标识(一个self)。 最后,table与对象一样具有独立于创建者和创建地的生命周期
阅读全文
摘要:之前写了一些链表和排序的blog,其中有说到多链表,堆,其中提到了一种特殊的数据结构:树。 人们发明树结构,用于储存和搜索海量的数据。 树的种类 无序树:树中任意节点的子结点之间没有顺序关系,这种树称为无序树,也称为自由树; 有序树:树中任意节点的子结点之间有顺序关系,这种树称为有序树; 二叉树:每
阅读全文
摘要:红黑树(Red Black Tree) 是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。 红黑树和AVL树类似,都是在进行插入和删除操作时通过特定操作保持二叉查找树的平衡,从而获得较高的查找性能。 它虽然是复杂的,但它的最坏情况运行时间也是非常良好的,并且在实践
阅读全文
摘要:https://www.cnblogs.com/bangerlee/archive/2011/10/03/2198347.html https://blog.csdn.net/oneday_789/article/details/76718463
阅读全文
摘要:C+11的标准规范于2011年2月正式落稿,而此前10余年间,C++正式标准一直是C++98/03。相比C++98/03,C++11有了非常多的变化。 包括大量的新特性:主要特征像lambda表达式和移动语义,实用的类型推导关键字auto,更简单的容器遍历方法,和大量使模板更容易使用的改进。 C++
阅读全文
摘要:锁机制用于管理对共享资源的并发访问。 行级锁 行级锁只在存储引擎层实现,在服务器层没有实现。 https://www.cnblogs.com/chenqionghe/p/4845693.html https://www.cnblogs.com/luyucheng/p/6297752.html htt
阅读全文
摘要:Redis由于支持非常丰富的内存数据结构类型,如何把这些复杂的内存组织方式持久化到磁盘上是一个难题,所以Redis的持久化方式与传统数据库的方式有比较多的差别,Redis主要支持下面两种持久化方式,分别是: 定时快照方式(RDB) 基于语句追加文件的方式(AOF) Redis 还可以同时使用 AOF
阅读全文
摘要:进程间通信(IPC,Inter-Process Communication)指至少两个进程或线程间传送数据或信号的一些技术或方法。 进程是计算机系统分配资源的最小单位(严格说来是线程)。每个进程都有自己的一部分独立的系统资源,彼此是隔离的。为了能使不同的进程互相访问资源并进行协调工作,才有了进程间通
阅读全文
摘要:当你把业务拆分到多个服务中去后,数据如何共享,可能是最易面临的问题。 最简单粗暴的方法是通过消息传递数据。如果 A 服务需要 B 服务中的数据,可以由 B 服务发送一个消息,将数据打包携带过去。如果是一份数据,很多地方都需要获得它,那么用一个服务装下这组数据,提供一组查询接口即可。DataCente
阅读全文
摘要:https://blog.csdn.net/samlty2/article/details/51612108/ https://github.com/gitlabhq/gitlabhq http://www.aqee.net/post/gitlab-isnt-really-open-source.h
阅读全文
摘要:https://www.cnblogs.com/lsm19870508/p/6924396.html
阅读全文
摘要:对象模型 和c不同,c是将数据和处理数据的函数分开的(数据流过程决定函数编写,过程式的);而c++把数据和处理数据的方法关联在了一起(对象发起动作,操纵数据)。那么像class一样将数据和方法包含在一起,甚至再用上模板是否会增加布局成本呢? C++对象模式 在C++中,有两种类成员数据:static
阅读全文
摘要:关键词explicit之所以被导入这个语言,就是为了提供给程序员一种方法,使他们能够制止“单一参数的构造函数”被当做一个转换运算符。 默认构造函数的构建操作 以下四种情况类会被生成“有用的”默认构造函数 a.一个带有默认构造函数的成员对象类 合成的默认构造函数是以inline的方式完成的,如果函数太
阅读全文
摘要:开始前先看看 class X {}; class Y:public virtual X {}; class Z:public virtual X {}; class A:public Y,public Z {}; 上述X,Y,Z,A中没有任何一个class内含明显的数据,其间只表示了继承关系。 按照
阅读全文
摘要:纯虚函数 虚函数是为了重载和多态的需要,子类中可以重写或不重写该函数;纯虚函数在基类中是没有定义的,必须在子类中加以实现,很像Java中的interface。 纯虚函数引入原因:在很多情况下,基类本身生成对象是不合情理的。例如,动物作为一个基类可以派生出老虎、孔雀等子类,但动物本身生成对象明显不合常
阅读全文
摘要:C++的一件困难事情:不太容易从程序代码看出表达式的复杂度。 执行期语意学,即在程序执行时,编译器产生而外的指令调用,确保对象的构造,内存的释放,以及类型转换与临时对象的生成的安全进行。 对象的构造和析构 一般而言,我们会把对象尽可能放置在使用它的那个程序区段附近,这样做可以节省不必要的对象产生操作
阅读全文
摘要:template 在C++发明阶段,C++之父Stroustrup和贝尔实验室的C++小组对原先的宏方法进行了修订,对其进行了简化并将它从预处理范围移入了编译器。这种新的代码替换装置被称为模板,而且它变现了完全不同的代码重用方法:模板对源代码重用,而不是通过继承和组合重用对象代码。当用户使用模板时,
阅读全文
摘要:定义抽象的concepts,并根据抽象的concepts来撰写算法与数据结构,是泛型编程的本质。 运用STL时的几个最重要的观念: 1.所谓使用STL,就是去扩充它。 2.STL的算法和容器是独立分离的。 3.无须继承。 4.抽象化并不意味效率低。 STL所实现的,是依据泛型思维架设起来的一个概念结
阅读全文
摘要:Allocator译为空间配置器而不是内存配置器,是因为空间也可以是磁盘或其它辅助介质。 考虚到小型区块所可能造成的内存破碎问题,SGI设计了双层级配置器,第一级配置器直接使用malloc()和free(),第二级配置器则视情况采用不同的策略:当配置区块超过128bytes时,视之为“足够大”,便调
阅读全文
摘要:《设计模式》中Iterator模式定义为:提供一种方法,使之能够依序巡访某个聚合物(容器)所含的各个元素,而又无需暴露该聚合物的内部表述方式。 智能指针 迭代器是一种行为类似指针人对象。而指针的各种行为中最常见也最重要的便是内容提领(*)和成员访问(->),迭代器最重要的编程工作就是对这两个操作进行
阅读全文
摘要:STL容器分两种:序列式容器,关联式容器。 上图以内缩方式来表达基层与衍生层的关系。 heap内含一个vector,priority-queue内含一个heap、stack和queue都含一个deque,set/map/multiset/multimap都内含一个RB-tree,hash_x都内
阅读全文
摘要:所有泛型算法的前两个参数都是一对迭代器,通常称为first和last,用以标示算法的操作区间。STL习惯采用前闭后开区间,写成[first,last),表示区间涵盖first至last(不含last)之间的所有元素。当first==last时,上述所表现的便是一个空区间。 参考:《STL源码剖析》
阅读全文
摘要:仿函数其实上就是一个“行为类似函数”的对象。仿函数可以让STL算法有更灵活的演出。 c++11中已经引入lamda表达式,相当于将这部分内容加入了语法。
阅读全文
摘要:配接器在STL组件的灵活组合运用功能上,扮演着轴承、转换器的角色。Adaper这个概念,事实上是一种设计模式。在《设计模式》中adapter定义如下:将一个class的接口转换为另一个class的接口,使原本因接口不兼容而不能合作的classes,可以一起运作。 配接器分为 function ada
阅读全文
摘要:Linux作为首选的服务器操作系统,它有非常明显的优势。我们强烈建议在发布环境使用Linux系统。 那我们在Linux下如何配置,可以使引擎的性能最大化? socket_optimization.sh #!/bin/bash # set ulimit limit() { echo "ulimit -
阅读全文
摘要:https://github.com/tensorflow/tensorflow http://www.eefocus.com/component/374208/r0
阅读全文
摘要:ZeroMQ 是一个很有个性的项目,它原来是定位为“史上最快消息队列”,所以名字里面有“MQ”两个字母,但是后来逐渐演变发展,慢慢淡化了消息队列的身影,改称为消息内核,或者消息层了。从网络通信的角度看,它处于会话层之上,应用层之下,有了它,你甚至不需要自己写一行的socket函数调用就能完成复杂的网
阅读全文
摘要:相对于skynet,KBEngine提供了完整的组件方案。 Loginapp 登录验证、注册、Client的接入口。 Baseapp 通过Loginapp分配过来的Client会与Baseapp保持连接,完成客户端与服务端的交互。 定时把Entity的数据保存进数据库。 Baseapp之间会进行互相
阅读全文
摘要:有哪些开源? KBEngine《暗黑战神》 最后一战 pomelo skynet muduo GoWorld 服务引擎要实现什么? 核心两个问题:消息的pipeline与游戏世界状态维护。 网络: 定义client到server、server到client、server到server的消息流。 我们
阅读全文
摘要:测试到达目的主机的网络是否连接,但ping无法检查系统端口是否开放 ping www.google.com telnet可以检查某个端口是否开放 telnet ip_addr:port traceroute 是用来检测发出数据包的主机到目标主机之间所经过的网关数量的工具。traceroute 的原理
阅读全文
摘要:make cmake CMake是一个比make更高级的编译配置工具,它可以根据不同平台、不同的编译器,生成相应的Makefile或者vcproj项目。通过编写CMakeLists.txt,可以控制生成的Makefile,从而控制编译过程。CMake自动生成的Makefile不仅可以通过make命令
阅读全文