水上冰石
物联网,机器人,系统架构,3d建模,人工智能,aigc,大模型
展开
-
在Java技术栈中,常用的分布式一致性算法和框架
这些框架和算法在Java生态系统中被广泛应用于构建可靠的分布式系统,确保数据的强一致性和系统的高可用性。开发者可以根据项目需求选择合适的框架进行集成和部署。原创 2024-12-29 12:55:15 · 204 阅读 · 0 评论 -
jdk 11.0.8 配置 classpath
如果你需要为开发或者编译时指定额外的类路径,可以使用javac的-cp或者-classpath参数,或者使用java运行时的-cp或者-classpath参数。请注意,在JDK 11及以后的版本中,一般不需要手动设置CLASSPATH环境变量,除非你需要为某些特定的工具或脚本指定类路径。作为7,8常年用户,这个变化现在才注意到,既是个惊喜,又是个惊吓,技术更新和变化,得不停学习。通过aigc的回答,配置jdk的时候,11版本是不需要配置classpath了。原创 2024-10-10 09:25:29 · 353 阅读 · 0 评论 -
springboot,service 层统一异常抛出时,throws Exception写在接口上还是实现类上
springboot,service 层统一异常抛出时,throws Exception写在实现接口上,不是直接写在实现类上。原创 2024-07-29 01:52:08 · 138 阅读 · 0 评论 -
Result of ‘BigDecimal.setScale()‘ is ignored
方法用于格式化小数点后的位数,并可以选择舍入模式。如果你看到 "Result of 'BigDecimal.setScale()' is ignored" 这样的警告,可能是因为你调用了。对象赋值给原变量,或者没有对返回的结果进行其他操作。后使用了它的返回值。方法,但没有将返回的新。如果你不需要保留这个新的。对象,而只是想对原有的。修复这个警告的方法是将。对象被正确地格式化了。原创 2024-07-23 20:01:52 · 211 阅读 · 0 评论 -
poi使用时,workbook.close() 调用后资源不能释放?
用于关闭工作簿并释放资源。 用于清理 的临时文件。在实际使用中,通常会先调用 close() 方法来关闭工作簿,然后调用 方法来清理临时文件。这样可以确保所有资源都被正确释放,避免资源泄漏。原创 2024-07-23 10:05:55 · 520 阅读 · 0 评论 -
jdk11 找不到 VisualVM
JDK 11 之后,Oracle 将 VisualVM 从 JDK 中移除,因此你不会在 JDK 11 的安装目录中找到 VisualVM。不过,你仍然可以单独下载和安装 VisualVM。通过以上步骤,你可以成功下载和安装 VisualVM,并使用它来监控和分析 Java 应用程序。虽然 VisualVM 不再随 JDK 一起提供,但它仍然是一个非常强大的工具,可以帮助你诊断和解决各种性能和内存问题。原创 2024-07-23 09:42:54 · 1529 阅读 · 0 评论 -
Java锁功能的底层原理与实践-chaggtp3.5版本
如果对象是无锁状态,当前线程可以通过CAS操作将对象的Mark Word设置为偏向锁,并将线程ID存储在Mark Word中,表示当前线程获得了对象的偏向锁。”锁匠笑了笑,说:“那当然,我给你的是Java的锁,不是真正的锁。此外,对象头还用于实现锁机制。通过存储锁状态和偏向锁标志,对象头可以实现Java中的各种锁机制,如偏向锁、轻量级锁和重量级锁等。最后,应该正确地使用锁的粒度,尽量减小锁的范围,以提高程序的并发性能。对于方法级别的同步,锁定的是整个方法,而对于代码块级别的同步,锁定的是代码块所属的对象。原创 2023-08-21 15:54:03 · 218 阅读 · 0 评论 -
java11纳秒时间的局限性
java11中有System.nanoTime();方法,可以获取到系统执行的纳秒级别的时间。这个是可以查询到程序执行的具体的纳秒时间的,这个是没有问题的。但是,当我们想根据纳秒粒度的时间进行精确控制的时候,却是不行的。例如,我想控制在10纳秒内的停顿,是无法做到的,因为10纳秒太短了,一个java语句可能执行时间就已经超过10纳秒了,上下两句语句之间的执行时间差都会超过100纳秒。因此,java11看起来有纳秒时间粒度,但是仍然无法直接通过针脚控制某些传感器的读取,例如温湿度传感器,因为这原创 2022-05-19 09:58:48 · 373 阅读 · 0 评论 -
java调接口,返回json入库,格式修改
@TableName("table")public class Entitybase implements Serializable { private static final long serialVersionUID = 1L; @JSONField(name = "a_time",serializeUsing= ToStringSerializer.class) private String aTime; }解析List&l..原创 2022-02-17 14:38:13 · 405 阅读 · 0 评论 -
父类引用指向子类对象方法调用与方法覆盖
看一个例子// 摘自牛客网 来自:度小满2019秋招研发岗试卷class Animal{ public void move(){ System.out.println("动物可以移动"); }}class Dog extends Animal{ public void move(){ System.out.println("狗可以跑和走"); } public void bark(){ System.out.原创 2021-12-08 14:04:03 · 411 阅读 · 0 评论 -
java解压缩算法的简单字符串处理
/** * @ClassName: Solution * @Description: * @Author: jzg * @Date: 2021/11/12 15:47 */public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 1.截取字符],递归操作 * * @param str string字符串 * @return string字符串 *.原创 2021-11-12 16:19:46 · 604 阅读 · 0 评论 -
java校验示例
package com.datasure.movesure.admin.pojo;import lombok.Data;import org.hibernate.validator.constraints.Length;import org.springframework.validation.annotation.Validated;import javax.validation.constraints.NotBlank;import javax.validation.constraint.原创 2021-09-29 14:12:19 · 134 阅读 · 0 评论 -
openjdk15源码阅读
一.目录二.jdk源码包中的类所在文件以java.lang为例看到我们用到的jdk的类,都在share classes包下,classes代表的含义就是类。看到有一些包是在具体的操作系统下,说明有一些包是根据操作系统进行特别实现的。这里能看到java是如何做到跨平台的这个特性的。因为jdk底层实现了多种实现,对外提供了一种统一的访问方式。...原创 2021-07-08 23:09:04 · 230 阅读 · 0 评论 -
关于Java数值类型
1.Java数值类型有4类8种。分别为:整型,浮点型,字符型,布尔型。整型包括:long,int,short,byte;浮点型包括:float,double;字符型:char;布尔型:boolean。2.Java里面,无论程序运行在32位机器上还是64位机器上,数值类型的位数是不变的。这样为跨平台提供了基础。类型大类 类型名称 具体类型 位数 整型 长整型 long 8字节 整型 整型 int 4字节 整...原创 2021-04-23 11:10:00 · 2289 阅读 · 0 评论 -
Java方法值传递和引用传递的疑问
先说结果:Java方法中参数的传递,是值传递,而非引用传递。值传递即新增副本,只不过对于引用类型的变量,这个副本是地址的副本,而不是对象的堆空间的副本!Java中方法都是值传递,即做一个副本给到方法,方法处理不会影响到先前的变量值。一.可以印证值传递的例子:import java.util.ArrayList;import java.util.List;public class TestFunctionParam { public static void mai.原创 2021-03-25 17:36:02 · 183 阅读 · 0 评论 -
定义枚举,并遍历
/** * 类型 * * @author jiaozongguan * @date 2021/1/27 * @since v1.0 */public enum TypeEnum { //常规函数 NORMAL_FACTOR ("FACT_NAME_EXIT", "1"), SEGMENG_FACTOR("SEGMENG_FACTOR" ,"2"); /** 类型 */ private String type; /** 值域 */ ...原创 2021-02-07 11:46:28 · 219 阅读 · 0 评论 -
java数组定义与打印
1.一维数组数组长度必须在new时指定数组内容删除,则相应位置置位null;数组本身长度不变;数组打印使用Arrays.toString(a);即可2.多维数组数组的第一维长度必须在new时指定,后面维度的长度,可以后面再指定Arrays.deepToString(a);进行打印操作...原创 2020-12-01 13:59:54 · 333 阅读 · 0 评论 -
java instanceof 与isInstance()区别
java反射,比较一个对象是否属于某个类,有两种方式使用instanceof 关键字,2.使用isInstance()方法。无论判断使用== 方式进行,还是equals 方法判断结果是一样的。只是instanceof比较的是“”“你是这个类吗,或者你是这个类的派生类吗?”==判断的似乎class的确切类型,不算继承...原创 2020-11-14 16:59:34 · 238 阅读 · 0 评论 -
静态工厂模式示例
工厂模式,通过传递类的名称,生产类的实例对象。静态工厂使工厂只有一个,并且直接通过静态工厂的静态方法实现生产的动作。不允许多个工厂类实例的出现。package top.fairy.global.globalfairytoppi4j.desige;public class StaticFactoryDemo { public static StaticFactoryDemo factory = null; public Object creat(String className) .原创 2020-11-12 11:50:43 · 342 阅读 · 2 评论 -
java类加载的过程
一.加载 从磁盘中读取类文件到本地方法区二.链接(验证,准备,解析),验证阶段验证文件格式是否是class后缀的字节码文件,文件头是否是OXCAFF开头的魔法数字;准备阶段为变量分配内存,并设置类变量的初始值;解析阶段将常量池中的符号引用替换为直接引用三.初始化static{}块,构造函数,父类的初始化四.使用五.卸载...原创 2020-11-11 16:46:58 · 117 阅读 · 0 评论 -
java自定义注解源码剖析
前言:注解,又称为元数据。java se5中内置了三种注解@Override @Depressed @SuppressWarinings 。我们可以创建自己的注解,即自定义注解。自定义需要用到三个元注解:1.@Target 作用的目标,对象是元素类型(类,接口,枚举,构造器,属性,方法,本地变量,形参,类型参数,当前在用类型)2.@Retention 保留级别(在源代码阶段source,此级别在编译阶段和运行时会被抛弃,即运行时和编译阶段该注解不会起作用;CLASS字节码级别,此级别是在编.原创 2020-11-11 15:17:15 · 281 阅读 · 0 评论 -
jdk11的class反射机制,将newInstance()方法设置为了不建议使用了,怎么通过反射创建新的对象
下面是jdk11的源代码,看到有个方法@CallerSensitive@Deprecated(since="9")public T newInstance(){ 。。。。。。}这里就意味着,newInstance()不建议使用 这里看到jdk9就不建议使用了。那么应该用哪个代替呢?我们知道创建对象有几种方式1. new 关键字 ,默认或者显示地调用构造方法实现。2.反射newInstance。3.反射方式显示调用构造函数4.深度拷贝copy下面是C...原创 2020-11-05 17:41:14 · 6111 阅读 · 2 评论 -
Java创建线程的四种方式
1.通过Thread类 new Thread2.实现runnable接口 无返回值3.实现Callable接口 有返回值4.通过线程池通过工厂模式创建,本质上还是前三种的使用 四种方式:a:newSingleThreadPoolExecutor b:newFixedThreadPoolExecutor c:newCacheThreadPoolExecutor ...原创 2020-10-13 08:09:11 · 118 阅读 · 0 评论 -
Linux操作系统下配置环境变量与windows 操作系统下的区别
1.windows多个变量连接使用; 分号。而Linux系统下使用冒号 : 来进行分割2.centos系统,export注意使用方式和顺序3.classpath 开头的是 . 英文的句号 开头 。后面都是冒号分割4.PATH 也是用冒号分割vim /etc/profileJAVA_HOME=/opt/software/jdk1.8.0_131CLASS_PATH...原创 2020-02-10 15:09:24 · 785 阅读 · 0 评论 -
烟花
package mypanel;/** * 烟花算法,鼠标点击事件。粗糙 */import java.awt.*;import java.applet.*;import java.awt.event.*;import javax.swing.*;import Frames.SrollTitle;//Download by http://www.codefans.net...原创 2020-02-04 23:31:21 · 260 阅读 · 0 评论 -
Java编程思想-泛型
package com.jzg.thinkingInJava.test.T;public interface Performs { void speak(); void sit();}package com.jzg.thinkingInJava.test.T;import com.jzg.tingkingInJava.test.RTTI.typeinfo.Dog...原创 2019-01-15 22:51:43 · 365 阅读 · 0 评论 -
java 反射机制--根据属性名获取属性值
/** * 根据属性名获取属性值 * * @param fieldName * @param request * @return */ private String getFieldValueByFieldName(String fieldName, Object object) { try {原创 2017-09-08 18:25:55 · 65319 阅读 · 5 评论 -
判断字符串是否为空的org.apache.commons.lang3.StringUtils类方法isBlank()源码查看
转发请注明出处与作者。个人分析的,正确性欢迎大家一起探讨,有错误还希望指正和批评判断字符串是否为空,有很多种方法,下面是其中一种: if(s == null ||"".equals(s));但这样写看起来是不能从代码本身看到代码本身的业务含义,于是很多追求代码可读性的代码编写者会使用org.apache.commons.lang3.StringUtils类的isBlank()原创 2017-08-22 17:01:37 · 5948 阅读 · 0 评论 -
Java编程思想之代理空对象
接上一篇 Java编程思想之命令模式1.创建代理package com.jzg.thinkingInJava.test.RMI.NullObject;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.util.Collections;import j原创 2017-02-25 22:41:46 · 620 阅读 · 0 评论 -
Java编程思想之命令模式
命令模式:一个操作包含一个描述和一个命令。1.创建一个表示空对象的接口: package com.jzg.thinkingInJava.test.RMI.command;public interface Null{}2.创建表示操作的接口:package com.jzg.thinkingInJava.test.RMI.command;public interfac原创 2017-02-25 21:03:39 · 368 阅读 · 0 评论 -
Java编程思想 类型信息 Class.forName()
Java编程思想第四版,第十四章 类型信息316页(558英文),jdk1.7.0_51下执行的结果与书上的不一样,具体代码如下: package com.jzg.tingkingInJava.test.RTTI;class Candy{ static {System.out.println("Loading Candy");}}class Gu原创 2017-01-03 22:48:02 · 450 阅读 · 0 评论 -
org.apache.commons.net.ftp下的FTPClient类缓冲区大小设置无效
org.apache.commons.net.ftp包FTPClient类ftp读取大文件卡死的原因分析原创 2016-05-23 11:13:16 · 6379 阅读 · 0 评论 -
Java编程思想--格式化说明符
%[argument_index$][flags][width][.precision]conversion %:表示需要进行格式化 [argument_index$]: [flag]:默认右对齐,“-”表示左对齐 [width]:宽度 [.precision]:如果是字符串,表示打印输出的最大位数;如果作用原创 2016-04-16 21:42:51 · 1657 阅读 · 0 评论 -
java 日志异常格式化字符串
/** 异常处理字符串格式化 **/public class DatabaseException extends Exception{public DatabaseException(int transactionID, int queryID,String message) {super(String.format("(t%d, q%d) %s",transactionI原创 2016-05-10 22:21:06 · 2642 阅读 · 0 评论 -
java的throw与throws关键字
throw和throws关键字是用在异常抛出时用到的,具体区别在于:throw用在方法体内部,throws用在方法名称后面以修饰形式出现。比如下面的方法:package test4;public class TestThrows{ public static void test(int i) throws Exception{ if(i==1){原创 2015-11-20 10:37:31 · 727 阅读 · 0 评论 -
防止反射攻击的单例模式-siglton -摘自《effective java》
pubic class SigltonDemo{ private static final SigltonDemo SIGLTONDEMO = new SigltonDemo (); public static SigltonDemo getInstance() { return SIGLTONDEMO; } private SigltonDem原创 2017-11-20 16:55:17 · 422 阅读 · 0 评论 -
Java虚拟机四种引用类型
引用的四种类型:1.强引用 new 出来的,指向对象的引用,不会被gc回收2.软引用 垃圾回收的第二次内存回收需要回收的内存;如果软引用内存释放之后内存还不够,就报内存溢出异常3.弱引用 垃圾回收的第一次内存回收收集回收的内存4.虚引用原创 2017-05-03 21:46:32 · 445 阅读 · 0 评论 -
Java虚拟机性能监控
1.jstatjstat -gc pid 查询间隔(ms) 查询次数例如: jstat -gc 4002 250 10查询jvm上运行的pid为4002的线程的虚拟机运行参数,每隔250ms查询一次,总共查10次。jps 查看运行于虚拟机上的线程[root@iZ2zecn395q9hdaz3ej3rzZ ~]# jps22595 -- process原创 2017-12-31 19:09:39 · 383 阅读 · 0 评论 -
java静态导包
import static java.lang.invoke.MethodHandles.lookup;使用时,lookup().xxxx参考文章:https://blog.youkuaiyun.com/u012338954/article/details/510103371.静态导包就是java包的静态导入,用import static代替import静态导入包是JDK1.5中的新特性。一般我们导入一个类都...原创 2018-03-29 17:05:24 · 483 阅读 · 0 评论 -
Java 常量折叠
比较代码: A:int a = 1+2; B:int a =3;A与B,在程序运行时,使用的cpu时间是完全一样的。为什么?javac编译代码过程如下:在javac编译代码过程中,在进行语法分析中,编译阶段(java代码编译为class字节码文件的过程中)会进行把1+2,计算成结果3,存放到语法树中。该现象称之为常量折叠。我们运行阶段,直接从语法树中读指令,此时直接读到的就是3的结果。所以,A...原创 2018-04-17 14:56:12 · 354 阅读 · 0 评论