自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 问答 (1)
  • 收藏
  • 关注

原创 《Redis设计与实现》笔记

《Redis设计与实现》笔记1. 关于redis管理 带expire的key 的笔记:2. 关于redis实现持久化的笔记:3. 关于redis事件处理的笔记:4. 关于redis主从复制的笔记:5. 关于redis哨兵模式的笔记:6. 关于redis集群的笔记:7. 关于redis发布与订阅的笔记:8. 关于redis事务的笔记:9. 关于redis lua脚本的笔记:10. 关于redis二进制位数组的笔记:11. 关于redis慢查询日志的笔记:最近想系统学习redis,通过查阅资料,发现《Redi

2021-12-11 21:24:15 491

原创 自定义注解实现Redis缓存功能

自定义注解实现Redis缓存功能0. 写在最前1. 思路2. 项目搭建3. 注解实现4. 总结0. 写在最前本文主要作为记录学习Redis的过程,利用自定义注解实现Redis缓存功能。最近在学习Redis和SpringBoot,本来以为用框架实现缓存是一件比较复杂的事情,没想到SpringBoot已经封装好了方法,只需要配合@Cachable等注解就可以使用了。惊叹于SpringBoot的优美之余,心中闪现出了自己动手实现一个类似功能的想法,于是便有了这篇文章。1. 思路如下是流程图,实现起来应该

2021-06-03 21:59:50 538

原创 kafka自定义序列化反序列化

kafka自定义序列化反序列化0. 问题1. 原因分析2. 解决方法3. 结果测试0. 问题最近在学习kafka的时候碰到一个问题,当我尝试使用kafka发生一个pojo对象时,使用如下配置的时候,发现代码报错了,是类型匹配错误:application.yuml配置如下###ThymeLeaf配置spring: thymeleaf: #模板的模式,支持 HTML, XML TEXT JAVASCRIPT mode: HTML5 #编码 可不用配置 encodin

2021-05-30 15:38:47 646

原创 归并排序Java实现

归并排序Java实现public class MergeSort { public static void sort(int[] nums) { sort(nums, 0, nums.length - 1, new int[nums.length]); } /** * 对 [left,right] 左闭右闭区间进行归并排序 * * @param nums * @param left * @param right

2021-04-22 18:09:22 100

原创 快排Java实现

快排实现1. 思路2. 实现1. 思路快排是基于分治思想在数组中选中某个数值为基准,左边大于等于基准,右边小于等于基准。这里就不举例子了,网上类似的文章很多,这篇文章主要是剖析快排算法的实现。2. 实现这里将会罗列两种写法,可以仔细对比两者区别,就能够更好地理解快排的思想。这是一种写法:public class QuitSort { public static void sort(int[] num) { sort(num, 0, num.length -

2021-04-21 20:50:31 147

原创 华为暑期实习技术面试1

自我介绍,项目介绍项目中遇到什么比较难的问题分布式锁,为什么要加锁负载均衡实现多态抽象类final有什么用如何跳出嵌套循环内存回收机制如何保证内存不被异常回收数据库隔离级别有哪些什么时候可以改变隔离级别事务HTTP加密吗https加密过程怎么验证证书TCP udp使用场景java代码实现tcp实现TCP服务端查看进程信息CPU占用率磁盘占用率结束命令,底层怎么实现kill -9 kill -15有什么区别?通过什么实现?具体是什么信号?进程和线程的区别创建线

2021-04-09 22:04:21 131

原创 Java多态原理

Java多态原理最近在准备面试,顺便复习以下Java最基础的东西仅作参考Java多态原理Java多态原理0. 什么是多态1. jvm内部类信息2. 多态的实现原理为了更好地理解多态的原理,首先必须对jvm内存模型、Java方法调用等知识有点了解。0. 什么是多态多态分为两种,本文着重讲解运行时多态。编译时多态。也叫做静态多态,指的是方法的重载,在同一个类中,同样的方法签名却有不同的参数。编译时通过静态绑定就能实现。运行时多态。也叫做动态多态,指的是方法的重写,在具有继承关系的类中,子类重

2021-03-28 15:14:27 1339

原创 矩阵回型遍历

矩阵回型遍历矩阵回型遍历0. 如何操作矩阵(二维数组)1. 题目分析1.1 画图1.2 遍历的方式1.3 如何限定遍历的顺序?或者是遍历的方向?1.4 如何确定结束条件?2. 实现代码3. 总结矩阵回型遍历0. 如何操作矩阵(二维数组)输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,

2021-03-14 21:02:25 1361

原创 注册Driver的原理

注册Driver的原理本文只是简单解析一下注册Driver驱动的问题注册Driver的原理注册Driver的原理在刚开始学习jdbc的过程中没有留意一个细节,在连接数据库前需要注册jdbc驱动,可是我们只是写了一行代码:Class.forName(…Driver)。当我们点进Driver类就可以看到如下代码:我们知道,使用Class.forName加载类的过程还会实例化该类,即加载静态代码块里的注册代码,剩下的就是具体的注册过程了。...

2021-01-15 00:33:58 224

原创 预编译是什么

预编译本文将浅显地讲解什么是预编译这里写目录标题预编译1. 定义2. 为什么预编译的SQL能够有效地防止SQL注入攻击~~因为使用PrepareStatement,Java帮助我们进行了文本替换工作?~~3. 原理1. 定义预编译是做些代码文本的替换工作。是整个编译过程的最先做的工作。2. 为什么预编译的SQL能够有效地防止SQL注入攻击在了解预编译SQL前,我们最先接触到的预编译应该是PrepareStatement了吧?在刚接触JDBC编程的时候,我们使用的SQL执行器是Statemen

2021-01-15 00:33:00 6889

原创 事务隔离级别介绍

事务隔离本文将介绍MySQL的四种事务隔离级别在数据库操作中,为了有效保证并发读取数据的正确性,提出了事务隔离级别。事务隔离级别是由加锁机制和类型决定的。1. 未提交读(Read Uncommitted)允许脏读,也就是可能读取到其他会话中未提交事务修改的数据。2. 读提交(Read Committed)只能读取到已经提交的数据Oracle等多数数据库默认都是该级别。3. 可重复读(Repeated Read)可重复读,在同一个事务内的查询都是事务开始时刻一致的,InnoDB默认级别。

2021-01-15 00:31:55 149

原创 数据库范式介绍

数据库范式本文主要在逻辑代数层面说明几个常见范式与应用不规范的情况数据库范式介绍数据库范式1. 1NF(第一范式)2. 2NF(第二范式)3. 3NF(第三范式)4. BCNF范式1. 1NF(第一范式)数据库表的每个属性都是原子的,不能再细分。例如:不能存在数据记录为('data1','data2','data3,data4')上面例子中,第三个数据项记录为 data3,data4 是不符合规范的,虽然可以通过逻辑代码将数据分割,但没必要,第一范式规定每个属性的数据都是唯一的。2. 2NF

2021-01-15 00:29:59 95

原创 SQL注入

SQL注入SQL注入SQL注入1. 定义2. 例子1. 定义SQL注入即是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的语句的结尾添加上额外的SQL语句,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务期执行非授权的任意查询,从而进一步得到相应的数据信息。2. 例子模拟用户登录,正常的语句:select * from `user` where `username` = 'xxx' and `password` = '123456'

2021-01-15 00:26:53 176

原创 MySQL索引的类型与实现

索引本文将对索引的知识点进行总结归纳索引的知识总结索引1. 索引的概念2. 索引具体采用哪种数据结构3. 采用B+ Tree索引和Hash索引对比起来有什么优缺点4. 最左匹配原则5. MyISAM存储引擎与InnoDB存储引擎索引实现的不同(存储结构)6. 选择UUID还是整型自增作为主键7. 聚集索引和非聚集索引在查询数据的时候有什么区别8. 在创建联合索引的时候,联合索引多个字段的顺序我们该如何选择9. 查询优化器1. 索引的概念索引是一种数据结构,能够帮助我们快速地检索数据库中的数据2

2021-01-13 15:32:03 119

原创 实现一个简易的线程池——线程复用

实现一个简易的线程池一、行文介绍二、线程池的概念三、线程池的原理四、阻塞队列介绍五、概念科普六、简单的线程池模型实现七、分析总结一、行文介绍实际上本人没有实战地使用过线程池,写这篇文章仅仅是出于对线程复用的兴趣。本文将通过在网上搜集到的资料以及自己编写的简易版的线程池来说明线程复用技术。二、线程池的概念线程池是一种提高系统性能的技术,可以创建一定数量的工作线程,当向线程池提交任务时,线程池中的空闲线程将会接收任务并执行,执行完之后线程并不会马上关闭,而是处于空闲状态,等待下一个任务的到达。在这里

2020-10-21 20:30:50 212

原创 对ThreadLocal的理解

对ThreadLocal的理解一、什么是ThreadLocal二、关于ThreadLocal的API三、探究源码实现四、发现问题五、补充知识六、验证 五七、阶段总结八、从源码中探究九、总结十、应用场景一、什么是ThreadLocal看名知意,线程本地变量 ,也就是某个线程的变量。可以理解为该线程独享的变量。二、关于ThreadLocal的API上图显示了ThreadLocal的API,分别有get()、set()、remove()、withInitial();三、探究源码实现探究思路:透过ge

2020-10-17 14:43:45 140 2

原创 对于Java volatile的理解

对于Java volatile的理解一、什么是volatile二、什么是内存可见性三、举个例子四、补充一个知识点五、问题的提出六、回归什么是内存的可见性七、应用一、什么是volatile简单来说就是Java并发机制的一个关键字,可以协助我们进行并发编程,同时也是面试高频考点。作用于字段(属性),可以保证改变量的内存可见性。二、什么是内存可见性1.理解内存可见性的前提是理解JMM(Java的内存模型),如下图。我们知道线程在JMM的管理下有自己独立的内存空间,叫做 工作内存 ,线程的工作内存相互隔离

2020-10-16 23:09:39 104

原创 关于foreach循环不能修改变量的值问题

关于foreach循环不能修改变量的值问题一、发现问题二、探究原因三、验证四、总结一、发现问题直接上代码 List<Integer>[] lists = new ArrayList[5]; for (List list : lists){ list = new ArrayList(); } for (List list : lists){ System.out.

2020-10-11 23:08:45 6891 4

原创 如何理解<T extends Comparable<? super T>>

如何理解< T extends Comparable<? super T>>一、extends与super二、< T extends Comparable<? super T>>如何理解?三、总结四、举例一、extends与super产生背景:在Java泛型中,用 T 作为类型参数,而由于Java泛型不是不同于数组具有 协变 特性,即Boy IS-A People但List NOT IS-A List,所以为了方便类型的转换…产生了extends以及sup

2020-10-09 01:23:42 868 1

原创 Java泛型T与?的区别

其中T用于类定义时使用,比如 <>public class People</>,不能用于类型定义?用于类型定义时使用,比如 <>HashMap<?> 或 public class Boy<T extends People<? extends T></>></>

2020-10-08 12:16:38 175

原创 Java内部类与静态内部类的区别

Java内部类与静态内部类的区别简单地区分内部类与静态内部类区别简单地区分内部类与静态内部类1.内部类:在类内部定义的没有static修饰的类2.静态内部类:在类内部定义的被static修饰的类区别1.外部类有指向内部类的引用,可以通过如下反编译代码看出:链接: 例子出处.留意字段 final List this$0private class List$Node{ List$Node next; List$Node pre; Object data; fina

2020-10-07 18:00:29 550

原创 Java 对LinkedList进行遍历的方法性能比较

Java 对LinkedList进行遍历的方法性能比较测试代码:运行结果:分析:总结:测试代码:分别使用了①iterator迭代器、②普通的for循环+get方法、③增强型的for循环对list进行遍历package club.jming.test;import java.util.Iterator;import java.util.LinkedList;import java.util.List;public class IteratorTest { public static

2020-09-29 21:12:01 445

原创 如何理解Java是值传递?

如何理解Java是值传递?public class RecursionTest { public static void main(String[] args) { RecursionTest test = new RecursionTest(); int num = 10; People people = new People("小花",12); test.change(num); test.change(peop

2020-09-15 09:49:14 362

原创 如何确定递归的返回值以及参数

递归:如何确定递归的返回值以及参数?——关于做八皇后的总结根据做过的题目可以知道,有些递归可以直接返回值,而有些递归却需要往参数处注入一个数据,然后通过递归来修改参数的值(。。。)①而可以确定的一点是,通过返回值返回数据的递归,每次只能返回一个值②通过往参数注入一个数据的递归,可以在递归的过程中不断地往参数增加数据(List),可以理解为返回值不止一个...

2020-09-15 09:48:13 912

原创 关于父类引用指向子类对象时的一些理解(多态)

先说结论,可以通过代码检验,这理解不给了:1. 若子类未覆盖某方法,则父类引用调用父类本身的旧方法2. 若子类覆盖了某方法,则父类引用调用了子类重新定义的新方法3. 若子类覆盖了某属性,则父类引用仍调用父类本身的旧属性4. 若子类未覆盖某属性,则父类引用调用父类本身的旧属性5. 父类引用不能访问子类新定义的属性和方法个人理解:这里有关于Java多态的原理与特性,可以如下理解,但仅仅出于个人理解,以这种 猜测 可以帮助理解但真正实现原理并不一定就是如此,甚至可能是错误的想法,有机会看完jvm的

2020-09-11 13:54:10 725

原创 xmlns解疑

xmlns解疑为什么要使用xmlnsxmlns的使用场景为什么要使用xmlns1.xmlns翻译过来就是xml命名空间,作用是唯一地指定标签名。2.xmlns使用一段url来特定修饰一个前缀,如下为spring的配置文件,使用url的理由是,url在互联网上具有唯一性,与包命名机制类似。<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"

2020-07-31 11:16:20 127

原创 模拟注解编程(Java注解实战——使用注解对对象赋值)

代理模式实现Java数据库连接池实现原理实现过程实例实现原理1. Java动态代理,对connection进行加强实现过程1.新建一个连接池类 DBComPool2.实现 getConnection() 方法,返回动态代理对象实例package club.jming.c3p0.myc3p0;import javax.sql.DataSource;import java.io.PrintWriter;import java.lang.reflect.InvocationHandler

2020-07-26 13:42:41 363

原创 使用c3p0

c3p0使用步骤测试步骤配置pom.xml文件,引入依赖<!-- https://mvnrepository.com/artifact/com.mchange/c3p0 --> <dependency> <groupId>com.mchange</groupId> <artifactId>c3p0</artifactId> <version>0.9.5.5<

2020-07-25 20:35:50 100

原创 拆机

、13年的机,华硕431c,拆机留念

2020-06-07 10:12:06 144

原创 为什么自己写的程序只能通过局域网访问(部署在本地),而部署在阿里云上的却可以访问?

Q:为什么自己写的程序只能通过局域网访问(部署在本地),而部署在阿里云上的却可以访问?前言正文A:前言最近复习计网,对以前的一些疑问有了初步的答案你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。正文A:①网络IP分为专业网络和公用网络。专用网络有如下几类a 10.0.0.0 ~ 10.255.255.255b 172.16.0.0 ~ 172.31.255.255

2020-06-04 01:37:27 1529

原创 Unable to compile class for JSP的解决方法

Unable to compile class for JSP的解决方法目录Unable to compile class for JSP的解决方法情况描述环境报错如图问题分析解决方法总结情况描述最近在写web项目的时候,发现生产环境中,每次访问jsp页面都会返回HTTP Status 500错误。环境idea maven 集成的 tomcat(tomcat/6.0.29)报错如图...

2020-05-04 20:42:03 11933 2

原创 如何用idea快速搭建web的maven项目

这里面向新手,只做演示,不讲原理,通过这篇文章,按照步骤能够让新手快速地搭建建议的web项目,需要了解实现原理的,就没必要往下翻了。目录如何用idea快速搭建web的maven项目创建项目引入mawen依赖创建简单的servlet配置web.xml启动tomcat,这里使用maven配置的tomcat常见错误:如何用idea快速搭建web的maven项目创建项目在idea new proj...

2020-05-03 01:50:30 182

原创 cannot be cast to javax.Servlet 解决方法

cannot be cast to javax.Servlet 解决方法出现的bug,在使用maven创建的web项目启动tomcat时,出现了错误排查首先检查servlet是否继承了HttpServlet其次,检查web.xml配置最后问题还是没有解决在翻阅网上资料,发现maven依赖中的与tomcat中的servlet-api.jar存在jar冲突,解决方法,修改maven中pom.xml里j...

2020-05-03 00:14:44 4466

原创 Java ClassLoader笔记

最近学习《高琪300集》的手写servlet,对于底层的原理不是很理解,于是想研究类加载器,以下是在网上收集整理的笔记,并非原创,文章末尾补充了原文地址。

2020-04-10 23:54:03 239

原创 如何利用Java反射机制修改private值

如何利用Java反射机制修改private值/**这是一个测试反射的类:1、返回Class对象@Class<?> clazz = Class.forName(“packageName.ClassName”);2、返回一个对象@Object object = clazz.getConstructor(para.class).newInstance(Object para)...

2020-04-05 22:53:34 1096

空空如也

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

TA关注的人

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