java
elasticsearch terms查询参数太多(几千个)导致es报stackoverflow异常
在elasticsearch7.10.2上使用默认的启动方式,在使用terms查询时,我传了2000个keyword,导致es报stackoverflow异常,es直接崩掉了。docker运行java程序创建文件中文文件名乱码
笔者的一次经历:通过容器镜像运行容器,并给定容器运行的脚本为statrt.sh,start.sh中为java -jar xxx.jar 。java并发-线程间通信
ava支持多个线程同时访问一个对象或者对象的成员变量,由于每个线程可以拥有这个 变量的拷贝(虽然对象以及成员变量分配的内存是在共享内存中的,但是每个执行的线程还是 可以拥有一份拷贝,这样做的目的是加速程序的执行,这是现代多核处理器的一个显著特 性),所以程序在执行过程中,一个线程看到的变量并不一定是最新的。java并发-线程的启动和终止
在运行线程之前首先要构造一个线程对象,线程对象在构造的时候需要提供线程所需要 的属性,如线程所属的线程组、线程优先级、是否是Daemon线程等信息。代码清单4-6所示的 代码摘自java.lang.Thread中对线程进行初始化的部分。java并发-线程
现代操作系统在运行一个程序时,会为其创建一个进程。例如,启动一个Java程序,操作 系统就会创建一个Java进程。现代操作系统调度的最小单元是线程,也叫轻量级进程(Light Weight Process),在一个进程里可以创建多个线程,这些线程都拥有各自的计数器、堆栈和局 部变量等属性,并且能够访问共享的内存变量。处理器在这些线程上高速切换,让使用者感觉 到这些线程在同时执行。双重检查锁定与延迟初始化
在Java多线程程序中,有时候需要采用延迟初始化来降低初始化类和创建对象的开销。双 重检查锁定是常见的延迟初始化技术,但它是一个错误的用法。本文将分析双重检查锁定的 错误根源,以及两种线程安全的延迟初始化方案。java并发-锁的内存语义
当线程释放锁时,JMM会把该线程对应的本地内存中的共享变量刷新到主内存中。 当线程获取锁时,JMM会把该线程对应的本地内存置为无效。从而使得被监视器保护的 临界区代码必须从主内存中读取共享变量。java并发-volatile的内存语义
理解volatile特性的一个好方法是把对volatile变量的单个读/写,看成是使用同一个锁对这 些单个读/写操作做了同步java并发-顺序一致性
顺序一致性内存模型是一个理论参考模型,在设计的时候,处理器的内存模型和编程语 言的内存模型都会以顺序一致性内存模型作为参照。Java并发-重排序
重排序是指编译器有处理器为了优化程序性能而对指令序列进行重排序的一种手段。编译器和处理器可能会对操作做重排序。编译器和处理器在重排序时,会遵 守数据依赖性,编译器和处理器不会改变存在数据依赖关系的两个操作的执行顺序。Java内存模型
Java的并发采用的共享内存模型,Java线程之间的通信总是隐式进行,整个通信过程对程序员完全透明。 如果编写多线程程序的java程序员不理解隐式进行的线程之间通信的工作机制,很可能会遇到各种奇怪的内存可见性问题。Java并发-死锁
典型死锁代码java并发-多线程一定快吗
多线程一定快吗缓存行-伪共享
CPU 访问某个变 量 时,首先会去看 CPU Cache 内是否有该变量,如果有则直接从 中获取,否则就去主内存里面获取该变 量 ,然后把该变量所在内存区域的一个 Cache 行大 小的内存复制到 Cache 中。 由于存放到 Cache行的是内存块而不是单个变量,所以可能会把多个变量存放到一个 Cache行中。 当多个线程同时修改一个缓存行里面的多个变量时, 由于同时只能有 一 个线程操作 缓存行 ,所以相比将 每个变 量放到 一 个缓存行,性能会有所 下降,这就是伪共享。缓存行
为了解决计算机系统中主内存与 CPU 之间运行速度差问题,会在 CPU 与主内存之间 添加一级或者多级高速缓冲存储器( Cache)。这个 Cache 一般是被集成到 CPU 内部的, 所以也叫 CPU Cachejava分析pdf文本段落
由于pdf使用坐标定位,pdf元素不像word那样有段落的概念,所以要提取pdf中的段落不是一件容易的事情。笔者通过不断尝试和优化,达到了一个比较理想的效果,根据文本的坐标以及文本间距判断一段文本和另一段文本是否是属于同一段。mino上传文件时,抛出异常:The difference between the request time and the server's time is too large.
minio上传文件时,抛出异常:The difference between the request time and the server's time is too large.maven手动安装jar包命令
mvn install:install-file -Dfile=changemonitor-1.0.3.jar -DgroupId=cn.smarthse.mybatis - DartifactId=changemonitor -Dversion=1.0.3 -Dpackaging=jarelasticsearch7.10.2 单价多节点配置
单机多节点elasticsearch之ik分词器
下载对应版本的ik分词器 解压到 es安装目录的plugins的ik目录下 重启eselasticsearch 数据类型
ES常用的数据类型可分为3大类 - 核⼼数据类型 - 复杂数据类型 - 专⽤数据类型elasticsearch7.10.2-检索api
1.查询所有 GET /bank_account/_search { "query": { "match_all": {} }, "sort": [ { "account_number": "asc" }, { "balance": "desc" } ] }elasticsearch7.10.2-文档api
1.添加文档 POST my-index-000001/_create/1 { "name": "Mary", "age":23 }elasticsearch7.10.2常用rest-api
http://192.168.2.111:9200/_cat/nodes?v ------------------查看所有节点 http://192.168.2.111:9200/_cat/indices?v ---------------查看所有索引elasticsearch7.10.2安装
添加用户: useradd -m elastic 设置密码: passwd elastic 删除用户: userdel -r elastic 切换用户: su elastic线程池的使用
创建一个线程池时需要输入几个参数,如下。 1)corePoolSize(线程池的基本大小):当提交一个任务到线程池时,线程池会创建一个线 程来执行任务,即使其他空闲的基本线程能够执行新任务也会创建线程,等到需要执行的任 务数大于线程池基本大小时就不再创建。如果调用了线程池的prestartAllCoreThreads()方法, 线程池会提前创建并启动所有基本线程。HashMap分析
无符号右移16为相当于将高区16位移动到了低区的16位,再与原hashcode做异或运算, * 可以将高低位二进制特征混合起来 高区的16位与原hashcode相比没有发生变化,低区的16位发生了变化cron定时表达式
个cron表达式有至少6个(也可能7个)有空格分隔的时间元素。 Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式:https原理
书颁发机构(CA, Certificate Authority)给服务端颁发证书。 首先 CA 会把持有者的公钥、用途、颁发者、有效时间等信息打成一个包,然后对这些信息进行 Hash 计算,得到一个 Hash 值; 然后 CA 会使用自己的私钥将该 Hash 值加密,生成 Certificate Signature,也就是 CA 对证书做了签名; 最后将 Certificate Signature 添加在文件证书上,形成数字证书;发给服务端。关于作者
程序员,软件工程师,java, golang, rust, c, python,vue, Springboot, mybatis, mysql,elasticsearch, docker, maven, gcc, linux, ubuntu, centos, axum,llm, paddlepaddle, onlyoffice,minio,银河麒麟,中科方德,rpm