自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 收藏
  • 关注

原创 java实现笛卡尔乘积

实现笛卡尔乘积

2022-08-23 09:10:23 420 1

原创 AspectJ打印方法运行时长

打印方法时长

2022-08-17 17:40:18 189 1

原创 docekr安装

docker安装 以及安装其他软件

2022-07-09 18:23:20 343

原创 grafna配置邮箱告警

grafna配置邮箱告警

2022-06-24 11:36:11 740

原创 sqlserver添加删除全文索引

sqlserver添加删除全文索引

2022-06-21 19:16:50 601

原创 prometheus监控nginx

文章目录prometheus监控nginx一、修改nginx配置二、下载promtail并修改配置下载安装修改promtail配置文件三,安装loki四,grafana连接loki数据源,导入nginx面板模板连接loki数据源导入nginx面板模板注意事项no data问题参考资料prometheus监控nginx本章主要说明如何使用grafana+promethues+loki+promtail监控nginx1,Loki是个日志监控系统,可用来分析日志,并提供给Grafana进行图形化展示。2,

2022-04-14 16:50:02 619

原创 prometheus监控windows系统

prometheus监控windows系统本文主要介绍如何使用prometheus监控windows系统,以及在搭建监控时遇到的问题。环境:windows提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录prometheus监控windows系统环境准备下载prometheus下载grafana下载windows_exporter一、修改配置二,页面操作三,效果展示四,监控邮件提醒五、注意事项参考资料总结环境准备下载prometheus打开prometheus的官网:

2022-04-13 16:04:06 8006

转载 centos7详细安装

centoa7详细安装教程

2020-12-13 12:35:48 293

转载 jar包的作用域

## Maven Dependency Scope

2020-11-24 22:10:27 199

原创 volatile关键字

作用防止指令重排序实现变量的(内存)可见性从内存中读写,不再缓存到寄存器实现原理memory barrier(内存屏障)内存屏障的类型release barrier //释放屏障 将以上代码发布出去,防止volatile变量与以上代码进行重排序valatile boolean flag = true; //写操作store barrier //存储屏障 刷新处理器缓存,将此屏障之前的结果对其他处理器可见load barrier // 加载屏障 刷新其他处理器的缓存,同步其他

2020-08-31 23:18:17 84

原创 如何查看线程死锁

打开cmd1,输入jvisualvm2,输入jps,jstack进程号查看指定进程3,输入jmc

2020-08-17 20:04:29 277

原创 ThreadLocal详解

作用提供线程本地变量,伴随着线程Thread中有成员变量 ThreadLocal.ThreadLocalMap threadLocals = null;ThreadLocal类中有静态内部类 static class ThreadLocalMap {}创建出来的ThreadLocalMap设置到线程中 t.threadLocals = new ThreadLocalMap(当前ThreadLocal对象, 我们想要的存储的值);ThreadLocalMap中的键值对static cl

2020-07-26 10:42:41 108

原创 wait与sleep方法的区别

wait()1,Object类下的native方法2,wait()导致当前线程等待直到另外一个线程调用notify()方法或notifyAll()3,放弃锁的拥有权,被唤醒时重新获取锁的拥有权4,只有当前线程获取到锁的时候才可以被调用5,调用wait()方法时需要使用synchronize关键字6,适用循环synchronized (obj) { while (条件不满足) obj.wait(); ... // Perform ac

2020-07-19 14:26:23 72

原创 Thread类的细节

1,一个线程中创建新的线程,新的线程默认优先级等于当前线程2,后台线程的中创建新的线程,新的线程也是后台线程3,创建线程的两种方式,1:继承Thread 2:实现Runable接口4,每个线程都有一个名字,多个线程可以有相同的名字5,如果我们只打算重写run(),不打算重写Thread的方法我们应该继承Runable接口6,start()是synchronized方法...

2020-07-19 10:08:09 75

原创 jol使用

jol含义Java object layout java对象内存布局使用方式本人jar包管理工具是gradle compile group: 'org.openjdk.jol', name: 'jol-core', version: '0.9'些测试案例public static void main(String[] args) { Object o = new Object(); System.out.println(ClassLayout.parseIns

2020-07-11 19:29:07 1673

原创 CAS比较和交换

出现的目的修改值不是一个原子性操作含义1,线程在修改一个值之前先读取被修改的值2,当线程真正的将值写入内存的时候,先比较当前值否与前一步获取的值一致3,一致进行修改,不一致再将当前值记录下来cas ABA问题1,线程1执行cas操作,假如读到的是1,期望改成22,在值没有写入内存的时候,线程2进行两次cas操作,先将1->5,后又将5->改成了1,解决方案在线程读取值的时候加个版本号,每个线程修改值的时候同时修改版本号cas底层实现lock cmpxchg 汇编指令l

2020-07-11 18:30:00 121

原创 zookeeper+dubbo使用

环境ssm首先配置dubbo服务的提供方<!-- 搭建Dubbo的服务提供方 --><!-- 1、Dubbo服务方提供方名称 --><dubbo:application name="项目名称"></dubbo:application><!-- 2、连接zookeeper注册中心 (如果zookeeper是多台机器用,间隔) --><dubbo:registry address="192.168.95.120:2181" pro

2020-07-11 12:51:30 159

原创 zookeeper单机部署

1,安装Linux2,将zookeeper包上传到Linux服务器3,给zookeeper包赋予权限4,解压zookeeper包5,进入zookeeper根目录cd confcp zoo_sample.cfg zoo.cfg6,进入zookeeper根目录cd bin./zkServer.sh start7,查看状态:./zkServer.sh status出现如下内容即ok[root@localhost bin]# ./zkServer.sh statusJMX enabled

2020-07-11 10:02:03 85

原创 虚拟机黑屏,vmware-vmx.exe进程杀不掉的问题

问题:Centos6.5当切换命令级别关机后出现黑屏,vmware-vmx.exe进程杀不掉解决方案:到虚拟劫的安装目录将所有的.lck文件后缀删掉,到服务中将VMware的所有服务禁用,并关闭,重启计算机。开启VMware的所有服务,重启虚拟机即可...

2020-06-27 19:39:56 472

原创 Lombok使用方式

官网视频添加链接描述针对于pojo类

2020-06-11 11:45:41 83

原创 MyBatisDemo

mybatis全局配置文件<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration> <!-- 可以配置多个环境,指定默认环境 -->

2020-06-10 10:17:12 85

原创 线程上下文类加载器

作用破坏Java的双亲委托机制适用于SPI(server provider interface)服务提供接口,如JDBCclass.forName(“驱动”);

2020-05-31 13:53:42 67

原创 jvm栈中的栈帧

栈帧的概念结构局部变量表用于存放方法参数,方法内部定义的局部变量java程序被编译为class文件的时候,在方法的code属性的max_lacals数据项中确定了方法所需要分配的最大局部变量表的容量局部变量表的容量以变量槽(variable Slot)为最小单位,虚拟机规范中没有指明Slot应占用的内存大小(每个Slot都应该能存放一个boolean,byte,char,int,float,reference,returnAddress)类型的数据,允许Slot的长度随着处理器,操作系统,虚拟机的

2020-05-15 14:12:25 290

原创 java类型占用的内存空间

32位以内的数据类型booleanbytecharshortintfloatreferencereturnAddress64位数据类型longdouble

2020-05-15 11:29:39 112

原创 class文件结构

class的结构类型无符号数u1, u2, u4, u8, 分别代表一个字节.两个字节,四个字节,八个字节. 可以用来存储数字,索引引用,数量值,或者按照utf-8编码的字符串值表表是由多个无符号数或者其他表作为数据项构成的复合数据类型,所有的表都习惯性的用_info结尾,表用于描述有层次关系的复合结构的数据,整个class文件的本身就是一张表magic魔数用于确定这个文件是否为虚拟机所接受的文件. 固定值0xCAFEBABEminor_version次版本号JDK次版本号major_v

2020-05-14 10:57:21 104

原创 jvm运行区域-程序计数器

程序计数器含义:程序计数器是一个很小的线程私有内存作用:当前线程所执行的字节码的行号指示器字节码解释器通过改变计数器的值来选取下一条需要执行的字节码指令当线程执行一个java方法记录的是虚拟机字节码指令的地址当线程执行一个本地native方法计数器的值为undefined...

2020-05-12 16:17:43 66

原创 GC Roots算法中对象的销毁过程

在根搜算法中不可达的对象也并非是非死不可真正宣告一个对象的死亡至少要经历两次标记的过程如果对象在进行跟搜索后发现没有与GC Roots相连接的引用链那它将会被第一次标记并且进行一次筛选筛选条件:此对象是否有必要执行finalize()方法当前对象没有重写finalize()方法,或者finalize()方法已经被虚拟机调用过了虚拟机将以上两种情况都视为没有必要执行如果这个对象被判定为有必要执行finalize()方法那么这个对象将会被放置到F-Queue队列中,并在稍后被虚拟机创建的,低优先级

2020-05-12 16:09:43 138

原创 java引用的四种类型

强引用类似Object o = new Object()这种引用只要引用还存在垃圾回收器对象永远不会回收被引用的对象软引用用来描述一些还有用,但是不是必须的对象系统将要发生内存溢出之前,系统会将这些对象列入回收范围之内,并进行二次回收提供了SoftReference来实现软引用弱引用也是用来描述一些非必须的对象,他的强度比软引用更弱一些,被弱引用关联的对象只能生存到下一次垃圾回收之前,无论当前内存是否够用,都会回收掉被弱引用关联的对象提供了WeakReference来实现弱引用虚引用

2020-05-12 14:47:19 88

原创 垃圾回收算法

引用计数算法存在引用计数加1引用消失计数减1计数为0时表示没有引用对象,可以被回收缺点:相互引用的时候不能被回收根搜算法通过一系列名为"GC Roots"的对象作为起始点向下搜索,搜索所走过的路径称为引用链,当一个对象到GC Roots没有任何引用链(从GC Roots到这个对象不可达),则证明这个对象可以被回收...

2020-05-12 14:30:19 69

原创 扩展类加载器只能加载jar包中的内容

扩展类加载器只能加载jar包中的内容启动类加载器,应用类加载器可以直接加载.class文件

2020-04-19 15:38:55 209

原创 ClassCastException同一个类不能转换的问题

原因需要转换的类不在同一个类加载器名称空间案例public class MyPerson { private MyPerson myPerson; public void setMyPerson(Object object) { this.myPerson = (MyPerson)object; }}当我们使用自定义类加载器加载这个MyPers...

2020-04-19 15:11:07 2006

原创 类的卸载

1,由根类加载器,扩展类加载器,系统类加载器加载的类会一直保持引用状态,不会被卸载2,我们自己定义的类加载器是可以被卸载的当一个对象没有被引用的时候,调用System.gc();方法这个类就会被卸载开启卸载类的JVM参数,就可以看到类的被卸载信息-XX:+TraceClassUnloading//主动使用,对类进行加载Cat a = new Cat();a=null;//调用此方法...

2020-04-17 12:37:46 297

原创 类加载器的命名空间

学习记录——张龙jvm每一个类加载器都有自己的命名空间,命名空间是由当前得类加载器及其父加载器所加载的类组成在同一命名空间不会出现类的完整名字(包括类的报名)相同的两个类在不同的命名空间有可能出现类的完整名字(包括类的包名)相同的两个类举例自己定义类加载器new两个类加载器加载的类的hashcode不一样因为在各自的命名空间都会加载一次...

2020-04-16 20:53:34 87

原创 类的主动使用的七种情况

对圣思源张龙的jvm学习总结(学习记录)创建类的实例访问类的静态变量,或者给静态变量赋值访问类的静态方法反射初始化一个类的子类,父类也会被加载Java虚拟机被标注为启动类的类...

2020-04-06 19:55:56 135 1

原创 JVM类的执行过程

JVM类的执行过程加载 //类加载器加载类连接校验 //class文件有可能被人为修改准备 //为静态变量开辟空间,并初始化为默认值解析 //将符号引用解析成直接引用(指针)初始化使用卸载...

2020-04-04 20:30:07 86

原创 Adapter Design Pattern(适配器模式)

Adapter Design Pattern(适配器模式)适配器模式的作用关联两个不相关的类,使他们可以在一块工作案例手机电压与插座之间实现适配者模式手机电压public class Volt { //电压 private int volts; public Volt(int v){ this.volts=v; } public ...

2020-04-03 16:59:03 199

原创 Java_Design_Patterns书大致翻译

使用设计模式的好处行业标准节省时间代码强壮,易读,可复用设计模式分为三类创造设计模式解决方向:解决创建实例问题原文:The basic form of object creation could result in design problems or add unwanted complexity to the design (基本的创建对象将导致设计问题,或者给设计增加复杂...

2020-03-25 15:30:47 190

转载 内部类

内部类的实例化方式静态内部类定义如果一个内嵌的类是静态的那么这个类就是静态内部类实例化方式OuterClass outerObject = new OuterClass();OuterClass.InnerClass innerObject = outerObject.new InnerClass();内部类定义外部类的内嵌类被称为内部类特点可以访问外部类的任意成员本地内...

2020-03-25 14:13:29 60

原创 mysql给所有的表创建触发器

从网上复制的一份JDBCUtilspublic class JDBCUtils { /** * 获取连接方法 * * @return */ public static Connection getConnection() { Connection conn = null; try { ...

2020-03-18 17:31:39 500

原创 jdk1.8ArrayList源码查看结果

ArrayList注解1.ArrayList是一个Resizable-array,类中提供了操作数组大小的方法grow()2. 每一个ArrayList实例拥有一个capacity,capacity的大小始终>=ArrayList.size.capacity的大小会自动扩充3. 如果我们ArrayList的的元素很多,我们可以使用ensureCapacity()来定义容器大小,减少调用...

2020-03-16 17:10:07 91

空空如也

空空如也

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

TA关注的人

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