自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 HashMap源码系列

关于源码系列为了提高自己的代码水平和调试水平 逼着自己看了主要集合框架的源码 这里主要是HashMap当然整个过程也是辛苦的 我们都知道集合的本质是数据结构 博主为了看懂它真的是下足了功夫java 算法第四版 二叉树 平衡二叉树 红黑树 这部分的相关内容至少啃了3篇 才鼓足勇气去看HashMap的源码[想哭]那看完后 你怎么知道自己真的看懂了 怎么去验证呢?我的方法是测试特...

2020-02-09 23:07:17 100

原创 Java8流库

Java流库流遵循了"做什么而非做什么"的原则 就是 它不负责具体的实现 只需调用提供的方法即可。这类似于链式编程。只需要配置具体的流操作,而不用负责具体的实现。流和集合的区别:流并不存储储其元素。这些元素可能存储在底层的集合中,或者是按需生成的流的操作不会修改其数据源。 比如 fillter不会从新的流中移除元素,生成一个已经过滤掉元素的新的流流的操作是惰性的。集合的操作是立刻的。对集合调用了删除方法这个元素马上从集合中删去。流则不是流的终止操作才会强制执行之前的惰性操作。一般的流分为

2020-05-29 14:11:06 427

原创 Junit4测试带参数的方法

@RunWith(Parameterized.class)//指定运行的环境 对应着@Parameterized注解标注的方法public class Solution { int[] nums; int target; int[] exception; @Test public void test(){ TwoSum add = new TwoSum(); //待测试的方法 int[] result = add.tw

2020-05-27 09:51:13 1634

原创 Spring Boot单元测试踩过的坑

测试在编写单元测试的时候 Spring不需要介入 单元测试难道是用方法就能测试??但是在集成测试要用到Spring 就像下面一个例子 如果生产应用程序使用了Spring来配置并组装组件 那么测试就需要用它来配置并组装哪些组件Spring的SpringJUnit4ClassRunner可以在基于JUnit的应用程序测试里加载Spring应用程序上下文 也就是整个Bean??Sprin...

2020-04-20 23:43:18 820

原创 Mybatis精述

mybatismybatis 是开源的持久层框架(访问数据库)最早我们使用JDBC访问数据库 优点 性能好(直接操作数据库) 缺点 代码繁琐hibernate(冬眠 代码简介 不用写sql只需实现相应的接口和对象 ) 生成的sql语句耗费时间 自动生成的sql语句 存在冗余 性能不好(适合简单的表)mybatis 代码简洁 需要些sql 性能可以 更易学习像hibernate(冬眠 代...

2020-04-15 08:19:41 208

原创 并发编程会导致什么问题

并发编程导致的问题导致可见性的原因是缓存cpu和内存之间存在较大的速度差异为了解决这个问题 在每个cpu中引入了缓存的概念但是不同CPU之间的缓存时不可见的这就导致如果多个线程 操作同一个变量 可能某个线程的修改就会被擦除导致有序性的原因是编译优化这个怎么说比如下面的例子 双重检查锁的单例模式public class Singleton{ private static...

2020-04-07 23:39:34 552

原创 SpringBoot集成Spring Security基本配置

Spring SecuritySpring Security是在DispatcherServlet前就可以对Spring MVC的请求进行拦截可以使用web.xml配置DelegatingFilterProxy类 但是SpringBoot是基于注解开发的 所以在Spring Boot中只需配置相应的类就可以了原理简述SpringSecurity原理 一旦启用了SpringSecurity ...

2020-03-27 22:33:30 589

原创 设计模式浅析(单例,抽象,代理)

常用的设计模式部分双重检查锁实现单例模式public Class Sington{ private static volatile sington ; private Sington{ } public Sington getInstance(){ if(sington==null){ synchronied(Si...

2020-03-22 23:01:08 112

原创 数据库原理笔记4

事务管理器一个ACID事务是一个工作单元 它要保证4个属性原子性(Atomicity):事务『要么全部完成,要么全部取消』,即使它持续运行10个小时。如果事务崩溃,状态回到事务之前(事务回滚)。隔离性(Isolation): 如果2个事务 A 和 B 同时运行,事务 A 和 B 最终的结果是相同的,不管 A 是结束于 B 之前/之后/运行期间。持久性(Durability): 一旦事务提...

2020-03-20 00:13:49 143

原创 数据库原理读书笔记三

缓存管理器数据库的主要瓶颈是磁盘 I/O。为了提高性能,现代数据库使用缓存管理器。查询执行器不会直接从文件系统拿数据,而是向缓存管理器要。缓存管理器有一个内存缓存区,叫做缓冲池,从内存读取数据显著地提升数据库性能。对此很难给出一个数量级,因为这取决于你需要的是哪种操作:顺序访问(比如:全扫描) vs 随机访问(比如:按照row id访问)读还是写但是这导致了另一个问题 缓存管理器需要...

2020-03-18 00:32:37 322

原创 数据库原理读书笔记二

统计在进行大数据查询时 必要的统计是必须的比如关联查询A和B 其中A的有1000个不同的值B有1000000个不同的值优化器所有现代数据库都在用基于成本的优化来优化查查询对于一个简单的联结查询 优化器是如何做的对于联结操作 通常会专注它们的时间复杂度但是数据库优化器计算的是他们的CPU成本,磁盘I/O成本,和内存需求大多数时候瓶颈在于磁盘 I/O 而不是 CPU 使用在用联结...

2020-03-16 22:04:59 211

原创 数据库原理读书笔记一

从时间复杂度说起对于一些普通运算时间复杂度显得不是那么重要但是对于应对大量的数据 或者要争取毫秒级操作那么理解这个概念就很关键了举例:假设要处理2000条数据O(1) 算法会消耗一次运算O(log(n)) 算法会消耗7次运算O(n*log(n)) 算法会消耗 14,000 次运算O(n^2) 算法会消耗 4,000,000 次运算hash表的时间复杂度O(1...

2020-03-13 00:46:59 296

原创 JVM浅析

程序计数器(寄存器)程序计数器 是线程私有的记录当前线程所执行的字节码行号(执行的字节码的偏移地址),用于获取下一条执行的字节码。为什么需要程序计数器 我想原因之一是因为多线程运行时,每个线程切换后需要知道上一次所运行的状态、位置。所以由此也可以看出程序计数器是每个线程私有的。虚拟机栈Java虚拟机栈 描述的是 Java方法执行的内存模型用于存储栈帧每个方法从调用到执行完成的过程,...

2020-03-12 14:58:44 136

原创 Spring解密(注解部分) 读书笔记二

@AspectJ-支持注解 现在 我们可以直接使用POJO 来定义Aspect以及相关的Advice 并使用一套标准的注解标注这些POJO Spring 会根据注解信息查找相关的Aspect定义 并将其声明的横切逻辑织入当前系统中简化了XML的配置方式 使用新的基于XSD的配制方式 可以使用aop独有的命名空间 并且注册和使用POJO形式实现的AOP概念实体在2.0后Spring AO...

2020-03-08 00:43:46 213

原创 Spring解密读书笔记一

注意上诉内容为博主看Spring 解密的摘要和个人理解Spring 解密是一本很好的Spring 入门书籍Spring AOP 中的Joinpoint在Spring AOP中 仅支持方法级别的Joinpoint 更确切的说只支持方法执行(Method Execution)类型的Joinpoint虽然Spring AOP仅提供方法拦截 但是在实际的开发过程中 这已经可以满足80%的开发...

2020-03-08 00:41:12 244

原创 Spring IOC AOP简述

什么是IOCIOC(Inversion of Control)控制反转 为什么叫控制反转通常情况下被注入的对象会直接依赖于依赖对象但是在IOC服务下 两者通过IOC Service Provide统一管理 与之前相比依赖对象的取得方式发生了反转 控制也从被注入对象转到了Ioc Service Provider那里依赖注入的方式有两种setter方法注入构造方法注入接口注入(过时)...

2020-03-08 00:35:40 143

原创 全排列算法船新版本

public static void main(String[] args) { String str="123456"; char[] chars = "12345".toCharArray(); //toCharArray每次返回一个新的字符数组 System.out.println(chars=="12345".toCha...

2020-02-11 01:10:15 106

原创 深入理解HashMap之tree化

treeifBin方法 //treeifyBin的整个流程 //1. 如果tab为空 或者 n小于64 则再散列 为什么呢? //通常随机存入数的情况下 //一个桶满了 那么其他桶也很有可能满了 所以需要扩容 //当tab的length小于64时只需扩容 再散列即可 //2.否者 将链表转换为双向链表 并为每个节点生成相应的TreeNode ...

2020-02-09 22:19:15 208

原创 深入理解HashMap之putVal方法

putVal //putVal的整个流程 //1. 如果tab为null 则分配初始容量 调用resize方法 //2. 如果桶中没有任何元素则直接创建节点 //3. 否则桶中发生hash冲突 或者说要更新新的值 //4. 怎么判断要更新值呢 // hash值相等 并且 键和待查入的键相等 或者说equals方法的返回值为TRUE ...

2020-02-09 22:09:30 554

原创 HashMap源码之构造函数

构造函数从构造函数开始说起public HashMap(int initialCapacity, float loadFactor) { //如果指定的初始容量小于0 if (initialCapacity < 0) //非法参数异常 throw new IllegalArgumentException("I...

2020-02-09 21:00:53 111

原创 HashMap源码之resize方法

resize函数因为HashMap的构造函数 并不会给内部的表开辟空间而是在调用put函数时 如果表为空 调用resize方法换句话说 resize函数不得不 考虑 任何不同形式的构造函数 及带一参 带两参 不带参的构造函数 调用resize方法并且 当表中的数量 超过临界值时 也会调用resize方法所以整个 大概思路旧表保存下来定义并赋值 旧表的长度 临界值 如果旧表为空...

2020-02-09 20:59:09 375

原创 二叉查找树

二叉查找树能够将链表插入的灵活性和有序数组查找的高效性结合起来的符号实现在二叉树中,每个节点只能有一个父节点(只有一个例外,也就是根节点,它没有父节点),每个节点到只有左右两个链接分别指向自己的左子节点和右子节点 节点都看成一棵相对于父节点较小的二叉树 即 子二叉树在二叉查找树中的每一个节点还包含键和值有了定义 那么该怎么是实现 从节点定义开始 节点的定义类似于java集合源码中的Tr...

2020-02-01 00:08:13 58

原创 关于java限定符上界和下界

为什么要有这个在java中//经理是员工的子类Pair<Employee> e=new Pair<Manager>();// 报错 尽管在语义上没什么问题 限制放员工 我放的是经理 经理是员工的子类如果想让这个等式成立 就需要使用通配符类型通配符类型(Pair<? extends Employee> p) 表示任何泛型Pair类型,它的类型参...

2020-01-30 00:53:07 365

原创 关于HahsMap调试出现的问题(已解决)

关于HahsMap调试出现的问题Map初始化的时候无论 设置初始容量为多少时 都会从11开始???HashMap ....=new HashMap<>(15); public HashMap(int initialCapacity) { //89 this(initialCapacity, DEFAULT_LOAD_FACTOR);//90 }...

2020-01-22 15:30:41 906 1

原创 java多线程底层实现原理

为什么要写这个之前总有一个疑惑为什么多个线程更新一个值 会不成功呢? 加上volatile就可以了?? 刚好今天有空 废话不多说 干起来多线程编程的硬件基础高速缓存是一种存取速率远比主内存大而容量远比主内存小的存储部件 每个处理器都有其高速缓存引入高速缓存之后 处理器在执行内存读,写操作的时候并不直接与主内存打交道 而是通过高速缓存进行的变量名相当于主内存地址 变量值则相当于相应内存空...

2020-01-20 00:56:43 1744 1

原创 Spring JDBC query返回泛型的问题

发现一个有趣的现象 最近在学Spring封装好的jdbc时public List<Emp> findAll(){ List<Emp> emps=null; //query返回一个List<T> 但是内部却返回 public <T> T query(@NotNull String sql, // ...

2020-01-11 00:08:30 404

原创 Spring mvc 中的简单异常处理器(SimpleMappingExceptionResolver)

关于Spring MVC 异常的处理在Spring mvc中的某个RequestHandler注解下的方法 发生异常可以直接扔出异常 交给DispatcherServlet(相当于纯Servlet实现下的MainServlet Spring 提供了实现)处理因为 具体路径对应的具体方法是由DispatcherServlet调用的 所以如果调用方法抛出异常dispatcherServlet...

2020-01-07 00:03:21 224

空空如也

空空如也

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

TA关注的人

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