黄小华的个人网站
熬过无人问津的日子才有诗和远方!
学习总结
看了哪些功能 有哪些收获,哪些问题 整理记录一下 先简单了解client_rpc模块的创建角色,role模块init回调函数 role_data_convert模块的数据版本转换 role_rpc模块,mapping模块的协议映射,怎么实现调用其他模块的逻辑, 看了item_rpc模块,...
2021-04-20
erlang阶段学习总结
%%%------------------------------------------------------------------- %%% @author hxh %%% @copyright 2021, SY %%% Created : 2021 3月 27 9:59 %%%-----...
2021-03-31
gen_server和gen_fsm
一. 相同点(特点): 启动进程通信 gen_server和gen_fsm都是通过gen模块来启动一个持续recv的进程,监听着进程外给自己发送的消息,或者是自己给自己发送的消息。 维护消息队列(消息邮箱) gs和gf都维护了一个消息邮箱,类似于消息队列的数据结构,存储着进程收到的所有消息。在消息...
2021-03-23
Erlang基本数据结构
整数 Integer     Erlang可表示任意大的整数,大整数自动转换成bignums类型,比固定大小的整数类型相对效率较低。     16#2A 其中2A是一个16进制的数。如:2#1010是二进制。     $Character 表示字符的ASCII码。如:$a = 97  $\...
2021-03-09
回朔法总结之组合,全排列,子集
1 子集 给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集) class Solution { List<List<Integer>> res = new ArrayList<>(); public List<Lis...
2020-11-28
背包问题
1 01背包 有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。 第 i 件物品的体积是 vi,价值是 wi。 求解将哪些物品装入背包,可使这些物品的总体积不超过背包容量,且总价值最大。 输出最大价值。 输入格式 第一行两个整数,N,V,用空格隔开,分别表示物品数量和背包容积。 接下来有...
2020-11-20
IO底层实现原理
BIO BIO B指的是blocking的意思,就是阻塞。服务端开发使用ServerSocket绑定端口号后, 程序就会监听该端口,等待accept事件,accept方法会阻塞当前主线程 当服务端收到accept事件时,程序就会拿到一个客户端与当前服务端连接的Socket。 通过该Socket服务端...
2020-09-22
线程池学习笔记
1 线程池的优势 (1)降低系统资源消耗,通过重用已存在的线程,降低线程创建和销毁造成的消耗,提高性能; (2)提高系统响应速度,当有任务到达时,通过复用已存在的线程,无需等待新线程的创建便能立即执行; (3)方便线程并发数的管控。因为线 程若是无限制的创建,可能会导致内存占用过多而产生OOM,并且...
2020-08-21
通过问题深入了解Redis
1.Redis单线程处理请求为啥性能这么高?(10万QPS) (1) 单线程操作(CPU不需要创建/销毁线程,避免上下文切换,无并发资源竞争的问题,减少锁的消耗)。 (2) redis的底层数据结构做了很多优化,设计巧妙,数据存储类似于HashMap的,读写操作都是O(1)的时间复杂度 (3) Re...
2020-08-14
直插并发编程深处AQS
AQS(AbstractQueuedSynchronsizer)抽象的队列式同步器。 AQS中维护了一个volatile int state(共享资源,该数管理整个队列)和一个FIFO线程等待队列(多线程争用资源被阻塞时会进入此队列(双向链表)CLH队列)。 这里volatile能够保证多线程下的可...
2020-08-02