自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 线程池的四种拒绝策略

AbortPolicy线程池默认的拒绝策略,在任务不能提交的时候直接会抛弃该任务并且会抛出异常,比较关键的业务使用该策略,能够及时发现问题DiscardPolicy丢弃任务,但不会抛出异常,如果线程队列已经满,后续提交的任务都会被丢弃。无法及时发现异常的任务,比较无关紧要的业务使用该策略DiscardOldestPolicy会丢弃最前面的任务,并且重新提交上次被拒绝的任务(喜新厌旧)CallerRunsPolicy如果任务被拒绝,则由调用线程(提交任务的线程)直接执行该任务.

2021-04-13 14:24:55 156

原创 这是一个永久更新的知识点记录

sql语句在使用select 时使用 with (nolock)提高性能 ,但是可能会引起脏读 附:with(nolock)的用法使用统计查询时,不妨用用 with as SQL Server with as使用where 1=1 动态构建sql 1=0仅复制表结构不复制数据springvo po bo 指什么 PO,BO,VO和POJO的区别...

2021-03-23 11:12:42 135 1

原创 可达性分析算法(GC ROOT)的过程

可达性分析算法:(当前主流语言的内存管理子系统都是通过可达性分析算法来判断对象是否存活,Java语言同样,没有使用引用计数法算法的)基本思路:GC roots的对象作为起始节点集合,从这些节点开始,根据引用关系向下搜索,搜索过程所走过的路径称为 引用链,如果某个对象到GC roots没有任何引用链相连,那么这个对象就被认为是可以回收的对象。GC Roots:虚拟机栈中引用的对象(各个线程被调用的方法堆栈中使用到的参数,局部变量,临时变量等) 方法区中静态对象,常量对象,字符串常量池中的对.

2020-11-12 14:24:30 1195

原创 Java线程状态转换

Java语言定义了5种线程状态,在任意一个时间点,一个线程只能有且只有其中的一种状态,这5种状态分别如下。新建(New):创建后尚未启动的线程处于这种状态。运行(Runable):Runable包括了操作系统线程状态中的Running和Ready,也就是处于此状态的线程有可能正在执行,也有可能正在等待着CPU为它分配执行时间。无限期等待(Waiting):处于这种状态的线程不会被分配CPU执行时间,它们要等待被其他线程显式地唤醒。以下方法会让线程陷入无限期的等待状态:●没有设置Timeout参

2020-11-11 18:27:08 85

原创 JVM创建对象的过程

本文讨论的是Java对象在jvm中创建的过程(不包括数组、Class对象的创建)类的加载、连接、初始化在语言层面上,我们创建对象需要new关键词来创建对象,当JVM遇到这个指令时,首先检查这个指令能否在常量池中定位到这个类的符号引用,并且要检查这个符号引用代表的类是否已经被加载、连接(验证、准备、解析)、初始化过,如果没有那么就去执行类加载过程,详见:类加载机制,这里不再赘述。新生对象分配内存的方式2.1 对象内存布局要分配新生对象内存,那么先得知道它所需内存大小,在HotSpot虚拟机中,对象

2020-11-07 14:01:35 232

原创 复习动态代理

JDK方式:jdk动态代理实现InvocationHandler 接口,内部通过Proxy.newProxyInstance()方法指定 类加载器和一个代理接口数组(proxiedInterfaces)通过反射机制获取动态代理类的构造函数,其唯一参数类型就是调用处理器接口类型;面向接口CGLib方式:CGLib动态代理是通过字节码底层继承要代理类来实现(如果被代理类被final关键字所修饰,那么抱歉会失败)。通过MethodInterceptor接口实现使用:被代理类.

2020-08-06 11:57:40 159

原创 MySQL使用两边%优化查询字符串成range

记录小技巧(鬼才)在需要建立索引的字段前加一个相同的标志符比如name列:添加数据时,统一格式化为name_xx,这样模糊查询:like ‘name_%x%’;结果就是range查询。阴间方法,慎用

2020-07-24 16:55:07 198

原创 《剑指offer》二维数组中的查找

牛客:二维数组的查找题目描述:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路假设现在有一个数组:思路:我们每次选取最大列的最小值(最右上角的元素),与目标值比较如果小于目标值,那么说明这一行的值都小于,所以去除这一行,如果大于...

2020-04-28 12:22:10 94

原创 《spring》对象的初始化方法和销毁方法

在xml中的配置在<bean>标签中,添加属性init-method=方法名为这个类设置初始化方法,同样,添加属性destroy-method=方法名为这个类设置销毁方法在自动装配中的配置分别在init方法和destroy方法上方添加注解:@PostConstruct ,@PreDestroy...

2020-04-09 20:41:38 129

原创 《spring》bean的作用域

在<bean>标签中,可以为属性scope设置bean的作用域:单例( singleton)在整个应用程序中,只创建bean的一个实例原型( prototype)每次注入或通过Spring.上下文获取的时候,都会创建一个新的bean实例会话( session )在Web应用中,为每个会话创建一 个bean实例请求( request )在Web应用中,为每个请求创建一个...

2020-04-09 20:25:44 96

原创 《spring》xml注入总结

通过构造函数依赖注入<constructor-arg>标签c-名称空间属性注入<property>标签p-名称空间,比上面的property更为简洁util-名称空间

2020-04-08 17:03:02 81

原创 dfs岛屿数量(LeetCode200. 岛屿数量)

package dfs;//主要是递归的思路public class Land { //leetcode 200. 岛屿数量 public int numIslands(char[][] grid) { int sum = 0; if (grid == null || grid.length == 0) { return ...

2020-04-06 21:15:07 137

原创 bfs岛屿数量(LeetCode200. 岛屿数量)含注释

package bfs;import java.util.LinkedList;import java.util.Queue;//leetcode 200. 岛屿数量public class Land { public int numIslands(char[][] grid) { int sum = 0; //非法情况 if (...

2020-04-06 20:38:48 247

原创 《spring》xml引入构造方法

通过 <constructor-arg ref=idname/>配置使用c名称空间引入在beans节点中添加属性xmlns:c="http://www.springframework.org/schema/c"在bean节点中添加属性c:构造方法形参名-ref="idname"eg:public class A{}public class B{ priva...

2020-04-05 12:18:01 224

原创 《复习》类加载过程

父类静态代码块:静态初始化块静态属性不包括静态方法子类静态代码块:静态初始化块静态属性不包括静态方法父类非静态块非静态初始化块非静态属性父类构造函数子类非静态块非静态初始化块非静态属性子类构造函数...

2020-04-05 10:55:36 93

原创 《Spring》自动装配同一接口歧义解决方案

接口编程解决使用具体的对象而不是接口(不推荐)使用首选Bean(@primary)注意同时只能有一个@primary使用@Qualifier()注解接口实现类(类声明的地方)上使用@Qualifier(id)接口声明的地方(装配这个对象时)使用同样的@Qualifier(id),(id要相同)在接口实现类(类声明的地方)上使用@Component(id)接着在接口声明(装配...

2020-04-03 14:07:41 128

原创 《Spring》@Autowired的基本使用场景和参数

四种使用场景使用在有参构造函数上使用在成员变量上是用反射机制进行自动注入,效率较低使用在setter方法上使用在任意函数上参数requiredspring是默认将required 参数设置成true的,就是说默认会自动装配,有时候我们并没有或者目前并不想让他自动装配,那么就可以将required 修改成false...

2020-04-03 13:32:53 1586

原创 《Spring》用xml方式初始化spring容器

初始化spring容器前提:现在有hello.A hello.B两个对象需要在容器中初始化B对象中有A的一个对象a:package hello;public class A{}在这里插入代码片初始化利用<bean id="a" class="aClass"></bean>配置其中,id是用来标志对象的,之后的代码会用到class是当前由spr...

2020-04-02 14:02:50 378

原创 《Spring》注解初始化spring容器

注解初始化spring容器在需要被容器创建的类上方添加注解@Component在主类上方添加注解@ComponentScan主方法初始化spring容器ApplicationContext context = new AnnotationConfigApplicationContext(Application.class);,这个构造方法参数是@ComponentScan所在的类对象主类....

2020-04-02 13:21:18 339

原创 HTTP之session和cookie

无状态协议HttpHttp是一个无状态协议,就是说这一次请求和上一次请求是没有任何关系的,互不认识的,没有关联的。这种无状态的好处是快速。坏处是需要进行用户状态保持的场景时[比如,登陆状态下进行页面跳转,或者用户信息多页面共享等场景],必须使用一些方式或者手段比如: session 和 cookiecookie为了解决登录时进行跳转的问题,引入了cookie,cookie是一种在浏览器端解决...

2020-03-29 12:23:06 132

原创 数据库事务隔离级别

1 事务的四特性原子性:满足原子操作的单元,要么全部执行成功,要么全部失败一致性:事务开始和完成,其数据必须保持一致隔离性:事务对外不可见持久性:数据的修改是永久的2 隔离级别2.1并发引起的问题脏读:A事务还未提交,B就读到了A事务的结果(破坏了隔离性)不可重复读:A事务在本次事务中,最自己未操作过的数据,进行了多次读取,结果出现了这个数据不一致或记录不存在的情况(破坏一致...

2020-03-28 18:14:46 113

原创 整理常用Linux命令

touch创建一个空文件夹echo写入到一个文件重定向:1.>输出重定向:(它会清楚之前文件的内容),再写入到一个文件中2.<输入重定向:标准输入到程序中3.2>标准错误重定向4.>>追加重定向(不同于 > 新的内容追加到文件末尾)cat 查看文件内容rm 删除文件删除文件夹需要加参数 -r 会递归进行确认删除加参数 -rf 不会进行确认操...

2020-03-27 13:04:33 97

原创 linux写一个简单的定时任务

用到的命令:crontab -e输入crontab -e之后按回车进入到vim模式,按下 i 进入到插入模式,编写命令分 时 日 月 星期 命令举个例子:现在要执行 /root/a/b/c.jar 包,设置在每月每周 2 的 0:30执行命令就是:30 0 * * 2 cd /root/a/b && java -jar c.jar如果要记录执行结果只需...

2020-03-24 11:44:30 444

原创 Java线程池

什么是线程池顾名思义,事先创建若干个可执行的线程放入到一个容器中,需要的时候从容器中直接获取线程而不用创建线程,使用完毕放回容器中而不用销毁,从而避免人为创建和销毁线程,提高了效率。创建线程池在Java中有一个工具类 Executors ,它提供了几种创建线程池的方法:newSingleThreadExecutor()创建一个单一线程的线程池,单线程串行执行所有任务。如果当前任务因为异常...

2020-03-20 11:27:00 72

原创 通过反射修改String的内容

通过反射修改String的内容 String str = "hello"; //源码中的value数组 Field filed = String.class.getDeclaredField("value"); //设置可访问 filed.setAccessible(true); //得到value数组 char[] chars = (cha...

2020-03-17 12:27:43 507

原创 《servlet学习》servlet怎么通过url执行到service方法

对于一个url:http://localhost:8080/Login/loginhttp:http协议localhost:服务器 (dns协议转化为对应ip)8080:端口号/Login :工程路径/login :资源路径通过ip地址+端口号8080定位客户端的Tomcat通过唯一的工程路径 /Login 定位这个工程通过工程下的资源 /login 定位资源...

2020-03-07 13:00:43 289

原创 输入一个网址后发生了什么

将数据封装为一个数据包,即应用数据1.应用层DNS协议会将网址解析为IP地址解析过程: 1)检查浏览器缓存是否解析过这个网址,如果有,返回对应IP地址,解析结束; 2)如果没有,浏览器会做一个系统调用,查看操作系统中是否有这个域名对应的DNS解析结果; 3)如果还没有,接着,这个请求发送到路由器,路由器中有DNS缓存,在这里找到相应的记录,DNS服务器找到后将解析所得IP地址返回...

2020-03-06 11:06:58 257

原创 mysql原理、调优笔记

mysql内部引擎myisaminnoDB:聚集索引:b+树叶子结点包含完整的数据[索引+数据]必须有主键

2020-03-05 16:34:08 122

原创 昨天朋友面试栽在了单例模式的线程安全问题

面试常见的几种单例模式不支持多线程的单例模式:懒汉式线程不安全:public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInstance() { if (instance == nu...

2020-03-03 12:31:25 93

原创 面试必备jvm类加载器

什么是类的加载我们平时所编写的“xx.java”文件需要经过我们所知的java编译器(javac)编译成“xx.class”文件,这个文件存放着编译后jvm指令的的二进制信息。而**当我们需要用到某个类时,jvm将会加载它,并在内存中创建对应的class对象,这个过程称之为类的加载。**过程如下:类的加载、连接、初始化1. 加载通过类的包名和雷鸣查找到此类的字节码文件,将xx.class...

2020-02-29 15:32:07 571 2

原创 一般TopK问题建议的解法

甩一个例题:考虑到时间复杂度必须优于nlogn ,那么就不能用暴力搜索法首先利用map统计个元素出现的次数:Map<Integer, Integer> map = new HashMap<>();for (int x: nums) { map.put(x, map.getOrDefault(x, 0) + 1);}此时有两种处理思路:利用sort(...

2019-12-13 19:26:27 211

原创 java多线程 自定义线程池

首先自定义一个阻塞队列队列中定义各种限制一个简单的自定义阻塞队列:public class MyMessageQueue<E> { private Object[] message; private int putIndex; private int takIndex; private volatile int size; public ...

2019-12-07 10:46:25 164

原创 java多线程wait方法

其实wait()方法就是使线程停止运行。方法wait()的作用是使当前执行代码的线程进行等待,wait()方法是Object类的方法,该方法是用来将当前线程置入“预执行队列”中,并且在wait()所在的代码处停止执行,直到接到通知或被中断为止。wait()方法只能在同步方法中或同步块中调用。如果调用wait()时,没有持有适当的锁,会抛出异常。wait()方法执行后,当前线程释放锁,线程...

2019-12-06 22:21:40 1038

原创 JDBC statement、PreparedStatement、CallableStatement区别

每日笔记

2019-12-05 19:32:07 143

原创 java多线程synchronized 会锁定什么

对于自定义UnSafeThread类Public static int count; 静态同步方法:锁定当前类对象 A:Public synchronized static void increment(){//轮流执行//锁的是UnsafeThread类对象//进入方法会锁SynchronizedDemo.class指向对象中的锁;出方法会释放//Synchroni...

2019-12-01 13:08:35 188

原创 java多线程的 interrupt,interrupted,isinterrupted

terrupt():1.设置线程的中断标记,当对处于阻塞状态(sleep,wait,join)的线程调用interrupt方法时:2.会抛出InterruptException异常,3.这个异常抛出后,清除(还原为false)中断标记静态方法interrupted():还原为false标记,并返回之前的标记isInterrupted()返回当前线程的标记jdk1.8 API对其描...

2019-11-30 23:07:23 145

原创 二叉树的各种操作

二叉树递归练习,持续更新

2019-11-05 22:28:29 108

原创 一个弟弟扑克游戏

import java.util.ArrayList;import java.util.Collection;import java.util.Collections;import java.util.List;public class Card { //一张扑克牌 private String shape; private String num; pu...

2019-11-01 22:17:56 82

原创 包装类

我们都知道,java是一个面向对象的语言,但是其中我们经常用到的8大基本类型:byte,short,int,long,double,float,char,boolean 却不是面向对象的但是在我们实际使用过程中,我们确实需要用到将基本类型转化成对象的操作,比如泛型,集合的操作中。对于以上8大基本类型我们提供了对应的8大包装类:Byte,Short, Integer, Long, Doub...

2019-10-30 22:43:50 82

原创 java异常

认识异常在早期学习C语言时,我们其实已经习惯去检查错误了,但是当代码规模较大,代码健壮性较强,可维护的项目来说,错误检查确实令人困扰。使用java的异常处理方式可以让你的代码更容易理解,而不是有大量的判断语句夹杂在你的正常流程的代码中使你的程序显得比较混乱。在这个例子中:程序运行到这里就会被最高层JVM调用栈来处理(即main()方法),JVM会打印出现异常的调用栈的异常信息,同时让程序...

2019-10-27 14:44:48 96

空空如也

空空如也

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

TA关注的人

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