摘要:常用maven私服 中央仓库 阿里云 OSSRH settings.xml 模板一 <?xml version="1.0" encoding="UTF-8"?> <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="h 阅读全文
posted @ 2021-02-25 23:48 kancy 阅读(44) 评论(0) 推荐(0) 编辑
摘要:PowerMock是一个Java模拟框架,用于解决测试问题。 举个例子,你在使用Junit进行单元测试时,并不想让测试数据进入数据库,怎么办?这个时候就可以使用PowerMock,拦截数据库操作,并模拟返回参数。 Quick Start 1.引入maven依赖 <dependency> <group 阅读全文
posted @ 2020-11-01 23:57 kancy 阅读(326) 评论(1) 推荐(0) 编辑
摘要:一个人如果抱着义务的意识去读书,便不了解读书的艺术。——林语堂《生活的艺术》 整理了下这两年的书目并列举出来,此举主要的目的是督促自己,同时与诸君分享。 阅读全文
posted @ 2020-09-02 17:00 kancy 阅读(234) 评论(0) 推荐(0) 编辑
摘要:1.创建一个OSS账户 去注册 去登陆 2.创建一个项目 在oss上创建一个项目,并且根据经办人的指示,完成后续操作。 groupId可以选择:io.github.username、com.gitee.username,如果你有自己的网站可以用自己的domain。 3.安装并配置GPG 3.1安装 阅读全文
posted @ 2020-08-15 16:10 kancy 阅读(1195) 评论(0) 推荐(0) 编辑
摘要:步骤 1)top命令找出应用 pid-app 2)top -Hp <pid-app>命令找出线程 pid-thread 3)printf '%x\n' <pid-thread>命令将线程 pid 转换成 16 进制 pid-thread-hex 4)jstack <pid-app> | grep ' 阅读全文
posted @ 2020-08-10 16:14 kancy 阅读(420) 评论(1) 推荐(0) 编辑
摘要:1.什么情况不适合创建索引? 列的离散程度不高:即使创建了索引,也不会走索引,因为需要额外的回表操作,它的cost可能会比全表扫表更高。 不经常查询的字段:创建索引会占用额外的存储开销、性能开销。 频繁更新的字段:频繁更新会导致频繁页分裂,需要迁移数据,会降低性能。 字段数据占用空间过大:会导致索引 阅读全文
posted @ 2020-08-08 20:14 kancy 阅读(392) 评论(0) 推荐(0) 编辑
摘要:MySQL 一条查询SQL语句的执行过程? 建立连接 查询缓存:开启查询缓存功能会按照sql报文作为key,查询缓存。 解析器:生成词法语法解析树。 预处理器:语义的校验,例如表名,字段名是否正确。 查询优化器:生成多套执行计划,并计划cost,花费最小的为最终的查询计划。 执行器:执行查询计划,会 阅读全文
posted @ 2020-08-08 19:30 kancy 阅读(281) 评论(0) 推荐(0) 编辑
摘要:1.建议使用有序的自增ID作为主键 MySQL InnoDB 引擎底层数据结构是 B+ 树,所谓的索引其实就是一颗 B+ 树,一个表有多少个索引就会有多少颗 B+ 树,mysql 中的数据都是按顺序保存在 B+ 树叶子节点上的(所以说索引本身是有序的)。 主要目的有三个: 提高范围查询效率; 增加排 阅读全文
posted @ 2020-08-08 18:50 kancy 阅读(1263) 评论(1) 推荐(0) 编辑
摘要:目录 一、Debug开篇 二、基本用法&快捷键 三、变量查看 四、计算表达式 五、智能步入 六、断点条件设置 七、多线程调试 八、回退断点 九、中断Debug 阅读全文
posted @ 2020-08-05 16:10 kancy 阅读(237) 评论(0) 推荐(0) 编辑
摘要:从遇到问题开始 当人们要做一个软件系统时,一般总是因为遇到了什么问题,然后希望通过一个软件系统来解决。 比如,我是一家企业,然后我觉得我现在线下销售自己的产品还不够,我希望能够在线上也能销售自己的产品。所以,自然而然就想到要做一个普通电商系统,用于实现在线销售自己企业产品的目的。 再比如,我是一家互 阅读全文
posted @ 2020-08-03 13:21 kancy 阅读(424) 评论(0) 推荐(1) 编辑
摘要:了解一些 RabbitMQ 的实现原理也是很有必要的,它可以让你在遇到问题时能透过现象看本质。 比如一个队列的内部存储其实是由5个子队列来流转运作的,队列中的消息可以有4种不同的状态等,通过这些可以明白在使用 RabbitMQ 时尽量不要有过多的消息堆积,不然会影响整体服务的性能。 存储机制 Rab 阅读全文
posted @ 2020-07-30 00:43 kancy 阅读(630) 评论(0) 推荐(0) 编辑
摘要:Caffeine简介 Caffeine是基于JAVA 1.8 Version的高性能缓存库。Caffeine提供的内存缓存使用参考Google guava的API。Caffeine是基于Google Guava Cache设计经验上改进的成果。 进程缓存与Map之间的本质区别就是能自动的回收存储的元 阅读全文
posted @ 2020-07-19 08:46 kancy 阅读(251) 评论(0) 推荐(0) 编辑
摘要:本文主要分析为什么TIME_WAIT状态的持续时间是2MSL而不是1MSL,3MSL或其它的时长,而不会详细描述为什么需要TIME_WAIT状态。 阅读本文需要的预备知识: 了解TCP协议的状态变迁; 了解TCP拆链的四次挥手过程; 了解为什么需要TIME_WAIT状态。 其实这个问题在《TCP/I 阅读全文
posted @ 2020-07-14 10:11 kancy 阅读(519) 评论(0) 推荐(0) 编辑
摘要:当我们需要在项目中配置多个Redis、MongoDB、DB、RabbitMQ、Kafka时,往往我们的做法是自定一个配置类,然后参考官方的自动配置类进行部分配置。 这种做法虽然可以实现多数据源,但是随着版本迭代,可能兼容性不太好。 下面介绍如果利用Spring Boot 子容器 (Spring 工厂 阅读全文
posted @ 2020-07-13 13:34 kancy 阅读(297) 评论(0) 推荐(0) 编辑
摘要:TCP协议是可靠的,数据包一定会到达(99.9%的情况下),而且是按顺序到达。 TCP是“流”协议,所谓“流”协议,就是没有界限,没有分割的一串数据。TCP会根据缓冲区实际情况进行划分,一个完整的包可能会拆分成多个包进行发送,也有可能把多个小包封装成一个大的数据包发送,这就是TCP粘包/拆包。 发生 阅读全文
posted @ 2020-07-10 23:38 kancy 阅读(1095) 评论(0) 推荐(0) 编辑