- 博客(23)
- 资源 (4)
- 收藏
- 关注
原创 4、内存模型以及如何判定对象已死问题
弱引用(Weak Reference)对象与软引用对象的最大不同就在于:GC在进行回收时,需要通过算法检查是否回收软引用对象,而对于Weak引用对象, GC总是进行回收。不可见阶段的对象在虚拟机的对象根引用集合中再也找不到直接或者间接的强引用,最常见的就是线程或者函数中的临时变量。程序不在持有对象的强引用。(2)所有对该对象的引用全部是强引用(除非我们显式地使用了:软引用(Soft Reference)、弱引用(Weak Reference)或虚引用(Phantom Reference))
2022-09-08 06:23:42 115 1
原创 3、Java对象内存模型
数据 内存 -- CPU 寄存器 -127 补码 10000001 - 11111111 32位的处理器一次能够去处理32个二进制位 4字节的数据 64位操作系统 8字节 2的64次方的寻址空间指针压缩技术 JDK1.6出现的 开启了指针压缩 什么时候指针压缩会无效??超过32G指针压缩无效:便于数据之间的类型转换,例如:long类型转换为int类型时,高地址部分的数据可以直接截掉。:便于数据类型的符号判断,因为最低地址位数据即为符号位,可以直接判断数据的正负号。
2022-09-06 20:20:56 298
原创 2、深入运行时数据区
首先“aaaa”会被认为字面量,先在字符串常量池中查找(.equals()),如果没有找到,在堆中创建“aaaa”字符串对象,并且将“aaaa”的引用维护到字符串常量池中(实际是一个hashTable结构,存放key-value结构数据),再返回该引用;String中的intern方法是一个 native 的方法,当调用 intern方法时,如果常量池已经包含一个等于此String对象的字符串(用equals(object)方法确定),则返回池中的字符串。:类,接口,方法,字段等相关的描述信息。
2022-09-02 17:52:34 178 1
原创 1、JVM之走进类加载
TIOBE语言热度排行榜:https://www.tiobe.com/tiobe-index/世界上没有最好的编程语言,如果有,我相信一定是JAVA。负责读取 Java 字节代码,并转换成 java.lang.Class 类的一个实例的代码模块。类加载器除了用于加载类外,还可用于确定类在Java虚拟机中的唯一性。一个类在同一个类加载器中具有唯一性(Uniqueness),而不同类加载器中是允许同名类存在的,这里的同名是指全限定名相同。......
2022-09-01 16:49:09 347
原创 JVM监控命令和可视化监控工具
1 JVM监控命令jps、jstack、jmap、jinfo、jstat1.1 jpsjps主要用来输出JVM中运行的进程状态信息,包括进程ID、进程启动的路径等。Ps -ef | grep java1.2 jstack如果想要查看Java进程中线程堆栈的信息,可以选择jstack。用于生成当前JVM的所有线程快照,线程快照是虚拟机每一条线程正在执行的方法,目的是 定位线程长时间停顿的原因,比如线程间死锁、死循环、请求外部资源导致的长时间等待。 -F:当正常输出的请求不被响..
2021-11-23 10:21:53 1566
转载 JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解
现实企业级Java开发中,有时候我们会碰到下面这些问题: OutOfMemoryError,内存不足 内存泄露 线程死锁 锁争用(Lock Contention) Java进程消耗CPU过高 ...... 这些问题在日常开发中可能被很多人忽视(比如有的人遇到上面的问题只是重启服务器或者调大内存,而不会深究问题根源),但能够理解并解决这些问题是Java程序员进阶的必备要求。本文将对一些常用的JVM性能调优监控工具进行介绍,希望能起抛砖引玉之用..
2021-10-26 10:34:34 174
转载 maven打jar包包含依赖
<build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-assembly-plugin</artifactId> <version>2.5.5</version> ...
2021-06-01 16:39:58 89
转载 Java集合框架详解
一、Java集合框架概述 集合可以看作是一种容器,用来存储对象信息。所有集合类都位于java.util包下,但支持多线程的集合类位于java.util.concurrent包下。 数组与集合的区别如下: 1)数组长度不可变化而且无法保存具有映射关系的数据;集合类用于保存数量不确定的数据,以及保存具有映射关系的数据。 2)数组元素既可以是基本类型的值,也可以是对象;集合只能保存对象。 Java集合类主要由两个根接口Collection和Map派生出来的,Collection
2020-07-10 11:10:09 202
原创 Redis常用命令
一、Redis连接与认证//连接参数:ip、端口、连接超时时间,连接成功返回true,否则返回false$ret = $redis->connect('127.0.0.1', 6379, 30);//密码认证:成功返回true,否则返回false$ret = $redis->auth('123456');二、String操作//设置键值:成功返回true,否则返回fals...
2020-01-13 19:26:46 251
原创 SqlServer性能调优之SQL语句阻塞查询
SqlServer查看Sql阻塞,定位表压力问题。CREATE DATABASE [DBA_DB]GO USE [DBA_DB]GO CREATE TABLE Blocking_sysprocesses( [spid] smallint, [kpid] smallint, [blocked] smallint, [waitType...
2020-01-03 10:38:56 1525
原创 Builder
Builderpublic class Person { int id; String name; int age; double weight; int score; Location loc; private Person() {} public static class PersonBuilder { ...
2019-12-02 17:53:41 226
原创 代理模式
代理模式 使用一个代理对象将对象包装起来,然后用该代理对象来取代该对象,任何对原始对象的调用都要通过代理,代理对象决定是否以及何时调用原始对象的方法1、静态代理 要求被代理类和代理类同时实现相应的一套接口,通过代理类调用重写接口的方法,实际上调用的是原始对象的同样的方法package com.proxy;public class Proxy im...
2019-11-29 23:01:25 256
原创 观察者(Observer)
Observer观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式有时又称作发布-订阅模式、模型-视图模式,它是对象行为型模式。package com.observer;import java.util.ArrayList;import java.util.List;class ...
2019-11-29 15:15:38 272
原创 单例模式(完美写法)
Singleton单例模式,属于创建类型的一种常用的软件设计模式。通过单例模式的方法创建的类在当前进程中只有一个实例(根据需要,也有可能一个线程中属于单例,如:仅线程上下文内使用同一个实例)枚举单利可以防止反序列化 ,防止反射后重新new 实例。package com.mashibing.tank;import java.util.Properties;//Propert...
2019-11-22 17:19:12 296
原创 模板方法(钩子函数)
template method什么叫模版方法模式: 模版方法其实就是父类定义了一整套的骨架流程,而其中的某些方法,需要子类来完成,这样子的好处是,方法流程已经定义好,子类要做的事情就是按着流程和模版自己写实现。package com.thread;public class TemplateMethod { public static void main(St...
2019-11-07 15:05:35 594
原创 JUC同步工具
synchronizedpackage com.thread;public class synchronizedTest { private volatile static int count = 10; /* * 锁代表synchronized(synchronizedTest.class) * */ public synchroniz...
2019-11-05 19:50:24 279
原创 ELK后台启动
filebeat后台启动nohup /usr/local/filebeat/filebeat -e -c /usr/local/filebeat/kafka.yml >/dev/null 2>&1 &logstash 后台启动nohup /usr/local/logstash/bin/logstash -f /usr/local/logstash/bin...
2019-10-28 18:52:24 548
原创 linux修改最大文件链接数open files/ulimit -n
使用ulimit -a 可以查看当前系统的所有限制值,使用ulimit -n 可以查看当前的最大打开文件数。新装的linux默认只有1024,当作负载较大的服务器时,很容易遇到error: too many open files。因此,需要将其改大。使用ulimit -n 65536可即时修改,但重启后就无效了。(注ulimit -SHn 65536 等效 ulimit -n 6...
2019-05-28 18:45:47 8152
原创 SqlServer 分组后取前几条
CREATE TABLE [A]( [IDX] [bigint] IDENTITY(1,1) NOT NULL PRIMARY KEY, [CreateTime] DATETIME not null DEFAULT(getdate()), [Type] [int] not null,--取值范围[0-10) [Contents] [varchar](100) not null,)...
2019-03-14 11:01:41 1108
原创 jvm CPU100%排查
下面给出两种系统下的排查步骤,都是一模一样的,只是命令稍有区别! 查消耗cpu最高的进程PID 根据PID查出消耗cpu最高的线程号 根据线程号查出对应的java线程,进行处理。 准备一行死循环代码: Windows 服务器查消耗cpu最高的进程PID手边没有windows server机器,我以win 1...
2019-01-30 10:07:22 2624 2
原创 CentOS 7.2 yum方式安装MySQL 5.7
CentOS 7之后的版本yum的默认源中使用MariaDB替代原先MySQL,因此安装方式较为以往有一些改变:下载mysql的源wget http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm安装yum库yum localinstall -y mysql57-community-release-...
2018-12-08 15:02:30 304 3
前端:Uniapp 开发 后端:JAVA 数据库:MySQL 源码类型:WinForm 后台管理功能:
2022-04-15
Hitonic JAR Starter 1.2.0(Jar启动器).rar
2021-04-16
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人