自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(69)
  • 资源 (1)

转载 服务器性能指标(QPS/TPS/RT)

PVPV(page view)页面流浪量,作为评价网站流量最常用的指标之一。QPSQPS(Queries per second )每秒查询速率,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准,经常作为衡量服务器性能高低的标准之一。原理:每天80%的访问集中在20%的时间里,这20%叫做峰值时间。公式:(总PV数 * 80%)/(每天秒数 * 20%) = 峰值时间的每秒请求数(QPS)机器数:峰值时间的QPS / 单台机器的QPS = 需要的机器数(机器的QPS与其CP

2020-09-04 20:09:34 72

原创 snapshot依赖无法更新

今天遇到个问题,菜鸟的同事升级了 jar 包版本,但是只发布了部分库(如只发布了common,没发布client),我本地升级了对应的 jar 包版本,发现 client 相关的工具类丢失了,之后同事补充发布了 client,我本地尝试了 reload / invalidate 都不行,最后在师兄的指导下勾选 maven 的配置 Always update snapshots 选项后解决了。可能的原因是,snapshot更新一次之后就存在本地缓存里了,即使发布了新的内容,reload/invalidate

2020-09-02 15:13:52 47

原创 Spring Bean生命周期学习

目录1. 概述2. 相关注解3. Bean的生命周期流程图序列图4. 演示4.1 User.java4.2 MyBeanFactoryPostProcessor.java4.3 MyBeanPostProcessor.java4.4 MyInstantiationAwareBeanPostProcessor.java4.5 DemoApplication.java4.6 运行程序,查看运行结果文章参考地址,补充并优化了些内容1. 概述什么是Bean被称作 bean 的对象是构成应用程序的支柱

2020-08-24 16:22:31 38

原创 Spring自定义注解

目录Spring自定义注解1. 前言2. AOP3. 常用注解学习3.1 @Target3.2 @Retention3.3 @Documented3.4 @Order3.5 @Aspect4. 实现自定义注解4.1. 定义注解类4.2. 定义切面类4.3. 编写Controller4.4. 启动项目,查看结果Spring自定义注解1. 前言Spring的一个核心功能是IOC,就是将Bean初始化加载到容器中,Bean是如何加载到容器的,可以使用Spring注解方式或者Spring XML配置方式。Sp

2020-08-20 15:07:15 46

原创 二叉树所有路径

1. 二叉树的所有路径深度优先遍历(DFS),使用临时变量(这里使用StringBuilder,也可以使用String,但是String是不可变对象,+= 操作将new出多个String对象,影响效率)保存当前节点的值,当节点的左右子树不都为null时,递归调用,当节点左右子树都为null时,即递归到叶子节点,将临时变量的值保存。LeetCode链接public class LeetCode257 { public static List<String> binaryTreePath

2020-07-22 16:07:32 54

原创 写给自己看的设计模式之《观察者模式》

定义当对象之间存在一对多的关系时,被依赖的对象发生变化,需要通知到依赖它的所有对象。举个例子由于疫情的影响,各地的学校纷纷延迟了开学时间,延迟开学的消息由学校传达给老师和家长(不考虑由老师转发给家长的情况),具体的开学时间也是一样。这个例子中学校与老师和家长之间具有一对多的关系,学校的通知需要都通知到他们,结合观察者模式来code看看。首先定义被观察者:学校维护一个 Observer 的数组,老师和家长可以通过 registerObserver 方法注册;学校通过 publishNotice

2020-07-17 15:48:06 66

原创 初识RocketMQ
原力计划

目录简介使用创建 Producer 用例简介RocketMQ是一个纯Java、分布式、队列模型的开源消息中间件官网:http://rocketmq.apache.org/docs/quick-start/使用https://blog.csdn.net/autfish/article/details/89226461创建 Producer 用例package com.example.demo.service;import org.junit.Assert;import org.juni

2020-07-15 23:26:15 71

原创 MyBatis使用
原力计划

demo 地址:https://github.com/DKAngel/MyBatisDemo简介MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。可以通过XML或注解的方式来配置和映射原始类型、接口和 POJO为数据库中的记录。详见 MyBatis官方文档各ORM框架对比 MyBatis/Hibernate/JPA

2020-07-14 22:07:32 90

原创 单元测试Transactional自动回滚

使用 junit 进行单元测试,发现如下用例操作成功,但是数据库里没有新增数据,查看运行日志 Rolled back transaction for test,发现事物自动回滚了,通过 添加 @Rollback(value = false)强制提交事物。@Test@Transactional// @Rollback(value = false)public void insert() { String name = "dkangel"; userMapper.insert(name, "

2020-07-13 10:50:26 124

原创 UTF-8-BOOM

BOOM转自:https://www.cnblogs.com/flyingeagle/articles/9825302.htmlBOM(byte-order mark),即字节顺序标记,它是插入到以UTF-8、UTF-16或UTF-32编码Unicode文件开头的特殊标记,用来识别Unicode文件的编码类型对于UTF-8来说,BOM并不是必须的,因为BOM是用来标记多字节编码文件的编码类型和字节顺序(big-endian或little-endian)带BOM和不带BOM的区别UTF-8 和带

2020-06-24 17:14:20 90

原创 Java字母与数字互转

26个字母abcdefghijklmnopqrstuvwxyza-z: 97 - 122A-Z: 65 - 90小写转大写: char - 32‘a’ - 32 -> A大写转小写: char + 32‘A’ + 32 -> a获取字母的ACSII对应数字: 强转int (int) char(int) ‘a’ -> 97数字转字母:强转char (char) int(char) 97 -> a...

2020-06-23 11:26:16 140

原创 序列化与反序列化

序列化序列化:将对象写入IO流反序列化:从IO流中恢复对象意义:序列化是将对象转为字节序列,这些字节序列可以保持到磁盘,或通过网络传输。序列化使得对象可以脱离程序的运行而独立存在。使用场景:对象需要保存到磁盘对象需要进行网络传输具体实现实现 Serializable 接口Serializable是一个标记接口,不需要实现任何方法,实现该接口的类可以被序列化。序列化对象Demo该程序会将 user 对象序列化并保持到磁盘,后续读取文件并反序列化成 user 对象,并在控制台打

2020-06-19 14:04:45 73

原创 Map遍历与转换

目录遍历map的方式1. 遍历 key 或 value2. 使用 Iterator 遍历(可删除元素)3. 使用 entrySet 遍历(效率高于Lambda)4. 使用 Lambda 表达式方式选择String 转 Map (fasterxml)Map 转 StringIterator -> forEach(java5) -> Lambda(java8)遍历map的方式1. 遍历 key 或 value// 遍历keyfor (String key : map.keySet())

2020-06-18 16:44:55 98

原创 MySQL常用指令

登陆mysql -u root -p[pwd]登出\q创建数据库create database testdb;查询数据库show database;删除数据库drop database testdb;选择数据库use testdb;数据类型数值类型:int bigint float double decimal(小数值)日期类型:date(日期值) time(时间值) year(年份) datetime(混合日期) timestamp(混合日期,时间戳)字符串类型:char(

2020-06-15 16:24:57 86

原创 top命令使用浅析
原力计划

目录一. 命令参数二. 运行时命令参数三. 输出参数3.1 第一部分 系统信息栏3.1.1 第一行(top)3.1.2 第二行(Tasks)3.1.3 第三行(Cpus)3.1.4 第四行(Mem)3.1.5 第五行(Swap)3.2 第二部分 进程信息四. CPU文件top命令提供了实时监控CPU相关数据的能力一. 命令参数top [-] [d delay] [p pid] [q] [c] [C] [S] [s] [i] [n iter] [b] [u]d delay 每次刷新间隔,单位是秒

2020-06-11 17:15:52 81

原创 CountDownLatch的使用
原力计划

目录作用DemoCASAQS作用CountDownLatch类似于计数器,主要场景为线程需要在单个或多个线程执行完毕后再执行,例如:榨西瓜汁需要等准备好西瓜和准备好榨汁机后才能执行使用CountDownLatch之前需要先了解CAS、AQS的基本原理,参考CAS 以及 AQS 的实现原理DemoCountDownLatch内部维护了继承类AQS的类Sync,采用共享获取锁的机制,重写了tryAcquireShared、tryReleaseShared方法// 覆盖在共享模式下尝试

2020-06-08 15:38:58 60

原创 IDEA圈复杂度插件(MetricsReload)下载与使用

下载在 Plugins 搜索 MetricsReload 并下载,重启IDEA使用右键 - Analyze - Calculate Metrics选择要分析的文件,选Complexity metrics分析结果如下:ev(G) 基本复杂度是用来衡量程序非结构化程度的,非结构成分降低了程序的质量,增加了代码的维护难度,使程序难于理解。因此,基本复杂度高意味着非结构化程度高,难以模块化和维护。实际上,消除了一个错误有时会引起其他的错误。iv(G) 模块设计复杂度是用来衡量

2020-05-22 14:25:09 1037

原创 结合JVM解读浅拷贝和深拷贝
原力计划

java.lang.Cloneable和java.io.Serializable一样属于标记型接口,没有定义任何方法和属性。一个类想要使用克隆方法重写clone()方法,因为Object的clone()的修饰符是protected;@HotSpotIntrinsicCandidateprotected native Object clone() throws CloneNotSupportedException;实现Cloneable接口,否则会抛出CloneNotSupportedEx

2020-05-10 12:57:59 127

原创 equals使用及重写equals方法为什么要重写hashCode?
原力计划

equals的使用用来判断两个对象是否相等。类如果没有重写Object的equals方法,则比较的是对象在堆中的地址是否相等 “this == obj”类如果重写了equals方法,一般是用来比较对象的属性是否相等为什么要重写equals?为什么要重写equals方法?主要看使用场景,如果不需要进行对象比较旧不需要重写。举个栗子,用户要修改用户名,传了个User对象过来,此时从DB...

2020-05-07 22:45:16 74

原创 垃圾收集器分类及如何查看

垃圾收集器类型Serial 收集器单线程收集器,工作时必须停止其他所有线程,简单高效,适合Client模式下的虚拟机Serial Old 收集器Serial 收集器的老年代版本,同样也是单线程收集器ParNew 收集器Serial收集器的多线程版本,适合Server模式下的虚拟机。新生代采用复制算法,老年代采用标记-整理算法Parallel Scaveng...

2020-05-07 10:30:58 109

原创 写给自己看的设计模式之《策略模式》

定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换场景如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么使用策略模式可以动态地让一个对象在许多行为中选择一种行为一个系统需要动态地在几种算法中选择一种如果一个对象有很多的行为,如果不用恰当的模式,这些行为就只好使用多重的条件选择语句来实现优点算法可以自由切换避免使用多重条件判断。扩展性良好缺点...

2020-04-29 20:39:47 107 1

原创 IDEA集成Tomcat

IDEA集成Tomcat一. 安装Tomcat下载地址:https://tomcat.apache.org/download-90.cgi放到目录:D:\software\apache-tomcat-9.0.34 下二. IDEA配置Tomcat打开 Run -> Edit Configurations…配置Server配置Deployment如果不配置...

2020-04-29 16:41:23 109 1

原创 写给自己看的设计模式之《模板方法模式》

概念参考:https://blog.csdn.net/carson_ho/article/details/54910518定义一个模板结构,基于继承关系将具体内容延迟到子类去实现场景子类中公共的行为应被提取并集中到公共父类中,并按需扩展特别的方法,避免代码重复优点提高代码复用性 子类通用的方法可以抽成基类方法提高了拓展性 子类可以根据自己的特点动态实现方法反向控制 通过父类...

2020-04-28 10:05:15 81

原创 写给自己看的设计模式之《外观模式》

概念参考:https://blog.csdn.net/carson_ho/article/details/54910625定义一个高层、统一的接口,通过这个接口实现外部对子系统多个接口的访问场景为一个复杂的子系统对外提供一个简单的接口提高子系统的独立性客户程序与多个子系统之间存在很大的依赖性,系统间解耦,挺高独立性和可移植性在层次化结构中,可以使用外观模式定义系统中每一层的入口...

2020-04-27 11:10:33 61

转载 写给自己看的设计模式之《适配器模式》

一. 介绍即定义一个包装类,用于包装不兼容的对象包装类 = adapter被包装类 = adaptee1.1 场景系统需要复用现有类,而该类的接口不符合系统的需求多个组件功能类似,但接口不统一且可能会经常切换1.2 优点更好的复用性系统需要使用现有的类,而此类的接口不符合系统的需要透明、简单客户端可以调用同一接口,因而对客户端来说是透明的更好的扩展性在实现适配器...

2020-04-24 10:41:55 59

原创 写给自己看的设计模式之《工厂模式》

1. 简单工厂模式又称为静态工厂方法(Static Factory Method)模式,它属于创建型模式,专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。场景工厂类负责创建的对象比较少,不会造成业务逻辑太复杂客户端只知道传入工厂类的参数,对如何创建类并不关心优点实现了对责任的分割,工厂类负责创建产品对象,客户端负责“消费”即可,且不需要记住产品类的类名...

2020-04-24 09:35:23 58

原创 PostgreSQL数据库使用

安装下载安装配置环境变量,如:path中添加D:\software\PostgreSQL\bin使用登陆 psql -h localhost -U postgres -p 5432\?: 查看所有帮助\l: 查看所有数据库\c dataname: 切换数据库\dt: 查看所有自己创建的表\dt+: 查看所有自己创建的表,显示表的相关内容占的磁盘大小\dt(+) tabl...

2020-04-20 19:41:50 63

原创 记录一次查询调优过程

记录一次查询调优过程前提调优过程中使用explain命令查看执行过程,包括执行时间、扫描方式、是否用到索引等,EXPLAIN 使用浅析开启查询sql执行时间:\timing on关闭查询sql执行时间:\timing off一. 问题描述一个查询接口被频繁调用,且查询过程较慢二. 优化思路首先考虑优化SQL语句其次考虑优化业务代码最后考虑是否需要添加缓存机制...

2020-04-20 13:08:43 67

转载 写给自己看的设计模式之《设计原则》

设计原则转自:https://www.cnblogs.com/pony1223/p/7594803.html1. 单一职责定义一个类只负责一项职责优点降低类的复杂度,逻辑简单提高类的可读性,提高系统的可维护性降低变更风险,影响点较少2. 里氏替换原则定义任何基类出现的地方,子类一定可以出现。子类可以扩展父类的功能,但不能改变父类原有的功能继承的优点子类拥有...

2020-04-17 14:26:59 50

转载 写给自己看的设计模式之《单例模式》

单例模式单例模式实现方式很多:饿汉、懒汉、枚举、静态内部类等转自:https://www.jianshu.com/p/b8c578b07fbc为什么要用单例模式?场景 对于一些类(多为工具类)来说,整个系统中只需要一个实例就可以完成任务,比如:日志打印类、获取线程池类等优点系统只存在一个对象,可以节约系统资源,减少了频繁创建、销毁对象的开销,提高了系统性能。缺点如果实例...

2020-04-17 14:22:20 47

原创 数据库事物

何为数据库事物数据库事务(transaction)是一个或多个数据操作的集合,这些操作要么全部执行,要么全部不执行,是一个不可分割的工作单位。以begin开始,以commit或rollback结束。事物四个特征ACIDA(Atomicity) 原子性事物要么全都成功,要么全都失败回滚。C(Consistency) 一致性事物执行之前和执行之后都必须处于一致性状态,如A和B...

2020-03-31 18:59:31 70

原创 IDEA代理配置(插件无法下载)

IDEA无法下载插件,需要先配置代理快捷键打开设置:Ctrl + Alt + S,搜索proxy查看主机IPCMD — ipconfig — IPv4地址使用效果即可在plugin里下载插件

2020-03-29 10:08:51 1599

转载 gradle一个项目引用另一个项目的解决方法

一个gradle项目可能包含多个子项目,项目间的依赖是常见的情况。如何配置gradle,使其在构建过程中包括依赖项(子项目)?有两种情况:1.项目是一个根项目,依赖项位于其根目录下当依赖的项目位于目录结构的根目录下时(除了此项目之外,没有与其他项目共享依赖项),可以使用推荐的gradle策略来完成)目录结构:Project |--build.gradle |--settings....

2020-03-23 11:27:11 1225 1

原创 git commit状态简介(WIP/RFR)

git commit状态介绍WIP:Work In Process表示代码还在开发,暂时不能合入RFR: Ready For Review表示代码开发完毕,可以检视合入

2020-03-18 17:26:26 297

原创 idea报错: "cannot access xxx"

背景:项目迁库,将引用到其他项目的jar包copy到本项目中,发现IDEA报"cannot access xxx"的错误。

2020-03-16 12:01:17 788

原创 IDEA使用指导

写在前面:注1:社区版不支持很多功能,比如tomcat(需要付费版)注2:打开项目文件后,代码中出现红色波浪线,Add pom.xml文件后,问题依然没有解决。 原因可能是:没有安装maven、settings.xml文件不匹配IDEA鼠标显示问题:由于鼠标进入编辑区会变成黑色,导致不能很快找到鼠标解决方法:个性化 -> 更改鼠标...

2020-02-27 20:18:46 215

原创 批量图片转Base64编码

批量图片转Base64编码一切尽在代码中,Base64编码显示图片—踩坑笔记import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import j...

2019-12-21 15:48:52 644

原创 char类型数字转int

char类型数字强转int,输出的是对应的ASCII值,如 ‘9’ 对应的值是 57public static void main(String[] args) { System.out.println((int) '0' + " " + (int) '9');}结果:最简单的方法 char - '0'public static void main(String[] args...

2019-11-30 15:14:36 136 1

转载 重置账户密码后git报错

重置账户密码后,使用git会报如下错误remote: HTTP Basic: Access denied fatal: Authentication failed for "xxx你的远程仓库"解决方法重置git保存的账户信息进入本地仓库目录,右键点击git bash here, 输入如下指令git config --system --unset credential.helpe...

2019-11-23 15:05:26 49

原创 Java获取zip文件流

项目中经常遇到需要导出压缩文件的情况,需要压缩的数据来源有网络数据、静态资源,常见的导出场景有:操作日志、密钥文件的导出等。导出方案生成zip文件保存到磁盘,返回时读取文件内容需要考虑文件的生成策略,防止并发情况下文件冲突;文件的删除策略,无用文件及时删除,避免磁盘空间的浪费。保存到内存中,返回时从内存中读取二进制内容以流的形式传输数据,避免临时文件的生成,完成后关闭流,z...

2019-11-23 11:04:14 982

Java语言实现9大排序

冒泡排序、选择排序、插入排序、归并排序、希尔排序、快速排序、基数排序、桶排序、堆排序

2017-10-01

空空如也

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