自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java-Interrupt-中断信号

1、中断信号Interrupt1.如果线程处于阻塞状态会立马退出阻塞并抛出InterruptedException异常,线程可以通过捕获InterruptedException方法来做一定处理,然后让线程退出。2.如果线程处于运行中则不受任何影响继续运行,仅仅将线程的中断标记设置为true。2、示例代码public class ThreadInterruptDemo { pu...

2020-01-03 10:33:07 444

原创 Java 阻塞队列

1、阻塞队列方法/处理方式 抛出异常 返回特殊值 一直阻塞 超时退出 插入方法 add(e) offer(e) put(e) offer(e, time, unit) 移除方法 remove(e) poll() take() poll(time, unit) 检查方法 element() pe...

2020-01-03 10:31:59 186

原创 Java 查询Word是否存在关键字,并保留word路径到txt

1、查询文件夹下的Word文件是否存在某些关键字,如果存在将Word文件的路况保存到txt中。2、示例代码import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.OutputStreamWriter;import java.io.Writer;im...

2019-12-30 10:00:49 1175

原创 Java 线程池

1、线程池Java中的线程池创建实际都是一个方法。ThreadPoolExecutor(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue)2、示例代码public class ThreadPoolExecutorSimple { public static void main(String[] args...

2019-12-22 16:19:46 378

原创 Java 创建多线程三种方式

1、Java 多线程三种方式1.继承Thread2.实现Runnable3.实现Callable2、继承Threadpublic class ThreadDemo extends Thread { public void run() { System.out.println("线程名称:"+this.getName()+"-----线程Id:"+this.getId(...

2019-12-22 16:18:50 223

原创 Java 常见排序算法

1、排序算法冒泡排序鸡尾酒排序选择排序直接插入排序归并排序堆排序快速排序2、示例代码public class Sort { public static void main(String[] args) { int a[] = { 10, 90, 20, 80, 30, 70, 40, 50, 60 }; System.out.println("初始...

2019-12-02 11:08:38 116

原创 Mysql 数据库忘记密码修改密码

1、无密码登录MySQL找到MySQL安装目录下的 my.ini 文件。打开文件找到 [mysqld] 后在下一行添加 skip-grant-tables。2、登录MySQL服务。net stop mysql 停止服务器。net start mysql 启动服务器。mysql -uroot -p 登录服务器。显示输入面膜直接回车(Enter)后登录。3、修改密码...

2019-11-20 17:31:05 163

原创 Java 动态代理

1、动态代理运行时动态地对某些内容代理它做其他的事情。2、接口public interface Saying { public void say(String name); public void talk(String name); }public class SayingImpl implements Saying { public void say(Str...

2019-11-07 11:13:42 187

原创 数据库事务

1、数据库事务针对数据库的某一组操作要么全部成功,要么全部失败。2、数据库事务的四个特性原子性(Atomicity):要么全部完成,要么全部不完成。一致性(Consistency):事务必须始终保持系统处于一致性。隔离性(Isolation):隔离执行事务,使它们好像是系统在给定时间内执行的唯一操作。持久性(Durability):事务完成后,该事务对数据库的更改持久保存在...

2019-11-05 18:29:01 877

原创 Eclipse 启动报错 - Java was started but returned exit code=1

1、Java was started but returned exit code=12、解决方法Eclipse工作区间目录中添加配置文件。目录:D:\workspace\.metadata\.plugins\org.eclipse.core.runtime\.settings文件:org.eclipse.ui.workbench.prefs...

2019-11-05 18:24:30 725

原创 Java四种内部类

1、基本用法1.实现多继承。2.可以将一定类组织在一起同时对外界隐藏。2、成员内部类1.成员内部类依附于外部类存在,创建成员内部类,必须先创建一个外部类对象。2.成员内部类可以定义变量,不允许定义常量和静态属性3.成员内部类可以访问外部类所有成员和方法。3、静态内部类1.静态内部类不需要依附于外部类,不能使用外部类非静态属性和方法,只可以访问静态属性。4、局部内...

2019-10-29 18:21:30 237

原创 Java三种反射

1、基本用法1.通过 .class 获取对象。2.通过 getClass() 获取对象。3.通过 Class.forName("") 获取对象。2、示例代码public class Reflex { public static void main(String[] args) throws Exception { Class class_1 = ReflexObjec...

2019-10-29 18:20:39 268

原创 Java类加载器-ClassLoader

1、基本用法类加载器负责加载所有的类,为所有被载入内存中的类生成一个java.lang.Class实例对象。2、启动类加载器-Bootstrap加载 JRE\lib\rt.jar3、扩展类加载器-Extension加载 JRE\lib\ext\*.jar4、应用类加载器-AppClassLoader加载 CLASSPATH5、自定义类加载器通过自定义类加载6...

2019-10-29 18:20:05 212

原创 Try-Catch-Finally

1、try-catch-finall验证分析1.如果try语句中有return语句,返回当前try中变量此时对应的值,此后对变量做任何修改,不影响try中return的值。2.如果finally语句中有return语句,try或者catch中返回语句忽略。3.如果finally抛出异常,整个try-catch-finall抛出异常。2、使用注意1.尽量在try或者catch中使...

2019-10-29 18:18:28 251

原创 Java关键字-Synchronized

1、基本用法修饰实例方法:对拥有这个方法的对象进行对象锁状态检查。修饰静态方法:对拥有这个方法的类对象进行对象锁状态检查(静态方法属于类,不属于当前实例)。修饰代码块:2、示例代码public class SynchronizedKeyword { /** * * 方法描述:修饰实例方法 * */ public synchronized void Fu...

2019-10-29 18:16:22 194

原创 Java关键字-Static

1、基本用法静态变量:静态变量在内存中只有一个拷贝,JVM只分配一次内存,可以用类名直接访问。静态方法:不需要创建对象可以直接调用。静态代码块:JVM加载类时会按顺序执行这些静态的代码块。静态内部类:不需要依赖外部类,不能访问外部类非静态属性。静态导包:JDK1.5特性。静态常量:static + final2、示例代码public class Static {...

2019-10-29 18:15:39 192

原创 Java关键字-Interface

1、基本用法接口是一种约束形式,其中只包括成员定义,不包含成员实现的内容。接口可以声明属性、方法、事件和类型,但不能声明变量,也不能设置这些成员的具体值,也就是说,只能定义,不能给它里面定义的东西赋值。2、示例代码/** * * 接口 * * @version 1.0 */public interface Inteface { /** * * 只能...

2019-10-29 18:14:33 261

原创 Java关键字-Final

1、基本用法可以修饰类、方法、变量(成员变量和局部变量)。2、类表示此类不能被继承(String.class)。3、方法1.可以把方法锁住,防止任何继承类修改它的含义。2.同意编译器将针对该方法的所以调用都转换为内嵌调用。3.所有private方法隐式地指为final。4、引用类型表示引用的地址是不能改变的。5、基本数据类型对于基本数据类型final使数...

2019-10-29 18:13:51 207

原创 Java关键字-Abstract

1、基本用法1.abstract关键字修饰的类是抽象类。2.abstract关键字修改的函数是抽象函数。2、抽象类无法构造出实体的类,不能生成对象,通常被继承。抽象类可以包含常量、变量、静态成员、构造方法、方法实现。3、抽象方法无法实现具体代码的函数。4、示例代码/** * * 抽象类 * * @version 1.0 */public abs...

2019-10-29 18:12:01 206

原创 Linux Shell 指令 if 中的判断表达式

1、$0、$?、$!、$$、$*、$#、$@1、$$ Shell本身的PID。2、$! Shell最后运行的后台Process的PID。3、$? 最后运行的命令的结束代码(返回值)。即执行上一个指令的返回值(0表示没错)。4、$- 显示Shell使用的当前选项,与set命令功能相同。5、$* 所有参数列表。如"$*"用「"」括起来的情况、以"$...

2019-10-29 09:06:31 550

原创 Eclipse配置文件修改workspace

Eclipse工作区间发生异常可以通过修改配置文件切换到新的工作区间。1、修改Eclipse配置文件1.打开Eclipse安装目录。2.进入configuration\.settings目录下。3.打开org.eclipse.ui.ide.prefs文件。4.修改RECENT_WORKSPACES项进行切换Eclipse工作区间。...

2019-10-09 17:59:16 590

原创 Maven 常用命令

1、验证项目正确以及所有必要的信息都是可用的validate2、编译项目的源代码compile3、使用适当的单元测试框架测试编译后的源代码test4、使用已编译的代码,并将其打包成可分布格式package5、对集成测试的结果进行任何检查,以确保满足质量标准verify6、将包安装到本地存储库中,以便在本地其他项目中使用该包install7...

2019-10-09 17:57:31 87

原创 LinkedHashMap实现LRU算法

LRU算法:最近最少使用,淘汰时间最长未被使用的数据。实现思路:1.创建一个队列,并设置队列的阈值。2.将数据按顺序存放到队列中,新增数据时将数据添加到队列尾部,如果队列超过阈值,则从队列头部删除数据。3.LinkedHashMap可以设置数据的访问顺序,并且在新增元素时可以删除最老的元素,所以可以用来实现LRU算法。/** * * LRU算法:最近最少使用,淘汰时间最...

2019-09-23 09:09:00 275

原创 Spring 拦截器

1、作用拦截器主要作用是拦截请求病进行相应的处理。2、定义一个拦截器1.自定义一个实现Interceptor接口。2.在web.xml中注册拦截器。3、与过滤器的区别1.拦截器是基于java反射机制的,过滤器是基于函数回调的。2.拦截器不依赖servlet容器,过滤器依赖于servlet容器。3.拦截器只对action起作用,过滤器几乎可以对所以请求起作用。4....

2019-09-18 16:49:29 214

原创 Spring Eclipse+Tomcat 热部署

1、目的项目运行时修改不需要重启。2、实现原理与区别热部署:在服务器运行时重新加载部署整个应用。热加载:在运行时重新加载class。3、设置1.修改Tomcat服务的server.xml文件中reloadable属性为true(核心)。2.修改Tomcat发布方式为Never publish automatically避免Tomcat频繁发布。3.开启Eclipse...

2019-09-12 17:42:29 162

原创 DispatcherServlet 加载过程与请求过程

1、DispatcherServlet加载过程1.contextLoaderListener监听器初始化完毕后,开始初始化web.xml中的Servlet,DispatcherServlet实际也是一种Servlet,作为一个前端控制器用于转发、匹配、处理servlet请求。2.DispatcherServlet上下文初始化的时候回建立自己的IOC上下文,利用WebApplicationC...

2019-09-03 19:06:46 798

原创 Spring 加载过程

1、web项目对于一个web项目,其部署在web容器中(JBoss,Tomcat),这个容器会提供一个全局的上下文环境(ServletContext),它可以为Spring IOC提供宿主环境。web项目启动时首先会读取web.xml配置文件,这一步骤没有出错并且完成之后,项目才会正常启动起来。2、读取web.xml文件1.容器首先会读取web.xml配置文件的两个节点:<l...

2019-09-03 19:01:34 404

原创 Spring 事务机制

1、事务配置编程式事务声明式事务2、事务属性事务传播行为:int getPropagationBehavior();事务隔离级别:int getIsolationLevel();事务超时时间:int getTimeout();事务是否只读:boolean isReadOnly();事务名称:String getName();3、事务传播PROPAGATION...

2019-09-03 18:54:51 212

原创 JVM 模拟对象进入老年代的四种情况

JVM 模拟对象进入老年代的四种情况github1、JVM参数设置JVM参数设置(JDK1.8)-XX:InitialHeapSize=20971520-XX:MaxHeapSize=20971520-XX:NewSize=10485760-XX:MaxNewSize=10485760-XX:SurvivorRatio=8/3-XX:MaxTenuringThreshol...

2019-08-22 10:34:25 1507

原创 JVM 模拟Full GC

本篇文章主要是模拟JVM发生Full GC的情况。github1、JVM的参数设置JVM参数设置(JDK1.8)-XX:InitialHeapSize=20971520 -XX:MaxHeapSize=20971520 -XX:NewSize=10485760 -XX:MaxNewSize=10485760 -XX:SurvivorRatio=8 ...

2019-08-22 10:25:31 1518

原创 JVM 模拟Young GC及日志分析

本篇文章主要是模拟一次JVM发生一次Young GC的情况后对日志进行分析,为后面的模拟Full GC做准备。github地址1、JVM的参数设置JDK1.8-XX:InitialHeapSize=10485760 初始化堆大小10M -XX:MaxHeapSize=10485760 最大堆大小10M -XX:NewSize=5242880 初始化新生代大小5M ...

2019-08-22 10:22:08 625

原创 JVM GC优化思路

JVM的GC一般分为Young GC和Full GC,而Full GC由于STW(stop the world)需要消耗的时间一般情况比Young GC要多很多,所以GC优化思路是尽量减少Full GC的频率,减少STW以提升性能。现在我们知道了JVM优化的方向是减少Full GC的频率,要减少Full GC的频率必然要知道对象是如何进入老年代的。那么我们先考虑几个问题,Young GC、...

2019-08-22 10:18:37 500

原创 JVM 调试命令

1、需要注意的重点信息新生代对象增长的速率Young GC的触发频率Young GC的耗时每次Young GC过后有多少对象是存活下载的每次Young GC过后有多少对象进入老年代老年代对象增长的速率Full GC的触发频率Full GC的耗时2、jps显示指定系统内所有的HotSpot虚拟机进程jps可以通过RMI协议查询开启RMI服务的进程虚拟机进程...

2019-08-21 17:57:15 255

原创 CyclicBarrier 源码学习

1、CyclicBarrier 的作用一种同步辅助,允许一组线程彼此等待到达一个共同的障碍点。cyclicbarrier在包含固定大小的线程的程序中非常有用,这些线程有时必须彼此等待。这个屏障被称为循环,因为它可以在释放等待的线程之后重用。2、核心结构// 使用ReentrantLock加锁private final ReentrantLock lock = new Reentra...

2019-08-16 08:23:26 197

原创 CountDownLatch 源码学习

1、CountDownLatch 的作用一种同步辅助,允许一个或多个线程等待,直到在其他线程中执行的一组操作完成。一个通用的同步工具,可以用于多种用途。初始化一个count为1的 CountDownLatch 作为一个简单的on/off闩锁或门:所有调用 wait 的线程都在门上等待,直到调用 countDown 的线程打开它。一个初始化为N的 CountDownLatch 可以用来让一个...

2019-08-16 08:23:01 238

原创 Semaphore 源码学习

1、Semaphore 的作用一种计数信号量。通常用于限制能够访问某系资源的线程数。维护一组许可证,每个 acquire 将获取一个许可证,每个 release 会释放一个许可证。2、核心结构//所有机制通过AbstractQueuedSynchronizer子类实现private final Sync sync;3、构造方法// 默认不考虑公平策略public S...

2019-08-16 08:22:48 215

原创 Java sleep() wait() 比较分析

sleep():使当前执行的线程休眠(暂时停止执行)指定的毫秒数,线不会丢失任何监视器的所有权。wait():使当前线程等待,直到另一个线程调用notify()或notifyAll()方法。当前线程必须拥有此对象的监视器。线程释放此监视器的所有权并等待另一个线程通知等待此对象监视器唤醒的线程通过调用notify方法或notifyall方法。线程等待,直到它可以重新获得监视器...

2019-08-06 08:29:48 392

原创 Java start() run() 比较分析

start():启动一个新线程,新线程会执行相应的run()方法。不能被重复调用。run():单独调用的话,会在当前线程中执行,并不会启动新线程。必须执行完线程才会开始向下执行。和普通的成员方法一样,可以被重复调用。验证代码github/** * * start()、run() 比较分析 * start():启动一个新线程,新线程会执行相应的run()...

2019-08-06 08:25:10 378

原创 Java JDK1.8 HashMap红黑树的学习

JDK1.8中的HashMap的结构为 数组+链表+红黑树,本文基于JDK1.8中的HashMap源码中的红黑树操作进行学习分析来实现红黑树的新增、删除、查询。需要提到一点是JDK源码中在 if 判断语句中进行了大量的赋值操作,阅读一定要注意 if 中是判断还是赋值。红黑树是一种含有红黑结点并能自平衡的二叉查找树。每个节点要么是黑色,要么是红色。 根节点是黑色。 每个叶子结点(NIL)...

2019-07-15 10:22:55 653

原创 MongoDB体系结构

MongoDB是一个可移植的数据库,它在流行的每一个平台上都可以使用,即所谓的跨平台特性。在不同的操作系统上虽然略有差别,但是从整体架构上来看,MongoDB在不同的平台上是一样的,如数据逻辑结构和数据的存储等待。一个运行着的MongoDB数据库可以看成一个MongoDB Server,该Server由实例和数据库组成,在一般情况下一个MongoDB Server机器上包含一个实例和多个与之对...

2019-07-10 13:37:39 1847

空空如也

空空如也

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

TA关注的人

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