java
文章平均质量分 72
学习笔记cmj
学习笔记
展开
-
mybatis再也不用写原生sql了
mybatis-jql原创 2022-11-22 01:02:56 · 1364 阅读 · 1 评论 -
jvm垃圾回收器之CMS收集器
jvm垃圾回收器之CMS收集器cms收集器 (Concurrent Mark Sweep 并发标记删除)cms收集器摘要CMS (Concurrent Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器。目前很大一部分的 Java应用集中在互联网站或者B/S系统的服务端上,这类应用尤其重视服务的响应速度,希望系统停顿时间最短,以给用户带来较好的体验。CMS收集器就非常符合这类应用的需求。学习cms收集器之前带着问题去学习cms收集器在执行时都包含那几..原创 2021-03-27 11:08:16 · 238 阅读 · 0 评论 -
jvm内存模型
jvm内存模型主内存和工作内存内存间的交互操作对volatile的特殊规则对long和double的特殊规则原子性,可见性和有序性先行发生原则jvm内存模型的作用(为什么要定义内存模型)1:用来屏蔽硬件和各种操作系统之间内存访问的差异。可以让Java程序在各种不同硬件的操作系统上具有一致的访问效果。(外话: 这也就是为什么说,java具有具有跨平台性,因为不同平台jvm)。2:java内存模型主要通过定义内存访问规则来屏蔽硬件和操作系统之间内存访问的差异。内存访问规则通常指实.原创 2021-03-26 09:54:33 · 383 阅读 · 1 评论 -
Java中的JVM关闭钩子
Java中的JVM关闭钩子(翻译篇)关机钩子是一种特殊的构造,允许开发人员插入一段代码,以便在JVM关闭时执行。当我们需要在VM关闭时执行特殊的清理操作时,这就很方便了。通常使用关机钩子处理的一般结构,如确保我们调用特殊过程在应用程序退出(调用system . exit(0))将不工作情况下VM关闭是由于外部原因(例如杀死请求从O / S),或由于资源问题(内存)。我们很快就会看到,shutdown钩子很容易解决这个问题,因为它允许我们提供一个任意的代码块,JVM在关闭时将调用这个代码块。从表面上看原创 2020-08-14 00:54:54 · 18902 阅读 · 0 评论 -
程序的原子性操作
作为开发人员经常会用到锁, 因为锁通常来说具有原子性,那原子性又是什么? 有些人说,原子性就是同一个代码块在任何时刻只能被一个线程访问执行,其他线程则等待(阻塞). 细想一下这句话应该属于排它性. 也有人说不可分割就属于原子性.科普一下知识:并行: 多个cpu在同一时刻执行各自的多线程并发: 单个cpu 在同一时间段循环执行多线程线程: 用来执行具有一系列关联性的操作单元(本质上是机器码, 从编程角度来说就是你的程序代码, 因为程序码最终会编译成机器码)总线锁: CPU芯片上有一条引线原创 2020-08-14 00:21:09 · 19321 阅读 · 0 评论 -
<init>构造器 与构造方法的关系
java中的构造器有两种:分别是 实例构造器<init>和类构造器<cinit> . 构造器的作用: 构造器的产生过程实际上是一个**代码收敛的过程**,**编译器会把语句块**(对于实例构造器而言是“{}”块,对于类构造器而言是“static{}”块)、**变量初始化**(实例变量和类变量)、**调用父类的实例构造器**(仅仅是实例构造器,<clinit>()方法中无须调用父类的<clinit>()方法,虚拟机会自动保证父类构造器的执行,但在<clinit>()方法中经常会生成调用java.lang.原创 2020-06-28 22:48:42 · 20534 阅读 · 2 评论 -
java 内部类 知识梳理
java内部类和外部类之间的关系. 通过代码加注释的形式说明.package com.mh.others.class_;import java.lang.reflect.Constructor;/** * 内部类的 * @author mingjie * */public class OutClassAndInnerClass extends OutClassAndInnerClassParent{ public String name = "OutClassAndInnerClass原创 2020-06-21 15:30:56 · 18241 阅读 · 0 评论 -
读书笔记之 jvm的 关闭钩子
参考书籍: java并发编程实战.jvm在正常关闭时会调用以注册的关闭钩子(ShutDown Hook), 通过 Runtime.getRuntime().addShutdownHook(Thread) 注册关闭钩子, jvm不保证关闭钩子的执行顺序. 在jvm关闭时,如果有线程(守护线程和非守护线程)仍然在运行, 那么这些线程将与关闭钩子线程一起并发执行, 当所有关闭钩子正常执行结束时,jvm会运行终结器,然后再停止. 当jvm最终结束时,所有的线程被强行结束. 如果关闭钩子或终结器没有执行完成, 那原创 2020-06-21 15:09:01 · 5626 阅读 · 0 评论 -
ReentrantLock源码阅读
ReentrantLock 是jdk提供的一种锁机制,该锁支持公平锁和非公平锁这两种。这两种锁的实现原理是 通过一 锁队列,公平锁是按照锁队列顺序执行,而非公平锁则不是按照锁队列顺序执行,会存在锁竞争,因为新锁会和锁队列中等待的锁进行竞争,所以有可能新锁会竞争到锁(如果竞争不到则加入锁队列)。下图为类依赖关系。NofairSync , FairSync 是 ReentrantLock 中的内部类。分别是非公平和公平锁。接下来从源码入手,先查看NofairSync:new ReentrantLock()原创 2020-06-01 01:22:20 · 18275 阅读 · 0 评论 -
读书笔记之 java中的标准注解
java给我们提供了一些标准的注解,在这里做一下统计。注解名词应用场合目的Deprecated全部将目标标记为过时的SuppressWarnings除了包和注解之外的所有情况阻止某个给定的类型的警告信息Override方法检查该方法是否覆盖了某一个超类的方法PostConstruct方法被标记的方法应该在构造之后立即被调用PreDes...原创 2020-05-03 20:48:30 · 18322 阅读 · 0 评论 -
读书笔记之 volatile关键字理解与使用
volatile关键字我们在开发的时候很少使用,在看spring源码的时候很有可能会看到,但是很少有人知道在什么环境下使用。本人查看一些书籍资料后做一下总结。volatile 通常理解为jvm虚拟机提供的最轻量级的同步机制(本句来源于‘深入理解JAVA虚拟机’)两大特征:(1)使用volatile的变量对所有线程具有可见性。(2)使用volatile的变量禁止指令重排序两大特征的具体理解...原创 2020-04-21 02:33:44 · 18654 阅读 · 6 评论 -
CyclicBarrier 学习研究
package com.mh.others.lock;import java.util.concurrent.BrokenBarrierException;import java.util.concurrent.CyclicBarrier;/** * CyclicBarrier 学习研究,CyclicBarrier代表障栅,当所有线程进入障栅 cyclicBarrier.await()...原创 2020-04-20 22:45:13 · 5603 阅读 · 0 评论 -
源码分析List删除元素注意点,小心报错
源码分析List删除元素注意点,小心报错。并用一个小案例讲解记录笔记/** * 研究List 在删除的过程中注意点。 */ @Test public void test8(){ LinkedList<String> list = new LinkedList<>(); list.add("a"); list.add("b"); list.add...原创 2020-01-31 01:30:04 · 198 阅读 · 0 评论 -
CountDownLatch 学习研究
package com.mh.others.lock;import java.util.concurrent.CountDownLatch;import org.junit.Test;/** * 闭锁(本人理解为减锁(构造方法需要传入 一int 类型值n >0),n减到0 的时锁自动放开,关键的两个方法: * await():线程等待,countDown():n减一 )...原创 2019-12-16 23:15:58 · 18182 阅读 · 0 评论 -
读书笔记 之 类初始化规定
什么情况下需要开始类加载过程的第一个阶段:加载?Java虚拟机规范中并没有进行强制约束,这点可以交给虚拟机的具体实现来自由把握。但是对于初始化阶段,虚拟机规范则是严格规定了有且只有5种情况必须立即对类进行“初始化”(而加载、验证、准备自然需要在此之前开始):1)遇到new、getstatic、putstatic或invokestatic这4条字节码指令时,如果类没有进行过初始化,则需要先触发其...原创 2019-01-03 13:03:13 · 131 阅读 · 0 评论 -
main memort and work memory
Java Memory ModelThe Internal Java Memory Model Hardware Memory Architecture Bridging The Gap Between The Java Memory Model And The Hardware Memory Architecture Visibility of Shared Objects Rac...转载 2019-12-12 19:20:28 · 170 阅读 · 0 评论 -
ASM读取class字节码获取类的注解信息
spring中底层运用到了asm技术,这种技术是不创建Class类对象直接读取class 文件就可以获取Class的信息。那么我们在公司很有可能都会开发自己公司的一套框架,通常来说,就是把现在流行的技术二次开发封装,方便自己公司开发项目,二次开发时很有可能你会自己设计一些注解,这些注解是做什么用的,用在什么地方,比如类上面或者属性或者方法等等,此时你很有可能就会用到ASM技术,在不初始化Class...原创 2019-05-22 14:47:39 · 24009 阅读 · 6 评论 -
类的加载过程,初始化和实例化的区别你是否真的明白?
本人的编程母语是java 语言,java语言入门很简单,但是随着时间自己对java的底层越发的有兴趣, 因为你不知道底层在做开发的时候种感觉有种我能开发代码但是不知道代码为什么会这样。同样底层知道的多一点对你的代码优化也是有好处的。先来个经典的类加载图片: 这个图片在 网上可以说是烂大街了,但是 真正能解释清楚的很少,甚至在我看到的文章中总是感觉有很多点矛盾,在网上看到最多的类加载讲解大部分是...原创 2019-04-21 22:01:47 · 1544 阅读 · 0 评论 -
java 使用readLine() 乱码。
本人在公司开发程序遇到了读取 一行乱码。eclipse 默认为utf-8 FileInputStream f4 = new FileInputStream(new File("F:\\bb.txt")); BufferedReader bufferedReader2 = new BufferedReader(new InputStreamReader(f4));...原创 2019-02-12 23:39:10 · 10716 阅读 · 0 评论 -
java上传下载文件。二次元开发工具类(功能丰富)。可以手动设置上传下载配置,不多说上码
package cn.mh.elect.util;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.F...原创 2018-04-15 10:35:17 · 206 阅读 · 0 评论 -
Hibernate中的一级缓存(session缓存)的本质是什么
问题: 1:Hibernate中的一级缓存(session缓存)的本质是什么(底层是什么类型,怎样存储数据的,副本是怎么实现的,实体对象的标识符的作用)代码: /**查看session的本质是什么 * 在什么时候加进session的一级缓存的 * @author pc * */public class HibernateSessionTest { SessionFactory ...原创 2018-04-15 10:58:29 · 1121 阅读 · 0 评论 -
面向对象(设计模式)的六种设计原则和一种法则
单一职责原则:可以理解为一个类只有一个功能,把这个功能做到极致。里氏替换原则:(这个名字起得真不好,不如叫:子替父原则,哈哈)可以理解为子类的功能可以完全的替换掉父类功能。接口隔离原则:每个接口中的方法要少,尽量对写几个接口,把方法进行分开。目的就是使框架中的操作更加灵活。用到哪个接口中的方法就去实现,没必要用不到的方法也实现。依赖倒置原则:一句话,细节依赖抽象开扩闭修原则:开发扩展功能,(闭)不...原创 2018-04-16 15:36:43 · 256 阅读 · 0 评论 -
wait() 和notify() 怎么使用 6个demo诠释它+3个demoZH
demo1:package com.jvm.others.thread;/**测试Wait和notify的搭配使用* @author pc**/public class WaitAndNotify {public static void main(String[] args) throws Exception {Thread thread1 = new Thread(new...原创 2018-04-18 01:27:42 · 584 阅读 · 0 评论 -
ArrayList 长度(数组)扩容 和元素(数组)搬移的核心代码
首先我们要明白ArrayList底层是用数组存放数据的即:Object[] 数组。调用了System.arrayCopy(a,b,c,d,e)方法进行搬移数组元素a: 要搬移数组元素的对象(原始对象)b: 搬移 索引位置(要在a数组中那个索引位置开始搬移)e: 要在a数组中,从b的位置开始搬移,搬移的长度。(向后查找指定的个数,包括b索引中的元素)c:将搬移的元素填充到的目标对象(从a中的...原创 2018-04-13 17:38:01 · 402 阅读 · 0 评论 -
JAVA 最好的分页类 FPage 。
package cn.mh.elect.util;import java.util.ArrayList;import java.util.List;/**分页对象* @author CMJ(曹明杰)* @date 2017-3-19 上午9:22:11*/public class FPage {private int pageNum;//前台传来的页码 别名currentP...原创 2018-04-13 18:06:52 · 778 阅读 · 0 评论 -
你是否真的理解 final关键字 在堆内存中的变化
基础知识大家都知道,final可以用在类上,则该类不能被继承,final用在成员变量上则必须给定一个终量,final在方法上不能被重写。这里我要说的事final在类上和不在类上的区别。很简单看例子代码:public class NUllTest { public static void main(String[] args) { ElecUser user = new ElecUse...原创 2018-05-02 00:53:40 · 1690 阅读 · 0 评论 -
JXL 写百万数据注意点java.lang.OutOfMemoryError。
在使用JXl进行倒出数据时经常可能出现 java.lang.OutOfMemoryError。只要在创建WritableWorkbook的时候如下加一个 WorkbookSettings,并开调用setUseTemporaryFileDuringWrite(true); 开启中间缓存刷入磁盘功能就可以解决内存溢出。关键代码如下:WorkbookSettings ws= new Workbook...原创 2018-05-03 10:08:48 · 655 阅读 · 0 评论 -
偏向锁理解
java对象的结构这里简单的说一下:对象头,对象实际数据,对齐填充。对象头:包含两部分 1:MarkWord (自身运行数据) ,2:类型指针 # markWord: hash码,对象所属的年代,线程持有的锁对象,锁状态标志,偏向线程ID,偏向时间等 状态的不同,markword存储的内容也是不同的。(那么读者很有可能会思考一个问题,那原来的数据比如hash码,分代年龄...原创 2018-04-27 11:51:49 · 2273 阅读 · 3 评论 -
字节换算图表,简单理解二进制与字节的关系
我自己画了一张图原创 2018-06-26 09:03:48 · 3655 阅读 · 0 评论 -
java访问属性和访问方法的区别:
对象 . 访问方法与对象所属的实例类型有关,访问属性与对象引用类 和 线程所在类(就是当前线程所执行的当前类文件)有关。&对象访问方法:线程永远是从当前对象所属的实例类中找到对应的方法,如果不存在则会去父祖类中查找。public class A{ say(){ system.out.println("this is A"); } play()...原创 2018-08-22 11:10:31 · 3221 阅读 · 0 评论 -
http协议下:为什么请求与响应会做到准确误的对应。不会出现请求与响应的错乱
互联网通信是套接字进行通信的,套接字,是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程。非常非常简单的举例说明下:套接字=Ip address+ TCP/UDP + port。java 针对TCP 和 UDP进行了分别的开发封装: Socket,DatagramSocket (早期...原创 2018-09-27 16:15:02 · 1856 阅读 · 6 评论 -
大四刚毕业应届生说自己已经有三年的工作经验。
大二开学开始在外包实习(合肥),今年一月份辞掉了工作,来到北京。说来也有3年的javaweb开发经验,来到北京感觉自己肯定很快能找到工作。但是事实并不是这样,在北京投了好多份简历,至今只有一家公司让我面试,在面试的工程中,一切都很好,第一次被面试官夸奖,但并没有卵用,当一切技术都过关的时候,说到了我六月份要回学校答辩,大概回去3天左右,大概就是这里被卡到了。自己也非常努力在工作中。不断学习新的技术...原创 2018-04-15 10:14:26 · 7112 阅读 · 4 评论