Erlang学习 发表于 2023-04-03 更新于 2024-08-17 分类于 1-基础 , Erlang 在游戏开发中,有些服务器就是通过Erlang来编写的。写一篇文章来分析服务器。 阅读全文 »
merkle树 发表于 2022-11-19 更新于 2024-03-30 分类于 1-基础 , Algorithm 简介 hash树是一种校验机制,全部树的叶子节点就是我们需要做hash的原始数据,按照两个为一组,产生hash,层层建设这棵树,最后形成一个根。这样其中每个产出的hash节点如果被修改了,将会被父节点觉察到,层层推算到根的hash都不会匹配。 hash函数是存在碰撞的可能性的,如果有人需要去破解merkle树的校验,就需要从篡改的节点,一直到根的全部的hash过程的碰撞的函数都搞定,这个难度可想而知。 阅读全文 »
C++智能指针 发表于 2022-10-08 更新于 2023-06-06 分类于 1-基础 , C++ 简述智能指针在C++中其实是非常推荐使用的。从《Effective C++》、《现代C++白皮书》和《Modern Effective C++》里面也提到了带来的好处。减少内存泄漏的问题。在遇到了异常的时候,也能很好的防止内存泄漏的发生。很早之前STL中就推出了auto_ptr(1998年发明),在C++11废弃(deprecated)被unique_ptr取代在使用过程中还需要使用转移语法。C++11提供了shared_ptr,unique_ptr,weak_ptr三种智能指针。 阅读全文 »
时间轮 发表于 2022-10-05 更新于 2024-03-30 分类于 1-基础 , Algorithm 概述时间轮排序,算法最早是1987年被提出来的。 Linux里面的时间调度算法采用了这个算法。我们熟悉的crontab是使用了这个。 java里面 Dubbo Netty Akka Quartz Kafka 都有实现。能解决时间任务调度的任务。 阅读全文 »
快速排序 发表于 2022-09-19 更新于 2024-03-30 分类于 1-基础 , Algorithm 简介 复杂度分析: 期望复杂度 O(n lg n) 最坏复杂度 O(n^2)数组 A[p.. r] 被划分为两个(可能为空)子数组 A[p.. q-1] A[q+ 1.. r], 使得A[p .. l] 中的每一个元素都小于等于 A[q], A[q] 也小于等于 A[q+l..r] 中的每个元素。其中,计算下标 也是划分过程的一部分。 阅读全文 »
C++-11-改进程序性能 发表于 2022-09-04 更新于 2023-06-06 分类于 1-基础 , C++ 概述c++11 引入了新特性,提高了性能。 右值引用转移语义完美转发更加高效容器 阅读全文 »
C++-11-Thread 发表于 2022-09-02 更新于 2023-06-06 分类于 1-基础 , C++ 概述C++ 11 标准下对thread库。阅读的书是《深入应用C++11:代码优化与工程级应用》。ISBN-987-7-111-50069-8。第5章。 之前的c++在每个平台下有不同的多线程API接口,如果之前制作多线程时候,需要考虑平台差异性。新标准将其统一了。 线程同步的互斥量 用于线程间通讯的条件变量 线程安全的原子变量、 异步操作的future、promise和task,async等。 阅读全文 »
Redis-sortedset-学习 发表于 2022-09-01 更新于 2024-03-30 分类于 1-基础 , DB 简介记录一下Redis跳表相关的知识。官方是说的sorted set。我这里阅读的是redis-7.0.2版本的源码。非常浅显从函数开始阅读里面的逻辑。为了加快自己的理解,参考了cnblog的一篇分析文档。 阅读全文 »