自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 资源 (2)
  • 收藏
  • 关注

原创 对象的内存布局

说明:占位符起占位作用,因为对象的大小必须是8字节的整数倍,而因HotSpot VM的要求对象起始地址必须是8字节的整数倍,且对象头部分正好是8字节的倍数。因此,当对象实例数据部分没有对齐时(即对象的大小不是8字节的整数倍),就需要通过对齐填充来补全。存储对象自身的运行时数据,如:哈希码、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳。存储对象类型指针,即对象指向类元数据的指针,JVM可以确定这个对象属于哪个类的实例。如果是数组,对象头中还有一块记录数组长度的数据。

2024-03-29 17:39:24 182

原创 JVM 里 new 对象时的线程安全问题

虚拟机1.8默认使用的是 TLAB 方式来进行内存分配的,如果想要使用CAS方式,可以通过设置 -XX:-UseTLAB 参数来关闭TLAB功能即可。默认情况下,TLAB 空间的内存非常小,仅占有整个 Eden 空间的 1%,我们可以通过 -XX:TLABWasteTargetPercent 设置 TLAB 空间所占用 Eden 空间的百分比大小。对象创建在虚拟机中是非常频繁的操作,即使仅仅修改一个指针所指向的位置,在并发情况下也会引起线程不安全。

2024-03-20 11:29:00 302

原创 对象内存分配方式

虚拟机为新对象分配内存,从堆中划出一块确定大小的内存,因为对象所需内存的大小在类加载完后可以完全确定。Java堆是否规整 由所采用的垃圾收集器是否带有压缩整理功能决定。堆内存是否规整是由垃圾收集器是否带有压缩整理功能决定的。

2024-03-20 08:58:30 130

原创 JVM中对象创建过程

从虚拟机的角度来看,一个新的对象已经创建完毕。但从Java程序的角度来看,对象创建才刚开始,所有的字段还是零值,所以需要程序员进行初始化操作,这样一个真正可用的对象才算完全产生出来。为对象进行必要的设置:虚拟机为对象进行设置,如设置对象属于哪个类的实例、如何找到类的元数据信息、对象的哈希码、对象的GC分代年龄等信息,这些信息存放在对象头中。类加载检查:如果类没有被类加载器加载,则执行类加载流程(将class信息加载到JVM的运行时数据区的过程),对象所需内存大小在类加载完后可以完全确定。

2024-03-18 14:35:48 484

原创 JVM的内存区域

从回收内存的角度看,由于现代垃圾收集器大部分都是基于分代收集理论设计的,所以Java堆中经常会出现新生代、老年代、Eden空间、From Survivor空间、To Survivor空间等名词,需要注意的是这种划分只是根据垃圾回收机制来进行的划分,不是Java虚拟机规范本身制定的。对于Java应用程序来说,Java堆(Java Heap)是虚拟机所管理的内存中最大的一块。JVM内存分为线程私有区和线程共享区,其中方法区和堆是线程共享区,虚拟机栈、本地方法栈和程序计数器是线程隔离的数据区。

2024-03-08 15:47:10 1003

原创 JVM类加载机制

在JDK8中的这个Extension ClassLoader,主要用于加载jre环境下的lib下的ext下的jar包。当想要扩展Java的功能的时候,把jar包放到这个ext文件夹下。然而这样的做法并不安全,不提倡使用。JDK8以后,使用平台类加载器(Platform ClassLoader)替换了原来的扩展类加载器(Extension ClassLoader)。上面的类加载过程主要是通过类加载器来实现的,Java里有如下几种类加载器。总之,扩展能力被取代了又不安全,所以被废弃。的天然的扩展能力所取代。

2024-03-06 11:38:48 435

原创 类的生命周期

和。其中的连接又分为和三个步骤。如下图所示。

2024-03-05 14:34:42 913

原创 程序员最重要的解决问题方式——假说

程序员遇到问题,除了不停地修改代码,还可以先用假说的方式思考一下

2024-02-05 09:33:20 145 1

原创 windows 下新装docker desktop必优化点

windows系统刚装的docker,虽然已经可以用了,但是总会几个不舒服的地方,下面是总结。

2023-12-13 15:27:13 1311 1

原创 navicat连接kingbase数据库

navicat其实是可以直接链接kingbase数据库的,网上没找到什么教程,其实kingbase是PostgreSql基础上的二开,直接用新建连接——选择PostgreSql就行了。其他方式和PostgreSql一样,填入IP,默认数据库 用户名密码。

2023-11-16 10:03:31 2265 1

原创 sprignboot新依赖nacos,报错一直连接本地的localhost:8848解决

本人项目刚从eureka换到nacos,然后不停的报错“currentServerAddr:http://localhost:8848, err : Connection refused”。但是明明在application.yml文件里面配置了。后来看网上说的要加bootstrap.properties,但是我把配置文件写里面也没用。最后没办法了 尝试着把config也加入bootstrap.properties。居然可以了,注册成功。

2023-11-15 19:36:11 773

原创 JAVA面试必看,基础知识之类加载器和加载机制

首先要厘清一个问题,为什么JAVA需要类加载。不明白这个问题,直接说加载机制就是空中楼阁。JAVA程序员用编程工具编写的代码生成的都是拓展名为.java的文件,显然这个文件是不能直接被计算机识别并运行里面程序的,需要经过Java编译器编译成拓展名为".class"的文件,".class"文件中保存着Java代码经转换后的虚拟机指令。当需要使用某个类时,JAVA虚拟机将会加载它的".class"文件,并创建对应的class对象,将class文件加载到虚拟机的内存,这个过程称为类加载。加载需要加载器

2022-03-17 19:14:35 1811

原创 nginx访问其它FASTDFS服务器上的文件

当你的FASTDFS文件服务和NGINX前端服务器不是同一台的时候,如果要把FASTDFS文件搞能够对外提供访问的外链地址,只能通过跳转的方式,需要如下设置:前端服务器的NGINX配置# fastdfs 图片和pdf文件转发server {listen 33333;location ~ .*\.(gif|jpg|jpeg|png|pdf)$ {rewrite /(.*)$ /$1 break;autoindex on;proxy_pass http://ip; //文件服务器

2022-02-15 14:53:52 1002 2

原创 关于元宇宙几问

刚结束不久的2021年,突然冒出了元宇宙这个新词。有人说这代表着未来,有人说这是圈钱的忽悠人的。鄙人看了一些元宇宙的文章,里面的各种可能让人心潮澎湃。但是仔细思索了一下,心中还是有一些不解的问题。一、元宇宙的运营方问题。如果未来技术真的达到了这个程度,那么谁来运营这个元宇宙,也就是说谁来创世。如果只是一家公司来做,那么怎么保障它的第三方公正性和独立性,以及整个元宇宙的稳定性。要知道元宇宙是目前是被定义成并行于现实世界的另外一个社会了,那么稳定性肯定不容置疑,上帝也不能随便想做什么就做什么,不然里面的

2022-01-10 14:21:36 454

原创 程序员成长的点线面

作为一名已经很老的程序员中的菜鸟,是的,过了这么多年还是菜鸟。比起大厂的程序员来说技术上毫无优势,甚至都没做过大并发量的项目,一直在各种技术要求不高的公司里面混,是不是很失败?然而毕竟也做了这么些年了,经历过了许多公司,被面试和面试过了许多人,也接触了不同性格的各种程序员,可以说对这个行业有一定的了解。程序员,作为一个入门容易,进步更容易,但是要学的东西特别多,天花板特别高的行业,可以说并不是一个适合大多数人的理想职业,并不是培训机构学了几个月就能精通,就能直接拿到高薪。从入门开始作为初级程序员

2022-01-06 09:54:10 266

原创 Mybatis报错 Result Maps collection already contains value for 原因汇总

当Mybatis报错 Result Maps collection already contains value for的时候,有哪些原因呢?一、Mybatis-Generator根据配置文件生成XML的锅Mybatis-Generator生成xml等又快有方便,但是如果同名xml之前已经存在,那么生成的时候会在xml里面在之前的代码后面继续追加,而不会覆盖同名的语句。因此有可能报这个错误解决方案如果是再次生成代码,必须先将已经生成的代码删除,仔细检查一下xml文件看是否存在两个id为Bas

2020-05-18 16:39:47 26494 9

原创 JAVA日期格式的各种坑

java的日期格式是我们在开发中Very常用,几乎到了离不开的程度。但是Javad的日期格式也为我们留下了各种坑。坑一:YYYY和yyyy我们开发人员平时写年月日的时候 总不清楚YYYY和yyyy的区别,经常混用。:有这个问题,比如2019年12月31日打印结果是:2019-12-31的YYYY-MM-dd格式化Date后居然是2018年的12月30日?这个暂且不论...

2020-04-22 13:33:52 756

原创 spring boot2.0部署docker简单教程linux部署

docker容器化逐渐流行,加上已经流行的spring boot2.0。那么两者如何结合一起呢?首先为了偷懒,直接从https://start.spring.io/上面拉去一个spring boot2.0项目 可以看到, 官网的spring boot 版本 已经到了2.0.6.生成后,download下来导入我们的ide中。然后,我们写一个简单的requestMapping...

2018-10-29 17:42:49 288

转载 JAVA线程池小结

本文的开始,我们提出三个最基础的问题:什么是线程,线程与进程的区别,以及如何在JAVA中实现。并做了简要的回答。一、什么是线程?线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒。Java在语言层面对多线...

2018-09-21 15:21:29 141

原创 JAVA以及常用开源框架读音发音和介绍

JAVA['dʒɑ:və]:任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言,应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展,Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以J...

2018-09-20 15:34:48 4790

原创 SpringBoot2 结合BeetlSQL开发

 为什么是SpringBoot2:SpringBoot自从正式版发布以来,受到了众多的关注和追捧。在2.0出来之后,已经与1.X有了很多不同之处。当然也是为了追赶潮流,直接上了2.0作为本文基础框架,当然1.X的版本也是可以使用的。为什么是BeetlSql:这是一个在国内还没有那么火的DAO工具,根据官网的说法:“ 它是一个超过MyBatis的全功能Java DAO工具,同时具有Hiberna...

2018-09-18 13:55:52 10174

原创 开始Spring Boot,介绍并跑起来吧

本人长久不写文,文字功底有限。有不得体之处,还请各位大神见谅!2014 年 4 月 1 日,Spring Boot 第一个正式版本诞生,大大的方便了程序员们创建基于 Spring 的应用程序和服务。因此Spring Boot慢慢的开始占领市场,并且应用于越来越多的项目中。那么Spring Boot为何能受到如此大的关注和推崇。窃以为有以下几个特质1.非常方便的依赖项:原先的Spring...

2018-08-29 17:49:54 299

原创 spring boot结合dubbox一个坑爹的例子

本来按照这个网址http://blog.veryjava.cn/2016/12/03/01/#section-16实行的。但是发现怎么都注册不了。其实原因一。下载来的 git clone https://git.oschina.net/wuyu15255872976/spring-boot-starter-dubbo.git这个版本和内容跟文章原先的内容已经大不一样了,按照文章原先那样该必

2017-07-24 16:04:29 1115

转载 (读书笔记)volatile内存语义

volatile变量自身具有下列特性可见性。对一个volatile变量的读,总是能看到(任意线程)对这个volatile变量最后的写入。原子性。对任意单个volatile变量的读/写具有原子性,单类似volatile++变量这种复合操作不具有原子性。当写一个volatile变量时,JMM会把该线程对应的本地内存中的共享变量值刷新到主内存。当读一个volatile变量时,JM

2016-08-08 14:23:39 186

原创 sts打可执行jar的问题

sts3.6.1的版本 调用fatjar来打可执行jar文件比较快 下载附件中的32版本的fatjar.jar文件 放到sts3.6.1\sts-bundle\sts-3.6.1.RELEASE\plugins中然后删除\sts3.6.1\sts-bundle\sts-3.6.1.RELEASE\configuration中的org.eclipse.update下的platform

2016-08-08 14:03:01 2480

原创 利用存储过程做mysql循环插入1

DROP PROCEDURE if exists insertdata;delimiter //CREATE PROCEDURE insertdata()begindeclare yourid BIGINT;set yourid = 123460000000000001;while yourid insert into db_zone_role.tbl_role_buy

2016-08-08 14:00:49 1389

转载 如何在mysql存储过程中处理select语句返回的多行结果(用游标)

CREATE PROCEDURE curdemo()BEGIN  DECLARE done INT DEFAULT 0;  DECLARE a CHAR(16);  DECLARE b,c INT;  DECLARE cur1 CURSOR FOR SELECT id,data FROM test.t1;  DECLARE cur2 CURSOR F

2016-08-08 13:58:26 12947

jquery.jqGrid-4.4.5

jquery.jqGrid-4.4.5资源包

2013-12-20

小颖JAVA源代码反编译引挚 1.4 标准版

小颖JAVA源代码反编译引挚 1.4 标准版

2010-01-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除