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 »

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

Mac系统安装 利用brew search查找mercurial ➜ ~ brew search mercurial 安装 ➜ ~ brew install mercuria Linux系统安装 sudo apt install mercurial 安装openjdk8 添加代理 一般在下载代码的时候都会很慢,故先配置好代理。我这里是V2Ray。 vim /usr/local/etc/mercurial/hgrc »

浅谈ElasticSearch架构以及集成

简介 Elasticsearch是一个高度可扩展的开源的分布式Restful全文搜索和分析引擎。它允许用户快速的(近实时的)存储、搜索和分析海量数据。它通常用作底层引擎技术,为具有复杂搜索功能和要求的应用程序提供支持。 以下是ES可用于的一些场景: 电商网站提供搜索功能:可使用ES来存储产品的目录和库存,并为它们提供搜索和自动填充建议。 收集日志和交易数据,并进行分析:可使用Logstash来收集、聚合和解析数据, 然后让Logstash将此数据提供给ES。然后可在ES中搜索和聚合开发者感兴趣的信息。 需要快速调查、分析、可视化查询大量数据的特定问题:可以使用ES存储数据,然后使用Kibana构建自定义仪表板,来可视化展示数据。还可以使用ES的聚合功能针对这些数据进行复杂的商业分析。 我们要认识一个人Doug »

Linux Rsync 增量同步与快速删除

增量同步 rsync [args] SRC [DEST] 情形:同时维护着两份不同的data_center,但以old_data_center为标准。因为权限的缘故没有开启rsync自动同步,只是每隔一段时间手动同步一下。SRC和DEST都是采用mount形式,如果每一次都完整地copy,耗时很长,这时候就想到采用增量同步的方法,因为两份data_center同时由不同人维护,所以内容略有不同,data_center同步的时候不光要完全同步old_data_center的所有内容,而且要删除自身多余的内容,保持完全一致。 »

@Transaction注解哪些情况不生效

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

一次性把多线程搞吐

1.什么是进程? 进程是系统中正在运行的一个程序,程序一旦运行就是进程。 进程可以看成程序执行的一个实例。进程是系统资源分配的独立实体,每个进程都拥有独立的地址空间。一个进程无法访问另一个进程的变量和数据结构,如果想让一个进程访问另一个进程的资源,需要使用进程间通信,比如管道,文件,套接字等。 2.什么是线程? 是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。 3.线程的实现方式? 1.继承Thread类 2. »

深入理解RocketMQ的设计

技术架构 architecture1.jpg" title="" />RocketMQ架构上主要分为四部分,如上图所示: Producer:消息发布的角色,支持分布式集群方式部署。Producer通过MQ的负载均衡模块选择相应的Broker集群队列进行消息投递,投递的过程支持快速失败并且低延迟。 Consumer:消息消费的角色,支持分布式集群方式部署。支持以push推,pull拉两种模式对消息进行消费。同时也支持集群方式和广播方式的消费,它提供实时消息订阅机制,可以满足大多数用户的需求。 NameServer:NameServer是一个非常简单的Topic路由注册中心,其角色类似Dubbo中的zookeeper,支持Broker的动态注册与发现。主要包括两个功能:Broker管理,NameServer接受Broker集群的注册信息并且保存下来作为路由信息的基本数据。 »

十分钟搞懂Lombok使用与原理

简介 Lombok是一款好用顺手的工具,就像Google Guava一样,在此予以强烈推荐,每一个Java工程师都应该使用它。Lombok是一种Java™实用工具,可用来帮助开发人员消除Java的冗长代码,尤其是对于简单的Java对象(POJO)。它通过注释实现这一目的。通过在开发环境中实现Lombok,开发人员可以节省构建诸如hashCode()和equals()这样的方法以及以往用来分类各种accessor和mutator的大量时间。 IntelliJ安装Lombok 通过IntelliJ的插件中心安装 最后需要注意的是,在使用lombok注解的时候记得要导入lombok.jar包到工程,如果使用的是Maven Project,要在pom.xml中添加依赖。 < »

配置文件@ConfigurationProperties读取List、Map参数

背景 在SpringBoot环境中,我们有“使用不完的”注解。这也是SpringBoot替代了传统的Spring项目中的xml配置的原因。在使用这些annotation的时候,我们一定要了解这些注解背后的原理以及约定。 package org.springframework.boot.context.properties; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java. »