- 博客(54)
- 资源 (2)
- 收藏
- 关注
原创 SpringCloudAlibaba系列之Seata实战
一文搞懂如何部署seata服务端,并学会如何在实际项目当中集成seata分布式事务解决方案。
2024-03-17 16:00:19
708
1
原创 SpringCloudAlibaba系列之Nacos服务注册与发现
深入理解Nacos服务注册与发现实现原理,一文搞懂微服务注册中心核心原理及实现。
2023-11-19 15:48:14
550
原创 Mybatis Plus快速实现关联查询并支持分页
1.相关基础类和工具类的准备import io.swagger.annotations.ApiModel;import io.swagger.annotations.ApiModelProperty;import lombok.Data;import java.io.Serializable;import java.util.List;/** * 分页结果数据接收对象 *...
2020-04-05 21:37:22
2540
1
原创 Redis过期策略&内存淘汰机制
大家都知道,redis是基于内存来存储数据的,但是内存资源是有限的,我们需要时刻考虑redis的内存容量。在实际工作过程当中,我们需要清楚redis的过期策略和内存淘汰机制。一、redis的过期策略定期删除:定期(100ms)从所有key中随机选择一些进行删除;惰性删除:在我们获取key的时候,先检查key的过期时间,如果过期,便进行闪出去;通过上面这两种方式,依旧会存在一些key...
2019-06-12 10:16:51
763
原创 代码自动生成器增强版
在项目中,实体类等生成,我们基本上不用手动去写,全部自动生成。详细内容请参考GitHub项目:https://github.com/williamjava/code_generator
2019-06-06 17:24:46
292
原创 Linux服务器上如何正确复制一个现有的Tomcat
在我们实际工作过程当中,有的时候会遇到如下这种情况:需要在服务器(Linux)上部属多个Tomcat,那么在已经存在一个Tomcat的情况下,我们如果快速并且正确地部属另一个呢?下面我们一起来看看具体的步骤。1.复制一个已经存在的tomcat目录cp -rf 已存在的tomcat目录名称 新的tomcat目录名称(如:cp -rf tomcat-admin tomcat-test)...
2019-06-04 15:29:42
4934
原创 Spring MVC整合MyBatis和MySQL
前段时间自己发布了一篇关于SpringMVC结合Redis的小实例,今天呢,想和大家分享一下自己最近使用Spring MVC结合MyBatis+MySQL的小实例,在这里先贴出一下自己在GitHub上共享的代码Demo,下面我会贴出一些核心的内容以及相关总结。GitHub上的Demo地址如下:https://github.com/williamjava/demo1、准备工作...
2019-06-04 15:14:09
374
原创 Spring MVC集成Redis
最近空闲时间,自己打算复习复习Spring MVC,于是使用Maven+Spring MVC+Redis搭建了一个项目,全当是做一个知识回顾。在这个过程当中,也遇到了各种各样的问题,在这里和大家一起分享一下,如有遇到类似问题还没有解决的,希望能帮到大家。下面我将一步步贴出源代码以及总结遇到的一个个问题。1、pom.xml<project xmlns="http://mave...
2019-06-04 15:09:03
2795
原创 ES的Head插件和集群环境搭建
一、Elastic Search的Head插件 在Elastic Search初探第一篇中我们说到了Kibana,通过它我们可以以UI的方式来操作ES、监控ES等。这里分享ES好用的另外一个插件——Head。具体使用步骤如下:第一步:下载插件,地址为:https://github.com/mobz/elasticsearch-head/archive/master.zip;...
2019-06-04 14:56:41
424
原创 ElasticSerach初探 - 认识ES+环境搭建+简单MySQL数据同步+SpringBoot整合ES
一、认识ElasticSearch是一个基于Lucene的开源搜索引擎,通过简单的RESTful API来隐藏Lucene的复杂性。全文搜索,分析系统,分布式数据库;elasticsearch的革命性就在于将这些单一的有用的技术整合成一个一体化的”实时的应用”。二、ElasticSearch环境搭建1.安装ElasticSearch从官网下载,https://www.elas...
2019-06-04 14:49:55
3336
原创 从前端到后端的性能优化整体概览
我们以一个实际的场景来整体认识一下从前端到后端的性能优化。场景:一个Web前端的请求发出之后,需要等待比较长的时间,才能得到完整的响应。针对这种情况,我们需要怎么考虑呢?三个方面:Web前端层面,应用服务器层面和存储层面。下面我们来简单说说。一、Web前端性能优化1.优化浏览器的访问,主要包括:减少HTTP的请求数,像各种css、js和图片能合并就合并;使用浏览器缓存;压缩页...
2019-06-04 14:42:19
840
原创 HashMap的put方法原理
本篇内容基于JDK 1.8一、HashMap的put方法流程如下图二、具体的源码分析/** * Associates the specified value with the specified key in this map. * If the map previously contained a mapping for the key, the old * value ...
2019-05-31 10:30:09
12429
2
原创 Spring Cloud Feign相关原理分析
1.认识Spring Cloud Feign在使用Spring Cloud构建的微服务架构中,Feign用来提供声明式的服务客户端定义方式。Feign是一个伪客户端(不做任何的请求处理),它通过处理注解生成request,以此来简化HTTP API的开发。2.定义的服务接口是如何注册到Spring容器的?这里我们需要关注两个注解:@FeignClient:使用在我们定义的服务接口上,表示...
2019-05-24 12:31:49
1827
原创 SpringBoot快速集成RabbitMQ
一、windows下如何安装RabbitMQ1.安装RabbitMQ需要先安装Erlang语言开发包,百度网盘地址:http://pan.baidu.com/s/1jH8S2u6。直接下载地址:http://erlang.org/download/otp_win64_18.3.exe。安装完成后需要配置环境变量:新建系统变量:变量名 ERLANG_HOME 变量值 D:\softInsta...
2019-05-21 13:43:55
1028
原创 浅谈Spring事务
1.事务的基本原理Spring事务的本质其实就是数据库对事务的支持,没有数据库的事务支持,spring是无法提供事务功能的。对于纯JDBC操作数据库,想要用到事务,可以按照以下步骤进行:a.获取连接 Connection con = DriverManager.getConnection();b.开启事务con.setAutoCommit(true/false);c.执行CRUD操作;...
2019-05-05 11:41:49
256
原创 浅谈MySQL数据库的事务
1.事务的4大基本要素(ACID)原子性(Atomicity):事务是一个不可分割的工作单位,其中的操作要么都发生,要么都不发生。一致性(Consistency):事务前后数据的完整性必须保持一致。隔离性(Isolation):同一时间,只允许一个事务请求同一数据,不同的事务之间彼此没有任何干扰。持久性(Durability):事务一旦提交,它对数据库中数据的改变是永久性的。2.事务的...
2019-05-05 11:39:04
232
原创 过滤器和拦截器
整体认识:过滤器和拦截器是我们常说的AOP思想的两个具体实现,接下来我们一起看看它们之间的区别和具体的使用。1.过滤器和拦截器的区别使用范围:过滤器是Servlet规范规定的,仅用于Web程序中;拦截器是属于Spring容器内的,既可用于Web程序中,也可用于非Web程序中;使用资源:由于拦截器是属于Spring容器内的,也是属于Spring的一个组件,它就可以使用Spring容器中的所有...
2019-04-28 17:19:50
612
原创 线程的start方法和run方法
在我们分析线程的start方法run方法之前,我们先来看看线程的状态变化:接下来我们来具体看看线程的start方法和run方法的区别。这里我们通过一个Demo来看看。public class MyThread extends Thread { @Override public void run() { System.out.println(Thread...
2019-04-26 15:38:40
1367
1
原创 wait方法和notify方法的区别
1.wait()和sleep()的区别wait()是Object类的方法,sleep()是Thread类的方法;调用Object对象的wait方法,线程会放弃对象锁,进入等待此对象的等待锁定池;只有针对对象调用notify()方法后当前线程才进入对象锁定池准备获取对象锁进入运行状态,如果没有notify,对应的线程会挂起;sleep()方法会让程序暂停执行指定的时间,让出CPU给其他线程,但...
2019-04-26 15:16:30
2407
原创 创建线程的三种方式
1.继承Thread类public class ThreadWait extends Thread { @Override public void run() { //... }}2.实现Runnable接口public class ThreadSleep implements Runnable { @Override public v...
2019-04-26 15:07:36
168
原创 Redis的缓存穿透、缓存雪崩和缓存击透
1.缓存穿透什么是缓存穿透?查询一个数据库中一定不存在的数据。在一些查询场景中,我们会选择使用缓存来存储查询结果,提高查询的效率。比如电商系统中的商品,第一次从数据库中查询商品信息,然后放入缓存;第二次将会直接从缓存中获取。如果恶意攻击,进行大量不存在的商品查询,如果我们没有特殊处理,就会给数据库造成巨大的压力,严重的情况就会造成数据库崩溃(这就是我们要说的缓存穿透)。解决方案:针对不...
2019-04-26 11:03:44
482
原创 深入解析SpringBoot启动原理
1.启动类中的SpringApplication.run方法会创建一个SpringApplication的实例,并做一些初始化工作@SpringBootApplication@Slf4jpublic class HuotuUserServiceApplication { public static void main(String[] args) { Applicat...
2019-04-25 18:05:20
871
1
原创 Nginx配置负载均衡
1.配置文件nginx.conf增加如下内容upstream keguan-api-servers { ip_hash; server 服务器1IP:端口; server 服务器2IP:端口;}2.服务1对应的Nginx配置server{ listen 80; server_name 服务1域名; #charset koi8-r...
2019-04-18 17:51:46
157
原创 Git常用命令
1. 新建分支dev,此时只存在于本地git branch dev2. 切换到dev分支git checkout dev3. 查看本地的所有分支git branch4. 把本地的分支dev推到远程(此时,远程才会有dev分支)git push origin dev5. 查看远程分支git branch -r6. 拉取远程分支的最新状态git fetch7. 查看...
2019-04-18 11:02:58
120
原创 SpringCloud与Consul
一、环境准备(Windows平台)1.https://www.consul.io/downloads.html下载对应平台的consul2.启动consul服务端./consul.exe agent -server -bind=127.0.0.1 -client=0.0.0.0 -bootstrap-expect=1 -data-dir=/e/data/application/consu...
2019-04-17 16:54:02
265
原创 微服务监控
微服务监控用来监控所有基于Spring Boot实现的应用。涵盖的功能主要包括如下几个方面:每一个应用的状态信息;日志信息;应用环境参数等。另外,在每一个应用状态发生变化的情况下,会邮件通知配置的开发者(需要配置)。其核心原理是读取Eureka服务注册与发现中心的所有服务信息。1.完整的maven配置<?xml version="1.0" encoding="UTF-8"?>...
2019-04-12 16:43:39
1169
原创 微服务链路跟踪
一、认识微服务跟踪的基础设施1.zipkintwitter开源的分布式跟踪系统,它的主要功能是收集系统的时序数据,从而追踪微服务架构的系统延时等问题。同时,它还提供了一个非常友好的界面,来帮助分析追踪数据。另外,它还有助于分析微服务之间的依赖关系。2.Spring Cloud Sleuth为Spring Cloud提供了分布式跟踪的解决方案。3.微服务跟踪的目的服务之间通过网络进行...
2019-04-12 16:31:49
508
原创 yaml和properties文件的区别
浅谈springboot架构中yaml文件和properties文件的区别,这里以jdbc连接配置为例。1.yaml语法风格的配置spring:datasource:driverclassname: com.mysql.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/db_nameusername: rootpassword: r...
2019-04-11 19:19:51
4183
原创 SpringBoot结合poi导出excel
1.maven依赖<dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.17</version></dependency><dependency...
2019-04-11 18:13:20
293
原创 SpringBoot自动配置原理分析
继之前的文章SpringBoot核心注解之后,今天我们一起来分析一下SpringBoot的自动配置实现原理,表面上看起来深不可测,当我们分析过源码之后,会觉得它本身并没有那么复杂。通过分析springboot源码,我们发现在@EnableAutoConfiguration注解中,@Import(Spring 提供的一个注解,可以导入配置类或者Bean到当前类中)导入了AutoConfigura...
2019-04-11 16:21:25
275
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人