自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

haozz的博客

万般皆下品,惟有读书高。

  • 博客(56)
  • 资源 (4)
  • 收藏
  • 关注

原创 读书笔记与心得

最近实在是忍不住,想把平时学习看书时的一些心得和体会记下来。想到什么写什么。关于各个知识点的讲解,不要仅限于当前书本的内容。可以查阅一下涉及该知识点的其他信息,这样不仅可以弥补当前书中的遗漏,更可以加深自己的理解。比如《Java并发编程之美》中对于AQS的讲解,虽然已经够完善了,但是其实对于tryReleaseShared共享方式尝试释放锁的描述,并没有体现出该方法返回的boolean值表示是...

2020-04-30 10:38:20 241

原创 Arthas使用心得

写在前面前两天工作中遇到一个线上问题,最终是用Arthas解决的,所以想写篇博客记录一下。虽然之前写过一篇Arthas的博客,但也只是简单的使用入门,没有结合实际业务场景讲一些高阶的用法(主要这次这个线上事故让人印象时刻)。再加上,感觉好久没写博客了,惭愧惭愧,记录一下。...

2022-01-10 23:27:17 267 1

原创 记录SecureRandom踩坑经历

背景上周工作中有个问题耽搁了很长时间,打算写个博客记录一下,算是一个小复盘。问题我们公司共有三个测试环境,暂且称为test1、test2、test3环境。有一个服务发布在test3环境可以正常使用,没有任何报错,但是发布在test2环境就会报错。代码都是一样的,刚开始是怀疑配置有问题,仔细检查之后没有任何问题。后来借助arthas定位到了问题在于SecureRandom。也是因为这个事情,也专门写了一篇博客记录下arthas的简单实用。SecureRandom使用随机数的话,一般会像这样:pub

2020-11-29 23:47:11 694 1

原创 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

2020-11-29 23:14:38 957

原创 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

2020-07-19 16:19:42 210

原创 记录一个volatile的问题

这里写自定义目录标题遇到一个关于volatile的问题,目前还未想到原因,先记录下来。关于volatile的含义及功能这里不多解释,直接上代码public class VolatileTestFlag { public static boolean FLAG = true; public static void main(String[] args) { Thread aThread = new Thread(new Runnable() {

2020-05-27 23:34:48 218

原创 canal学习笔记(应用案例)

canal学习笔记(应用案例)文章目录canal学习笔记(应用案例)一. 场景二.建立项目现在MySQL有了,canal服务也有了,就差canal的客户端了。客户端拿到数据可以进行业务处理,这里以java项目为案例。一. 场景以异构数据的同步为例,假设要将MySQL的数据存入redis和es中。以前的方法都是手动在MySQL更新完成后新增redis和es,现在利用canal监听MyS...

2020-04-05 01:15:38 627

原创 canal学习笔记(原理与环境搭建)

Canal学习笔记项目canal: [kə’næl]中文翻译为渠道,运河,管道是阿里开源的使用Java开发的用于MySQL数据库增量日志数据的订阅、消费和解析历史背景:早期阿里在杭州和美国双机房部署,存在跨机房数据同步的业务需求,实现方式主要是基于业务trigger(触发器)获取增量变更。从2010年开始,阿里逐渐尝试采用解析数据库日志获取增量变更进行同步,由此衍生出了canal项目...

2020-03-29 23:07:23 306

原创 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...

2020-03-29 21:04:04 1177

原创 Linux查日志小技巧

文章目录Linux查日志小技巧1.根据关键字查询指定文件2.根据多个关键字查询指定文件 - 或关系3.根据多个关键字查询指定文件 - 与关系4.统计日志中关键字出现的次数5.根据多个关键字统计日志中出现的次数 - 与关系Linux查日志小技巧 以下是一些Linux服务器下查日志的小技巧,为自己做一个记录 1.根据关键字查询指定文件grep '30015-c0a896...

2020-03-25 11:48:14 229

原创 DDD学习笔记 - 总结篇

19 | 总结(一):微服务设计和拆分要坚持哪些原则课程链接:https://time.geekbang.org/column/article/171185由于企业发展历程以及企业技术和文化的不同,DDD 和微服务的实施策略也会有差异。那么面对这种差异,应该如何落地 DDD 和微服务呢?微服务的演进策略在从单体向微服务演进时,演进策略大体分为两种:绞杀者策略和修缮者策略。...

2019-11-30 21:47:46 1382

原创 DDD学习笔记 - 实战篇(Ⅲ)

17 | 从后端到前端:微服务后,前端如何设计?课程链接:https://time.geekbang.org/column/article/169017微服务架构通常采用前后端分离的设计方式。作为企业级的中台,在完成单体应用拆分和微服务建设后,前端项目团队会同时面对多个中台微服务项目团队,这时候的前端人员就犹如维修电工一样了。面对如此多的微服务暴露出来的 API 服务,如何进行正...

2019-11-23 23:06:13 2027 1

原创 DDD学习笔记 - 实战篇(Ⅱ)

14 | 代码模型(下):如何保证领域模型与代码模型的一致性?课程链接:https://time.geekbang.org/column/article/166147DDD 强调先构建领域模型然后设计微服务,以保证领域模型和微服务的一体性,因此不能脱离领域模型来谈微服务的设计和落地。但在构建领域模型时,往往是站在业务视角的,并且有些领域对象还带着业务语言。还需要将领域模型作为微...

2019-11-16 21:06:45 1829

原创 DDD学习笔记 - 实战篇(Ⅰ)

11 | DDD实践:如何用DDD重构中台业务模型?课程链接:https://time.geekbang.org/column/article/163032一个传统企业中台建模的案例传统企业应用分析以保险行业的互联网电商和传统核心应用来做个对比分析。下面这张图,这两者在业务功能上会有很多相似和差异,这种相似和差异主要体现在四个方面。1. 核心能力的重复建设。由于销售同质保险...

2019-11-11 23:58:06 2354

原创 DDD学习笔记 - 进阶篇(Ⅱ)

09| 中台:数字转型后到底应该共享什么?课程链接:https://time.geekbang.org/column/article/159580中台是数字化转型的一个热门话题。继阿里提出中台概念后,很多人又提出了各种各样的中台。今天主要讨论业务中台和数据中台。作为企业数字化中台转型的整体,我也会顺带聊一聊前台和后台的一些设计思路。中台源于平台,但它的战略高度要比平台高很...

2019-11-02 14:54:08 1040

原创 DDD学习笔记 - 进阶篇(Ⅰ)

06 | 领域事件:解耦微服务的关键课程链接:https://time.geekbang.org/column/article/155444在事件风暴中,除了命令和操作等业务行为,还有领域事件,这种事件发生后通常会导致进一步的业务操作。领域事件用来白哦是领域中发生的事件。在实现业务解耦的同时,还有助于形成完整的业务闭环。例如,领域事件可以是业务流程的一个步骤,比如投保业务缴费完成后,触...

2019-10-31 19:27:12 2233

原创 DDD学习笔记 - 基础篇(Ⅱ)

04 | 实体和值对象:从领域模型的基础单元看系统设计课程链接:https://time.geekbang.org/column/article/152677实体和值对象,都是领域模型中的领域对象。实体:实体拥有唯一标识符,且标识符在历经各种状态变更后仍能保持一直。对于实体,重要的不是其属性,而是其延续性和标识,对象的延续性和标识会跨越甚至超出软件的生命周期。业务形态:领...

2019-10-26 09:59:44 1214

原创 DDD学习笔记 - 基础篇(Ⅰ)

最近在自学DDD(领域驱动设计),打算将学习笔记以博客的形式记录下来。---------------------------------------------------------------------------------------------------------------------------领域驱动设计DDD开篇词作为中台,需要将通用的可复用的业务能力...

2019-10-19 17:09:15 2490

原创 排序算法之快速排序

package com.example.demo.sort;import java.util.Arrays;/** * 快速排序 * 分治法: * 每一轮挑选一个基准元素,其他比它大的元素全部移动到右边,比它小的元素全部移动到左边 * 每一轮操作n次,一共需要logn轮,时间复杂度O(nlogn) * 重点在于: * 【基准元素 pivot 的选择】此例中取数组的第一个元素为...

2019-08-31 23:35:42 155

原创 排序算法之冒泡排序

package com.example.demo.sort;import java.util.Arrays;/** * 冒泡排序 * 相邻元素两两比较, * 每一路结束后会在队尾的有序区域多一个元素 * 一共需要遍历size-1轮 * 时间复杂度O(n²) */public class BubbleSortDemo { public static void ma...

2019-08-31 23:34:42 139

原创 ElasticSearch学习笔记Ⅱ - 基本概念与用法

一. 集群和节点一个集群是由一个或多个节点组成的集合。下面的三个节点就组成了一个集群。每一个集群都有一个默认的名字,这里默认是elasticsearch,我之前命名的集群名字是haozz。master、slave1、slave2是自定义的节点的名字,每一个节点都是能够存储数据、参与集群索引数据以及搜索数据的独立数据。二. ElasticSearch中的概念索引:含有相同属性的文档集...

2019-05-13 23:50:16 167

原创 ElasticSearch学习笔记Ⅰ - 安装

目前公司的项目中使用到了ElasticSearch,而自己之前虽然久闻ES大名,但也只是看了一些相关的杂乱的东西,所以很有必要系统地学习并梳理一下ElasticSearch的整个知识架构。推荐ES官方的QuickStart。一. 简介ElasticSearch是一个分布式、可扩展、实时的搜索与数据分析引擎,它能从项目一开始就赋予你的数据以搜索、分析和探索的能力。它基于Apache Lu...

2019-05-13 00:37:58 13280

原创 ThreadLocal学习

一. 概论多线程访问同一个共享变量时特别容易出现并发问题,特别是在多个线程需要对一个共享变量进行写入时。为了保证线程安全,一般使用者在访问共享变量时需要进行适当的同步,如下图所示: 同步的措施一般是加锁,这就需要使用者对锁有一定的了解,这显然加重了使用者的负担。那么有没有一种方式可以做到,当创建一个变...

2019-03-10 22:27:25 304

原创 JVM垃圾回收机制浅谈

一.前世今生可能很多人都把垃圾回收(GC)这项技术作为Java语言的伴生产物。其实GC的历史比Java久远,早在1960年的Lisp语言中就使用了内存动态分配和垃圾回收技术。二.哪些内存需要回收JVM的内存结构包括五大区域:程序计数器、虚拟机栈、本地方法栈、方法区、堆。其中程序计数器、虚拟机栈、本地方法栈这三个区域是线程私有的,他们随线程而生、随线程而死,所以这几个区域的内存分配...

2019-02-27 12:38:19 209

原创 开闭原则浅析

开闭原则(OCP):一个软件实体(类、模块、函数)都应该对扩展开放,对修改封闭。在软件的生命周期内,因为变化、升级和维护等原因都会对原有代码进行修改,可能给原有代码引入错误。此时应尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有代码来实现。看下面一个最简单的代码例子。package com.haozz.demo.fee;import org.springframework.ste...

2019-01-08 22:29:27 2660

原创 IntelliJ IDEA 安装及破解记录(version: 2017.3.4)

        IntelliJ IDEA是非常受欢迎的IDE,它的功能相当强大,不用再多说。上次换工作重新安装IDEA之后,就想着写一篇博客来记录一下安装和破解过程,免得每次都要百度找文章,一直拖到最近才有闲暇。提前声明一下,提倡正版,这篇文章仅供学习参考。        本次安装及破解的IntelliJ IDEA版本如下图:        大家可以到IntelliJ IDEA官网下...

2018-11-30 15:46:12 1610

原创 SpringBoot+ActiveMQ启动报错:'JmsAutoConfiguration did not match'问题分析

SpringBoot整合ActiveMQ,一切准备工作就绪之后,启动报错如下:java.lang.Object.wait(Native Method) java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:143) com.mysql.jdbc.AbandonedConnectionCleanupThread.run(Abando...

2018-11-16 18:30:49 7909 5

原创 Map底层之ConcurrentHashMap原理浅析

上一篇文章(HashMap原理浅析)讲解了HashMap的基本原理。这篇文章我们来看一下支持高并发的ConcurrentHashMap。HashMap是线程不安全的,在高并发场景下做插入操作没有可能出现环形链表(具体原理太过烧脑,这里不做分析)。想要避免HashMap 的线程安全问题,可以使用Collections.synchronized(map)方法进行同步化,但是性能比较低下。无论读...

2018-08-07 17:21:50 232

原创 Map底层之HashMap原理浅析

1.概述Map<k,v="">是常见的键值对存储接口,Java中存储键值对的数据类型都实现了这个接口,表示映射表。其中有两个核心操作get(Object key)和put(K key, V value),分别用来获取键对应的值以及向映射表中插入键值对。public interface Map<K,V> { ··· V get(Object key)...

2018-08-02 18:45:25 1013 1

原创 Java中extends一定代表继承吗?

Java中继承用哪个关键字表示?extends!没错,这是Java小学生都知道的常识。可是extends有没有别的含义呢?它在任何情况下都一定代表继承吗?不一定。我们知道Collections类有静态方法sort,用于List的排序,该方法要求List中的元素类必须实现Comparable接口。我们来看看源码:...@SuppressWarnings("unchecked")publ...

2018-07-18 11:10:25 1846

原创 Linux基础知识

Linux是一套免费使用和自由传播的类Unix操作系统,时下很多服务器都部署在Linux系统上,所以作为一名Java后端程序员必须了解基本的Linux知识。这篇博客就当作是我学习Linux的一个记录吧。一.从认识操作系统开始1.1-操作系统简介什么是操作系统,主要有以下四点:操作系统(Operation System,简称OS)是管理计算机硬件与软件资源的程序,是计算机系统的内核与基石;操作系统本...

2018-07-11 22:15:15 330 1

原创 layui中的switch开关

效果如下图:显然这个插件是一个checkbox,只是在layui中封装了。所以layui的js和css是必不可少的。Html代码:<form class="layui-form" action=""> <div class="layui-form-item"> <label class="layui-form-label"&gt

2018-07-05 14:04:46 19751

原创 Ajax之从头分析

      不管你有没有接触过ajax开发,它的大名你一定听说过。可以说,没有ajax技术,就没有现在欣欣向荣的web开发的景象。那么什么是ajax呢。ajax的全称为Asynchronous JavaScript and XML,中文翻译为异步的JavaScript和XML。ajax并不是某种语言,而是一种技术。即无需重新加载整个网页的情况之下更够更新部分网页的技术。正是因为ajax技术,网页才...

2018-06-29 01:04:31 1283 2

原创 使用layui模板填充页面数据

        layui,是一款采用自身模块规范编写的前端 UI 框架,遵循原生 HTML/CSS/JS 的书写与组织形式,门槛极低,拿来即用。其外在极简,却又不失饱满的内在,体积轻盈,组件丰盈,从核心代码到 API 的每一处细节都经过精心雕琢,非常适合界面的快速开发。layui 首个版本发布于2016年秋,她区别于那些基于 MVVM 底层的 UI 框架,却并非逆道而行,而是信奉返璞归真之道。准...

2018-06-26 15:20:48 18183

原创 Json转换工具类

Json字符串是常用的数据格式,下面提供一个Json转换的工具类,它其实也是基于jackson的:package com.csdn.myboot.utils;import com.fasterxml.jackson.core.JsonProcessingException;import com.fasterxml.jackson.databind.JavaType;import com.f...

2018-06-22 15:11:42 1225

原创 MyBatis插入数据返回主键

Service层:public int addUser(UserDomian user){ int i = userMapper.insert(user);}xml:<insert id="insert" parameterType="....UserDomain"> insert into t_user(user_name,password) ...

2018-06-22 14:18:54 760

原创 SpringBoot项目,访问任意接口提示Unauthorized,返回401,并跳转到登陆页面的错误

之前搭建了一个SpringBoot项目用于测试集成Redis和MyBatis以及Freemarker,搭建完成测通之后就没有再打开过。今天打开之后想要测试一个问题,发现在这个项目下无论请求哪个接口,浏览器都会跳转到一个登录页面,而且这个页面不是我写的,如下图: 地址栏里的login也是在我输入了自己的接口之后,自动变成了login 于是用Postman测试,得到401响应: 当时一脸...

2018-06-22 12:23:11 49684 18

原创 将代码上传到GitHub

作为全球最大的同性交友网站,GayHub是程序员们必须熟悉的。这篇文章记录一下自己第一次使用GitHub的经验。就以之前的文章SpringBoot配置全局异常捕获为例,将源码上传到GitHub上。网上有各种各样的GUI,我们今天不使用GUI,单纯使用命令行来完成上传GitHub的过程。首先,需要注册一个GitHub账号,并且新建一个仓库,这一步就没什么好说的了。 新建仓库之后,会跳转...

2018-06-20 18:05:34 791

原创 SpringBoot配置全局异常捕获

SpringBoot中自带的异常捕获机制返回的默认页面比较丑,对用户来说不够人性化。所以这篇文章来讲解SpringBoot钟自定义全局异常捕获。主要将三种异常捕获形式:页面跳转形式ajax形式统一返回异常的形式1.页面跳转形式首先新建一个异常:package com.haozz.exceptiondemo.controller;import org.spring...

2018-06-19 18:15:55 26036

原创 SpringBoot整合thymeleaf

freemarker和thymeleaf是模板引擎。在早前我们使用Struts或者SpringMVC等框架的时候,时间的都是jsp,jsp的本质其实就是一个Servlet,其中的数据需要在后端进行渲染,然后再在客户端显示,效率比较低下。而模板引擎恰恰相反,其中的数据渲染是在客户端,效率方面比较理想一点。前后端不分离的话用模板引擎比较好,前后端分离的话其实用处并不大很大。Spring官方比较推荐的是...

2018-06-19 12:23:28 37309 2

elasticsearch5.x-head-for chrome.zip

elasticsearch-head插件,支持chrome浏览器。直接在更多工具 - 扩展程序中拖入即可。

2019-05-12

sqlite3.exe

内嵌数据库轻量级管理工具,一般可用于SVN锁死之后清除操作日志。

2018-06-13

JSONView_for_Chrome

JSONView_for_Chrome,一款基于Chrome浏览器的JSONView在线格式化工具。

2018-06-06

CGLIB动态代理jar包

JDK动态代理必须提供接口才能使用,在一些不能提供接口的环境中,只能采用其他第三方技术,比如CGLIB动态代理,这里提供CGLIB动态代理的相关jar包,供学习和测试使用。

2018-05-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除