- 博客(39)
- 资源 (3)
- 收藏
- 关注
原创 jstack使用实例:定位kafka线程占用大量cpu资源的问题
jstack使用实例:定位kafka线程占用大量cpu资源的问题jstack简介问题描述定位问题1. 拿到问题线程id。功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入jstack简介它是jdk自带的一个jvm工具,可以查看和导
2020-11-25 17:23:26
1258
原创 spring解决了循环依赖,为什么还会报circular reference?
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入参考https://segmentfault.com/a/1190000021217176欢迎使用Markdown编辑器
2020-07-21 21:49:42
3289
1
原创 让你的idea在windows里支持shell命令
1. 前提条件:需要安装git,或已开启win10内嵌linux检验方式: 在开始菜单中输入 bash,会出现"git bash(git自带的bash)"或"bash"的提示。2. 打开idea,依次进入file->setting->tools->terminal,进行设置在shell path中,设置为自己的bash目录(笔者设置的是win10内嵌linux的bash.exe的目录)。3.新建terminal窗口,或者重启idea,即可使用bash shell。...
2020-06-22 12:44:59
4109
原创 spring-kafka如何保证消息消费的顺序性
前言近日笔者碰到了这样的一个场景:需要将并发操作时可能产生的数据竞争,传到一个消息队列,通过消息队列的顺序读写机制来实现序列化入库,从而避免数据库的并发开销。由于公司使用的消息中间件时kafka,需要通过spring-kafka来实现。...
2020-04-16 11:24:44
2694
转载 centos7使用firewalld详解
1、firewalld的基本使用启动: systemctl start firewalld查看状态: systemctl status firewalld停止: systemctl disable firewalld禁用: systemctl stop firewalld2.systemctl是CentOS7的服务管理工具中主要的工具,它融合之前service和chkconfig的功能于...
2020-04-05 19:04:05
586
原创 centos7.6安装jenkins
centos7.6安装enkinsstep 1:官网下载Jenkins rpm包step2:安装rpm包在rpm包所在目录运行命令,rpm -iv jenkins-2.204.1-1.1.noarch.rpm step3:修改jenkins默认端口号vi /etc/sysconfig/jenkins找到JENKINS_PORT="8080"这行,修改为自定义的端口号并保存。st...
2020-01-22 22:37:29
573
原创 spring事务传播策略
require 默认的传播策略 当前事务默认加入已存在的事务中。support 支持。 如果已有事务,则加入。 如果没有存在的事务,则作为没有事务处理。MANDATORY 强制。 当前事务方法只能在外层是事务中执行,否则报错。NEW REQUIRES。新的事务 当前事务不加入已存在的事务,而是作为新的事务执行。如果回滚且外层调用时加了try catch,则外层事务不受影响。NOT S...
2019-12-24 17:23:33
763
原创 理解redis缓存雪崩、缓存穿透、缓存击穿
1. 缓存雪崩指大批缓存的key同时出现过期,导致这一瞬间db承受大量数据库查询压力。解决方案:设置过期时间的时候添加一个随机因子,避免大量的key使用同样的过期时间。2.缓存穿透查询未被缓存的数据。比如查询一个不存在的主键id,由于数据库中查询不到数据,数据不会被缓存。从而导致每次查询,压力都到达了db层。解决方案:参数校验,对于无效id直接返回孔;允许缓存null。3.缓存击穿有...
2019-12-23 16:22:32
175
原创 mysql并发问题与事务隔离级别
一、几种并发问题1. 脏读事务a读取了事务b修改、但未提交的数据,并对其执行若干操作;事务b最终却回滚了,因此事务a是使用了不合理的数据(即脏数据)并进行处理。2.不可重复读事务a在两次读取数据的时候,数据被事务b修改了。导致两次读取的数据不一致。3. 幻读事务a将表中每一条数据进行修改。修改的过程中事务b插入了一条新的数据,插入的数据没有被事务a修改,就好像发生了幻觉一样。二、事...
2019-12-23 15:30:04
198
原创 ReenTrantLock简介
ReenTrantLock是jdk提供的一种api层面的并发锁机制。相比于用synchronized实现的同步,ReenTrantLock更为轻量。一个典型的用法如下:public class ReenTrantLockDemo implements Runnable { private static ReentrantLock lock = new ReentrantLock()...
2019-11-19 15:49:10
277
原创 java1.8的内存划分
java1.8中的内存划分很多人对于jvm的认识来自于周志明的《深入理解java虚拟机》一书,这也是一本很经典的书。遗憾的是,这本书里面的很多内容是基于java1.7以前的版本来描述的,对比java1.8后的版本,已经存在很多不一致的地方了,比如对于内存区域的划分。很多博客对于java内存区域划分为五个区域:如下图对于1.7和1.6的版本,这样的划分基本没有问题。而到了1.8,jvm有了...
2019-11-17 10:53:03
591
原创 springboot启动分析
##springboot启动代码分析1. 创建SpringApplication对象1-1 创建SpringApplication时,会调用initialize方法,这个方法会做4件事情。赋值springApplication的webEnvironment属性。 用来判断是否web环境。赋值springApplication的initializers属性。 加载spring.factor...
2019-11-12 18:06:32
181
转载 linux查看服务安装位置
step1. 查找出服务的进程idps aux|grep nginxroot 1231 0.0 0.0 46336 956 ? Ss 04:21 0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.confnginx 1232 0.0 0.2 46808 2144 ? S 04:21 0:00 nginx: work...
2019-11-06 11:05:59
6015
转载 centos图形界面的开启和关闭
centos图形界面的开启和关闭一般来说centos主要用于服务器端,所以很少开启图形化界面,但是有时候为了工作方便也会偶尔开启图形界面,下面就让简单谈谈如何开启图形化界面,当然简化安装是没有这个程序的需要自行安装,可以yum安装下CentOS 作为服务器的操作系统是很常见的,但是因为需要稳定而没有很时髦的更新,所以很少做为桌面环境。在服务器上通常不需要安装桌面环境,最小化地安装 CentO...
2019-11-05 19:05:51
1682
原创 mqtt协议简介
##mqtt协议:万物互联一、概述在20世纪90年代中期IBM在帮助石油和天然气公司客户设计有效的数据传输协议时,就出现了对MQTT这种物联网环境下的数据传输协议的需求。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FFx2BXWd-1572514144487)(./1567662845623.png)]当时这种应用场景有如下几个特点:石油天然气管道线路非...
2019-10-31 17:30:07
901
原创 关于gitee总显示为繁体字的奇怪问题解决方案
关于gitee总显示为繁体字的奇怪问题解决方案我有一台笔记本莫名其妙每次访问gitee都会变成繁体字,而用其他电脑就正常。不论怎么设置浏览器语言都没有效果。今天看了下gitee网站的http请求,发现requestHeader里面有一行:Accept-Language: zh-TW应该是以前开vpn访问了这个页面,并且网站把Accept-Language信息保存到了cookies里面。导...
2019-10-14 16:18:00
1863
2
原创 深入java synchronized底层原理
深入java synchronized底层原理一、概述java synchronized关键字是高并发下实现同步代码的有效手段,一般有三种写法:1.synchronized (A.class) {}2.synchronized (this) {}3.synchronized (object) {}它们分别是把class、类的实例、一个Java对象作为锁。由于在java中,class实...
2019-10-14 11:05:31
587
转载 判断是否循环链表
如何判断循环链表实际上判断一个链表是否是循环的思路很简单,困扰我的反而是“带环链表是否就是循环链表”这个问题,穿梭于各中帖子、书本寻找答案终究找不到明确说明。《大话数据结构》中循环链表的定义为:“将单链表中终端节点的指针端由空指针改为指向头结点,就使整个单链表形成一个环,这种头尾相接的单链表称为单循环链表,简称循环链表。”也就是这个样子的:然后呢,还有其他带环链表是这个样子的:暂时先把这...
2019-05-24 14:52:21
5013
2
原创 记一次离奇的NoClassDefFoundError
一次非常误导人的NoClassDefFoundError摘要NoClassDefFoundError有时候未必如类名所示那样,运行时找不到某一个类。而可能会是某种八竿子打不着的奇葩原因所致:比如栈溢出StackOverFlow。踩坑经历今年接手一个老项目,比较笨重,而且在使用Jenkins构建测试环境启动时经常会抛出一个奇怪的异常:java.lang.NoClassDefFoundErr...
2019-05-21 15:43:56
349
原创 git提交错分支怎么办
GIT提交错分支如何处理?很多时候,当我们写完代码,绞尽脑汁写上comment,终于完成了提交。一回首却突然发现,当前分支怎么不是我的分支?这时候比较挫一点的方式就是,切换到自己的分支,然后重新编写已经错误提交到别的分支的内容,并再次提交(笔者之前就这么干过很多次)。但是这种方式碰到一次提交很多东西的时候就难以忍受了,总不能全部重写一遍吧?另一种方式就是merge当前分支到自己要提交的分支上...
2019-05-01 16:03:09
15827
2
转载 ZK和EureKa的区别(CAP理论)
1.本文作者通过ZooKeeper与Eureka作为 Service发现服务(注:WebServices 体系中的UDDI就是个发现服务)的优劣对比,分享了Knewton在云计算平台部署服务的经验。本文虽然略显偏激,但是看得出Knewton在云平台方 面是非常有经验的,这篇文章从实践角度出发分别从云平台特点、CAP原理以及运维三个方面对比了ZooKeeper与Eureka两个系统作为发布服务的 优...
2019-04-26 16:19:34
423
原创 【算法复习】堆排序
// ConsoleApplication1.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include "pch.h"#include <iostream>using namespace std;void toHeap(int a[], int length);void outArray(int a[], int length);v...
2019-03-28 18:34:32
259
转载 为什么用slf4j代替log4j
原贴地址:https://blog.youkuaiyun.com/hollis_chuang/article/details/84560482 作为Java程序员,我想很多人都知道日志对于一个程序的重要性,尤其是Web应用。很多时候,日志可能是我们了解应用程序如何执行的唯一方式。所以,日志在Java Web应用中至关重要,但是,很多人却以为日志输出只是一件简单...
2019-03-08 15:26:28
926
原创 JAVA网络I/O-闲话NIO
引言对于很多童鞋来说,JAVA NIO可能是一个熟悉又陌生的字眼。很多人可能都是听过名字而没有实际用过。那么,NIO和普通IO(BIO)有什么区别呢?且听我从头说起。一、从C10K问题说起c10k问题,即如何让一台机器同时处理10k个网络连接。随着互联网的发展,这个问题其实变得非常普遍。并且产生了c100K、c1000K等问题。像支付宝、QQ、微信,甚至面对的是数十亿计的连接数(当然肯定...
2019-02-26 19:56:09
204
原创 JVM GC算法
一、 什么是GC?GC,即Garbage Collection——垃圾收集。在c/c++语言中,每个对象的创建都会对应一个销毁的过程,这个销毁完全由用户控制。缺点: 用户需要控制每一个对象的生命周期,增大了编码的复杂度,降低了效率。而且稍有不慎,容易出现内存泄漏等问题。而在jvm中,这项工作交给了jvm来管理。二、GC的范围在JVM的五种内存模型中,有三个是不需要进行垃圾回收的:程序...
2019-02-24 11:41:45
303
转载 【转】求解动态规划问题的一般步骤
&amp;amp;amp;nbsp; &amp;amp;amp;nbsp; 动态规划相信大家都知道,动态规划算法也是新手在刚接触算法设计时很苦恼的问题,有时候觉得难以理解,但是真正理解之后,就会觉得动态规划其实并没有想象中那么难。网上也有很多关于讲解动态规划的文章,大多都是叙述概念,讲解原理,让人觉得晦涩难懂,即使一时间看懂了,发现当自己做题的时候又会觉得无所适从。我觉得,理解算...
2019-02-19 11:40:48
2829
原创 jvm内存划分
jvm内存划分1.程序计数器(PC)2.虚拟机栈关于栈帧:异常情况:3.本地方法栈4.java堆5.方法区6.运行时常量池7.直接内存1.程序计数器(PC)是一块较小的内存区域,可以看做用来记录线程当前所执行的字节码的行号。每个线程都会有一个程序计数器。如果线程执行的是一个java方法,则这个计数器记录的是正在执行的字节码指令的地址;如果执行的是native方法,则其记录的值为null。2...
2019-02-18 21:44:47
187
原创 java -jar命令参数的单横杠-和双横杠--用法
java -jar命令参数的单横杠-和双横杠–用法如下是一条典型的jar包启动参数,相信很多人都有用过:java -jar -Xms4096M xxx.jar --server.port=8088 --spring.profiles.active=test之前没有仔细看过,只知道-X**是jvm参数, --**是程序参数。今天无意中运行一下java -h命令,发现弹出的窗口提示:也就是...
2019-02-15 18:01:06
3755
3
原创 在SpringBoot中配置多个cache,实现多个cacheManager灵活切换
SpringBoot配置多个cache,实现多个cacheManager灵活切换注:本文所用的springBoot版本号为1.5.6.6目的&amp;amp;amp;效果在springBoot中同时配置了RedisCache和ehCache,当使用@Cacheable注解时,默认为redisCache,通过指定注解中”cacheManager”的属性值,达到任意切换cache的效果。方法...
2018-09-10 18:23:24
48602
13
原创 shiro反复调用RedisSessionDAO.doReadSession造成页面打开缓慢
最近接手了一个项目,跑起来后,发现打开页面的速度特别缓慢,有时仅仅打开一个页面甚至需要几分钟,让人百思不得其解。观察日志,发现在打开页面时,日志打印及其缓慢,有时几十秒才打印一行,项目仿佛在做慢动作一样。于是检查了项目注册的几个handler和filter的代码,也没有发现什么复杂的逻辑会大量消耗性能。正在一筹莫展,突然想到可以用jconsole看看线程的方法调用链。于是打开jconsole,打开...
2018-01-04 19:55:17
11102
3
原创 Netty:高性能、高可用的NIO通信框架
Netty:高性能、高可用的NIO通信框架前言最近在做老钥匙箱的重构,一个要解决的关键问题是:如何让一台服务器同时支撑成千上万个tcp长连接?老的钥匙箱项目基于jdk的bio通信,一直以来,存在内存占用过多、CPU使用率高的问题。因此,我们花了一段时间考虑更换通信框架的问题。在讨论到底层io通讯框架的时候,我们最终选择了netty。依靠netty,实现了单台服务器同时支撑几万个tcp长连接。由于最新
2017-11-29 14:14:36
6138
2
转载 JAVA wait(), notify(),sleep详解
在优快云开了博客后,一直也没在上面发布过文章,直到前一段时间与一位前辈的对话,才发现技术博客的重要,立志要把优快云的博客建好。但一直没有找到好的开篇的主题,今天再看JAVA线程互斥、同步的时候又有了新的体会,就以他作为开篇吧。 在JAVA中,是没有类似于PV操作、进程互斥等相关的方法的。JAVA的进程同步是通过synchronized()来实现的,需要说明的是,JAVA的synchr
2014-08-05 17:28:30
660
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人