自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Mistra的博客

平凡不时与我们相遇,终有一天,放下日复一日和循规蹈矩,赦免自己的孤独

  • 博客(163)
  • 资源 (3)
  • 论坛 (2)
  • 问答 (2)
  • 收藏
  • 关注

原创 JUC---AbstractQueuedSynchronizer解析(JDK13)
原力计划

java.util.concurrent包系列文章JUC—ThreadLocal源码解析(JDK13)JUC—ThreadPoolExecutor线程池源码解析(JDK13)JUC—各种锁(JDK13)JUC—原子类Atomic*.java源码解析(JDK13)JUC—CAS源码解析(JDK13)JUC—ConcurrentHashMap源码解析(JDK13)JUC—CopyOnWr...

2020-04-06 23:23:39 279

原创 JUC---ConcurrentHashMap源码解析(JDK13)
原力计划

一、Map家族本篇只分析ConcurrentHashMap的源码。HashMap就简略带过,但是必须先明白了HashMap的相关原理再来了解ConcurrentHashMap更好。Map是我们工作中用到最多的数据结构,key-value形式。看看整个Map家族HashMap,根据键值的hashcode寻找存储位置,查询的时候速度也非常快。线程非安全的。HashTable,在HashMa...

2020-04-06 11:46:04 171

原创 SpringBoot 整合 Netty + Websocket

最近项目中需要用到长连接服务,特地整合Netty+Websocket。我们系统需要给用户主动推送订单消息,还有强制用户下线的功能也需要长连接来推送消息一、准备工作Netty的介绍就看这里:https://www.jianshu.com/p/b9f3f6a16911必须要理解到一些基础概念,什么是BIO,NIO,AIO,什么是多路复用,什么是Channel(相当于一个连接),什么是管道等等概...

2019-09-07 18:13:32 1765

原创 SpringCloud 整合 TX-LCN分布式事务框架

微服务兴起,分布式事务也成为亟需解决的难题,业界解决方案很多,今天介绍一个我目前觉得最好用的TX-LCN。官网地址:http://www.txlcn.org/zh-cn/一、TX-LCN介绍TX-LCN由两大模块组成, TxClient、TxManager,TxClient就是你自己的服务,TxManager作为分布式事务的服务端。事务发起方或者参与反都由TxClient端来控制。...

2019-09-01 23:37:17 2374 2

原创 Java后端,我的技术栈思维导图

自己整理了一份我自己的技术栈思维导图,有些技术点重点写的比较粗。思维导图下载:链接: https://pan.baidu.com/s/1l8dCGzRcyoExSHa3eCbX1g 密码: dfwd

2020-10-30 16:54:25 357

原创 不得不吹一波!JVM在线诊断利器-Arthas(阿里开源)

JVM诊断工具何其多,今天才发现又一利器 - Arthas!可直接用于生产环境!在这之前很多工具是不能用于生产环境。可以直接看官网文档:Arthas下载压缩包,解压到服务器上https://github.com/alibaba/arthas/releases先启动个官方demojava -jar arthas-demo.jararthas-demo是一个简单的程序,每隔一秒生成一个随机数,再执行质因数分解,并打印出分解结果。然后启动arthasjava -jar arthas-boo

2020-08-24 14:32:19 329

原创 搭建Gitlab Server

参考 https://about.gitlab.com/installation1. 准备工作CentOS2. 安装依赖软件sudo yum install -y git vim gcc glibc-static telnetsudo yum install -y curl policycoreutils-python openssh-serversudo systemctl enable sshdsudo systemctl start sshdsudo yum install postf

2020-08-15 22:44:01 112

原创 Kubeadm搭建K8s集群

准备准备三台服务器。云服务器或者本地vagrant+VirtualBOX创建虚拟机都行。三个节点安装’docker’,‘kubeadm’, ‘kubelet’ and ‘kubectl’vi etc/yum.repos.d/kubernetes.repo添加如下内容[kubernetes]name=Kubernetesbaseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64enabled=1g

2020-08-15 17:14:19 144

原创 Minkube搭建K8s-单节点

本地搭建K8s环境的方法Minkube搭建单节点的k8skubeadm可以搭建多节点的k8s集群在cloud搭建:kops play-with-k8s搭建此外很多云服务上也提供K8s集群服务!Minkube搭建K8s安装kubectlcurl -LO https://storage.googleapis.com/kubernetes-release/release/v1.18.0/bin/linux/amd64/kubectl-- 也可以直接访问curl后面的地址手动下载文件,上传到服

2020-08-15 16:57:46 148 1

原创 搭建docker-swarm集群

一、常规创建方式首先,准备好2-3台服务器,虚拟机也行,并且都已安装好docker环境。选择其中一台作为Manager节点docker swarm init --advertise-addr=服务器ip //初始化一个swarm manager节点复制上面提示的加入worker节点命令,在另一台服务器创建worker节点docker swarm join --token SWMTKN-1-3fl517msk9xmo12fw3x3mkrb3fbom1ligm3eklqv78cskq8oiq-

2020-08-08 18:05:56 70

原创 Docker-compose

1、安装进入下面的网址下载目前的最新版:https://github.com/docker/compose/releases/tag/1.14.0-rc2docker-compose-Linux-x86_64然后将文件上传到 /usr/local/bin/ 文件夹下,然后将其重命名为docker-compose,修改此文件的权限,增加可执行:chmod +x /usr/local/bin/docker-composedocker-compose -version2、命令docker-compo

2020-08-08 17:38:07 74

原创 修改Docker镜像源

修改或新增 /etc/sysconfig/dockertouch /etc/sysconfig/dockervim /etc/sysconfig/docker增加如下参数# vi /etc/sysconfig/dockerOPTIONS='--selinux-enabled --log-driver=journald --registry-mirror=https://registry.docker-cn.com'重启docker服务即可service docker restart

2020-08-07 22:55:21 79

原创 Redefinition failed with error 62

用jvisualVM连接jvm执行Profiler性能分析时报错:Redefinition failed with error 62控制台报错显示:Profiler Agent Error Redefinition failed for class........解决办法:JVM启动参数添加参数:-Xverify:none参考官方:https://visualvm.github.io/troubleshooting.htmlhttps://github.com/oracle/visual

2020-06-30 19:56:47 226

原创 JMT - 自研JVM性能监控与调优系统(一)

公司的项目后台实现采用的Java。系统中存在很多后台任务。线程池,队列,缓存也是遍布整个系统。平常测试的时候也因为一些OOM导致程序无法响应请求。还因为某些基础库的问题导致CPU错误,导致程序挂掉。脑子里就冒出个想法,想设计一个基础库,能监控系统中的线程池,队列,缓存的内存使用情况,记录关键方法的执行时间,找出耗时的方法,才能精准的优化,提高系统整体性能。所以我就想设计一个这样的性能监控系统。还要结合微服务的相关服务治理中间件。服务注册,统一配置中心,微服务管理中心等等。实现对系统服务的整体监控。最近

2020-05-31 22:07:45 204

原创 Java应用/JVM宕机排查步骤

相信大家都遇到过,自己的Java应用运行一段时间就宕机了或者响应请求特别慢。这时候就需要我们了来找出问题所在了。绝大部分都是代码问题导致的。一、服务宕机如果是服务宕机,发生致命问题导致进程已经死掉了,那么已经访问不了了,通常都是CPU问题引起的,程序一般会自己生成javacore文件,一般生成位置在/root目录或jar包同目录下。JavaCore文件主要保存的是Java应用各线程在某一时刻的运行的位置,即JVM执行到哪一个类、哪一个方法、哪一个行上。找到这个文件,执行命令gdb java &lt

2020-05-24 00:02:30 852

原创 JVM内存模型及垃圾收集器介绍
原力计划

一、JVM的内存模型Metaspace:Class、Package、Method、Field、字节码、常量池、符号引用等CCS:32位指针的Class,没开启短指针压缩的话不会有这个。-XX:+UseCompressedClassPointersCodeCache:JIT编译后的本地代码,JNI使用的C代码。开启编译执行才有。-Xint=解释执行。运行时数据区程序计数器PC RegisterJVM支持多线程同时执行,每一个线程都有自己的程序计数器,线程正在执行的方法叫做当前方法,如果是Java

2020-05-23 23:11:21 159

原创 JVM调优参数大全及G1GC调优
原力计划

一、JVM常见参数1、标准参数-verbose:class 打印每个class信息-verbose:gc 打印每次gc信息2、非标参数 -X-Xloggc:filename 设置GC log文件的位置 -Xloggc:log/gc.log-Xms大小 设置堆的初始化大小 -Xmx2048m =-XX:InitialHeapSize-Xmx大小 设置堆的最大大小 -Xms1024m =-XX:MaxHeapSize 一般Xms=Xmx,防止扩容和缩容-Xmn大小 设置年轻代大小(初始化和最大

2020-05-23 23:00:04 2437 2

原创 JVM---jstack分析Java线程CPU占用,线程死锁
原力计划

本文章主要演示在Windows环境,Linux环境也差不多。一、分析CPU占用飙高首先写一个Java程序,并模拟一个死循环。让CPU使用率飙高。CPU负载过大的话,新的请求就处理不了了,这就是很多程序变慢了甚至不能访问的原因之一。下面是我这里的Controller,启动程序之后,开多个请求访问这个方法。死循环代码就不贴了,自己构造。我这里模拟的一个截取字符串的死循环。/** * 演示...

2020-04-19 15:27:58 204

原创 CentOS 安装 Docker

版本查看当前版本:cat /etc/redhat-releaseCentOS Linux release 7.5.1804 (Core)安装一些必要的系统工具sudo yum install -y yum-utils device-mapper-persistent-data lvm2添加软件源信息sudo yum-config-manager --add-repo http...

2020-04-15 22:47:24 145

原创 JUC---多线程下控制并发流程(JDK13)
原力计划

一、概览控制并发流程的工具类概览二、CountDownLatch倒数计数器,倒数结束之前,一直处在等待状态,直到计时结束,此线程才能继续工作唯一的构造方法// 传入倒数计数数量public CountDownLatch(int count) { if (count < 0) throw new IllegalArgumentException("count &lt...

2020-04-06 17:49:19 224

原创 JUC---并发队列源码解析(JDK13)
原力计划

一、并发队列先看全家福并发队列又分为阻塞队列与非阻塞队列实现了BlockingQueue的就是阻塞队列,最下层左边5个。队列满的时候放不进去,队列空的时候null都取不出来,会阻塞。最右边2个就是非阻塞队列。以* Deque结尾的是双端队列,头和尾都能添加和删除。双进双出。一般使用*Queue结尾的。Queue只能一段进一端出。二、阻塞并发队列通常,应用于生产者消费者模型。阻...

2020-04-06 15:51:01 185

原创 JUC---CopyOnWriteArrayList源码解析(JDK13)

一、CopyOnWrite*系列CopyOnWriteArrayList和CopyOnWriteArraySet​也是常用的并发集合类。​他们支持并发的读写​。线程安全的。不过有它的缺点。本篇就分析下CopyOnWriteArrayList的原理和源码。CopyOnWriteArraySet​也是类似的。二 、CopyOnWriteArrayListCopyOnWriteArrayLis...

2020-04-06 13:32:22 165

原创 JUC---CAS源码解析(JDK13)

本篇介绍什么是CAS。一、什么是CAS?我认为某一个变量在内存的值是A,如果是的话,我就把它设置为B。如果不是的话,就不修改了。典型的乐观锁思想。避免多人同时修改出错。CAS方法有3个参数,内存值V,预期值A,要修改为的值B。仅当V=A时,才将内存值修改为B。否则什么都不做。最后返回现在的V。compareAndSet,compareAndSweap等等。比较并设置,比较并交换。等等操...

2020-04-05 19:56:36 157

原创 JUC---原子类Atomic*.java源码解析(JDK13)

一、什么是原子类不可分割性一个操作是不可中断的,在多线程下也可以保证相比于锁,原子变量可以把竞争资源缩小到变量级别,粒度更细。通常情况下比锁的效率更高,但是在高度竞争的情况下性能更低。以AtomicInteger为例,看看它的方法int get();//获取到当前值int getAndSet(int newValue) {//获取到当前值并设置新的值 return U.g...

2020-04-05 19:13:15 180

原创 JUC---各种锁(JDK13)

本篇偏概念性,附带部分源码。常用的锁常用的2种加锁方式synchronized和Lock。synchronized的缺点效率低,试图获得锁时不能设定超时,不能中断一个正在试图获得锁的线程不够灵活,加锁和释放的时机单一,每个锁仅有单一的条件(某个对象)无法知道是否成功获取到锁Lock作为synchronized的一种补充,他们都是可重入锁。Lock的主要方法lock():获取...

2020-04-05 17:26:45 179

原创 JUC---ThreadPoolExecutor线程池源码解析(JDK13)

线程池的组成线程池管理器 -> thread-pool工作线程(线程池中在运行的线程)-> t0,t1,t2…t9任务队列-> blocking-queue任务接口(task)-> 队列中的task1,task2…Executor 顶层接口,只有一个 execute方法void execute(Runnable command);Executo...

2020-04-01 23:18:35 130

原创 JUC---ThreadLocal源码解析(JDK13)

ThreadLocal -> 线程本地变量强调同一个请求内(同一个线程内)不同方法间的共享让某个需要用到的对象在线程间隔离(每个线程都有自己独有自己独立的对象)ThreadLocal的优点达到线程安全不需要加锁提高执行效率 高效利用内存节省开销 避免传参的麻烦Thread、ThreadLocal、ThreadLocalMap三者的关系每个Thread对象中都持有一...

2020-03-30 23:08:04 99

原创 SpringBoot2.2.X 集成 Elasticsearch 7.4

SpringBoot2.2.X 整合集成 Elasticsearch 7.4!不贴代码了。源码点这里 : 源码仓库 。觉得可以的点个star哟。核心采用池管理+对象工厂,池参数->ElasticSearchPoolConfig,Es连接工厂->ElasticSearchPoolFactory用完连接即回收,防止瞬时大量ES请求端口占用满测试先放2条数据到Es。执行...

2020-03-15 20:37:06 3209 6

原创 Gradle构建多模块SpringBoot项目

Gradle构建多模块SpringBoot项目直接贴源码:https://github.com/MistraR/gradle-multi-module.git gradle-multi-module在README.md和源码注释中说的很详细了,这里就不展开了。依赖:加载结果:我的公众号:Coding抠腚一个没有福报的Java程序员。偶尔发发自己最近学到的干货。学习路线,...

2020-02-23 14:22:26 1244

原创 SpringDataJPA多表联合查询

相信大家都用过jpa,jpa继承CrudRepository和PagingAndSortingRepository接口之后,在简单的单表查询中,不管是使用自带的findAll(),saveAll等方法还是利用jpa的方法命名规范进行jpql查询,jpa使用起来快的一撇。然而在进行复杂查询时,需要继承JpaSpecificationExecutor接口 利用Specification 进行复杂查询,...

2020-02-20 15:03:12 606

原创 采用ConcurrentLinkedQueue实现生产者,消费者模型

生产者,消费者模型在我们实际开发过程中经常用到。就用ConcurrentLinkedQueue来实现个简单的Demo。一、介绍ConcurrentLinkedQueue是单向链表结构的无界并发队列。从JDK1.7开始加入到J.U.C的行列中。使用CAS实现并发安全,元素操作按照 FIFO(first-in-first-out 先入先出) 的顺序。适合“单生产,多消费”的场景。内存一致性遵...

2020-02-17 22:22:10 313

原创 高可用分布式系统架构图

最近画了张分布式系统架构图,请教下各位小伙伴,不足之处还望指出来。

2019-09-18 16:24:00 2214 6

原创 为Logback日志添加唯一追踪ID

平常在测试的时候,不容易定位报错信息,这个时候给日志加上唯一的追踪ID,查找日志的时候就非常方便了。像这样:每个请求打印的日志都会有不同的ID,哪个请求出错,根据ID来定位日志就行了。这个ID还会返回给前端,前端发现报错让后台找原因的话只需要给个ID,后台开发人员就能根据...

2019-08-08 21:33:44 4109 3

原创 Java服务端对接支付宝支付,付款,退款,查看支付信息

史上最简单Java服务端对接支付宝支付教程,前端为APP。一、支付业务流程官方开发文档:https://docs.open.alipay.com/204/105297/下单时前端请求后台获取支付字符串后台接收到请求支付字符串的请求,先处理自己的业务(生成待支付订单),然后根据支付配置参数生成加密字符串返回给前端前端接收到支付字符串,吊起支付宝支付支付宝支付完成后会主动访问我们配置...

2019-08-08 10:33:04 2214 1

原创 Spring Cloud Alibaba 之服务注册 Nacos

从2018年10月31日起,Spring Cloud Alibaba正式入驻了Spring Cloud官方孵化器。到2019年8月1日 在 Alibaba 仓库发布第一个毕业版本。历经快1年的时间 ,Spring Cloud Alibaba正式毕业。相信大家都用过Netflix公司开源的微服务系列组件。但是Eureka 2.x 已经停止维护,是时候来撸一把这"国产"的微服务系列了。阿里工程师在中国...

2019-08-04 17:41:41 578

原创 SpringBoot 整合 阿里云OSS对象存储服务

今天来整合一下SpringBoot和阿里云OSS对象存储服务。一、配置OSS服务先在阿里云开通对象存储服务,拿到AccessKeyId、AccessKeySecret。创建你的bucket(存储空间),相当于一个一个的文件夹目录。按业务需求分类存储你的文件,图片,音频,app包等等。创建bucket是要选择该bucket的权限,私有,公共读,公共读写,按需求选择。创建bucket时对应的...

2019-07-16 10:13:00 3294 3

原创 Linux/CentOS 搭建 Jenkins 持续集成服务

为了方便持续集成,快速开发部署,用Jenkins还是比较多的,演示一下CentOS环镜快速搭建Jenkins服务。1.查看本机系统环境$ lsb_release -a这是我的版本LSB Version: :core-4.1-amd64:core-4.1-noarchDistributor ID: CentOSDescription: CentOS Linux release 7.2...

2019-07-04 16:43:26 346

原创 Session,Cookie,Token

Session由于HTTP协议是无状态的协议,大多数情况下服务端都需要知道请求是哪个用户,Session简单说就是用来标识用户请求的,拿着SessionId去访问,告诉服务器我是谁。Session是存放在服务端的,客户端有的只是SessionId。sessionid是一个会话的key,浏览器第一次访问服务器会在服务器端生成一个session,有一个sessionid和它对应。tomcat生成...

2019-05-05 12:20:39 316

原创 同步、异步、阻塞、非阻塞

同步和异步关注的是消息通信机制,针对应用程序来,关注的是程序中间的协作关系同步:执行一个操作后,必须等待返回结果,然后才继续执行后续的操作异步:执行一个操作后,不必等待返回结果,可以去执行其他的操作,然后等待通知再回来执行刚才没执行完的操作(比如回调函数通知)阻塞和非阻塞关注的是程序在等待调用结果时的状态(CPU层面),单个进程的执行状态阻塞调用是指调用结果返回之前当前线程都会挂起,...

2019-05-05 11:03:57 252

原创 @ControllerAdvice全局异常处理

Exception,分为运行时异常(RuntimeException)和非运行时异常可查的异常(checked exceptions): Exception下除了RuntimeException外的异常不可查的异常(unchecked exceptions):RuntimeException及其子类和错误(Error)可查的异常在我们编码的时候就会catch解决,运行时异常则是不可控的,...

2019-04-25 17:38:01 2234

整合Spring+SpringMVC+Mybatis+Maven+Mysql项目实例

整合搭建Spring+SpringMVC+Mybatis+Maven+Mysql开发实例

2017-11-14

Mybatis逆向工程Generator

Mybatis逆向工程Generator,自动生成mapper.xml,po,mapper.java文件

2017-11-14

apache-maven-3.5.0-bin

apache-maven-3.5.0-bin

2017-08-05

JVM crash,分析core文件,看不到函数名

发表于 2020-05-30 最后回复 2020-05-30

修改字符配置文件问题!急急急

发表于 2017-04-27 最后回复 2017-05-27

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

TA关注的人 TA的粉丝

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