- 博客(67)
- 收藏
- 关注
原创 springBoot 事件
第一步需要有一个事件对象public class MyCustomEvent extends ApplicationEvent { private String msg; public MyCustomEvent(Object source) { super(source); } public MyCustomEvent(Ob...
2020-04-08 11:40:08
258
原创 springBoot多线程 异步编程
首先配置一个多线程(异步编程)的配置类,返回一个用于执行多线程的线程池。@Component@EnableAsync //开启多线程异步编程public class MyAsyncConfig implements AsyncConfigurer { @Override public Executor getAsyncExecutor() { //返回一个线程池 ...
2020-04-08 11:27:31
324
原创 数据库优化
如何定位慢查询?以慢查询的方式启动数据库,设置慢查询时间,超过这个时间的sql语句就会被记录下来,explain 查看sql为什么慢。数据库的优化:1.适当违反三范式(设置冗余字段)。2.选择合适的索引。MYISAM:不支持事务,不支持外键,查询和插入效率高,适用于查询和插入对事务要求不高的操作。InooDB支持事务,支持外键,效率要低一点,适用于对事务要求较高的操作。3.创建合适的索引...
2020-02-18 00:43:16
111
原创 JVM以及JVM优化
类加载过程:1.加载:通过类加载器,将class文加加载到内存。2.验证:验证文件是否符合java规范。3.准备:就是为static修饰的变量,赋予初始值,并且分配内存空间。4.解析:就是将java代码中的符号引用替换为直接引用。5.初始化:对变量赋值。jvm运行时数据区组成:方法区(1.8之后叫元空间):主要存放类信息,和static的变量,线程共享。堆:对象和数组存放的地方,...
2020-02-17 23:56:27
151
原创 线程池
线程池线程池的作用节省创建线程和销毁线程的时间。控制线程最大数量。任务被添加进线程池的执行策略线程池的关键参数核心数量:最小存活的线程数量。最大线程数:可以存活的线程最大的数量。线程存活时间:核心线程以外的线程空闲超过了这个时间就会被销毁。线程工厂:用来创建线程。拒绝策略:当线程数和队列都忙得时候,再有任务到达就会执行拒绝策略。等待队列:就是将任务放入到队列中。可以通...
2020-02-17 21:58:03
122
原创 多线程
什么是多线程计算机分为线程和进程,像windows资源管理器中的就是一个一个的进程,进程单独享有一段内存。而线程是在进程中运行的,它是用来完成一些任务,享有进程的内存和资源,一个进程有多个线程,多个线程之间的顺序是不共享的,像边听歌,边评论,就是多个线程在处理。线程的实现方式继承Thread继承Thred重写run()方法,调用start()方法启动一个线程。实现Runnable接口实...
2020-02-17 21:44:53
154
原创 集合
集合分为list,set,map。list和set接口继承collection。Listlist有三个实现类ArrayList、LinkedList和Vector,有序,可重复;ArrayListArrayList线程不安全,可以存重复的值以及null,保证存入和取出的顺序,底层是一个数组,ArrayList的查询和修改的效率很高,但是新增,删除和插入的效率就比较低,比如说头插就会涉及到大...
2020-02-17 20:45:11
95
原创 Mysql优化
数据库优化可以从单体优化和分布式优化来做。单体优化表结构从字段上来说,可以使用char,不适用varchar,即用小不用大。再创建表的时候,可以适当违反3NF创建冗余字段,比如员工和部门,前端使用员工人数比较多的话,可以在部门表设计一个字段表示员工的数量,省去join查询的时间,但是在员工表有人员变动的时候,可以使用触发器,更新部门表的人数。创建合适的索引,减少查询时间。使用合适的引...
2020-02-13 19:33:02
112
原创 Mysql DISTINCT使用方法
distinct 用于 去重,如果单独查询一个字段并对其去重,那么结果会是所有重复的都会被去掉。如果是几个字段,并单独对一个字段去重,那么去重的规则是,其他字段不同,这个字段不会被去除。比如:表结构sql语句:select DISTINCT(salary),emp_no from salaries按distinct官方解释只会展示两条数据。可以结果是这样的结论是:即使sala...
2020-02-12 21:27:23
469
原创 volatile 优化的单例懒汉模式
public class SingleInstance {// 加volatile防止指令重排 private static volatile SingleInstance INSTANCE = null; private SingleInstance() { } public static SingleInstan...
2020-02-12 00:46:06
280
原创 Redis + RabbitMQ 解决秒杀高并发,实现异步处理
思路商品秒杀是典型的高并发场景,为了提高性能,减少数据库的访问次数可以把数据加载到redis中,在redis中进行商品的库存减少,而且不会存在线程安全问题,当redis中商品减少成功后,可以把消息推送到rabbitMQ中,实现异步同步到数据库,让数据库按照他自己本身的处理能力到rabbitmq中去取消息.项目架构 <parent> <groupId>org.s...
2020-02-09 00:57:13
5950
原创 基本数据类型的享元模式
Byte,short,Integer 内部缓存了-128-127的数据,在这个范围内,已经存在的值,再一次new这个范围的对象不会创建新的对象.
2020-01-28 21:24:51
268
1
原创 List快速去重并排序
list快速去重并排序,使用了TreeSet(传入的对象实现Comparable或者传入比较器Comparator)package com.marui.test;import java.util.*;/** * @Auther: Little Pig * @Date: 2020/1/16 15:35 * @Description: */public class Test {...
2020-01-28 21:11:30
819
原创 SpringCloud RabbitMQ 手动ack
配置文件 rabbitmq: customizeRoutingKey : hrmHomeSite host: 127.0.0.1 port: 5672 listener: simple: acknowledge-mode: manual #手动签收监听方法@RabbitListener(queues = {RabbitmqConfig.QU...
2020-01-11 22:45:54
1425
原创 springBoot 无法注入加载Bean
多个模块依赖的时候,包名相同的情况下,类名不要相同.不同模块出现相同包的情况下,不要出现类名相同的类.
2020-01-10 22:43:05
994
原创 RabbitMQ 几种模式
普通模式一个生产者,一个交换机,一个队列,一个消费者.生产者public class Send { private final static String QUEUE_NAME = "hello"; public static void main(String[] args) throws IOException, TimeoutException { /...
2020-01-08 18:38:50
307
原创 RabbitMQ 入门
基本概念 MQ全称为Message Queue,即消息队列. 它也是一个队列,遵循FIFO原则. RabbitMQ是由erlang语言开发,基于AMQP(Advanced Message Queue Protocol高级消息队列协议)协议实现的消息队列,它是一种应用程序之间的通信方法,消息队列在分布式系统开 发中应用非常广泛。应用场景:消峰&限流应用解耦异步处理数据...
2020-01-07 20:27:00
104
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人