- 博客(41)
- 收藏
- 关注
原创 【手撸RPC框架】SpringBoot+Netty4实现RPC框架
【手撸RPC框架】SpringBoot+Netty4实现RPC框架线程模型Netty高性能架构设计简单了解React线程模型,参考文章【五分钟快速理解 Reactor 模型】举例说明:Reactor的三种线程模型线程模型1:传统阻塞 I/O 服务模型模型特点:采用阻塞IO模式获取输入的数据每个链接都需要独立的线程完成数据的输入,业务处理、数据返回。问题分析:当并发数很大,就会创建大量的线程,占用很大系统资源连接创建后,如果当前线程暂时没有数据可读,该线程会阻塞在read操作,造
2021-05-08 22:55:21 530 3
原创 PMP知识领域
·十大知识领域整合-项目整合管理识别、定义、组合、统一和协调个项目管理过程组的各种过程和活动而展开的活动与过程。整合:统一、合并、沟通和简历联系;贯穿项目始终七个过程组一、制定项目章程(启动)执行一次编写一份正式批准的项目,授权项目经理使用组织资源的文件过程。里面描述高层级的期望作用:明确项目与组织战略目标之间的直接联系确立项目的正式地位展示组织对项目的承诺解读:明确定义项目开始和项目边界(边界模糊)项目章程一旦被批准,就标志着项目正式启动高层对项目的支持输
2021-01-15 22:25:12 247
原创 PMP基本概念
商业文件:商业论证和效益管理计划,可以找到关于项目目标以及项目对业务目标的贡献的相关信息商业论证:经批准的商业论证或类似文件是最常用语指定项目章程的商业文件效益成本分析:是项目启动时考虑项目是否值得做的分析方法效益管理计划:项目效益管理计划描述了项目实现效益的方式和时间,以及应制定的效益衡量机制。项目效益指为发起组织和项目预期受益方创造价值的行动、行为、产品、服务或成果的结果。项目生命周期早期应确定目标效益,并据此制定效益管理计划。它描述了效益的关键要素,可能包括(但不限于)记录以下内容:
2021-01-15 13:04:12 523
原创 Jenkins打Docker镜像推送到私有仓库
Jenkins打Docker镜像推送到私有仓库因为我的Jenkins是安装在群晖NAS中的docker,所以我这边就以Docker安装Jenkins为例echo '================Docker开始=============='echo '================登陆阿里云私有镜像仓库=============='# 定义镜像名称IMAGE_NAME="scm"# 查看当前目录pwd# 进入web目录Docke
2020-09-23 21:43:52 907
原创 Jenkins集成SonarQube
Jenkins 集成 SonarQube Scanner1. 安装Jenkins下载安装包,这里我们下载war包:https://jenkins.io/download/运行jenkins.war的方式有两种:第一种:将其放到tomcat中运行(放到webapps目录下,启动tomcat)第二种:直接执行 java -jar jenkins.war --httpPort=8080第三种:Docker方式部署:#查看jenkins版本命令docker search jenkins#拉取镜像命
2020-09-22 19:44:38 283
原创 redis命令和RedisTemplate操作对应表
redis命令和RedisTemplate操作对应表redisTemplate.opsForValue();//操作字符串redisTemplate.opsForHash();//操作hashredisTemplate.opsForedisTemplateet();//操作setredisTemplate.opsForList();//操作listredisTemplate.opsForZSet();//操作有序setKey相关的Redis命令RedisTemplate redis
2020-09-21 11:52:35 744
原创 MySQL数据和索引占用空间查询
MySQL数据和索引占用空间查询查询所有数据库占用磁盘空间大小的SQL语句SELECT table_schema, -- 数据库名称 concat( TRUNCATE ( sum( data_length ) / 1024 / 1024, 2 ), 'MB' ) AS data_size, -- 数据占用空间 concat( TRUNCATE ( sum( index_length ) / 1024 / 1024, 2 ), 'MB' ) AS i
2020-08-26 23:26:43 709
原创 SpringBoot2 整合 Swagger2文档 使用BootstrapUI页面
SpringBoot2 整合 Swagger2SpringBoot整合三板斧第一步、引入pom<dependency> <groupId>com.spring4all</groupId> <artifactId>swagger-spring-boot-starter</artifactId> <version>1.9.0.RELEASE</version></dependency><d
2020-07-31 00:43:39 1508
原创 【SpringBoot】 中时间类型 序列化、反序列化、格式处理
【SpringBoot】 中时间类型 序列化、反序列化、格式处理Dateyml全局配置spring: jackson: time-zone: GMT+8 date-format: yyyy-MM-dd HH:mm:ss #配置POST请求Body中Date时间类型序列化格式处理,并返回请求参数类型转换/** * 时间Date转换 * 配置GET请求,Query查询Date时间类型参数转换 */@Componentpublic class DateConverter
2020-07-18 15:26:21 1464
原创 【SpringCloud】Gateway 配置全局过滤器获取请求参数和响应值
【SpringCloud】Gateway 配置全局过滤器获取请求参数和响应值实现Ordered接口getOrder()方法,数值越小越靠前执行,记得这一点就OK了。获取请求参数RequestBody@Component@Slf4j@AllArgsConstructorpublic class HttpRequestFilter implements GlobalFilter, Ordered { @Override public Mono<Void> filte
2020-07-02 20:51:18 4242
原创 【环境安装】Docker安装
【环境安装】Docker安装CentoOS-7安装步骤:1、卸载已经安装的Dockersudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \
2020-06-16 23:11:22 735
原创 构建自己的jar包上传至Mvaen中央仓库和版本更新
构建自己的jar包上传至Mvaen中央仓库和版本更新一直羡慕别人制造轮子,开源项目,供别人使用;我也想这样,可以自己才疏学浅,本次就将自己写小工具上传到Maven的中央仓库。一步一步详细教程演示如下:开始要注意这个几个Maven相关地址:工单管理:https://issues.sonatype.org就是申请上传资格和groupId 的地方,注册账号、创建和管理issue,Jar包的发布是以解决issue的方式起步的构件仓库 : https://oss.sonatype.org/#we
2020-06-11 11:07:35 835
原创 JAVA自定义注解
JAVA自定义注解注解概念注解是Java SE 5.0版本开始引入的概念,它是对java源代码的说明,是一种元数据(描述数据的数据)。注解和注释的不同注释 注释是对代码的说明,给代码的读者看,便于帮读者梳理业务逻辑;在程序代码中经常看到的以@ 开头的大部分是注解;注解注解也是对代码的说明,需要配合工具(解析它的代码)使用,参与代码的编译,给应用程序看的;注解分类注解以@开头,我们会在应用程序中见到各种各样的注解,比如 @Autowired,@Service,@Controller
2020-06-01 10:26:41 604
原创 6-JVM常用工具和优化
JVM 常用工具和优化JDK 自带的jconsolejvisualvm三方的工具arthas调优关注点(内存、GC):内存MATXElephant在线:perfmaGC拿到GC日志,分析GC日志(吞吐量,停顿时间,垃圾回收次数;这三个是评判垃圾收集器好坏的标准)本地:GCViewer在线:gceasy.io在什么情况下调优体现系统性能的参考因素首先我们需要知道系统当前的运行状况,也就是系统的性能好坏,才能判断是否需要调优。如果系统的响应时间很短,计算机的资源使用也
2020-05-20 12:57:42 804
原创 5-JVM常用的命令
JVM常用的命令jps :基础工具查看JAVA进程PID。jps 命令用来查看所有 Java 进程,每一行就是一个 Java 进程信息。jps 仅查找当前用户的 Java 进程,而不是当前系统中的所有进程,要显示其他用户的还只能用 ps 命令。jps 常用参数jps -l 如果是以 class 方式运行,会显示进程的主类 main.class 的全名,如果是以 jar 包方式运行的,就会输出 jar 包的完整路径名第一列的数字就是进程的 pidjps -v 输出传递给 JVM 的参数,
2020-05-18 15:21:38 798
原创 4-JVM 参数
JVM 参数标准参数:不会随着jdk版本的变化而变化。比如:java -version、java -help非标准参数:随着JDK版本的变化而变化。-X参数【用的较少】非标准参数,也就是在JDK各个版本中可能会变动# 修改执行方式# compiled 编译执行方式,第一次使用就编译成本地代码java -Xcomp -version# interpreted 解释执行方式java -Xini -version# mixed 默认的混合执行方式,混合模式,JVM自己来决定java -Xm
2020-05-14 21:14:21 689
原创 3-JVM垃圾回收算法和垃圾收集器
垃圾回收算法和垃圾收集器1.什么是垃圾回收对于内存当中无用的对象进行回收,如何去判断一个对象是不是无用的对象。引用计数法:每个对象中都会存储一个引用计数,每增加一个引用就+1,消失一个引用就-1。当引用计数器为0时就会判断该对象是垃圾,进行回收。但是这样会有一个弊端。就是当有两个对象互相引用时,那么这两个对象的引用计数器都不为0,那么就不会对其进行回收。可达性分析:判断某个对象是否可到达。有两种方式判断是否可到达:直接引用(上帝视角GC Roots):就是虚拟机栈帧中的局部或本地变量表、
2020-05-11 14:05:32 687
原创 2-JVM内存结构
内存模型方法区JDK1.7 之前包含1.7 将方法区称为 Perm Space 永久代JDK1.8之后包含1.8 将方法区称为 MetaSpace 元空间。堆(分配内存会大一些)分配对象、new 实例。堆内存当中划分为两个区域:老年代和新生代。如何去划分老年代和新生代,根据对象的年龄。这个年龄是一个对象经过一次GC,如果还存在的话,年龄就加一。当年龄超过默认值(15)时,...
2020-05-07 11:57:29 643
原创 1-JVM基础
1-JVM基础java源码文件,通过javac 转换成class文件。找到.java文件词法分析器tokens流语法分析器语义分析器字节码生成器转成.class文件装载根据全限定路径名寻找class文件,转换成二进制流。通过ClassLoder.load(String name)(类装载器,name:全限定路径名)不同路径下的类,设置不同路径的类装载器。Boots...
2020-04-25 14:36:45 662
原创 MySQL数据库设计规范
MySQL数据库设计规范转载原文:https://github.com/jly8866/archer/blob/master/src/docs/mysql_db_design_guide.md#%E7%9B%AE%E5%BD%95目录1. 规范背景与目的 2. 设计规范2.1 数据库设计 2.1.1 库名 2.1.2 表结构 2.1.3 列数据类型优化...
2020-04-16 16:03:34 805
原创 MySQL 学习笔记
MySQL 学习笔记数据库操作-- 查看当前数据库 SELECT DATABASE();-- 显示当前时间、用户名、数据库版本 SELECT now(), user(), version();-- 创建库 CREATE DATABASE[ IF NOT EXISTS] 数据库名 数据库选项 数据库选项: CHARACTER SET chars...
2020-04-06 18:51:10 656
原创 JSON字符串带BOM头"ufeff"
调用三方接口返回值JSON字符串带BOM头"\ufeff",JSON解析死活报错。我是用SpringBoot的RestTemplate调用三方接口的,一开始返回值我是用对象接收返回值,发现一直报错,我以为是RestTemplate的接收转换有问题,就将返回值换成了String类型去接收。接收到字符串后再转JSON、JSON字符串解析死活报错。接口返回值日志如下:202...
2020-03-31 22:03:28 1054
原创 SpringBoot2 整合 Swagger2
SpringBoot2 整合 Swagger2SpringBoot整合三板斧第一步、引入pom<dependency> <groupId>com.spring4all</groupId> <artifactId>swagger-spring-boot-starter</artifactId> <version>...
2020-03-28 21:08:07 884
原创 Mysql5.7及以上版本 ONLY_FULL_GROUP_BY报错
近期在开发过程中,因为项目开发环境连接的mysql数据库是阿里云的数据库,而阿里云的数据库版本是5.6的。而测试环境的mysql是自己安装的5.7。因此在开发过程中有小伙伴不注意写了有关group by的sql语句。在开发环境中运行是正常的,而到了测试环境中就发现了异常。原因分析:MySQL5.7版本默认设置了 mysql sql_mode = only_full_group_by 属性,导...
2020-03-25 23:35:27 886
原创 SpringBoot2 线程池的定义和使用
SpringBoot2 线程池的定义和使用定义线程池@Slf4j@EnableAsync@Configurationpublic class AsyncExecutorConfig implements AsyncConfigurer { @Bean public ThreadPoolTaskExecutor asyncServiceExecutor() { ...
2020-03-25 20:36:29 1113 1
原创 SpringBoot Shiro 配置自定义密码加密器
SpringBoot Shiro 配置自定义密码加密器自定义认证加密方式/** * 自定义认证加密方式 */public static class CustomCredentialsMatcher extends SimpleCredentialsMatcher { @Override public boolean doCredentialsMatch(Authentic...
2020-03-24 20:11:11 1510
原创 SpringBoot Druid 配置详解
SpringBoot Druid 配置详解spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driverClassName: com.mysql.cj.jdbc.Driver url: jdbc:mysql://${url}:${port}/${数据库名}?useUnicode=true&...
2020-03-24 20:08:16 845
原创 SpringBoot Druid 配置详解
SpringBoot Druid 配置详解spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driverClassName: com.mysql.cj.jdbc.Driver url: jdbc:mysql://${url}:${port}/${数据库名}?useUnicode=true&...
2020-03-24 15:04:47 2038
原创 SpringBoot AOP处理请求日志处理打印
SpringBoot AOP处理请求日志处理打印@Slf4j@Aspect@Configurationpublic class RequestAopConfig { @Autowired private HttpServletRequest request; private static final ThreadLocal<Long> START_T...
2020-03-23 22:22:52 748
原创 SpringBoot 全局异常处理
SpringBoot 全局异常处理@Slf4j@RestControllerAdvicepublic class ExceptionController { /** * 校验错误拦截处理 * * @param ex 异常 * @return 返回值 * StringBuilder sb = new StringBuilder();...
2020-03-22 21:19:20 802
原创 JAVA 转换 树结构数据
JAVA 转换 树结构数据第一步:引入fastjson<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>${fastjson.version}</version>...
2020-03-22 20:31:23 958
原创 Mysql 查询天、周,月,季度、年的数据
Mysql 查询天、周,月,季度、年的数据今天select * from 表名 where to_days(时间字段名) = to_days(now());昨天SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) <= 1近7天SELECT * FROM 表名 where DATE_SUB(CURDATE(), IN...
2020-03-22 20:27:21 734
原创 SpringBoot2整合Redis缓存
遵循SpringBoot三板斧第一步加依赖<!-- Redis --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></d...
2020-03-02 19:41:43 745
原创 SpringBoot2整合Redis多数据源
配置文件属性spring: redis: database: 1 host: 192.168.50.144 port: 6379 password: timeout: 600 #Springboot2.0 不能设置为0 lettuce: pool: max-active: 50 max-wait: -...
2020-03-02 17:36:15 1192
原创 Spring Cloud Eureka整合使用和配置
遵循SpringBoot三板斧服务端第一步加依赖<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId></dependency&g...
2019-10-22 00:35:27 392
原创 Spring Cloud Feign 性能优化
1、替换 tomcat首先,把 tomcat 换成 undertow,这个性能在 Jmeter 的压测下,undertow 比 tomcat 高一倍第一步,pom 修改去除tomcat<dependency> <groupId>org.springframework.boot</groupId> <artifactId>sprin...
2019-10-14 21:05:11 984
原创 Spring Cloud Feign 总结问题,注意点,性能调优,切换okhttp3
Feign常见问题总结FeignClient接口如使用@PathVariable ,必须指定value属性//在一些早期版本中, @PathVariable("id") 中的 "id" ,也就是value属性,必须指定,不能省略。@FeignClient("microservice-provider-user")public interface UserFeignClient { @R...
2019-10-14 20:31:20 2591
原创 Spring Cloud Feign 组成和配置
Feign的组成接口作用默认值Feign.BuilderFeign的入口Feign.BuilderClientFeign底层用什么去请求和Ribbon配合时:LoadBalancerFeignClient 不和Ribbon配合时:Fgien.Client.DefaultContract契约,注解支持SpringMVCContractEncoder解码...
2019-10-11 23:24:00 1066
原创 SpringCloud Ribbon组成和负载均衡规则
Ribbon饥饿加载默认情况下Ribbon是懒加载的。当服务起动好之后,第一次请求是非常慢的,第二次之后就快很多。解决方式:开启饥饿加载ribbon: eager-load: enabled: true #开启饥饿加载 clients: server-1,server-2,server-3 #为哪些服务的名称开启饥饿加载,多个用逗号分隔Ribbon组成接口作用...
2019-10-10 23:30:27 889
原创 Spring Cloud 版本控制
正常版本<groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId><version>2.1.7.RELEASE</version><!--语义化版本--><!--...
2019-10-10 14:44:18 1132
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人