自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 收藏
  • 关注

原创 ThreadPoolExecutor的参数与线程池的五个状态

今天研究了下ThreadPoolExecutor,它是Executors.newXxxxx()的返回结果,像Executors.newCachedThreadPool();,它实际上是这个:public static ExecutorService newCachedThreadPool() { return new ThreadPoolExecutor(0, Integer.MAX_VALUE, 60L, TimeUnit.SE

2020-09-13 16:59:29 466

原创 笔记——并发之JVM篇

并发之JVM篇并发之JVM篇Java 内存模型试图屏蔽各种硬件和操作系统的内存访问差异,以实现让 Java 程序在各种平台下都能达到一致的内存访问效果。

2020-08-02 22:59:44 278

原创 笔记——Java并发

wait()让占用了同步对象的线程临时释放占有,并且等待notify() 随机通知一个等待在同步对象上的线程,让其有机会重新占用同步对象notifyAll() 通知所有的等待在同步对象上的线程苏醒,让其有机会重新占用同步对象...

2020-08-01 19:24:18 347

原创 IDEA的maven编译打包报错:找不到符号

如果项目有一堆子项目,应该在父级项目打包,而不是子项目父项目有一个[root]标志

2021-09-29 14:32:35 412

转载 调用方法时,return的内幕

return与finally到底谁先执行?我们经常会使用try/catch/finally语句块。当然,return关键字使用也是很平常的事,但是不知道大家有没有注意个这样一个问题。当在try语句块里面使用return语句,在finally里面去修改return所要返回的内容会出现什么情况。首先,我们知道return是结束方法的标志,一旦方法执行到return语句就将返回不再往下执行。其次,我们也知道,finally里面的语句是无论方法怎样执行,最后都要执行finally里面的语句。那么究竟是先执行ret

2021-07-28 16:55:35 367

原创 SpringBoot防忘指南

SpringBoot注解@SpringBootApplication@Controller@RequestMapping@RequestBody@ResponseBody@RestController@RequestParam@PathVariable@Valid@Service@Autowired @ResourceFilter注解@SpringBootApplication启动器,注解在有main()函数的类上。它整合了以下三个注解:@SpringBootConfiguration声明当

2021-03-29 17:01:14 185

原创 笔记——MySQL数据库系统原理

ACID未完成ACID原子性(Atomicity)事务被视为不可分割的最小单元,事务的所有操作要么全部提交成功,要么全部失败回滚。回滚可以用回滚日志(Undo Log)来实现,回滚日志记录着事务所执行的修改操作,在回滚时反向执行这些修改操作即可。一致性(Consistency)数据库在事务执行前后都保持一致性状态。在一致性状态下,所有事务对同一个数据的读取结果都是相同的。隔离性(Isolation)一个事务所做的修改在最终提交以前,对其它事务是不可见的。持久性(Durab.

2020-09-03 23:17:46 169

原创 JVM虚拟机执行子系统——类文件结构与类加载机制

类文件结构类加载机制类文件结构ClassFile { u4 magic; //Class ⽂件的标志 u2 minor_version;//Class 的⼩版本号 u2 major_version;//Class 的⼤版本号 u2 constant_pool_count;//常量池的数量 cp_info constant_pool[constant_pool_count-1];//常量池 u2 access_flags;//Class 的访问标记 u2 this_class;//当前类.

2020-08-25 15:44:53 150

原创 kmp算法的next数组解析

昨天天杀的做了个字符串匹配的题,于是天杀的重新学习 kmp算法(实际上第一次学的时候就没搞懂 )。给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。示例 1:输入: “abab”输出: True解释: 可由子字符串 “ab” 重复两次构成。 示例 2:输入: “aba”输出: False 示例 3:输入: “abcabcabcabc”输出: True解释: 可由子字符串 “abc” 重复四次构成。 (或者子字符串

2020-08-25 10:44:10 433

原创 索引的最左前缀匹配原则的误区与索引下推技术

最左前缀匹配原则是指where条件中在使用到 > < in between like等范围搜索的这个即以前的字段,如果可以与联合索引的前几个一一匹配,就可以使用这个索引。但是实际操作中我发现即使顺序不一致,即使条件的这些字段中多了几个不属于联合索引的字段,依旧使用了这个索引。是mysql的查询优化器会帮你优化成索引可以识别的形式。自己测试的时候还发现了自己的认知有些错误,故特地总结一下。test表:test表的索引: (a, b, c)1、查询语句:select * from

2020-08-24 14:36:49 1354 1

原创 除法求值-并查集-Java实现

一开始看除法求值题是想用图来做,结果看了半天别人的答案,看半天都没看出来哪有图,去搜了搜并查集,啊~~问题:给出方程式 A / B = k, 其中 A 和 B 均为用字符串表示的变量, k 是一个浮点型数字。根据已知方程式求解问题,并返回计算结果。如果结果不存在,则返回 -1.0。示例 : 给定 a / b = 2.0, b / c = 3.0 问题: a / c = ?, b / a = ?, a / e = ?, a / a = ?, x / x = ? 返回 [6.0, 0.5, -1.0

2020-08-23 02:56:06 165

转载 文本比较算法-Needleman/Wunsch算法-求最长公共子序列

1

2020-08-21 16:12:52 288

原创 ConcurrentHashMap源码剖析

前言继承与实现1前言HashMap虽好,却不是线程安全的,需要自行进行同步;HashTable是最早出现的哈比表实现,其用synchronized修饰方法,实现了线程安全,效率也因此大打折扣;JUC中的ConcurrentHashMap是最为推荐的线程安全哈希表,有必要进行学习。但同时需要注意不能因为其线程安全就忽视了线程安全,因为其方法虽然可视为原子操作,但如果在事务中多次调用其方法,那这个整体就不能算是原子操作了。继承与实现public class ConcurrentHashMap<.

2020-08-19 13:53:30 154

原创 记一次编码的奇异问题

读取一个文件,想在读到特定的一行时停止,就用了bufferedWriter.readLine().equals(“xxxx”)作为判断条件,这个xxxx前面后面都是空格。讲道理应该是没问题的,可是一直出错,找了半天,最后用getBytes(“utf-8”),文件读取的那一行是:000000-27-123-(中间略)-24-74-9333323232而"xxxx".getBytes(“utf...

2020-08-18 14:49:48 149

原创 HashMap源码剖析

为什么capacity必须是2的整数次幂?为什么hash(key)中要 h ^ (h >>> 16)?为什么capacity必须是2的整数次幂?计算key的位置的源码是tab[(n - 1) & hash],n是tab的length即 capacity,使capacity - 1再与hash进行与运算,就相当对计算结算进行取模,这样提升了计算效率;保证capacity为偶数,使得 1 中所讲的取模操作不会因capacity - 1出现二进制位有0的情况,使得出现类似 ha.

2020-08-18 13:46:25 127

原创 JVM 自动内存管理

数据区域程序计数器Java 虚拟机栈本地方法栈Java堆方法区(元空间)数据区域程序计数器如果线程正在执行的是一个Java方法, 这个计数器记录的是正在执行的虚拟机字节码指令的地址; 如果正在执行的是本地(Native) 方法, 这个计数器值则应为空(Undefined) 。Java 虚拟机栈虚拟机栈描述的是Java方法执行的线程内存模型: 每个方法被执行的时候, Java虚拟机都会同步创建一个栈帧用于存储局部变量表、 操作数栈、 动态连接、 方法出口等信息。本地方法栈Java堆方法区(.

2020-08-15 21:07:17 177

原创 将对象作为HashMap的Key所引发的问题

通过源码可知,HashMap会调用key的hashCode()和equals()方法,来进行存储、查找与比较。这是Object的equals方法,是比较的地址。public boolean equals(Object obj) { return (this == obj);}至于Object的hashCode(),是native方法,注释中说hashCode是对象存储地址转化得到的值。总而言之,如果不重写对象的hashCode() equals(),那基本上放进hashMap就拿不到了

2020-08-12 00:07:58 934

原创 Servlet原理与构建Web项目

Servlet目录结构Servlet源码User.javaUserDao.javaUserService.javaLoginServletDBUtil.javaweb.xml目录结构只做了用户的登录与注册。ServletServlet是一个Java接口,接口的作用是规范。Servlet接口定义的是一套处理网络请求的规范。所有实现servlet的类,都需要实现它那五个方法,其中最主要的是两个生命周期方法 init()和destroy(),还有一个处理请求的service(),也就是说,所有实现se

2020-08-07 21:40:48 170

原创 Spring Cloud微服务与Shiro

微服务微服务(或微服务架构)是一种云原生架构方法,其中单个应用程序由许多松散耦合且可独立部署的较小组件或服务组成。这些服务通常有自己的堆栈,包括数据库和数据模型;通过REST API,事件流和消息代理的组合相互通信;它们是按业务能力组织的,分隔服务的线通常称为有界上下文。尽管有关微服务的许多讨论都围绕体系结构定义和特征展开,但它们的价值可以通过相当简单的业务和组织收益更普遍地理解: 可以更轻松地更新代码。团队可以为不同的组件使用不同的堆栈。组件可以彼此独立地进行缩放,从而减少了因必须缩放

2020-08-05 11:15:14 1029

原创 空属性赋值问题与aop实现日志

空属性赋值问题BeanUtils.copyProperties(Object source, Object target)方法可以快速的将source对象中的属性赋值给target对象。当我们对java实体执行相关操作时,使用BeanUtils工具可以快速执行新增、修改时对实体属性的赋值操作。但是若source对象中的属性为null时,target中相应的属性也会被修改为null,有时候这可能不是我们希望的结果。public static String[] getNullPropertyNames (

2020-08-04 15:57:26 234

原创 排序算法-快速排序的优化

跳转:排序算法在看这个学习,有些没讲全,以下为补充。快速排序优化基准的选择固定基准基本算法本身每次切分是用的第一个,就叫固定基准,但如果序列本身有序或基本有序,则会使时间复杂度提升到O(N²),因为每次切分都用的第一个,要切分N次,每第 i 次比较 N - i 次。随机基准随机取基准,基准选的最差的概率就是N分之一,当然,选择最优基准的概率也是N分之一。避免了最坏情况的多次发生,算法的平均性能较好。三数取中选取数组开头,中间和结尾的元素,通过比较,选择中间的值作为快排的基准。比较稳定,但是

2020-08-04 12:25:58 325

原创 Spring Data JPA

Spring Data JPA依赖配置文件实体类RepositoryServiceController前端页面Spring Data JPAJPA(Java Persistence API)是 Sun 官⽅方提出的 Java 持久化规范。它为 Java 开发⼈人员提供了了⼀一种对象 / 关联映射⼯工具来管理理 Java 应⽤用中的关系数据。它的出现主要是为了了简化现有的持久化开发⼯工作和整合 ORM 技术,结束现在 Hibernate、 TopLink、 JDO 等 ORM 框架各⾃自为营的局⾯面。.

2020-07-28 16:33:32 121

原创 动态规划的适用条件

今天做了一道算法题,以为可以动态规划,却在提交后处处碰瓷,才后知后觉这题不适用动态规划。问题必须满足最优化原理和无后效性才适用动态规划。最优化原理(最优子结构性质):一个最优化策略的子策略总是最优的。所以不管过去的过程如何,只从当前的状态和系统的最优化要求出发,作出下一步的最优决策。无后效性:对于某个给定的阶段状态,它以前各阶段的状态无法直接影响它未来的决策。...

2020-07-24 15:36:18 1455

原创 Mybatis分页搜索与PageHelper

分页搜索PageInfoDAOServiceControllerJSPPageHelperpom.xmlspring配置文件使用分页搜索分页就是利用sql的limit语法,只截取数据表的一段并传至前端显示。PageInfopublic class PageInfo<T> { private List<T> list; private int size; private int totalPage; private int totalCount.

2020-07-23 15:50:30 380

原创 Spring核心与SSM整合

Spring原理IOCAOPSSM整合SpringSpring mvcMybatisSpring原理IOC创建应用对象之间的协作关系的行为通常称为装配,是依赖注入(DI)的本质。依赖注入很好理解。这里可以简单了解一下:https://blog.csdn.net/yuanyuan214365/article/details/52900414对于 IoC 来说,最重要的就是容器。容器管理着 Bean 的生命周期,控制着 Bean 的依赖注入。AOP代加SSM整合Spring构建一个Web项.

2020-07-22 16:41:19 146

原创 《On Java 8》阅读笔记——初始化与清理 与 集合

《On Java 8》是事实上的《Java 编程思想》第5版。《On Java 8》中文版(兴趣人员自译) 初始化与清理内部类流初始化与清理1、构造器:如果不自己写构造器,则默认有一个无参构造器。如果已经自己写了一个构造器,则默认的无参构造器不再出现(比如只写了一个有参数的构造器,除非自己再写个无参构造器,否则不能使用默认的无参构造器来创建对象)。构造器没有返回值,却同时也没有给你选...

2020-02-21 16:01:05 353

原创 Java8新特性:等同 final 效果(Effectively Final)

闭包Effectively Final示例闭包考虑一个返回复杂的 lambda 的高阶函数,使用了函数作用域之外的变量,返回该函数会发生什么?java支持闭包,即在词法上限定范围(也使用术语“变量捕获”)。从 Lambda 表达式引用的 局部变量,必须是 final 或者是等同 final 效果的。Effectively Final这个术语是在 Java 8 才开始出现的,表示虽然没有...

2020-02-19 17:49:17 715

转载 java.util.function包的基本命名准则、目标类型与示例

如果只处理对象而非基本类型,名称则为 Function,Consumer,Predicate 等。参数类型通过泛型添加。如果接收的参数是基本类型,则由名称的第一部分表示,如 LongConsumer,DoubleFunction,IntPredicate 等,但基本 Supplier 类型例外。如果返回值为基本类型,则用 To 表示,如 ToLongFunction <T> 和 Int...

2020-02-18 14:12:09 293

原创 《On Java 8》阅读笔记——对象与函数式编程

《On Java 8》是事实上的《Java 编程思想》第5版。《On Java 8》中文版(兴趣人员自译)1、面向对象是一种抽象机制,嫁接问题模型与机器模型的一种桥梁。程序员可利用一些工具表达问题空间内的元素,不必受限于特定类型。面向对象的程序设计无疑是一种更加灵活、更加强大的语言抽象方法。2、...

2020-02-12 15:29:50 338

原创 Thymeleaf 笔记

Thymeleafth:textth:eachURLth:text${variable}调用后端传来的数据<div th:text="${variable}">若thymeleaf没生效则显示这个</div>th:each<table> <thead> <tr> <td>序号&l...

2019-11-28 15:55:21 413

转载 Git 新手入门教程

 一:Git是什么?       Git是目前世界上最先进的分布式版本控制系统。二:SVN与Git的最主要的区别?      SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到...

2019-10-07 15:27:37 200

原创 SpringMVC @RequestBody对请求的json参数自动转成bean的问题

写@RequestBody和ajax案例时,改来改去ajax请求都是响应404或者500,最后判断出来是json自动转换成javabean出现了问题。英语不太好,一直没仔细看log,也看不懂。查了半天,最终还是从Log上找到了原因:(no Creators, like default construct, exist): cannot deserialize from Object value...

2019-08-28 04:48:21 1084 1

原创 JAVA 正则表达式

正则表达式对应规则匹配规则java中的使用方式1. (Boolean) String.matches(String)2. (Boolean) Metcher.matches()3. (String) Matcher.group(int)高级用法贪婪与非贪婪匹配分割、搜索与替换1. (String[ ]) String.split(String)2. (Boolean) Matcher.find()...

2019-08-25 18:40:46 212

原创 spring bean作用域、生命周期

作用域 描述 singleton 在spring IoC容器仅存在一个Bean实例,Bean以单例方式存在,默认值 ...

2019-07-30 18:37:39 117

原创 笔记——Mysql自用语句

创建表: create table tablename (filed1 datatype [null/not null] primary key auto_increment, filed2 datatype [default value] [null/not null]);删除表: drop table tablename;重命名表:rename table tab...

2019-05-02 20:25:15 201

原创 笔记——Mybatis

Mybatis目录SqlMapConfig.xmllog4j.propertiesIDocDao(xml)IUserDao(注解)使用目录SqlMapConfig.xml在environments中配置与数据库连接的相关信息。在mappers中映射去实现dao。<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE confi...

2019-05-02 02:16:44 170

原创 笔记——动态代理 设计模式

动态代理概念实现步骤增强方式概念真实对象:被代理的对象代理对象:代理真实对象的对象代理模式:代理对象代理真实对象,达到增强真实对象功能的目的实现步骤代理对象和真实对象实现相同的接口代理对象 = Proxy.newProxyInstance();使用代理对象调用方法。增强方式增强参数列表增强返回值类型增强方法体执行逻辑...

2019-04-11 18:46:46 115

原创 Servlet&JSP(五)

三种脚本1. <% 代码 %>:定义的java代码,在service方法中。service方法中可以定义什么,该脚本中就可以定义什么。2. <%! 代码 %>:定义的java代码,在jsp转换后的java类的成员变量位置。(不推荐使用)3. <%= 代码 %>:定义的java代码,会输出到页面上。输出语句中可以定义什么,该脚本中就可以定义什么。内置对...

2019-04-10 16:25:46 148

原创 Cookie&Session、Filter与Ajax

Cookie&SessionCookieSessionCookieSession

2019-04-09 13:07:00 127

原创 笔记——JDBC

JDBC用法各类用法//1.导入驱动jar包//2.注册驱动Class.forName("com.mysql.jdbc.Driver");//3.获取数据库连接对象Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db3", "root", "root");//4.定义sql语句St...

2019-04-06 00:54:17 257

空空如也

空空如也

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

TA关注的人

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