Java笔记
Java 基础笔记
xp_1711
这个作者很懒,什么都没留下…
展开
-
Java常用的工具类
IOUtilsLongAdder:LongAdder 是一个多线程高并发时使用的自增计数器,它的设计思想就是以空间换时间。相比较于 AtomicLong,它在高并发时更高效,因为 AtomicLong 自增时使用了 unsafe.getAndAddLongcells数组是LongAdder高性能实现的必杀器:AtomicInteger只有一个value,所有线程累加都要通过cas竞争value这一个变量,高并发下线程争用非常严重;而LongAdder则有两个值用于累加,一个是base,它的作用类原创 2020-10-23 15:22:01 · 112 阅读 · 0 评论 -
CountDownLatch概念
CountDownLatch概念CountDownLatch是一个同步工具类,用来协调多个线程之间的同步,或者说起到线程之间的通信(而不是用作互斥的作用)。CountDownLatch能够使一个线程在等待另外一些线程完成各自工作之后,再继续执行。使用一个计数器进行实现。计数器初始值为线程的数量。当每一个线程完成自己任务后,计数器的值就会减一。当计数器的值为0时,表示所有的线程都已经完成一些任务,然后在CountDownLatch上等待的线程就可以恢复执行接下来的任务。CountDownLatch的用法原创 2020-10-22 14:44:31 · 373 阅读 · 0 评论 -
Java8 InvocationHandler 动态代理
java动态代理机制中有两个重要的类和接口InvocationHandler(接口)和Proxy(类),这一个类Proxy和接口InvocationHandler是我们实现动态代理的核心;1.InvocationHandler接口是proxy代理实例的调用处理程序实现的一个接口,每一个proxy代理实例都有一个关联的调用处理程序;在代理实例调用方法时,方法调用被编码分派到调用处理程序的invoke方法。每一个动态代理类的调用处理程序都必须实现InvocationHandler接口,并且每个代理类的实例都原创 2020-10-21 17:26:31 · 165 阅读 · 0 评论 -
jvm调优CPU突然飙问题定位
基本概念内存泄漏内存溢出(一定是代码问题)调优用到的工具jdk自带的原声工具 分类 名称 作用 命令行工具 jps 虚拟机状况查询 jsatck java堆栈跟踪工具 jinfo java配置信息工具 jmap java内存映像工具 jstat 虚拟机统计信息监视工具 可视化监控工具 jconsole Java监视与管理控制台 visualVM 多台合一故障处理工具 可视化监控工具:需要服务器开通一个调试端口,正式环境原创 2020-10-11 16:27:43 · 513 阅读 · 0 评论 -
强引用,弱引用,软引用,虚引用
前言从JDK 1.2版本开始,对象的引用被划分为4种级别,从而使程序能更加灵活地控制对象的生命周期。这4种级别由高到低依次为:强引用、软引用、弱引用和虚引用。总结Java中4种引用的级别和强度由高到低依次为:强引用 -> 软引用 -> 弱引用 -> 虚引用引用类型被垃圾回收时间用途生存时间强引用从来不会对象的一般状态JVM软引用当内存不足时对象缓存内存不足时终止弱引用正常垃圾回收时对象缓存垃圾回收后终止虚引用正常垃圾原创 2020-10-08 11:40:48 · 427 阅读 · 0 评论 -
ArraryList 扩容
ArraryList 扩容机制ArraryList 的初始容量是10,扩展为原来的1.5倍;在执行add方法时,判断容量是否充足; //arrarylist public boolean add(E e) { ensureCapacityInternal(size + 1);//确保内部容量 elementData[size++] = e; return true; } private void ensureCapacityInternal原创 2020-10-06 15:20:08 · 135 阅读 · 1 评论 -
关于项目技术的基本概念
MQ的概念什么是消息中间件消息中间件:是利用高效可靠的消息传递机制进行异步的数据传输,并基于数据通信进行分布式系统的集成。通过提供消息队列模型和消息传递机制,可以在分布式环境下扩展进程间的通信。基本的传递模式点对点发布订阅优点解耦、异步、消峰关于MQ消息队列(RabbitMQ、ZeroMQ、ActiveMQ等.)在高并发分布式环境下,由于来不及同步处理,请求往往发生堵塞,比如说,大量的insert、update之类的请求同时到达数据库,直接导致无所的行锁和表锁,甚至最后请求会堆积过多原创 2020-08-29 07:51:41 · 519 阅读 · 0 评论 -
native本地接口
jvm模型图native(本地方法接口)本地接口的作用就是融合不同的编程语言为Java所用,它的初衷是融合C/C++程序,换而言之,Java的刚出现的时候(1995年10月)正式C/C++横行的时候,如果没有调用C/C++的程序很难立足,于是在内存中专门开辟了一块区域处理标记为native的方法,在Execution Engine执行的时候加载native libraies。目前该方法使用的越来越少了,除非是与硬件有关的应用,比如通过Java程序驱动打印机或者Java系统管理生产设备,在企业级应用中原创 2020-07-06 21:23:39 · 806 阅读 · 1 评论 -
类的加载器基本概念
类的加载器工作图负责加载class文件,class文件在文件开头有特定的文件标识,将class文件的字节码内容加载至内存中,并将哲学内容转换成方法区中的运行时数据结构并且Class Loader只是负责文件的加载,至于它是否可以运行,则由Exection Engine决定的ClassLoader 如何识别class文件class文件在文件开头有特定的文件标识(cofe babe),并不是根据class文件后缀。理解ClassLoader 将class文件变成成Class?联想Java反射:根据原创 2020-07-05 11:56:20 · 188 阅读 · 0 评论 -
jvm体系介绍
jvm体系结构图基本概念方法区:存储模板堆区:存储数据Java栈区:存放指针原创 2020-07-05 10:31:41 · 104 阅读 · 0 评论 -
jvm目录
内存溢出原创 2020-07-04 19:15:44 · 117 阅读 · 0 评论 -
java 一些常用的工具类
1、commons-collections包下的工具类<dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId></dependency>CollectionUtils与...原创 2020-04-17 11:36:50 · 115 阅读 · 0 评论 -
java 建造者模式
package com.phy.java.Builder.varietas;/** * @author :mmzs * @date :Created in 2020/4/12 19:11 * @description:相当于lombok的@bulid注解的作用 * @modified By: * @version: $ */public class Person { /*...原创 2020-04-16 14:53:53 · 126 阅读 · 0 评论 -
java的几种设计模式
java的几种设计模式简介java的设计模式大体上分为三大类:创建型模式(5种):工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式。行为型模式(11种):策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。...原创 2020-04-12 22:27:19 · 167 阅读 · 0 评论 -
实现单例的几种方式
饿汉模式:饿汉模式在类被初始化时就已经在内存中创建了对象,以空间换时间,故不存在线程安全问题。懒汉模式:懒汉模式在方法被调用后才创建对象,以时间换空间,在多线程环境下存在风险。双重锁懒汉模式:只有在对象需要被使用时才创建,第一次判断 INSTANCE == null为了避免非必要加锁,当第一次加载时才对实例进行加锁再实例化。这样既可以节约内存空间,又可以保证线程安全。但是,由于jvm...原创 2020-04-12 18:27:13 · 110 阅读 · 0 评论 -
文档类的导入导出(待补充)
excel的导入导出Excel有以下几种异步下载!异步!异步!异步!如果对样式没什么要求,也不用公式的话,强烈推荐导出CSV格式可以采用多线程的方式,先查总数,然后分一下看需要多少个线程,每个线程读取一部数据并写入单独Excel文件;当然,也可以多线程读,单线程写分批导,这一点跟上一步类似关于导Excel的组件,大概有4种:CSV :导出文件的速度很快POI:POI支持exc...原创 2020-03-29 13:39:04 · 205 阅读 · 0 评论 -
XSSFWorkbook 导出excel
package com.user.base.util.Excel.POI;import com.user.base.util.StringUtil;import lombok.extern.slf4j.Slf4j;import org.apache.poi.hssf.usermodel.*;import org.apache.poi.hssf.util.HSSFColor;import...原创 2020-03-29 10:28:28 · 4150 阅读 · 1 评论 -
SXSSFWorkbook Excel 大量数据导出
注意SXSSFWorkbook 用于大量数据的导出SXSSFWorkbook是用来生成海量excel数据文件,主要原理是借助临时存储空间生成excel, SXSSFWorkbook专门处理大数据,对于大型excel的创建且不会内存溢出的,就只SXSSFWorkbook了。它的原理很简单,用硬盘空间换内存(就像hashmap用空间换时间一样)。 SXSSFWorkbook是streami...原创 2020-03-29 10:21:29 · 1828 阅读 · 0 评论 -
Apache POI教程的使用
一、Apache POI简介Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。HSSF 是Horrible SpreadSheet Format的缩写,通过HSSF,你可以用纯Java代码来读取、写入、修改Excel文件。HSSF 为读取操作提供了两类API:usermodel和eventuse...原创 2020-03-28 19:07:18 · 1412 阅读 · 0 评论 -
Java基础笔记
文章目录Java基础一、Java语言概述1、 Dos命令2、 java是一种与计算机沟通的语言3、java的跨平台特点4、java的环境搭建5、编写入门程序HelloWord:6、编译 :使用javac命令使.java文件生成 .class文件7、运行 :使用java 加文件名不带后缀来运行程序二、java数据类型与表达式工具类:导包:关键字importUtil包中从键盘输入:Scan...原创 2019-03-24 20:51:13 · 402 阅读 · 0 评论 -
Base64
文章目录一、概述二、原理三、应用四、简介五、规则六、代码实现JavaScript版Java版 (具体可看Java1.8新特性)一、概述Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法。可查看RFC2045~RFC2049,上面有MIME的详细规范。Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递...原创 2019-03-25 18:14:13 · 140 阅读 · 0 评论 -
Java代码实现excel的导入和导出
简介目前比较常用的实现Java导入、导出Excel的技术有:Jakarta POI、freemarker和Java Excel,在此只对Jakarta POI做简单的讲解https://www.cnblogs.com/liuyk-code/p/6672347.html常用方法Jakarta POI 是一套用于访问微软格式文档的Java API。Jakarta POI有很多组件组成,其中有用...原创 2019-04-01 08:28:40 · 636 阅读 · 0 评论 -
集合类的详细介绍
文章目录基本概念1.数据结构(1):线性表(2):哈希表集合类的实现原理:https://www.cnblogs.com/yysbolg/p/9230184.html基本概念在看集合类之前, 我们要先明白一下概念:1.数据结构(1):线性表顺序存储结构(也叫顺序表)一个线性表是n个具有相同特性的数据元素的有限序列。数据元素是一个抽象的符号,其具体含义在不同的情况下一般不同。...原创 2019-04-11 16:25:29 · 134 阅读 · 0 评论 -
J2EE基础笔记
文章目录Javaweb—servlet一、小概念:二、基本概念1、程序分类2、一些协议1、http协议:超文本传输协议2、ftp协议:文件传输协议 默认端口213、file协议:本地文件协议4、url:统一资源定位符(寻找资源)3 、servlet简介4 、servlet网关技术1、在自己创建的网站中新建文件夹WEB_INF在里面新建classes文件夹存java类2、Javac -d. *....原创 2019-04-03 16:22:38 · 769 阅读 · 0 评论 -
java的io处理
十一、i/o处理(Java.io.*包)1、基本概念以前常用的输出有System.out.pint() PrintWriter输入有ScannerStream流:二进制流,所有的流使用完都需要用close()关闭其中输出流还要用 flush()清空字节型的文件(word属于字节型文件)InputStream 输入流 字节流 节点流OutputSteam ...原创 2019-04-03 16:23:04 · 263 阅读 · 0 评论 -
java 线城池
1、https://www.cnblogs.com/superfj/p/7544971.htmlhttps://www.cnblogs.com/aaron911/p/6213808.html2、http://www.cnblogs.com/goody9807/p/6515128.html3、MySQL的调优:https://www.cnblogs.com/zhyunfe/p/6209074....原创 2019-04-18 06:53:09 · 160 阅读 · 0 评论 -
java 多线程基础
1、https://blog.csdn.net/DreamWeaver_zhou/article/details/785875802、https://www.cnblogs.com/heartstage/p/3415584.html原创 2020-04-16 15:54:32 · 114 阅读 · 0 评论 -
map的四种遍历方法
代码public static void main(String[] args) { Map<String,String> map=new HashMap<String,String>(); map.put("1", "value1"); map.put("2", "value2"); map.put("3", "v...原创 2019-06-11 10:25:59 · 235 阅读 · 0 评论 -
Java八大排序算法(未完)
文章目录八大排序算法的结构图八大排序算法的比较直接插入排序基本思想算法描述动态效果如下:注意:比较与总结希尔排序基本思想算法描述效果如下:总结与思考直接选择排序基本思想算法描述效果如下总结与思考堆排序基本思想算法描述动图效果如下所示复杂度分析总结与思考冒泡排序基本思想算法描述动态描述:总结与思考快速排序基本思想算法描述动态描述复杂度分析归并排序八大排序算法的结构图八大排序算法的比较直接插...转载 2019-06-27 16:04:22 · 429 阅读 · 0 评论 -
java的io处理补充
读写的一般步骤(以字节流为例)找到需要操作的文件File file = new File(“文件的所在路径”);建立输入流和输出流FileInputStream inputStream=null;FileOutputStream outputStream=null; 创建临时存储数据的地方byte[] buf = new byte[1024];//创建字节数组,...原创 2019-07-07 14:50:23 · 121 阅读 · 0 评论 -
JDK1.8的新特性
参考网址:https://www.cnblogs.com/jacksontao/p/8608291.html1、default关键字 在java里面,我们通常都是认为接口里面是只能有抽象方法,不能有任何方法的实现的,那么在jdk1.8里面打破了这个规定,引入了新的关键字default,通过使用default修饰方法,可以让我们在接口里面定义具体的方法实现,如下。 那这么定义一个方法的作用...原创 2019-03-16 16:00:44 · 315 阅读 · 0 评论