- 博客(565)
- 资源 (4)
- 收藏
- 关注
原创 跨服通信设计
登陆时客户端知道当前玩家所在区服(一般封装到玩家唯一UID中)当处理跨区服业务逻辑时,如加好友,发邮件等,先根据UID判断玩家是否在本区服中如果不在则向global、center等之类中转服发送消息,通过中转服再将消息发送至对方所在服。...
2020-12-30 17:15:21
339
原创 Linux下使用svn创建仓库
假设已经Linux搭建了svn服务器创建仓库语法:svnadmin create /directory我是在 /data/svnrepos下新建myproject仓库cd /datamkdir svnrepossvnadmin create /data/svnrepos/myproject仓库创建成功以后,会出现一个仓库名字的文件夹 文件夹下面有以下几个文件和目录myproject|-conf|-db|-format|-hooks|-locks|-README.txt其中c
2020-11-12 10:23:31
577
1
原创 C++的编译过程详解
C/C++编译过程C/C++编译过程主要分为4个过程编译预处理编译、优化阶段汇编过程链接程序一、编译预处理(1)宏定义指令,如#define Name TokenString,#undef等。 对于前一个伪指令,预编译所要做的是将程序中的所有Name用TokenString替换,但作为字符串常量的 Name则不被替换。对于后者,则将取消对某个宏的定义,使以后该串的出现不再被替换。(2)条件编译指令,如#ifdef,#ifndef,#else,#elif,#endif等。 这些伪指令的引
2020-10-10 10:37:06
4414
2
转载 TCP的拥塞控制(详解)
在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏,这种情况就叫做网络拥塞。在计算机网络中数位链路容量(即带宽)、交换结点中的缓存和处理机等,都是网络的资源。若出现拥塞而不进行控制,整个网络的吞吐量将随输入负荷的增大而下降。当输入的负载到达一定程度 吞吐量不会增加,即一部分网络资源会丢失掉,网络的吞吐量维持在其所能控制的最大值,转发节点的缓存不够大这造成分组的丢失是拥塞的征兆。TCP的四种拥塞控制算法1.慢开始2.拥塞控制3.快重传4.快恢复假定:1.
2020-10-09 10:04:01
1709
转载 页面置换算法详解(10种)
如果对于虚拟内存,页表,分页等技术还是一知半解的道友可以参考我之前写的一篇博客: 虚拟内存、分页以及页表,建议读者从头往后读,有的页面置换算法是对前面页面置换算法的修改或者性能提升。当发生缺页中断时,操作系统必须在内存中选择一个页面将其换出内存,以便为即将调入的页面腾出空间。1. 最优页面置换算法 此算法不可能实现。在发生缺页中断的时候,在内存中的页面有的很快就会被访问,而有的页面可能要到10、100、1000条指令后才会被访问。此时要置换最迟被访问的页面,把因调用被替换的页面而引起的中断推迟到将
2020-09-30 09:39:10
9690
1
转载 TCP的快速重传机制
一、快速重传机制上一篇讲到了TCP 的超时重传,但是超时重传往往会带来许多微妙的问题,比如说:当一个报文段丢失时,会等待一定的超时周期然后才重传分组,增加了端到端的时延。当一个报文段丢失时,在其等待超时的过程中,可能会出现这种情况:其后的报文段已经被接收端接收但却迟迟得不到确认,发送端会认为也丢失了,从而引起不必要的重传,既浪费资源也浪费时间。幸运的是,由于TCP采用的是累计确认机制,即当接收端收到比期望序号大的报文段时,便会重复发送最近一次确认的报文段的确认信号,我们称之为冗余ACK(duplic
2020-09-30 09:33:19
1653
3
原创 任务7:按钮触发事件(客户端篇)
按钮触发事件实现步骤定义按钮实现脚本方法(要让按钮执行函数一定是public公开的)给按钮挂载box collider和ui button添加gameStart object挂载gameStart脚本ui button中的on click放入game start对象并设置方法...
2020-08-31 16:17:40
252
原创 任务6:事件机制使用范例(客户端篇)
创建study文件夹在文件夹中创建两个C#脚本UserEventEnum脚本定义事件IDEventTest创建事件监听(绑定ID与要执行的函数)EventTest1脚本中实现广播将两个脚本挂载到unity对象中在update函数中进行广播为了先执行监听函数添加处理消息的事件ID添加处理消息的事件函数和监听广播处理消息事件PS:使用事件就不需要在类中创建类去调用函数了,降低了类与类之间的耦合度...
2020-08-31 11:49:24
151
原创 任务4:选择服务器界面(客户端篇)
选择服务器界面效果图插入选择背景图片插入左侧窗口及滚动条面板滚动条面板上加入scroll view插件插入滚动区域图片插入滚动区域文字加入grid布局给item加入drag拖动及碰撞体动态生成各个item去掉重复的调整ui root像机范围完成右侧及中部布局...
2020-08-28 15:37:56
261
原创 任务3:登录界面搭建(客户端篇)
登录界面:插入panel根面板插入背景插入左中右三个面板左面板插入两个label右面板插入注销文字和图片插入开始游戏图片和文字插入区服文字和图片最后插入底部文字
2020-08-28 14:13:35
177
原创 任务2: NGUI插件详解(客户端篇)
NGUI简介:打开框架中的login场景:login场景视图导入NGUI包插入panel面板控件(所有ui都要放在panel面板上)UI根结点缩放类型:label控件sprite控件用于插入背景等图片sprite按钮选择背景图size中设置大小depth设置控件叠放层次notify:挂载脚本某一个对象类中的方法为了使button生效需要插入box collider碰撞体滚动条控件ui grid布局控件...
2020-08-26 17:02:10
249
原创 任务1: 王者荣耀游戏介绍
王者荣耀介绍客户端服务器所用到的技术游戏框架的选用学习开发方法开发软件下载地址Unity 官方下载链接:https://unity3d.com/cn/get-unity/download;VisualStudio官方下载链接:https://visualstudio.microsoft.comVisualStudioCode官方下载链接:https://visualstudio.microsoft.comNodeJS 官方下载链接:https://nodejs.orgThanos游戏
2020-08-26 11:29:03
593
2
原创 微信支付宝SDK接入服务器开发篇
文章目录023 服务器的工程结构024 封装支付事件025 网络模块的封装026 完成辅助类027 支付宝服务器组件的实现028 微信支付服务器029 服务器部署030 对IP使用的详细说明031 客户端支付宝功能的修正032 获取应用签名和测试所有功能023 服务器的工程结构024 封装支付事件025 网络模块的封装026 完成辅助类027 支付宝服务器组件的实现028 微信支付服务器029 服务器部署030 对IP使用的详细说明031 客户端支付宝功能的修正032 获取应用签名和测试
2020-08-18 09:49:17
2893
原创 微信支付宝SDK接入unity的开发篇
013 unity工程结构014 封装C#微信中间件015 支付宝中间件的封装016 完成demo入口场景
2020-08-06 00:31:24
3111
3
原创 9-11 萃取(traits)技术概念、范例等(未归类知识点)
040类型萃取_迭代器萃取#include<iostream>#include<iostream>#include<cstdlib>#include<functional>#include <vector>#include <algorithm>#include <list>using namespace std;template <typename T>void printTraitsI
2020-07-25 16:32:46
225
原创 9-10 可变参数函数、initializer_list、省略号形参(未归类知识点)
039可变参数列表initializer_list和可变参点点点类型#include<iostream>#include<iostream>#include<cstdlib>#include<functional>#include <vector>#include <algorithm>#include<initializer_list>#include<stdarg.h>//...的头文件us
2020-07-25 16:32:09
272
原创 9-9 lambda表达式捕获模式的陷阱分析和展示(未归类知识点)
035lambda常见陷阱_捕获列表中的引用_局部变量超出作用域#include<iostream>#include<iostream>#include<cstdlib>#include<functional>#include <vector>#include <algorithm>#include <ctime>using namespace std;//全局变量,每个元素都是function,每个元素
2020-07-25 16:31:24
565
原创 9-8 lambda表达式,for_each、find_if简介(未归类知识点)
028lambda表达式和捕获列表#include<iostream>#include<cstdlib>using namespace std;class CT{public: int m_i; void myFunction(int x,int y) { auto mylambda01 = [this]()//=或者&默认就有this访问 { return m_i;//因为前面已经有this,访问合法 }; }};int ma
2020-07-25 16:11:21
444
原创 9-7 可调用对象、std function、std bind(未归类知识点)
021可调用对象#include<iostream>#include<cstdlib>using namespace std;void myFunciton(int value){ cout << "myFunciton函数执行了" << endl;}class TESTCLASS{public: void operator()(int value) { cout << "这是类中重载了()运算符的函数执行了" &
2020-07-25 16:09:17
535
2
原创 9-6 详解decltype含义,decltype主要用途(未归类知识点)
014decltype含义和举例_用于推导类型#include<iostream>#include<cstdlib>#include <functional>using namespace std;class CT{public: int i; int j;};int testFunction(){ return 10;}const int&&myfunctionTest(void){ return 0;}i
2020-07-25 16:07:10
2377
原创 9-5 理解auto类型推断,auto应用场合(未归纳知识点)
009auto类型常规推断#include<iostream>#include<cstdlib>#include <boost/type_index.hpp>using namespace std;//显示参数类型,这里不研究boost库template<typename T>void myFunction01(T&tem)//T是类型模板参数,T是有类型的,tem是形参,tem也是有类型的{ using boost::type
2020-07-25 09:23:13
471
原创 9-4 引用折叠,转发、完美转发,forward(未归类知识点)
005引用折叠规则与引用的引用#include<iostream>#include<cstdlib>#include <boost/type_index.hpp>using namespace std;template<typename T>void myFunction01(T &&tem)//T是类型模板参数,T是有类型的,tem是形参,tem也是有类型的{ using boost::typeindex::type_id_
2020-07-25 09:21:40
290
原创 9-3 理解模板类型推断、查看类型推断结果(未归类知识点)
004理解模板类型参数_查看类型推断结果#include<iostream>#include<cstdlib>#include <boost/type_index.hpp>using namespace std;//显示参数类型,这里不研究boost库template<typename T>//void myFunction01(T&tem)//T是类型模板参数,T是有类型的,tem是形参,tem也是有类型的void myFunct
2020-07-25 09:19:54
294
原创 9-2 万能引用universal reference(未归类知识点)
003万能引用#include<iostream>#include<cstdlib>using namespace std;template <typename T>void myFunction(const T&value)//value的类型是const T&{ return;}void myFunction02(int&& tem)//参数是右值引用类型{ cout << "右值引用函数" &l
2020-07-25 09:19:04
236
原创 9-1 函数调用运算符、function类模板(未归类知识点)
001重载()函数对象#include<iostream>#include<cstdlib>using namespace std;void myFunction(int a_i){ cout << "这是我自定义的函数myFunction" << endl; return;}//类实现的功能:返回一个大于等于0的数字,如果小于0,返回0class BiggerThanZero{public: //带一个参数的构造函数 Big
2020-07-12 23:38:16
196
原创 8-8 适配器概念、分类、范例及总结
008适配器#include<iostream>#include<cstdlib>#include<string>#include<vector>#include <memory>#include <set>#include <map>#include <list>#include <array>#include <functional>using namespac
2020-07-12 21:50:18
220
原创 8-7 函数对象回顾、系统函数对象及范例
007可调用队形与标准库中定义的可调用对象#include<iostream>#include<cstdlib>#include<string>#include<vector>#include <memory>#include <set>#include <map>#include <list>#include <array>#include<functional>u
2020-07-12 20:41:36
185
原创 8-6 算法概述、内部处理、使用范例
006算法概述与一些典型的算法应用举例#include<iostream>#include<cstdlib>#include<string>#include<vector>#include <memory>#include <set>#include <map>#include <list>#include <array>#include<algorithm>usi
2020-07-12 20:40:29
426
原创 8-5 迭代器的概念和分类
005迭代器概述与迭代器分类#include<iostream>#include<cstdlib>#include<string>#include<vector>#include <memory>#include <set>#include <map>#include <list>#include <array>using namespace std;//(3)验证迭代器所属种
2020-07-12 20:39:32
270
原创 8-4 分配器概述、使用,工作原理说
004分配器的概念和一个简单分配器原理核心代码#include<iostream>#include<cstdlib>#include<string>#include<vector>#include <memory>#include <list>using namespace std;int main(void){ //list<int, std::allocator<int>>myLis
2020-07-12 20:38:04
1029
原创 8-3 容器的说明和简单应用例续
003deque和stack一些常见的容器#include<iostream>#include<cstdlib>#include<string>#include<vector>#include <memory>#include<queue>#include<map>#include <set>#include <unordered_set>using namespace std;
2020-07-12 20:37:21
146
原创 8-2 容器分类,array、vector容器精解
001容器分类和array容器的使用#include<iostream>#include<cstdlib>#include<string>#include<vector>#include <memory>#include <array>using namespace std;int main(void){ //包含5个元素的数组 array<string, 5>mystring = { "fsdfd
2020-07-11 00:46:31
194
原创 8-1 STL总述、发展史、组成,数据结构谈
000STL概述/* * (1)一些概念 * 1.c++标准库 standard library c++编译器自带,可以在代码中包含头文件直接使用。 * 引入的目的就是解决一些反复使用的功能,我们直接使用即可。 * 2.c++标准模板库,STL=standard template library。包含在c++标准库中,是c++标准库的核心。 * STL深刻影响着c++标准库 * 3.泛型编程 generic programming 使用模板template为主要的编程手段来编写代码。 *
2020-07-11 00:44:53
249
原创 6-13 补充知识、线程池浅谈、数量谈、总结
一:补充知识1.1、虚假唤醒: wait中要有第二个参数(lambda)并且这个lambda中要正确判断要处理的公共数据是否存在;wait(),notify_one(),notify_all()1.2、atomic+=是原子操作,a=a + 1不是cout<<atm<<endl; //读atm是个原子操作,但是整个这一行代码并不是个原子操作;atomic atm;atm = 0;auto atm2 = atm; //这种定义时初始化操作不允许,显示”尝试引用已删除的函
2020-07-09 15:13:48
174
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅