Sunxiupeng Blog

学如逆水行舟,不进则退

【译】Java SE 14 Hotspot 虚拟机垃圾回收调优指南

原文链接:HotSpot Virtual Machine Garbage Collection Tuning Guide,基于Java SE 14。 本文主要包括以下内容: 优化目标与策略(Ergonomics) 垃圾收集器实现(Garbage Collector Implementation) 影响垃圾收集性能的因素 总堆(Total Heap) ...

【译】Java垃圾回收算法[截止到Java 9]

原文:Java Garbage Collection Algorithms [till Java 9] 垃圾回收(Garbage collection,GC)一直是 Java 流行背后的重要特性之一。垃圾回收是 Java 中用于释放未使用内存的机制。本质上,它跟踪所有仍在使用的对象,并将其余的标记为垃圾。Java 的垃圾收集被认为是一种自动内存管理模式,因为程序员不必将对象指定为准备释放的...

Spring Controller单例与线程安全那些事儿

目录 单例(singleton)作用域 原型(Prototype)作用域 多个HTTP请求在Spring控制器内部串行还是并行执行方法? 实现单例模式并模拟大量并发请求,验证线程安全 附录:Spring Bean作用域 单例(singleton)作用域 每个添加@RestController或@Controller的控制器,默认是单例(singleton),这也是...

Spring通过名称获取Bean示例

摘要:本文主要演示通过继承自抽象类ApplicationObjectSupport获取Bean实例。 参考文档: Building a RESTful Web Service Spring在代码中获取bean的几种方式 Spring在代码中获取bean的几种方式提到共有以下几种方式: 方法一:在初始化时保存ApplicationContext对象 方法二:通过Spr...

MySQL InnoDB锁(翻译自官方手册)

本文基于mysql 8.0,官方手册: https://dev.mysql.com/doc/refman/8.0/en/innodb-locking.html,同时参考了mysql锁机制详解 主要内容如下: 共享锁和排他锁(Shared and Exclusive Locks) 意向锁(Intention Locks) 记录锁(Record Locks) 间隙锁(Gap ...

Redis管道之Java与Go代码示例

最近读了Redis官网一篇关于使用管道加速Redis查询 的文章,原文:Using pipelining to speedup Redis queries,中文翻译可参考:管道(Pipelining) 一个请求/响应服务器能处理新的请求即使客户端还未读取旧的响应。这样就可以将多个命令发送到服务器,而不用等待回复,最后在一个步骤中读取该答复。 管道不仅仅是为了减少往返时间(Round Tr...

Go map并发读写异常导致服务崩溃

昨天突然接到报警说服务端口丢失,也就是服务崩溃,看了错误日志,发现是map并发读写问题,记录下来,避免再犯类似错误。 分析错误日志 发现是调用json.Marshal时出错了,错误统计如下,都是并发读写map之类的异常。 1 2 3 229次错误:fatal error: concurrent map iteration and map write 193次错误:fatal error:...

02 Spring Cloud Netflix Eureka实现服务注册与发现

Spring Cloud官网: https://spring.io/projects/spring-cloud 本篇主要讲Spring Cloud Netflix中的Eureka,参考内容如下 Spring Cloud Netflix 2.2.1.RELEASE参考文档 Spring Cloud 系列之 Eureka 实现服务注册与发现 文章内容会尽量参考官方文档。 1 注...

01 Spring Cloud Config 实现配置中心

Spring Cloud官网: https://spring.io/projects/spring-cloud 本篇主要讲Spring Cloud Config,参考内容如下: Spring Cloud Config 2.2.1.RELEASE参考文档 Spring Cloud Config 实现配置中心,看这一篇就够了 实现简单的配置中心 配置文件就在Spring官方提供的...

Go Web爬虫并发实现

题目:Exercise: Web Crawler 直接参考了 https://github.com/golang/tour/blob/master/solutions/webcrawler.go 的实现,不过该代码使用了chan bool来存放子协程是否执行完成,我的代码是使用WaitGroup来让主协程等待子协程执行完成。 完整代码请参考 https://github.com/sxpu...