Arthas使用心得 写在前面前两天工作中遇到一个线上问题,最终是用Arthas解决的,所以想写篇博客记录一下。虽然之前写过一篇Arthas的博客,但也只是简单的使用入门,没有结合实际业务场景讲一些高阶的用法(主要这次这个线上事故让人印象时刻)。再加上,感觉好久没写博客了,惭愧惭愧,记录一下。...
记录SecureRandom踩坑经历 背景上周工作中有个问题耽搁了很长时间,打算写个博客记录一下,算是一个小复盘。问题我们公司共有三个测试环境,暂且称为test1、test2、test3环境。有一个服务发布在test3环境可以正常使用,没有任何报错,但是发布在test2环境就会报错。代码都是一样的,刚开始是怀疑配置有问题,仔细检查之后没有任何问题。后来借助arthas定位到了问题在于SecureRandom。也是因为这个事情,也专门写了一篇博客记录下arthas的简单实用。SecureRandom使用随机数的话,一般会像这样:pub
Arthas简单使用 目录背景安装1、下载Arthas2、启动3、常用命令3.1、dashboard3.2、thread3.3、thread id3.4、 thread -b3.4、thread -n 53.5、 stack 全类名 方法名3.6、 trace 全类名 方法名3.7、 monitor 全类名 方法名背景上周在工作中遇到了一个bug,在服务器上可以复现,但是本地调试无法复现。于是想到了arthas,觉得有必要简单写一篇博客记录下arthas的简单使用。安装1、下载Arthas直接在服务器上:wget h
JVM调优 JVM调优原生命令jvisualvmjps:查看所有java应用及进程idjmapjmap -histo PID: 查看内存信息、实例个数jmap -heap PID: 查看堆信息(各个分代空间的大小)jstackjstack 进程id | grep -A 行数 16进制的线程idjinfojinfo -flags PID: 查看JVM启动参数jinfo -sysprops PID:查看JVM启动系统参数jstat功能:可以查看堆内存各部分的使用量,以及加载类的数量命令格式:js
记录一个volatile的问题 这里写自定义目录标题遇到一个关于volatile的问题,目前还未想到原因,先记录下来。关于volatile的含义及功能这里不多解释,直接上代码public class VolatileTestFlag { public static boolean FLAG = true; public static void main(String[] args) { Thread aThread = new Thread(new Runnable() {
读书笔记与心得 最近实在是忍不住,想把平时学习看书时的一些心得和体会记下来。想到什么写什么。关于各个知识点的讲解,不要仅限于当前书本的内容。可以查阅一下涉及该知识点的其他信息,这样不仅可以弥补当前书中的遗漏,更可以加深自己的理解。比如《Java并发编程之美》中对于AQS的讲解,虽然已经够完善了,但是其实对于tryReleaseShared共享方式尝试释放锁的描述,并没有体现出该方法返回的boolean值表示是...
canal学习笔记(应用案例) canal学习笔记(应用案例)文章目录canal学习笔记(应用案例)一. 场景二.建立项目现在MySQL有了,canal服务也有了,就差canal的客户端了。客户端拿到数据可以进行业务处理,这里以java项目为案例。一. 场景以异构数据的同步为例,假设要将MySQL的数据存入redis和es中。以前的方法都是手动在MySQL更新完成后新增redis和es,现在利用canal监听MyS...
canal学习笔记(原理与环境搭建) Canal学习笔记项目canal: [kə’næl]中文翻译为渠道,运河,管道是阿里开源的使用Java开发的用于MySQL数据库增量日志数据的订阅、消费和解析历史背景:早期阿里在杭州和美国双机房部署,存在跨机房数据同步的业务需求,实现方式主要是基于业务trigger(触发器)获取增量变更。从2010年开始,阿里逐渐尝试采用解析数据库日志获取增量变更进行同步,由此衍生出了canal项目...
Java中的二进制运算 Java中的二进制运算比特bit,信息量的最小单位,符号b,二级制中的一位数字节byte,表示信息的最小单位,符号B。计算机中的所有数据以字节为单位。 1byte = 8bit1.按位与 & 参与运算的两个数据,按二进制位进行与运算。相同位上两个都为1,结果才为1。1&1=1、1&0=0、0&1=0、0&0=0。 14&3=2...
Linux查日志小技巧 文章目录Linux查日志小技巧1.根据关键字查询指定文件2.根据多个关键字查询指定文件 - 或关系3.根据多个关键字查询指定文件 - 与关系4.统计日志中关键字出现的次数5.根据多个关键字统计日志中出现的次数 - 与关系Linux查日志小技巧 以下是一些Linux服务器下查日志的小技巧,为自己做一个记录 1.根据关键字查询指定文件grep '30015-c0a896...
DDD学习笔记 - 总结篇 19 | 总结(一):微服务设计和拆分要坚持哪些原则课程链接:https://time.geekbang.org/column/article/171185由于企业发展历程以及企业技术和文化的不同,DDD 和微服务的实施策略也会有差异。那么面对这种差异,应该如何落地 DDD 和微服务呢?微服务的演进策略在从单体向微服务演进时,演进策略大体分为两种:绞杀者策略和修缮者策略。...
DDD学习笔记 - 实战篇(Ⅲ) 17 | 从后端到前端:微服务后,前端如何设计?课程链接:https://time.geekbang.org/column/article/169017微服务架构通常采用前后端分离的设计方式。作为企业级的中台,在完成单体应用拆分和微服务建设后,前端项目团队会同时面对多个中台微服务项目团队,这时候的前端人员就犹如维修电工一样了。面对如此多的微服务暴露出来的 API 服务,如何进行正...
DDD学习笔记 - 实战篇(Ⅱ) 14 | 代码模型(下):如何保证领域模型与代码模型的一致性?课程链接:https://time.geekbang.org/column/article/166147DDD 强调先构建领域模型然后设计微服务,以保证领域模型和微服务的一体性,因此不能脱离领域模型来谈微服务的设计和落地。但在构建领域模型时,往往是站在业务视角的,并且有些领域对象还带着业务语言。还需要将领域模型作为微...
DDD学习笔记 - 实战篇(Ⅰ) 11 | DDD实践:如何用DDD重构中台业务模型?课程链接:https://time.geekbang.org/column/article/163032一个传统企业中台建模的案例传统企业应用分析以保险行业的互联网电商和传统核心应用来做个对比分析。下面这张图,这两者在业务功能上会有很多相似和差异,这种相似和差异主要体现在四个方面。1. 核心能力的重复建设。由于销售同质保险...
DDD学习笔记 - 进阶篇(Ⅱ) 09| 中台:数字转型后到底应该共享什么?课程链接:https://time.geekbang.org/column/article/159580中台是数字化转型的一个热门话题。继阿里提出中台概念后,很多人又提出了各种各样的中台。今天主要讨论业务中台和数据中台。作为企业数字化中台转型的整体,我也会顺带聊一聊前台和后台的一些设计思路。中台源于平台,但它的战略高度要比平台高很...
DDD学习笔记 - 进阶篇(Ⅰ) 06 | 领域事件:解耦微服务的关键课程链接:https://time.geekbang.org/column/article/155444在事件风暴中,除了命令和操作等业务行为,还有领域事件,这种事件发生后通常会导致进一步的业务操作。领域事件用来白哦是领域中发生的事件。在实现业务解耦的同时,还有助于形成完整的业务闭环。例如,领域事件可以是业务流程的一个步骤,比如投保业务缴费完成后,触...
DDD学习笔记 - 基础篇(Ⅱ) 04 | 实体和值对象:从领域模型的基础单元看系统设计课程链接:https://time.geekbang.org/column/article/152677实体和值对象,都是领域模型中的领域对象。实体:实体拥有唯一标识符,且标识符在历经各种状态变更后仍能保持一直。对于实体,重要的不是其属性,而是其延续性和标识,对象的延续性和标识会跨越甚至超出软件的生命周期。业务形态:领...
DDD学习笔记 - 基础篇(Ⅰ) 最近在自学DDD(领域驱动设计),打算将学习笔记以博客的形式记录下来。---------------------------------------------------------------------------------------------------------------------------领域驱动设计DDD开篇词作为中台,需要将通用的可复用的业务能力...
排序算法之快速排序 package com.example.demo.sort;import java.util.Arrays;/** * 快速排序 * 分治法: * 每一轮挑选一个基准元素,其他比它大的元素全部移动到右边,比它小的元素全部移动到左边 * 每一轮操作n次,一共需要logn轮,时间复杂度O(nlogn) * 重点在于: * 【基准元素 pivot 的选择】此例中取数组的第一个元素为...
排序算法之冒泡排序 package com.example.demo.sort;import java.util.Arrays;/** * 冒泡排序 * 相邻元素两两比较, * 每一路结束后会在队尾的有序区域多一个元素 * 一共需要遍历size-1轮 * 时间复杂度O(n²) */public class BubbleSortDemo { public static void ma...