
笔记
未来的老公
这个作者很懒,什么都没留下…
展开
-
aes cbc示例代码 c
void encrypt(const unsigned char *in, int in_len, unsigned char *out, int *out_len){ int ret; unsigned char ivec[16] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0A, 0x0B, 0x0C, 0x0D, 0x0E, 0...原创 2020-09-04 20:04:59 · 578 阅读 · 0 评论 -
aes cbc的示例代码python版本
参考:https://www.cnblogs.com/xuchunlin/p/11421795.htmliv使用了bytes类型key直接是string# -*- coding=utf-8-*-import timeimport jsonimport socketfrom Crypto.Cipher import AESimport base64"""测试代码 """class AESUtil: __BLOCK_SIZE_16 = BLOCK_SIZE_16 = A原创 2020-09-02 15:04:59 · 205 阅读 · 0 评论 -
动态扩缩容/容灾的一点思考
当下,越来越多的业务场景,由于规模的扩大,基本都使用了分布式架构。.分布式架构的服务模型:基于请求key,通过路由算法(随机、取模、一致性hash)选取服务节点,完成逻辑处理后返回结果。服务器服务分为有状态服务和无状态服务。所谓无状态,就是一次请求一次处理结果,不存在中间态,没有缓存数据。而有状态则是某一次的请求依赖上一次请求处理的中间结果,比如游戏业务中的某次玩家操作必然依赖于登录请求等。静态扩缩容不论是否有状态,均可以支持。动态扩缩容节点宕机与恢复属于动态扩缩容的范畴,宕机缩容,恢复扩容原创 2020-07-28 21:37:35 · 724 阅读 · 0 评论 -
TCP/UDP
tcphttps://blog.youkuaiyun.com/sinat_36629696/article/details/80740678udphttps://blog.youkuaiyun.com/china_jeffery/article/details/78923428重点摘录为什么tcp需要3次握手其实理由同4次挥手,只不过服务器将确认ack和请求syn合并了而已,所以是3次为什么tcp需要4次挥手因为双端是各自关闭的,当客户端断开,服务器确认后客户端关闭,服务器可能还有数据未发完,所以等服务器也发完原创 2020-07-24 16:47:33 · 134 阅读 · 0 评论 -
共享内存
定义共享内存指 (shared memory)在多处理器的计算机系统中,可以被不同中央处理器(CPU)访问的大容量内存。由于多个CPU需要快速访问存储器,这样就要对存储器进行缓存(Cache)。任何一个缓存的数据被更新后,由于其他处理器也可能要存取,共享内存就需要立即更新,否则不同的处理器可能用到不同的数据。共享内存是 Unix下的多进程之间的通信方法 ,这种方法通常用于一个程序的多进程间通信,实际上多个程序间也可以通过共享内存来传递信息。以上摘自百科。一点个人理解共享内存是可以独立于进程存在的,可原创 2020-07-24 10:31:05 · 1214 阅读 · 0 评论 -
io模型
阻塞io启动io后,阻塞,知道结果回来。比如文件的read、write。非阻塞io启动io后,直接让出cpu时间片,不阻塞,后续通过询问是否已完成,然后去拿结果。多路复用io我理解上的多路复用,通过管理多个io句柄,哪个句柄有事件到达就执行哪个句柄的读取。典型的三种模型:select poll epollselect的几大缺点:(1)每次调用select,都需要把fd集合从用户态拷贝到内核态,这个开销在fd很多时会很大(2)同时每次调用select都需要在内核遍历传递进来的所有fd,这个原创 2020-07-24 10:13:00 · 72 阅读 · 0 评论 -
前台进程和后台进程
首先他们都是进程,同样的二进制可执行文件可以使用两种方式运行。区别:前台进程会阻塞用户界面,也就是说,他的父进程是用户界面进程。后台进程则没有用户界面,父进程是系统默认的1号进程。后台进程的启动方式有以下两种。1 可以使用./exe &2 fork后父进程退出...原创 2020-07-23 18:42:21 · 676 阅读 · 0 评论 -
死锁
死锁定义死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。死锁的4个必要条件1)互斥条件:指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其它进程请求资源,则请求者只能等待,直至占有资源的进程用毕释放。2)请求和保持条件:指进程已经保持至少一个资源,但又提出了新的资源请求,而该资源已被其它进程占有,此时请原创 2020-07-23 17:15:56 · 178 阅读 · 0 评论 -
虚拟内存管理
定义虚拟内存是计算机系统内存管理的一种技术。它使得应用程序认为它拥有连续的可用的内存(一个连续完整的地址空间),而实际上,它通常是被分隔成多个物理内存碎片,还有部分暂时存储在外部磁盘存储器上,在需要时进行数据交换。我的理解进程实例在用户态并不直接操作物理内存地址,实际物理内存是可能是零散的,用户管理起来绝对要疯,所以,用户可见的实际上是一段连续的虚拟地址空间。并且,虚拟内存遵循用到时才申请的原则,不会说你开辟了G级空间,就需要分配G级物理内存。int main(){ char* test原创 2020-07-23 16:33:34 · 192 阅读 · 0 评论 -
僵尸进程与孤儿进程
僵尸进程与孤儿进程有本质区别。这两种进程均是针对子进程而言。僵尸进程是子进程没了,但是父进程没感知到,残留的进程信息(当父进程退出,僵尸进程资源会同时返还)。孤儿进程是父进程没了,子进程有1号进程接管,实际上和普通进程没什么分别僵尸:int main(){ int pid = 0; if(pid == fork()) { exit(0); } else { } while(true)原创 2020-07-23 15:39:42 · 148 阅读 · 0 评论 -
协程
定义协程不是进程或线程,其执行过程更类似于子例程,或者说不带返回值的函数调用。一个程序可以包含多个协程,可以对比与一个进程包含多个线程,因而下面我们来比较协程和线程。我们知道多个线程相对独立,有自己的上下文,切换受系统控制;而协程也相对独立,有自己的上下文,但是其切换由自己控制,由当前协程切换到其他协程由当前协程来控制。协程的特点:与线程有几点不同1 线程调度由内核完成,而协程完全处于用户态2 线程拥有自己的线程资源和执行栈,各线程互不干扰,而协程则更像一个函数,主要通过保存函数栈和恢复函数栈来原创 2020-07-23 15:28:36 · 108 阅读 · 0 评论 -
线程
定义线程(英语:thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在Unix System V及SunOS中也被称为轻量进程(lightweight processes),但轻量进程更多指内核线程(kernel thread),而把用户线程(user thread)称为线程。线程的几种状态1、TASK_RUNNING:进程当前正在运行,或者正在运行队列中等待原创 2020-07-23 14:39:41 · 89 阅读 · 0 评论 -
进程简述
定义狭义定义:进程是正在运行的程序的实例(an instance of a computer program that is being executed)。广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。进程的概念主要有两点:第一,进程是一个实体。每一个进程都有它自己的地址空间,一般情况下,包括文本区域(text region)、数据区域(data region)和堆栈(stac原创 2020-07-23 14:07:10 · 301 阅读 · 0 评论 -
游戏后台任务系统
前言 本篇纯做总结用吧一般而言,任务都是由行为事件触发,再借助条件判断来实现的,今天只想聊聊任务本身.任务从功能看有新手引导任务,主支线任务,日常任务,成就任务,团队任务,活动任务这几种。不同的任务类型在实现上会有小小的差别,这个后面再讲。先来说任务的配置**加粗样式**任务一般会有接取条件,完成条件,完成奖励,周期性配置(比如日常),有些甚至还会有完成后行为,不一而足。我比较反对将所有任务配置到一张表,一般多的话,一个游戏里的任务都会有上千条,表格可读性会变差,热更也容易造成影响的扩大原创 2020-07-05 08:57:34 · 1444 阅读 · 0 评论