JDK和CGLIB动态代理 2022-08-28| 技术 | Java Java中动态代理代理包括JDK动态代理和CGLIB动态代理。前者通过实现目标类的接口,和反射技术实现。后者不需要实现接口,而是通过继承目标类,并通过方法拦截技术实现。Spring的AOP技术则是集成了这两种动态代理。本文对两种代理的使用方法做一个简要介绍。
代理模式
首先介绍下设计模式中的代理 ...
阅读更多 JDK源码分析系列--HashMap 2022-08-24| 技术 源码 | 源码 java.util.HashMap源码一直是面试必问的项目,包括底层数据结构、扩容机制,以及为什么线程不安全等。本文作为JDK源码分析系列的开端,首先从HashMap开始,对其源码进行剖析。源码基于JDK1.8
关于红黑树的部分,本文由于篇幅有限,不再展开。
数据结构
在介绍具体方法前,有必要说明 ...
阅读更多 Linux部署系列--RabbitMQ 2022-08-17| 技术 | 部署 - MQ RabbitMQ的部署有很多坑,有时候项目要求搭建个MQ测试环境,没有经验的话会浪费很长时间。记录下来,以备不时之需。
目前RabbitMQ最新版本已经迭代到3.10.7,部署过程可能已有区别。本文仅供参考。
版本
RabbitMQ是Erlang语言编写的,所以在安装RabbitMQ之前,需要先安 ...
阅读更多 Linux部署系列--Ruby 2022-08-16| 技术 | Ruby - 部署 初次接触Ruby是因为Redis4.0集群搭建需要依赖Ruby环境。
Ruby 是一种面向对象、指令式、函数式、动态的通用编程语言,由松本行弘在1995年设计并开发。想了解更多可以去官网ruby-lang.org查看。
安装ruby有多种方式,本文主要讲解源码方式安装ruby,不推荐使用yum安装
...
阅读更多 Linux部署系列--Redis 2022-08-15| 技术 | 部署 - Redis 本文主要记录了Redis单机、集群模式安装步骤,及操作过程所踩的坑。记录一下,也供大家参考。
另外,学习Redis,推荐阅读大神黄健宏的《Redis 设计与实现》,这本书让我受益良多。
环境
Linux版本是CentOS 7.7,redis版本为4.0.14
版本可以使用./redis-serve ...
阅读更多 Linux部署系列--Mysql 2022-08-14| 技术 | 部署 - Mysql 网上Mysql部署相关的博客虽然很多,但要么是系统有差异,要么MySQL版本不同,要么有些博客本身就有错误,导致每次部署都难免要浪费一些时间。所以想着记录下部署步骤与遇到的问题,提升工作效率。
部署环境:Linux版本是CentOS 7.7,Mysql版本是5.7.32,使用rpm方式部署
下载 ...
阅读更多 佶 2022-08-07| 小说 | 故乡 - 人物 这是2016年春节期间,在皖南老家写的。自从外出上学后,便很少回到这里。每回来一次,陌生感便更增一分。年轻人多在外务工,小孩子都已长大,老年人陆续湮没于黄土。熟悉的石板路、老房子、水田都已消失,玩耍的小孩子也不再是熟悉的那些面孔。于是想着记录下这些。如今,又是六年过去,庆幸自己当初写下这篇,才不至于 ...
阅读更多 JDK源码分析系列--排序 2022-08-03| 技术 | Java 排序是Java中十分基础的功能。尽管平时经常用到,但都没关注具体怎么实现。本文以最常用的集合排序为切入点,分析下Java中集合排序、数组排序的用法,以及引用类型和基本类型排序的实现细节。梳理一遍才发现,底层排序算法比想象中要复杂的多。真应了《道德经》中说的,学之愈多,愈觉知之不足。
集合排序
Ja ...
阅读更多 JDK源码分析系列--随机 2022-08-03| 技术 | Java 本文以 java.util.Random 类为切入点,简单的探讨了一下Random对象构造原理、成员方法的使用,以及常用随机功能的实现。旨在对随机数有个浅显的认识。水平有限,理解不到之处,还请斧正。
获取随机数
Java获取随机数有两个主要途径,分别是java.util.Random 类和 ja ...
阅读更多 valid参数校验方法 2022-08-01| 技术 | Java 项目中经常需要对请求参数进行校验。不仅麻烦,冗长的 if 判断语句使代码显得十分臃肿。本文介绍使用 @Valid 注解方式配置校验,直接定义在字段处,方便又简洁。 javax.validation.Valid 底层是通过AOP技术,对请求拦截,若请求参数不满足要求,则直接抛出异常,统一处理后响应给前 ...
阅读更多