随笔分类 -  算法与数据结构

主要是对程序员的内功修炼
摘要:状态机(State Machine)是一种设计模式,用于描述对象在不同状态之间的转换和行为。状态机可以帮助开发者管理复杂的状态逻辑,使得系统在不同状态下的行为更易于理解和维护。以下是关于状态机设计模式的详细介绍。 1. 状态机的基本概念 状态:表示对象在某一时刻的情况或条件。例如,订单的状态可以是“ 阅读全文
posted @ 2024-12-26 11:41 张占岭 阅读(910) 评论(0) 推荐(5) 编辑
摘要:摘要:在当今的数字世界中,密码安全是至关重要的。为了保护用户密码免受未经授权的访问和破解,Password-Based Key Derivation Function 2 (PBKDF2)算法成为了一种重要的工具。 在 PBKDF2 算法中,SHA 表示 Secure Hash Algorithm, 阅读全文
posted @ 2024-05-08 08:29 张占岭 阅读(1423) 评论(2) 推荐(2) 编辑
摘要:滑动窗口限流 滑动窗口限流是一种常用的限流算法,通过维护一个固定大小的窗口,在单位时间内允许通过的请求次数不超过设定的阈值。具体来说,滑动窗口限流算法通常包括以下几个步骤: 初始化:设置窗口大小、请求次数阈值和时间间隔。 维护窗口:将请求按照时间顺序放入窗口中,并保持窗口内请求数量不超过阈值。 检查 阅读全文
posted @ 2024-04-29 17:20 张占岭 阅读(914) 评论(2) 推荐(1) 编辑
摘要:布隆过滤器(Bloom Filter)是一种高效的概率数据结构,用于判断一个元素是否存在于集合中。它基于位数组和多个哈希函数,并具有以下特点: Bloom Filter 是一个基于概率的数据结构:它只能告诉我们一个元素绝对不在集合内或可能在集合内 快速查询:布隆过滤器具有快速查询的特性。它使用多个哈 阅读全文
posted @ 2023-12-05 14:54 张占岭 阅读(93) 评论(0) 推荐(0) 编辑
摘要:题目 有个需求,我有4种类型,每种类型又有自己的数列,问我如何用一个数字来表示它们 思路 可以看一下java里的线程的实现,它是将一个int64的数字进行分区,每个区间代表一种状态,如运行中,挂起,暂停等,我们也可以通过这个方法来实现。 实现 在int32中,我找一个范围,存储我的运行中状态的数列, 阅读全文
posted @ 2023-11-23 20:31 张占岭 阅读(39) 评论(0) 推荐(0) 编辑
摘要:之前写过关于totp的文章,对它的基础有不清楚的同学,可以先看我的这篇文章《TOTP基础一》《TOTP基础二》 想到的问题 因为totp是把时间分成了一个一个小的时间窗口,当生成totp的服务器和校验totp的服务器不在一起时间窗口,就会出现验证失败的问题,这是不可避免的,时间戳是一个long类型的 阅读全文
posted @ 2023-11-16 20:10 张占岭 阅读(54) 评论(0) 推荐(0) 编辑
摘要:base64 Base64 是一种用于将二进制数据编码成 ASCII 字符的编码方式。它主要用于在文字环境中传输或存储二进制数据,如在电子邮件、XML 文件、URL 参数等。Base64 编码不是一种加密算法,而是一种编码方式,其主要作用是将二进制数据转换为文本数据,以便更容易在文本协议中处理。 B 阅读全文
posted @ 2023-11-16 09:39 张占岭 阅读(176) 评论(0) 推荐(0) 编辑
摘要:基础说明 本文根据 RFC4226 和 RFC6238 文档,详细的介绍 HOTP 和 TOTP 算法的原理和实现。 两步验证已经被广泛应用于各种互联网应用当中,用来提供安全性。对于如何使用两步验证,大家并不陌生,无非是开启两步验证,然后出现一个二维码,使用支持两步验证的移动应用比如 Google 阅读全文
posted @ 2023-10-16 10:04 张占岭 阅读(741) 评论(0) 推荐(0) 编辑
摘要:Map图 LinkedHashMap HashMap 是 Java Collection Framework 的重要成员,也是Map族(如下图所示)中 我们最为常用的一种。不过遗憾的是,HashMap是无序的,也就是说,迭代HashMap所得到的元素顺序并不是它们最初放置到HashMap的顺序。Ha 阅读全文
posted @ 2022-07-29 09:25 张占岭 阅读(135) 评论(0) 推荐(1) 编辑
摘要:如何将整数按着类型分段,即有个数字3,它可以表示类型1里的计数3;有个数字10005,它可以表求类型2里的5,这种设计主要用在类型和数字关系紧密的场景,向ThreadPoolExecutor用到了这种设计,ThreadPoolExecutor中的runState和workCount机制,实现在一个i 阅读全文
posted @ 2022-03-16 14:18 张占岭 阅读(138) 评论(0) 推荐(0) 编辑
摘要:对称加加密 甲方选择某一种加密规则,对信息进行加密; 乙方使用同一种规则,对信息进行解密。 由于加密和解密使用同样规则(简称"密钥"),这被称为"对称加密算法"(Symmetric-key algorithm)。 这种加密模式有一个最大弱点:甲方必须把加密规则告诉乙方,否则无法解密。保存和传递密钥, 阅读全文
posted @ 2022-03-04 11:38 张占岭 阅读(260) 评论(0) 推荐(0) 编辑
摘要:参考: https://www.cnblogs.com/adylee/archive/2007/09/14/893438.html https://blog.csdn.net/liwei16611/article/details/86312599 AES介绍 严格地说,AES和Rijndael加密法 阅读全文
posted @ 2020-12-30 10:18 张占岭 阅读(34005) 评论(2) 推荐(1) 编辑
摘要:位运算控制数字范围 通过位运算,可以对一个数进行限制,保证这个数在2n-1(3,7,15,31,63,127,255...)范围内,当大于指定的数时,会取这个0到2n-1里的某个数,不会让它溢出。 之前我写过的位运算的文章 https://www.cnblogs.com/lori/p/3342781 阅读全文
posted @ 2020-08-27 09:13 张占岭 阅读(380) 评论(0) 推荐(0) 编辑
摘要:概念 TOTP算法(Time based One time Password algorithm)是一种从共享密钥和当前时间计算一次性密码的算法。 它已被采纳为Internet工程任务组标准RFC 6238,是Initiative for Open Authentication(OATH)的基石,并 阅读全文
posted @ 2019-06-24 15:05 张占岭 阅读(4758) 评论(0) 推荐(0) 编辑
摘要:两个数组 bucket数组:存储key的hash桶,桶指的是把hashcode分配到一定的范围内 entry数组:用来存储实现的值,它是一个单向链表,bucket总是存储链表的最后一个元素 实现方式 通过哈希桶来实现的k/v存储,通过key的hash码,再进行桶计算,生成一个在某个范围内的值,这就是 阅读全文
posted @ 2019-06-05 19:54 张占岭 阅读(2532) 评论(0) 推荐(0) 编辑
摘要:前序遍历 若二叉树非空,则执行以下操作: 1. 访问根结点; 2. 先序遍历左子树; 3. 先序遍历右子树 中序遍历 若二叉树非空,则执行以下操作: 1. 中序遍历左子树; 2. 访问根结点; 3. 中序遍历右子树。 后序遍历 若二叉树非空,则执行以下操作: 1. 后序遍历左子树; 2. 后序遍历右 阅读全文
posted @ 2019-05-31 16:40 张占岭 阅读(1121) 评论(0) 推荐(0) 编辑
摘要:HashMap是Map接口下面的子孙,它对外是K,V结构存储的,而内部也着自己的存储结构,它的get操作是O(1)的时间复杂度,可以说是非常快的找到目录,而添加时,也是O(1),所以在键值存储里,它成为了我们的首选,在多线程情况下,要注意,它不是线程安全的。如果是多线程情况下,请使用 . 就是JDK 阅读全文
posted @ 2019-05-23 18:28 张占岭 阅读(774) 评论(0) 推荐(0) 编辑
摘要:内存分成5个区,他们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 栈 先进后出(FILO—First-In/Last-Out) 就是那些由编译器在需要的时候分配,在不需要的时候自动清楚的变量的存储区。里面的变量通常是局部变量、函数参数等。(C#里,值类型被存储在栈上) 堆 先进先出(FI 阅读全文
posted @ 2018-04-25 21:25 张占岭 阅读(478) 评论(1) 推荐(0) 编辑
摘要:转载文章:https://www.cnblogs.com/welhzh/p/5894496.html 本文为大叔转载的,写的挺好,清晰易懂! 一、公钥加密假设一下,我找了两串数字,一串是1*,一串是2*。我喜欢2*这串数字,就保留起来,不告诉你们(私钥),然后我告诉大家,1*是我的公钥。我有一个文件 阅读全文
posted @ 2018-03-29 14:57 张占岭 阅读(760) 评论(2) 推荐(0) 编辑
摘要:上一讲大概介绍了一个排序算法的概念与内存结构图,主要选自《算法精解》,各人认为,这本书写的还是不错的,大家可以直接下载epub版,然后在面度阅读APP上看,挺方便的!其实,学习,很简单! 排序是指将元素集合按照规定的顺序排列。通常有两种排序方法,升序排列和降序排列。例如,对整数集{5,2,7,1}进 阅读全文
posted @ 2017-05-12 17:32 张占岭 阅读(660) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示