自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

中年闰土的博客

以铜为镜可以正衣冠,以人为镜可以明得失,以史为镜可以知兴衰!

原创 开发进阶当前阶段-心得篇

学习微服务框架,不如学习演进式架构(Evolutionary Architecture)。 学习新的编程语言,不如学习代码整洁之道、设计模式、领域驱动设计(DDD)。 学习 LeSS 和规模化敏捷框架(SAFe),不如学习精益生产原则(Lean manufacturing principles...

2019-10-08 15:01:17 699 0

原创 我对JAVA的堆外内存与NIO零拷贝的理解

在JAVA中,JVM内存指的是堆内存。在机器内存中,不属于堆内存的部分即为堆外内存。堆外内存也被称为直接内存。 当我们的java程序对操作系统所管理的磁盘文件等进行读写时候(IO操作),并不是直接与IO外设打交道读写jvm的内存,而是操作系统会首先把磁盘文件读取到他所管理的一块内存中,然后我...

2020-01-16 11:54:39 696 0

原创 细品Spring Bean的生命周期

spring bean的生命周期官方的流程图如下: 接下来 我们用代码验证一下是否如图所愿: 首先定义一个testBean import org.springframework.beans.BeansException; import org.springframework.beans...

2019-12-13 09:52:02 691 0

原创 开发中常用的shell脚本&数据处理

watch.sh(生产环境日志异常监控shell脚本) #!/bin/bash #-------------------------------------------- # 监听程序异常日志, 如果出现异常则发送通知 # author:RUNTU # weixin: classmissche...

2019-09-20 11:21:50 988 0

原创 EMQ X 生产环境鉴权配置详解(连接认证与访问控制)

EMQ的应用场景、下载、运行,官方文档都说的很细,本篇主要总结一下生产环境下,暴露于外网下的EMQ的访问鉴权配置。 警告:建议版本是3.2.2,请不要使用3.1版本(bug:任何人可以直接通过DashBoard的18083端口调用rest api创建用户) EMQ X 消息服务器的鉴权主要有连...

2019-08-21 15:52:16 175444 2

转载 针对Mysql的CentOS系统参数主要调优

内核相关参数(/etc/sysctl.conf) # 以下参数可以直接放到sysctl.conf文件的末尾 net.core.somaxconn = 65535 net.core.netdev_max_backlog = 65535 net.ipv4.tcp_max_syn_backlog =...

2019-05-28 14:59:35 191200 0

原创 可能这是关于BIO-NIO-AIO-Netty处理模型最好理解的文章了

无意中看到别人总结BIO-NIO-AIO-Netty的前世今生,也在往上翻阅了一些帖子,总感觉讲的太过于繁杂,往往一个简单的概念层层拓展,盖过了文章的主题,所以我想图文并茂的,层层递进,简单点、再简单点的讲出来。所以本文中不会出现代码。讲的不好的,或者错误的请指正!! BIO(Blocking ...

2019-05-01 10:21:05 191531 0

转载 阿里云外网映射配置(rinetd)

原帖地址:https://help.aliyun.com/document_detail/43850.html?spm=a2c4g.11186623.2.16.38b36ca62clfMn 前提条件 如果您需要从本地 PC 端访问 Redis 实例进行数据操作,可以通过在 ECS 上配置端口映...

2019-03-21 17:05:23 196849 1

转载 常见的&必知必会的JAVA面试题清单-(长更)

面试题模块介绍 内容包含了很多java方方面面,包含模块有:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Ka...

2019-03-11 09:36:22 171275 0

原创 jetty启动logback阻塞控制台空白或者抛出I/O error occurred while parsing xml file

解决办法很简单,把logback.xml的dtd注释掉。 Java程序在解析xml文件时,如果xml文件中指定了dtd,在默认会从指定的url下载dtd文件,但是很多情况下如果网络连接不上,或者防火墙原因,dtd文件无法下载下来导致程序报连接超时异常,解析xml失败。 我的就是因为这个dt...

2018-12-28 20:30:22 201066 0

原创 Spring Cloud微服务解决方案 ⑩:Spring Cloud Config

网上先搂一段简介:Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持。使用Config Server,您可以为所有环境中的应用程序管理其外部属性。它非常适合spring应用,也可以使用在其他语言的应用上。随着应用程序通过从开发到测试和生产的部署流程,您可以管理这些...

2018-12-23 12:00:40 200708 0

原创 Spring Cloud微服务解决方案⑨:Sidecar异构

比如我当前项目需要调用一个php或者node的接口,怎么把这个服务整合到当前java的微服务中呢。 源码下载路径在:https://download.csdn.net/download/qq_22075041/10869452,代码参考microservice-sidecar模块 pom文件 ...

2018-12-22 19:30:49 169678 0

原创 Spring Cloud微服务解决方案⑧:Zuul(API网关)

简单的来说,我们把zuul这个项目启动起来,注册到eurake上,那么他就可以代理eurake上面的服务(默认),各种玩法听我细细道来。 源码下载路径在:https://download.csdn.net/download/qq_22075041/10869452,代码参考microservic...

2018-12-19 22:03:30 203003 0

原创 Spring Cloud微服务解决方案⑦:Turbine(断路器集群监控)

上一篇文章末尾我们已经实现了Hystrix Dashboard对单个服务实例的监控,在实际应用中,我们更需要的是一个集群系统的监控信息,这时我们就需要引入Turbine。Turbine能够汇集监控信息,并将聚合后的信息提供给Hystrix Dashboard来集中展示和监控。简单的说,就是Turb...

2018-12-18 21:34:53 168972 0

原创 Spring Cloud微服务解决方案⑥:Hystrix的使用

在一个分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等,如何能够保证在一个依赖出问题的情况下,不会导致整体服务失败,这个就是Hystrix需要做的事情。Hystrix类库提供了熔断、隔离、Fallback、cache、监控等功能,能够在一个、或多个依赖同时出现问题时保证系统依然可用。 ...

2018-12-16 21:21:53 200764 0

原创 Spring Cloud微服务解决方案⑤:eurake的常用配置项以及eurake、feign、ribbon常见问题总结

 常见问题总结文档在这里:https://download.csdn.net/download/qq_22075041/10854420 常用配置项官方文档链接:https://cloud.spring.io/spring-cloud-static/Finchley.SR2/single/spr...

2018-12-16 20:56:36 169571 0

原创 Spring Cloud微服务解决方案④:Feign的使用

Feign是一个声明web服务客户端,这便得编写web服务客户端更容易,使用Feign 创建一个接口并对它进行注解,它具有可插拔的注解支持包括Feign注解与JAX-RS注解,Feign还支持可插拔的编码器与解码器,Spring Cloud 增加了对 Spring MVC的注解,Spring We...

2018-12-16 15:00:22 201411 0

原创 Spring Cloud微服务解决方案③:Ribbon的使用

先来一段介绍: Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现。通过Spring Cloud的封装,可以让我们轻松地将面向服务的REST模版请求自动转换成客户端负载均衡的服务调用。Spring Cloud Ribbon...

2018-12-14 21:59:57 202358 0

原创 Spring Cloud微服务解决方案 ②:注册服务到Eureka上

首先你的把上一篇文章中的Eureka服务启动起来,源码地址:https://download.csdn.net/download/qq_22075041/10851487 本文对应microservice-consumer-movie和microservice-provider-user子模块,...

2018-12-14 21:08:24 169336 0

原创 Spring Cloud微服务解决方案①:Eureka服务端的构建

Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,以实现SpringCloud的服务发现功能。包含两个组件:Eureka Server和Eureka Client。 Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进行注...

2018-12-14 18:06:47 169009 0

原创 调用Spring所管理的bean的方法时候,为何不会出现线程安全问题?

首先jvm会在内存中开辟一块存储空间做为线程栈空间,每个线程都有自己的栈(后进先出)。 调用方法时,会在栈中压入一个栈帧,用来存储这个方法的参数和局部变量; 方法返回时 ,栈帧就会弹出,方法的参数和局部变量就会清除; 方法调用时,调用栈不断处于涨落之中,如果调用的层级过深,调用栈可能会溢出 ...

2018-11-08 10:39:28 171870 0

原创 Spring bean 通过实现 InitializingBean ,DisposableBean 接口实现初始化方法和销毁前操作

关于在spring  容器初始化 bean 和销毁前所做的操作定义方式有三种: 第一种:通过@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作 第二种:通过 在xml中定义init-method 和  destory-method方法 第三...

2018-11-08 10:20:44 169590 0

原创 nginx监控与性能调优

监控 nginx有自带的监控模块,编译nginx的时候,加上参数 --with-http_stub_status_module #配置指令 ./configure --prefix=/usr/local --user=nginx --group=nginx --...

2018-11-01 16:49:24 203398 0

原创 Tomcat性能调优以及远程管理(Tomcat manager与psi-probe监控)

tomcat优化的我用到的几个点: 1.内存优化 2.线程优化 docs/config/http.html maxConnections acceptCount(配置的太大是没有意义的) maxThreads minSpareThreads 最小空闲的工作线程(...

2018-10-28 13:11:02 203292 0

原创 Tomcat远程DEBUG

在tomcat上做2个配置: 1. tomcat bin下的start.sh,jpda是一种协议   exec "$PRGDIR"/"$EXECUTABLE" jpda start "$@"     在start 前面增加jpda...

2018-10-28 12:52:20 200523 1

原创 你的Spring事务为什么不会自动回滚?

Spring的事务传播行为有七种,当前我说的是默认的那种。我们知道Spring的声明式事务是基于AOP的,那么就是AOP玩的又是代理对象,那你是不是就知道了,这个事务的大概实现原理了。。。 首先我们要明确RuntimeException与Exception之间的关系与他们分别的含义: 1....

2018-10-24 22:48:22 203085 3

原创 jdk自带的JVisualVM的可视化监控

如果你前面看了我几篇关于jvm性能优化的文章,命令行操作是不是不直观,那么我们来使用这个JVisualVM吧,在jdk的bin文件夹里,这个官方文档都有中文版,插件啥的自己看着安装。https://visualvm.github.io/pluginscenters.html 他主要有如下的功能:...

2018-10-22 20:38:09 202805 0

转载 分布式自增ID算法snowflake (Java版)

概述 分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。 有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。 而twitter的snowflake解决...

2018-10-22 09:25:28 169000 0

原创 使用jstack(jstack是用于调试线程间的关系,解决阻塞,锁等问题)定位由死循环引起的cpu负载飙高或者死锁

在linux下: linux的top命令可以查看进程的pid,我们找到java程序的pid, 然后执行 top -Hp pid 就可以查看到这个进程下线程的运行情况。 这样粗略可以看到哪些线程比较繁忙,这时候就用到jdk自带的小工具jstack(官方文档或者自行 百度)。 我们执行jst...

2018-10-21 14:13:54 167925 0

原创 使用jmap命令(用于输出对象,适用于解决对象内存溢出等问题)导出内存映象文件与堆内存异常分析 MAT

内存溢出自动导出参数: //发生溢出时dump出来 -XX:+HeapDumpOnOutOfMemoryError //dump的路径 ./为项目启动根路径 -XX:HeapDumpPath=./ 内存溢出手动导出参数:jmap命令使用 jdk安装后会自带一些小工具,jmap命令(Ja...

2018-10-21 13:34:27 201131 0

原创 使用jstat(监控整体的class情况、gc情况)监控JVM

jstat是用于监视虚拟机运行时状态信息的命令,它可以显示出虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据。 命令格式 jstat [options] VMID [interval] [count] 参数 [options] : 操作参数,一般使用 -gcutil 查看gc情...

2018-10-21 11:31:23 202046 0

原创 查看JVM运行时参数

常用的一些如下: -XX:+PrintFlagslnitial(可设置参数的初始值) 显示的参数如果是:=则表示是修改过的,=则表示是默认值 -XX:PrintFlagsFinal -XX:UnlockExperimentalVMOptions解锁实验参数(先决条件) -XX:+Unlock...

2018-10-19 16:44:11 169378 0

转载 JVM的参数类型

标准参数 -help -server, -client -version, -showversion -cp, -classpath X参数 非标准化参数(在各个JDK版本中可能会变,但是变动比较小) -Xint : 解释执行 -Xcomp : 编译执行 第一次使用就编译...

2018-10-19 16:28:36 201042 0

原创 浅析设计高可用数据库连接池(多线程)的核心要点与技术原理以及处理线程的安全问题

前不久有俩个盆友和我探讨这些问题,我做了个简单的总结分享给打架,明天就是国庆了祝大家玩的开心,主要分享设计数据库连接池原理以及要处理关键点,本文只挑选某一种实现方式来简单阐述,暂不涉及事务相关。关于事务传播行为和跨库事务(包括2PC和TCC),过段时间再做分享! 那我们先引出问题,就从没有数据库...

2018-09-30 18:40:43 170944 0

转载 Spring事务传播行为详解

前言 Spring在TransactionDefinition接口中规定了7种类型的事务传播行为。事务传播行为是Spring框架独有的事务增强特性,他不属于的事务实际提供方数据库行为。这是Spring为我们提供的强大的工具箱,使用事务传播行可以为我们的开发工作提供许多便利。但是人们对他的误解也颇...

2018-09-28 21:46:24 169332 2

原创 SpringMVC与Springfox(Swagger2)整合详解以及涉及的问题处理

        Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。  作用:          1. 接...

2018-09-26 16:58:30 203912 1

转载 java多线程之Phaser

java多线程技术提供了Phaser工具类,Phaser表示“阶段器”,用来解决控制多个线程分阶段共同完成任务的情景问题。其作用相比CountDownLatch和CyclicBarrier更加灵活,例如有这样的一个题目:5个学生一起参加考试,一共有三道题,要求所有学生到齐才能开始考试,全部同学都做...

2018-09-02 16:40:06 169082 0

转载 Java并发编程之Exchanger

概述   用于线程间数据的交换。它提供一个同步点,在这个同步点,两个线程可以交换彼此的数据。这两个线程通过exchange方法交换数据,如果第一个线程先执行exchange()方法,它会一直等待第二个线程也执行exchange方法,当两个线程都到达同步点时,这两个线程就可以交换数据,将本线程生产...

2018-09-02 16:37:38 169289 0

转载 Java并发编程之CyclicBarrier

概述   CyclicBarrier是一个同步工具类,它允许一组线程互相等待,直到到达某个公共屏障点。与CountDownLatch不同的是该barrier在释放等待线程后可以重用,所以称它为循环(Cyclic)的屏障(Barrier)。   CyclicBarrier支持一个可选的Runna...

2018-09-02 16:29:19 168781 0

转载 java并发编程之使用 CountDownLatch 控制多个线程执行顺序

有时候会有这样的需求,多个线程同时工作,然后其中几个可以随意并发执行,但有一个线程需要等其他线程工作结束后,才能开始。举个例子,开启多个线程分块下载一个大文件,每个线程只下载固定的一截,最后由另外一个线程来拼接所有的分段,那么这时候我们可以考虑使用CountDownLatch来控制并发。    ...

2018-09-02 16:01:07 200105 0

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