- 博客(137)
- 收藏
- 关注
原创 每日思考-关于合并代码的一些思考
背景:项目上因为合并代码出现过一些问题,甚至是线上事故,所以针对代码合并这件事情进行了一些思考,大概列出一些需要关注的点和流程。合并原由合并的理由要清楚,是要做集成还是说要合二为一进行合并开发,最初的目的要简单清晰;合并原则合并原则:feature向test合并,feature正常来说不能合并到feature,feature的含义就是具有一种特性的分支,feature代码可以是...
2020-03-29 17:36:20
680
原创 SpringMVC-了解Servlet
ServletServlet简介概念生命周期工作流程Servlet简介Servlet是tomcat项目中提供的web开发接口,tomcat是由Apache、Sun 和其他一些公司及个人共同开发而成,其中Servlet部分就是Sun支持开发的。概念Servlet是一种运行在web服务端的小程序,专门用于处理请求、响应。生命周期Servlet通常存活于web服务整个生命周期,只要we...
2019-12-29 18:41:07
275
原创 SpringMVC-MVC框架模式
MVC框架模式MVC简介概念核心思想依赖关系工作原理MVC简介MVC全称:Model - View - Controller,它是于1970年的时候由TrygveReenskaug在Smalltalk-80系统上首次提出。概念M:模型组件,对应于用户使用的所有与数据相关的逻辑;V:View组件,用于应用程序的所有UI逻辑;C:控制器,充当Model和View组件之间的接口,以处理所有...
2019-11-17 14:59:12
281
原创 分布式-解决幂等问题
幂等问题什么是幂等幂等和防重有什么区别幂等分为几种常见的业务场景常见的解决方案基于数据库唯一索引实现幂等解决重复支付问题源码分享什么是幂等幂等是一个数学与计算机学概念,常见于抽象代数中,在编程中一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。百度百科解释幂等和防重有什么区别防重是防止一个接口地址被截获后,客户端重复提交请求一次或多次,对系统造成异常,这种异常可...
2019-09-21 19:01:01
253
原创 jekins-安装使用总结
jekinsjekins简介安装(MAC)配置问题POM方式构建项目配置示例jekins简介Jenkins是一个开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成变成可能。安装(MAC)安装命令:brew install jenkins启动命令:brew services start jenkins停止命令:b...
2019-09-08 14:04:29
384
原创 分布式-解决请求重放问题
请求重放什么是请求重放可能导致的问题常见的业务场景常见的解决方案基于redis实现的一种解决方案(随机数原理)源码分享什么是请求重放由于网路原因或未知异常导致的客户端不断向服务端重试同一个请求的行为可以叫做请求重放。可能导致的问题请求重放可能会导致出现的一些问题有:数据重复、数据不一致、服务端接口被恶意攻击直至崩溃。常见的业务场景分布式场景下,使用dubbo框架,dubbo微...
2019-08-31 22:18:21
1898
原创 springboot启动-监听器模块
springboot启动-监听器模块监听器模块简介工作流程源码分析SpringApplicationRunListenersSpringApplicationRunListenerApplicationEventMulticasterApplicationListener设计总结经验总结扩展学习监听器模块简介springboot在启动过程中会调用监听器模块,将开始事件、环境准备事件、启动完成...
2019-08-24 23:36:44
1434
原创 springboot源码-诊断分析器模块
springboot诊断分析模块诊断分析模块简介工作流程源码分析分析入口类分析器报告器总结诊断分析模块简介springboot在启动过程中,会对启动失败的原因及异常进行诊断,并打印报告工作流程初始化阶段:加载springboot内置配置的分析器准备阶段:设置bean工厂/环境配置分析阶段:遍历调用分析器,只要有分析结果返回报告阶段:将分析结果进行整理格式化,方便用户解读源码...
2019-08-18 20:05:33
251
原创 okhttp-学习okhttp拦截器链,并模拟写一个校验链
okhttp拦截器链拦截器简介okhttp拦截器实现原理源码分析RealCall调用拦截器实现扩展:自定义校验链校验接口校验链实现校验器实现拦截器简介okhttp通过拦截器链实现对请求响应的校验及封装,满足定制化需求okhttp拦截器链使用了责任链模式,每个拦截器可以选择将请求处理,或者将请求传给下个拦截器okhttp常见的拦截器有:BridgeInterceptor、CacheInte...
2019-08-18 12:41:34
267
原创 端口占用查看
端口占用windows下linux下windows下查询端口进程信息:netstat -ano |findstr “xxxx” xxxx是端口号查看进程信息:tasklist|findstr “xxxxx” xxxxx是进程id杀死进程:taskkill /f /t pidlinux下查看某一端口的占用信息:lsof -i:port查看tcp/udp端口监听情况:ne...
2019-08-03 18:44:05
117
原创 okhttp-了解一些特性
okhttp一些特性特性简介同步/异步同步请求异步请求异步请求线程池模型请求限流问题思考请求重试请求撤销特性简介支持请求克隆支持请求取消支持同步/异步请求支持请求限流同步/异步同步请求调用RealCall的execute方法异步请求传入回调对象Callback,封装到AysncCall中,AysncCall实现了Runnable接口执行AysncCall-execu...
2019-08-03 18:35:46
316
原创 springboot-controller接口常用技巧
编写Controller接口Controller简述接口参数时间参数格式化参数注解参数校验日志记录配置跨越获取request或responseController简述在springMvc架构模式下,controller作为后端控制器,是我们写接口时接触最多的,如何更快更好地写好一个controller层接口,是我们必备知识技能。接口参数时间参数格式化@DateTimeFormat(pa...
2019-08-03 18:13:21
3153
1
原创 CRUD常用技巧
CRUDCRUD简述插入查询模糊查询分页查询多字段排序修改批量修改多字段修改删除CRUD简述写业务代码我们免不了会一直围绕着CRUD转,这是基础,也是根本,把CRUD做好了也是一件不简单的事情,让我们扎扎实实地去做好这件事。插入我们常用的是mybatis批量插入:insert into test_table (`name`,`age`) values <foreach c...
2019-08-03 17:28:47
466
原创 Mysql-update更新多个字段(线上出现过update and导致的问题)
update更新多个字段错误姿势正确姿势错误姿势update table set a=xx and b=yy:使用and连接符其实执行的逻辑与操作,上面的sql等同于:update table set a=(xx and b=yy),值只可能为0/1;正确姿势update table set a=xx, b=yy正确的更新方式是字段直接要用“,”隔开;...
2019-06-21 21:20:22
3648
原创 开发工具-startUml及常用图定义
安装https://docs.staruml.io破解https://blog.csdn.net/wdd1324/article/details/81671826常用图定义类图Dependency:依赖关系,有多种表现形式,友元/绑定,比如A类使用到B类的私有变量,这时可以用这种关系连接Association:关联关系,语义较弱Aggregation:聚合关系,指明一个整体和部分之...
2019-05-25 11:19:34
762
原创 总结下跨域问题及解决办法
跨域验证跨域跨域问题解决跨域服务端配置测试案例案例代码跨域引用知乎上写的比较好的一个定义:跨域是指从一个域名的网页去请求另一个域名的资源。比如从http://www.baidu.com/ 页面去请求 http://www.google.com 的资源。跨域的严格一点的定义是:只要 协议,域名,端口有任何一个的不同,就被当作是跨域。跨域问题1.出于安全考虑,一般浏览器默认不支持跨域请求,必须...
2019-05-11 22:05:33
345
原创 数据同步机制
两台服务之间数据同步数据同步nacos-数据同步机制数据同步 数据同步机制有很多种,我之前在项目中有遇到两台服务器之间文件同步、集中管理平台服务器同步配置信息给节点,最近也看到了SpringCloud Alibaba组件之一Nacos配置管理相关的文章,也从中学到了数据同步的一种实现方式,如果后续我有遇到或想到一些同步机制的方法或想法,会持续更新这篇文章。nacos-数据同步机制na...
2019-03-10 23:04:14
2210
原创 okhttp-缓存机制
okhttp提供缓存机制,用于缓存响应head和body,但默认是不开启缓存机制。启用缓存:new OkHttpClient().newBuilder().cache(new Cache(new File(“D:/”), 10240)).build();缓存执行基本流程:1.执行拦截器链CacheInterceptor,首先会从缓存中读取响应结果2.okhttp提供Cache类作...
2019-02-01 20:12:20
4685
原创 springcloud-单个服务无法处理新的请求
前言:最近生产上出现一个问题,描述如下:springcloud分布式环境下,服务B无法处理新进来的请求,且zuul服务一直在走降级逻辑。服务调用情况:zuul-&gt;服务A-&gt;服务B问题分析:1.首先查看tomcat连接是不是满了,通过netstat -nat|grep -i “服务B端口号”|grep ESTABLISHED|wc -l,连接数为300多,tomcat默认最...
2019-01-31 22:12:03
401
原创 JAVA并发-验证sychronized锁升级、降级
前言:也许有些东西不去验证不去探索,终究还只是资料,变不成知识,人生漫漫,见到的很多,知道得很少,精力有限,做个知道的人,哪怕知道那么一点也可以.先贴一张synchronized锁图,下面通过实验来验证下该图描述是否正确。相关信息:1.主要工具:jdk自带HSDB工具,HSDB具体是啥,我百度下:HSDB则是在SA基础上包装起来的一个调试器,至于SA是啥,再百度下:是个非常便于探索H...
2019-01-27 07:57:38
770
1
原创 innodb锁-insert导致的死锁
前言:之前分析了间隙锁以及行锁导致死锁的案例,后来我在学习插入意向锁的过程中,了解到单纯地插入操作也可能会导致死锁,所以也模拟下这种场景,以后遇到类似问题也不至于慌乱.同一条插入sql引发的死锁环境准备1.创建表:CREATE TABLE `test_user` ( `user_id` bigint(20) NOT NULL AUTO_INCREMENT, `name` ch...
2019-01-18 21:59:25
1650
1
原创 innodb-隐式提交
隐式提交1.DDL语句或者修改数据库对象的语句Data definition language (DDL) statements that define or modify database objects.例如:ALTER DATABASE … UPGRADE DATA DIRECTORY NAME, ALTER EVENT, ALTER PROCEDURE, ALTER SERVER...
2019-01-18 21:41:18
550
原创 innodb-自动提交、提交、回滚
自动提交、提交、回滚1.如果启用了自动提交的会话可以通过使用显式START TRANSACTION或BEGIN语句启动并使用COMMIT或ROLLBACK语句结束来执行多语句事务。A session that has autocommit enabled can perform a multiple-statement transaction by starting it with an e...
2019-01-18 21:32:11
736
原创 innodb-四种隔离级别
四种隔离级别1.innodb有四种标准的隔离级别:READ UNCOMMITTED, READ COMMITTED, REPEATABLE READ, SERIALIZABLE.默认隔离级别是REPEATABLE READInnoDB offers all four transaction isolation levels described by the SQL:1992 standard...
2019-01-18 21:23:43
1070
原创 innodb-错误处理
错误处理1.如果表空间满了,innodb会回滚整个事务If you run out of file space in a tablespace, a MySQL Table is full error occurs and InnoDB rolls back the SQL statement.2.死锁会导致innod回滚整个事务A transaction deadlock caus...
2019-01-18 20:58:47
449
原创 innodb-非锁定一致性读
非锁定一致性读1.在RR和RC隔离级别下一致性读是innodb默认的模式,一致性读不会加任何锁,不影响其他事务来修改相关数据Consistent read is the default mode in which InnoDB processes SELECT statements in READ COMMITTED and REPEATABLE READ isolation levels....
2019-01-18 20:55:15
271
原创 innodb锁-不同索引下更新sql的加锁过程
一、根据主键更新mysql> start transaction;Query OK, 0 rows affected (0.00 sec)mysql> update test_user set status=1 where user_id=1;Query OK, 0 rows affected (0.00 sec)Rows matched: 1 Changed: 0 W...
2019-01-13 17:00:53
757
原创 innodb锁-开启锁监控功能
开启锁监控功能有两种方式:一.创建innodb_lock_monitor表二.设置全局属性innodb_status_output=1&innodb_status_output_locks=1第一种方式:开启:CREATE TABLE innodb_lock_monitor (a INT) ENGINE=INNODB;关闭:DROP TABLE innodb_lock_mon...
2019-01-13 16:55:05
1698
原创 innodb锁-innodb表锁
innodb表锁:不像myisam表可以自动锁表,需要手动执行lock tables …read/write来进行锁表操作表锁使用:1.使用LOCK TABLES虽然可以给InnoDB加表级锁,但必须说明的是,表锁不是由InnoDB存储引擎层管理的,而是由其上一层──MySQL-Server负责的,仅当autocommit=0、innodb_table_locks=1(默认设置)时,Inn...
2019-01-13 16:31:50
505
原创 innodb锁-共享锁排他锁
前言:Shared and Exclusive Locks译称共享锁/排他锁,本文参考官方文档进行学习说明外加实验例子数据库版本:SELECT VERSION();±-----------+| version() |±-----------+| 5.6.34-log |±-----------+数据库引擎:show variables like ‘%engine%’;±...
2019-01-13 16:27:05
700
1
原创 innodb锁-插入意向锁
前言:Insert Intention Locks译称插入意向锁,首先强调插入意向锁是间隙锁的一种,本文参考官方文档进行学习说明数据库版本:SELECT VERSION();±-----------+| version() |±-----------+| 5.6.34-log |±-----------+数据库引擎:show variables like ‘%engine...
2019-01-13 16:20:12
2463
4
原创 innodb锁-next-key锁
前言:Next-Key Locks译称Next-Key锁,本文参考官方文档进行学习说明外加实验例子数据库版本:SELECT VERSION();±-----------+| version() |±-----------+| 5.6.34-log |±-----------+数据库引擎:show variables like ‘%engine%’;±----------...
2019-01-13 16:13:11
531
原创 innodb锁-间隙锁
前言:Gap Locks译称间隙锁,本文参考官方文档进行学习说明外加实验例子数据库版本:SELECT VERSION();±-----------+| version() |±-----------+| 5.6.34-log |±-----------+数据库引擎:show variables like ‘%engine%’;±---------------------...
2019-01-13 16:06:56
1790
原创 innodb锁-意向锁
前言:Intention Locks译称意向锁,Insert Intention Locks译称插入意向锁,本文参考官方文档进行学习说明数据库版本:SELECT VERSION();±-----------+| version() |±-----------+| 5.6.34-log |±-----------+数据库引擎:show variables like ‘%en...
2019-01-13 16:01:26
1562
原创 mysql锁-innodb间隙锁死锁分析
前言:在上篇里分析了一次mysql死锁问题,后来又深入研究了下死锁的其他场景,innodb间隙锁场景下也可能会发生死锁,所以进一步巩固下间隙锁的知识gap锁定义:1.gap就是索引树中插入新记录的空隙2.相应的gap锁就是加在gap上的锁gap锁作用:防止幻读,通过间隙锁阻止特定条件的新记录的插入,后面单独就那些验证幻读现象注意:1. 只在REPEATABLE READ...
2019-01-07 21:40:39
8607
13
原创 springboot-@Async默认线程池导致OOM问题
前言:1.最近项目上在测试人员压测过程中发现了OOM问题,项目使用springboot搭建项目工程,通过查看日志中包含信息:unable to create new native thread内存溢出的三种类型:1.第一种OutOfMemoryError: PermGen space,发生这种问题的原意是程序中使用了大量的jar或class2.第二种OutOfMemoryError: ...
2019-01-02 11:23:44
55803
14
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人