自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 java中使用elasticsearch实现高亮查询其实很简单

添加高亮查询红色框的地方不能少核心思想,就是把原来的字段用高亮字段去替换接下来就是把高亮字段替换掉原来map的字段直接上完整代码 //2、从索引库获取数据实现搜索功能 public ResponseResult search(String keywords,int pageNo,int pageSize) throws IOException { if (pageNo<=1){ pageNo=1; }

2020-07-07 10:47:09 5559 6

原创 23种设计模式(单例模式)

单例模式多种写法饿汉式顾名思义 饿汉式 不管你有没有调用获取实例的方法 该实例对象依然会被创建,浪费内存空间。饿汉式又有多种写法1、 最常见的写法好处就是用法简单很常见缺点浪费内存空间。public class SingletonTest01 { public static void main(String[] args) { //测试 SingleTon singleTon = SingleTon.getInstance(); Singl

2021-07-04 13:41:04 129

转载 mybatis的执行流程

mybatis执行流程1、读取MyBatis的核心配置文件。mybatis-config.xml为MyBatis的全局配置文件,用于配置数据库连接、属性、类型别名、类型处理器、插件、环境配置、映射器(mapper.xml)等信息,这个过程中有一个比较重要的部分就是映射文件其实是配在这里的;这个核心配置文件最终会被封装成一个Configuration对象2、加载映射文件。映射文件即SQL映射文件,该文件中配置了操作数据库的SQL语句,映射文件是在mybatis-config.xml中加载;可以加载多个

2020-11-15 11:53:42 775

转载 Mybatis的执行流程以及各部分面试题

mybatis

2020-11-13 20:57:35 185

转载 可能是最漂亮的Spring事务管理详解

spring事务

2020-11-13 09:02:15 112

转载 HashMap的底层实现原理

HashMap的底层实现原理

2020-10-13 11:00:26 62

原创 ArrayList 、LinkedList 、Vector 的区别?

ArrayList :作为 List接口的主要实现类 ,动态数组,线程不安全的,但是查询的效率高,底层使用Object [ ] elementDataLinkedList:对于平凡插入 , 删除数据效率较高 底层使用的是双向链表的结构存储Vector :作为 List接口的古老实现类 ,线程是安全的 效率低 ,底层使用Object [ ]elementData( )存储更多的详情看这里...

2020-10-07 16:07:02 49

原创 ArrayList源码分析

ArrayList 是我们经常用到的,在jdk1.7中 和 1.8 些许不同jdk1.7情况下ArrayList list = new ArrayList();底层创建了长度为10 的Object[ ] 数组elementData, 当list . add(123) 时 其实是 elementData [0] = new Integer(123);…list.add(11); 如果此次的添加 导致底层的elementData 的数组容量不足时,则会扩容,默认情况下,扩容为原来容量的1.5倍 ,同

2020-10-07 15:59:43 46

原创 线程池的拒绝策略,是什么?内置的有哪些特点?

拒绝策略:等待队列已经排满了,再也塞不下新任务了同时,线程池中的max线程也达到了,无法继续为新任务服务。这个是时候我们就需要拒绝策略机制合理的处理这个问题。四种内置的拒绝策略一、AbortPolicy(默认):直接抛出RejectedExecutionException异常阻止系统的正常运行二、CallerRunsPolicy :”调用者运行“ 一种调节机制,该策略既不会抛弃任务也不会抛出异常,而是将某些任务回退到调用者,从而降低新任务的流量三、DiscardOldesPolicy

2020-10-04 19:34:34 155

原创 线程池为什么不用Executors创建?或者说,Executors中JDK已经给你提供了为什么不用?

阿里巴巴 开发手册

2020-10-04 19:25:30 295

原创 java线程池的运行原理

七大参数介绍点这里1、在创建了线程池后,开始等待请求。2、当调用execute()方法添加一个请求任务时,线程池会做出如下判断:2.1如果正在运行的线程数量小于corePoolSize,那么马上创建线程运行这个任务;2.2如果正在运行的线程数量大于或等于corePoolSize,那么将这个任务放入队列;2.3如果这个时候队列满了且正在运行的线程数量还小于maximumPoolSize,那么还是要创建非核心线程立刻运行这个任务;2.4如果队列满了且正在运行的线程数量大于

2020-10-03 21:02:10 129

原创 ThreadPoolExecutor 线程池的七大参数

源码 public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> wo

2020-10-03 09:58:41 196

原创 BlokingQueue的实现类ArrayBlockingQueue的api,详解

顾名思义阻塞队列在多线程领域:所谓阻塞,在某些情况下,会挂起(阻塞),一旦满足条件被挂起的线程又会被自动唤醒为什么需要BlockingQueue好处是我们不用关心什么时候需要阻塞线程,什么时候需要被唤醒,因为这一切被BlockingQueue包办介绍:ArrayBlockingQueue:有数组结构构成的有界阻塞队列解析:抛出异常:当阻塞队列满时,再往里面add 插入元素会抛出异常当阻塞队列空时,再往里面remove移除元素会抛出NoSuchElementException特殊

2020-10-02 21:29:57 376

原创 读写锁,ReadWriteLock

当多线程同时读一个资源类没有任何问题,所以为了满足并发量,读取共享资源应该要同时进行但是,如果有一个线程想去写共享资源,就不应该再有其他线程可以对该资源进行读或写小总结:1、读-读 能共存2、 读-写 不能共存3、 写-写 不能共存实例package com.wj;import java.util.HashMap;import java.util.Map;import java.util.concurrent.TimeUnit;import java...

2020-09-30 20:21:44 128

原创 ArrayList多线程环境下不安全,该如何解决问题呢???

ArrayList 线程不安全在多线程得环境下,线程会争抢资源,导致java.util.ConcurrentModificationException 并发修改异常解决方法:Vector将ArrayList 替换成为Vector原理:*将指定的元素插入到此Vector的指定位置。将当前在该位置的元素(如果有的话)和任何后继元素右移(将其索引加一)源码: /** * Inserts the specified element at the specified position in

2020-09-27 11:39:28 307

转载 Java多线程——线程八锁案例分析

Java多线程——线程八锁案例分析多线程的八个案例通过分析代码,推测打印结果,并运行代码进行验证。1)两个线程调用同一个对象的两个同步方法代码如下:public class Demo { public static void main(String[] args) { Number number = new Number(); new Thread(new Runnable() { @Override pub

2020-09-26 23:49:32 85

原创 volatile的理解

volatilevolatile是java 虚拟机提供的轻量级的同步机制三大特性:保证可见性,禁止指令重排,不保证原子性

2020-09-24 21:57:23 67

原创 mysql索引的创建原则,根据规则条件才能创建更加适合高效的索引

1、对于查询频次较高的表,且数据量较大的表建立索引2、索引的字段经常出现在where 子句中的字段,如果where 子句的条件比较多,应该挑选最常用的,过滤效果最好的建立索引3、尽量使用唯一索引,区分度越高,索引效率越高4、索引可以有效提升查询的效率,但是索引不是越多越好,索引越多,维护索引的代价自然水涨船高,对于数据的更新等管理操作,比较频繁的表来说,索引过多会导致相当高的维护代价,较低dml的操作效率5、使用短索引,索引创建后也是使用硬盘来存储,因此提升索引的访问的i/o效率,也可以提升总体的访

2020-08-26 20:34:23 345

原创 SimpleDateFormat,有时候上传图片时使用日期作为文件命名,很容易造成图片文件明明存在却有时候访问不到,这是因为SimpleDateFormat 是不同步的

代码实例:public static SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy_MM_dd");源码:解决方法:加锁:private final Object mLock = new Object(); synchronized (mLock){ //这里可以将使用到了SimpleDateFormat对象的代码放在这里 format = simpleDateFormat.form

2020-08-16 21:08:40 111

原创 idea中构建的web项目感觉没问题部署到tomcat后就是访问不到404

先查看静态资源是否都完整的输出了如果输出不完整需要添加依赖,解决maven静态资源过滤的问题就好。 <!--资源导出--> <build> <resources> <resource> <directory>src/main/java</directory> <includes>

2020-08-06 14:35:33 535

原创 如何解决hashset在多线程下不安全?

## 两种反射 推荐使用第二种 效率较高 Set<String> set = Collections.synchronizedSet(new HashSet<>()); Set<String> set = new CopyOnWriteArraySet<>();//写入时复制package unsafe;import java.util.Collections;import java.util.HashSet;import java.

2020-07-29 12:16:00 834

原创 如何解决并发下ArrayLIst在并发下不安全的问题?

有三种解决方法 建议使用第三种1、List list = new Verctor<>();1、List list = Collections.synchronizedList(new ArrayList<>());1、List list = new CopyOnWriteArrayList<>();CopyOnWrite 写入时复制 COW 是计算机程序设计的一种优化策略多个线程调用list 读取的时候 固定的写入覆盖,在写入时避免覆盖造成数据问题Co

2020-07-29 11:59:44 270

原创 Synchronized和lock锁的区别

第一、Synchronized 是内置的java关键字、Lock是一个java类第二Synchronized 无法判断锁的状态,而Lock可以判断锁的状态第三、Synchronized 会自动释放锁,而lock需要手动 释放锁第四、Synchronized 如果线程1获得锁,阻塞了,线程二会一直等待, 而lock锁不一定会等待下去(tryLock)第五、Synchronized 可重入锁,不可以中断、非公平;Lock 可重入锁、可以判断锁、非公平(可以自己设置);第六、Synchron

2020-07-27 10:19:49 255

原创 sentinel持久化规则到nacos

环境配置pom.xml添加依赖 <!--SpringCloud ailibaba sentinel-datasource-nacos 后续做持久化用到--> <dependency> <groupId>com.alibaba.csp</groupId> <artifactId>sentinel-datasource-nacos</artifactId>

2020-07-24 13:45:41 1682 1

原创 sentinel中如何使用openFeing来调用服务

sentinel中如何使用openFeing来调用服务这里举例的是消费者端,使用openFeign来调用服务提供者,服务注册中心是nacos具体操作看代码环境的配置application.yml激活sentinel对feign的支持主启动类需要添加注解开启openfeign使用openfeign更加的满足了程序员,在开发当中使用controller层调用service层所以配置所谓的 “service”【注意:】需要在接口处添加@FeignClient注解其中value指定的是服

2020-07-24 12:59:43 350

原创 sentinel的@SentinelResource注解详解

@SentinelResource用于定义资源,并提供可选的异常处理和 fallback 配置项。 @SentinelResource 注解包含以下属性:value:资源名称,必需项(不能为空)entryType:entry 类型,可选项(默认为EntryType.OUT)blockHandler / blockHandlerClass: blockHandler 对应处理 BlockException 的函数名称,可选项。blockHandler 函数访问范围需要是 public,返回类型需要与

2020-07-23 17:39:18 2802

原创 sentinel服务降级

服务降级一共有三种服务降级的方式RT触发时机【注意】当1s内持续5个请求且平均响应时间大于阈值,触发降级当时间窗口期限过了之后关闭降级平均响应时间 (DEGRADE_GRADE_RT):当 1s 内持续进入 N 个请求,对应时刻的平均响应时间(秒级)均超过阈值(count,以 ms 为单位),那么在接下的时间窗口(DegradeRule 中的 timeWindow,以 s 为单位)之内,对这个方法的调用都会自动地熔断(抛出 DegradeException)。注意 Sentinel 默认统计的

2020-07-23 11:46:07 776

原创 sentinel服务限流

使用sentinel服务限流一、QPS限流直接拒绝方式是默认的流量控制方式,当QPS超过任意规则的阈值后,新的请求就会被立即拒绝,拒绝方式为抛出FlowException二、Warm UpWarm Up方式,即预热/冷启动方式。当系统长期处于低水位的情况下,当流量突然增加时,直接把系统拉升到高水位可能瞬间把系统压垮。通过"冷启动",让通过的流量缓慢增加,在一定时间内逐渐增加到阈值上限,给冷系统一个预热的时间,避免冷系统被压垮三、排队等待匀速排队方式会严格控制请求通过的间隔时间,也即是让请求

2020-07-23 11:05:14 155

原创 nacos作为配置中心怎么实现,其实就很优雅

nacos作为配置中心非常的简洁,支持各种格式,动态刷新,就不需要将公共配置写在每一个微服务上了具体操作新建工程改pom <dependencies> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-config</a

2020-07-22 18:03:33 707

原创 nacos作为服务注册中心,实现服务调用,负载均衡(轮询)的具体操作

新建两个服务提供者(测试)导pom两个服务提供者都要导入<dependencies> <!--alibaba--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifac

2020-07-22 17:44:29 3592 6

原创 maven静态资源过滤问题

<build> <resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.xml</include> </includes

2020-07-20 16:43:40 83

原创 java动态代理,难以理解,可以直接将其当成动态代理的工具类使用

动态代理工具类!package test3;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;public class ProxInvocationHandler implements InvocationHandler{ //被代理的接口 private Object target; //使用set方法生成代理接口 p

2020-07-19 21:43:27 221

原创 Unable to connect to Command Metric Stream.豪猪哥监控界面报错,显示不出来,其实这是springcloud升级带来的坑

来看看错误:想达到监控的目的需要具备几个条件至少需要在被监控的页面开启熔断机制第一监控者豪猪哥必须添加依赖 <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-hystrix-dashboard</artifactId> &lt

2020-07-15 07:36:07 478

原创 fallback method wasn‘t found: PaymentInfo_timeout_handler使用hystrix进行服务降级,报错

先来看看错误的内容这个是请求出现了异常,然后执行兜底的方法,然而兜底的方法参数有异常。就会报这个错误了上代码只要添加上原有的参数就可以正常服务降级了

2020-07-14 17:22:07 660 1

原创 负载均衡,手写轮询算法,轮询其实就是请求次数%服务总数,然后根据余数,取出服务来提供服务

负载均衡,轮询算法面向接口编程:有接口必有实现:测试:附上代码接口:package com.wwjj.springcloud.lb;import org.springframework.cloud.client.ServiceInstance;import java.util.List;public interface LoadBalancer{ ServiceInstance instance(List<ServiceInstance> instance

2020-07-13 17:36:24 268

原创 id生成器,世界没有两个一样的id

package com.wwjjbt.sob_blog_system_mp.utils;public class IdWorker{ //下面两个每个5位,加起来就是10位的工作机器id private long workerId; //工作id private long datacenterId; //数据id //12位的序列号 private long sequence; public IdWorker(long workerId, l

2020-06-30 08:24:26 134

原创 在开发中经常使用到cookie,既然如此就需要cookie的工具类啦

package com.wwjjbt.sob_blog_system_mp.utils;import javax.servlet.http.Cookie;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class CookieUtils { public static final int default_age = 60*60*24*365

2020-06-29 16:35:38 112

原创 jwt生成Token的工具类。

当做用户登录业务的时候一般需要使用到jwttoken就好比一个人的身份证当然token也会过期,可以自定义过期时间。不多废话直接上工具类package com.wwjjbt.sob_blog_system_mp.utils;import com.wwjjbt.sob_blog_system_mp.pojo.TbUser;import io.jsonwebtoken.Claims;import io.jsonwebtoken.Jwts;import io.jsonwebtoken.Signat

2020-06-26 15:27:06 1160

原创 redis的一些常用操作封装成为一个组件。大大简化常用的原生api,注入即用

package com.wj.redis02.utils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.stereotype.Component;import org.springframework.util.CollectionUtils;impor

2020-06-05 10:16:43 241

原创 springboot整合redis,需要自定义redisTemplate模板。采用的Jackson2JsonRedisSerializer序列化,拿来即用

redisTemplate模板package com.kuang.config;import com.fasterxml.jackson.annotation.JsonAutoDetect;import com.fasterxml.jackson.annotation.PropertyAccessor;import com.fasterxml.jackson.databind.ObjectMapper;import org.springframework.context.annotation.Be

2020-06-05 10:08:53 1353 1

空空如也

空空如也

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

TA关注的人

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