自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 IntelliJ IDEA这么设置最好,让人心情舒适

前言如果你是刚开始使用IntelliJ IDEA,那么强烈推荐看完本文章,会为你以后的写代码提供很大的便利和愉悦。如果你不是刚开始使用IntelliJ IDEA,那么热情推荐看完本文章,会让你后悔为什么不早点知道这么设置会更爽。下面就开始介绍怎么设置IntelliJ IDEA。第一步找到设置选项第二步开始我们的设置1、给方法加分割线2、忽略大小写提示3、自动导包4、全局编码设置5、修改快捷键...

2020-11-21 16:12:12 1076 1

原创 垃圾收集器大总结

目录概述Serial收集器ParNew收集器ParallelScavenge收集器SerialOld收集器ParallelOld收集器CMS收集器G1收集器理解GC日志垃圾收集器参数总结概述如果说收集算法是内存回收的方法论,那么垃圾收集器就是内存回收的具体实现。Java虚拟机规范中对垃圾收集器应该如何实现并没有任何规定,因此不同的厂商、不同版本的虚拟机所提供的垃圾收集器都可能会有很大差别,并且一般都会提供参数供用户根据自己的应用特点和要求组合...

2021-01-26 16:05:52 185

原创 垃圾收集器和内存分配策略(一)

垃圾收集器和内存分配策略(一)目录概述对象已死吗?引用计数算法可达性分析算法再谈引用强引用软引用弱引用虚引用生存还是死亡垃圾收集算法标记-清除算法复制算法标记-整理算法分代收集算法Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的“高墙”,墙外面的人想进去,墙里面的人却想出来。概述说起垃圾收集(GarbageCollection,GC),大部分人都把这项技术当做Java语言的伴生产物。事实上,GC的历史比Java久...

2021-01-14 15:29:23 120

原创 Java对象的创建,内存布局,访问定位

对象的创建Java是一门面向对象的编程语言,在Java程序运行过程中无时无刻都有对象被创建出来。在语言层面上,创建对象(例如克隆、反序列化)通常仅仅是一个new关键字而已,而在虚拟机中,对象(文中讨论的对象限于普通Java对象,不包括数组和Class对象等)的创建又是怎样一个过程呢?虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程。如何划分可用空间在.

2021-01-13 17:00:28 160

原创 Java内存区域与内存溢出异常

Java内存区域与内存溢出异常目录Java内存区域与内存溢出异常概述运行时数据区域程序计数器(PC寄存器)java虚拟机栈本地方法栈Java堆方法区运行时常量池概述Java与C++之间有一堵由内存动态分配和垃圾收集技术所围成的“高墙”,墙外面的人想进去,墙里面的人却想出来。对于从事C、C++程序开发的开发人员来说,在内存管理领域,他们既是拥有最高权力的“皇帝”又是从事最基础工作的“劳动人民”——既拥有每一个对象的“所有权”,又担负着每一个对象生命开始到终结的.

2021-01-13 16:46:25 115

原创 【Java高并发】线程池的实现原理

线程池的主要处理流程当向线程池提交一个任务之后,线程池是如何处理这个任务的呢?我们来看一下线程池的主要处理流程,处理流程图如下图所示。 从图中可以看出,当提交一个新任务到线程池时,线程池的处理流程如下。 1)线程池判断核心线程池里的线程是否都在执行任务。如果不是,则创建一个新的工作线程来执行任务。如果核心线程池里的线程都在执行任务,则进入下个流程。 2)线程池判断工作队列是否已经满。如果工作队列没有满,则将新提交的任务存储在这个工作队列里。如果工作队列满了,则进入下个流程。 3)线.

2020-12-17 22:15:49 180

原创 【Java高并发】Volatile的两种特性

当一个变量定义为 volatile 之后,将具备两种特性:  1.保证此变量对所有的线程的可见性,当一个线程修改了这个变量的值,volatile 保证了新值能立即同步到主内存,以及每次使用前立即从主内存刷新。这样的话当其他线程要使用这个变量的时候,就会拿到最新更新的值,保证了数据一致性。比如上面这个例子,running就是一个被volatile修饰的变量,当主线程修改了running的时候,t1线程就会停止,但是当去掉volatile修饰的时候,t1线程就无法得知running在主线程已经被改变

2020-12-16 16:57:39 144

原创 【Java高并发】停止线程的两种方式

使用退出标志,使线程正常退出退出标志flag最好加一个volatile修饰,保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。使用 interrupt 方法中断线程在遇到 sleep() 或者 wait() 这样的操作,我们可以通过中断来处理了。public static native void sleep(long millis) throws InterruptedExceptionThread.sleep() 方法会抛出一

2020-12-15 10:51:40 89

原创 【Java高并发】线程安全的使用HashMap(Hashtable & ConcurrentHashMap)

线程安全的使用HashMapHashtable ConcurrentHashMapHashtableHashtable 中的方法是Synchronize的,Hashtable的所有方法都是同步的。 此时,无竞争的同步会导致可观的性能代价。ConcurrentHashMap原理上来说:ConcurrentHashMap 采用了分段锁技术,其中 Segment 继承于 ReentrantLock。不会像 HashTable 那样不管是 put 还是 get 操作都需要做同步处理,理论上 Co

2020-12-15 10:23:22 224

原创 【Java高并发】总结创建线程的方法

继承Thread类实现run方法步骤:定义类继承Thread; 重写Thread类中的run方法;(目的:将自定义代码存储在run方法,让线程运行) 调用线程的start方法:(该方法有两步:启动线程,调用run方法)public class UseThread { public static void main(String[] args) { System.out.println(1); System.out.println(2);

2020-12-11 15:52:09 69

转载 【知识点】静态方法与普通方法区别

介绍静态的内存空间是固定的,相对来说更省资源。创实例的创一个实例就要开辟一个新内存,耗费资源,因此静态方法效率上要比实例化高,静态方法的缺点是不自动进行销毁,而实例化的则可以做销毁;静态方法和静态变量创建后始终使用同一块内存,而使用实例的方式会创建多个内存。所以静态方法在类实例化前就可以使用,而类中的非静态变量必须在实例化之后才能分配内存; 静态方法属于类所有,类实例化前即可使用;注意事项非静态方法可以访问类中的任何成员,静态方法只能访问类中的静态成员; static内部只能出现static变

2020-12-05 11:17:52 2255

原创 【知识点】PrintWriter中write()方法和print()方法的区别

PrintWriter中write()方法和print()方法的区别print方法在打印的时候调用了toString方法,可以将打印对象转换成字符串的形式输出。比如可以打印一个user实例;write方法只能打印字符串数据。...

2020-11-26 11:08:38 1084

原创 Servlet的作用和好处是哪些?Servlet怎么创建和配置?

Servlet的作用和好处是哪些?Servlet的作用负责接收请求,调用相应Service方法,决定如何响应,本身不做业务逻辑创建和部署Servlet创建:(1)实现javax.servlet.Servlet接口。(2)继承javax.servlet.GenericServlet类(3)继承javax.servlet.http.HttpServlet类我们在日常开发中一般会使用第三种方法来进行Servlet的创建配置:一、通过配置文件配置修改web.xml添加<

2020-11-24 12:12:35 734

原创 Servlet生命周期,简单总结

Servlet生命周期1加载和实例化当Servlet容器启动或客户端发送一个请求时,Servlet容器会查找内存中是否存在该Servlet实例,若存在,则直接读取该实例响应请求;如果不存在,就创建一个Servlet实例。2 初始化实例化后,Servlet容器将调用Servlet的init()方法进行初始化(一些准备工作或资源预加载工作)。3服务初始化后,Servlet处于能响应请求的就绪状态。当接收到客户端请求时,调用service()的方法处理客户端请求,HttpServlet的s

2020-11-24 10:23:41 135

原创 我的Spring学习笔记,只此一份,简单易懂

一、Spring简介Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。◆目的:解决企业应用开发的复杂性◆功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能◆范围:任何Java应用Spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架。...

2020-11-21 15:52:08 149 1

空空如也

空空如也

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

TA关注的人

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