当前位置: 首页 > news >正文

openssl3.2 - update debian12‘s default openssl to openssl3.2

文章目录

    • openssl3.2 - update debian12's default openssl to openssl3.2
    • 概述
    • 笔记
    • 回到debian12自带的openssl版本
    • 从源码编译安装最新版的openssl
    • 配置ssl访问
    • END

openssl3.2 - update debian12’s default openssl to openssl3.2

概述

在debian12虚拟机中编译了openssl3.2(openssl3.2 - 编译)
只做openssl3.2的实验没问题, 但是用SSH连接就不行了. 原因在于系统中的openssl还是旧版.

lostspeed@debian12d4x64:~$ apt show openssl
Package: openssl
Version: 3.0.11-1~deb12u2
Priority: optional
Section: utils
Maintainer: Debian OpenSSL Team <pkg-openssl-devel@alioth-lists.debian.net>
Installed-Size: 2,346 kB
Depends: libc6 (>= 2.34), libssl3 (>= 3.0.9)
Suggests: ca-certificates
Homepage: https://www.openssl.org/
Tag: implemented-in::c, interface::commandline, protocol::ssl, role::program,scope::utility, security::cryptography, security::integrity,use::checking
Download-Size: 1,419 kB
APT-Sources: http://mirrors.tuna.tsinghua.edu.cn/debian bookworm/main amd64 Packages
Description: 安全套接字层工具箱 - 加密工具本软件包是 OpenSSL 项目对应用于在互联网上进行安全通信的 SSL 和 TLS 加密协议的一个实现。.它包含了通用命令行工具 /usr/bin/openssl,主要用于各类加密操作,例如:* 创建 RSA、DH 和 DSA 密钥选项;* 创建 X.509 证书、CSR 和 CRL;* 计算消息摘要;* 对密文的加密和解密;* 测试 SSL/TLS 客户端和服务端;* 处理 S/MIME 签名和加密的邮件。lostspeed@debian12d4x64:~$ openssl version -a
OpenSSL 3.2.0 23 Nov 2023 (Library: OpenSSL 3.2.0 23 Nov 2023)
built on: Sat Jan 20 13:03:36 2024 UTC
platform: linux-x86_64
options:  bn(64,64)
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_BUILDING_OPENSSL
OPENSSLDIR: "/usr/local/openssl_3d2/common"
ENGINESDIR: "/usr/local/openssl_3d2/lib64/engines-3"
MODULESDIR: "/usr/local/openssl_3d2/lib64/ossl-modules"
Seeding source: os-specific
CPUINFO: OPENSSL_ia32cap=0xfffa32034f8bffff:0x18405f5ef1bf27eb
lostspeed@debian12d4x64:~$ 

从以上命令可以看出:

  • debian12系统中看到的openssl还是3.0.11-1~deb12u2
  • 但是我自己编译后, 可以在本地运行的openssl是最新的稳定版 3.2.0

今天查了一下资料, 准备将debian12系统中的openssl也换成最新版的openssl3.2

笔记

查看libssl-dev也是旧版

lostspeed@debian12d4x64:~$ apt show libssl-dev
Package: libssl-dev
Version: 3.0.11-1~deb12u2
Priority: optional
Section: libdevel
Source: openssl
Maintainer: Debian OpenSSL Team <pkg-openssl-devel@alioth-lists.debian.net>
Installed-Size: 12.6 MB
Depends: libssl3 (= 3.0.11-1~deb12u2)
Suggests: libssl-doc
Homepage: https://www.openssl.org/
Tag: devel::lang:c, devel::library, implemented-in::TODO, implemented-in::c,protocol::ssl, role::devel-lib, security::cryptography
Download-Size: 2,430 kB
APT-Sources: http://mirrors.tuna.tsinghua.edu.cn/debian bookworm/main amd64 Packages
Description: Secure Sockets Layer toolkit - development filesThis package is part of the OpenSSL project's implementation of the SSLand TLS cryptographic protocols for secure communication over theInternet..It contains development libraries, header files, and manpages for libssland libcrypto.lostspeed@debian12d4x64:~$ 

回到debian12自带的openssl版本

sudo apt update
sudo apt install openssl libssl-dev

现在查看openssl版本, 已经是linux自带的旧版本.
但是环境变量(OPENSSLDIR, ENGINESDIR, MODULESDIR)还是自己编译的新版的路径

openssl version -a
OpenSSL 3.0.11 19 Sep 2023 (Library: OpenSSL 3.2.0 23 Nov 2023)
built on: Sat Jan 20 13:03:36 2024 UTC
platform: linux-x86_64
options:  bn(64,64)
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_BUILDING_OPENSSL
OPENSSLDIR: "/usr/local/openssl_3d2/common"
ENGINESDIR: "/usr/local/openssl_3d2/lib64/engines-3"
MODULESDIR: "/usr/local/openssl_3d2/lib64/ossl-modules"
Seeding source: os-specific
CPUINFO: OPENSSL_ia32cap=0xfffa32034f8bffff:0x18405f5ef1bf27eb

到现在为止, 就回到了debian12自带的openssl环境.

从源码编译安装最新版的openssl

sudo apt update
sudo apt install build-essential checkinstall zlib1g-devmkdir /home/lostspeed/openssl
cd /home/lostspeed/openssl# 现在最新版本为3.2.1了, 不过为了自己学习openssl, 还是下载3.2.0版本
wget --no-check-certificate https://www.openssl.org/source/openssl-3.2.0.tar.gztar -xf openssl-3.2.0.tar.gzcd openssl-3.2.0/./config --debug --prefix=/usr/local/ssl --openssldir=/usr/local/ssl shared zlib# 指定用和CPU数量一样的线程数来干活(锦上添花, 直接用make就可以)
make -j$(nproc)make testsudo make install# openssl3.2 已经安装到了 /usr/local/ssl, 看一下
lostspeed@debian12d4x64:~/openssl/openssl-3.2.0$ ls -l /usr/local/ssl
总计 68
drwxr-xr-x 2 root root  4096  2612:38 bin
drwxr-xr-x 2 root root  4096  2612:38 certs
-rw-r--r-- 1 root root   412  2612:38 ct_log_list.cnf
-rw-r--r-- 1 root root   412  2612:38 ct_log_list.cnf.dist
drwxr-xr-x 3 root root  4096  2612:38 include
drwxr-xr-x 5 root root  4096  2612:38 lib64
drwxr-xr-x 2 root root  4096  2612:38 misc
-rw-r--r-- 1 root root 12328  2612:38 openssl.cnf
-rw-r--r-- 1 root root 12328  2612:38 openssl.cnf.dist
drwxr-xr-x 2 root root  4096  2612:38 private
drwxr-xr-x 4 root root  4096  2612:39 share

配置openssl库选项, 配置目录在 /etc/ld.so.conf.d

lostspeed@debian12d4x64:~/openssl/openssl-3.2.0$ ls -l /etc/ld.so.conf.d
总计 16
-rw-r--r-- 1 root root  38 20233月18日 fakeroot-x86_64-linux-gnu.conf
-rw-r--r-- 1 root root  44 20229月23日 libc.conf
-rw-r--r-- 1 root root  91  1月20日 14:59 openssl.conf
-rw-r--r-- 1 root root 100  9月30日 16:31 x86_64-linux-gnu.conf

里面有我以前失败实验创建的openssl.conf, 删掉.

sudo rm /etc/ld.so.conf.d/openssl.conf 

建立编辑新的openssl库配置文件

sudo vi /etc/ld.so.conf.d/openssl-3.2.0.conf# 添加库路径
/usr/local/ssl/lib64# 关闭保存
:wq# 重新载入so
sudo ldconfig -v

可以看到自己编译的openssl.so已经被载入了

/usr/local/ssl/lib64: (from /etc/ld.so.conf.d/openssl-3.2.0.conf:1)libssl.so.3 -> libssl.so.3libcrypto.so.3 -> libcrypto.so.3

配置路径
先备份一下

sudo cp /etc/environment /etc/environment.bk
# 这个文件在我这默认是空的
# 但是直接看PATH变量是有内容的
echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games

编辑配置文件

sudo vi /etc/environment# 添加如下内容
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games:/snap/bin:/usr/local/ssl/bin"

比较$PATH和添加的内容, 可以发现, 多添加了一些路径, 如下:

$PATH                 /usr/local/bin:          /usr/bin:      /bin:/usr/local/games:/usr/gamesPATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games:/snap/bin:/usr/local/ssl/bin"

现在看openssl版本还是旧的.

将opessl的预安装文件改名

sudo mv /usr/bin/c_rehash /usr/bin/c_rehash.bk# 用openssl看版本时, 用的就是下面的旧openssl
sudo mv /usr/bin/openssl /usr/bin/openssl.bk

更新环境变量

sudo source /etc/environment

这时, 再看openssl版本, 已经是新版的. 而且用的openssl位置, 也是自己源码编译安装后的位置.

lostspeed@debian12d4x64:~/openssl/openssl-3.2.0$ openssl version -a
OpenSSL 3.2.0 23 Nov 2023 (Library: OpenSSL 3.2.0 23 Nov 2023)
built on: Tue Feb  6 04:26:44 2024 UTC
platform: linux-x86_64
options:  bn(64,64)
compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -O0 -g -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_BUILDING_OPENSSL -DZLIB
OPENSSLDIR: "/usr/local/ssl"
ENGINESDIR: "/usr/local/ssl/lib64/engines-3"
MODULESDIR: "/usr/local/ssl/lib64/ossl-modules"
Seeding source: os-specific
CPUINFO: OPENSSL_ia32cap=0xfffa32034f8bffff:0x18405f5ef1bf27eb
lostspeed@debian12d4x64:~/openssl/openssl-3.2.0$ which openssl
/usr/local/ssl/bin/openssl
lostspeed@debian12d4x64:~/openssl/openssl-3.2.0$ 

确认更新后的环境变量

echo "$PATH" | tr ':' '\n'/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/local/games
/usr/games
/snap/bin
/usr/local/ssl/bin

可以看到自己编译安装的openssl路径, 已经在PATH变量值的尾巴上.
确认现在系统中用的openssl位置和版本

lostspeed@debian12d4x64:~/openssl/openssl-3.2.0$ which openssl
/usr/local/ssl/bin/openssl
lostspeed@debian12d4x64:~/openssl/openssl-3.2.0$ type openssl
openssl 已被录入哈希表 (/usr/local/ssl/bin/openssl)
lostspeed@debian12d4x64:~/openssl/openssl-3.2.0$ openssl version
OpenSSL 3.2.0 23 Nov 2023 (Library: OpenSSL 3.2.0 23 Nov 2023)
lostspeed@debian12d4x64:~/openssl/openssl-3.2.0$ 

重启开机后, 发现环境变量不好使, 必须自己手工执行一下才行.
将环境变量开机启动.

cd /etc
sudo cp ./profile ./profile.bk
sudo vi ./profile# 在export PATH 上面加一行改掉, 将openssl路径加上去.
if [ "$(id -u)" -eq 0 ]; thenPATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
else# 将这句话改为包含openssl路径, 要改的和上面手工运行的环境变量文件(/etc/environment)内容相同PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/local/games:/usr/games:/snap/bin:/usr/local/ssl/bin"
fi
export PATH# :wq
#重新开机启动

这回开机重启后, 进入桌面, 可以正常运行自己编译安装好的openssl.

配置ssl访问

如果只能在虚拟机桌面操作, 那太难受了, 配置为可以用SSH客户端远程访问.
最好是升级openssl之前, 就将ssh访问配好.
debian12.4配置

然后按照这篇笔记, 升级到openssl3.2

运行ssh --version时, 会出现下面的报错.

lostspeed@debian12d4x64:/$ ssh --version
OpenSSL version mismatch. Built against 300000a0, you have 30200000

此时, 只需要运行以下一句话就能搞定.

sudo mv /etc/ld.so.cache /etc/ld.so.cache_bak

此时, 再将SSH配置执行执行一下. 确认SSH配置的没问题.

sudo systemctl start ssh
sudo systemctl enable ssh
sudo systemctl status ssh

然后确定debian12所在的IP.

ip addr

然后去win10主机上, 先ping通debian12, 然后用SSH连接, 搞定.

重启后, 运行openssl3.2, 发现so用的是旧版本.
做软连接, 替换掉/usr/lib/x86_64-linux-gnu中的openssl so

cd /usr/lib/x86_64-linux-gnu
sudo mv ./libssl.so.3 ./libssl.so.3_bk
sudo ln -s /usr/local/ssl/lib64/libssl.so.3 /usr/lib/x86_64-linux-gnu/libssl.so.3sudo mv ./libcrypto.so.3 ./libcrypto.so.3.bk
sudo ln -s /usr/local/ssl/lib64/libcrypto.so.3 /usr/lib/x86_64-linux-gnu/libcrypto.so.3

现在openssl是新版的了.

现在看看ssh

ssh -V
OpenSSL version mismatch. Built against 300000a0, you have 30200000

看看重新配置一下ssh行不行

sudo systemctl start ssh
sudo systemctl enable ssh
sudo systemctl status ssh

没报错.
重新启动试试.
查看ssh状态, 失败
重新用上面3条语句配置试试.
不行啊

lostspeed@debian12d4x64:~$ sudo systemctl start ssh
Job for ssh.service failed because the control process exited with error code.
See "systemctl status ssh.service" and "journalctl -xeu ssh.service" for details.
lostspeed@debian12d4x64:~$ ssh -V
OpenSSL version mismatch. Built against 300000a0, you have 30200000

好像必须要从源码编译ssh才行.
已经从源码编译安装配置了openSSH(debian12 - openssh-9.6.P1的编译安装)
debian12重启后, 已经可以从win10用SSH客户端链接debian12 😛

END

相关文章:

openssl3.2 - update debian12‘s default openssl to openssl3.2

文章目录 openssl3.2 - update debian12s default openssl to openssl3.2概述笔记回到debian12自带的openssl版本从源码编译安装最新版的openssl配置ssl访问END openssl3.2 - update debian12’s default openssl to openssl3.2 概述 在debian12虚拟机中编译了openssl3.2(ope…...

VUE2和VUE3区别对比一览

## Vue3总结 ### 官方文档 * [Vue3](https://v3.cn.vuejs.org/api/options*data.html) * [Vue2](https://vuejs.bootcss.com/api/) ### Vue3相对于Vue2的语法特性#### 1.获取数据 * vue2 javascript export default {data() {return {name: myName,}},mounted() {console.log(t…...

Linux - updatedb 命令

1. 功能 updatedb 命令用来创建或更新slocate命令所必需的数据库文件。updatedb 命令的执行过程较长&#xff0c;因为在执行时它会遍历整个系统的目录树&#xff0c;并将所有的文件信息写入 slocate 数据库文件中。 补充说明&#xff1a;slocate 本身具有一个数据库&#xff…...

云计算市场分析

目录 一、云计算市场概述 1.1 概述 二、国外云计算厂商 2.1 亚马逊AWS 2.2 微软AzureAzure 2.3 Apple iCloud 三、国内云计算厂商 3.1 阿里云 3.2 腾讯云 3.3 华为云 3.4 百度智能云 一、云计算市场概述 1.1 概述 云计算从出现以来&#xff0c;其发展就非常迅速。以…...

前端JavaScript篇之call() 和 apply() 的区别?

目录 call() 和 apply() 的区别&#xff1f; call() 和 apply() 的区别&#xff1f; 在JavaScript中&#xff0c;call()和apply()都是用来改变函数中this指向的方法&#xff0c;它们的作用是一样的&#xff0c;只是传参的方式不同。 call()方法和apply()方法的第一个参数都是…...

Java设计模式大全:23种常见的设计模式详解(三)

本系列文章简介: 设计模式是在软件开发过程中,经过实践和总结得到的一套解决特定问题的可复用的模板。它是一种在特定情境中经过验证的经验和技巧的集合,可以帮助开发人员设计出高效、可维护、可扩展和可复用的软件系统。设计模式提供了一种在设计和编码过程中的指导,它用于…...

汇编语言程序设计(二)十六位汇编框架、子程序与堆栈

寄存器 如下是16位通用寄存器&#xff0c;存储在cpu硬件中 AX 返回值 AX寄存器分为两部分 AH和AL AH 高8位 存储功能号 AL 低8位 存储返回码 以下是一个AX寄存器应用&#xff1a; mov ax,4c00h 4c给高位AL&#xff0c;00低位AL&#xff0c;16进制要以h结尾 BX CX 计数…...

K8S之标签的介绍和使用

标签 标签定义标签实操1、对Node节点打标签2、对Pod资源打标签查看资源标签删除资源标签 标签定义 标签就是一对 key/value &#xff0c;被关联到对象上。 标签的使用让我们能够表示出对象的特点&#xff0c;比如使用在Pod上&#xff0c;能一眼看出这个Pod是干什么的。也可以用…...

网络请求库axios

一、认识Axios库 为什么选择axios? 功能特点: 在浏览器中发送 XMLHttpRequests 请求在 node.js 中发送 http请求支持 Promise API拦截请求和响应转换请求和响应数据 补充: axios名称的由来? 个人理解没有具体的翻译. axios: ajax i/o system 二、axios发送请求 1.axios请求…...

程序设计语言的组成

程序设计语言的组成 程序设计语言基本上由数据、运算、控制、传输组成 数据成分 数据是程序操作的对象&#xff0c;具有存储类别、类型、名称、作用域和生存期等属性 从不同角度可将数据进行不同的划分。 数据类型的分类如下&#xff1a; 按程序运行过程中数据的值能否改…...

论文精读的markdown模板——以及用obsidian阅读网页资料做笔记

# The Investigation of S-P Chart Analysis on the Test Evaluations of Equality Axiom Concepts for Sixth Graders Tags: #/unread 本体论&#xff1a; 背景起源和发展 包含要素 # # # 可关联要素 # # # 逻辑 意义&#xff1a; 方法论&#xff1a; 方法论是一…...

LCP 30. 魔塔游戏

LCP 30. 魔塔游戏 难度: 中等 题目: 小扣当前位于魔塔游戏第一层&#xff0c;共有 N 个房间&#xff0c;编号为 0 ~ N-1。每个房间的补血道具/怪物对于血量影响记于数组 nums&#xff0c;其中正数表示道具补血数值&#xff0c;即血量增加对应数值&#xff1b;负数表示怪物造…...

RCE(命令执行)知识点总结最详细

description: 这里是CTF做题时常见的会遇见的RCE的漏洞知识点总结。 如果你觉得写得好并且想看更多web知识的话可以去gitbook.22kaka.fun去看&#xff0c;上面是我写的一本关于web学习的一个gitbook&#xff0c;当然如果你能去我的github为我的这个项目点亮星星我会感激不尽htt…...

[英语学习][27][Word Power Made Easy]的精读与翻译优化

[序言] 译者的这次翻译非常好. 对what与从句的嵌套用法&#xff0c; 进行了精准的翻译. 这次的记录, 也是对我自己的一次翻译经验的提升. 但是唯一遗憾的是"derivation"没有翻译好. [英文学习的目标] 提升自身的英语水平, 对日后编程技能的提升有很大帮助. 希望大家…...

Jupyter Notebook如何在E盘打开

Jupyter Notebook如何在E盘打开 方法1&#xff1a;方法2&#xff1a; 首先打开Anaconda Powershell Prompt, 可以看到默认是C盘。 可以对应着自己的界面输入&#xff1a; 方法1&#xff1a; (base) PS C:\Users\bella> E: (base) PS E:\> jupyter notebook方法2&#x…...

显示器校准软件:BetterDisplay Pro for Mac v2.0.11激活版下载

BetterDisplay Pro是一款由waydabber开发的Mac平台上的显示器校准软件&#xff0c;可以帮助用户调整显示器的颜色和亮度&#xff0c;以获得更加真实、清晰和舒适的视觉体验。 软件下载&#xff1a; BetterDisplay Pro for Mac v2.0.11激活版下载 以下是BetterDisplay Pro的主要…...

【第六天】c++虚函数多态

一、多态的概述 多态按字面的意思就是多种形态。当类之间存在层次结构&#xff0c;并且类之间是通过继承关联&#xff08;父类与子类&#xff09;时&#xff0c;就会用到多态。 C 多态意味着调用成员函数时&#xff0c;会根据调用函数的对象的类型来执行不同的函数。 静态多态&…...

CGAL::2D Arrangements-3

3.Arrangement查询 Arrangement里面最重要的查询操作是point-location&#xff0c;给定一个点&#xff0c;查找到包含这个点的Arrangement。通常情况下&#xff0c;point-location查询得到的结果是Arrangement的一个face&#xff0c;退化情况下会是一个edge&#xff0c;查一个…...

机器学习--K近邻算法,以及python中通过Scikit-learn库实现K近邻算法API使用技巧

文章目录 1.K-近邻算法思想2.K-近邻算法(KNN)概念3.电影类型分析4.KNN算法流程总结5.k近邻算法api初步使用机器学习库scikit-learn1 Scikit-learn工具介绍2.安装3.Scikit-learn包含的内容4.K-近邻算法API5.案例5.1 步骤分析5.2 代码过程 1.K-近邻算法思想 假如你有一天来到北京…...

Redis 使用 RDB 持久化方式的过程

定时触发&#xff1a; RDB 持久化是通过设置一个定时触发的机制来进行的。管理员可以配置 Redis 在经过一定时间间隔或执行了一定数量的写操作后触发 RDB 持久化。这个配置通常在 Redis 的配置文件中进行&#xff0c;可以通过 save 或 save 900 1 这样的配置项来设定。 save 90…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

SpringBoot-17-MyBatis动态SQL标签之常用标签

文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

Matlab | matlab常用命令总结

常用命令 一、 基础操作与环境二、 矩阵与数组操作(核心)三、 绘图与可视化四、 编程与控制流五、 符号计算 (Symbolic Math Toolbox)六、 文件与数据 I/O七、 常用函数类别重要提示这是一份 MATLAB 常用命令和功能的总结,涵盖了基础操作、矩阵运算、绘图、编程和文件处理等…...

C# SqlSugar:依赖注入与仓储模式实践

C# SqlSugar&#xff1a;依赖注入与仓储模式实践 在 C# 的应用开发中&#xff0c;数据库操作是必不可少的环节。为了让数据访问层更加简洁、高效且易于维护&#xff0c;许多开发者会选择成熟的 ORM&#xff08;对象关系映射&#xff09;框架&#xff0c;SqlSugar 就是其中备受…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

QT3D学习笔记——圆台、圆锥

类名作用Qt3DWindow3D渲染窗口容器QEntity场景中的实体&#xff08;对象或容器&#xff09;QCamera控制观察视角QPointLight点光源QConeMesh圆锥几何网格QTransform控制实体的位置/旋转/缩放QPhongMaterialPhong光照材质&#xff08;定义颜色、反光等&#xff09;QFirstPersonC…...

GitHub 趋势日报 (2025年06月06日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...

苹果AI眼镜:从“工具”到“社交姿态”的范式革命——重新定义AI交互入口的未来机会

在2025年的AI硬件浪潮中,苹果AI眼镜(Apple Glasses)正在引发一场关于“人机交互形态”的深度思考。它并非简单地替代AirPods或Apple Watch,而是开辟了一个全新的、日常可接受的AI入口。其核心价值不在于功能的堆叠,而在于如何通过形态设计打破社交壁垒,成为用户“全天佩戴…...