java
文章平均质量分 57
听不见你的名字
关注一下呗,私聊我帮大家解决问题(软件开发方面)
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Lombok最新最全解析
Project Lombok是一个java库,可以自动插入到编辑器和构建工具中,为java增添情趣。不要再编写另一个getter或equals方法,只需一个注释,您的类就有一个功能齐全的构建器、自动化您的日志记录变量等等。(避免重复造轮子)现有版本采用JSR 269规范(可插拔批注处里API)可以让我们修改编译过程,在编译期融入我们自己的东西,相比通过反射来获取注解,运行时代码效率降低等问题。所以在javac 解析成抽象语法树之后(AST),Lombok根据自己的注解处理器,动态修改AST,增加新的节点,最原创 2022-12-02 17:16:53 · 2761 阅读 · 0 评论 -
虚拟机字节码执行引擎
概述执行引擎是Java虚拟机最核心的组成部分之一。由自己实现的,可以自行指定指令集与指令引擎的结构体系,能够执行哪些不被硬件直接支持的指令集格式。执行过程:输入的是字节码文件,处理过程是字节码解析的等效过程,输出的是执行结果运行时栈帧结构栈帧是用于支持虚拟进行方法调用和方法执行的数据结构,在虚拟机运行时数据区中的虚拟机栈的栈元素。栈帧存储了方法的局部变量表,操作数栈,动态连接,方法返回地址等信息。每一个方法从调用开始至执行完成的过程,都对应着一个栈帧在虚拟机里面从入栈到出栈的过程。...原创 2022-01-07 17:28:10 · 605 阅读 · 0 评论 -
深入了解JAVA技术(9)类加载器
类加载器通过一个类的全限定名来获取描述此类的二进制字节流,放到Java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。类加载器在类层次划分,OSGi,热部署,代码加密等类与类加载器用于实现类的加载动作,对于任意一个类,都需要由加载它的类加载器和这个类本身一同确立其在Java虚拟机中的唯一性。每一个类加载器,都拥有一个独立的类名称空间。两类来源于同一个class文件,被同一个虚拟机加载,只要加载他们的类加载器不同,那这两类不相等。判断Class对象相等的方法,equals(),isAss原创 2022-01-05 11:51:16 · 398 阅读 · 0 评论 -
深入了解JAVA技术(8)类加载的过程
类加载的时机类从被加载到虚拟机中开始,到卸载出内存为止,生命周期:加载 验证 准备 解析 初始化 使用 卸载有五种情况必须立即对类进行初始化:遇到 new getstatic putstatic invokestatic 字节码指令 如果类没有进型初始化 就会触发其初始化使用java.lang.reflect包的方法对类进行反射调用的时候, 如果类没有进型初始化 就会触发其初始化当初始化一个类的时候 如果父类没有进行初始化 就先触发其父类的初始化当虚拟机启动时 用户需要指定一个要执行的主类 m原创 2022-01-04 17:32:40 · 454 阅读 · 0 评论 -
深入了解JAVA技术(8)字节码指令有知道的嘛
字节码指令:Java虚拟机的指令由一个字度长度的,代表着某种特定操作含义的数字(称为操作码,Opcode)以及跟随气候的零之多个代表此操作所需参数而构成。Java虚拟机采用面向操作数栈而不是寄存器的架构,大部分的指令都不包含操作数,只有一个操作码。字节码指令集:是由多个字节码指令组成集,是一种指令集架构。缺点:字节码指令集限制了Java虚拟机操作码的长度为一个字节,意味着指令集的操作嘛总数不可能超过256条,再一个class文件格式放弃了编译后代码的操作数长度对齐,如果虚拟机处理那些超过一个字节数据的时原创 2021-12-30 15:26:04 · 212 阅读 · 0 评论 -
Lambda 表达式与方法引用
Lambda 表达式,可以取代大部分的匿名内部类,写出更简单优雅的 Java 代码,尤其在集合的遍历和其他集合操作中,可以极大地优化代码结构。常用方法格式:@FunctionalInterface;修饰函数式接口,接口中的抽象方法只有一个。主要是和 lambda 表达式一起出现。/**多参数无返回*/@FunctionalInterfacepublic interface MultiParamNoReturn { void method(int a, int b);}// 实现该接原创 2021-12-28 18:07:56 · 196 阅读 · 0 评论 -
Java 8 新特性之Optional 类方法大全
Java应用中最常见的bug就是空值异常。在Java 8之前,Google Guava引入了Optionals类来解决NullPointerException,从而避免源码被各种null检查污染,以便开发者写出更加整洁的代码。Java 8也将Optional加入了官方库。原创 2021-12-24 18:29:21 · 460 阅读 · 0 评论 -
你不知道的stream()方法大全
stream() 是Java 8 新特性。它是java.util.Collection中的一个方法。支持数据类型 * @author Josh Bloch * @author Neal Gafter * @see Set * @see List * @see Map * @see SortedSet * @see SortedMap * @see HashSet * @see TreeSet * @see ArrayL原创 2021-12-24 15:55:26 · 3025 阅读 · 0 评论 -
你知道Java类的小密码?
稍微了解的Java的同学都知道,Java类是通过class文件编译成字节码在虚拟机里运行程序的。那么问题来了,你知道所谓的字节码怎么在虚拟机被识别的呢?有的同学肯定会说是通过class类名来区分,那么好,我给大家讲解一下类的结构?...原创 2021-12-16 22:50:30 · 1233 阅读 · 0 评论 -
深入了解JAVA技术(7)虚拟机性能监控与故障处理工具你知道哪几个?
虚拟机出现问题的情况下你知道怎样处理吗?在处理事物问题时,我们都要通过一些东西来处理,在我们虚拟机出现问题时我们也需要通过一些东西来处理问题,那就是我们所说的”工具“。下面介绍这几个工具,针对虚拟机出现问题,可能会用到的。jps:虚拟机进程状况工具可以查看正在运行的虚拟机进程,并显示虚拟机执行主类名称以及这些进程的本地虚拟机唯一IDjstat:虚拟机统计信息监视工具用于监控虚拟机各种运行状态信息的命令行工具,也可以显示本地或者远程虚拟机进程中的类转载,内存,垃圾收集,JIT编译等运行数据。原创 2021-12-15 03:45:00 · 265 阅读 · 0 评论 -
深入了解JAVA技术(6)你知道对象究竟存放在哪里呢?
大家想必都知道对象是在Java堆上分配,那具体在拿大家知道吗?创建的对象主要分配在新生代的Eden区上,少数情况分配在老年代中,分配的规则不是固定的。 1. **对象优先分配在Eden** 2. **大对象直接进入老年代** 大对象是指需要大量连续内存空间的Java对象原创 2021-12-14 00:00:00 · 658 阅读 · 0 评论 -
深入了解JAVA技术(6)垃圾收集器都有哪些
如果收集算法时内存回收的方法,那么垃圾收集器就是具体的实现.Java虚拟机规范中对垃圾收集器如何实现没有规定,所以不同厂商所提供的垃圾收集器都会有很大差别,今天具体介绍一些主流的来收集器有哪些?...原创 2021-12-13 01:45:00 · 298 阅读 · 0 评论 -
深入了解JAVA技术(5)垃圾收集算法
为什么要介绍垃圾收集算法?各个平台的虚拟机操作内存的方法各不相同,这次具体介绍一些主流垃圾收集算法的思想及发展过程.标记-清除算法算法主要分为两个阶段 ,标记和清除,首先标记处所有需要回收的对象,在标记完成后统一回收所有被标记的对象.不足的是:一个效率的问题,标记和清除两个过程的效率都不高;另一个空间问题,标记清除后产生大量不连续 的内存碎片,空间碎片太多可能会导致以后在程序运行过程中需要分配较大对象是,无法找到足够的连续内存不得不提前出发两一个垃圾收集动作.这个算法应该是最基础的剩下的算法都是依据这原创 2021-12-06 08:00:00 · 106 阅读 · 0 评论 -
深入了解JAVA技术(4)对象怎么死亡?
你觉得对象死了吗?大家都知道JAVA堆里面存放整个项目中几乎所有的对象实例上,垃圾收集器在对堆进行回收前,都做了哪些呢?哪些还活着,哪些已经死了引用计数算法很多认为对象是否存在的算法是这样的:给对象中添加一个引用计数器,每当有一个地方引用它,计数器就加1;当引用失效时,计数器值就减1;无论什么时刻计数器为0的对象就不能再被使用,这都是好多初学者的回答。...原创 2021-12-05 21:01:27 · 511 阅读 · 0 评论 -
深入了解Java技术(3)Java虚拟机对象探秘
很多人说Java时面向对象编程,之所以这样说因为程序运行过程中都有对象被创建出来,在代码中通常用new关键字,但是你知道虚拟机时怎样创建对象?虚拟机遇到new指令,通过在常量池里检查是否这个指令的参数(类的符号引用)已被加载,解析,初始化,如果没有的话,虚拟机去执行相应的类加载过程,经过上述的检查通过后虚拟机对新生对象分配内存,分配内存的原理就是Java堆中的内存分为用过的和空闲中间有指示器当分界线,当有新的对象,指针挪动一段与对象大小相等的距离,这种方式称为’指针碰撞’,如果指示器不是在内存原创 2021-12-01 22:59:44 · 619 阅读 · 0 评论 -
深入了解Java(3)Java内存区域与内存溢出异常
java 与C++都有内存动态分配和垃圾回收机制,不同的是C++需要开发者手动管理内存,Java可以使用spring框架交由框架管理内存两者相比的话各有各的特点,java开发者不需要管理内存但是一旦发生内存溢出异常无法准确排查,c++开发者需要管理内存开发比较费事但是发生内存溢出很容易发现与解决运行时数据区域程序计数器他是一个较小的内存空间,作用是当前线程所执行的字节码的行号指示器, 在项目运行时Java代码编译成字节码,调用方法时改变程序计数器的值来执行下一条字节码指令,直到执行结束,相对于多线原创 2021-11-28 22:49:48 · 3522 阅读 · 17 评论 -
深入了解Java技术(2) java 技术的未来
模块化模块化现在已经在应用系统与技术平台已经成为逐渐成熟的技术,我现在认为模块化的好处可以把一个项目拆分成一个个小的小项目,每个小项目都可以在服务器独立运行 ,最后整合成一个项目,这样的好处 减缓了大量的请求访问同一个端口,方便运维维护,这样的缺点 就是各小项目调用相对于比较麻烦,处理事务比较麻烦 ,像我们开发人员学习成本逐渐增加集群模式集群模式在一些大厂已经正在使用,相对于比较小的企业可能不能涉及到太多,集群模式现在出现了很多方法方式我就不一一说了,这个好处的话就是不会因为一台服务器宕机一部分服务使原创 2021-11-28 17:15:34 · 162 阅读 · 0 评论 -
java深入了解(1)Java技术体系
Java技术体系虽然我毕业后一直从事Java这方面工作但是我只是停留在业务层面还有为了公司需要被迫学习了一些Java以外的一些技术比如(Linux,docker,redis,MySQL等等),感觉只是会用让我谈个究竟他是怎么实现我也不想了解太多,Java干久了之后你会觉得你有一种瓶颈期 ,不知道为什么你感觉现在的在完成公司任务的时候得心应手,但是遇到一些多线程高并发的问题,你还是一脸懵逼,你想一探究竟 但是每天上班加班,下班回去只想安逸的娱乐一下睡个觉就结束了,日子久了,你就感觉你自己像一个油腻的中年大叔原创 2021-11-27 23:20:58 · 405 阅读 · 0 评论 -
SpringBoot中实现连接Redis多个索引库实现读写
需求原因在实际项目中需要两个dbindex一个储存用户基本信息另一个存储通过redisson实现订单延时过期的信息,如果放在同一个dbindex,看起来比较乱不好管理。解决方案 (开整)引入pom <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redi原创 2021-11-25 15:54:50 · 958 阅读 · 0 评论 -
运行此代码不影响程序运行方便调式代码
int i=1/0;原创 2021-02-02 16:08:52 · 193 阅读 · 0 评论 -
spring congfig
https://bbs.huaweicloud.com/blogs/115937原创 2020-10-19 16:58:22 · 140 阅读 · 0 评论 -
2020面试题 wanbao shenghua
1.linux命令2jquery3.js4.servelt5.sturts26.string buffur stringbuider7propties 怎末配8.springboot 常用注解原创 2020-03-23 22:17:37 · 163 阅读 · 0 评论 -
2020面试题-jiayi
1.Heap 和 Stack 的区别heap是堆,stack是栈Object a =null;只在栈内存中分配空间Object b =new Object();则在堆内存中分配空间stack的空间由操作系统自动分配和释放空间有限,heap的空间是手动申请和释放的无限空间2.short i =i+1; short i +=1;有啥问题第一个不能编译成功,报类型转化错误,第...原创 2020-03-23 21:44:32 · 173 阅读 · 0 评论 -
2020面试题4-dongfangzhixing
1.shirohttps://blog.youkuaiyun.com/weixin_44502804/article/details/89683037?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158441674319726869015802%2522%252C%2522scm%2522%253A%252220140713.130056...原创 2020-03-18 22:33:53 · 159 阅读 · 0 评论 -
2020面试题3-liangdun
1.JDK1.8的特性https://blog.youkuaiyun.com/Li_Jian_Hui_/article/details/103516469?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158454131419195162526633%2522%252C%2522scm%2522%253A%252220140713.1300...原创 2020-03-18 22:24:54 · 194 阅读 · 0 评论 -
2020java面试题-chukou-chengzhang
1.mybatis 和ORAVCLE 排序的时候有什么区别2.springboot常用注解https://blog.youkuaiyun.com/qq_42023175/article/details/90371689?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522158453881019724845052251%2522%...转载 2020-03-18 22:18:13 · 238 阅读 · 0 评论 -
2020面试题
hua tang -- wang xiang1.接口和抽象类的区别接口和抽象类的概念不一样。接口是对动作的抽象,抽象类是对根源的抽象。抽象类表示的是,这个对象是什么。接口表示的是,这个对象能做什么。比如,男人,女人,这两个类(如果是类的话……),他们的抽象类是人。说明,他们都是人。人可以吃东西,狗也可以吃东西,你可以把“吃东西”定义成一个接口,然后让这些类去实现它.所以...原创 2020-03-10 23:12:53 · 290 阅读 · 0 评论 -
字符串与16进制相互转换
//将字符串装换成16进制字符串 public String str2HexStr(String str) { char[] chars = "0123456789ABCDEF".toCharArray(); StringBuilder sb = new StringBuilder(""); byte[] bs = str.getBytes(); int b...原创 2019-03-08 15:21:54 · 652 阅读 · 0 评论 -
40道经典算法题
http://www.cnblogs.com/shuilangyizu/p/6092671.html转载 2019-02-26 10:18:20 · 1537 阅读 · 0 评论 -
POI详情
https://www.cnblogs.com/huajiezh/p/5467821.html原创 2019-02-21 16:33:43 · 268 阅读 · 0 评论 -
GB2312编码格式
https://www.qqxiuzi.cn/bianma/zifuji.php原创 2019-02-21 15:31:26 · 3229 阅读 · 1 评论 -
JAVA中字符串转码为GB2312
try { String SB=null;StringBuffer sb=new StringBuffer(); String zifuchu="小王"; byte[] bytes=zifuchu.getBytes("GB2312"); for(byte b : bytes){ SB=new String(Integer.toHe...原创 2019-02-21 15:12:15 · 3813 阅读 · 4 评论
分享