自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(119)
  • 资源 (5)
  • 收藏
  • 关注

原创 pandoc markdown 转 word

【代码】pandoc markdown 转 word。

2023-03-13 16:25:05 231

原创 一直在说高并发,多少QPS才算高并发?

当然面向用户的接口请求一般到不了这个量级,QPS递增大多是由于读放大造成的压力,单也属于高并发架构考虑的范畴。具体多少QPS跟业务强相关,只读接口读缓存,将压力给到缓存单机3000+没问题,写请求1000+也正常,也复杂些可能也就几百+QPS。假定总并发请求数量为10000,每个请求的处理时间为t秒,服务器一次性可以处理的请求数量为n个,那么处理完所有的请求需要用时为T。所以QPS和业务场景和设计相关性很大,比如可以通过浏览器本地缓存,用缓存做热点数据查询,写事务MQ异步处理等方式提升QPS。

2023-03-01 10:32:47 6368

原创 堆内存溢出定位(Heap Dump)

使用 MAT 和 VisualVM 分析 heap dump 文件,定位堆内存溢出位置

2023-02-07 09:45:10 3386

原创 CPU过高问题定位(Thread Dump)

打开 Java Mission Control,查看线程一栏。(远程要打开 JMX,不然 JMC 连不了)

2023-02-05 22:25:15 904

原创 Visual VM 的 Visual GC 插件

visual vm 的 visual gc 插件

2023-02-04 15:57:32 167

原创 如何选择垃圾收集器?

如何选择垃圾收集器?

2023-02-03 10:12:18 170

原创 command-not-found

https://command-not-found.com/

2023-01-08 17:14:07 91 1

原创 docker 容器之间如何通信?

使用“用户自定义网络”,您可以随意使用“内部名称解析”(有点像访问网站时的域名解析)。您可以使用要引用的容器的名称来解析容器的 IP 地址,只要它们在同一“用户自定义网络”上运行即可。rabbitmq有了这个,您可以在同一网络上的其他容器中用容器的名称解析容器的 IP 地址。同一“用户定义网络”上的所有容器都将具有网络连接。不需要"legacy linking"。Linking 是一项遗留功能。如果要在容器已经运行后将容器添加到网络,请使用如下命令。对您希望彼此连接的其他容器执行相同的操作。

2022-12-09 09:30:32 332

原创 Dockerfile中 CMD和ENTRYPOINT的区别

【代码】Dockerfile中 CMD和ENTRYPOINT的区别。

2022-11-29 13:16:02 266

原创 RPC 对比 HTTP

问:RPC那么好,为啥还用Spring Cloud和Eureka?答:RPC再好也就是个服务治理框架,能有Spring Cloud全家桶牛吗?

2022-11-27 22:33:42 267

原创 微服务的拆分规范和原则

微服务拆分没有一个绝对正确的方案,服务拆分的粒度完全要根据业务场景来规划,而随着业务的发展,原先的架构方案也需要做调整。

2022-10-31 15:16:18 136

原创 分布式消息队列(MQ)的应用场景

分布式消息队列(MQ)的应用场景。服务解耦、削峰填谷、异步化缓冲

2022-06-29 22:27:07 1542

翻译 C++中的复制构造函数与赋值运算符对比

Copy Constructor vs Assignment Operator in C++Copy constructor and Assignment operator are similar as they are both used to initialize one object using another object. But, there are some basic differences between them:复制构造函数和赋值运算符相似,因为它们都用于使用另一个对象初始化一个对

2022-01-30 23:57:01 206

原创 自动调用复制构造函数的情况

自动调用复制构造函数的情况有以下3种:1)当用一个对象去初始化本类的另一个对象时,会调用复制构造函数。例如,使用下列形式的说明语句时,即会调用复制析构函数。类名 对象名2(对象名1);类名 对象名2 = 对象名1;#include <iostream>using namespace std;class C {public: C() { cout << "构造" << endl; } C(C &c) {

2022-01-30 23:42:25 1435

翻译 C++中的复制构造函数

Copy Constructor in C++What is a copy constructor? (什么是复制构造函数?)A copy constructor is a member function that initializes an object using another object of the same class. A copy constructor has the following general function prototype:复制构造函数是一个成员函数,它使用同一

2022-01-30 23:36:02 5535 1

原创 容器(docker)和虚拟机的根本性区别

1 容器vs虚拟机容器和虚拟机都依赖于宿主机才能运行。宿主机可以是笔记本,是数据中心的物理服务器,也可以是公有云的某个实例。容器和虚拟机都依赖于宿主机才能运行。宿主机可以是笔记本,是数据中心的物理服务器,也可以是公有云的某个实例。在下面的示例中,假设宿主机是一台需要运行4个业务应用的物理服务器。在虚拟机模型中,首先要开启物理机并启动Hypervisor引导程序(本书跳过了BIOS和Bootloader代码等)。一旦Hypervisor启动,就会占有机器上的全部物理资源,如CPU、RAM、存储和NIC。

2021-08-19 15:23:14 1121

原创 垃圾收集算法

普遍适用于所有垃圾回收算法的 JVM 调优标志包括如何选择堆的大小,如何选择代的大小,如何开启和设置 GC 日志,等等。这些基础的调优标志已经足以应付大多数的场景。当它们无法解决问题时,往往需要查看使用的 GC 算法中具体是哪些操作影响了性能,进一步判断如何调整对应的参数,从而最大程度地减少 GC 操作对应用程序性能的影响。调优特定收集器最要紧的信息是启动垃圾收集器后 GC 日志中的数据。还有一些其他的因素也会影响几乎所有垃圾回收算法的性能,包括分配巨型对象、对象的生命周期既不长又不短,等等。6.1

2021-07-12 18:09:16 728 1

翻译 Oracle JDK 垃圾收集调优

使用 Oracle 的 JDK 时,垃圾收集性能调优的目标是减少执行 Full GC 周期所需的时间。不应该尝试调整 JVM 来最小化 Full GC 的频率,因为这通常会导致在必须要强制执行Full GC时需要长达数秒才能完成。在生产服务器的整个生命周期内实现较短垃圾收集时间的最简单和最可靠的方法是使用固定堆大小的收集器和并行年轻代收集器,将新生代大小限制为总堆的最多三分之一。Oracle 建议使用垃圾优先 (G1) 垃圾收集器。对于大多数生产引擎服务器(production engine serv

2021-06-10 11:56:46 143

翻译 CMS 并发模式失效(Concurrent mode failure)回退到 serial old 收集器

我正在分析 GC 暂停问题,我注意到当 CMS 使用并且并发模式失败或手动触发 GC(通过 System.gc( )) 使用的 STW 收集器似乎不是并行的。(我知道 ExplicitGCInvokesConcurrent 标志,但它不会解决并发故障)。我尝试使用 -XX:ParallelGCThreads=… -XX:ParallelCMSThreads=… 但它们似乎没有效果。我是从下面的 GC 日志行中推断出来的24.904: [Full GC (System) 24.904: [CMS.

2021-06-04 13:49:17 921

翻译 为什么清理年轻代比清理老年代更快

可以更快地清理 eden 的原因很简单:算法与 eden 空间中会在 GC 中幸存的对象数量成正比,而不与整个堆中的存活对象数量成正比。换句话说,如果你在 eden 中有 99% 的平均对象死亡率(即:99% 的对象无法在 GC 中存活,这不是不正常的),你只需要 look 并 copy 那 1%。对于Full GC,需要marked/swept完整堆中的所有活动对象。显然代价更为昂贵。...

2021-06-04 11:22:35 116

原创 百分位数(Percentiles)vs 平均数(averages)

与平均数(averages)相比,百分位数(Percentiles)更能体现应用程序响应时间的连贯性(consistent)。当平均响应时间似乎非常长并且单个数据看起来正常时,百分位数对于分析性能非常有用,且不会受到异常缓慢请求的影响。百分位数非常适合用于趋势分析、SLA 协议监控和日常性能评估。比如平均工资和中位数工资。...

2021-06-03 17:20:41 2096

翻译 JDK 1.7.0_04 及更高版本(包括 Java 8 和 Java 9)提供的 Oracle JVM 垃圾收集器

随着 G1 终于在 1.7.0_04(Java 7 更新 4)版本中得到正式支持——即不再是实验性垃圾收集器,值得评估一下我们现在在 Sun JVM 中可用的垃圾收集器。以下所有详细信息都特别与 1.7.0_04 之后的 Sun JVM 相关。现在有七种主要的垃圾收集算法,其中一种(PS Scavenge)有两种截然不同的模式,我将它们称为两种不同的算法(即,有和没有自适应(adaptive) GC),另一种(并发收集器 the concurrent collector)有大量的选项,这使得它实际上至少有

2021-06-03 13:59:36 256

原创 -XX:+ParallelGC 和 -XX:+ParallelOldGC 有什么区别?

Take a look at the HotSpot VM Options:-XX:+UseParallelGC = Use parallel garbage collection for scavenges. (Introduced in 1.4.1).-XX:+UseParallelOldGC = Use parallel garbage collection for the full collections. Enabling this option automatically sets -XX:

2021-06-02 18:43:31 1057

原创 -XX:+UseParallelGC 和 -XX:+UseParNewGC 的区别

问:它们是年轻代垃圾收集的算法。第二个 (UseParNewGC) 通过 concurrent 的老年代垃圾收集自动激活。但是,这两种并行算法之间有区别吗?答:经过大量搜索,我找到的最佳解释来自 Java Performance Tuning 网站的1.4.1 垃圾收集算法,2003 年 1 月 29 日从这些信息来看,主要区别(CMS 合作除外)似乎是 UseParallelGC 支持人体工程学,而 UseParNewGC 不支持。...

2021-06-02 18:36:25 1560

翻译 JDK 1.4.1 中的垃圾收集算法,2003 年 1 月 29 日

1.4.1中各种垃圾收集器有什么区别?1.4.1 SDK 发布时至少带有六种不同的垃圾收集算法。要了解这些算法之间的差异,您首先需要了解在 1.4.1(以及自 1.2 版本之一以来的先前 JVM)中,JVM 堆分为两个主要区域:年轻代和年老代。首先,离题一下为什么有这两个堆区域。(注意,下面的解释是简化的,避免了诸如堆有更多像Perm空间这样的区域,以及在老年代创建对年轻代来说太大的对象等复杂性。)许多面向对象程序中的对象生命周期分析表明,大多数对象的生命周期往往非常短,具有中等生命周期的对象较少,而有

2021-06-02 18:07:10 290

原创 查找正在运行的JVM进程的垃圾收集器是什么类型的

Java8及以下:jmap -heap <pid> | grep GC-XX:+UseParallelOldGC-XX:+UseParallelGC> jmap -heap 18352 | grep GCParallel GC with 10 thread(s)-XX:+UseParNewGC>jmap -heap 20620 | grep GCMark Sweep Compact GC-XX:+UseConcMarkSweepGC>jmap -

2021-05-25 19:54:10 313

原创 即时(Just-In-Time,JIT)编译器

即时(Just-In-Time,JIT)编译器是 Java 虚拟机的核心。对 JVM 性能影响最大的莫过于编译器,而选择编译器是运行 Java 程序时首先要做的选择之一——无论你是 Java 开发人员还是最终用户。幸运的是,在绝大多数情况下,只需要对编译器做一些基本的调优。4.1 JIT编译器:概览计算机——更具体说是 CPU——只能执行相对少而特定的指令,这被称为汇编码或者二进制码。因此,CPU 所执行的所有程序都必须翻译成这种指令。像 C++ 和 Fortran 这样的语言被称为编译型语言,因为它

2021-05-25 11:38:50 821

原创 Java是编译语言还是解释性编程语言?

Java实现通常使用两步编译过程。Java编译器将Java源代码编译为字节码。字节码由Java虚拟机(JVM)执行。现代JVM使用称为即时(JIT)编译的技术将字节码编译为硬件CPU在运行时即时理解的本机指令。JVM的某些实现可能选择解释字节码,而不是JIT将其编译为机器代码并直接运行。尽管它仍然被认为是“解释器”,但它与读取和执行高级源代码的解释器有很大不同(即,在这种情况下,不直接解释Java源代码,而是对Java编译器的输出字节码进行解释)。总而言之,根据执行环境的不同,字节码可以是:提前编译

2021-05-25 09:35:08 242

原创 垃圾收集入门

现代 JVM 的类型繁多,最主流的四个垃圾收集器分别是:Serial 收集器(常用于单 CPU 环境)、Throughput(或者 Parallel)收集器、Concurrent 收集器(CMS)和 G1 收集器。垃圾收集概述垃圾回收的步骤:找到不再使用的对象、回收它们使用的内存、对堆的内存布局进行压缩整理。按逻辑将线程分为应用程序线程和处理垃圾收集的线程。垃圾收集器回收对象,或者在内存中移动对象时,必须确保应用程序线程不再继续使用这些对象。这一点在收集器移动对象时尤其重要:在操作过程中,对象的内存

2021-05-14 18:59:22 173

翻译 Java-如何编译Java类以包含方法参数名称?

我们可以通过方法 java.lang.reflect.Executable.getParameters() 获得任意方法或构造器的参数名列表。

2020-12-15 15:12:13 384

翻译 使用调试信息编译Java代码

使用javac的-g选项可将调试信息包含在已编译的代码中。如果在运行时调试,但没有源代码,则调试信息很有用。缺省情况下,仅生成行号和源文件信息,即未指定-g选项。指定-g还包括局部变量调试信息。我们可以在调试期间看到变量的真实名称。我们还可以使用-g:[keyword list]来控制在编译期间应包含哪些调试信息,其中关键字列表是以下关键字的逗号分隔列表:source:源文件调试信息。lines:行号调试信息。vars:局部变量调试信息。-g:none 不会生成任何调试信息。性能上有区

2020-12-15 10:17:37 216

翻译 Spring MVC 获取方法参数的名称

如果我们希望Spring在@RequestParam(或@PathVariable或@RequestHeader)没有显式指定名称的情况下自动将查询参数名称与其进行匹配,即在@RequestParam(“myRequestParamName”)中未指定值,则代码在编译时需要包含调试信息(debugging information)或带有-parameters 编译标志(-parameters compiler flag)。尝试不使用调试信息或-parameter标志进行显式编译的情况。Controlle

2020-12-11 20:32:03 647

翻译 什么时候用RabbitMQ 什么时候用Apache Kafka?

什么时候用RabbitMQ 什么时候用Apache Kafka?如果您要问自己Apache Kafka是否比RabbitMQ更好,或者RabbitMQ是否比Apache Kafka更可靠,那么我想在这里停下来。 本文将从更广泛的角度讨论这两个方面。 它着重于两个系统提供的功能,并将指导您就何时使用哪个系统做出正确的决定。网络上的某些文章使Apache Kafka在RabbitMQ面前大放异彩,而其他文章则相反。 我们中的许多人可能会因听大肆宣传并与人群奔跑而认罪。 我觉得知道是否要使用RabbitM

2020-05-28 20:52:57 912 1

原创 调停者模式(Mediator) Java实现

调停者模式调停者模式(Mediator)的定义调停者模式是对象的行为模式。调停者模式包装了一系列对象相互的方式,使得这些对象不必互相明显作用。从而使它们可以较为松散地耦合。当这些对象中的某些对象之间的相互作用发生改变时,不会立即影响到其他的一些对象之间的相互作用.从而保证这些相互作用可以彼此独立地变化。为什么需要调停者如下图所示,这个示意图中有大量的对象,这些对象既会影响别的对象,又会被别...

2019-06-08 16:48:26 287

原创 解释器模式(Interpreter) Java实现

解释器模式解释器模式(Interpreter)的定义解释器模式是类的行为模式。给定一个语言之后,解释器模式可以定义出其文法的一种表示,并同时提供一个解释器。客户端可以使用这个解释器来解释这个语言中的句子。解释器模式的结构下面就以一个示意性的系统为例,讨论解释器模式的结构。系统的结构图如下所示:模式所涉及的角色如下所示:(1)抽象表达式(Expression)角色:声明一个所有的具体表...

2019-06-08 16:47:51 606

原创 访问者模式(Visitor) Java实现

访问者模式访问者模式(Visitor)的定义访问者是对象的行为模式。访问者模式的目的是封装一些施加于某些数据结构元素之上的操作。一旦这些操作需要修改的话,接受这个操作的数据结构则可以保持不变。分派的概念变量被声明时的类型叫做变量的静态类型(Static Type),有些人又把静态类型叫做明显类型(Apparent Type);而变量所引用的对象的真实类型又叫做变量的实际类型(Actual ...

2019-06-08 16:46:15 488

原创 状态模式(State) Java实现

状态模式状态模式(State)定义状态模式,又称状态对象模式(Pattern of Objects for States),状态模式是对象的行为模式。状态模式允许一个对象在其内部状态改变的时候,改变其行为。这个对象看上去就像改变了它的类一样。状态模式的结构用一句话来表述,状态模式把所研究的对象的行为包装在不同的状态对象里,每一个状态对象都属于一个抽象状态类的一个子类。状态模式的意图是让一...

2019-06-08 16:45:35 829

原创 备忘录模式(Memento)Java实现

备忘录模式备忘录模式(Memento)模式的:备忘录模式又叫做快照模式(Snapshot Pattern)或Token模式,是对象的行为模式。备忘录对象是一个用来存储另一个对象内部状态的快照的对象。备忘录模式的用意是在不破坏封装的条件下,将一个对象的状态捕捉(Capture)住,并外部化,存储起来,从而可以在将来合适的时候把这个对象还原到存储起来的状态。备忘录模式常常与命令模式和迭代子模式一...

2019-06-08 16:44:45 397

原创 命令模式(Command) Java实现

命令模式命令模式(Command)的定义命令模式属于对象的行为模式。命令模式又称为行动(Action)模式或交易(Transaction)模式。命令模式把一个请求或者操作封装到一个对象中。命令模式允许系统使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。命令模式的结构命令模式是对命令的封装。命令模式把发出命令的责任和执行命令的责任分割开,委派给不同的...

2019-06-08 16:43:43 1752

原创 责任链模式(Chain of Responsibility) Java实现

责任链模式责任链模式(Chain of Responsibility)定义责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。从击鼓传花谈起击鼓串花是一种热闹而...

2019-06-08 16:42:27 7970

apache-skywalking-apm-6.6.0.tar.gz

skywaling apm 6.6.0

2023-01-16

firebeat logstash elasticsearch kibana 6.6.0

filebeat-6.6.0-linux-x86_64.tar.gz logstash-6.6.0.tar.gz elasticsearch-6.6.0.tar.gz kibana-6.6.0-linux-x86_64.tar.gz

2022-08-04

Java编程思想第四版(真正的第四版,从谷歌下载的)

Java编程思想第四版,真正的第四版,目前好些都是装一个第四版的封面,内容却是第三版

2017-11-24

hibernate cascade 测试demo

hibernate cascade 测试demo

2017-01-21

poiExcel2007需要导入的jar

poiExcel2007需要导入的jar

2015-07-31

UserAgentUtils-1.14.jar和UserAgentUtils-1.14-sources.jar

java 服务中检测请求头user agent 的工具,获取浏览器类型,操作系统类型

2015-07-24

空空如也

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

TA关注的人

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