最新文章

java并发-volatile的内存语义

理解volatile特性的一个好方法是把对volatile变量的单个读/写,看成是使用同一个锁对这 些单个读/写操作做了同步

java并发-顺序一致性

顺序一致性内存模型是一个理论参考模型,在设计的时候,处理器的内存模型和编程语 言的内存模型都会以顺序一致性内存模型作为参照。

Java并发-重排序

重排序是指编译器有处理器为了优化程序性能而对指令序列进行重排序的一种手段。编译器和处理器可能会对操作做重排序。编译器和处理器在重排序时,会遵 守数据依赖性,编译器和处理器不会改变存在数据依赖关系的两个操作的执行顺序。

Java内存模型

Java的并发采用的共享内存模型,Java线程之间的通信总是隐式进行,整个通信过程对程序员完全透明。 如果编写多线程程序的java程序员不理解隐式进行的线程之间通信的工作机制,很可能会遇到各种奇怪的内存可见性问题。

缓存行-伪共享

CPU 访问某个变 量 时,首先会去看 CPU Cache 内是否有该变量,如果有则直接从 中获取,否则就去主内存里面获取该变 量 ,然后把该变量所在内存区域的一个 Cache 行大 小的内存复制到 Cache 中。 由于存放到 Cache行的是内存块而不是单个变量,所以可能会把多个变量存放到一个 Cache行中。 当多个线程同时修改一个缓存行里面的多个变量时, 由于同时只能有 一 个线程操作 缓存行 ,所以相比将 每个变 量放到 一 个缓存行,性能会有所 下降,这就是伪共享。

缓存行

为了解决计算机系统中主内存与 CPU 之间运行速度差问题,会在 CPU 与主内存之间 添加一级或者多级高速缓冲存储器( Cache)。这个 Cache 一般是被集成到 CPU 内部的, 所以也叫 CPU Cache

java分析pdf文本段落

由于pdf使用坐标定位,pdf元素不像word那样有段落的概念,所以要提取pdf中的段落不是一件容易的事情。笔者通过不断尝试和优化,达到了一个比较理想的效果,根据文本的坐标以及文本间距判断一段文本和另一段文本是否是属于同一段。

docker升级

停止docker 备份数据,卸载docker,安装docker-ce

mysql忘记密码

mysql 忘记密码后,可以使用无密码登录,先修改密码然后再重启

rust下httpclient

rust下httpclient,实现get,post form, post json, 文件上传,下载

nvidia-docker安装

在docker容器中调用宿主机的gpu运行ai程序

国产银河麒麟+飞腾芯片安装conda

试了很多版本都报非法指令错误,找到一个可用的版本:https://github.com/Archiconda/build-tools/releases/download/0.2.3/Archiconda3-0.2.3-Linux-aarch64.sh

windows下安装gpu版paddlepaddle

安装显卡驱动和cuda和cudnn,安装cuda(如 11.6) (默认应该安装在 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.6)

maven手动安装jar包命令

mvn install:install-file -Dfile=changemonitor-1.0.3.jar -DgroupId=cn.smarthse.mybatis - DartifactId=changemonitor -Dversion=1.0.3 -Dpackaging=jar

elasticsearch之ik分词器

下载对应版本的ik分词器 解压到 es安装目录的plugins的ik目录下 重启es

elasticsearch 数据类型

ES常用的数据类型可分为3大类 - 核⼼数据类型 - 复杂数据类型 - 专⽤数据类型

elasticsearch7.10.2-检索api

1.查询所有 GET /bank_account/_search { "query": { "match_all": {} }, "sort": [ { "account_number": "asc" }, { "balance": "desc" } ] }

关于作者

程序员,软件工程师,java, golang, rust, c, python,vue, Springboot, mybatis, mysql,elasticsearch, docker, maven, gcc, linux, ubuntu, centos, axum,llm, paddlepaddle, onlyoffice,minio,银河麒麟,中科方德,rpm