自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

lidelin10的博客

关于Java编程的一些问题

  • 博客(50)
  • 论坛 (2)
  • 收藏
  • 关注

原创 定时器设计:传统方法和时间轮算法
原力计划

组成触发“时针”pointer转动的Ticker:一般使用定时循环(一般使用死循环,每次循环sleep小段时间)存放定时任务的环形哈希表工作过程当Ticker触发时,pointer进行自增,在每一次自增中都会对pointer对应的槽中任务链表进行扫描,执行并删除过期的任务,直至pointer的时间与当前时间一致。核心问题如何设计高效哈希表以适应不同的定时任务?Ticker的设计这两个问题都会通过分析下面的示例后进行解答。示例FastDFSFastDFS的使用时间轮实现超时控制以及.

2020-06-16 11:04:01 211

原创 [原理] 说说Web请求的过程

在面试过程中,我们可能都遇到过这个问题,如果我们不是很理解整个过程,可能觉得就是客户端发送请求,服务端处理请求这个简单的过程。但是在工作中,我发现对这个问题理解的深度能让你更快且精确的定位到的问题的所在,最起码能知道是不是我们服务端的问题,接下来小生姑且根据目前自己的理解和参考资料对过程进行梳理。文章目录DNS解析域名发起连接三次握手发送HTTP请求路由转发和路由选择Nginx反向代理服务器...

2019-12-29 16:24:09 589 2

原创 [未完结]Bloom过滤器综述

布隆过滤器是相当优秀的设计----利用极小的位数组表达对象的存在信息,空间占用小、查询效率高的优点更是让程序员们欲罢不能。当然bloom过滤器也不是完美的,比如不支持删除数据,有缺点就会有人会尝试改进 — Counting Bloom Filter 、Cuckoo Filter 应运而生。下面介绍一下普通BloomFilter及其改进。一、Bloom Filter1.普通布隆过滤器的设计假设...

2019-11-09 11:08:29 255

原创 协议学习-ARP Protocol

文章目录ARP协议介绍ARP报文格式ARP协议工作过程发送ARP请求接收ARP请求ARP表项老化为什么需要表项老化的特性?ARP表项更新以及老化的一些建议一些问题为什么不通过周期性广播ARP报文的方式进行ARP表项的维护?在局域网怎么判断IP冲突?ARP协议介绍ARP,Address Resolution Protocol,翻译为地址解析协议,用于不同网络层次之间的地址解析,如网络层IP到物理层MAC地址的解析。ARP报文格式硬件地址类型[ Linux-2.5.17/include/linux/i

2020-07-31 07:13:01 58

原创 Linx——我的Linux/Unix枕边书【vim篇】

三种模式命令模式(Command mode)输入模式(Insert mode)底线命令模式(Last line mode)图片来自于:https://www.runoob.com/linux/linux-vim.html操作命令模式模式搜索命令说明/pattern查找当前光标之后的匹配,下一个当前光标之后的匹配为字母按键’n’,上一个当前光标前匹配为大写字母按键’N’?pattern查找当前光标之前的匹配,下一个当前光标之后的匹配为字母按键’N’,上一个当前光标

2020-07-26 16:42:02 41

原创 Linux——我的Linux/Unix枕边书【命令篇】

文章目录内存查看当前使用内存文件系统查看终端当前路径设备挂载查看挂载设备信息卸载设备挂载设备CPU查看CPU信息进程查看进程列表网络获取端口信息文件操作文件压缩解压\*.tar.gz或者\*.tgz后缀的文件使用gzip压缩文件其他命令文本处理命令参数处理软件安装环境变量查看所有环境变量查看某个环境变量的值常用命令杀死匹配名称的进程某个名称的进程配置环境变量内存查看当前使用内存free使用系统:linux,unix不可用单位:bytefree单位:mbfree -m单位:gbfr

2020-07-26 10:17:23 40

原创 协议学习-VRRP协议
原力计划

本文就VRRP协议进行了简单介绍,并使用eNSP虚拟实验环境进行了VRRP路由故障转移测试和负载均衡的实验文章目录背景知识基本概念工作过程:参数VRRP路由器启动Master路由器Backup路由器总结实验实验环境拓扑结构各PC配置实验一:测试VRRP故障转移实验二:配置路由负载均衡资源下载eNSP百度网盘下载:网络拓扑文件下载拓展学习参考文章背景知识VRRP,Virtual Router Redundancy Protocol,是由IETF提出的解决局域网中配置静态网关出现单点失效现象的路由协议.

2020-05-17 10:54:31 184

原创 Maven-使用Gitee构建Maven私人仓库
原力计划

背景:我在使用官方Maven从Gitee仓库下载依赖出现Failure to Authentication:403 Forbidden的问题,在经过一番测试和分析之后,找到原因并成功实施。摘要:本文主要介绍构建Gitee私人Maven仓库的步骤,以及提出相关问题的解决方案。文章目录上传jar包将jar包发布到本地仓库本地仓库目录初始化为git目录,将所有文件推送到远程仓库引用远程仓库的ja...

2020-04-27 11:39:26 477

原创 Spring专区-梳理Spring-Session Redis分布式会话管理的实现
原力计划

Spring-Session 2.1.x中对spring-session-data-redis中分布式会话设计的一些理解文章目录Redis存储结构Session信息存储Principal与Session之间的映射同一时刻过期会话集合会话有效key会话事件PUB/SUBKeyspace event notificationsRedisSessionRedisOperationsSessionR...

2020-04-12 20:21:36 131

原创 Redis专区-Keyspace Event Notification

此通知用于Spring-session-data-redis中,用于监听会话的过期事件和删除事件。在此对官网文档做一次梳理。可用版本:2.8.0+Note:如果客户端在某段时间内断开了连接,那么这个时间段内的事件通知将会丢失,即重新连接无法收到相关事件事件类型以进行del mykey操作为例key-space通知使用key作为channel标识,进行的操作作为消息内容等价于下面命...

2020-04-12 18:20:40 47

原创 Kafka-Listener配置参数、配置公网访问以及可能出现的问题
原力计划

文章目录核心参数listenersadvertised.listenerslistener.security.protocol.mapinter.broker.listener.name配置外网访问配置实例可能会出现的问题listener_name不能相同inter.broker.listener.name must be a listener name defined in advertised...

2020-04-04 20:21:02 1966

原创 Spring专区-定义自己的Aware接口
原力计划

文章目录核心类介绍BeanPostProcessor何时需要自己定义Aware接口?核心类介绍BeanPostProcessor该类是在Bean对象已经调用构造函数构造出对象后会使用该接口对应的实现类对象进行处理,该接口包含两个方法:Object postProcessBeforeInitialization(Object bean, String beanName) throws B...

2020-04-03 22:10:25 118

原创 登录模块-分布式会话设计文档
原力计划

预备知识会话保持我们都知道HTTP是无状态协议,如果我们在同一网站进行连续两次请求时,服务器是无法识别两次请求的相关性,尤其是需要登录认证的网站,如果第一个请求是登录请求,服务器认证成功,然后进行第二次请求,服务端仍然无法识别该请求的具体身份,就会返回“403 Forbidden”或者重定向至登录页面,然后需要进行发送登录请求进行重定向至该页面,这无疑是极差的用户体验。所以我们需要存在一个服务...

2020-04-02 21:51:17 87

原创 YUV概述以及码率计算方法

文章目录概述YUV的存储方式YUV常见的三种格式4:4:44:2:24:2:0YUV表示的图像码率的计算方法4:4:4表示方法4:2:2表示方法4:2:0表示方法概述YUV,称YCrCb,是颜色空间的一种表示方法。Y表示明亮度(Luminance或Luma),也就是灰阶值(0~255);U和V表示的则是色度(Chrominance或Chroma),作用是描述影像色彩及饱和度,用于指定像素的颜色...

2020-04-01 20:48:23 234

原创 Python[持续更新]

文章目录Linux下安装Python常见问题Linux下安装Python下载Python源码压缩包Python-*.tgz如果需要配置一些模块,解压后对modules文件下的Setup.dist进行配置# 解压文件tar -zxvf env/Python-3.7.4.tgz# 重新压缩tar -czf Python-3.7.4.tgz Python-3.7.4/编译并安装...

2020-02-23 10:12:49 68

原创 [应用] Spring进行接口监控

我们在对api进行设计时,需要考虑对api的监控,监控内容包括:api调用状态、api调用时间,以及时发现问题。我们说一下用Spring拦截器进行接口监控的简单设计。文章目录在一次请求中一些核心组件的处理步骤关于`HandlerInterceptor`做接口监控的设计在一次请求中一些核心组件的处理步骤1、HandlerInterceptor#preHandle2、handle3、Ha...

2019-12-29 22:30:23 122

原创 [基础]Mac开发使用快捷键

文章目录截图全屏截图矩形区域截图终端快捷键移动光标到行首移动光标到行尾移动光标到单词头移动光标到单词尾打开当前终端所在目录的finder窗口截图全屏截图shift + command + 3矩形区域截图shift + command + 4备注:截图文件自动保存到桌面上终端快捷键移动光标到行首control + a移动光标到行尾control + e移动光标到单词头...

2019-12-15 21:34:43 49

原创 MyBatis Mapper在Spring中的扫描和接口代理

我们使用SpringBoot+Mybatis构建Web应用时时,往往只需要在Application启动类上标注一个@MapperScan注解,Spring就会自动在@MapperScan定义的basePackage中扫描Mapper接口并将对应的bean注册到ApplicationContext中,本着知其然知其所以然的原则,下面我们就通过源码聊一下MyBatis Mapper的扫描和代理原理。...

2019-12-11 18:18:22 92

原创 [ 工具 ] 在Web中的常见的用于参数处理的方法以及在Java中的使用(持续更新)

文章目录一、URL编码二、Base64三、Unicode四、Md5五、随机字符串六、时间戳和格式化时间互转【需要学习Java新的时间API】七、Hex--字节数组转换成十六进制字符串一、URL编码该编码一般用于Content-Type:application/x-www-form-urlencoded的数据,如果前端传到后端的是编码后的一段数据,我们就需要进行解码,URL编码和解码可以使用Ja...

2019-11-29 10:02:53 85

原创 分析CF活动网站请求总结

 近日,朋友委托我做一个CF活动的辅助工具,这种工具都是靠模拟请求来实现的。既然是模拟请求,我们需要知道该网页是怎么进行请求的(主要是查询参数、首都的分析)?它返回的信息是什么?代表什么含义?我们可以通过Firefox开发者工具分析请求信息从而分析其请求的逻辑和要素。网站是这个:https://act.daoju.qq.com/act/a20190701wish/?appinstall=0,一般像...

2019-11-26 09:07:14 136

原创 [ 实践 ] 将安卓微信聊天记录导出为可读格式的一些记录

 现在大部分人都在用微信进行通信,微信官方宣称服务器不会存储用户的聊天信息,那好,微信的聊天记录存储在哪里?以什么方式进行存储的? 网上查证,微信的聊天记录是在/data/data/com.tecent.mm/MicroMsg目录下的一个md5值命名的文件夹下,其中的EnMicroMsg.db文件是通讯信息的数据库文件。我们现在需要拿到这个EnMicroMsg.db文件,因为文件在系统文件夹/d...

2019-11-23 14:04:56 432

原创 敏感字词过滤业务涉及的知识点

目前网络言论环境相当自由,键盘侠层出不穷,拿起键盘一梭子就是问候祖宗十八代的现象屡见不鲜,这就需要应用有能力对这些低俗敏感词进行过滤,以营造绿色的网络环境,虽然“***”大家都心知肚明,但是表面功夫还是要做的,起码不能让家长发现我们的应用过于低俗。下面我们谈谈这个业务系统的设计和相关知识点。1、敏感字词过滤系统的基本要素:敏感字字典、敏感词匹配算法、脱敏处理2、敏感词过滤算法的设计1)基于正...

2019-11-02 09:54:55 479

原创 讨论Java中字符串的不变性

Java中String对象被设计成是不可变的,这主要体现在下面方面:1、class String被声明为final。2、class String的char[]不可被访问。存在以char[]为参数的构造函数或者substring方法都是通过拷贝副本的方式实现的。我们来研究一下这两个设计的目的,首先为什么class String被声明为final?class String被声明为final本身...

2019-10-27 15:52:31 48

原创 我误解了String#substring方法

我们一般使用substring进行字符串的截取操作,特别是模式匹配的时候,我们会获取匹配到的start和end,然后调用str.substring(start, end)截取[start, end)范围的子串。最近我在做关于敏感词过滤的业务,我想获取字符串中存在字典中的正向最长字符串匹配,然后进行脱敏处理,部分代码如下:public CharSequence searchNextMatch(St...

2019-10-27 10:52:38 59

原创 原理 - Spring:(三)一次Spring请求

该文章展示了用debug获取的一个请求到来时的调用栈,解释了Spring请求-响应过程的主要类和方法阅读源码,主要还是需要知道核心方法和调用逻辑,debug是了解一个方法调用时发生了什么的关键。下面我们通过debug了解Spring收到一个普通请求时的调用过程:请求到来时的调用栈:相关类及其核心方法:DispatcherServlet.doDispatch包含拦截器、Handler...

2019-08-23 10:59:49 61

原创 原理 - Spring:(二)DispatcherServlet.doDispatch方法流程

该文章主要介绍了DispatcherServlet的主要逻辑实现 – doDispatch方法,包括拦截器各个方法调用时机、Handler的查找和调用等主要逻辑DispatcherServlet主要在doDispatch中分发请求以及拦截器的调用,(源代码下方有流程图)protected void doDispatch(HttpServletRequest request, HttpSe...

2019-08-23 10:53:53 147

原创 原理 - Spring:(一)DispatcherServlet继承体系

该文章介绍了DispatcherServlet的继承体系,以及各个父类或者父接口赋予的特性DispatcherServlet本质也是一个Servlet的子类HttpServlet继承ApplicationContextAware获取Bean的ApplicationContext上下文HttpServletBean将web.xml的init-param作为bean的属性对待,是HttpS...

2019-08-23 10:47:27 51

原创 源码阅读 - 线程池:线程池原理(十)Worker内部类

该文章介绍了worker类,即是线程池的工作线程,讨论了该类的一些特性。Worker继承AQS抽象类,继承AQS可以获得互斥访问的能力,我们在ThreadPoolExecutor会看到runWorker和interruptIdleWorkers中存在w.lock()的操作,原因是为了防止对正在运行的线程造成影响。由于运行状态的线程处于加锁状态,所以可以通过tryLock判断线程处于空闲还是运...

2019-08-23 10:31:08 332

原创 源码阅读 -线程池:线程池原理(九)相关接口介绍

这篇文章将会介绍:1、ThreadFactory接口;2、RejectExecutionHandler接口,该文章只是让众位知道有这两个接口存在,无任何深度,不喜,跳过即可1、ThreadFactory线程工厂接口,用于线程池创建线程public interface ThreadFactory { Thread newThread(Runnable r);}下面是Thread...

2019-08-23 10:26:39 55

原创 源码阅读 - 线程池:线程池原理(八)ThreadPoolExecutor

该文章应该是一些重点的总结,有滥竽充数之嫌1、线程池在调用shutdown()后无法提交任务2、线程池shutdown()后,其状态会迁移到SHUTDOWB状态,等待工作线程执行完成3、线程池shutdownNow()后,其状态会迁移到STOP状态,调用工作线程的interrupt方法,但不一定能停止工作线程,需要用户逻辑实现中断的响应。4、线程池中有两种锁,一把是mainLock,用...

2019-08-23 10:22:29 50

原创 源码阅读 - 线程池:线程池原理(七)线程池的关闭

该文章主要介绍了shutdown和shutdownNow动作以及状态跃迁,以及线程该如何正确响应线程池的“停止”shutdown和shutdownNow源码解析public void shutdown() { final ReentrantLock mainLock = this.mainLock; mainLock.lock(); try { ch...

2019-08-23 10:20:07 75

原创 源码阅读 - 线程池:线程池原理(六)线程的任务调度和执行runWoker

该文章主要介绍了线程池如何进行任务的执行以及线程池超时收缩的策略Woker继承Runnable,它的run方法只调用了runWorker方法。public void run() { runWorker(this);}runWorker执行两种任务:1、Worker初始化时的firstTask(可能为null)2、前者为null时,从工作任务中获取任务进行执行final ...

2019-08-23 10:14:35 160

原创 源码阅读 - 线程池:线程池原理(五)一个execute(Runnable)调用经历了什么?

该文章的主要目的是为了介绍execute方法的主要逻辑,还讨论了线程池的增长线程的工作线程和任务的提交执行受到线程池状态的影响,情况颇为复杂,不过总结起来,梳理清楚,不禁大赞doug lea。(流程图好难画啊)execute的源码如下:public void execute(Runnable command) { if (command == null) thr...

2019-08-23 10:09:10 345

原创 源码阅读 - 线程池:线程池原理(四)addWorker--execute方法的前奏

private boolean addWorker(Runnable firstTask, boolean core);方法参数:firstTask – 需要执行的任务,和worker进行绑定,可以为nullcore ------- 是否为核心线程,如果为true,则使用corePoolSize;否则使用maxPoolSizeprivate boolean addWorker(Runna...

2019-08-23 10:02:45 224

原创 源码阅读 - 线程池:线程池原理(三)线程池的状态解析

SHUTDOWN状态只有在调用shutdown方法时才会存在STOP在调用shutdownNow方法时才会存在TIDYING和TERMINATED在调用tryTerminate时可能会存在TIDYING状态出现在工作线程集合为空的情况下TERMINATED出现在在设置完TIDYING,回调terminated()调用完成之后线程池一旦调用shutdown或者shutdownNow会拒绝任...

2019-08-23 09:59:12 78

原创 源码阅读 - 线程池: 线程池原理(二)线程池构造函数解析

一、基本构造函数public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, ...

2019-08-23 09:55:29 64

原创 源码阅读 - 线程池:线程池原理(一)线程池概述

平时我们使用线程,都应该使用线程池。为什么呢?1、线程池易于管理2、杜绝了线程的随意创建3、线程调度交由线程池管理更为高效4、线程池可伸缩,能根据当前任务数量自动调节工作线程的数量,线程调度更为高效我们平时习惯使用Executors的newCachedThreadPool、newFixedThreadPool、newSingleThreadPool创建线程池,其实都是使用TheadPo...

2019-08-23 09:51:24 94

原创 原理 - Java - Java闭包实现细节

所谓闭包,说明白一点就是可以在一个函数中引用另一个函数定义的变量,这个变量称为自由变量。Java8通过lambda表达式支持这一点,但是该变量必须声明为final,究其实现,就能理解这个final的用意了。定义下面的测试代码:import java.util.*;import java.lang.reflect.*;public class Closure{ private s...

2019-08-03 11:08:25 147

原创 java-tool:keytool使用和理解

keytool命令往密钥库文件中添加密钥(或者生成密钥库文件)keytool -genkey -alias 密钥条目别名 -keystore 密钥库文件(一般.jks后缀)例子:向client.jks密钥库文件中添加别名为client的密钥,如果没有该文件,自动创建之keytool -genkey -alias client -keystore client.jks查看密钥库文件内容...

2019-06-28 16:34:04 85

原创 git

文章目录git初始化pull添加文件提交push删除文件git初始化#初始化本地仓库git init#设置远程仓库地址git remote add origin 仓库git#设置github邮箱和用户名git config --global user.email "xxx@email.com"git config --global user.name "xx"pull无关...

2019-06-28 16:21:08 34

空空如也

ConcurrentHashMap源码的细节问题

发表于 2019-04-03 最后回复 2019-04-03

关于swing中组件的刷新的刷新问题一角

发表于 2017-12-29 最后回复 2017-12-30

空空如也

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

TA关注的人 TA的粉丝

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