
软文
理会拾光
这个作者很懒,什么都没留下…
展开
-
手撸一个SpringBoot缓存系统
缓存是最直接有效提升系统性能的手段之一。个人认为用好用对缓存是优秀程序员的必备基本素质。本文结合实际开发经验,从简单概念原理和代码入手,一步一步搭建一个简单的二级缓存系统。一、通用缓存接口1、缓存基础算法FIFO(First In First Out),先进先出,和OS里的FIFO思路相同,如果一个数据最先进入缓存中,当缓存满的时候,应当把最先进入缓存的数据给移除掉。LFU(Least Frequently Used),最不经常使用,如果一个数据在最近一段时间内使用次数很少,那么在将来原创 2020-08-17 08:57:18 · 515 阅读 · 0 评论 -
手把手教你实现一个SpringBoot的starter
Starters are a set of convenient dependency descriptors that you can include in your application. You get a one-stop shop for all the Spring and related technologies that you need without having to hunt through sample code and copy-paste loads of depen...原创 2020-08-12 09:14:18 · 1831 阅读 · 0 评论 -
hashCode() 和 equals() 之间的关系
先祭一张图,可以思考一下为什么?介绍equals() 的作用是用来判断两个对象是否相等。hashCode() 的作用是获取哈希码,也称为散列码;它实际上是返回一个int整数。这个哈希码的作用是确定该对象在哈希表中的索引位置。关系我们以“类的用途”来将“hashCode() 和 equals()的关系”分2种情况来说明。1、不会创建“类对应的散列表”这里所说的“不会创建类对应的散列表”是说:我们不会在HashSet, Hashtable, HashMap等等这些本质是散列表的数据结构中,用到该原创 2020-08-12 08:46:33 · 593 阅读 · 0 评论 -
池化技术之线程和线程池的对比
尼采曾经说过:人们无法理解他没有经历过的事情。因此我会试着把技术文章写的尽量具象化一些,力求让所有人都能看懂,所以在正式开始之前,我们先从两个生活事例说起。尼采帅照:生活案例 1早些年间,某宝双“11”突然爆火,然后无数个男男女女疯狂“剁手”,然而最痛苦的并不是“剁手”之后吃“灰”的日子,而是漫长而又揪心的等待快递小哥的日子。为了缓解彼此的“痛苦”(快递公司的电话被打爆,用户等得不耐烦),快递公司后面就变“聪明”了,每当购物节将要来临之前,快递公司会预先准备好充足的人和车,以迎接扑面而来的订单。原创 2020-08-12 08:39:09 · 316 阅读 · 0 评论 -
通俗易懂的贝叶斯定理
概率论与数理统计,在生活中实在是太有用了,但由于大学课堂理解不够深入,不能很好地将这些理论具象化并应用到实际生活中,感到实在是太遗憾了,所以重新学习并用小白式的通俗易懂的语言来解释记录,以此来加深理解应用。先思考一下,数学是怎么产生的?当祖先遇到一个问题,最终采用了某种方法,把这个问题解决了,非常开心。动物都是有惰性的,为了在下次遇到此类问题时不费吹灰之力,于是就把这种解决问题的思想和方法提取出来,然后就有了数学。为了给更多的人恩惠,就需要把这种方法整理成抽象的,严谨的数学理论,传递给他人,别人看完,学原创 2020-08-10 09:10:36 · 4116 阅读 · 0 评论 -
Redis 面试常见问答
>1. 什么是缓存雪崩?怎么解决?通常,我们会使用缓存用于缓冲对 DB 的冲击,如果缓存宕机,所有请求将直接打在 DB,造成 DB 宕机——从而导致整个系统宕机。如何解决呢?2 种策略(同时使用):对缓存做高可用,防止缓存宕机使用断路器,如果缓存宕机,为了防止系统全部宕机,限制部分流量进入 DB,保证部分可用,其余的请求返回断路器的默认值。2. 什么是缓存穿透?怎么解决?解释 1:缓存查询一个没有的 key,同时数据库也没有,如果黑客大量的使用原创 2020-08-10 08:34:25 · 205 阅读 · 0 评论 -
9种 分布式ID生成方式
为什么要用分布式ID?在说分布式ID的具体实现之前,我们来简单分析一下为什么用分布式ID?分布式ID应该满足哪些特征?1、什么是分布式ID?拿MySQL数据库举个栗子:在我们业务数据量不大的时候,单库单表完全可以支撑现有业务,数据再大一点搞个MySQL主从同步读写分离也能对付。但随着数据日渐增长,主从同步也扛不住了,就需要对数据库进行分库分表,但分库分表后需要有一个唯一ID来标识一条数据,数据库的自增ID显然不能满足需求;特别一点的如订单、优惠券也都需要有唯一ID做标识。此时一个能够生...原创 2020-08-08 21:59:08 · 1263 阅读 · 0 评论 -
面试经验分享
说下 https 吧,和 http 有什么区别https相对于http来说主要多了一个SSL层,通过SSL加密数据包,通过证书验证身份,使得数据更安全。那说下https是如何加密的简单的说就是客户端在请求服务器的时候得到服务器的证书和公钥,然后自己生成一个密钥,通过公钥加密,传输给服务端。然后服务端通过私钥解密,这样就得到对称加密所需的密钥,之后就通过对称加密通信。为什么需要这么麻烦,直接公钥私钥通信不行吗非对称加密比较耗时,对称加密比较快那你再说说dns 如何工作的简单的说就是通过udp去查原创 2020-08-07 09:00:09 · 222 阅读 · 0 评论 -
进程间通信
每个进程的用户地址空间都是独立的,一般而言是不能互相访问的,但内核空间是每个进程都共享的,所以进程之间要通信必须通过内核。Linux 内核提供了不少进程间通信的机制,我们来一起瞧瞧有哪些?管道如果你学过 Linux 命令,那你肯定很熟悉「|」这个竖线。$ ps auxf | grep mysql上面命令行里的「|」竖线就是一个管道,它的功能是将前一个命令(ps auxf)的输出,作为后一个命令(grep mysql)的输入,从这功能描述,可以看出管道传输数据是单向的,如果想相互通信,我..原创 2020-08-06 17:28:34 · 158 阅读 · 0 评论 -
浅谈树形结构的特性和应用(上):多叉树,红黑树,堆,Trie树,B树,B+树...
无所不在的非线性数据结构之一:树形结构的特点和应用。树形结构,是指:数据元素之间的关系像一颗树的数据结构。我们看图说话:它具有以下特点:每个节点都只有有限个子节点或无子节点;没有父节点的节点称为根节点;每一个非根节点有且只有一个父节点;除了根节点外,每个子节点可以分为多个不相交的子树;树里面没有环路(cycle)维基百科中列举了计算机科学中树形结构的种类我们只挑一些熟悉的面孔:多叉树,二叉树,二叉查找树,红黑树,堆,Trie树,B树,B+树,LSM Tree,了原创 2020-08-05 09:11:24 · 688 阅读 · 1 评论 -
看得见的TCP
正文显形“不可见”的网络包网络世界中的数据包交互我们肉眼是看不见的,它们就好像隐形了一样,我们对着课本学习计算机网络的时候就会觉得非常的抽象,加大了学习的难度。还别说,我自己在大学的时候,也是如此。直到工作后,认识了两大分析网络的利器:tcpdump 和 Wireshark,这两大利器把我们“看不见”的数据包,呈现在我们眼前,一目了然。唉,当初大学学习计网的时候,要是能知道这两个工具,就不会学的一脸懵逼。tcpdump 和 Wireshark 有什么区别?tcpdump 和 ..转载 2020-07-30 14:07:14 · 302 阅读 · 0 评论 -
Redis中是如何实现分布式锁的?
分布式锁常见的三种实现方式:数据库乐观锁;基于Redis的分布式锁;基于ZooKeeper的分布式锁。本地面试考点是,你对Redis使用熟悉吗?Redis中是如何实现分布式锁的。实现可以直接通过 set key value px milliseconds nx 命令实现加锁, 通过Lua脚本实现解锁。//获取锁(unique_value可以是UUID等)SET resource_name unique_value NX PX 30000//释放锁(lua脚本中,一定要比原创 2020-07-30 09:01:09 · 279 阅读 · 0 评论 -
面试灵魂100问(不含答案)
其中涵盖了不少大厂必考点、高频点、加薪点,这些也是作为开发人来说日常项目中经常遇到的踩坑点。一共分成了 5 大类,分别是:Dubbo,ElasticSearch,JVM,多线程/高并发,消息中间件 。1 Dubbo1.1 服务调用超时问题怎么解决?1.2 Dubbo支持哪些序列化方式?1.3 Dubbo和SpringCloud的关系?1.4 Dubbo的架构设计?一共划分了哪些层?1.5 Dubbo的默认集群容错方案?1.6 Dubbo使用的是什么通信框架?1.7 Dubbo的主要应用场景?原创 2020-07-30 08:48:47 · 708 阅读 · 0 评论 -
面试 HTTP ,99% 的面试官都爱问这些问题
HTTP 和 HTTPS 的区别HTTP 是一种 超文本传输协议(Hypertext Transfer Protocol),HTTP 是一个在计算机世界里专门在两点之间传输文字、图片、音频、视频等超文本数据的约定和规范HTTP 主要内容分为三部分,超文本(Hypertext)、传输(Transfer)、协议(Protocol)。超文本就是不单单只是本文,它还可以传输图片、音频、视频,甚至点击文字或图片能够进行超链接的跳转。上面这些概念可以统称为数据,传输就是数据需要经过一系列的物理介质从一个端.原创 2020-07-29 17:14:42 · 260 阅读 · 0 评论 -
精选9道java面试题!
今天这篇文章是单纯的从面试的角度出发,以回答面试题为线索,再把整个 Java 集合框架复习一遍,希望能帮助大家拿下面试。先上图:当面试官问问题时,我会先把问题归类,锁定这个知识点在我的知识体系中的位置,然后延展开来想这一块有哪些重点内容,面试官问这个是想考察什么、接下来还想问什么。这样自己的思路不会混乱,还能预测面试官下一个问题,或者,也可以引导面试官问出你精心准备的问题,这场面试本质上就是你在主导、你在 show off 自己扎实的基础知识和良好的沟通交流能力。其实我在 LRU 那篇文章里就说.原创 2020-07-29 09:24:26 · 161 阅读 · 0 评论 -
简历+面试
简历模板面试算法准备作为一个后台开发人员,算法白板编程是必备的。算法积累是一个长期的过程,需要不断地去刷题保持手感。学习算法的前提是数据结构要足够地熟悉,我大学的时候数据结构和算法都很差,经过数十场面试才慢慢将算法重视起来,通过阅读《算法 第4版》搭建个人基础,然后通过刷牛客网和leetcode来积累经验。因为刷算法题更多地是针对面试,所以可以按照分类去刷一定数量的题目,有相应的解题思路和模版就好。我是按照数组、链表、树、队列、栈、哈希表、并查集、动态规划这些分类去刷的。因为很多面试都是在牛客原创 2020-07-27 09:55:25 · 251 阅读 · 0 评论 -
优快云写文章的相关问题
字体颜色 我是绿色 我是灰色 我是黄色 我是橙色 我是大红色例:<font color=blue> 我是绿色</font>动态图片怎么加载例:<img src="//bpic.588ku.com/ad_diversion/19/08/22/915abbf3e26f11efc0c7e121b3c8f996.png"></img>只写动态图片的相关地址路径就行,不用复制图片...原创 2020-07-24 13:16:43 · 135 阅读 · 0 评论 -
需求到系统上线经历了什么?
原创 2020-07-23 16:28:19 · 225 阅读 · 0 评论