java
西兰花是真的菜
这个作者很懒,什么都没留下…
展开
-
进程,线程与多核,多cpu之间的关系
文章目录cpu架构和工作原理多核cpu和多cpu架构cpu的缓存进程和线程进程和线程在多核cpu,多cpu中的运行关系cpu架构和工作原理计算机有5大基本组成部分,运算器,控制器,存储器,输入和输出。运算器和控制器封装到一起,加上寄存器组和cpu内部总线构成中央处理器(CPU)。cpu的根本任务,就是执行指令,对计算机来说,都是0,1组成的序列,cpu从逻辑上可以划分为3个模块:控制单元、运算单元和存储单元。这三个部分由cpu总线连接起来。CPU的运行原理就是:控制单元在时序脉冲的作用下,将指令计数原创 2020-06-16 16:53:27 · 3085 阅读 · 0 评论 -
kafka伪集群Docker单机搭建,及其与spring boot集成
kafka & springboot文章目录kafka & springboot一、使用docker单机搭建kafka集群二、springboot和kafka的整合三、kafka的多种处理方式一、使用docker单机搭建kafka集群环境准备:docker环境,docker-compose工具创建一个自定义的文件夹,创建docker-compose.yml文件version: '2'services: zookeeper: image: wurstmeiste原创 2020-06-16 11:32:37 · 503 阅读 · 0 评论 -
Java OOM问题如何排查
文章目录OOM 问题什么是OOM导致OOM问题的原因排查手段实战MAT分析OOM 问题什么是OOMOOM为out of memory的简称,来源于java.lang.OutOfMemoryError,指程序需要的内存空间大于系统分配的内存空间,OOM后果就是程序crash;可以通俗理解:程序申请内存过大,虚拟机无法满足,然后自杀了。导致OOM问题的原因为什么会没有内存了呢?原因不外乎有两点:1)分配的少了:比如虚拟机本身可使用的内存(一般通过启动时的VM参数指定)太少。2)应用用的太多,并且用原创 2020-06-15 12:07:40 · 4687 阅读 · 0 评论 -
三步排查JVM cpu 100%问题
文章目录详细步骤1. 定位哪个服务导致的cpu满载2. 定位哪个线程导致的cpu满载3. 查看堆栈,定位到具体代码段本文将通过一个简单的案例,展示几下几点:如何定位是哪个服务进程导致CPU过载哪个线程导致CPU过载哪段代码导致CPU过载首先是写一个死循环的代码demo,用于模拟cpu100%的场景(此处不一定达到100%,只是为了演示排查过程尽量模拟)public class BusyCpu { public static void main(String[] arg原创 2020-06-14 14:15:53 · 961 阅读 · 0 评论 -
一篇文章搞清JVM死锁问题及排查
关于死锁,一直是面试和日常开发中的熟悉话题,本文将进行一下探讨:什么是死锁出现死锁的原因如何避免死锁代码中死锁问题怎么排查文章目录1. 什么是死锁2. 出现死锁的原因3. 如何预防和避免死锁4. 实战JVM死锁问题排查4.1 死锁代码案例4.2 死锁问题JVM工具排查4.2.1 jps+jstack方式排查4.2.2 jconsole方式排查4.2.3 jvisualvm方式1. 什么是死锁死锁是指两个或两个以上的进程或线程,在执行过程中,由于竞争资源而造成的一种阻塞的现象,若无外力作.原创 2020-06-13 14:39:04 · 1357 阅读 · 0 评论 -
用得上的jstat,jinfo,jmap,jhat,jstack
文章目录jps1.常用命令2.实战jinfo1.常用命令参数2.实战输出指定参数输出所有默认参数和设置的参数开启关闭指定参数动态修改指定参数jmap1. 常用命令参数2. 实战转存dump文件。打印等待回收对象打印heap重要信息打印class信息jhatjstack1. 常用命令参数2. 实战强制输出线程堆栈输出堆栈信息和锁的信息jstat1.常用命令参数2.实战类加载统计:编译统计垃圾回收统计堆内存统计新生代垃圾回收统计新生代内存统计老年代内存统计元数据空间统计总垃圾回收统计垃圾回收原因内容大纲:原创 2020-06-12 01:04:00 · 2556 阅读 · 1 评论 -
万字长文总结!吐血推荐的JVM面试题干货
文章目录1.什么是JVM2.JVM基本结构3.运行时数据区4 hotspot方法区的实现5 堆的结构6 为何新生代要设置两个survivor区7 对象访问定位8 判断对象存活方式9 GC安全点10 GC11 内存回收和分配策略12 GC收集器13 类加载过程1.什么是JVM说一说什么是JVMJVM,即 Java Virtual Machine,Java 虚拟机。它通过模拟一个计算机来达到一个计算机所具有的的计算功能。JVM 能够跨计算机体系结构来执行 Java 字节码,主要是由于 JVM 屏蔽了与原创 2020-06-10 00:01:08 · 2107 阅读 · 3 评论 -
Java从静态代理到动态代理
文章目录0 代理模式1 静态代理2 动态代理(JDK)3 cglib动态代理使用方法4 总结0 代理模式代理模式是一种设计模式,说的简单一点,代理模式就是设置一个中间代理来控制访问原目标对象,以达到增强原对象的功能和简化访问方式。代理模式图例:针对该图进行解释,以下几点需要说明:用户只关心接口功能(Subject),而不在乎谁提供了功能。接口真正实现者是RealSubject,但它不与用户直接接触,而是通过代理。代理是 Proxy,它实现了 Subject 接口,能够直接与用户接触。用户原创 2020-05-18 10:57:57 · 219 阅读 · 0 评论 -
关于Java反射的总结
文章目录0.反射和类加载关系1.获取Class对象的方法2.获取Class对象的信息构造方法3.反射操作实例对象判断是否为类的实例两种方式:创建实例PS反射的本质就是:在运行时,把 Java 类中的各种成分映射成一个个的 Java 对象。**0.反射和类加载关系类加载过程如下:编译,Java 编译器将 .java 编译产生 .class 二进制文件。加载,JVM 中的类加载器解析.class 文件内的信息。类加载器会根据类的全限定名来获取此类的二进制字节流,生成代表这个类的 java.l原创 2020-05-09 10:37:59 · 201 阅读 · 0 评论 -
从Java线程到线程池
文章目录线程模型线程池基础概念线程池的使用线程池的工作状态附1.线程池设置多少合适:2. 线程工厂的demo2. 自定义饱和策略线程模型线程模型分为两类,用户级线程(ULT)和内核级线程(KLT)用户级线程(ULT):user level threads,系统内核对ULT无感知,线程的创建和调度都由用户级APP进程管理;即APP自行管理的线程,就是用户级线程内核级线程(KLT):k...原创 2020-04-08 11:38:41 · 264 阅读 · 4 评论 -
超清晰明了的解释Java序列化和反序列化
1. 序列化是将对象写入到IO字节流,反序列化是从IO字节流中恢复对象2. 序列化的两个主要作用是用来存储和网络传输原创 2020-03-16 18:44:38 · 167 阅读 · 0 评论 -
java线程通信
文章目录等待通知 *wait* *notify*经典模型状态分析线层之间的IO这是Java线程技术的第二篇,主要讲解java线程之间的通信和交互.等待通知 wait notify 想要实现一个这样的需求:一个线程修改了一个对象的值,而另一个线程感知到了变化,然后进行相应的操作。类似于消费者和生产者的概念,只是对象是两个线程。这时候,简单的操作,是另一个线程一直不断的循环...原创 2019-08-21 23:59:19 · 205 阅读 · 0 评论 -
java线程基础
文章目录创建java线程的两种方式和启动线程的优先级别线程的状态Daemon线程线程中断的概念和使用总结[外链图片转存失败(img-TODEoiai-1566193209488)(https://img.shields.io/badge/private-tag-blue.svg)]github: https://github.com/ValjeanShawblog: https...原创 2019-08-19 13:41:18 · 132 阅读 · 0 评论 -
Java的字符表示格式
Java的字符表示格式是什么?JVM的设计者当初决定JVM中所有字符的表示形式时,是不允许使用各种编码方式的字符并存的。原因:如果内存中的Java字符可以以GB2312、UTF-16、BIG5等各种编码存在,那么对于开发者来说,连最基本的字符串打印,连接等操作都寸步难行。例如:一个GB2312的字符串后面连接一个UTF-8的字符串,那么连接之后的结果是混乱的,无法选择。Java开发者牢原创 2020-03-29 20:42:59 · 1817 阅读 · 0 评论