自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 虚拟机环境配置安装Supervisor及实现服务一键启动(其二)

4、进入http://192.168.95.128:9002,state为running则为执行成功!注意: [program:程序名]需与jar包名一致;/usr/bin/java为jdk的地址。1、进入/etc/supervisord.d/ 文件夹下。2、新建一个文件 xxx.ini,例如wjb.ini。2、wjb.ini 文件编辑内容如下。

2025-04-18 10:36:18 331

原创 虚拟机环境配置安装Supervisor及实现服务一键启动(其一)

①进入/usr/lib/systemd/system/目录,并创建supervisord.service文件(或者在本地写好了再通过ftp工具传输到指定目录下)1、在运行supervisord服务的时候,指定Supervisor配置文件,让supervisor成功加载默认配置。supervisor进程配置文件加载目录,让supervisor自动加载该目录下.ini后缀的文件作为服务配置。3、通过vim命令修改创建好的supervisor.conf配置信息。将创建好的ini文件放在conf.d目录下。

2025-04-17 21:44:59 812

原创 npm ERR! A complete log of this run can be found in: C:\Users\summer\AppData\Local\npm-cache\_logs\2

Windows:右键任务栏时间 → 调整日期/时间 → 开启“自动设置时间”。:与 DevEco Studio 工具链深度适配,避免依赖冲突。:淘宝 npm 镜像源的 SSL 证书可能已过期或未及时更新。:本地计算机时间与网络时间不同步(可能性较低,但需检查)。:华为镜像源在国内访问速度快,且维护更新及时。这个错误表明你在使用。时,访问淘宝镜像源(

2025-04-16 09:12:50 345

原创 AQS 为什么有一个虚拟的 head 节点?

设计选择解决的问题性能影响虚拟头节点统一操作逻辑,避免边界条件处理减少代码分支,提升稳定性从后向前遍历应对并发插入导致的链表断裂保证遍历的可靠性waitStatus 状态机精确控制线程唤醒/取消的传播减少无效唤醒,降低CPU消耗这种设计使得 AQS 在管理高并发线程时,既能保证线程安全,又能将关键操作的时间复杂度控制在O(1)(如状态判断)和O(n) 最坏情况(遍历取消节点)之间,达到性能与稳定性的平衡。

2025-04-15 08:57:25 1022

原创 AQS 为什么用双向链表,为什么不用单向链表?

它采用双向链表(而非单向链表)来维护等待队列,这和它需要高效处理节点取消操作密切相关。这种设计体现了典型的空间换时间思想,虽然每个节点多维护一个指针(内存开销),但换来了高效的并发操作能力,这对高性能同步器至关重要。:必须从车头开始逐个检查,直到找到故障车厢的前一节才能断开连接。双向链表 = 每个车厢都有前后门(prev/next 指针):取消节点时无需遍历,直接通过前后指针完成解耦。:便于检查相邻节点的等待状态,优化唤醒机制。步骤 2:处理前驱节点(Node A)步骤 3:处理后继节点(Node C)

2025-04-14 10:20:23 445

原创 Nginx+keepalived配置

以192.168.95.128 作为web1,192.168.95.129 作为web2为例。web1配置keepalived。web2配置keepalived。四、 配置keepalived。1、web1的nginx配置。2、web2的nginx配置。

2025-04-13 08:30:00 246

原创 AQS的底层及应用

AQS是Java并发编程中用于构建锁和其他同步组件的基础,它是一个用Java编写的高级同步器框架。AQS通过一个整数(state)来表示同步状态,并通过内置的先进先出(FIFO)队列来管理那些获取同步状态失败的线程。

2025-04-12 09:15:00 883

原创 唤醒线程时,AQS 为什么从后向前遍历?

安全优先:依赖prev指针的原子性更新,避免竞争导致的指针不一致。高效过滤:快速定位首个有效节点,跳过已取消的无效节点。鲁棒性:确保在复杂并发场景中仍能正确唤醒线程。

2025-04-11 08:00:00 796

原创 Object 的原生方法 wait()、notify() 和 notifyAll()

在Java中,wait()notify()和方法是Object类的原生方法,这是因为它们与Java的同步机制紧密相关,而这些同步机制是基于对象的监视器()实现的。下面我将详细解释为什么这些方法属于Object类,以及它们是如何工作的。

2025-04-10 07:45:00 631

原创 yum下载报错Error: requested datatype primary not availabl

【代码】yum下载报错Error: requested datatype primary not availabl。

2025-04-09 16:35:53 419

原创 Synchronized锁粗化&锁消除

但实际上,你房间里没有什么值钱的东西,或者你知道没有人会进入你的房间,所以你根本就不需要锁门。方法中的循环很多次,每次都要获取和释放锁,那么JIT编译器可能会将锁粗化,即在循环开始前获取锁,循环结束后释放锁,而不是在每次添加书籍时都获取和释放锁。:当JIT编译器发现同步块内的代码没有访问任何共享资源,或者没有其他线程会访问这些资源时,它会完全移除同步块中的锁操作,因为这些锁是多余的。:当JIT编译器发现一个对象在循环中被频繁地锁定和解锁时,它会尝试将锁的范围扩大到整个循环,以减少锁操作的开销。

2025-04-09 08:00:00 337

原创 Synchronized锁升级的过程

在Java中,关键字是一种内置的同步机制,它可以用来控制多个线程对共享资源的访问。为了避免多线程环境下的竞态条件,Java虚拟机(JVM)实现了多种锁机制,这些锁机制会根据锁的竞争程度自动升级或降级。

2025-04-08 08:00:00 428

原创 什么是 volatile 和指令重排?

在 Java 中, 是一个关键字,用于修饰变量。它有以下两个主要作用:保证可见性:当一个线程修改了 变量时,其他线程能够立即看到这个修改。防止指令重排:保证 变量的操作不会被线程内的指令重排优化。指令重排是指在程序执行时,编译器、运行时环境或 CPU 可能会调整指令的执行顺序,以提高性能。例如:在某些情况下,指令2可能会被提前执行,变成:这种调整通常是安全的,但在多线程环境下,可能会导致问题。为了防止指令重排,Java 在 变量操作前后插入了内存屏障(Memory Barrier)。内存屏

2025-04-07 11:07:50 1334

原创 有了 MESI 协议,为什么还要 volatile?

MESI 协议:在硬件层面解决了 CPU 缓存一致性问题,确保多个 CPU 核心之间的缓存数据保持一致。volatile关键字:在 Java 层面解决了线程之间的缓存一致性问题,确保变量的可见性和有序性。Store Buffer 的影响volatile的写操作通过lock指令确保变量直接写入主内存,忽略 Store Buffer 的影响,从而保证变量的可见性。缓存行失效volatile的写操作会使其他核心的缓存行失效,确保其他线程能够看到最新的变量值。通过volatile。

2025-04-04 07:30:00 1169

原创 java 的内存模型

内存模型的核心,可见性,有序性基于这里实现。

2025-04-03 04:45:00 1080

原创 强引用、弱引用、软引用、虚引用

引用的对象就是虚引用,拿不到虚引用指向的对象,一般监听GC 回收阶段,或者清理堆外的内存时使用。垃圾回收器只有在内存不足时,才会回收这个对象。垃圾回收器下次运行时,就会回收这个对象。引用的对象就是软引用,在内存不足的时候,会回收软引用指向的对象。是一个虚引用,指向这个对象,并且关联了一个引用队列。跟踪对象的回收状态:在对象被回收时执行一些清理操作。虚引用:只是远远看着对象,垃圾回收器回收时会通知你。弱引用:轻轻抓住对象,垃圾回收器一来就可能被回收。:实现一个资源清理机制,当对象被回收时释放资源。

2025-04-02 07:15:00 340

原创 了解ThreadLocal 的原理及示例学习

它的核心思想是:为每个线程都创建一个独立的变量副本,这样每个线程只能访问到自己线程中的副本,而无法访问到其他线程的副本,从而实现了线程之间的隔离。这种方式有点像“拿空间换时间”,通过为每个线程分配独立的存储空间,避免了线程之间的竞争和同步开销,相比使用。的键(Key)是弱引用,可以在垃圾回收时被回收,但仍然可能会出现内存泄漏的问题。,它是一个基于哈希表的存储结构,用来保存线程本地变量的副本。对象没有其他强引用时,它可能会在垃圾回收时被回收。无法被访问,也无法被垃圾回收,从而导致内存泄漏。

2025-04-01 14:20:03 744

原创 CAS的实现原理及常见问题

CAS的全称为compare-And-Swap。

2025-03-30 08:00:00 674

原创 Maven 如何引入外部依赖jar包

1、在src目录下创建lib目录,并将需要引入的jar包放到lib目录下。

2025-03-29 08:00:00 467

原创 win+R 输入gpedit.msc 打不开组策略编辑器解决办法

管理员模式打开cmd,输入以下两句。

2025-03-28 08:45:00 602

原创 Linux 环境安装yum

3、新建配置文件目录。

2025-03-27 08:45:00 293

原创 SSl TLS协议信息泄露漏洞(CVE-2016-2183)【原理扫描】漏洞修复

1、找到控制面板,控制面板->网络和 Internet->Internet选项。5、点击SSL密码套件顺序,点击编辑,点击已启用,SSL密码套件内容要编辑。3,接着win+r键打开运行,输入gpedit.msc ,点击确定。4、进入本地组策略编辑器,找到SSL密码套件顺序。2、只选择TLS1.2,点击应用和确定。6、输入以下内容,并确定。

2025-03-26 11:38:21 616

原创 Linux 环境jdk安装环境部署

5、解压jdk,例如jdk版本为jdk-8u381-linux-x64.tar.gz。4、切换目录,上传jdk到java目录下。1、安装以前先确认是否已经安装了jdk。8、最后回到第一步验证安装是否生效!7、保存编辑退出后执行该语句生效。2、下载jdk,官网链接。

2025-03-25 14:21:44 155

原创 Linux环境离线安装maven

2、上传maven离线包到opt位置,解压apache-maven-3.9.9-bin.tar.gz,并更改maven的名称。离线安装包(有外网环境的也可以考虑wget在线下载)3、配置环境变量将 Maven 的。看到以下内容即为安装成功啦。

2025-03-25 11:36:09 470

原创 Linux环境部署离线graphhopper

3、命令解压完成后进入graphhopper-stable下面,找到config.yml修改配置,bind_host更改成自己本机的。2、上传graphhopper-stable.zip并执行unzip graphhopper-stable.zip。1、上传 unzip-6.0-19.el7.x86_64.rpm到/usr/local/目录下,执行。5、打开浏览器访问http://ip:8989。命令进行安装unzip解压工具。2、查询解压工具是否安装完成。③启动,启动脚本也可以自己写。

2025-03-25 11:17:50 351

原创 MyBatisX代码自动生成

4、勾选以下选项,核对config name是否为这4项目,确认完成点击finish,恭喜你!代码已经自动生成了,快去你设定的位置找到自动生成的代码吧!1、安装MyBatisX插件:打开idea,文件->设置->插件->marketplace,输入MyBatisX。2、下载完成后连接数据库,选择需要生成代码的数据表,点击MyBatisX-Generator。3、选择需要生成的目录,核对表名和实体类名,下一步。

2025-03-22 08:51:04 395

原创 图片流压缩java实现

【代码】图片流压缩java实现。

2025-03-21 09:24:22 648

原创 OCR文字识别技术集成Java项目-代码纯享版

模型数据在此链接下载。

2025-03-20 10:09:44 649

原创 Java实现高德与Wgs84坐标互转

【代码】Java实现高德与Wgs84坐标互转。

2025-03-19 11:07:54 179

原创 windows一键启动graphhopper脚本

"%GITBASH%" -c "cd %SCRIPT_DIR_UNIX% && echo '正在启动脚本...' && ./%SCRIPT_NAME% %SCRIPT_PARAMS% > %LOG_FILE_UNIX% 2>&1"echo THIS LOG:REM 将 Windows 风格的路径转换为类 Unix 格式,例如D盘/code/graphhopper-stable 类 Unix 格式为/d/code/graphhopper-stable。请查看日志文件: %LOG_FILE%

2025-03-18 11:12:56 300

原创 windows环境实现graphhopper离线路径导航

修改datareader.file为你命名的地图数据,地图数据可存入resource下面。2、可选择git拉取或直接下载zip包,我这边拉取的stable分支。

2025-03-18 09:18:05 568

原创 数据导入常见报错问题解决

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '你的密码';报错一:plugin caching_sha2_password could not be loaded。优化查询性能:select @@innodb_buffer_pool_size;报错三:java.sql.SQLRecoverableException。报错二:mysql server has gone away。

2025-03-17 10:06:16 206

原创 从0-1搭建gitea环境

需要安装的软件:mysql、gitea、git安装步骤如下: 1、在liunx环境创建gitea用户 useradd gitea 2、设置密码: passwd gitea 3、修改用户附属组: usermod -a -G sudo gitea 4、这里可能会遇到报错: usermod: “sudo”组不存在 解决方法如下: ①以 root 用户登录: 确保你已经以 root 用户或者拥有足够权限的用户登录到系统上。 ②编辑 sud

2025-03-14 11:12:07 729

原创 从0到1实现deepseek在 Linux环境搭建

1、进入地址https://download.docker.com/linux/static/stable/x86_64/下载docker-18.06.3-ce.tgz。1、https://github.com/ollama/ollama/blob/main/docs/linux.md下载。#配置OLLAMA的模型存放路径,默认路径是/usr/share/ollama/.ollama/models/echo '将docker.service 复制到/etc/systemd/system/目录'

2025-03-13 15:34:01 1376

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除