干了这杯柠檬多
码龄5年
  • 496,395
    被访问
  • 230
    原创
  • 5,004
    排名
  • 165
    粉丝
关注
提问 私信

个人简介:运气是实力的一部分,但我运气向来不好,所以只能靠实力去弥补!

  • 加入CSDN时间: 2017-07-04
博客简介:

全场梦游c的博客

查看详细资料
  • 4
    领奖
    总分 939 当月 42
个人成就
  • 获得301次点赞
  • 内容获得158次评论
  • 获得1,033次收藏
创作历程
  • 10篇
    2022年
  • 12篇
    2021年
  • 79篇
    2020年
  • 75篇
    2019年
  • 72篇
    2018年
成就勋章
TA的专栏
  • redis
    16篇
  • springboot
    27篇
  • 并发
    9篇
  • elasticsearch
    4篇
  • 多线程
    5篇
  • 小工具
    4篇
  • NIO
    2篇
  • mybatis-plus
    7篇
  • 鉴权
    1篇
  • jvm
    5篇
  • springcloud
    1篇
  • 手写框架
    3篇
  • 检索工具
    1篇
  • 消息队列
    2篇
  • git
    1篇
  • 虚拟化技术
    1篇
  • shiro
    6篇
  • nginx
    1篇
  • json
    1篇
  • Gradle
    2篇
  • fiddler
    1篇
  • java
    67篇
  • 关系型数据库
    24篇
  • java框架
    11篇
  • 前端
    19篇
  • 网络
    6篇
  • 算法
    11篇
  • linux
    3篇
  • 服务器
    6篇
  • android
    2篇
  • 微信小程序
    17篇
  • 深度学习
    5篇
  • python
    2篇
兴趣领域 设置
  • 大数据
    mysql
  • 后端
    架构
  • 最近
  • 文章
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

批量查询接口如何巧妙利用单查询接口中的@Cacheable

如标题所述,本文是为了探讨在已有jvm缓存的单查询接口的基础上增加批量查询接口功能,要如何实现,如何优化,如何抉择。spring-cache用法请自行查询。demo:单查询接口如下:@Servicepublic class BizCacheServiceImpl implements BizCacheService { /** * 单查询接口 * * @param id * @return */ @Cacheable(k
原创
发布博客 2022.04.29 ·
336 阅读 ·
0 点赞 ·
0 评论

java poi导出简易工具类

该工具类支持简单的导出逻辑,内容极少,可方便接入测试。maven依赖: <!--excel导出类--> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>3.16</version>
原创
发布博客 2022.04.26 ·
49 阅读 ·
0 点赞 ·
0 评论

合理的在线程池中使用CountDownLatch锁

问题:使用线程池来进行多线程操作的话,怎么实现让主线程等待其他线程的任务执行完后再进行接下来的操作。解决方案:线程池+CountDownLatchdemo:public void testLock(){ //模拟并发 List<Integer> ids = new ArrayList<>(); ids.add(1); ids.add(2); ids.add(3); ids.a
原创
发布博客 2022.04.12 ·
400 阅读 ·
0 点赞 ·
0 评论

es QueryBuilder实际场景应用

java中es的QueryBuilder的构建方式这里只列举经常使用的,都是基于boolQuery查询。1.查询list条件 termsQuery,常用于状态值,id等2.查询单个条件termQuery,常用于字符串查询,如名称等3.查询范围rangeQuery,常用于一个范围查询,如价格区间等4.搜索词拆分模糊查询 matchQuery,常用于内容检索,如文章内容等5.子查询hasChildQuery,子查询最好用should连接public QueryBuilder ...
原创
发布博客 2022.03.26 ·
2507 阅读 ·
1 点赞 ·
1 评论

利用反射覆盖类对象的默认值

一个demo:通过反射,将子类和父类中的属性值替换掉。1.一个子类和一个父类:public class BaseVo { private Boolean canCheck = true; public Boolean getCanCheck() { return canCheck; } public void setCanCheck(Boolean canCheck) { this.canCheck = canCheck;
原创
发布博客 2022.03.26 ·
121 阅读 ·
0 点赞 ·
0 评论

使用CompletableFuture提高并发处理能力

背景:在拼接参数对象时,需要从多个系统里获取参数,比如商品参数要从商品系统获取,价格参数要从价格系统获取,库存参数要从库存系统获取,大部分都是一个rpc调用。方案:为了提高接口性能,采用多线程,使用CompletableFuture来完成。使用到CompletableFuture中的api:1.异步获取方法的返回值public static <U> CompletableFuture<U> supplyAsync(Supplier<U> suppl
原创
发布博客 2022.02.16 ·
305 阅读 ·
0 点赞 ·
0 评论

零售商品ES同步方案实践比较

1、需求背景在零售场景中,有大量的搜索和排序的场景,比如典型的商品名称,商品条码,外部商品编码等搜索,还有按照价格,销量排序等操作,在微服务的架构下,这些数据大多数都是异构的,代码实现在不同的服务中,用mysql来实现这样复杂的操作,就显得捉襟见肘,就需要额外的工具或中间件来完成这样的功能。总体来说,有以下两种思路: 设计一个大宽表,每次业务的增删改操作都再写一份到这张表中。 引入专门的中间件来解决该问题,比如es。 前者的双写需要花大量的开发成本,而且在复杂业务场景下,容易出错
转载
发布博客 2022.02.15 ·
113 阅读 ·
0 点赞 ·
0 评论

aop和自定义注解实际使用场景

aop配合自定义注解实现了什么?1.将验证逻辑放在aop中,减少对业务代码的侵入。2.自定义注解可以实现自定义化是否使用aop。3.当然也可以将结果放在threadLocal里面存储。1.定义一个自定义注解@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)public @interface userCheck { int value() default 0;}2.定义一个接口@User
原创
发布博客 2022.01.10 ·
244 阅读 ·
0 点赞 ·
0 评论

es语法入门

Elasticsearch简介Elasticsearch是用Java开发并且是当前最流行的开源的企业级搜索引擎。能够达到实时搜索,稳定,可靠,快速,安装使用方便。客户端支持Java、.NET(C#)、PHP、Python、Ruby等多种语言。ElasticSearch与Lucene的关系Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库(框架)但是想要使用Lucene,必须使用Java来作为开发语言并将其直接集成到你的应用中,并且Lucene的配置及使用非常复杂
原创
发布博客 2022.01.09 ·
68 阅读 ·
0 点赞 ·
0 评论

windows环境 es及基本插件安装

一.elasticSearches下载 Download Elasticsearch | Elastic下载最新版本7.15版本运行报错,选用7.6.1版本windows下解压 运行bin文件夹下的elasticsearch.bat,如果没有额外配置 访问 http://127.0.0.1:9200/ 出现内容即成功!二.可视化工具Kibana2.客户端Kibana下载 Download Kibana Free | Get Started Now | Elastic与es版本保持一致
原创
发布博客 2022.01.04 ·
704 阅读 ·
0 点赞 ·
0 评论

Collectors.toMap方法报Duplicate key xxx错误信息

问题产生的原因:使用该方法时,转换后map的key重复,导致出现该错误。解决方法:使用toMap的重载方法Collectors.toMap(keyMapper, valueMapper, mergeFunction);代码示例: Map<String, Double> stockMap = new HashMap<>(); //改动前 stockMap = skuDataPoList.stream().collect(Collectors.toM
原创
发布博客 2021.11.01 ·
143 阅读 ·
0 点赞 ·
0 评论

Netty进阶(二) Springboot集成Netty实现WebSocket服务

前置技术:springboot、netty、websocket的基本概念WebSocket介绍在WebSocket概念出来之前,如果页面要不停地显示最新的价格,那么必须不停地刷新页面,或者用一段js代码每隔几秒钟发消息询问服务器数据。而使用WebSocket技术之后,当服务器有了新的数据,会主动通知浏览器。每创建一个浏览器会话就创建一个WebServer对象。里面有四个方法:OnOpen表示有浏览器链接过来的时候被调用OnClose表示浏览器发出关闭请求的时候被调用OnMe...
原创
发布博客 2021.06.04 ·
725 阅读 ·
1 点赞 ·
1 评论

Netty入门(一) 简单介绍和实现多人聊天室功能

前置技术:需要了解NIO多路复用技术。Netty相对于NIO做了什么NIO 的类库和 API 繁杂, 使用麻烦: 需要熟练掌握Selector、 ServerSocketChannel、 SocketChannel、 ByteBuffer等。开发工作量和难度都非常大: 例如客户端面临断线重连、 网络闪断、心跳处理、半包读写、 网络拥塞和异常流的处理等等。Netty 对 JDK 自带的 NIO 的 API 进行了良好的封装,解决了上述问题。且Netty拥有高性能、 吞吐量更高,延迟更低,减少资
原创
发布博客 2021.05.24 ·
136 阅读 ·
0 点赞 ·
0 评论

BlockingQueue之ArrayBlockingQueue阻塞操作源码分析

概要BlockingQueue,是java.util.concurrent 包提供的用于解决并发生产者 - 消费者问题 的最有用的类,它的特性是在任意时刻只有一个线程可以进行take或者put操作,并且 BlockingQueue提供了超时return null的机制,在许多生产场景里都可以看到这个工具的 身影队列类型1. 无限队列 (unbounded queue ) - 几乎可以无限增长2. 有限队列 ( bounded queue ) - 定义了最大容量队列数据结构队列实质就是
原创
发布博客 2021.05.07 ·
60 阅读 ·
0 点赞 ·
0 评论

redis分布式锁实战由浅入深解决并发超卖问题

redis分布式锁是为了解决什么问题?为了解决synchronized在分布式情况下无法实现同步的问题,因为synchronized同步的是一个jvm的方法,多个jvm的话是做不到的。1. 实现redis 基本业务减库存场景Integer stock = (Integer)redisTemplate.opsForValue().get("stock");log.info("还剩"+stock);if (stock<=0){ log.info("抢购失败");}redisT
原创
发布博客 2021.05.06 ·
145 阅读 ·
2 点赞 ·
0 评论

spring security 过滤器链嵌入原理

spring security 是如何将自己的过滤器加到了tomcat的过滤器链中的?原理也就是这样:1.当过滤器链执行到DelegatingFilterProxy的doFilter方法时,DelegatingFilterProxy委托给了FilterChainProxy去处理。(这里是用来委托模式)2.FilterChainProxy将自己的过滤器链拿过来然后执行doFilter方法。FilterChainProxy的doFilterInternal方法源码:private vo
原创
发布博客 2021.04.01 ·
213 阅读 ·
1 点赞 ·
0 评论

mysql查询条件有两个独立的索引同时,mysql使用谁

先说一下结论:哪个索引区分度大,筛选更快就使用哪个验证一下来一张测试表建表语句CREATE TABLE `a` ( `id` int(255) DEFAULT NULL, `index1` varchar(255) DEFAULT NULL, `index2` varchar(255) DEFAULT NULL, KEY `index1` (`index1`), KEY `index2` (`index2`)) ENGINE=InnoDB DEFAULT .
原创
发布博客 2021.03.19 ·
1459 阅读 ·
1 点赞 ·
0 评论

ThreadLocalRandom 在多线程环境下随机数一致问题

首先ThreadLocalRandom的出现是为了解决什么问题?就是为了解决在多线程下使用单个Random实例生成随机数时,当多个线程同时计算随机数来计算新的种子时,多个线程会竞争同一个原子变量的更新操作,由于原子变量的更新是CAS操作,同时只有一个线程会成功,所以会造成大量线程进行自旋重试,这会降低并发性能。而ThreadLocalRandom会使用初始化它的线程来填充seed,如果你把它在线程之间共享,就会导致多个线程使用相同的 seed,进而产生的随机数一样。说明白点就是用法错了,设计者的
原创
发布博客 2021.03.08 ·
359 阅读 ·
0 点赞 ·
0 评论

以ReentrantLock为例读AQS独占方法加锁解锁源码

首先,抛出一个问题什么是AQS?AQS (AbstractQueuedSynchronizer,抽象队列同步器)为线程的同步和等待等操作提供一个基础模板类。尽可能多的实现可重入锁,读写锁同步器所有需要的功能。队列同步器内部实现了线程的同步队列,独占或是共享的获取方式等,使其只需要少量的代码便可以实现目标功能。一般来说,AQS的子类应以其他类的内部类的形式存在,然后使用代理模式调用子类和AQS本身的方法实现线程的同步。以ReentrantLock举例,外界调用ReentrantLock,R
原创
发布博客 2021.01.20 ·
67 阅读 ·
0 点赞 ·
0 评论

java堆栈方法区里都存了什么

首先JDK1.7和1.8是不同的。先说JDK1.7:栈:基本类型的对象和类的引用变量,局部变量。堆:对象,成员变量方法区:静态变量,字符串常量池,类信息,运行时常量池再说JDK1.8:栈:基本类型的对象和类的引用变量,局部变量。堆:对象,成员变量,静态变量,字符串常量池方法区:类信息,运行时常量池...
原创
发布博客 2021.01.11 ·
836 阅读 ·
1 点赞 ·
1 评论
加载更多