自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

bruce128的专栏

更多的时候是在排查解决问题

  • 博客(245)
  • 资源 (1)
  • 收藏
  • 关注

原创 InnoDB底层存储结构探秘

B+树是应文件系统所需而出的一种B-树的变型树。一棵m阶的B+树和m阶的B-树1)有n棵子树的节点中含有n个关键字(即每个关键字对应一棵子树);2)所有叶子节点中包含了全部关键字的信息, 及指向含这些关键字记录的指针,且叶子节点本身依关键字的大小自小而大顺序链接;3)所有的非终端节点可以看成是索引部分,节点中仅含有其子树(根节点)中的最大(或最小)关键字4)除根节点外,其他所有节点中所含关键字的个数必须>=⌈m/2⌉(注意:B-树是除根以外的所有非终端节点至少有⌈m/2⌉棵子树)上图是所示为一棵3阶的。

2022-11-27 17:00:17 473

原创 业务架构浅谈

一、序章  一般的工程师接触到的是 应用架构 ,传统的MVC分层架构、事件驱动架构等等。第一次接触业务架构这个概念是在来到商品发布团队之后。商品发布是一个业务属性很重的系统,承载了淘宝、天猫、盒马、魅力惠、汽车、虚拟、SCM自营、苹果、村淘、公益、教育等诸多业务(业务多的围起来可以绕地球一圈)的商品发布功能。头半年对“业务架构”还是很懵逼的,随着慢慢的熟悉业务,研究框架代码,才对我们的业务架构.........

2022-07-13 16:44:47 4550 6

原创 redis rdb持久化源码分析

毕业7年后一直是Java选手,第一次这么认真的看C的源码。一、 redis的持久化方式redis是支持持久化的内存数据库(memcached不支持持久化)。其持久化的方式有两种,aof和rdb。rdb是一种快照式(snapshot)的持久化,直接把redis的内存整体写入磁盘文件。触发rdb持久化有两种方式,直接客户端调用bgsave命令或者固定时间内的写命令达到配置文件里的配置触发rdb持久...

2020-02-24 07:14:50 421

原创 JDK1.8 JVM运行时数据区域划分

一、JDK1.8 JVM内存模型概览这里介绍的是JDK1.8 JVM内存模型。1.8同1.7比,最大的差别就是:元数据区取代了永久代。元空间的本质和永久代类似,都是对JVM规范中方法区的实现。不过元空间与永久代之间最大的区别在于:元数据空间并不在虚拟机中,而是使用本地内存。二、各区域介绍1. 程序计数器每个线程一块,指向当前线程正在执行的字节码代码的行号。如果当前线程执...

2018-02-26 20:53:55 54692 47

原创 剖析金额不能用浮点数表示的原因

近期支援双十一红包项目。参与到了一个涉及到钱的项目,开发自然十分的谨慎。先抛出我有问题的代码,作用是把以分为单位的金额转成以元为单位的字符串。long adjustFee;String.valueOf(adjustFee / 100.0);  很自信的以为这行代码简洁明了的完成了使命。@壹双 同学review了我的代码后,指出这段代码会造成精度丢失的问题。先演示一个demo,构造一个浮点数丢失精度

2016-09-13 21:28:52 8377 9

原创 《CSAPP》读书笔记:面向高速缓存编程

计算机发展初期,CPU是和主存直接交互。但是随后CPU的速度越来越快,甩了主存几十条街。这时候Intel的提出了一个解决方案——在CPU和主存中插入高速缓存(cache)。于是现代计算机的存储层次结构衍生成了下图的样子,图片源于《CSAPP》一书    CPU需要读数据,会首先访问L1 Cache, 如果Hit miss,就去请求L2 cache。如果L2 Cache hit miss,那么...

2016-06-09 15:49:49 3519

原创 字符串的公共前缀对Mysql B+树查询影响回溯分析

年前项目组接微信公众号。上线之后,跟微信相关的用cid列的查询会话的SQL变慢了几十倍!思考这个问题思考了很久,从出现以来一直是我心头的一个结。cid这一列是建了索引的,普通的cid列更新都没问题,为何只有微信的有问题?相同的前缀又是如何影响索引的? 分析过程 1.explain下微信cid的查询,微信的cid会以mid-qqwanggou001为前缀插入数据...

2016-03-15 09:39:30 5261 10

原创 编码规范经验谈

接手3.0的项目接近两个Q,在阅读了这些代码的基础上开了一些新功能。对我们项目组的核心工程的代码有些批判的想法,现在拿来跟大家分享一下。计算机巨匠 Donald Kunth(《计算机程序设计的艺术》系列作者)有一句名言:程序是写给人看的,只是偶尔让机器执行一下。言辞颇为偏激,但是至少强调了一点,代码的可读性是十分重要的。一个大型的项目,一般会有10-20次的产品迭代,就我们IM这个可以做到

2016-01-25 10:53:19 1546

原创 No value specified for parameter 15排查过程

mybatis打印出的SQL的问号有30个,而下面的参数只有29个。一次写两条记录,一条有值一条没值,再排查对应字段的typehandler。, 那一定是15(从0号开始)号位的参数缺失。如果参数为空,直接return了。

2022-09-09 11:14:50 399

原创 用typehandler优雅的解决枚举类型的读写

表字段是码值的时候,一般会有一个枚举(enum)类对应。我们可以把DO类的对应字段定义为枚举类型,用mybatis的typehandler来处理读写。通过枚举类强管控码值的变化,就不会随着时间的推移,代码的可读性和可维护性大大降低了。5 insert或者update的时候需要在字段后面带上typehandler。1 枚举字段类型定义, 我们的目标是直接把这个类型入库,并正确的读取出来。这样做之后,就只需要维护枚举类型,数据库字段和DO类的注释都不需要了。2 typehandler定义, 需要继承。

2022-08-19 17:35:52 227

原创 全链路参数透传

背景现在的系统大多是基于SOA的分布式应用。跨服务调用的时候,存在线程上线文里的重要信息如traceId,租户id无法传递给下一个应用。要解决的问题内部系统通过RocketMQ交互时,traceId如何透传到消息消费应用内部系统通过Dubbo调用时, traceId如何透传到服务提供方解决方案1 rocketMQ异步透传解决方案发消息时,通过切面拦截 DefaultMQProducer.send 方法,将traceId从threadLocal写入Message的properties里面

2022-03-28 10:40:12 2104

原创 MacOS Monterey根路径下创建目录的办法

Monterey版本根路径下创建文件夹apps,提示只读文件系统➜ / mkdir appsmkdir: apps: Read-only file system按以下方式可以解决:关机以安全模式启动mac,具体方法见Apple官方文档 https://support.apple.com/zh-cn/HT201262。M1芯片和X86芯片的安全模式启动方法不一样。找到终端工具,并执行 csrutil disable关掉mac的sip机制重启电脑查看sip,发现已被禁用。但是此时依旧无法

2022-02-12 15:44:22 2727

原创 deploy父项目的pom文件

在父项目下执行deploy时,会把整个项目所有子模块都deploy到私服,包括web模块。在deploy后加 -N可以解决mvn deploy -Dmaven.test.skip=true -N-N 的解释-N,–non-recursive Do not recurse into sub-projects不会递归到子项目里执行当前命令...

2022-02-10 17:48:13 584

原创 Mac更换SSD笔记

我的MacbookPro是2015款15寸的,256GB,用了将近5年,最近越发觉得容量不够用。准备材料m.2到苹果的SSD转接卡,淘宝上20一个m.2接口nvme协议的固态盘,我的是三星的970Evo 1TB规格拆机工具,两把螺丝刀,买转接卡配套带的提前把Mac用time machine备份到另一个硬盘上换硬盘用5角螺丝刀拆开后盖,灰特别重,用卫生纸稍微擦下灰尘,用六角螺丝刀卸下原装的固态盘。先把新的固态盘和转接卡连接好,要听到咔嚓一声响,否则,一会儿开机会遇到屏幕显示带问号的文

2020-12-03 13:28:38 853

原创 人脸识别DEMO

前言写了一个用摄像头捕捉人脸匹配已知人脸的算法。包含两个主要的过程,人脸捕捉和人脸匹配。用的是github上的开源库 face_recognition。Recognize and manipulate faces from Python or from the command line with the world’s simplest face recognition library.这个人脸识别库号称天下第一简洁。使用前进行安装pip3 install face_recognition还

2020-07-08 17:57:40 703

原创 redis aof持久化源码分析

redis的aof持久化方式有两个重要的组成部分增量写命令同步到磁盘aof文件全量重写一、增量同步1. 增量写命令追加到缓冲区redis有个缓冲区,未被写入磁盘的命令首先被存入缓冲区,达到条件后再写入磁盘struct redisServer { // sds 是redis定义的char数组 sds aof_buf; /* AOF buffer, written bef...

2020-02-29 20:17:52 532 2

原创 spring bean初始化耗时统计

spring bean 的生命周期实例化(instantiate), 用构造器创建一个对象字段赋值(populate)初始化(initialize), 执行bean配置里的init方法或者InitializingBean#afterPropertiesSet方法销毁(destruct)实例化和字段赋值一般都很快,但是一些重型的bean被IOC容器创建时,需要调用远程服务或者执行耗时的...

2020-02-20 23:30:06 2428 3

原创 antlr简单表达式语言入门

一、基本介绍antlr是一款适合拿来开发领域特定语言(DSL)的工具。它可以根据开发人员定义的词法和文法生成词法分析器(lexer)程序,语法分析器(parser)程序。如果没有antlr这样的工具,就要自己写底层的词法分析,语法分析,语义分析,中间代码生成等复杂的工作。antlr降低了dsl开发的复杂度。ANTLR (ANother Tool for Language Recognitio...

2020-02-18 13:18:51 1417

原创 dubbo服务导出的本质

当注册中心是zookeeper的时候,服务导出其实是在/root/interface/providers下创建一个临时节点,这个节点的路径就是服务的url。而取消注册就是将该节点删除。 // 服务注册 @Override public void doRegister(URL url) { try { // 创建临时节点 zkCl...

2020-01-08 11:24:04 355

原创 dubbo扩展点的延迟加载机制

dubbo的架构是微内核+插件(dubbo里是扩展,extension)的形式,现代操作系统、maven、Spring等都是这个架构,其优点是易于扩展。通常微内核不带有业务功能,而是负责完整的生命周期里的流程的执行和业务组件的容器。任何原有的功能都可以重新按自己的业务需求定制化。dubbo启动时,并不会加载所有的扩展到内存方法区,而是要用的时候再加载。dubbo的延迟加载时动过一种动态代理的方式...

2020-01-07 18:23:43 679

原创 Hadoop MapReduce 入门实例

一、准备工作从hadoop官网下载了最新的3.1.2版本的hadoop配置hadoop相关的环境变量export HADOOP_HOME=/work/dev_tools/hadoop-3.1.2export PATH=$HADOOP_HOME/bin:$PATHexport HADOOP_CLASSPATH=${JAVA_HOME}/lib/tools.jar二、MapReduc...

2019-09-04 03:15:27 196

原创 Mybatis只有接口没有实现类的原理

问题背景mybaits相对于Ibatis的一大区别就是,不用自己写接口实现类。Ibatis的实现类十几年来做着重复的工作,拼接statementId,然后执行sql。十分没有营养的代码。mybaits干脆不用手工写实现类了,框架帮我们完成了这件事情。实现原理mybatis使用了动态代理技术生成实现类。动态代理的具体手段有两种:jdk自带和cglib。对比jdk自带cglib...

2019-08-19 23:49:17 3603

原创 应用部署技术发展简史

互联网企业生产环境的应用部署,大致分三个阶段。单物理机部署多个应用,虚拟机部署,容器化部署。一、物理机部署时代这是所有早期物联网公司必然经历的一个阶段。一台服务器,至少32核CPU、64G内存,如果只部署一个应用,那就太浪费了。于是,多个应用进程,DB,缓存进程等等都部署在同一个机器上。这种部署方式有一个最大的痛点:进程间资源抢占。如果一个进程耗用了100%的CPU资源,其他的进程无法...

2018-07-13 01:19:09 2438 3

原创 Java程序员的第一个Python小程序:京东畅销书榜爬虫

毕业后的5年多时间里一直在Java的生态系统里游走,很少触碰其他非Java技术栈。职业安全感隐隐的警告我不能一直停留在自己的舒适区里。时下最火的莫过于AI, 而AI时代带火了Python,那就学学Python。学习一门技术最好的方法是:learning by doing. 在实践中学习。我选择了爬虫作为自己的第一个练手小项目。爬的是京东的计算机与互联网图书销量榜。 html结构分析 ...

2018-06-09 00:16:53 2759 8

原创 计算机术语对照表

看Java框架的外文文档有一段时间了,积累了一些计算机专业术语(terminology)。同时在学习机器学习,也积累了一些机器学习相关的专业术语。这些都不包括普通的英语词汇。分享一下,有不对之处还请诸君指正。后面会定期更新约定大于配置:Convention over configurationMkdir : “make directory” 的缩写词。ECMA:这个组织的目标是评估,开发...

2018-05-28 00:27:38 11145

原创 Reflections框架,类扫描神器

一、 项目背景我们的工程是一个很大的插件化架构的工程。实现某个接口或者带有特定注解的类,都视为一个插件。系统启动前,要在工程依赖的所有的jar包中,扫描指定接口或注解的全部子类,并做进一步的处理。二、 Reflections框架简介 Reflections one-stop-shop object Reflections scans your classpath, inde...

2018-05-20 23:32:35 6452

原创 借助Jackson的JsonTypeInfo注解实现多态类的解析

一、问题背景Jackson的对json字段的序列化和反序列化默认策略是根据getter和setter方法,去掉get和set,再把首字母小写,便找到了对应的字段。通常情况,我们都是对普通的POJO进行serialization/deserialization。那么如果遇到了解析抽象类呢?如何定位到对应的实现类?实现类都找不到,谈何匹配到对应的字段反序列化。二、JsonTypeInfo 注解...

2018-05-13 13:51:54 26012 11

原创 Office Open XML 单元格<c>格式详解

  在前一篇文章提到过用SAX解析excel文件,仅提取数据部分。SAX技术过于底层,直接读XML文件,并要求开发者对于XML的格式了如指掌。poi框架官方给的用SAX解析的demo里仅解析了字符串和数字类型的单元格,其他类型的单元格并未解析。此外,excel文件里的xml信息很多,如果开发者想解析其他的内容呢?一、ECMA-376标准  Office 2007以后,微软公司使用Off...

2018-04-13 22:49:00 4342 4

原创 当你用idea起应用起不来,控制台有没有明显日志的时候

idea下tomcat起不来,控制台没输出异常堆栈。这个时候可以找localhost日志文件。在控制台搜索“IntelliJIdea”: 然后进入这个路径: 打开localhost文件: 搞了一个多小时才解决这个问题,分享下解决办法。...

2018-03-14 21:40:44 4259 1

原创 excel文件写性能优化

一 问题背景  通过POI框架生成excel文件的时候,一般选用的是XSSFWorkbook类。用这个类生成excel文件时,文件的所有数据均会存放在内存当中,包括cell对象,cellType对象等等。如果数据少的话,内存还能撑得住,但是超过了万行级别,内存就会被打爆。POI框架开发者直到3.8版本才提供了SXSSFWorkbook类用以解决这个问题。 Since 3.8-beta3...

2018-02-23 10:25:46 4713 5

原创 用SAX优化读excel文件的内存消耗

一 问题背景  一直在跟进excel的商品批量发布功能。去年大促前的半个月时间里用户频繁上传excel文件,导致线上机器频繁fullGC。虽然没有OOM,但是一直对吃内存问题耿耿于怀。通过堆dump分析,发现主要是poi框架的类实例耗用内存太大。poi框架的开发者也意识到了这个问题,通过提供比较底层的事件模式,解决吃内存的问题。 The SS eventmodel package is...

2018-02-06 21:39:20 2314 2

原创 Spring Boot + Velocity 极简demo

1. 首先加入需要的maven依赖parent> groupId>org.springframework.bootgroupId> artifactId>spring-boot-starter-parentartifactId> version>1.3.7.RELEASEversion>parent>dependency> groupId>org.spr

2018-01-28 23:16:25 2175

原创 java删除文件夹的方法

先看File.delete()的方法api文档 Deletes the file or directory denoted by this abstract pathname. If this pathname denotes a directory, then the directory must be empty in order to be dele

2018-01-16 10:53:48 56288 13

原创 修改默认的excel单元格样式

两种方式可以实现这种功能:方案一、 在xl/worksheet/sheet*.xml下增加一个cols子节点这个节点从第一列到最后一列,style指向同一个单元格样式&lt;cols&gt; &lt;col min="1" max="16384" style="23" width="8.0" customWidth="false"/&gt;&l

2018-01-01 22:56:40 3072

原创 《docker in acton》读书笔记:存储卷

存储卷定义 存储卷是一种数据分割和共享的工具。适用于持久化数据或者容器间共享数据镜像适合打包和分发相对静态的文件,如程序,程序的配置文件;存储卷则持有动态的或专门的数据,如日志,数据库。存储卷的类型绑定挂载存储卷:这种存储卷使用物理机上的文件系统docker管理卷:Docker守护进程会在物理机上创建一个存储空间,并有docker守护进程自己管理绑定挂载存储卷docker命令:docke

2017-12-30 21:10:19 994

原创 POI框架开发经验小结

POI框架使用了一段时间,总结下自己的使用经验。POI框架介绍 Apache POI是Apache软件基金会的开放源码程序库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。1. 07版excel行的上限2的20次方,超过这个值会报错2. 下拉列表能包含的最多字符个数下拉列表能包含的最多字符个数256个,超了就不显示。如果下...

2017-12-24 21:30:18 6403

原创 RPC框架中服务的注册与发现

RPC框架中有3个重要的角色:注册中心 :保存所有服务的名字,服务提供者的ip列表,服务消费者的IP列表服务提供者: 提供跨进程服务服务消费者: 寻找到指定命名的服务并消费注册中心维持着一个服务配置中心节点树:服务提供者启动时,会将其服务名称,ip地址注册到配置中心。服务消费者在第一次调用服务时,会通过注册中心找到相应的服务的IP地址列表。当消费者调用服务时,不会再去请求注册中心,而是直

2017-12-19 00:00:07 2269

原创 DockerFile方式构建docker镜像

构建docker镜像有两种方式:commit和DockerFile。commit方式构造的镜像对用户不透明,你不知道作者在父镜像基础上做了什么改动。DockerFile的方式符合Infrastructure As Code的思想,通过这份文件你清楚的知道作者对父镜像做的变动。用DockerFile文件构建docker镜像一 demo程序class HelloDocker {

2017-12-03 22:46:48 1025

原创 docker学习笔记

一 docker资源docker官网:https://www.docker.com/mac版客户端官网下载链接: https://www.docker.com/docker-macdocker官方文档: https://docs.docker.com/get-started/part2/#build-the-appdocker hub: https://hub.docker.com/explore/

2017-11-26 23:49:05 354

原创 java.io.NotSerializableException: java.util.ArrayList$SubList

今天和同事联调一个接口,抛未序列化异常。异常直接指向List类,我的第一反应是List的泛型类没有实现Serializable。Caused by: java.io.NotSerializableException: java.util.ArrayList$SubList at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.

2017-11-18 23:04:22 5189

archetype-catalog

archetype-catalog.xml

2016-10-18

空空如也

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

TA关注的人

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