![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
利剑 -~
追求卓越成功就会出其不意找上门
展开
-
java实现sql语句中 准确替换某个字符串
java实现,sql语句中准确 替换某个字符串原创 2022-09-16 18:41:04 · 772 阅读 · 0 评论 -
并发编程总结
java并发编程总结原创 2022-06-17 08:15:57 · 98 阅读 · 0 评论 -
java后端分享整理
1. Java 常见的代码规范1.1. Java 自带的工具方法1.1.1 比较两个对象是否相等当我们用equals比较两个对象是否相等的时候,还需要对左边的对象进行判空,不然可能会报空指针异常,我们可以用java.util包下Objects封装好的比较是否相等的方法: Objects.equals(strA, strB); 源码:public static boolean equals(Object a, Object b) { return (a == b) || (a !原创 2022-03-30 23:04:12 · 1395 阅读 · 1 评论 -
线程安全-常用的模式
线程安全-常用的模式1.对象安全发布的几种方式2. 线程安容器3.使用静态初始化器 发布安全对象1.对象安全发布的几种方式安全发布一个对象,对象的引用和对象的状态,必须是对其他对象可见的。下面是对象可以安全发布的几种方式在静态函数中初始化一个对象将对象保存到 volatile 或者 atomicReferance对象中将对象的引用保存到 某个正确构造对象的 final 类型域中国。将对象引用保存到一个由锁保护的域中。线程安全容器的同步,指的是 将对象放入到某个容器 即:(将对象引原创 2021-10-30 19:15:18 · 133 阅读 · 0 评论 -
从zip中读取文件 合并到指定的文件中
package work;import com.sun.org.apache.xml.internal.serialize.EncodingInfo;import java.io.*;import java.nio.charset.Charset;import java.util.Locale;import java.util.zip.ZipEntry;import java.util.zip.ZipFile;import java.util.zip.ZipInputStream;/*原创 2021-06-21 23:06:16 · 227 阅读 · 0 评论 -
java思维导图
Java思维导图java 基础juc知识点总结缓存相关知识性能调优java 基础juc知识点总结缓存相关知识性能调优原创 2021-04-10 00:29:20 · 306 阅读 · 2 评论 -
循环打印ABA问题
注意!! notify 虚拟锁问题,后续补充package com.qey.learn;/** * @ClassName SwapPrint * @Description * @Author qianxl * @Date 2021-03-02 14:46 * @Version 1.1 **/public class SwapPrint { public int flag =0; public synchronized void printA() { .原创 2021-03-09 22:32:30 · 109 阅读 · 0 评论 -
生产者和消费者
注意!! notify和wait 使用后续补充package com.qey.learn;/** * @ClassName Water * @Description * @Author qianxl * @Date 2021-03-01 23:09 * @Version 1.1 **/public class Water { // 服务员来提供产品的输入的输出 private int product; public Water(int maxSize).原创 2021-03-09 22:30:50 · 76 阅读 · 0 评论 -
JVM架构和GC垃圾回收机制详解
JVM架构图分析下图:参考网络+书籍,如有侵权请见谅 (想了解Hadoop内存溢出请看: Hadoop内存溢出(OOM)分类、参数调优化)JVM被分为三个主要的子系统(1)类加载器子系统(2)运行时数据区(3)执行引擎1. 类加载器子系统Java的动态类加载功能是由类加载器子系统处理。当它在运行时(不是编译时)首次引用一个类时,它加载、链接并初始化该类文件。1.1 加载...转载 2018-09-16 17:22:09 · 275 阅读 · 0 评论 -
JVM架构和GC垃圾回收机制--面试
JVM架构和GC垃圾回收机制详解JVM架构图分析下图:参考网络+书籍,如有侵权请见谅 (想了解Hadoop内存溢出请看: Hadoop内存溢出(OOM)分类、参数调优化)JVM被分为三个主要的子系统(1)类加载器子系统(2)运行时数据区(3)执行引擎1. 类加载器子系统Java的动态类加载功能是由类加载器子系统处理。当它在运行时(不是编译时)首次引用一个类时,它加载、链...转载 2018-09-16 02:04:25 · 350 阅读 · 0 评论 -
GC算法 垃圾收集器
概述垃圾收集 Garbage Collection 通常被称为“GC”,它诞生于1960年 MIT 的 Lisp 语言,经过半个多世纪,目前已经十分成熟了。jvm 中,程序计数器、虚拟机栈、本地方法栈都是随线程而生随线程而灭,栈帧随着方法的进入和退出做入栈和出栈操作,实现了自动的内存清理,因此,我们的内存垃圾回收主要集中于 java 堆和方法区中,在程序运行期间,这部分内存的分配和使...转载 2018-09-15 23:26:46 · 124 阅读 · 0 评论 -
深入理解JVM—JVM内存模型
我们知道,计算机CPU和内存的交互是最频繁的,内存是我们的高速缓存区,用户磁盘和CPU的交互,而CPU运转速度越来越快,磁盘远远跟不上CPU的读写速度,才设计了内存,用户缓冲用户IO等待导致CPU的等待成本,但是随着CPU的发展,内存的读写速度也远远跟不上CPU的读写速度,因此,为了解决这一纠纷,CPU厂商在每颗CPU上加入了高速缓存,用来缓解这种症状,因此,现在CPU同内存交互就变成了下面的样子...转载 2018-08-12 00:11:55 · 116 阅读 · 0 评论 -
JVM直接内存
概述直接内存并不是虚拟机运行时数据区的一部分,也不是Java 虚拟机规范中农定义的内存区域。在JDK1.4 中新加入了NIO(New Input/Output)类,引入了一种基于通道(Channel)与缓冲区(Buffer)的I/O 方式,它可以使用native 函数库直接分配堆外内存,然后通脱一个存储在Java堆中的DirectByteBuffer 对象作为这块内存的引用进行操作。这样能在一...转载 2018-08-11 23:55:58 · 139 阅读 · 0 评论 -
jvm的新生代和老年代简介
新生代分为三个区域,一个Eden区和两个Survivor区,它们之间的比例为(8:1:1),这个比例也是可以修改的。通常情况下,对象主要分配在新生代的Eden区上,少数情况下也可能会直接分配在老年代中。Java虚拟机每次使用新生代中的Eden和其中一块Survivor(From),在经过一次Minor GC后,将Eden和Survivor中还存活的对象一次性地复制到另一块Survivor空间上(这...转载 2018-08-08 11:01:05 · 163 阅读 · 0 评论 -
java 思维导图
最近有时间,又整理了一下java 思维导图,持续优化中原创 2021-01-25 10:42:25 · 219 阅读 · 0 评论 -
java多线程思维导图
分享是最好的整理,利用csdn 平台保存一下原创 2021-01-08 23:46:58 · 162 阅读 · 0 评论 -
reentranklock简单实现生产者和消费者模型
package com.qey.interview;import javax.validation.constraints.Max;import java.util.concurrent.ArrayBlockingQueue;import java.util.concurrent.ThreadPoolExecutor;import java.util.concurrent.TimeUnit;import java.util.concurrent.atomic.AtomicInteger;im.原创 2020-06-30 01:40:24 · 119 阅读 · 0 评论 -
两个原子操作组合到一块不一定是能保证原子性
1.两个原子操作组合到一块不一定是能保证原子性ConcurrentLinkedQueueAtomicInteger 两个类都为线程安全的类,但是组合起来并不能保证原子性: public static ConcurrentLinkedQueue concurrentLinkedQueue = new ConcurrentLinkedQueue(); public static AtomicInteger atomicInteger =new AtomicInteger(); ..原创 2020-06-29 16:44:56 · 221 阅读 · 0 评论 -
java ReentrantLock 使用
1.ReentrantLock 简单的使用private Lock lock = new ReentrantLock();lock.lock();用来获取锁。lock.unlock();用来释放锁package com.qey.lock;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import java.util.concurrent.ThreadPoolExecu.原创 2020-05-13 18:57:25 · 178 阅读 · 0 评论 -
java锁以及双重检查
双检锁/双重校验锁 双层对空判断困扰了很久。实例public class Singleton { private volatile static Singleton singleton; //私有构造函数避免调用 private Singleton (){} public static Singleton getSingleton() { // 先判断...原创 2019-11-15 00:47:42 · 309 阅读 · 1 评论 -
Java transient关键字使用小记
转:https://www.cnblogs.com/lanxuezaipiao/p/3369962.html1. transient的作用及使用方法 我们都知道一个对象只要实现了Serilizable接口,这个对象就可以被序列化,java的这种序列化模式为开发者提供了很多便利,我们可以不必关系具体序列化的过程,只要这个类实现了Serilizable接口,这个类的所有属性和方法都会...转载 2018-07-18 16:57:55 · 123 阅读 · 0 评论 -
JVM内存结构 VS Java内存模型 VS Java对象模型
ava作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点。而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚。比如本文我们要讨论的JVM内存结构、Java内存模型和Java对象模型,这就是三个截然不同的概念,但是很多人容易弄混。可以这样说,很多高级开发甚至都搞不不清楚JVM内存结构、Java内存模型和Java对象模型这三者的概念及其间的区别。甚至我见过有些面试官自己也搞的...转载 2019-05-25 14:31:02 · 247 阅读 · 0 评论 -
java 多线程处理一个list的集合
import java.util.ArrayList;import java.util.List;import java.util.concurrent.*;/*** @ClassName ThreadUtils* @Description* @Author qian* @Date 2019-07-10 16:31* @Version 1.0**/public...原创 2019-07-11 14:39:21 · 1146 阅读 · 0 评论 -
NIO核心框架介绍
NIO共引入了4个概念:- 缓存区:表示数据存放的容器,提供可读写的数据缓存区;- 字符集:用来对缓存数据进行解码和编码,在字节和Unicode字符之间转换;- 通道:用来接收或发送数据,提供与文件、套接字等的连接,类似于Java IO中的流;- 选择器:他们与可选择通道一起定义了多路的、无阻塞的IO设施。NIO框架位于Java.nio包中,它为每一个概念都提供了核心的支持类...原创 2018-08-11 14:37:03 · 480 阅读 · 0 评论 -
Java api 1.8 中文 帮助文档
java 1.6 帮助文档中文链接:http://download.csdn.net/detail/qw599186875/9608735英文Java1.8 帮助文档英文中文 – 谷歌版在线版: https://blog.fondme.cn/apidoc/jdk-1.8-google/下载链接:http://download.csdn.net/detail/qw599186875/9...原创 2019-01-26 14:57:44 · 12175 阅读 · 0 评论 -
JAVA多线程及线程状态转换
转发:https://www.cnblogs.com/nwnu-daizh/p/8036156.html以下内容整理自:http://blog.csdn.net/wtyvhreal/article/details/44176369线程:是指进程中的一个执行流程。 线程与进程的区别:每个进程都需要操作系统为其分配独立的内存地址空间,而同一进程中的所有线程在同一块地址空间中工作,这些线程可以...转载 2018-07-21 15:00:31 · 226 阅读 · 0 评论 -
Java 中的 Reference
1、强引用(StrongReference) 强引用不会被GC回收,并且在java.lang.ref里也没有实际的对应类型。举个例子来说: Object obj = new Object(); 这里的obj引用便是一个强引用,不会被GC回收。 2、软引用(SoftReference) 软引用在JVM报告内存不足的时候才会被GC回收,否则不会回收,正是由于...转载 2018-07-21 10:44:47 · 219 阅读 · 0 评论 -
java中的4种reference的差别和使用场景(含理论、代码和执行结果)
转:https://blog.csdn.net/aitangyong/article/details/39453365我们知道java语言提供了4种引用类型:强引用、软引用(SoftReference)、弱引用(WeakReference)和幽灵引用(PhantomReference),与引用密切相关的,还有一个引用队列ReferenceQueue。引用和引用队列的关系,对于垃圾回收来说非常重...转载 2018-07-20 23:41:25 · 331 阅读 · 0 评论 -
Java弱引用(WeakReference)的理解与使用
转:https://blog.csdn.net/zmx729618/article/details/54093532 看到篇帖子, 国外一个技术面试官在面试senior java developer的时候, 问到一个weak reference相关的问题. 他没有期望有人能够完整解释清楚weak reference是什么, 怎么用, 只是期望有人能够提到这个concept和java的G...转载 2018-07-20 22:25:46 · 352 阅读 · 1 评论 -
Java中如何实现代理机制(JDK、CGLIB)
代理分为两种:1.静态代理2.动态代理 动态代理又分为两种:jdk 实现 ;Cglib 实现3.Java中如何实现代理机制(JDK、CGLIB)JDK动态代理:代理类和目标类实现了共同的接口,用到InvocationHandler接口。CGLIB动态代理:代理类是目标类的子类,用到MethodInterceptor接口。注意:使用版本:首先介绍jdk 实现动态代理...原创 2018-07-20 17:25:35 · 548 阅读 · 0 评论 -
JAVA数据结构
抽象数据类型:将不同数据组成一个整体来描述一个新的事物面向对象 类是一种数据类型(非基本数据类型) 显示世界中是由很多对象组成,基于这些对象抽出了类 类:类型类别 代表一类个体 对象:是真正存在的一个个体 类是模板,对象是具体实例 4.类中包含: 所有对象共有的特征/属性 .....静的(变量) 所有对...原创 2018-07-28 18:44:06 · 371 阅读 · 0 评论 -
抽象类和接口的对比
转:http://www.importnew.com/12399.html参数 抽象类 接口 默认的方法实现 它可以有默认的方法实现 接口完全是抽象的。它根本不存在方法的实现 实现 子类使用extends关键字来继承抽象类。如果子类不是抽象类的话,它需要提供抽象类中所有声明的方法的实现。 子类使用关键字implements来实现接口。它需要提供接口中...转载 2018-07-28 14:34:28 · 190 阅读 · 0 评论 -
Java 面试题及答案
JAVA基础JAVA中的几种基本类型,各占用多少字节? 下图单位是bit,非字节 1B=8bit String能被继承吗?为什么?不可以,因为String类有final修饰符,而final修饰的类是不能被继承的,实现细节不允许改变。平常我们定义的String str=”a”;其实和String str=new String(“a”)还是有差异的。前者默认调用的是String....转载 2018-07-18 16:40:47 · 501 阅读 · 0 评论 -
Java集合——HashMap、HashTable以及ConCurrentHashMap异同比较
转发:https://www.cnblogs.com/zx-bob-123/archive/2017/12/26/8118074.html0. 前言 HashMap和HashTable的区别一种比较简单的回答是:(1)HashMap是非线程安全的,HashTable是线程安全的。(2)HashMap的键和值都允许有null存在,而HashTable则都不行。(3)因为线程安...转载 2018-07-18 15:09:55 · 119 阅读 · 0 评论 -
java运算符优先级
优先级记忆方法转:https://blog.csdn.net/pc_gad/article/details/52861838优先级记忆方法:单目乘除为关系,逻辑三目后赋值。(前辈总结的)单目运算符:一次作用一个变量的运算符,又叫一元运算符单目:单目运算符+ –(正负数) ,++ --,!(逻辑非),~(按位取反)乘除:算数运算符:* / % + - (* / %优先级肯定是大于...转载 2018-07-17 23:49:50 · 274 阅读 · 0 评论 -
单例模式的八种写法比较
转:https://www.cnblogs.com/zhaoyan001/p/6365064.html单例模式是最常用到的设计模式之一,熟悉设计模式的朋友对单例模式都不会陌生。一般介绍单例模式的书籍都会提到 饿汉式 和 懒汉式 这两种实现方式。但是除了这两种方式,本文还会介绍其他几种实现单例的方式,让我们来一起看看吧。 简介单例模式是一种常用的软件设计模式,其定义是单例对象的类只能...转载 2018-07-17 22:53:35 · 277 阅读 · 0 评论 -
链表逆序(JAVA实现)
题目:将一个有链表头的单向单链表逆序分析:链表为空或只有一个元素直接返回; 设置两个前后相邻的指针p,q,使得p指向的节点为q指向的节点的后继; 重复步骤2,直到q为空; 调整链表头和链表尾;图解: 以链表A->B->C->D为例,逆序此链表。 0.初始状态 ...转载 2018-07-17 17:11:40 · 2336 阅读 · 0 评论 -
HashMap实现原理分析
转:https://blog.csdn.net/xuehuagongzi000/article/details/714491791. HashMap的数据结构 数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。 数组数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;...转载 2018-07-17 15:59:42 · 240 阅读 · 0 评论 -
Java并发编程:volatile关键字解析
转: https://www.cnblogs.com/dolphin0520/p/3920373.htmlvolatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容...转载 2018-07-16 18:52:37 · 107 阅读 · 0 评论 -
Java 的Runnable和Callable的区别
Runnable和Callable的区别是,(1)Callable规定的方法是call(),Runnable规定的方法是run().(2)Callable的任务执行后可返回值,而Runnable的任务是不能返回值得(3)call方法可以抛出异常,run方法不可以(4)运行Callable任务可以拿到一个Future对象,表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并检索...原创 2018-07-21 18:57:03 · 680 阅读 · 0 评论