Java使用ES条件构造器BoolQueryBuilder
Java使用ES条件构造器BoolQueryBuilder1. 检索前构造12345678//1.构建SearchRequest请求对象,指定索引库SearchRequest searchRequest = new SearchRequest("data_info");//2.构建SearchSourceBuilder查询对象SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();//2.1 这个条件用于返回所有命中条件的数据数量, 不设置则返回大概数值sourceBuilder.trackTotalHits(true);//3.检索条件构造BoolQueryBuilder bqb = QueryBuilders.boolQuery();
2. 条件构造
must可用filter代替,查询效率会更高,因为must会对结果进行_score评估
12345678910111213141516171819202122232425262728293031//3.1 完全匹配bqb.must(QueryB ...
Java实现LRU的两种方式
Java实现LRU的两种方式1. 直接继承LinkedHashMap12345678910111213141516171819202122class LRUCache extends LinkedHashMap<Integer, Integer>{ private int capacity; public LRUCache(int capacity) { super(capacity, 0.75F, true); this.capacity = capacity; } public int get(int key) { return super.getOrDefault(key, -1); } public void put(int key, int value) { super.put(key, value); } @Override protected boolean removeEl ...
MySQL分页查询总结
MySQL分页查询总结LIMIT语法: LIMIT {[offset,] row_count | row_count OFFSET offset}
LIMIT子句可以被用于限制被SELECT语句返回的行数。
1234567使用两个参数时,第一个参数指定返回的偏移量,第二个参数指定返回的行数。初始行的偏移量为0(不是1):mysql> SELECT * FROM tbl LIMIT 5,10; # Retrieve rows 6-15使用一个参数时,指定从开头返回的行数:mysql> SELECT * FROM tbl LIMIT 5; # Retrieve first 5 rows
写法实现:
12345678910-- 分页查询 通用语句SELECT * FROM TABLE LIMIT (pageIndex-1)*pageSize,pageSize-- 第一页 每页100条SELECT * FROM EMP LIMIT 0,100-- 第二页 每页100条SELECT * FROM EMP LIMIT 100,100-- 第801页 每页100条SELECT ...
Redis实现分布式锁及Redisson
Redis实现分布式锁及Redisson 分布式锁是控制分布式系统之间同步访问共享资源的一种方式。
在分布式系统中,常常需要协调他们的动作,若不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互斥来防止彼此干扰来保证一致性,这个时候,便需要使用到分布式锁。
例子:商品秒杀超卖1. 无锁
这是一个订单库存的例子,库存stock为1,这里很容易会发现容易造成多次下单成功的错误。
2. 加同步锁
这里在单机情况下确实能够满足不出现超卖的问题。
缺点:如果作Nginx进行负载均衡+分布式集群部署,依然会出现超卖问题。
原因是同步锁synchronized是JVM级别的,每台服务器在并发情况下,只能锁住一个线程。
所以,如何处理这种分布式的情况呢?
3. Redis or Zookeeper由于系统已经使用到了Redis,为了系统的轻量避免冗余引入新组件,选择通过Redis来进行实现分布式锁。
Redis实现分布式锁1. SETNX和SET NX命令[Windows版Docker安装Redis教程(保姆级),适合开发环境快速提供Redis服 ...
Java的Stream流
Java的Stream流[讲透JAVA Stream的collect用法与原理,远比你想象的更强大_stream.collection-CSDN博客](https://blog.csdn.net/veezean/article/details/125857074?ops_request_misc=%7B%22request%5Fid%22%3A%22172258578116800227423214%22%2C%22scm%22%3A%2220140713.130102334..%22%7D&request_id=172258578116800227423214&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-125857074-null-null.142^v100^pc_search_result_base8&utm_term=Java stream collect&spm=1018.2226.3001 ...
并发:Java的Future和FutureTask
并发:Java的Future和FutureTaskFuture类的作用Future 类是异步思想的典型运用,主要用在一些需要执行耗时任务的场景,避免程序一直原地等待耗时任务执行完成,执行效率太低。具体来说是这样的:当我们执行某一耗时的任务时,可以将这个耗时任务交给一个子线程去异步执行,同时我们可以干点其他事情,不用傻傻等待耗时任务执行完成。等我们的事情干完后,我们再通过 Future 类获取到耗时任务的执行结果。这样一来,程序的执行效率就明显提高了。
这其实就是多线程中经典的 Future 模式,你可以将其看作是一种设计模式,核心思想是异步调用,主要用在多线程领域,并非 Java 语言独有。
在 Java 中,Future 类只是一个泛型接口,位于java.util.concurrent包下,其中定义了 5 个方法,主要包括下面这 4 个功能:
取消任务;
判断任务是否被取消;
判断任务是否已经执行完成;
获取任务执行结果。
源码123456789101112131415// V 代表了Future执行的任务返回值的类型public interface Future<V> ...
法律垂类大模型DISC-LawGPT的部署运行和对比
法律垂类大模型DISC-LawGPT的部署运行和对比部署和运行123456789101112131415# 部署git clone https://github.com/FudanDISC/DISC-LawLLM.gitcd DISC-LawLLMpip install -r requirements.txtmkdir ShengbinYuecd ShengbinYuegit clone https://hf-mirror.com/ShengbinYue/DISC-LawLLMcd ..mkdir cache# 遇到报错 [Errno 13] Permission denied: '/data/.cache/huggingface/modules/transformers_modules/DISC-LawLLM'export HF_HOME="~/verticalLLM/lzjr/DISC-LawLLM/cache" # 如果遇到CUDA error: out of memory 用 watch -n 0.5 nvidia-smi查看显卡占用情况 ...
Java线程、多线程与线程池总结
Java线程、多线程与线程池总结Java创建线程的三种方法
继承Thread类创建线程类 (extends)
定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体(线程体)。
创建Thread子类的实例,即创建了线程对象。
调用线程对象的start()方法来启动该线程。
123456789101112131415public class CreateThreadByExtendThread extends Thread{ int i = 0; @Override public void run(){ for (;i<100;i++){ System.out.println(Thread.currentThread().getName()+":"+i); //获取本线程的名称 } } public static void main(String[]arg ...
Java面试汇总
Java面试汇总项目问题数联网交换机Netty核心面试题20连问,由浅入深 助你轻松吊打面试官_netty面试题-CSDN博客
Tomcat与Netty比较_netty和tomcat-CSDN博客
programmer club后端微服务-programmer-club项目的设计与实现心得 | Roger-Lv’s space
项目介绍 大家在求职的过程中,免不了要进行面试题的学习,网上的pdf 很多,大家一般都是基于此来进行背诵或者收集,重复的题目及答案的质量参差不齐,这个个人项目,做一个线上化的面试题网站,来进行资源整合。学习面试的同时,将所学习的技术结合到一起。我们采用的是主流的微服务架构 alibaba,配合主流的中间件,前端主要是以 react 配合 antdesiqn 来进行,以C端为主的一个网站形式。叫他programmer_club,整体为一个社区的形式,主要实现的功能有刷题,练题,交流群,模拟面试。我在这里面设计技术选型,架构设计,功能的设计及落地。其中刷题模块、登录注册鉴权等模块以及优化等是我来进行主要落地实现的。
使用DDD(领域驱动设计)的原因主要有以下几点: ...
线程池数量到底如何配置?
线程池数量到底如何配置?可能很多人都看到过一个线程数设置的理论:
CPU 密集型的程序-核心数 +1
1/0 密集型的程序-核心数*2
不会吧,不会吧,真的有人按照这个理论规划线程数?
线程数和CPU利用率的小测试抛开一些操作系统,计算机原理不谈,说一个基本的理论(不用纠结是否严谨,只为好理解):
一个CPU核心,单位时间内只能执行一个线程的指令那么理论上,我一个线程只需要不停的执行指令,就可以跑满一个核心的利用率。
来写个死循环空跑的例子验证一下:
1234567public class CPUUtilizationTest{ public static void main(String[] args){//死循环,什么都不做 while(true){ } }}
测试CPU:6核心12线程
现在的CPU利用率:
从图上可以看到,3号核心利用率已经被跑满了
基于上面的理论,多开几个线程试试呢?
123456789101112public class CPUUtilizationTest{ ...