- 博客(60)
- 资源 (5)
- 收藏
- 关注
原创 MySQL Explain执行计划key_len详解(特意针对date和datetime详细测试说明)
我们在使用Explain查看SQL执行计划时,其中有一列为key_kenkey_len表示使用的索引长度,那么key_len的长度是如何计算的?对于复合索引,通过key_len可以看出sql使用了复合索引的哪几个字段。日期&时间类型的字段长度(根据版本有变化,单独说明)查看db版本信息 select version() from dual;
2022-09-01 20:08:46
802
1
原创 常见限流算法(固定or滑动窗口、漏桶、令牌桶)
限流可以认为服务降级的一种,限流就是限制系统的输入和输出流量已达到保护系统的目的。一般来说系统的吞吐量是可以被测算的,为了保证系统的稳定运行,一旦达到的需要限制的阈值,就需要限制流量并采取一些措施以完成限制流量的目的。比如:延迟处理,拒绝处理,或者部分拒绝处理等等。...
2022-08-12 09:23:54
750
原创 源码解析springbatch的job是如何运行的?
JSR-352标准定义了Java批处理的基本模型,包含批处理的元数据像 JobExecutions,JobInstances,StepExecutions 等等。完善的基础组件Spring Batch 有很多的这类组件 例如 ItemReaders,ItemWriters,PartitionHandlers 等等对应各类数据和环境。丰富的配置JSR-352 定义了基于XML的任务设置模型。Spring Batch 提供了基于Java (类型安全的)的配置方式可伸缩性。...
2022-08-12 09:22:17
516
原创 开源MyBatisGenerator组件源码分析
至此,一个标准的Java文件完成组装、文件生成。回头看,整个思路其实很简单,读取db信息、加工成内部标准格式数据、通过数据生成DO/Mapper。但复杂的是,去适配不同的配置模式,动态的组装、拼接。Generato只能做code生成吗?再想想还可以做什么?拿到db信息后,进一步生成service接口、controller接口)表信息一定要连DB吗?从DDL文件中读?从ERM读?进而扩展到,在源头上管理表结构和JavaDO的映射)...
2022-08-12 09:20:39
214
原创 【疑难杂症】springboot新版本中使用springbatch的stepscope功能-引出bean注册报错
scope="step"defined in BeanDefinition defined in class path resourceThere is already [Generic bean: class
2022-04-19 16:06:39
1088
原创 IDEA自定义liveTemplates(方法模板、类模板)
IDEA自定义liveTemplates(方法模板、类模板)前言,搞这个模板有何意义? 降低大家写方法注释的成本,统一风格。有时候不是开发同学不爱写注释,而是没有合适的载体和空间。IDEA模板设置入口模板设置入口: Preferences | Editor | Live Templates一、方法注释快速生成设置第一步点击➕号,增加模板,并设置快捷键为’ff’,作用域为Java文件模板内容/** * $description$ $params$ * @return {@link $r
2021-06-23 15:00:56
527
原创 MySQL建表DDL规范(欢迎补充)
MySQL建表DDL规范(欢迎补充)基本规范:表名和字段名全大写,一般表名以T开头脚本需支持可重复执行,带IF NOT EXISTS ,但不可带DROP语句字符集使用utf8mb4 (CHARSET = utf8mb4 collate utf8mb4_unicode_ci)脚本文件使用无BOM的UTF-8编码,否在会导致乱码普通表,使用T开头,例如T_ACCOUNT参数表,使用T_PARA开头,例如T_PARA_GENRAL_CONFIG批量业务使用的表,使用T_BATCH开头,如T_BA
2021-06-22 20:10:07
322
原创 2500-使用MyBatis操作MySQL进行批量更新的踩坑点‘multi-statement not allow‘
原则上一条SQL只更新一条数据库操作,但有时需要批量操作数据,特别是一些DML语句,在操作数据库时,数据库会报出异常,不允许混合语句,此时需要额外配置进行兼容。例如:Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server versio.
2020-12-14 11:07:36
2543
1
原创 15分钟搭建RocketMQ源码调试环境
目录下载源码导入IDEA新建文件夹,存放配置、日志、消息体等内容应用启动测试消息的生产和消费附录1下载源码下载源码,github页面选择(rocketmq-all-4.7.1)版本压缩包,https://github.com/apache/rocketmq/tags导入IDEA使用IDEA打开工程后,修改pom.xml文件中无关内容去除maven-gpg-plugin、maven-failsafe-plugin插件使用IDEA的maven编译整个项目,(clean compile ins
2020-12-14 11:04:02
147
原创 Java中进行加解密导致oom(频繁创建BouncyCastleProvider)
现象使用Java原生库的加解密工具类时,随着加解密次数的增加,应用内存持续升高,并且无法通过GC进行内存回收,最终导致OOM原因罪魁祸首就是BouncyCastleProvider这个对象下面是网上博客中常见的rsa加解密实现public static byte[] decryptByPrivateKeyMobile(byte[] encryptedData, String privat...
2019-09-03 13:48:46
1811
原创 springboot应用启动停止脚本
deploy.sh#!/bin/bashjarbag=yourspringbootname-*.jarprocessname=yourspringbootnameecho $(whoami)#[ $(whoami) != username ] && echo "用户限定不对" && exit 0jartype=$(echo $jarbag|awk...
2019-08-04 21:41:53
879
转载 linux查看用户登录时间以及命令历史
1、查看当前登录用户信息who命令:who缺省输出包括用户名、终端类型、登陆日期以及远程主机。who /var/log/wtmp可以查看自从wtmp文件创建以来的每一次登陆情况(1)-b:查看系统最近一次启动时间(2)-H:打印每列的标题users命令:打印当前登录的用户,每个显示的用户名对应一个登陆会话。2、查看命令历史每个用户都有一份命令历史记录查看$HOME/.bash...
2019-08-04 21:40:40
1787
转载 CentOS 显示历史执行过的命令以及用户历史命令缓存文件
1、history命令用于显示历史执行过的命令执行 history命令能显示出当前用户在本地计算机中执行过的最近 1000 条命令记录。如果觉得 1000 不够用,还可以自定义/etc/profile 文件中的HISTSIZE 变量值。在使用 history 命令时,如果使用-c 参数则会清空所有的命令历史记录。2、使用“!编码数字”的方式来重复执行某一次的命令。[root@bigdat...
2019-08-04 21:39:35
1302
原创 追根溯源之mysql查看binlog
一、开启binlog日志:vi编辑打开mysql配置文件# vi /usr/local/mysql/etc/my.cnf在[mysqld] 区块设置/添加 log-bin=mysql-bin 确认是打开状态(值 mysql-bin 是日志的基本名或前缀名);重启mysqld服务使配置生效# pkill mysqld# /usr/local/mysql/bin/mysqld_safe...
2019-07-03 16:24:55
494
原创 mysql事务相关概念和操作
改变当前db:use DBnamexxx;MYSQL 事务处理主要有两种方法:1、用 BEGIN, ROLLBACK, COMMIT来实现BEGIN 开始一个事务ROLLBACK 事务回滚COMMIT 事务确认2、直接用 SET 来改变 MySQL 的自动提交模式:SET AUTOCOMMIT=0 禁止自动提交SET AUTOCOMMIT=1 开启自动提交查看事务隔离级别...
2019-07-03 16:24:16
128
原创 MqSQL排查问题的常用命令
查看mysql数据库的锁– 查看数据库的锁show OPEN TABLES where In_use > 0;– 查看具体的锁信息 可看到锁的表、空间、分页、数据SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS;– 查看锁之前互相等待的情况SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCK_WAITS...
2019-07-03 16:21:17
187
原创 DDLsql脚本规范以及操作流程
大家好:如下是经过讨论确认后的发版DDLsql脚本规范以及操作流程,自10.22日正式实施;请各开发模块负责人对组内成员及时宣导ddlsql脚本的规范,谢谢!一.开发提供ddl脚本,脚本取名需包括ddl前缀,模块名,版本编号;脚本取名不允许有中文;sql脚本在sql内容之前需要添加备注信息,需注明模块,库名,影响的表,对应业务版本号,操作说明,开发联系人;一个脚本,内容涉及范围只能是一个...
2019-07-03 16:20:48
1974
原创 2710-数据库操作OLAP、OLTP的介绍和比较
2710-数据库操作OLAP、OLTP的介绍和比较OLTP与OLAP的介绍数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。OLAP是数据仓库系统的主要应用,支持复...
2019-07-03 16:14:36
199
原创 数据库常见汇总
存储引擎一些常用命令查看MySQL提供的所有存储引擎mysql> show engines;可以查看出 MySQL 当前默认的存储引擎是InnoDB,并且在5.7版本所有的存储引擎中只有 InnoDB 是事务性存储引擎,也就是说只有 InnoDB 支持事务。查看MySQL当前默认的存储引擎我们也可以通过下面的命令查看默认的存储引擎。mysql> show variable...
2019-07-03 16:13:24
110
原创 Sharding-JDBC相关
分库分表中间件 Sharding-JDBC Sharding-Sphere(Sharding-JDBC Sharding-Proxy Sharding-Sidecar(TBD))http://shardingsphere.io/document/current/cn/overview/https://github.com/sharding-sphere/sharding-sphere版本 ...
2019-07-03 16:12:01
352
原创 写脚本创建分表(存储过程和like关键字)
分表存储过程CREATE TABLE tb_demo_credit (id varchar(255) NOT NULL,batch_id_inline varchar(255) DEFAULT NULL,field1 varchar(255) DEFAULT NULL,field2 varchar(255) DEFAULT NULL,field3 varchar(255) DEFAUL...
2019-07-03 16:01:15
270
原创 笔记《java并发编程的艺术》
并发2.1 volatile定义:Java编程语言允许线程访问共享变量,为了确保共享变量能被准确和一致地更新,线程应该确保通过排他锁单独获得这个变量。Java语言提供了volatile,在某些情况下比锁要更加方便。如果一个字段被声明成volatile,Java线程内存模型确保所有线程看到这个变量的值是一致的。关键字volatile可以用来修饰字段(成员变量),就是告知程序任何对该变量的访问...
2019-07-03 15:52:49
118
原创 [模板功能]欢迎使用CSDN-markdown编辑器
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...
2019-07-03 15:50:42
129
原创 2500-使用MyBatis操作MySQL进行批量更新的注意事项
目录1. 数据库连接加参数2. 连接池需要配置原则上一条SQL只更新一条数据库操作,但有时需要批量操作数据,特别是一些DML语句,在操作数据库时,数据库会报出异常,不允许混合语句,此时需要额外配置进行兼容。例如:Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error i...
2019-02-15 19:11:26
155
原创 Mybaits源码浅析--简单select语句执行流程
目录Mybaits 源码分析框架入口调用流程断点调试Mybaits 源码分析基于mybatis-spring-boot-starter 1.3.1分为3个包mybatis-spring-boot-starter-1.3.1.jarmybatis-spring-boot-autoconfigure-1.3.1.jar 主要是作为springboot的starter,用于初始化MyBa...
2019-02-15 19:07:51
230
原创 2539-SpringSecurity系列--在有安全验证的情况下做单元测试Test
在有安全验证的情况下做单元测试Test版本信息<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId>
2018-07-24 20:18:19
5092
原创 2537-springsecurity系列--关于session的管理2-session缓存和共享
版本信息<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version&
2018-07-24 20:17:58
1525
原创 2536-springsecurity系列--关于session管理1
版本信息<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.14.RELEASE</version>
2018-07-24 20:17:34
1972
2
原创 2535-springsecurity系列--关于授权角色“ROLE”前缀的问题
版本信息<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.14.RELEASE</version>
2018-07-24 20:16:44
6627
1
原创 2511-Druid监控功能的深入使用与配置-如何记录监控数据(基于logback)
Druid的监控很强大,但可惜的是监控数据是存在内存中的,需求就是定时把监控数据记录下来,以日志文件的形式或者数据库入库。记录两种方式:数据库入库logback形式记录3. 原理(重点)如果仅仅想记录sql的监控,可以自己重写DruidDataSourceStatLogger的log方法,这个方式是Druid记录日志的默认接口,在此略过。使用内部接口,直...
2018-06-02 17:21:49
6998
6
原创 2510-Druid监控功能的深入使用与配置-基于SpringBoot-完全使用java config的形式
环境springboot 1.5.9.RELEASE + JDK1.8配置步骤分两步,1 配置数据源 2 配置监控直接上代码1 配置数据源package com.company.project.support.druid;import com.alibaba.druid.pool.DruidDataSource;import org.springfram...
2018-06-02 16:12:31
884
原创 2509-Druid监控功能的深入使用与配置-基于SpringBoot-完全使用 .properties配置文件
java实现的数据库连接池有很多,c3p0,dbcp等,还有号称速度最快的HikariCP,并且springboot2.0.2版本默认使用的就是HikariCP。为什么选用Druid呢?- 性能够好,比c3p0,dbcp强一些- 经过考验,毕竟是阿里开源出来的项目- 最关键的是带一个建议的数据库监控能监控哪些数据呢? 1. 数据源 2. SQL监控 对执行的MySQL语...
2018-06-02 16:11:56
3644
1
原创 2508-AOP- springboot中使用-使用注解方式
Springboot中使用aop,与SSM中使用AOP,整体配置与编写方式都是类似的。但是Springboot简化了很多xml配置,切点的表达式可以直接进行javaconfig。记录一些示例 springboot示例: 版本1.5.9.RELEASE pom文件中添加aop的依赖<dependency> <groupId>org.springfra...
2018-05-30 09:47:23
334
原创 2505-springboot使用spring.profiles.active来分区配置
参考文献: 1. spring boot 入门 使用spring.profiles.active来分区配置 http://www.leftso.com/blog/111.html很多时候,我们项目在开发环境和生成环境的环境配置是不一样的,例如,数据库配置,在开发的时候,我们一般用测试数据库,而在生产环境的时候,我们是用正式的数据,这时候,我们可以利用profile在不同的环境下配置用不同的配...
2018-05-30 09:46:39
157
原创 2499-springboot使用jar形式打包在linux上运行
由于maven使用的种种问题,以前springboot版本变化较快带来的一些不兼容问题,是否考虑下使用jar形式运行web程序,而不是固守于war包与tomcat;主要原理有两点: 1. 使用nohup来运行jar nohup java -jar ./$RESOURCE_NAME –spring.profiles.active=test & 最后一个& 是输出日志的意...
2018-05-30 09:45:22
360
原创 2501-Logback的使用与配置范例xml
在项目中logback一般配合slf4j使用,slf4j是面上的框架,logback才是真正记录处理日志的框架。 参考文献: 1. Java日志框架:logback详解 http://www.importnew.com/28541.html 2. 官网文档 对内置的appender进行详细的说明 https://logback.qos.ch/manual/appenders.html...
2018-05-30 09:44:24
193
原创 2506-nginx的配置-域名分发与负载均衡(只有配置无原理)
引言 nginx的原理在此不赘述,只记录各种功能的配置使用nginx的安装Windows7:官网下载,是一个压缩包,运行解压缩后的exe文件即启动了nginx,需注意的是,Windows(win7)的80端口默认被微软的IIS占用,需改成别的端口,例如8010(如何改?参考下面的配置文件讲解)解压后的目录:1.conf目录:存放配置文件的目录,包含主配置文件ngin...
2018-05-30 09:42:48
1243
原创 2507-nginx的安装(基于centos7)
参考文献: 1. 【很详细】 Nginx下载安装 http://www.cnblogs.com/crazylqy/p/6891929.html引言 一般分为两种安装模式,一种是yum源安装,一种是源码编译安装模式。建议使用源码编译模式,版本控制更好,而且参数配置可选,最关键的是可以自定义安装的路径。源码编译模式准备好一个目录 cd /usr/local/softw...
2018-05-30 09:38:06
195
原创 Activiti 6.0生成流程图的png格式图片
有两种方法,1设置自动保存时生成,2手动导出。1设置自动保存时生成首先使用eclipse的activiti插件,再设置相关配置。window ——> preferences——>activiti——>save——>选中create process definition image when saving the diagram2手动导出打开.bpm文件,还是使用activi...
2018-04-09 10:09:54
5134
原创 Java邮件服务构建之基础发送
目前springboot 使用的非常广泛,所以这段时间构建的服务都是基于springboot的,这次邮件组件也是使用的spring-boot-starter-mail。邮件发送一般使用的也是别人的代理服务,我们使用的也是这些服务的代理,比如代发QQ邮件,163邮件,腾讯企业邮,这三个邮件服务有些细小区别,文章尾部会说明。<parent> <groupId>org.spri...
2018-03-14 23:02:41
530
tomcat7大礼包linuxWindows都有
2018-06-08
dubbo2.8.4.jar压缩包(也是品优购要求的jar)
2018-06-08
《阿里巴巴Java开发手册》1.2.0升级版
2017-05-27
monkey压力测试工具
2017-03-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人