自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 收藏
  • 关注

原创 纯手写mybatis(注解版)

纯手写mybatis(注解版)实现思路:1.自定义注解2.利用动态代理操作目标对象3.利用反射绑定参数4.执行SQL语句项目结构图定义查询和插入接口,这里采用注解方式。定义一个SqlSession,采用动态代理来生成UserMapper接口的代理对象,待会要传入InvocationHandler的实现类。定义UserMapperInvocationHandler实现Invo...

2019-01-17 17:12:48 6609 10

转载 索引的工作原理及其种类以及B-/+Tree索引的性能分析

数据库索引是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引。为表设置索引要付出代价的:一是增加了数据库的存储空间,二是在插入和修改数据时要花费较多的时间(因为索引也...

2020-03-12 17:00:12 714

原创 一个注解搞定全局参数校验

一、引入maven依赖<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>...

2020-01-17 16:01:49 1050

原创 sourcetree重置到某次提交

1.重置到某次提交,选择强行合并。2.git强行推送,借助终端,git push -u origin <分支名> -f ,例如:master分支git push -u origin master -f。注意:master分支有保护,需要把master分支保护关闭,操作如下:a.进入所在项目的settings,点击进入Protected branches,点击unprotec...

2019-11-21 14:42:16 3816

原创 读书计划(2019.08.08-2019.09.09)

最近的一个月读书计划,重点突破Java基础模块。其中有两本书已经看完了,保持一个星期读一本书的速度,加油吧!

2019-08-08 00:09:23 239

原创 《Java并发编程实战》读书笔记

稍后

2019-08-05 18:21:37 190

原创 JVM调优实战

收到线上环境JAVA内存异常邮件,登录线上服务器查看异常日志:以下是分析OOM的原因与定位内存泄漏步骤:下载堆dump文件(文件比较大,需要一段时间) 利用jstack -l <pid>(进程id) > text.txt 将所有线程运行状态导入文件中,下载之后以便分析。 利用jdk自带的jvisualvm工具打开dump文件,这里也可以用MAT或者是JProfil...

2019-07-29 14:04:16 609 1

原创 推荐一篇写的非常好的JVM故障分析与调优博客

文章地址:https://www.javatang.com/archives/2017/10/19/33151873.html博主的JVM故障分析系列文章是我在网上看到的最好的JVM故障分析与调优的文章,强烈推荐!

2019-07-26 11:03:53 181

原创 《码农翻身》读书笔记

从今天开始写读书笔记,之前也读了很多书,开玩笑的说,这几年写代码赚的钱都用来买书了,一点都不夸张。记录一下这几年的成长。计划每个星期读一本技术书籍,加强理论知识,让知识形成一个体系。这本书用了大概1.5天的时候就读完了,之前是因为看了码农翻身的公众号才买了这本书。总的来说,这本书故事性很强,适合快速阅读。特点:作者把每个知识点都以故事的形式展现,比较生动有趣。 书中配了大量的插图...

2019-07-24 17:49:24 661

原创 图解HTTPS、对称加密、非对称加密原理

以图的方式更容易让人理解和记忆,下面通过几幅图片来了解一下对称加密、非对称加密以及https的原理。对称加密 a.加密和解密都是用同一个秘钥 b.加密、解密效率高 c.秘钥被窃取,容易造成数据不安全非对称加密 a.用公钥加密用私钥解密 b.加密、解密相对于对称加密效率更低,但是比对称加密更安全。 ...

2019-07-24 16:55:43 4544

原创 redis分布式限流的情况下,如果不能丢弃请求,那么被限流的请求如何处理?

问题思考?redis分布式限流的情况下,如果请求不能被丢弃,那么被限流的请求该怎么处理呢? 在大流量请求的情况下,如何保证接口的稳定性?网络上大部分讲关于分布式限流,都是用redis+lua来实现,被限流的请求都是直接丢弃,然后在前端给用户提示友好信息。这种做法当然没错,但是如果有一种业务场景不能丢弃请求,每个请求都有和业务相关的关键信息该怎么办呢?其实这时候就需要利用kafka+ao...

2019-07-18 14:56:17 755

原创 线上项目Java日志膨胀的解决方案

项目背景: 由于项目中使用了40多个定时任务,每个定时任务一个小时执行一次。这时候项目中产生的日志文件就非常多,特别占用磁盘空间。 先来看一下线上日志情况:为了更好的查找日志,刚开始的时候把每个日志的大小限制为2048M,每50个日志文件滚动一次,此时明显的看到所有的日志占用的磁盘空间为52G,已经快到零界点了。第一次优化: 将每个日志文...

2019-07-12 11:48:20 1244

原创 一次线上服务器cpu使用率超过1250%的排查与优化

项目背景: 将35家海外酒店的房型数据通过40个定时任务同步到本地mongodb,这里用了5台服务器来部署项目,mongodb采用分片集群部署。定时任务采用lts,一个小时同步一次所有数据。项目中用多线程按天来同步35家酒店的365天的数据,高峰期可能会同时存在几百个线程在同时处理任务,项目上线之后mongodb服务器就出现问题了。项目服务器部署架构:先来看一下运维反馈的服务...

2019-07-11 17:04:09 840

原创 springboot整合kafka集群

一、引入maven依赖:<!--kafka支持--><dependency> <groupId>org.springframework.kafka</groupId> <artifactId>spring-kafka</artifactId> <version>1.3.6.RELEA...

2019-07-10 18:17:22 1115

原创 kafka+zookeeper+kafka-manager集群部署(集群版)

服务器规划172.25.62.100 172.25.62.101 172.25.62.102 zookeeper1 zookeeper2 zookeeper3 kafka1 kafka2...

2019-07-10 17:38:50 1013

原创 mongodb高可用分片集群搭建(集群版)

从图中可以看到有四个组件:mongos、config server、shard、replica set。mongos,数据库集群请求的入口,所有的请求都通过mongos进行协调,不需要在应用程序添加一个路由选择器,mongos自己就是一个请求分发中心,它负责把对应的数据请求请求转发到对应的shard服务器上。在生产环境通常有多mongos作为请求的入口,防止其中一个挂掉所有的mongodb...

2019-07-08 16:30:21 2477 2

原创 最实用的linux命令

一、查找java日志的linux命令(假设日志文件为test.log)1.关键字搜索less -n test.log,+/关键字2.查找到的关键字高亮显示cat test.log | grep -C '关键字' --color3.将按关键字查找到的日志的尾部30行输入到text.txt文件(适合超大的日志文件)grep -C 30 '关键字' test.log...

2019-06-21 17:45:57 846

原创 Java forEach 改变多个属性时的Lambda写法

第一种写法(改变一个属性时):fees.forEach(fee -> fee.setCheckInDate(perCheckIn));第二种写法(改变多个属性时,一个入参时括号可以省略):fees.forEach((fee) -> { fee.setCheckInDate(perCheckIn); fee.setAmount(fee.getLocalAmou...

2019-05-31 16:42:37 5355

原创 巧用设计模式,提升代码逼格

首先,来思考一个场景(以下单为例)。如果一个下单的请求,调用的服务比较多,也就是一个请求的调用链比较长,这时候该怎么去设计我们的程序?实现的方法多种多样,比较low的方法就是把所有服务调用都写到一起,这是不推荐的,巧用设计模式瞬间提高你代码逼格。一个电商的下单流程一般包括,订单参数校验、调用第三方服务下单、保存订单到本地数据库、保存订单操作日志等等操作。下面用代码来模拟一下这个流程。一,创...

2019-05-26 21:33:48 656

原创 mybatis代码自动生成工具之maven插件mybatis-generator-maven-plugin(mybatis逆向工程)

mybatis自动代码生成工具maven插件可以帮助我们轻松的生成pojo、dao、mapper.xml文件,相比于mybatis-generator等其他方式方便许多,话不多说,上代码先看一下整体操作图一、引入maven依赖<dependencies> <dependency> <groupId>org...

2019-05-23 13:00:39 4063 2

原创 单元测试使用多线程遇到的坑

单元测试是不支持多线程的,主线程结束之后,不管子线程有没有结束,都会强制退出。但是我们可以通过控制主线程结束的时间来做多线程测试。话不多说,上代码/** * @Author: guandezhi * @Date: 2019/5/13 12:47 */@RunWith(SpringJUnit4ClassRunner.class)@SpringBootTest(classes = {A...

2019-05-13 13:11:13 3754

原创 Java8 Lambda表达式和Stream流处理,看这篇就够了

Java 8提供的Lambda表达式和Stream能够帮我们简化代码,让我们可以写出更优雅、简洁的代码。话不多说,上代码/** * @Author: guandezhi * @Date: 2019/5/9 17:38 */public class LambdaTest { public static void main(String[] args) { L...

2019-05-09 20:45:59 3381

原创 集合排序,看这篇就够了

Comparator接口中的compare方法用来对集合排序时,需要注意排序的结果是升序排序还是降序排序,话不多说,上代码1.第一种情况:/** * @Author: guandezhi * @Date: 2019/5/9 10:11 */public class ComparatorDemo { public static void main(String[] arg...

2019-05-09 00:18:53 331

原创 jdbc批处理+手动事务+多线程实现81秒插入1000万数据(多线程版)

现在来试试多线程能够多少秒钟插入千万数据 /** * @Author: guandezhi * @Date: 2019/4/13 15:35 */public class JdbcUtils { private static String url = "jdbc:mysql://localhost:3306/user?useSSL=false&rewriteBa...

2019-04-15 13:28:37 3137 4

原创 jdbc批处理+手动事务实现170秒插入1000万数据(单线程版)

jdbc批处理加上手动开启事务,能够实现170秒左右插入千万级别的数据/** * @Author: guandezhi * @Date: 2019/4/13 15:35 */public class JdbcUtils { private static String url = "jdbc:mysql://localhost:3306/user?useSSL=false&am...

2019-04-13 18:16:03 828

原创 冲击阿里P7

金三银四正是求职的黄金季节,最近也在看一些机会。人生就要不断的尝试,即使是失败了也是一种宝贵的经验。阿里巴巴P7面试坐标:广州 阿里游戏 笔试(一个小时) 1.设计实现 LRU cache2.手写程序,将整型按字节倒置输出3.将字符串拆分合并,按字典顺序输出4.数据库中有2000w数据,redis只能存20w,如何保证redis中的都是热点数据5.L...

2019-03-29 13:37:01 1285

原创 超简单的springboot自动配置原理分析

springboot自动配置确实帮我们省去了配置上的麻烦先看一下手动配置的繁琐:/** * @Author: guandezhi * @Date: 2019/3/19 20:53 */@Configurationpublic class DataSourceConfig { @Value("${spring.datasource.user.driveClassNam...

2019-03-19 22:20:41 1830

原创 springboot+分包,实现多数据源切换和事务管理(靠谱版)

说明:之前写的这篇springboot+aop+自定义注解,实现多数据源切换(通用版)经过测试有些发现事务无法管理,有时候切换数据源容易失败,现在用一种更靠谱的方式来实现多数据源切换。一.引入相应的maven依赖<dependency> <groupId>org.springframework.boot</groupId> <artifact...

2019-03-15 16:49:14 3548

原创 一段代码讲透Java所有编程规范(精华版)

本文参考了《代码整洁之道》,《阿里巴巴编程规范》,《华为编程规范》以及大量优秀的源码总结而来。简洁,优雅的代码根本不需要一行注释。先看一下重构之前和之后的代码对比:这是一段根据条件查询订单列表的代码,咋一看好像没有什么问题。但是,一个个来讲其中的问题。/** * @Author: guandezhi * @Date: 2019/3/11 22:30 */@Servicepu...

2019-03-12 00:44:05 1064 4

原创 springboot+aop+自定义注解,打造通用的全局异常处理和参数校验切面(通用版)

一.引入相应的maven依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId></dependency><dependency> <g...

2019-03-11 15:29:58 2804

原创 Excel导入导出工具类(完整版)

ExcelUtil工具类package com.gdz.excel.util;import java.io.*;import java.lang.reflect.Field;import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.*;import org.apache.poi...

2019-03-09 13:46:46 28790 19

原创 keepalived+mycat+mysql实现高可用主从架构(集群版)

一.下载mysql wget http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5.6.33-linux-glibc2.5-x86_64.tar.gz

2019-03-08 09:22:54 3367 1

原创 springboot+swagger2+aop打造通用日志切面(通用版)

一.引入swagger2相应的maven依赖<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional></dependency&...

2019-03-05 21:47:40 2293 1

原创 idea调试技巧总结,快速提升开发效率,超级实用(高效版)

1.远程调试 说明:一般公司的环境都会分为开发环境,测试环境,预生产环境和生产环境。测试环境发现的问题,除了查看日志之外,还可以用远程调试,这样能快速定位问题。 1.服务端配置(以springboot启动为例): java -jar -Dserver.port=9006 -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,...

2019-03-04 01:43:20 1916 2

原创 springboot+aop+自定义注解,实现多数据源切换(有坑版)

一.新建springboot项目,引入相应的maven依赖。<dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId></dependency><dependency> <groupId...

2019-03-03 14:02:21 2017 8

原创 zookeeper+dubbo+springboot实现高可用服务治理(集群版)

一.搭建zookeeper集群(必须大于3台服务器,小于三台不能启动)1.下载安装zookeeper wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz #下载地址2. 修改配置文件 /home/dubbo/zoo/zookeeper-3.4.13 #...

2019-02-24 21:40:13 3877 1

原创 基于nginx+xxl-job+springboot高可用分布式任务调度系统实战(集群版)

一.安装部署XXL-JOB调度中心 一.下载源码: https://github.com/xuxueli/xxl-job http://gitee.com/xuxueli0323/xxl-job 二.如下图所示,修改配置文件, a.执行sql文件 tables_xxl_job.sql b.修改数据库地址三.部署xxl-job-admin到两台两台服务器...

2019-02-22 22:00:00 7562 9

原创 nginx+keepalived简单双机主从热备(集群版)

目标: 主nginx 172.25.62.101 从nginx 172.25.62.102 虚拟ip 172.25.62.115 一.安装nginx1.安装nginx相关依赖(如果已经安装请跳过) mkdir /home/nginx #新建nginx目录 a.安装gcc gcc-c++ yum install -y gcc gcc-c++ b.安装P...

2019-02-18 17:55:13 433

原创 redis cluster集群以及整合springboot(集群版)

一.创建文件夹说明:这里用一台服务器模拟reids cluster 集群,集群的端口号从8001-8006表示6个不同的redismkdir /usr/local/redis-cluster #创建集群文件目录cd /usr/local/redis-cluster/ #进入集群文件目录mkdir -p 8001/data 8002/data 8003/data 8004/data 8...

2019-02-16 01:42:33 18489 15

原创 一主两从加哨兵模式搭建redis集群(集群版)

一.安装redis1.下载redis安装包 wget http://download.redis.io/releases/redis-3.2.9.tar.gz2.解压redis tar -zxvf redis-3.2.9.tar.gz3.安装redis cd redis-3.2.9 make cd src make install PREFIX=/usr/loca...

2019-02-15 19:45:10 671

空空如也

空空如也

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

TA关注的人

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