八股文
文章平均质量分 88
当代八股
Scoful
安分守己地做个代码工人
展开
-
使用Diffie-Hellman算法(非对称加密算法)得到对称加密需要的秘钥
目录0. 摘要1. 概述2. Diffie-Hellman算法原理2.1 Diffie-Hellman算法原理2.2 Diffie-Hellman算法的优缺点转载自原文在原文基础上优化了一下,加上注释,更好读懂0. 摘要非对称加密算法又称公开密钥加密算法,非对称加密是相对于对称加密而言的,对称加密指的是通信双方使用的密钥是一致的,而非对称加密就是算法使用的密钥不一致。非对称加密的好处是当通信双方没有事先协商密钥的情况下也能进行安全通信,而在互联网普及的今天,很多通信双方往往在事先是无法协商好密钥的转载 2021-09-29 18:42:07 · 46794 阅读 · 0 评论 -
一看就会,二叉树的创建和三种遍历--前序、中序、后序(附java代码实现)
转载自原文文章目录一、易懂的形象理解1、前序遍历2、中序遍历3、后序遍历4、层序遍历二、真正理解三种遍历三、代码实现一、易懂的形象理解其实从名字就可以很好的理解这三种遍历,我在第二点时候说,但是估计能翻到我的文的同学们之前肯定看过好多类似的了,那咱们换个思路~ 先用我想的一种简单易懂的形象思维理解一下前序、中序、后序 +层序!1、前序遍历先序遍历可以想象成,小人从树根开始绕着整棵树的外...转载 2020-03-04 01:32:29 · 14737 阅读 · 1 评论 -
一致性Hash(Consistent Hashing)原理剖析
转载自原文引入在业务开发中,我们常把数据持久化到数据库中。如果需要读取这些数据,除了直接从数据库中读取外,为了减轻数据库的访问压力以及提高访问速度,我们更多地引入缓存来对数据进行存取。读取数据的过程一般为: 图1:加入缓存的数据读取过程对于分布式缓存,不同机器上存储不同对象的数据。为了实现这些缓存机器的负载均衡,可以使用式子1来定位对象缓存的存储机器: m = hash(o) mo...转载 2020-04-07 19:33:12 · 26964 阅读 · 0 评论 -
SSH的大白话说明
目录1. 大白话前提2. SSH建立session连接(对称加密+Diffie-Hellman算法的应用)3. SSH的密码登陆(对称加密的应用)4. SSH的免密登录(公钥加密私钥解密+hash的应用)参考1. 大白话前提对称加密 = 加解密都用的同一个秘钥非对称加密 = 加解密用的是一对秘钥,也就是公钥私钥公钥,顾名思义,公开的,多人拥有的私钥,顾名思义,私有的,一般就一人拥有非对称加密既可以用公钥加密然后私钥解密,也可以私钥加密然后公钥解密,根据用途的不同而选择不同的加解密方式公钥加密原创 2021-10-01 10:30:00 · 47086 阅读 · 0 评论 -
布隆过滤器的原理,使用场景和注意事项
目录什么是布隆过滤器实现原理为啥不用 HashMap 的问题布隆过滤器数据结构支持删除么如何选择哈希函数个数和布隆过滤器长度最佳实践Redis大Value拆分参考资料什么是布隆过滤器本质上布隆过滤器是一种数据结构,比较巧妙的概率型数据结构(probabilistic data structure),特点是高效地插入和查询,可以用来告诉你 “某样东西一定不存在或者可能存在”。相比于传统的 List、Set、Map 等数据结构,它更高效、占用空间更少,但是缺点是其返回的结果是概率性的,而不是确切的。实现转载 2022-02-20 20:36:51 · 26468 阅读 · 0 评论 -
二叉树、平衡二叉树(AVL)、红黑树、2-3-4树、2-3树、b-树、b+树
目录二叉树平衡二叉树(AVL)红黑树2-3-4树2-3树b-树b+树二叉树平衡二叉树(AVL)红黑树2-3-4树2-3树b-树b+树原创 2021-05-31 23:15:08 · 35492 阅读 · 0 评论 -
TCP三次握手建立连接和四次挥手断开连接
目录1. TCP connection2. TCP报文格式简介3. TCP的三次握手(Three-Way Handshake)4. TCP的四次挥手(Four-Way Wavehand)1. TCP connection客户端与服务器之间数据的发送和返回的过程当中需要创建一个叫TCP connection的东西;由于TCP不存在连接的概念,只存在请求和响应,请求和响应都是数据包,它们之间都是经过由TCP创建的一个从客户端发起,服务器接收的类似连接的通道,这个连接可以一直保持,http请求是在这个连原创 2021-09-30 13:27:36 · 46084 阅读 · 0 评论 -
分库分表入门介绍
本文收集网上资料,多合一编撰于2020年4月21日原文链接1原文链接2原文链接3目录为什么要分库分表读写分离,主从复制Why Not NoSQL/NewSQL?什么是RDBMS分库分表概述切分策略路由规则范围路由hash算法路由配置分库分表带来的问题join操作COUNT(*)操作order by 操作整体的切分方式切分方式小结1. 垂直切分垂直拆分优点:垂直拆分缺点垂直拆分小结:关于冷...转载 2020-04-21 21:13:06 · 25980 阅读 · 0 评论 -
分布式事务入门
本文撰写于2020年4月22日参考链接目录前言问题描述什么是分布式事务什么是分布式系统什么是事务什么是本地事务什么是分布式事务分布式事务的应用场景CAP理论分布式系统能否兼顾C、A、P?CAP有哪些组合方式?分布式事务的解决方案(介绍其中三种)两阶段提交协议(2PC)事务补偿(TCC)什么是幂等性?消息队列实现最终一致(本文打算介绍这种方案解决)前言由于最近在学习springcloud的项...转载 2020-04-22 11:48:14 · 24515 阅读 · 0 评论 -
锁Hi系列----跟Java锁Say声Hi(公平锁和非公平锁、互斥锁和读写锁、可重入锁和不可重入锁、自旋锁、独占锁和共享锁、悲观锁和乐观锁、JUC下5种锁代码应用)
目录自旋锁可重入锁乐观锁悲观锁自旋锁可重入锁乐观锁悲观锁原创 2021-05-31 23:18:55 · 111275 阅读 · 0 评论 -
从宏观数据库加锁实现的事务隔离==>MySql通过快照隔离实现的事务隔离
大佬原文地址,本文重新排版并加入一些概念目录1. 为什么需要事务2. 什么是事务2.1 原子性2.2 一致性2.3 隔离性2.4 持久性3. 通用数据库并发问题(用锁来解决)3.1 异常:脏写(Dirty Write)3.1.1 例子3.1.2 防止:使用隔离级别-未提交读3.1.3 隔离级别实现原理(长--)3.2 异常:脏读(Dirty Read)3.2.1 例子3.1.2 防止:使用隔离级别-提交读3.1.3 隔离级别实现原理(长短短)3.3 异常:不可重复读3.3.1 例子3.3.2 防止:使用隔转载 2022-01-10 20:04:27 · 22535 阅读 · 0 评论 -
MySQL索引的底层数据结构衍变史
原文链接,本文重新排版优化目录1. MySQL为什么要建立索引?2. 可选数据结构2.1 Hash结构(自适应哈希索引)2.2 有序数组2.3 二叉树结构2.3.1 二叉树的增删(简单举例)2.3.1.1 二叉树的增2.3.1.2 二叉树的删2.3.2 磁盘IO的因素影响2.3.2.1 磁盘的组成2.3.2.2 磁盘定位数据的流程2.3.2.3 磁盘IO的耗时原因分析2.3.2.4 通过磁盘预读,顺序读提高读数效率2.3.3 二叉树为什么不适合作为Mysql索引的数据结构2.3.4 二叉树的异化过程2.3转载 2022-01-07 19:50:32 · 20294 阅读 · 0 评论 -
JVM堆内存介绍、垃圾收集算法、垃圾回收器汇总
JVM堆内存介绍、垃圾收集算法、垃圾回收器汇总原创 2022-01-11 18:08:16 · 23035 阅读 · 0 评论 -
分布式和集群的架构套路总结
本文成于2020年3月14日参考:原文文章目录分布式和集群名词解释使用分布式的心路历程常见的分布式集群架构1. 纯负载均衡形式(集群方向)2. 领导选举型(分布式方向)3. 区块链型(分布式方向)4. master-slaver型(分布式方向)5. 规则型一致性Hash分布式和集群名词解释集群 指将多台服务器集中在一起,每台服务器都实现相同的业务,做相同的事情。但是每台服务器并不是缺一不...转载 2020-03-14 02:41:58 · 14380 阅读 · 0 评论 -
测试AOP五种切面通知的优先级次序
目录通知类型通知执行顺序代码展示代码正常结束代码出现异常通知类型在基于Spring AOP编程的过程中,基于AspectJ框架标准,spring中定义了五种类型的通知,它们分别是:前置通知 (@Before) 返回通知 (@AfterReturning) 异常通知 (@AfterThrowing) 后置通知 (@After)环绕通知 (@Around) :(优先级最高)通知执行顺序将上面的所有通知类型写入同一个切面中,它的执行顺序为:代码展示package com.cy.pj.co转载 2020-11-30 20:56:28 · 34420 阅读 · 0 评论 -
虚拟内存--机制说明,地址映射
目录1. 内存不够用怎么办?1.1 解决方案1:分段1.2 解决方案2:分页2. 虚拟内存的地址如何映射到磁盘的?2.1 映射关系存储在页表2.2 使用虚拟内存引发的时间复杂度问题2.2.1 解决方案:TLB2.3 使用虚拟内存引发的空间复杂度问题2.3.1 解决方案:多级页表2.4 聊聊所谓局部性原理2.4.1 用代码验证局部性的存在1. 内存不够用怎么办?众所周知, 在早期, 操作系统还没有分时的概念, 当时都是单进程执行, 只有一个进程结束了, 才能执行后一个进程. 但是这样的执行很容易想到的一个转载 2022-03-15 14:56:16 · 80759 阅读 · 1 评论 -
同步-异步-阻塞-非阻塞,IO模型浅析(包括同步阻塞IO,同步非阻塞IO,IO多路复用,异步IO)
转载服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种:(1)同步阻塞IO(Blocking IO):即传统的IO模型。(2)同步非阻塞IO(Non-blocking IO):默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOCK。注意这里所说的NIO并非Java的NIO(New IO)库。(3)IO多路复用(IO ...转载 2020-04-07 02:50:33 · 27149 阅读 · 1 评论 -
从大系统到微服务的发展路线和思考分享
转载自Microservices微服务简介和知识分享目录1. Monolith大系统的演变2. Monolith大系统的缺点和开发周期特点2.1 大系统的缺点2.2 大系统的开发周期特点3. 微服务系统MicroServices3.1 微服务系统的特点3.2 微服务系统的开发周期特点3.3 微服务系统的六大原则3.3.1 第一原则是系统间交互要通过公开的API来进行3.3.2 第二原则实际就是说各个子系统可以灵活使用合适的工具和语言3.3.3 第三原则是子系统可以实现自己的安全认证机制3.3.4 第四原则转载 2020-06-13 12:50:40 · 53796 阅读 · 0 评论 -
Java四大元注解
转载自目录Annotation(注解)meta-annotation(元注解)@Target注解@Retention注解@Documented注解@Inherited注解注解应用举例Annotation(注解)从JDK 1.5开始, Java增加了对元数据(MetaData)的支持,也就是 Annotation(注解)。注解其实就是代码里的特殊标记,它用于替代配置文件:传统方式通过配置文件告诉类如何运行,有了注解技术后,开发人员可以通过注解告诉类如何运行。在Java技术里注解的典型应用是:可以通过反转载 2020-05-26 11:13:37 · 46113 阅读 · 0 评论 -
介绍java中Pair和Map的区别
目录核心java配对实现Pair类AbstractMap.SimpleEntry 和 AbstractMap.SimpleImmutableEntryApache CommonsVavr库举个例子在这篇文章中,我们讨论了一个非常有用的编程概念,配对(Pair)。配对提供了一种方便方式来处理简单的键值关联,当我们想从方法返回两个值时特别有用。在核心Java库中可以使用配对(Pair)的实现。除此之外,某些第三方库,比如Apache Commons和Vavr,已经在各自的api中公开了这个功能。核心jav原创 2021-02-25 21:12:26 · 41078 阅读 · 1 评论