自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 资源 (2)
  • 收藏
  • 关注

原创 HTTPS 原理 对称加密 非对称加密 CA证书

参考可汗学院掘金网文章小结先介绍对称加密通信的双方,使用同一个secretKey,可以对密文进行解密,得到明文。问题:在开放的internet如何交换secretKey,这本身就是个问题。这个交换的过程也是需要加密的。这就套娃了无解了。再介绍非对称加密通信双方各自有一个公钥,还有私钥;私钥只有自己知道,公钥全世界都知道;非对称加密算法,保证了用公钥加密的信息,可以用 对应的 私钥解密。比如:Curry和Klay 需要进行通信。Curry有私钥privateKeyCurry 和公钥publ

2020-06-30 12:17:01 521

原创 ES pinyin 插件 拼音搜索 原理 match_phase

背景中文搜索很多时候都要用到pinyin搜索,基本绕不开这个插件;如搜索人名之类的;介绍插件github:地址在README的最后,举的例子挺有意思;经过一系列操作之后,对刘德华建index,竟然搜liudh,刘dh,各种奇葩的搜索都能搜出来,这是为啥呢?让我们来仔细分析一下。如官网的配置配置analyzerPUT /medcl3/{ "settings" : { "analysis" : { "analyzer" : {

2020-06-18 15:35:58 1933

原创 Guava RateLimiter 原理 理解

背景项目中限流可以用Guava RateLimiter,不想了解原理是啥吗?!这篇文章已经写的很好了没啥可补充了,加一些个人思考吧思考如果让你来造一个限流器,有啥想法?直观想法1,对应参考文章的漏桶算法就是用一个固定大小的队列。比如设置限流为5qps,1s可以接受5个请求;那我们就造一个大小为5的队列,如果队列为满了,就拒绝请求;如果队列未满,就往队列添加请求。如何控制速率呢,我们通过控制消费者的消费速率是5qps,1s消费5个即可。问题,说的挺轻巧,具体怎么控制消费者的速率呢?又加一个定

2020-06-15 17:35:19 632

翻译 CAS Spring 中文文档

原文链接Spring官方文档译文32.CAS鉴权32.1 概述JA-SIG 搞了一个 企业范围内的单点登录系统:就是闻名天下的CAS。跟其他替代品不一样的地方在于,JA-SIG的中心鉴权服务是开源的,被广泛是用的,容易理解的,独立于平台的,支持代理能力的。Spring的安全模块完全支持CAS,并提供了比较容易的迁移方案,从单应用部署(Spring Security)到多应用部署(企业层CAS server)可以从这个网址了解CAS。你也需要访问这个网址来下载CAS服务器文件。32.2 CAS是

2020-06-15 11:19:13 1537

原创 SSO登录流程 原理 详解 举例

参考文章 + b站视频小结举一反三说个应用场景用户在钉钉登录了(假设是 passport.dingding.com),这个服务会设置给二级域名(dingding.com, 而不是当前域名passport.dingding.com)设置好cookie,以后客户端在请求xxx.dingding.com的时候都会带上cookie。然后用户在钉钉内部想要访问一个日历(假设是 calendar.dingding.com)像前面说的,客户端会带上cookie。然后日历的服务发现用户还没登录日历服务,就会拿用

2020-06-12 11:57:47 758

原创 b-k-d树 原理 图文解析

背景前文介绍了 k-d树 和 k-d-b树 今天再来这个b-k-d树已经几乎没啥可以参考的资料了只能硬啃两篇文章了一个是:medium一个是发明者的论文挺好的,人还是要耐着性子读一些难啃的东西开始介绍关键点这个b-k-d树是基于k-d-b树再做的改进,整体的结构是个森林。。(多个k-d-b树)前文介绍,k-d-b树在做静态查询的时候效果特别好,但是动态插入就不好了。为了解决这种问题,作者研究了这种炸天的算法,用一个森林来做。。仔仔细细地看插入算法:在内存中有一个完全二叉树作为bu

2020-06-11 18:29:30 2901

原创 k-d-b树 对 k-d树的改进 原理 图文解析

背景上文讲到k-d树下面来看k-d-b树参考这篇文章:介绍类比二叉搜索树,树会太高,对磁盘io不友好k-d树就更高了,树是真的高,那么我们能不能引入b+树的思想来解决这个问题呢?k-d-b树就是这么搞的。首先我们想一下b+树怎么解决这个问题的。b+树,不再是二叉树,而是多叉树。引入了内部节点,内部节点不存储实际数据,只是一些索引节点。每个内部节点由最小值和最大值定义。与k-d树不一样,k-d树每一层级切分的维度是反复横跳的(第一层x轴,第二层y轴,第三层x轴…)继续上图,参考维基百科

2020-06-11 18:14:17 1016

原创 k-d树 原理 图文解析

背景看到了Lucene -》 Bkd树 -》 k-d树what the f*ck are all of these?本文就先从k-d树介绍吧参考维基百科首先这是干嘛的?用于多维度搜索的。例如在二维平面搜一个点,在三维空间搜一个点,在多维空间搜一个点。。。。上个图最好理解了假设我们要搜索的平面就是上面这个图的正方形平面。那么我们建立的k-d树就是下面这个图这样。树的每一层级划分一个平面,循环地划分。在上面这个例子里,第一级是按照X维度划分平面,第二级按照Y维度划分平面,第三级又按照X维

2020-06-11 15:54:08 1442

原创 Lucene 如何做多个拉链的交集

背景网上的文章各式各样,还不如看看源码参考比较靠谱的一个博主他的一本“书“ 写的比较明白,可供参考:看上面这个博客基本可以看懂原理。建议大家先读一读,配图也比较丰富,比较好理解。但是这个博客已经比较老了,不禁让人怀疑新的版本Lucene还是不是这么搞的那就撸源码吧看的代码是2020-06-11直接从github 搞下来的。也可以参考官方文档按照书上的说法,直接找到Conjunctionxxx 相关的代码。发现了一个新的神奇类:org.apache.lucene.search.Con

2020-06-11 11:15:03 610

原创 scheduledThreadPoolExecutor 原理 delayedQueue

背景这种定时器也常用,不好奇怎么实现的吗?!参考https://juejin.im/post/5d63ce9b6fb9a06b28635ecfdemo先看个demo吧package com.vava.ecommerse.scheduler;import org.springframework.scheduling.annotation.Scheduled;import org.springframework.stereotype.Component;/** * @author St

2020-06-05 16:09:31 542

原创 ScheduledLock 如何实现定时

背景用到了 就得懂 是不是源码还是从注解出发,这回我们从@Scheduled注解出发(因为定义了以什么频率执行)我们点一下cron点进去,发现ScheduledAnnotationBeanPostProcessor这个有用到,是个BeanPostProcessor,那就会作为组件加载进我们的Spring 容器了从这里调的:会添加一个CronTask:最终会加进去了 this.scheduledTasks然后呢?怎么执行定时任务?...

2020-06-04 19:00:49 491

原创 SchedulerLock 分布式锁 原理

背景使用@SchedulerLock可以实现比较轻量级的简单的定时任务,也可以实现分布式锁,那具体的原理是啥?一探究竟不熟悉的同学可以先看一下用法:https://www.baeldung.com/shedlock-spring大概就是定义一个数据表注意这里的name是primary key,是不可重复的。利用了primary key的这个特性,实现了锁的抢占。细节下面会介绍然后加注解实现:看源码直接从注解出发,看源码在注解所在的包内发现一个DefaultLockManager一看

2020-06-04 18:46:17 5832 2

原创 mysql text能保存多长的字符串呢?

背景需要做一个字符串的存储(列表的json化字符串),需要大概估算一下,使用text能保存多少个数据列表的每个元素是uuid,长度是36搜寻资料https://dev.mysql.com/doc/refman/8.0/en/storage-requirements.html按照mysql官网的介绍text的最大长度应该是65536Byte对于咱们这个需求,保存的全是ascii字符,一个字符一个字节,所以就按65536的长度算就行。如果是中文的话,应该也是允许存65536个字节;但是我们使用

2020-06-03 15:29:56 8832

原创 基于mysql实现分布式锁

维护一个锁表CREATE TABLE `dist_lock`( `id` bigint PRIMARY KEY NOT NULL AUTO_INCREMENT COMMENT '自增主键', `resource_name` varchar(64) NOT NULL DEFAULT '' COMMENT '资源名字', `node_info` varchar(64) NOT NULL DEFAULT ''

2020-06-01 14:53:52 385

示波器软件

示波器,可以显示4路曲线,通信简单,在软件自带说明中,可以方便各种调试。

2014-02-28

双闭环控制直流电机转速C51单片机

双闭环控制直流电机转速C51单片机,亲测可用,显示屏为noika5110,可实现直流电机速度控制。

2014-02-28

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除