- 博客(213)
- 资源 (5)
- 收藏
- 关注

原创 分布式系统专题一:分布式系统介绍
文章目录一、发展背景二、什么是分布式系统?三、分布式系统所遇到的挑战(一)分布式session(二)分布式配置中心(三)分布式事务(四)分布式锁五、CAP理论六、BASE理论七、分布式定时任务一、发展背景1、单一应用架构当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。。2、垂直应用架构当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干...
2020-01-17 22:11:30
751

原创 微服务架构专题一:Spring-Cloud
什么是微服务?微服务就是把原本臃肿的一个项目的所有模块拆分开来并做到互相没有关联,甚至可以不使用同一个数据库。 比如:项目里面有User模块和Power模块,但是User模块和Power模块并没有直接关系,仅仅只是一些数据需要交互,那么就可以吧这2个模块单独分开来,当user需要调用power的时候,power是一个服务方,但是power需要调用user的时候,user又是服务方了, 所以...
2020-01-08 10:51:32
382
原创 MySQL主从架构、读写分离、集群相关面试问题
文章目录一、MySQL主从同步原理二、MySQL主从集群面试相关问题1、全库同步与部分同步2、GTID同步集群3、集群扩容与MySQL数据迁移4、理解半同步复制5、主从集群与读写分离6、扩展更复杂的集群结构一、MySQL主从同步原理既然要解决MySQL数据库的分布式集群化问题,那就不能不先了解MySQL自身提供的主从同步原理。这是构建MySQL集群的基础,也是后续进行分库分表的基础,更是MySQL进行生产环境部署的基础。其实数据库的主从同步,就是为了要保证多个数据库之间的数据保持一致。如果要保证数据能
2022-05-19 19:53:07
15222
原创 idea安装插件及java开发插件推荐
文章目录一、idea安装插件方式二、推荐使用的插件和说明:1、Free Mybatis plugin2、alibaba java coding guidelines3、lombok4、GenerateAllSetter5、SonarLint6、Maven Helper7、MybatisX8、GitToolBox9、Translation一、idea安装插件方式1、通过idea安装:File -> Settings -> Plugins -> Browse Repositories各个
2022-05-05 18:45:16
5262
原创 Mysql三:一条SQL在MySQL中是如何执行的
文章目录一条SQL在MySQL中是如何执行的1、连接器2、查询缓存3、分析器4、优化器5、执行器6、bin-log归档一条SQL在MySQL中是如何执行的大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。Server层主要包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数 (如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。Store层存储引擎层负责数据的存储和提取。其架
2022-04-25 14:01:31
12327
原创 将Byte数组转换成文件
public class ExcelTest { public static void main(String[] args) throws Exception{ String fileBytes = ""; byte[] bytes = Base64Util.decode(fileBytes); String path = "D:\\Users\\Downloads\\"; fileToBytes(bytes,path,"数据E
2022-01-28 10:36:46
10126
1
原创 SpringBoot中ApplicationListener事件监听的6种方式
Event事件:import org.springframework.context.ApplicationEvent;public class TestEvent extends ApplicationEvent { public TestEvent(Object source) { super(source); }}文章目录一、向ApplicationContext中添加监听器二、将监听器作为组件交给spring容器管理三、在application.prop
2021-07-05 16:42:55
1726
原创 JAVA 把一个List运用递归转成树形结构
在开发中,我们会遇到将不同组织架构合并成tree这种树状结构,那么如果做呢?实际上,我们也可以理解为如何将拥有父子关系的list转成树形结构,而这其中主要的方法就是递归!1、实体对象:@Datapublic class Node { private Integer id; private String city; private Integer pid; private List<Node> children; public Node(Inte
2021-06-15 09:34:51
91551
2
原创 对象某一字段做处理--fastjson的值过滤器ValueFilter
日常工作中,有时候打印日志或其他事情需要对对象的某一属性做处理,这时候推荐使用-fastjson的值过滤器ValueFilter。ValueFilter对序列化出来的值做统一处理,步骤如下:实现com.alibaba.fastjson.serializer.ValueFilter接口,实现其Object process(Object object, String name, Object value)方法,根据需要修改返回的值。调用fastjson序列化对象时,使用此filter一、实现ValueF
2021-03-09 13:51:09
2590
原创 SpringBoot配置多个mongo数据源
一、配置文件:#mongoDB1spring.data.mongodb.uri: mongodb://account:password@dds-sdfa1.mongodb.com:3717,dds-sdfa2.mongodb.=.com:3717/mongo库?replicaSet=mgset-35955429#mongoDB2mongodb.secondary.uri: mongodb://account2: password2@dds-sdfa1.mongodb.com:3717,dds-sdf
2020-12-18 16:03:32
6002
2
原创 均匀推送数量逻辑
在开发中,经常遇到要均匀展示在一段时间内的数目变化,例如2分钟内活跃人数,得均匀递增展示出来。这时需要后台在指定时间内均匀的将数量推送给前端显示;@Slf4jpublic class Task { public static void main(String[] args) { pushLoginCount("活跃人数",10,60,10); } /** * 比如均匀推送登入人数 * @param type 推送的服务类型 *
2020-06-22 14:19:49
7567
原创 红包算法
规则:所有人抢到金额之和等于红包金额,不能超过,也不能少于每个人至少抢到一分钱要保证所有人抢到金额的几率相等文章目录一、二倍均值法二、线段分割法三、红包面试题一、二倍均值法剩余红包金额M,剩余人数N,那么:每次抢到金额=随机(0,M/N2)保证了每次随机金额的平均值是公平的假设10人,红包金额100元第一人:100/102=20,随机范围(0,20),平均可以抢到10元第二人:90/92=20,随机范围(0,20),平均可以抢到10元第三人:80/82=20,随机范围(0,20),
2020-06-16 11:25:43
11558
2
原创 MongoTemplate 全面的 增删改查及复杂查询操作
这是借鉴其他博客非常全面的一张表:附带Criteria方法:文章目录1、查询1、查询书写格式一: //统计数量 public Integer count(Bean domin) { Query query = getCondition(domin); return (int)template.count(query, Bean.class, Bean.COLLECTION); } //查找列表 public List<Bean>
2020-06-12 13:51:33
32828
1
原创 非常全面的lambda表达式对List集合去重、分组、排序、过滤、求和、最值方法工具类
我们经常会对list集合去重,于是我自己花了点时间将如何用 lambda表达式对list集合去重做了封装和测试,方便以后快速使用。包括对对象集合中的某个属性去重等。如果有特殊的list去重要求,可以自行对下列方法进行修改。下列方法是本人验证过比较简便的写法,请参考:import java.util.*;import java.util.concurrent.ConcurrentHashMap;import java.util.function.Function;import java.util.f
2020-06-05 14:15:00
47075
2
原创 定义切面注解的方式来记录操作日志信息
在日常开发中,我们经常需要记录一些操作日志;如果每个在方法里面写API,会比较麻烦;故我们可以定义切面,来进行处理日志的记录;简化开发;下面的案例是自定义注解来记入日志;可以根据自己的需求来改变自己的切面实现和连接点,下面只是提供一个案例参考。一、注解SaveLog@Target({ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface SaveLog { String o
2020-05-29 16:28:51
8161
2
原创 多节点部署执行定时任务选举单一节点解决方案---redis
当服务部署在多个节点上时,定时任务会在每个节点上定时执行,这样是不合理的;因为我们只需要一个节点能够执行定时任务就行!解决方案:使用redis的setnx一、SpringBoot声明连接redis数据源其他博客中以及写过怎么配置redis,这里不做过多重复!1、RedisLock定义keyimport lombok.AllArgsConstructor;import lombok.Ge...
2020-04-23 15:39:56
10235
1
原创 A调用B方法,@Transactional事务失效情况
本人做了各种情况的测试,结果如下:总结:方法A调用方法B:1、如果只有A加@Transactional注解;则AB在同一事务中;2、如果只有B加@Transactional注解;AB方法为同一类,事务失效;AB不同类,只有B有事务;原理:spring 在扫描bean的时候会扫描方法上是否包含@Transactional注解,如果包含,spring会为这个bean动态地生成一个子类(即...
2020-04-22 17:06:30
10322
8
原创 Mysql sql语句基本常规操作!
文章目录一、数据定义语言基础DDL(Data Definition Language)(一)alter一、数据定义语言基础DDL(Data Definition Language)(一)alter字段修改1)添加字段语法:alter table 表名 add 字段名 类型alter table corp add platform_id BIGINT(20) DEFAULT NULL...
2020-04-17 10:27:00
370
原创 JAVA设计模式之责任链模式
文章目录一、责任链(Chain of Responsibility)模式二、责任链模式的结构三、源码四、纯的与不纯的责任链模式五、总结一、责任链(Chain of Responsibility)模式顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行...
2020-04-13 10:42:10
347
原创 DateUtils时间工具类
package com.boss.tools.utils;import org.apache.commons.lang3.StringUtils;import javax.validation.constraints.Null;import java.text.DateFormat;import java.text.ParseException;import java.text.Si...
2020-04-08 14:20:17
318
1
原创 SpringBoot解决跨域问题和Spring解决跨域问题
文章目录一、Springboot解决跨域问题二、Spring解决跨域问题一、Springboot解决跨域问题添加配置类:import org.springframework.context.annotation.Configuration;import org.springframework.web.servlet.config.annotation.CorsRegistry;impor...
2020-04-08 09:51:28
324
原创 HttpUtils开发工具类模版
文章目录一、HttpClient二、okHttp一、HttpClient依赖: <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> ...
2020-04-07 13:57:21
248
原创 SpringBoot+mybatis连接多数据库配置模版
操作数据库的框架一般是 Mybatis,但在很多业务场景下,我们需要在一个工程里配置多个数据源来实现业务逻辑。在SpringBoot中也可以实现多数据源并配合Mybatis框架编写xml文件来执行SQL。在SpringBoot中,配置多数据源的方式十分便捷。文章目录一、pom依赖配置二、application.yml 配置三、Java config配置一、pom依赖配置<depende...
2020-03-30 16:01:04
9249
原创 SpringBoot声明连接多个redis数据源配置模版
在实际开发中,我们可能会用到2个不同的redis数据源;如何连接查询详情:文章目录一、依赖二、配置文件三、config类配置四、序列化问题一、依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>...
2020-03-30 13:44:18
10029
2
原创 Arrays.asList将数组转换成集合,不可进行add和remove操作的原因
问题:Arrays.asList将数组转换成集合,不可进行add,addAll和remove操作: public static void main(String[] args) { List<String> strings = Arrays.asList("dddd", "dsad", "dsawe", "11111"); strings.ad...
2020-03-19 13:33:21
8068
1
原创 JAVA设计模式之模版模式
文章目录一、 模板设计模式在书中定义:二、 模板模式的类图:三、 实例说明四、 优点五、不足六、使用场景一、 模板设计模式在书中定义:定义一个操作中算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变算法的结构但可重定义该算法的某些特定步骤。通俗点的理解就是 :完成一件事情,有固定的数个步骤,但是每个步骤根据对象的不同,而实现细节不同;就可以在父类中定义一个完成该事情的总方法,按...
2020-03-16 17:20:43
262
原创 JAVA设计模式之策略模式
文章目录一、什么是策略模式二、具体案例三、问题和优化四、策略模式的应用一、什么是策略模式1、定义:策略模式(StrategyPattern):定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。是一种对象行为型模式。打个比方说,我们出门的时候会选择不同的出行方式,比如骑自行车、坐公交、坐火车、坐飞机、坐火箭等等,这些出行方式,每一种都是一个策略。在打个比方,我们购物下单需要支付...
2020-03-12 11:25:40
300
原创 十大排序算法专题 java实现:冒泡、选择、插入、希尔、归并、快速、堆排序、计数、桶、基数
文章目录1、冒泡排序(Bubble Sort)2、选择排序(Selection Sort)3、插入排序(Insertion Sort)1、冒泡排序(Bubble Sort)冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会...
2020-03-02 15:24:17
26021
原创 JVM专题二:GC算法和垃圾回收器
文章目录一、如何判断对象可以被回收(一)引用计数法(二)可达性分析算法(三)如何判断一个常量是废弃常量(四)如何判断一个类是无用的类二、垃圾回收算法(一)标记-清除算法(二)复制算法(三)标记-整理算法(四)分代算法三、垃圾收集器一、如何判断对象可以被回收堆中几乎放着所有的对象实例,对堆垃圾回收前的第一步就是要判断哪些对象已经死亡(即不能再被任何途径使用的对象)(一)引用计数法给对象添加一...
2020-02-29 22:09:38
86358
原创 spring boot 特性一:自动配置原理分析
Spring Boot中引入了自动配置,让开发者利用起来更加的简便、快捷,本篇分析下Spring Boot中的自动配置原理。注解结构:文章目录一、启动类:二、@SpringBootApplication注解三、@EnableAutoConfiguration一、启动类:二、@SpringBootApplication注解进入@SpringBootApplication的注解类,会发现...
2020-02-16 17:49:54
86262
原创 消息中间件之RabbitMQ专题之五:RabbitMQ的面试题
文章目录1、什么是RabbitMQ?为什么使用RabbitMQ?2、RabbitMQ有什么优缺点?3、如何保证RabbitMQ的高可用?4、RAM node 和 disk node 的区别?5、RabbitMQ 上的一个 queue 中存放的 message 是否有数量限制?6、如何保证RabbitMQ不被重复消费?7、如何保证RabbitMQ消息的可靠传输?8、如何保证RabbitMQ消息的顺序...
2020-02-13 21:00:32
86560
原创 消息中间件之RabbitMQ专题四:spring boot 整合rabbitmq 消息确认、消息预取、死信交换机
文章目录一、消费者如何确认消费?二、消息预取(一)rabbitmq消息的发放机制问题(二)解决办法三、死信交换机四、死信交换机案例一、消费者如何确认消费?为什么要确认消费? 默认情况下 消费者在拿到rabbitmq的消息时 已经自动确认这条消息已经消费了, 讲白话就是rabbitmq的队列里就会删除这条消息了, 但是 我们实际开发中 难免会遇到这种情况, 比如说 拿到这条消息 发现我处理不了 ...
2020-02-10 22:58:13
778
原创 消息中间件之RabbitMQ专题三:spring boot 整合rabbitmq 消息发送,失败回调,发送确认
文章目录一、引入spring boot -AMQP的依赖:二、配置连接,创建交换机,队列三、如何确保消息一定发送到Rabbitmq了?(一)失败回调(二)发送方确认模式四、完整案例一、引入spring boot -AMQP的依赖: <dependency> <groupId>org.springframework.boot</...
2020-02-10 16:49:26
2770
原创 消息中间件之RabbitMQ专题二:RabbitMQ介绍
文章目录一、消息中间件介绍二、RabbitMq介绍&AMQP介绍(一)AMQP(二)AMQP 协议中的基本概念(三)Exchange的类型(四)队列Queue(五)Virtual Hosts(六)基础对象三、RabbitMq快速开始一、消息中间件介绍我们用java来举例子, 打个比方我们客户端发送一个下单请求给订单系统(order)订单系统发送了一个请求给我们的库存系统告诉他需要更改...
2020-02-08 15:28:45
572
原创 消息中间件之RabbitMQ专题一:docker安装RabbitMQ
自从有了docker,安装这些软件真的简单多了,一个字:爽!文章目录一、选择RabbitMQ的版本二、docker安装RabbitMQ一、选择RabbitMQ的版本大家搜索镜像文件时,可直接到Docker的商店搜索,地址为:https://hub.docker.com/,RabbiMQ的相关镜像为:https://hub.docker.com/_/rabbitmq/,查看tags,可查看版本...
2020-02-07 15:24:34
7924
原创 分布式系统专题四:Zookeeper详细功能介绍
文章目录一、节点类型(znode)二、Stat三、Zxid四、Watch五、常用命令(一)创建节点(znode)(二)获取数据 、设置数据(三)创建子节点、列出子节点、移除Znode六、ACL一、节点类型(znode)持久节点,所谓持久节点,是指在节点创建后,就一直存在,直到有删除操作来主动清除这个节点。临时节点,和持久节点不同的是,临时节点的生命周期和客户端会话绑定。也就是说,如果...
2020-02-06 21:45:08
803
原创 JAVA面试专题二:线程
文章目录1、创建线程有几种不同的方式?你喜欢哪一种?为什么?2、什么是线程池? 为什么要使用它?3、线程池的有几种实现方式4、Runnable接口和Callable接口的区别5、start()方法和run()方法的区别6、概括的解释下线程的几种可用状态。7、请说出与线程同步以及线程调度相关的方法8、为什么wait, notify 和 notifyAll这些方法不在thread类里面?9、为什么wa...
2020-02-05 15:17:27
2995
原创 分布式系统专题三:Zookeeper集群搭建
因为是在单机环境下模拟集群环境,所以需要用不同端口来模拟不同主机。搭建集群前,我们先来了解Zookeeper集群的角色;文章目录一、集群的角色二、集群环境搭建(一)复制配置文件一、集群的角色1)领导者(Leader) : 负责进行投票的发起和决议,最终更新状态。2)跟随者(Follower): Follower用于接收客户请求并返回客户结果。参与Leader发起的投票。3)观察者(ob...
2020-02-04 15:25:18
405
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人