- 博客(310)
- 资源 (34)
- 论坛 (4)
- 收藏
- 关注

翻译 7. GC 调优(实战篇) - GC参考手册
JVM上运行的程序多种多样, 启动参数也有上百个, 其中有很多会影响到 GC, 所以调优GC性能的方法也有很多种。还是那句话, 没有真正的银弹, 能满足所有的性能调优指标。 我们能做的只是介绍一些常见的/和不常见的示例, 让你在碰到类似问题时知道是怎么回事。深入理解GC的工作原理, 熟练应用各种工具, 就可以进行GC调优, 提高程序性能。
2017-03-13 19:12:17
23952
4
原创 深入JVM - 实例详解invoke相关操作码
Java虚拟机规范中有一个章节专门列出了操作码助记符, 对应的链接为: Java Virtual Machine Specification: Chapter 7. Opcode Mnemonics by Opcode其中, 方法调用相关的操作码为:十进制十六进制助记符说明182(0xb6)invokevirtual调用类的实例方法;183(0xb7)invokespecial调用特殊实例方法; 如构造函数、超类方法,以及private184(0xb8)
2021-01-11 10:47:34
87
2
原创 获取Java线程转储的常用方法
1. 线程转储简介线程转储(Thread Dump)就是JVM中所有线程状态信息的一次快照。线程转储一般使用文本格式, 可以将其保存到文本文件中, 然后人工查看和分析, 或者使用工具/API自动分析。Java中的线程模型, 直接使用了操作系统的线程调度模型, 只进行简单的封装。线程调用栈, 也称为方法调用栈。 比如在程序执行过程中, 有一连串的方法调用链: obj1.method2 调用了 obj2.methodB, obj2.methodB 又调用了 obj3.methodC。 每个线程的状态都可
2021-01-07 21:26:48
6617
5
原创 MySQL_InnoDB的锁和事务模型
路过的小伙伴, 请帮忙点小星星Star支持: https://github.com/cncounter/translation/InnoDB的锁和事务模型 - Github版本想要实现高吞吐、高可靠的大型数据库应用系统; 想要从其他数据库迁移到MySQL; 想要进行MySQL性能调优; 那么学习和掌握InnoDB的锁和事务模型就非常有用。文章目录14.7.1 InnoDB中的锁共享锁与排他锁意向锁记录锁间隙锁临键锁插入意向锁自增锁空间索引使用的谓词锁14.7.2 InnoDB事务模型14.7..
2020-11-29 22:20:23
235
3
原创 获取JVM堆内存转储的常用方法
文章目录1. 堆内存转储简介2. 使用JDK内置工具2.1 `jmap` 工具2.2 `jcmd` 工具2.3 JVisualVM 工具3. 自动执行堆内存转储4. JMX方式4.1. JMX客户端工具4.2. 编程方式调用5. 小结1. 堆内存转储简介堆内存转储(Heap Dump),是指JVM堆内存在某一个时刻的快照,一般使用 hprof 格式的二进制文件来保存。 可用于分析内存泄漏问题,以及Java程序的内存使用优化。常见的内存转储分析工具包括: jhat, JVisualVM, 以及基于Ecl
2020-09-24 23:24:09
419
1
原创 深入解析G1垃圾收集器与性能优化
本文详细介绍怎样配置G1垃圾收集器的参数,如何进行性能调优, 以及如何对GC性能进行分析和评估。G1的全称为 Garbage First Garbage Collector, 是一款内置在HotSpot JVM 中的服务端垃圾收集器。G1使用【分代算法】, 将GC过程拆解为多个并发和并行阶段,将暂停时间打散,从而实现了低延迟特性,并保持良好的吞吐量。只要G1认为可以进行垃圾收集,就会触发一次GC, 当然,G1优先回收存活数据较少的区域。存活数据少就表示里面的垃圾对象多,这也是名字 Garbage.
2020-09-08 20:50:24
1640
原创 SpringBoot连接超时导致的502错误案例
1.问题描述内部系统之间通过Nginx来实现路由转发。但最近发现有一个系统,经常报502错误,每天达到上百次,完全无法忍受。2. 原因排查于是进行排查, 发现配置人员把连接超时时间(server.tomcat.connection-timeout)的单位,理解为秒,实际上是毫秒。SpringBoot的部分配置如下:# Tomcatserver: tomcat: uri-encoding: UTF-8 max-threads: 1000 min-spare-threa
2020-09-02 10:15:16
1126
原创 Java坑人面试题系列: 变量声明(中级难度)
作用域规则与变量覆盖面试题Java Magazine上面有一个专门坑人的面试题系列: https://blogs.oracle.com/javamagazine/quiz-2。这些问题的设计宗旨,主要是测试面试者对Java语言的了解程度,而不是为了用弯弯绕绕的手段把面试者搞蒙。如果你看过往期的问题,就会发现每一个都不简单。这些试题模拟了认证考试中的一些难题。 而 “中级(interme...
2020-05-06 23:33:31
1023
原创 Linux系统命令 - 查看内存使用情况
一、 查看内存使用情况在Linux系统中,大部分操作都通过命令行来完成,因为大部分情况下不开启图形界面。在服务器环境,则只能通过shell执行操作。下面介绍查看内存使用情况的相关命令。 包括物理内存(RAM)和交换内存(swap)。我们经常需要检查服务器的内存使用情况,以及每个进程占用的内存,避免发生资源短缺进而影响用户体验。对于网站和Web服务,必须具有足够的内存才能处理客户端请求。 ...
2020-04-29 23:55:08
8568
原创 Java坑人面试题系列: 线程/线程池(高级难度)
ExecutorService 接口及相关API细节详解。Java Magazine上面有一个专门坑人的面试题系列: https://blogs.oracle.com/javamagazine/quiz-2。这些问题的设计宗旨,主要是测试面试者对Java语言的了解程度,而不是为了用弯弯绕绕的手段把面试者搞蒙。如果你看过往期的问题,就会发现每一个都不简单。这些试题模拟了认证考试中的一些难...
2020-03-08 00:52:21
1721
原创 Java坑人面试题系列: 比对while与for循环(中级难度)
Java Magazine上面有一个专门坑人的面试题系列: https://blogs.oracle.com/javamagazine/quiz-2。这些问题的设计宗旨,主要是测试面试者对Java语言的了解程度,而不是为了用弯弯绕绕的手段把面试者搞蒙。如果你看过往期的问题,就会发现每一个都不简单。这些试题模拟了认证考试中的一些难题。 而 “中级(intermediate)” 和 “高级(ad...
2020-02-18 17:15:03
6947
8
原创 辨析:自旋锁与信号量
自旋锁(Spinlock)信号量(Semaphore):1. 自旋锁与信号量简介自旋是锁的一种实现方式,通过忙等待(“自旋,spinning”)来实现【例如通过while循环持续请求获取锁】。信号量的概念比锁的范围更大, 可以说, 锁是信号量的一种特殊情况。一般来说,自旋锁只在进程内有效,而信号量可同于控制多个进程之间的同步。锁主要用于互斥操作,也就是说,每次只允许一个线程持有这个...
2020-02-05 15:09:51
3133
原创 Java坑人面试题系列: 包装类(中级难度)
Java Magazine上面有一个专门坑人的面试题系列: https://blogs.oracle.com/javamagazine/quiz-2。这些问题的设计宗旨,主要是测试面试者对Java语言的了解程度,而不是为了用弯弯绕绕的手段把面试者搞蒙。如果你看过往期的问题,就会发现每一个都不简单。这些试题模拟了认证考试中的一些难题。 而 “中级(intermediate)” 和 “高级(ad...
2020-02-03 23:21:36
22670
21
原创 JVM技术细节: HotSpot的内存模型
1、对象无句柄在早期的JVM版本,例如 Classic VM 实现中,使用了 间接句柄(indirect handle) 来表示对象引用。虽然使用这种方式使得垃圾收集器在重定位对象(relocating)时非常方便,但却导致了严重的性能瓶颈,因为每次访问Java对象的实例变量都需要两步操作。HotSpot 推出以后,Java 代码就不再使用任何句柄。对象引用使用 直接指针(direct p...
2020-02-02 21:48:58
2099
原创 删除MySQL表的SQL语句-DROP-TABLE-简介
辨析: 在SQL中, DROP 用于删除表结构等信息, 属于数据格式定义 DDL的范畴;而 DELETE 用于删除数据,属于数据内容操作 DML 的范畴。官方给出的 DROP 关键字删除表结构的语法如下:DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name] ... [RESTRICT | CASCADE]当然...
2019-12-10 21:11:15
4119
1
原创 解析一个Java对象占用多少内存空间
说明: alignment, 对齐, 比如8字节的数据类型long, 在内存中的起始地址必须是8的整数倍。padding, 补齐; 在对象所占据空间的末尾,如果有空白, 需要使用padding来补齐, 因为下一个对象的起始位置必须是4/8字节(32bit/64bit)的整数倍(这又是一种对齐)。问题描述一个对象具有100个属性, 与100个对象每个具有1个属性, 哪个占用的内存空间更大...
2019-07-13 16:02:15
7572
1
翻译 Java进阶知识 - 多线程与线程间通信
CountdownLatch, CyclicBarrier 分别适合什么场景呢?大部分情况下, 子线程只需要关心自身执行的任务. 但在某些复杂的情况下, 需要使用多个线程来协同完成某个任务, 这就涉及到线程间通信(inter-thread communication)的问题了.主要涉及的内容有:thread.join() 方法object.wait() 方法object.notif...
2019-03-12 19:21:31
2108
翻译 Web开发团队常备工具
Web系统的性能问题会影响企业的各项业务。漏洞太多,运营团队就只能疲于奔命。缺少吸引力, 产品团队则会受困于用户留存率。改不完的BUG, 开发团队就没时间进行新功能开发。业务人员的效率跟着提升不上去。技术经理不能清楚证明团队所做的努力是否合理。类似的情形常常出现。有什么方法可以避免这些风险呢? 工欲善其事必先利其器,我们需要引入一些趁手的工具,各个阶段都要具备。规划工具大部分...
2019-03-04 19:34:38
1083
1
原创 升级https - 解决系统被网络运营商植入广告等问题
情景回顾福建泉州的客户反馈, 说系统使用不正常, 经常提示 “网络错误”, 或者点击某些按钮时会进行页面跳转。让客户试过各种“万能”手段: 比如清缓存, 换浏览器, 换电脑等等,问题依然会复现。通过QQ远程桌面连接客户的电脑, 使用浏览器的Network控制台, 看到监控信息中莫名出现的加载内容, 如下图所示:怀疑是客户所使用的宽带运营商存在网页劫持和篡改行为。让客户换运营商有点不太现...
2019-02-22 17:51:31
1953
翻译 CSS高级技巧:自动省略左侧文本
难以置信! 浏览器和CSS规范居然支持自动省略左侧的文本了。 通过 text-overflow: ellipsis, 搭配固定的 width 属性, 以及overflow: hidden 样式, 就可以实现这样的功能; 能用CSS实现,就不需要编写复杂的 JavaScript 代码来计算字符串宽度, 或者进行截断了. CSS的自动省略特性, 对无障碍环境也非常友好。text-overflow: ...
2018-12-21 12:00:41
3223
3
翻译 WebRTC基础实践 - 10. 总结
我们创建了一个视频聊天的APP, 同时支持传输文件以及其他数据!内容回顾在本教程中, 我们学习了以下内容:获取webcam摄像头的视频内容。通过 RTCPeerConnection 传输视频。通过 RTCPeerConnection 传输数据。配置信令服务来交换消息。集成对等连接和信令服务。拍照并用数据通道传递给对方。下一步体验WebRTC官方示例程序AppRTC: ht...
2018-12-16 21:30:59
1443
翻译 WebRTC基础实践 - 9. 拍照并传给对方
本节内容在本节课程中, 我们将学习以下内容:拍照并通过canvas元素获取图像数据。给对面发送图片。本节的完整版代码位于 step-06 文件夹中。工作原理前面的小节中, 我们使用 RTCDataChannel 来传递文本消息。本节课程, 将学习如何发送文件: 下面的示例发送的是通过 getUserMedia() 捕获的照片文件, 原理都是一样的。核心内容包括:建立数据通道...
2018-12-16 21:29:12
2475
翻译 WebRTC基础实践 - 8. 集成对等通信和信令服务
本节内容在本节课程中, 我们将学习以下内容:在Node.js平台, 通过Socket.IO来启动信令服务。用信令服务交换WebRTC客户端之间的元数据(metadata)。本节的完整版代码位于 step-05 文件夹中。更新HTML和JavaScript代码更新 index.html 文件, 内容如下:<!DOCTYPE html><html>&lt...
2018-12-14 11:01:45
1886
翻译 WebRTC基础实践 - 7. 配置信令服务
本节内容在本节课程中, 我们将学习以下内容:通过 npm 安装 package.json 文件中指定的项目依赖运行Node.js服务器, 通过 node-static 提供静态文件服务。用Socket.IO创建消息传递服务创建聊天室以及发送聊天消息。本节的完整版代码位于 step-04 文件夹中。基本概念要创建并保持WebRTC通话, 客户端之间需要互相交换元数据信息, 包括:...
2018-11-28 16:43:55
2992
翻译 WebRTC基础实践 - 6. 通过RTCDataChannel传输数据
本节内容WebRTC客户端(peers)之间如何传递数据。本节的完整版代码位于 step-03 文件夹中。修改HTML代码在本示例中, 使用WebRTC的数据通道(data channel), 将一个 textarea 的内容, 传递给同页面中的另一个textarea。这个demo本身没什么实用价值, 主要目的是展示怎样使用WebRTC来传输数据和视频。接着上一节的代码, 将 ind...
2018-11-20 19:16:38
7821
1
翻译 WebRTC基础实践 - 5.通过RTCPeerConnection传输流媒体视频
本节内容在本节课程中, 我们将学习以下内容:使用WebRTC兼容库: adapter.js, 来抹平各浏览器间的差异。通过 RTCPeerConnection API 传输流媒体视频。控制 media 的捕捉和传输。本节的完整版代码位于 step-02 文件夹中。RTCPeerConnection 简介在WebRTC规范中, RTCPeerConnection用于视频流/音频流、...
2018-11-13 19:36:51
14645
翻译 WebRTC基础实践 - 4. 获取摄像头的视频流
本节内容在本节课程中, 我们将学习以下知识点:从摄像头(webcam)获取视频流(video stream)控制视频内容的回显通过CSS和SVG处理视频内容。本节的完整版代码位于 step-01 文件夹中。HTML代码在 work 目录下的 index.html 文件中, 增加 video 标签和 script 标签:<!DOCTYPE html><html...
2018-11-12 19:50:09
9121
3
翻译 WebRTC基础实践 - 3. 获取示例代码
下载示例代码如果安装有git工具, 直接用下面的脚本, 从GitHub克隆代码即可:git clone https://github.com/googlecodelabs/webrtc-web.git或者, 点击链接下载 zip 压缩包: https://github.com/googlecodelabs/webrtc-web/archive/master.zip如果下载失败或者本地...
2018-11-09 15:40:36
2891
翻译 WebRTC基础实践 - 2. WebRTC课程概述
本课程将逐步开发一个 WebRTC 应用, 通过网络摄像头来拍照、录像、并将这些信息传递给另一方. 在此过程中, 我们将学习如何使用WebRTC的核心API, 还会通过 Node.js 来搭建一个消息服务器。课程内容从摄像头获取视频通过 RTCPeerConnection 传输视频流通过 RTCDataChannel 传输数据流配置信令服务来交换消息集成对等连接与信令服务拍照, 并...
2018-10-15 18:08:57
2308
翻译 WebRTC基础实践 - 1. WebRTC简介
WebRTC 是一个开源的实时通信项目, 主要目标是对Web/原生App平台上的语音、视频、以及数据传输等实时通讯提供支持。WebRTC 主要包括以下 JavaScript API(点击链接可查看相关demo)。getUserMedia(): 获取用户设备的音频和视频.MediaRecorder: 录制音频和视频.RTCPeerConnection: 流式传输两个客户端之间的音频与视频....
2018-10-14 11:17:27
4834
1
原创 OOM终结者参数调优
内存溢出(Out of Memory,OOM), 是指计算机的所有可用内存(包括交换空间, swap space), 都被使用满了。 这种情况下, 默认配置会导致系统报警, 并停止正常运行. 当然, 将 /proc/sys/vm/panic_on_oom 参数设置为 0, 则告诉系统内核, 如果系统发生内存溢出, 就可以调用 oom_killer(OOM终结者)功能, 来杀掉最胖的那头进程(rog...
2018-05-27 11:56:54
4734
原创 配置catalina.out的日志格式
启动 Tomcat 时, catalina.out 中输出的日志格式可能不太理想。看看某些版本默认的格式:四月 24, 2018 6:49:32 下午 org.apache.catalina.startup.Catalina start信息: Server startup in 9772 ms有点别扭, 想要调整成下面的格式:24-Apr-2018 18:52:16.13...
2018-05-07 19:27:33
7846
翻译 没有立场的专业人士最容易背锅
今天在tweet上看到一幅有趣的漫画: http://theoatmeal.com/comics/design_hell。说的是上级领导怎样坑死一个专业的设计师。 漫画很有趣, 而且在实际工作中也经常发生这种悲剧。到底是谁的锅 ?普通员工和专业人士的不同, 在于普通员工需要别人指挥着干活, 而专业人士能够为BOSS提供各种决策建议。招聘普通员工的关注点主要是执行能力, 要听指挥, 还能出活...
2018-03-07 20:08:25
2105
2
原创 spring发送Email-验证码-图片-附件-解决乱码
本文简要介绍如何通过Spring框架的支持,通过QQ邮箱来发送邮件,包括简单文本,附件、以及内联图片、HTML以及HTTP图片。spring-context-support很早就内置支持邮件发送。当然, 官方文档明确指出, 需要依赖 JavaMail 这个库。在这个年代, 我们很少自己搭建 smtp 服务器来发送邮件, 一般都是使用邮件提供商的服务。 例如 QQ邮箱, 企业邮箱...
2018-03-01 15:28:20
5912
原创 Java-根据IP统计访问次数
JSP根据IP统计访问次数本文简要介绍如何实现一个IP访问计数器。为了简单, 使用 JSP 来实现, 但读者需要明白, Java代码可以在到处运行。示例Demo页面: http://www.cncounter.com/test/counter.jsp返回JSON: http://www.cncounter.com/test/counter.jsp?format=json清空本I...
2018-02-09 15:08:39
6150
1
翻译 5.3 Java Web应用目录结构
web模块, 也就是 Servlet 规范中的web应用。在Java EE架构中, web模块(web module) 是最小的web部署单元。 其中包含web组件以及静态资源; 如图片之类的静态资源也被称为 web资源。 除web组件和web资源以外, web模块中还可以包含其他文件, 例如服务端运行所需的工具类,JAR 包等等。web模块有特定的结构。顶层目录对应Web应用的 docu
2018-01-21 21:48:11
2183
翻译 Java正则系列: (2)量词
翻译说明 greedy: 贪婪型, 最大匹配方式; reluctant: 懒惰型, 最小匹配方式; possessive: 独占型, 全部匹配方式; 也翻译为[支配型]; 这3种量词, 是修饰量词的量词, 可以理解为正则格式重复的匹配类型。量词量词(Quantifier)用来指定某部分正则所重复的次数。为了方便,本文分别介绍 Pattern A
2018-01-11 00:08:27
1489
翻译 Java正则系列: (1)入门教程
本文简要介绍Java的正则表达式及其实现方式,并通过实例讲解正则表达式的具体用法。1. 正则表达式1.1. 简介正则表达式(Regular Expression), 简称 正则, 也翻译为 正规式, 用来表示文本搜索模式。英文缩写是 regex(reg-ex). 搜索模式(search pattern)可能多种多样, 如, 单个字符(character), 特定字符串(f
2018-01-03 02:04:04
2866
2
原创 Java技巧: 根据网址/域名查询DNS/IP地址
需求: 给定一个URL地址, 例如: http://www.cncounter.com/tools/shorturl.php, 解析对应的IP地址和端口号。 说明: 本文不涉及底层的 DNS 协议, 直接使用Java平台提供的API进行操作。DNS也就是 Domain Name Service,即 域名服务。我们知道, Java中与网址有关的类包括 java.net.URL 和 ...
2017-12-05 16:48:58
4854
4
原创 SpringMVC懒加载与自动初始化
因为加载速度大多较快,所以多数应用都没配置该参数。 但对于调用量较小的纯API来说可能就会有一些影响。`load-on-startup` 配置一般是大于0的数值,表示启动顺序。 如果相同,则表明这两个Servlet启动顺序随意。
2017-12-05 15:08:45
4165
1
Oracle的JDBC驱动官方完全版
2014-08-21
TortoiseGit-2.3中文版与Git安装包_手册 官方下载绿色版
2017-01-15
Chart.js_饼状图添加文字
2014-03-26
Axure_RP_Pro_6.5简体中文稳定版_Win32
2014-10-22
TortoiseGit-1.8中文版与Git安装包_手册
2014-11-27
Tomcat6_优化_方案
2014-11-06
TortoiseSVN_1.8.8_中文版_软件_手册_32_64
2014-09-24
Polymer布局元素Demo
2014-08-02
脚本娃娃_Ext4.1.0_Doc中文_单文件_V1.0.0_Beta
2014-02-08
LoadRunner资料
2013-12-10
httpclient下载文件
2013-11-19
在线客服-群聊功能-网页版
2012-09-28
JavaClassViewer-2.0.4_理解class文件结构
2018-08-15
Java虚拟机规范_第9版_PR_EN
2017-05-11
Java语言规范_第9版_PR_EN
2017-05-11
身份证图像识别_OCR_调研文档
2017-02-20
gcviewer_1.3.4_执行程序与示例
2017-02-13
超实用超强悍Win工具集_SysinternalsSuite
2016-07-02
鼠标移到菜单上弹出二级菜单特效
2016-04-12
最新行政区划编码数据库脚本
2015-06-16
G1垃圾收集器入门
2015-01-01
铁锚的留言板
发表于 2020-01-02 最后回复 2020-01-02
阿里云公网IP端口映射求助
发表于 2013-12-21 最后回复 2015-03-17
跪求数字压缩算法
发表于 2013-11-06 最后回复 2015-01-15
安卓APN问题求助
发表于 2013-01-08 最后回复 2013-07-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人 TA的粉丝