自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java性能问题解决思路

CPU占满 通知执行jps或者top命令找到对应CPU占用最多的Java线程ID。 通过执行top -Hp 32805 查看Java线程情况 执行 printf ‘%x’ 32826 获取16进制的线程id,用于dump信息查询,结果为 :803a 执行jstack 32805 |grep -A 20 803a来查看下详细的dump信息。 内存泄漏 模拟内存泄漏借助了ThreadLocal对...

2020-05-02 12:50:05 581

原创 Java常见性能分析工具

jps命令 jps是 top命令 top命令使我们最常用的Linux命令之一,它可以实时的显示当前正在执行的进程的CPU使用率,内存使用率等系统信息,top -Hp pid可以查看与进程相关的线程的系统资源使用情况。 ...

2020-05-02 12:08:58 582

原创 分布式系统-优缺点

1. 什么是分布式系统 分布式系统(Distributed System)是由多台计算机和通信软件组件通过计算机网络来实现特定功能服务的一个系统,因为是建立在网络之上的系统,所以分布式系统具有高度内聚性和透明性。 2. 分布式系统的优点 可靠性,服务冗余,一台服务器的崩溃不会影响到其他服务; 可扩展性,可以根据需要增加部署更多的机器和服务; 资源共享; 更高的系统容量,有多台计算机,比其他系统有...

2020-04-10 10:32:01 4694

原创 Nginx限流-基于连接和基于请求

在高并发系统里,有几种手段来保护系统: 缓存(Redis、MemCache、Guava、Nginx)等; 服务降级; 限流(Nginx、Nginx+Lua、Guava、Hystrix); 异步处理(MQ); Nginx限流 基于连接,限制并发连接数 对应模块:nginx_http_limit_conn_module 语法:limit_conn_zone http { # limit c...

2020-04-10 10:10:47 440 1

原创 Nginx高可用Keeplived

主备模式:主Nginx和备Nignx,加上Keepalived来监控主节点运行状态。 1. 主节点安装keepalived // 或下载源码编译 # yum install -y keepalived // centos redhat # apt-get keepalived // ubuntu 在主节点机器/etc/keepalived目录下修改keepalived.c...

2020-03-26 17:26:58 168

原创 Nginx调优相关参数

常用的一些参数 1. 工作进程数量 worker_processes 4; // 一般与CPU核心数相同 worker_cpu_affinity 0001 0010 0100 1000; // 工作进程分别与CPU绑定 2. Nginx最大打开文件数量 worker_rlimit_nofile 65535; 该指令指一个Worker打开的最多文件描述符数量,理论值应该是最多文件打开数(ul...

2020-03-26 11:04:20 117

原创 Nginx的高性能以及常用功能

高性能 Nginx是一个高性能的

2020-03-26 10:05:15 288

原创 (三)Java内存模型

1. Java内存模型基础 1)并发编程的两个问题 线程通信:以何种机制来交换信息(共享内存、消息传递); 线程同步:怎么控制线程之间操作的先后顺序(); 2) 内存模型的抽象结构 Java中,所有实例域、静态域和数组元素都存储在堆内存,堆内存在线程之间共享。 线程之间通信两个步骤: 线程A本地内存刷新到主内存; 线程B读取刷新后的变量; 3) 源代码到编译器的重排序 为了提高性能,编...

2020-03-16 11:26:08 68

原创 (二)Java并发机制底层实现原理

1. volatile的原理 volatile,轻量级的synchronized,保证的是一个线程修改后,另一个线程立马可见的可见性,不会引起上下文切换。 底层实现 volatile Singleton instance = new Singleton() JIT编译器生成的指令代码如下: 0x01a3deld: mov $0x0,0x1104800(%esi); 0x01a3de24: ...

2020-03-16 10:38:17 86

原创 (一)并发编程的挑战

并发编程的目的是为了充分利用硬件资源,让程序跑的更快,但并不意味着开启更多的线程就能够实现这个目的,还需要考虑上下文切换、死锁的问题。 1.1 上下文切换 CPU通过时间片分配的方式来同时执行多个任务,一个任务执行一个时间片以后保存当前任务信息,然后加载另一个任务信息并切换到另一个任务,这就是一次上下文切换的过程。 减少上下文切换次数方法: 无所并发编程,多线程竞争锁会引起上下文切换,可以采取分...

2020-03-15 15:14:42 96

原创 框架源码中的三种责任链模式

责任链模式(Chain of Responsibility Pattern),为请求创建一个接收者对象的链,对请求发送者和接收者进行解耦,属于行为型模式。 应用实例 JS中的冒泡实践 Tomcat中对Encoding的处理 Strut2的拦截器 Java Servlet中的Filter Dobbo中的FIiter MyBatis中的 ...

2020-03-15 09:49:08 874

原创 HashMap底层实现原理和JDK8对它的优化?

HashMap数据保存结构 在 JDK 1.7 中 HashMap 是以数组加链表的形式组成的,JDK 1.8 之后新增了红黑树的组成结构,当链表大于 8 时,链表结构会转换成红黑树结构,它的组成结构如下图所示: 数组中定义的元素称之为哈希桶,定义如下: static class Node<K,V> implements Map.Entry<K,V> { ...

2020-03-13 21:26:40 280

空空如也

空空如也

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

TA关注的人

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