自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Spring学习

Spring

2022-10-19 11:28:49 272 1

原创 不要在 foreach 循环里进行元素的 remove/add 操作.Why?

在循环里面进行集合元素的增加删除会引发java.util.ConcurrentModificationException异常详见这篇文章,写的挺详细的java.util.ConcurrentModificationException 异常原因和解决方法_y4ung的博客-CSDN博客_concurrentmodificationexception...

2022-05-14 17:28:34 224

原创 Spirng Aop 与 AspectJ 有什么异同呢?

百度安全验证

2022-02-13 15:20:22 345

原创 @EnableConfigurationProperties

Springboot 之 @EnableConfigurationProperties 注解 - 最强NPC - 博客园

2022-02-13 14:27:56 168

原创 校验注解&实现ConstraintValidator接口自定义校验器

Spring基础系列-参数校验 - 唯一浩哥 - 博客园

2022-02-12 19:21:12 449

转载 MySQL锁

加锁的基本单位是Next Key Lock,左开右闭的一个区间行锁InnoDB行锁是通过索引上的索引项来实现的。这意味着:只有通过索引条件检索数据,InnoDB才会使用行级锁,否则,InnoDB将使用表锁(如果是RR / Serializable 级别,将在主键上使用Next-Key Locks来实现锁表的操作)所以在实际应用中,要特别注意InnoDB行锁的这一特性,不然可能导致大量的锁冲突,从而影响并发性能。加锁时机的选择另外,在InnoDB事务中,行锁是在需要的时候才加上的,等到事务

2022-01-22 19:59:29 229

原创 使用PrepareStatement执行SQL的好处

主要有两个好处:一是PrepareStatement会预先提交带占位符的SQL到数据库进行预处理,提前生成执行计划。当给定占位符参数真正执行SQL时,执行引擎可以直接执行,效率更高一点。另一个好处则更为重要,PrepareStatement可以防止SQL注人攻击。假设我们允许用户通过App输人一个名字到数据中心查找用户信息,如果用户输人的字符串是Frank,那么生成的SQL如下:select from users where username = 'Frank';但是,如果用户输入的是

2022-01-22 14:34:31 1443

原创 logback使用filter过滤日志操作

Logback中使用TurboFilter_思考、总结、专注-CSDN博客

2022-01-21 17:29:33 505

原创 SpringMVC的序列化器

SpringBoot系列教程23--整合SpringMVC之自定义JSON序列化器和反序列化器_qfchenjunbo的博客-CSDN博客

2022-01-18 15:14:11 867

原创 MySQL 唯一索引为什么会导致死锁?

面试官:MySQL 唯一索引为什么会导致死锁?_良月柒-CSDN博客

2022-01-17 14:46:33 834

原创 spring.factories文件的作用

spring factories 机制 - 书梦一生 - 博客园

2022-01-16 16:50:40 254

原创 ConfigurationProperties注解

springboot 之 ConfigurationProperties | 戒修-沉迷技术的小沙弥

2022-01-16 16:39:35 156

原创 JSON parse error: Unrecognized field “abc“ (class cn.kk.xxxDto), not marked as ignorable;

org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Unrecognized field "merchant" (class cn.dotfashion.soa.sdps.sdps.vo.request.DpsSupplierFinanceChangeDto), not marked as ignorable;SpringMVC json 转换中错误的解决: Unrecognize...

2021-12-14 20:01:49 1152

转载 ConfigurationProperties注解

springboot 之 ConfigurationProperties | 戒修-沉迷技术的小沙弥

2021-11-18 16:21:08 130

原创 @Primary和@Qualifier

@Primary 和 @Qualifier_tom和cat的博客-CSDN博客_@primary问题描述:就是一个接口KKService,有两个实现类:@Service(“kkService1”)、@Service(“kkService2”)用@Autowired进行接口注入时候,@Autowiredprivate KKService kkService;Spring会报错,因为不知道要注入具体哪个实现类解决方案:@Primary & @Qualifier@Primary加

2021-11-18 14:43:51 256

原创 Mybatis的一二级缓存

Mybatis的缓存通大多数ORM层框架一样,Mybatis自然也提供了对一级缓存和二级缓存的支持。一下是一级缓存和二级缓存的作用于和定义。 1、一级缓存是SqlSession级别的缓存。在操作数据库时需要构造 sqlSession对象,在对象中有一个(内存区域)数据结构(HashMap)用于存储缓存数据。不同的sqlSession之间的缓存数据区域(HashMap)是互相不影响的。二级缓存是mapper级别的缓存,多个SqlSession去操作同一个Mapper的sql语句,多个Sq...

2021-10-13 19:34:50 128

原创 三目运算符的坑

2021-04-12 19:13:41 183

转载 Maven之Profile

概述同一个项目,在不同的环境中部署可能需要不同的配置信息,典型的比如数据库的配置,在开发环境需要连接本地的数据库,测试环境需要连接测试环境的数据库,线上环境需要连接线上的数据库。要使一个项目不经过任何修改就在不同的环境写运行是基本不可能的。为了能让一个项目在不同的环境下方便地移植,Maven引入了profile的概念,profile能够在构建项目的时候修改pom文件的一个子集,或者添加一些额外的配置元素。用户可以使用多种方式激活profile,以实现在不同环境下的移植。profile长啥样下

2021-03-04 17:16:03 325 1

转载 使用git在gitlab上拉取代码的方法

1、首先需要使用github的注册账号登录gitlab,查看右上角用户头像处的settings,2、在用户设置settings处找到SSH Keys,3、如果你的电脑中没有SSH Key,那就需要生成一个,按照相关提示生成SSH Key,使用git工具,右键打开git bash here,在命令行中输入ssh-keygen -t rsa -C "your_email@example.com",此处邮箱地址是你github注册邮箱地址哦。然后一路回车就好了。接下来就按照有SSH Ke...

2021-03-04 10:23:27 791 1

转载 CSRF

CSRF概念CSRF跨站点请求伪造(Cross—Site Request Forgery),跟XSS攻击一样,存在巨大的危害性,可以这样来理解:攻击者盗用了你的身份,以你的名义发送恶意请求,对服务器来说这个请求是完全合法的,但是却完成了攻击者所期望的一个操作,比如以你的名义发送邮件、发消息,盗取你的账号,添加系统管理员,甚至于购买商品、虚拟货币转账等。 如下:其中Web A为存在CSRF漏洞的网站,Web B为攻击者构建的恶意网站,User C为Web A网站的合法用户。CSRF攻击攻击原理及过程如下

2020-12-26 16:41:43 151

原创 Lombok注解@Builder

Lombok的@Builder注解@Target({TYPE, METHOD, CONSTRUCTOR})@Retention(SOURCE)public @interface Builderlombok注解在java进行编译时进行代码的构建,对于java对象的创建工作它可以更优雅,不需要写多余的重复的代码,在出现lombok之后,对象的创建工作提供了Builder方法,它提供在设计数据实体时,对外保持private setter,而对属性的赋值采用Builder的方式,这种方式最优雅,也更符合封

2020-12-25 17:31:06 173

转载 Spring MVC之@ControllerAdvice详解,结合@ExceptionHandler、@InitBinder、@ModelAttribute

对于@ControllerAdvice,我们比较熟知的用法是结合@ExceptionHandler用于全局异常的处理,但其作用不仅限于此。ControllerAdvice拆分开来就是Controller Advice,关于Advice,前面我们讲解Spring Aop时讲到,其是用于封装一个切面所有属性的,包括切入点和需要织入的切面逻辑。这里ContrllerAdvice也可以这么理解,其抽象级别应该是用于对Controller进行“切面”环绕的,而具体的业务织入方式则是通过结合其他的注解来实现的。@Con

2020-12-25 14:43:29 279

原创 Jersey注解

@GET:该注解标记的方法表明用于处理GET请求,GET方法是幂等且安全的。@POST:该注解标记的方法表明处理POST请求,POST方法表明是一种创建操作的方法,POST方法是一种写操作的HTTP请求,RPC中的写操作均是使用post方法,而在REST中我们只是使用POST方法来添加资源。@DELETE:该注解标记的方法表明这个方法执行的是一个删除资源的操作,其返回值可以是void,即没有返回值。@Consumes:在服务器端,@Consumes(MediaType.APPLICATION_XML)

2020-12-24 11:08:55 139

原创 消费者

package com.xinhoo.groupchat.thread;import com.rabbitmq.client.*;import com.xinhoo.groupchat.config.RabbitmqConfig;import com.xinhoo.lang.task.AbstractTask;import com.xinhoo.mongo.pool.ConnectionWrapper;import org.jivesoftware.openfire.XMPPServer;im

2020-12-17 14:50:14 88

原创 读取配置文件

public class NacosProperty { protected static Logger log = LoggerFactory.getLogger(NacosProperty.class); public static final String NACOS_FILE_NAME = "nacos.properties"; /** * 读取nacos配置文件,放入map中 * * @return * @throws Exc

2020-12-15 15:10:27 123

原创 Linux安装nacos

Linux安装nacos官方doc:https://nacos.io/zh-cn/docs/quick-start.html下载nacos的tar包nacos-server-1.4.0.tar.gzXShell上传到对应目录解压:tar -zxvf nacos-server-1.4.0.tar.gz我的安装目录为/usr/local/nacos/nacos单机启动nacos的命令:sh startup.sh -m standalone非交互式窗口方式启动./sh

2020-12-08 15:20:44 149

原创 JWT

JWT流程客户端登录请求校验成功后,服务端生成一个由base64编码的token返回给客户端,该token由Header,Payload,Signature组成。token作为用户请求的标识,客户端保存这token的全部信息。服务端只需要保存token的Signature部分。服务端把token的Signature存于redis和服务器的数据库中。客户端请求的数据附带token,服务端拿到token,首先校验token,以防token伪造。校验规则如下:拆分出token的Header,Pay.

2020-10-30 10:11:40 160

原创 RabbitMQ

2020-10-30 10:10:30 144

原创 UML图之【用例图、活动图、时序图】

聚合概念:聚合关联关系的一种特例,是强的关联关系。聚合是整体和个体之间的关系,即has-a的关系,整体与个体可以具有各自的生命周期,部分可以属于多个整体对象,也可以为多个整体对象共享。程序中聚合和关联关系是一致的,只能从语义级别来区分;表示方法:尾部为空心菱形的实线箭头(也可以没箭头),类A指向类B组合概念:组合也是关联关系的一种特例。组合是一种整体与部分的关系,比聚合更强。部分与整体的生命周期一致,整体的生命周期结束也就意味着部分的生命周期结束,组合关系不能共享。程序中组合和关联关..

2020-07-30 09:32:19 382

原创 Maven

构建环节操作说明①清理 clean删除以前的编译结果,为重新编译做好准备②验证 validate验证项目 验证项目是否正确且所有必须信息是可用的③编译 compile执行编译 源代码编译在此阶段完成④测试 Test测试 使用适当的单元测试框架(例如JUnit)运行测试⑤包装 package打包 创建JAR/WAR包如在 pom.xml 中定义提及的包⑥检查 verify检查 对集成测试的结果进行检查,以保证质量达标⑦安装 install

2020-07-29 19:59:29 219

原创 开发工具安装下载汇总

Enterprise Architect (EA15):https://www.zdfans.com/html/39703.htmlPower Designer 165:https://www.fujieace.com/software/powerdesigner.html

2020-07-29 15:14:26 176

原创 SpringCloud Alibaba分布式事务Seata

安装配置下载安装seata的安装包修改file.conf# service模块,配置分布式事务名称service{ group_mapping.my_test_tx_group = "aaa_tx_group"}# store模块,修改事务日志存储模式为数据库dbstore{ ## store mode: file、db mode ="db"}## database store 配置数据库项目配置项db{ ## the implement of javax.sql.DataS

2020-07-25 16:33:22 260

原创 Git命令之【基本操作+实战常用】

①Git回退(已经commit)Git允许我们在版本之间穿梭,HEAD指向的就是当前版本,上一个版本就是HEAD^,上上一个版本就是HEAD^^,当然往上100个版本写100个^比较容易数不过来,所以写成HEAD~100。e.g:git reset --hard HEAD。穿梭前可用git 1og可以查看提交历史,以便确定要回退到哪个版本。要回退历史,使用命令git reset --hard commit_id。要重返未来,用git relog查看要回到未来的哪个版本,同样用git reset -

2020-07-21 10:38:21 247

原创 配置

spring.main.allow-bean-definition-overriding=true假如项目中有两个bean的name一样,在项目启动时可能会报同名异常。springboot中,allowBeanDefinitionOverriding默认为false,spring默认为true。设置spring.main.allow-bean-definition-overriding=true,表示后发现的bean会覆盖之前相同名称的bean。...

2020-07-20 18:30:26 277

原创 注解

@JsonIgnore:在json序列化时将pojo中的一些属性忽略掉,标记在属性或者方法上,返回的json数据即不包含该属性。@Transient:实体类中使用了@Table注解后,想要添加表中不存在的字段,就要使用@Transient这个注解(只能修饰变量) ,@Transient表示该属性并非一个到数据库表的字段的映射,ORM框架将忽略该属性,如果一个属性并非数据库表的字段映射,就务必将其标示为@Transient,否则,ORM框架默认其注解为@Basic。@Temporal:数据库的..

2020-07-20 18:30:12 151

原创 SpringCloud Alibaba服务熔断降级与限流之【Sentinel】

Sentinel: 分布式系统的流量防卫兵下载sentinel-dashboard-1.7.2.jar,地址:https://github.com/alibaba/Sentinel/tags运行jar包,访问localhost:8080,来到sentinel界面,账号密码都是sentinel微服务整合sentinel建模块cloudalibaba-sentinel-service8401导依赖<!-- SpringCloud ailibaba nacos--><depen

2020-07-19 20:11:54 765

原创 SpringCloud Alibaba之Nacos作为服务注册和配置中心

NacosNacos命名由来:Naming+Configuration+Service=Nacos一句话Nacos= Eureka+Config+Bus安装下载地址:https://github.com/alibaba/nacos/tags启动:bin目录下启动nacos.cmd 访问http://localhost:8848/nacos登录账户密码都是nacosNacos作为服务注册中心建服务提供者模块cloudalibaba-provider-payment9001和cloud

2020-07-19 09:36:19 250

原创 SpringCloud 消息中间件组件、链路跟踪之【Stream && RabbitMQ、Sleuth】

什么是Spring Cloud Stream官方定义Spring Cloud Stream是一个构建消息驱动微服务的框架。应用程序通过inputs或者outputs来与Spring Cloud Stream中binder对象交互(我们主要就是操作binder对象与底层mq交换)。通过我们配置来binding(绑定),而Spring Cloud Stream的binder对象负责与消息中间件交互。所以,我们只需要搞清楚如何与Spring Cloud Stream交互就可以方便使用消息驱动的方式。通过使用

2020-07-18 14:16:25 351

原创 SpringCloud服务配置与消息总线之【Config、Bus】

分布式配置中心SpringCloud Config微服务面临的问题:可以看到,每个微服务都需要一个配置文件,并且,如果有几个微服务都需要连接数据库,那么就需要配4次数据库相关配置,并且当数据库发生改动,那么需要同时修改4个微服务的配置文件才可以,所以有了springconfig配置中心能力:集中管理配置文件不同环境不同配置,动态化的配置更新,分环境部署比如dev/test/prod/beta/release运行期间动态调整配置,不再需要在每个服务部署的机器上编写配置文件,服务会向配置中心统一拉取

2020-07-17 21:21:15 181

原创 SpringCloud服务网关之【Gateway】

理论SpringCloud Gateway 是 Spring Cloud 的一个全新项目,基于 Spring 5.0+Spring Boot 2.0 和 Project Reactor 等技术开发的网关,它旨在为微服务架构提供一种简单有效的统一的API路由管理方式。SpringCloud Gateway 作为 Spring Cloud 生态系统中的网关,目标是替代 Zuul在Spring Cloud 2.0以上版本中,没有对新版本的Zuul 2.0以最新高性能版本进行集成,仍然还是使用的Zuul 1.x

2020-07-17 12:24:47 402

空空如也

空空如也

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

TA关注的人

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