- 博客(194)
- 资源 (57)
- 收藏
- 关注
原创 远程Debug配置与dockerfile
注意查看本地的项目分支与远程debug的分支是否对应,使用之后记得断开连接。注意:此处设置的远程链接的端口为。
2023-05-06 10:26:49 260 1
原创 我对JAVA的堆外内存与NIO零拷贝的理解
在JAVA中,JVM内存指的是堆内存。在机器内存中,不属于堆内存的部分即为堆外内存。堆外内存也被称为直接内存。当我们的java程序对操作系统所管理的磁盘文件等进行读写时候(IO操作),并不是直接与IO外设打交道读写jvm的内存,而是操作系统会首先把磁盘文件读取到他所管理的一块内存中,然后我们的程序再把这个内存中的数据拷贝到jvm所管理的内存中,很显然这就多了一道工序,为何要这么做呢?如...
2020-01-16 11:54:39 1491 3
原创 细品Spring Bean的生命周期
spring bean的生命周期官方的流程图如下:接下来 我们用代码验证一下是否如图所愿:首先定义一个testBeanimport org.springframework.beans.BeansException;import org.springframework.beans.factory.BeanFactory;import org.springframework.be...
2019-12-13 09:52:02 982
原创 开发-备忘录
学习微服务框架,不如学习演进式架构(Evolutionary Architecture)。学习新的编程语言,不如学习代码整洁之道、设计模式、领域驱动设计(DDD)。学习 LeSS 和规模化敏捷框架(SAFe),不如学习精益生产原则(Lean manufacturing principles)。学习 Hystrix,不如学习容错模式(Fault Tolerance Patterns)。...
2019-10-08 15:01:17 1033
原创 常用shell脚本&数据处理&轻量级长连接
watch.sh(生产环境日志异常监控shell脚本)build.sh(jenkins持续集成脚本)手机号、身份证号脱敏mysql事务未释放导致的锁数据解锁logstash推送钉钉机器人配置服务端推送常用实现方式1.WebSocket2.Server-Sent Events(简称SSE,石墨文档的推送实现,text/event-stream)3.Spring的DeferredResult类长连接异步返回(apollo客户端会像服务端发送长轮训来检测配置变更)
2019-09-20 11:21:50 1857
原创 EMQ X 生产环境鉴权配置详解(连接认证与访问控制)
EMQ的应用场景、下载、运行,官方文档都说的很细,本篇主要总结一下生产环境下,暴露于外网下的EMQ的访问鉴权配置。警告:建议版本是3.2.2,请不要使用3.1版本(bug:任何人可以直接通过DashBoard的18083端口调用rest api创建用户)EMQ X 消息服务器的鉴权主要有连接认证和访问控制俩部分组成,提供了的一系列相关的认证插件(Plugins)。 连接认证: EMQ...
2019-08-21 15:52:16 260808 2
转载 针对Mysql的CentOS系统参数主要调优
内核相关参数(/etc/sysctl.conf)# 以下参数可以直接放到sysctl.conf文件的末尾net.core.somaxconn = 65535net.core.netdev_max_backlog = 65535net.ipv4.tcp_max_syn_backlog = 65535# 加快TCP连接的回收:net.ipv4.tcp_fin_timeout = 1...
2019-05-28 14:59:35 274657
原创 可能这是关于BIO-NIO-AIO-Netty处理模型最好理解的文章了
无意中看到别人总结BIO-NIO-AIO-Netty的前世今生,也在往上翻阅了一些帖子,总感觉讲的太过于繁杂,往往一个简单的概念层层拓展,盖过了文章的主题,所以我想图文并茂的,层层递进,简单点、再简单点的讲出来。所以本文中不会出现代码。讲的不好的,或者错误的请指正!!BIO(Blocking Input/Output)处理步骤: 启动服务端,并循环监听客户端连接,每监听到一个请求,创建...
2019-05-01 10:21:05 275821 1
转载 阿里云外网映射配置(rinetd)
原帖地址:https://help.aliyun.com/document_detail/43850.html?spm=a2c4g.11186623.2.16.38b36ca62clfMn前提条件如果您需要从本地 PC 端访问 Redis 实例进行数据操作,可以通过在 ECS 上配置端口映射或者端口转发实现。但必须符合以下前提条件: 若 Redis 实例属于专有网络(VPC),ECS...
2019-03-21 17:05:23 282607 1
转载 常见的&必知必会的JAVA面试题清单-(长更)
面试题模块介绍内容包含了很多java方方面面,包含模块有:Java 基础、容器、多线程、反射、对象拷贝、Java Web 模块、异常、网络、设计模式、Spring/Spring MVC、Spring Boot/Spring Cloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql、Redis、JVM 。如下图所示:适宜阅读人群...
2019-03-11 09:36:22 236845 2
原创 jetty启动logback阻塞控制台空白或者抛出I/O error occurred while parsing xml file
解决办法很简单,把logback.xml的dtd注释掉。Java程序在解析xml文件时,如果xml文件中指定了dtd,在默认会从指定的url下载dtd文件,但是很多情况下如果网络连接不上,或者防火墙原因,dtd文件无法下载下来导致程序报连接超时异常,解析xml失败。我的就是因为这个dtd文档地址被墙了,折腾我好久。。。xmlns,schema,dtd,我就不科普了...
2018-12-28 20:30:22 285831
原创 Spring Cloud微服务解决方案 ⑩:Spring Cloud Config
网上先搂一段简介:Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持。使用Config Server,您可以为所有环境中的应用程序管理其外部属性。它非常适合spring应用,也可以使用在其他语言的应用上。随着应用程序通过从开发到测试和生产的部署流程,您可以管理这些环境之间的配置,并确定应用程序具有迁移时需要运行的一切。服务器存储后端的默认实现使用git,因此它轻松...
2018-12-23 12:00:40 283927
原创 Spring Cloud微服务解决方案⑨:Sidecar异构
比如我当前项目需要调用一个php或者node的接口,怎么把这个服务整合到当前java的微服务中呢。源码下载路径在:https://download.csdn.net/download/qq_22075041/10869452,代码参考microservice-sidecar模块pom文件 <dependency> <groupId>org.s...
2018-12-22 19:30:49 234785
原创 Spring Cloud微服务解决方案⑧:Zuul(API网关)
简单的来说,我们把zuul这个项目启动起来,注册到eurake上,那么他就可以代理eurake上面的服务(默认),各种玩法听我细细道来。源码下载路径在:https://download.csdn.net/download/qq_22075041/10869452,代码参考microservice-gateway-zuul模块。首先加入zuul的依赖<dependency>...
2018-12-19 22:03:30 286742
原创 Spring Cloud微服务解决方案⑦:Turbine(断路器集群监控)
上一篇文章末尾我们已经实现了Hystrix Dashboard对单个服务实例的监控,在实际应用中,我们更需要的是一个集群系统的监控信息,这时我们就需要引入Turbine。Turbine能够汇集监控信息,并将聚合后的信息提供给Hystrix Dashboard来集中展示和监控。简单的说,就是Turbine是一个项目,把其他启用了Hystrix的项目信息配置进去启动起来,有一个访问地址还是复制上一篇文...
2018-12-18 21:34:53 233541
原创 Spring Cloud微服务解决方案⑥:Hystrix的使用
在一个分布式系统里,许多依赖不可避免的会调用失败,比如超时、异常等,如何能够保证在一个依赖出问题的情况下,不会导致整体服务失败,这个就是Hystrix需要做的事情。Hystrix类库提供了熔断、隔离、Fallback、cache、监控等功能,能够在一个、或多个依赖同时出现问题时保证系统依然可用。demo下载地址:https://download.csdn.net/download/qq_...
2018-12-16 21:21:53 283860
原创 Spring Cloud微服务解决方案⑤:eurake的常用配置项以及eurake、feign、ribbon常见问题总结
常见问题总结文档在这里:https://download.csdn.net/download/qq_22075041/10854420常用配置项官方文档链接:https://cloud.spring.io/spring-cloud-static/Finchley.SR2/single/spring-cloud.html#_appendix_compendium_of_configuratio...
2018-12-16 20:56:36 233990
原创 Spring Cloud微服务解决方案④:Feign的使用
Feign是一个声明web服务客户端,这便得编写web服务客户端更容易,使用Feign 创建一个接口并对它进行注解,它具有可插拔的注解支持包括Feign注解与JAX-RS注解,Feign还支持可插拔的编码器与解码器,Spring Cloud 增加了对 Spring MVC的注解,Spring Web 默认使用了HttpMessageConverters, Spring Cloud 集成 Ribbo...
2018-12-16 15:00:22 284727
原创 Spring Cloud微服务解决方案③:Ribbon的使用
先来一段介绍:Spring Cloud Ribbon是一个基于HTTP和TCP的客户端负载均衡工具,它基于Netflix Ribbon实现。通过Spring Cloud的封装,可以让我们轻松地将面向服务的REST模版请求自动转换成客户端负载均衡的服务调用。Spring Cloud Ribbon虽然只是一个工具类框架,它不像服务注册中心、配置中心、API网关那样需要独立部署,但是它几乎存在...
2018-12-14 21:59:57 285469
原创 Spring Cloud微服务解决方案 ②:注册服务到Eureka上
首先你的把上一篇文章中的Eureka服务启动起来,源码地址:https://download.csdn.net/download/qq_22075041/10851487本文对应microservice-consumer-movie和microservice-provider-user子模块,他俩为调用关系,作为Eureka客户端的话,配置一样,只是为后文做铺垫。以下是microservice...
2018-12-14 21:08:24 233856 1
原创 Spring Cloud微服务解决方案①:Eureka服务端的构建
Eureka是Netflix开发的服务发现框架,本身是一个基于REST的服务,以实现SpringCloud的服务发现功能。包含两个组件:Eureka Server和Eureka Client。Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界...
2018-12-14 18:06:47 233474
原创 调用Spring所管理的bean的方法时候,为何不会出现线程安全问题?
首先jvm会在内存中开辟一块存储空间做为线程栈空间,每个线程都有自己的栈(后进先出)。调用方法时,会在栈中压入一个栈帧,用来存储这个方法的参数和局部变量;方法返回时 ,栈帧就会弹出,方法的参数和局部变量就会清除;方法调用时,调用栈不断处于涨落之中,如果调用的层级过深,调用栈可能会溢出Spring创建的bean默认是singleton的,线程调用某个bean时,是持有一个bean对象...
2018-11-08 10:39:28 239760
原创 Spring bean 通过实现 InitializingBean ,DisposableBean 接口实现初始化方法和销毁前操作
关于在spring 容器初始化 bean 和销毁前所做的操作定义方式有三种:第一种:通过@PostConstruct 和 @PreDestroy 方法 实现初始化和销毁bean之前进行的操作第二种:通过 在xml中定义init-method 和 destory-method方法第三种: 通过bean实现InitializingBean和 DisposableBean接口对于初始...
2018-11-08 10:20:44 234084
原创 nginx监控与性能调优
监控nginx有自带的监控模块,编译nginx的时候,加上参数 --with-http_stub_status_module#配置指令 ./configure --prefix=/usr/local --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module...
2018-11-01 16:49:24 287110
原创 Tomcat性能调优以及远程管理(Tomcat manager与psi-probe监控)
tomcat优化的我用到的几个点:1.内存优化2.线程优化 docs/config/http.html maxConnections acceptCount(配置的太大是没有意义的) maxThreads minSpareThreads 最小空闲的工作线程(不能设置的太小)4.配置优化 docs/config/host.html autoDepla...
2018-10-28 13:11:02 286761
原创 Tomcat远程DEBUG
在tomcat上做2个配置:1. tomcat bin下的start.sh,jpda是一种协议 exec "$PRGDIR"/"$EXECUTABLE" jpda start "$@" 在start 前面增加jpda 2.bin下的catlina.sh, 将下面的localhost修改为54321,代码段如下:if [ -z "$JPDA_ADDRESS" ]; t...
2018-10-28 12:52:20 285162 1
原创 你的Spring事务为什么不会自动回滚?
Spring的事务传播行为有七种,当前我说的是默认的那种。我们知道Spring的声明式事务是基于AOP的,那么就是AOP玩的又是代理对象,那你是不是就知道了,这个事务的大概实现原理了。。。首先我们要明确RuntimeException与Exception之间的关系与他们分别的含义:1.在Java中异常的基类为Throwable,他有两个子类Exception与Errors,同时Runt...
2018-10-24 22:48:22 287498 3
原创 jdk自带的JVisualVM的可视化监控
如果你前面看了我几篇关于jvm性能优化的文章,命令行操作是不是不直观,那么我们来使用这个JVisualVM吧,在jdk的bin文件夹里,这个官方文档都有中文版,插件啥的自己看着安装。https://visualvm.github.io/pluginscenters.html他主要有如下的功能: 1.监控本地Tomcat 2. 监控远程Tomcat 3....
2018-10-22 20:38:09 285887
转载 分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移到Cassandra,因为Cassandra没...
2018-10-22 09:25:28 233458
原创 使用jstack(jstack是用于调试线程间的关系,解决阻塞,锁等问题)定位由死循环引起的cpu负载飙高或者死锁
在linux下:linux的top命令可以查看进程的pid,我们找到java程序的pid,然后执行 top -Hp pid 就可以查看到这个进程下线程的运行情况。 这样粗略可以看到哪些线程比较繁忙,这时候就用到jdk自带的小工具jstack(官方文档或者自行 百度)。我们执行jstack pid > abc.txt //意思是执行结果输出到这个文本。在这个文本中有很...
2018-10-21 14:13:54 232490
原创 使用jmap命令(用于输出对象,适用于解决对象内存溢出等问题)导出内存映象文件与堆内存异常分析 MAT
内存溢出自动导出参数://发生溢出时dump出来 -XX:+HeapDumpOnOutOfMemoryError//dump的路径 ./为项目启动根路径 -XX:HeapDumpPath=./内存溢出手动导出参数:jmap命令使用jdk安装后会自带一些小工具,jmap命令(Java Memory Map)是其中之一。主要用于打印指定Java进程(或核心文件、远程调试服务器)的共...
2018-10-21 13:34:27 284826
原创 使用jstat(监控整体的class情况、gc情况)监控JVM
jstat是用于监视虚拟机运行时状态信息的命令,它可以显示出虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据。命令格式jstat [options] VMID [interval] [count]参数[options] : 操作参数,一般使用 -gcutil 查看gc情况VMID : 本地虚拟机进程ID,即当前运行的java进程号(PID)[interval] : ...
2018-10-21 11:31:23 285439
原创 查看JVM运行时参数
常用的一些如下:-XX:+PrintFlagslnitial(可设置参数的初始值) 显示的参数如果是:=则表示是修改过的,=则表示是默认值-XX:PrintFlagsFinal-XX:UnlockExperimentalVMOptions解锁实验参数(先决条件)-XX:+UnlockDiagnosticVMOptions解锁诊断参数-XX:+PrintCommandLineFlag...
2018-10-19 16:44:11 234145
转载 JVM的参数类型
标准参数-help-server, -client-version, -showversion-cp, -classpathX参数 非标准化参数(在各个JDK版本中可能会变,但是变动比较小) -Xint : 解释执行 -Xcomp : 编译执行 第一次使用就编译成本地代码 -Xmixed :混合模式,JVM自己来决定是否编译成本地代码 XX...
2018-10-19 16:28:36 283963
原创 浅析设计高可用数据库连接池(多线程)的核心要点与技术原理以及处理线程的安全问题
前不久有俩个盆友和我探讨这些问题,我做了个简单的总结分享给打架,明天就是国庆了祝大家玩的开心,主要分享设计数据库连接池原理以及要处理关键点,本文只挑选某一种实现方式来简单阐述,暂不涉及事务相关。关于事务传播行为和跨库事务(包括2PC和TCC),过段时间再做分享!那我们先引出问题,就从没有数据库连接池的时候说起吧(图就不画了,网上截一个)!!!缺点:首先,每一次web请求都要建立一次数据...
2018-09-30 18:40:43 236319 1
转载 Spring事务传播行为详解
前言Spring在TransactionDefinition接口中规定了7种类型的事务传播行为。事务传播行为是Spring框架独有的事务增强特性,他不属于的事务实际提供方数据库行为。这是Spring为我们提供的强大的工具箱,使用事务传播行可以为我们的开发工作提供许多便利。但是人们对他的误解也颇多,你一定也听过“service方法事务最好不要嵌套”的传言。要想正确的使用工具首先需要了解工具。本文...
2018-09-28 21:46:24 233883 3
原创 SpringMVC与Springfox(Swagger2)整合详解以及涉及的问题处理
Swagger 是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。总体目标是使客户端和文件系统作为服务器以同样的速度来更新。文件的方法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。 作用: 1. 接口的文档在线自动生成。 2. 功能测试。 在做Spring+Spri...
2018-09-26 16:58:30 287880 1
转载 java多线程之Phaser
java多线程技术提供了Phaser工具类,Phaser表示“阶段器”,用来解决控制多个线程分阶段共同完成任务的情景问题。其作用相比CountDownLatch和CyclicBarrier更加灵活,例如有这样的一个题目:5个学生一起参加考试,一共有三道题,要求所有学生到齐才能开始考试,全部同学都做完第一题,学生才能继续做第二题,全部学生做完了第二题,才能做第三题,所有学生都做完的第三题,考试才结束...
2018-09-02 16:40:06 233723
转载 Java并发编程之Exchanger
概述 用于线程间数据的交换。它提供一个同步点,在这个同步点,两个线程可以交换彼此的数据。这两个线程通过exchange方法交换数据,如果第一个线程先执行exchange()方法,它会一直等待第二个线程也执行exchange方法,当两个线程都到达同步点时,这两个线程就可以交换数据,将本线程生产出来的数据传递给对方。 Exchanger 可被视为 SynchronousQueue 的双向形...
2018-09-02 16:37:38 233722
spring-cloud-docker-microservice-book-code-master
2018-12-22
springclouddemo
2018-12-14
Oauth2实现java
2018-07-01
SQLyog.10.4.2支持图形化sql语句
2017-09-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人