![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔记
文章平均质量分 91
洋222
这个作者很懒,什么都没留下…
展开
-
调用方法时,return的内幕
return与finally到底谁先执行?我们经常会使用try/catch/finally语句块。当然,return关键字使用也是很平常的事,但是不知道大家有没有注意个这样一个问题。当在try语句块里面使用return语句,在finally里面去修改return所要返回的内容会出现什么情况。首先,我们知道return是结束方法的标志,一旦方法执行到return语句就将返回不再往下执行。其次,我们也知道,finally里面的语句是无论方法怎样执行,最后都要执行finally里面的语句。那么究竟是先执行ret转载 2021-07-28 16:55:35 · 377 阅读 · 0 评论 -
SpringBoot防忘指南
SpringBoot注解@SpringBootApplication@Controller@RequestMapping@RequestBody@ResponseBody@RestController@RequestParam@PathVariable@Valid@Service@Autowired @ResourceFilter注解@SpringBootApplication启动器,注解在有main()函数的类上。它整合了以下三个注解:@SpringBootConfiguration声明当原创 2021-03-29 17:01:14 · 191 阅读 · 0 评论 -
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 · 472 阅读 · 0 评论 -
笔记——MySQL数据库系统原理
ACID未完成ACID原子性(Atomicity)事务被视为不可分割的最小单元,事务的所有操作要么全部提交成功,要么全部失败回滚。回滚可以用回滚日志(Undo Log)来实现,回滚日志记录着事务所执行的修改操作,在回滚时反向执行这些修改操作即可。一致性(Consistency)数据库在事务执行前后都保持一致性状态。在一致性状态下,所有事务对同一个数据的读取结果都是相同的。隔离性(Isolation)一个事务所做的修改在最终提交以前,对其它事务是不可见的。持久性(Durab.原创 2020-09-03 23:17:46 · 179 阅读 · 0 评论 -
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 · 156 阅读 · 0 评论 -
kmp算法的next数组解析
昨天天杀的做了个字符串匹配的题,于是天杀的重新学习 kmp算法(实际上第一次学的时候就没搞懂 )。给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。示例 1:输入: “abab”输出: True解释: 可由子字符串 “ab” 重复两次构成。 示例 2:输入: “aba”输出: False 示例 3:输入: “abcabcabcabc”输出: True解释: 可由子字符串 “abc” 重复四次构成。 (或者子字符串原创 2020-08-25 10:44:10 · 451 阅读 · 0 评论 -
索引的最左前缀匹配原则的误区与索引下推技术
最左前缀匹配原则是指where条件中在使用到 > < in between like等范围搜索的这个即以前的字段,如果可以与联合索引的前几个一一匹配,就可以使用这个索引。但是实际操作中我发现即使顺序不一致,即使条件的这些字段中多了几个不属于联合索引的字段,依旧使用了这个索引。是mysql的查询优化器会帮你优化成索引可以识别的形式。自己测试的时候还发现了自己的认知有些错误,故特地总结一下。test表:test表的索引: (a, b, c)1、查询语句:select * from原创 2020-08-24 14:36:49 · 1378 阅读 · 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 · 171 阅读 · 0 评论 -
文本比较算法-Needleman/Wunsch算法-求最长公共子序列
1转载 2020-08-21 16:12:52 · 301 阅读 · 0 评论 -
ConcurrentHashMap源码剖析
前言继承与实现1前言HashMap虽好,却不是线程安全的,需要自行进行同步;HashTable是最早出现的哈比表实现,其用synchronized修饰方法,实现了线程安全,效率也因此大打折扣;JUC中的ConcurrentHashMap是最为推荐的线程安全哈希表,有必要进行学习。但同时需要注意不能因为其线程安全就忽视了线程安全,因为其方法虽然可视为原子操作,但如果在事务中多次调用其方法,那这个整体就不能算是原子操作了。继承与实现public class ConcurrentHashMap<.原创 2020-08-19 13:53:30 · 158 阅读 · 0 评论 -
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 · 130 阅读 · 0 评论 -
JVM 自动内存管理
数据区域程序计数器Java 虚拟机栈本地方法栈Java堆方法区(元空间)数据区域程序计数器如果线程正在执行的是一个Java方法, 这个计数器记录的是正在执行的虚拟机字节码指令的地址; 如果正在执行的是本地(Native) 方法, 这个计数器值则应为空(Undefined) 。Java 虚拟机栈虚拟机栈描述的是Java方法执行的线程内存模型: 每个方法被执行的时候, Java虚拟机都会同步创建一个栈帧用于存储局部变量表、 操作数栈、 动态连接、 方法出口等信息。本地方法栈Java堆方法区(.原创 2020-08-15 21:07:17 · 180 阅读 · 0 评论 -
将对象作为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 · 958 阅读 · 0 评论 -
排序算法-快速排序的优化
跳转:排序算法在看这个学习,有些没讲全,以下为补充。快速排序优化基准的选择固定基准基本算法本身每次切分是用的第一个,就叫固定基准,但如果序列本身有序或基本有序,则会使时间复杂度提升到O(N²),因为每次切分都用的第一个,要切分N次,每第 i 次比较 N - i 次。随机基准随机取基准,基准选的最差的概率就是N分之一,当然,选择最优基准的概率也是N分之一。避免了最坏情况的多次发生,算法的平均性能较好。三数取中选取数组开头,中间和结尾的元素,通过比较,选择中间的值作为快排的基准。比较稳定,但是原创 2020-08-04 12:25:58 · 347 阅读 · 0 评论 -
笔记——并发之JVM篇
并发之JVM篇并发之JVM篇Java 内存模型试图屏蔽各种硬件和操作系统的内存访问差异,以实现让 Java 程序在各种平台下都能达到一致的内存访问效果。原创 2020-08-02 22:59:44 · 285 阅读 · 0 评论 -
笔记——Java并发
wait()让占用了同步对象的线程临时释放占有,并且等待notify() 随机通知一个等待在同步对象上的线程,让其有机会重新占用同步对象notifyAll() 通知所有的等待在同步对象上的线程苏醒,让其有机会重新占用同步对象...原创 2020-08-01 19:24:18 · 373 阅读 · 0 评论 -
动态规划的适用条件
今天做了一道算法题,以为可以动态规划,却在提交后处处碰瓷,才后知后觉这题不适用动态规划。问题必须满足最优化原理和无后效性才适用动态规划。最优化原理(最优子结构性质):一个最优化策略的子策略总是最优的。所以不管过去的过程如何,只从当前的状态和系统的最优化要求出发,作出下一步的最优决策。无后效性:对于某个给定的阶段状态,它以前各阶段的状态无法直接影响它未来的决策。...原创 2020-07-24 15:36:18 · 1496 阅读 · 0 评论 -
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 · 389 阅读 · 0 评论 -
《On Java 8》阅读笔记——初始化与清理 与 集合
《On Java 8》是事实上的《Java 编程思想》第5版。《On Java 8》中文版(兴趣人员自译) 初始化与清理内部类流初始化与清理1、构造器:如果不自己写构造器,则默认有一个无参构造器。如果已经自己写了一个构造器,则默认的无参构造器不再出现(比如只写了一个有参数的构造器,除非自己再写个无参构造器,否则不能使用默认的无参构造器来创建对象)。构造器没有返回值,却同时也没有给你选...原创 2020-02-21 16:01:05 · 365 阅读 · 0 评论 -
《On Java 8》阅读笔记——对象与函数式编程
《On Java 8》是事实上的《Java 编程思想》第5版。《On Java 8》中文版(兴趣人员自译)1、面向对象是一种抽象机制,嫁接问题模型与机器模型的一种桥梁。程序员可利用一些工具表达问题空间内的元素,不必受限于特定类型。面向对象的程序设计无疑是一种更加灵活、更加强大的语言抽象方法。2、...原创 2020-02-12 15:29:50 · 350 阅读 · 0 评论 -
笔记——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 · 270 阅读 · 0 评论 -
笔记——动态代理 设计模式
动态代理概念实现步骤增强方式概念真实对象:被代理的对象代理对象:代理真实对象的对象代理模式:代理对象代理真实对象,达到增强真实对象功能的目的实现步骤代理对象和真实对象实现相同的接口代理对象 = Proxy.newProxyInstance();使用代理对象调用方法。增强方式增强参数列表增强返回值类型增强方法体执行逻辑...原创 2019-04-11 18:46:46 · 117 阅读 · 0 评论 -
Cookie&Session、Filter与Ajax
Cookie&SessionCookieSessionCookieSession原创 2019-04-09 13:07:00 · 132 阅读 · 0 评论 -
笔记——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 · 175 阅读 · 0 评论 -
笔记——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 · 205 阅读 · 0 评论 -
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 · 222 阅读 · 0 评论 -
Git 新手入门教程
一:Git是什么? Git是目前世界上最先进的分布式版本控制系统。二:SVN与Git的最主要的区别? SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到...转载 2019-10-07 15:27:37 · 207 阅读 · 0 评论 -
笔记——Java基础加强
断言:Assert.assertEquals(期望值,实际值);原创 2019-04-03 23:50:38 · 180 阅读 · 0 评论