最新文章

算术和逻辑操作

加载有效地址(load effective address)指令leal实际上是movl指令的变形。 整数算术操作,加载有效地址(leal)指令通常用来执行简单的算术操作。

程序的及机器级表示-访问信息

大多数指令有一个或多个操作数,不同的操作数分为三种类型:- 立即数(immediate): 在AT&T格式汇编代码中,立即数书写是$后面跟一个整数,如:$-577或者$0x1F;

浮点数

二进制小数,二进制小数点左移一位相当于这个数被2除,小数点向右移一位相当于将该数乘2.

信息的表示

十六进制表示法 每台计算机都有一个字长(word size),指明整数和指针数据的标称大小。

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程序员不理解隐式进行的线程之间通信的工作机制,很可能会遇到各种奇怪的内存可见性问题。

缓存行-伪共享

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

关于作者

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