加载中
Hello World调试Hotspot

本地安装GDB brew install gdb ➜ ~ gdb --version GNU gdb (GDB) 9.1 Copyright (C) 2020 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/l...

深夜里安静的编译一个OpenJDK8,坑太多

Mac系统安装 利用brew search查找mercurial ➜ ~ brew search mercurial 安装 ➜ ~ brew install mercuria Linux系统安装 sudo apt install mercurial 安装openjdk8 添加代理 一般在下载代码...

浅谈ElasticSearch架构以及集成

简介 Elasticsearch是一个高度可扩展的开源的分布式Restful全文搜索和分析引擎。它允许用户快速的(近实时的)存储、搜索和分析海量数据。它通常用作底层引擎技术,为具有复杂搜索功能和要求...

Linux Rsync 增量同步与快速删除

增量同步 rsync [args] SRC [DEST] 情形:同时维护着两份不同的data_center,但以old_data_center为标准。因为权限的缘故没有开启rsync自动同步,只是每隔一段时间手动同步一下。SRC和DEST都...

@Transaction注解哪些情况不生效?

看一个最简单的CGLIB的例子,感受一下AOP是如何做到的? /** Created with vernon-test Description: User: chenyuan Date: 16/4/25 Time: 上午9:25 */ public class Target { public Strin....

JVM深入理解-内存调优与GC日志

CPU飚高分析 一般可以使用 ps -Lfp pid ps -mp pid -o THREAD, tid, time top -Hp pid [root@redis webapps]# top -Hp 22272 top - 10:09:30 up 9 days, 22:10, 1 user, load average: 0.00,...

一次性把多线程搞吐

1.什么是进程? 进程是系统中正在运行的一个程序,程序一旦运行就是进程。 进程可以看成程序执行的一个实例。进程是系统资源分配的独立实体,每个进程都拥有独立的地址空间。一个进程无法访问...

05/25 07:21
92
深入理解RocketMQ的设计

技术架构 RocketMQ架构上主要分为四部分,如上图所示: Producer:消息发布的角色,支持分布式集群方式部署。Producer通过MQ的负载均衡模块选择相应的Broker集群队列进行消息投递,投递的过程...

05/06 23:30
166
十分钟搞懂Lombok使用与原理

简介 Lombok是一款好用顺手的工具,就像Google Guava一样,在此予以强烈推荐,每一个Java工程师都应该使用它。Lombok是一种Java™实用工具,可用来帮助开发人员消除Java的冗长代码,尤其是对...

05/06 23:28
74
配置文件@ConfigurationProperties读取List、Map参数

背景 在SpringBoot环境中,我们有“使用不完的”注解。这也是SpringBoot替代了传统的Spring项目中的xml配置的原因。在使用这些annotation的时候,我们一定要了解这些注解背后的原理以及约定。...

05/06 23:25
112
群里一个转码问题的灵魂拷问

背景 这几天确实太忙了,之前是日更,说上班后来个隔日更,还是坚持不了。完成Q1季度的考评后发现群里有人问了一个问题,非常的有意思。当时我也是非常的懵逼,然后想自己尝试的去解决一下。...

如何打通SpringCloud与HSF的调用?

背景 2019年我们经历了一整年的各种迁移,其中包括了一项RPC框架的切换。以前我们用的HSF RPC框架,它是来自于阿里巴巴,经过了多年的双11高并发的洗礼,高性能这块儿毫无疑问没有任何的问题...

05/06 23:22
98
三句话理解时区与时间戳

第一句话:时间戳 时间不分东西南北、在地球的每一个角落都是相同的。他们都有一个相同的名字,叫时间戳。时间戳 指的就是Unix时间戳(Unix timestamp)。它也被称为Unix时间(Unix time)、POS...

05/06 23:20
83
深入理解ServiceLoader类与SPI机制

最近我们自己在重构项目,系统为了符合82原则(希望是80%的业务能通过穷举的方式固定下来,只有20%的允许特殊的定义),那么在固定一些标准流程以后,比如我们放大了原子服务的能力,当放大原...

spi
04/04 11:53
72
Java并发编程:任务的取消和关闭

前言 任务和线程的启动很容易。在大多数时候,我们都会让它们运行直到结束,或者让它们自行停止。然而,有时候我们希望提前结束任务或线程,或许是因为用户取消了操作,或者应用程序需要被快...

04/04 11:51
66
Redis为什么要使用跳跃表

跳跃表(skiplist)是一种有序数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。 跳跃表支持平均O(logN)、最坏O(N)复杂度的节点查找,还可以通过顺...

04/04 11:50
161
Spring启动invokeBeanFactoryPostProcessors方法解释

概述 本方法(invokeBeanFactoryPostProcessors)会实例化和调用所有 BeanFactoryPostProcessor(包括其子类BeanDefinitionRegistryPostProcessor)。 BeanFactoryPostProcessor 接口是 Spri...

04/04 11:49
30
你清楚如何动态的调整动态调整corePoolSize与maximumPoolSize吗?

前言 线程池ThreadPoolExecutor在运行的过程中,业务并发量变动,需要不停服务调整线程池的线程数,ThreadPoolExecutor支持动态调整corePoolSize与maximumPoolSize的值。 示例demo public c...

04/04 11:47
209
Redis哨兵模式与分区详细分析

一、Redis-Sentinel(哨兵) 1、介绍 Redis-Sentinel是redis官方推荐的高可用性解决方案, 当用redis作master-slave的高可用时,如果master本身宕机,redis本身或者客户端都没有实现主从切换的...

BlockingQueue是如何把线程玩的如此之牛的?

前言 BlockingQueue即阻塞队列,它算是一种将ReentrantLock用得非常精彩的一种表现,依据它的基本原理,我们可以实现Web中的长连接聊天功能,当然其最常用的还是用于实现生产者与消费者模式,...

04/04 11:45
28

没有更多内容

加载失败,请刷新页面

返回顶部
顶部