黑马 | Reids | 基础篇
黑马reids基础篇
文章目录
- 黑马reids基础篇
- 一.初始Redis
- 1.1SQL 和 NoSql的区别
- 1.1.1结构化和非结构化
- 1.1.2关联和非关联
- 1.1.3查询方式
- 1.1.4 事务
- 1.1.5总结
- 1.2 认识Redis
- 1.3 Redis安装启动
- 默认启动:
- 后台启动:
- 开机自启
- 1.4 Redis客户端
- 1.4.1.Redis命令行客户端
- 1.4.2.图形化桌面客户端
- 二.Redis命令
- 0.通用命令
- 1.String
- 2.Key的层级格式
- 3.Hash
- 4.List
- 5.Set
- 6.SortedSet
一.初始Redis
1.1SQL 和 NoSql的区别
1.1.1结构化和非结构化
(1) SQL关系性数据库
传统关系型数据库是结构化数据,每一张表都有严格的约束信息:字段名、字段数据类型、字段约束等等信息,插入的数据必须遵守这些约束
(2) NoSql数据库
NoSql对数据库格式没有严格约束,往往形式松散,自由。
可以是key-value,可以是文档,或者图格式
1.1.2关联和非关联
(1) 关系型数据库
(2) 非关系型数据库
{ id: 1, name: "张三", orders: [{id: 1,item: {id: 10, title: "荣耀6", price: 4999}},{id: 2,item: {id: 20, title: "小米11", price: 3999}} ] }
1.1.3查询方式
1.1.4 事务
传统关系型数据库能满足事务ACID的原则 ,而非关系型数据库往往不支持事务,或者不能严格保证ACID的特性,只能实现基本的一致性。
1.1.5总结
1.2 认识Redis
特征:
- 键值(key-value)型,value支持多种不同数据结构,功能丰富
- 单线程,每个命令具备原子性
- 低延迟,速度快(基于内存、IO多路复用、良好的编码)。
- 支持数据持久化(定期将内存搬运到磁盘)
- 支持主从集群、分片集群(数据拆分)(可以做读写分离,大大提高效率)
- 支持多语言客户端
Redis的官方网站地址:RedisRedis Redis
1.3 Redis安装启动
Redis是基于C编写,所以需要先安装Redis所需的gcc依赖
yum install -y gcc
如果有了就跳过
安装包上传到usr/local/src
tar -zxvf redis-6.2.6.tar.gz
1
cd到redis的目录:
cd redis-6.2.6/
1
编译和运行
make && make install
1
默认启动:
需要一直挂着页面
redis-server
后台启动:
前提是必须修改配置文件(/usr/local/src/redis-6.2.6/redis.conf)
(1) 先备份一份
cp redis.conf redis.conf.bak
(2) 修改
vi redis.conf
eg:修改密码为1234
(3) 运行
cd /usr/local/src/redis-6.2.6
redis-server redis.conf
12
(4) 查看是否启动
ps -ef | grep redis
1
(5) 停止redis -9:强制但是不安全
kill -9 进程号
1
开机自启
(1) 新建系统服务文件
vi /etc/systemd/system/redis.service
1
内容:
[Unit]
Description=redis-server
After=network.target[Service]
Type=forking
ExecStart=/usr/local/bin/redis-server /usr/local/src/redis-6.2.6/redis.conf
PrivateTmp=true[Install]
WantedBy=multi-user.target
1234567891011
(2) 重新加载系统服务
systemctl daemon-reload
1
(3)启动
systemctl start redis
1
(4)查看状态
systemctl status redis
1
(5) 设置开机自启
systemctl enable redis
1
1.4 Redis客户端
安装完成Redis,我们就可以操作Redis,实现数据的CRUD了。这需要用到Redis客户端,包括:
- 命令行客户端
- 图形化桌面客户端
- 编程客户端
1.4.1.Redis命令行客户端
Redis安装完成后就自带了命令行客户端:redis-cli,使用方式如下:
redis-cli [options] [commonds]
redis-cli -h 192.168.200.131 -p 6379 -a 1234
其中常见的options有:
-h 127.0.0.1
:指定要连接的redis节点的IP地址,默认是127.0.0.1-p 6379
:指定要连接的redis节点的端口,默认是6379-a 123321
:指定redis的访问密码
其中的commonds就是Redis的操作命令,例如:
ping
:与redis服务端做心跳测试,服务端正常会返回pong
不指定commond时,会进入redis-cli
的交互控制台:
也可以先不写密码,后面来补充!
1.4.2.图形化桌面客户端
GitHub上的大神编写了Redis的图形化桌面客户端,地址:https://github.com/uglide/RedisDesktopManager
不过该仓库提供的是RedisDesktopManager的源码,并未提供windows安装包。
在下面这个仓库可以找到安装包:https://github.com/lework/RedisDesktopManager-Windows/releases
resp.exe
二.Redis命令
0.通用命令
help @generic
查看所有的通用命令
生产过程中不建议用keys是因为它是单线程的,而这个行为是耗时的,会被阻塞很久耽误事情。
centos7_01_192.168.120.90:0>mset k1 v1 k2 v2 k3 v3
"OK"
centos7_01_192.168.120.90:0>keys *
1) "k2"
2) "k1"
3) "k3"#使用del
centos7_01_192.168.120.90:0>del k1 k2 k3 k4
"3"
centos7_01_192.168.120.90:0>keys *centos7_01_192.168.120.90:0>mset name v1
"OK"
centos7_01_192.168.120.90:0>keys *
1) "name"#使用exists
centos7_01_192.168.120.90:0>exists name
"1"
centos7_01_192.168.120.90:0>exists age
"0"#使用expire和ttl
centos7_01_192.168.120.90:0>expire name 20
"1"
centos7_01_192.168.120.90:0>TTL name
"15"
centos7_01_192.168.120.90:0>TTL name
"14"
centos7_01_192.168.120.90:0>TTL name
"9"
centos7_01_192.168.120.90:0>TTL name
"4"
centos7_01_192.168.120.90:0>TTL name
"2"
centos7_01_192.168.120.90:0>TTL name
"1"
centos7_01_192.168.120.90:0>TTL name
"0"
centos7_01_192.168.120.90:0>TTL name
"-2"
centos7_01_192.168.120.90:0>TTL name
"-2"
centos7_01_192.168.120.90:0>TTL name
"-2"
centos7_01_192.168.120.90:0>TTL name
"-2"
centos7_01_192.168.120.90:0>TTL name
"-2"
# -2表示已经被删了
centos7_01_192.168.120.90:0>keys * centos7_01_192.168.120.90:0>#没有用expire设置有效期,那么-1表示的是永久有效
centos7_01_192.168.120.90:0>set name Kevin
"OK"
centos7_01_192.168.120.90:0>ttl name
"-1"
centos7_01_192.168.120.90:0>
expire设置存活周期,ttl查看剩余时间,不设置expire的话ttl为-1
1.String
#set 单个添加 值会被覆盖,所以是修改
centos7_01_192.168.120.90:0>set name Rose
"OK"
centos7_01_192.168.120.90:0>get name
"Rose"
centos7_01_192.168.120.90:0>set name Jack
"OK"
centos7_01_192.168.120.90:0>get name
"Jack"#mset 批量添加
centos7_01_192.168.120.90:0>MSET k1 v1 k2 v2 k3 v3
"OK"
centos7_01_192.168.120.90:0>keys *
1) "name"
2) "k2"
3) "k1"
4) "k3"centos7_01_192.168.120.90:0>MGET name k1 k2 k3
1) "Jack"
2) "v1"
3) "v2"
4) "v3"#INCR
centos7_01_192.168.120.90:0>set age 18
"OK"
centos7_01_192.168.120.90:0>keys *
1) "k1"
2) "k2"
3) "age"
4) "k3"
5) "name"centos7_01_192.168.120.90:0>INCR age
"19"
centos7_01_192.168.120.90:0>get age
"19"
centos7_01_192.168.120.90:0>INCR age
"20"
centos7_01_192.168.120.90:0>get age
"20"#INCRBY 设置每次增长多少
#设置为负数就是自减了
centos7_01_192.168.120.90:0>INCRBY age 2
"22"
centos7_01_192.168.120.90:0>INCRBY age 2
"24"
centos7_01_192.168.120.90:0>INCRBY age 2
"26"
centos7_01_192.168.120.90:0>get age
"26"
centos7_01_192.168.120.90:0>INCRBY age -3
"23"
centos7_01_192.168.120.90:0>INCRBY age -3
"20"
centos7_01_192.168.120.90:0>get age
"20"#setnx
centos7_01_192.168.120.90:0>setnx name lli
"0"
centos7_01_192.168.120.90:0>get name
"Jack"
centos7_01_192.168.120.90:0>setnx name1 kevin
"1"
centos7_01_192.168.120.90:0>get name
"Jack"
centos7_01_192.168.120.90:0>get name1
"kevin"
#set和nx是组合的,可以分开可以合起来
centos7_01_192.168.120.90:0>set name lucy nx
null
centos7_01_192.168.120.90:0>get name
"Jack"#setex set和expire的组合 添加并设置有效期
centos7_01_192.168.120.90:0>setex name 10 jack
"OK"
centos7_01_192.168.120.90:0>ttl name
"6"
centos7_01_192.168.120.90:0>ttl name
"3"
centos7_01_192.168.120.90:0>ttl name
"2"
centos7_01_192.168.120.90:0>ttl name
"1"
centos7_01_192.168.120.90:0>ttl name
"0"
centos7_01_192.168.120.90:0>ttl name
"-2"
centos7_01_192.168.120.90:0>get name
null#set和ex分开的
centos7_01_192.168.120.90:0>set name Jack ex 10
"OK"
centos7_01_192.168.120.90:0>get name
"Jack"
centos7_01_192.168.120.90:0>ttl name
"4"
centos7_01_192.168.120.90:0>ttl name
"3"
centos7_01_192.168.120.90:0>ttl name
"-2"
centos7_01_192.168.120.90:0>get name
null
2.Key的层级格式
推荐用:
项目名:业务名:类型:id
这种形式去存储
如果Value是一个Java对象,例如一个User对象,则可以将对象序列化为JSON字符串后存储:
centos7_01_192.168.120.90:0>set heima:user:1 '{"id":1,"name": "Jack","age": 21}'
"OK"
centos7_01_192.168.120.90:0>set heima:user:2 '{"id":2,"name": "Rose","age": 20}'
"OK"
centos7_01_192.168.120.90:0>set heima:product:1 '{"id":1, "name": "小米11", "price": 4999}'
"OK"
centos7_01_192.168.120.90:0>set heima:product:2 '{"id":2, "name": "iphone", "price": 9809}'
"OK"
centos7_01_192.168.120.90:0>keys *
1) "heima:product:2"
2) "age"
3) "k2"
4) "k1"
5) "heima:product:1"
6) "heima:user:2"
7) "k3"
8) "name1"
9) "heima:user:1"
一旦我们向redis采用这样的方式存储,那么在可视化界面中,redis会以层级结构来进行存储,形成类似于这样的结构,更加方便Redis获取数据,避免了名字冲突
3.Hash
本身Redis就是一个key-value的结构,而hash的value还是一个key-value的结构
#HSET 用法和set一样的,和string不同的是不止要给key还要给field
centos7_01_192.168.120.90:0>HSET heima:user:3 name Lucy
"1"
centos7_01_192.168.120.90:0>HSET heima:user:3 age 21
"1"
centos7_01_192.168.120.90:0>HSET heima:user:3 age 17
"0"
#HMSET
centos7_01_192.168.120.90:0>HMSET heima:user:4 name hanmeimei
"OK"
centos7_01_192.168.120.90:0>HMSET hiema:user:4 name lilei age 20 sex man
"OK"
#HMGET
centos7_01_192.168.120.90:0>HMGET hiema:user:4 name age sex
1) "lilei"
2) "20"
3) "man"
#HGETALL
centos7_01_192.168.120.90:0>HGETALL hiema:user:4
1) "name"
2) "lilei"
3) "age"
4) "20"
5) "sex"
6) "man"#HKEYS HVALS
centos7_01_192.168.120.90:0>HKEYS hiema:user:4
1) "name"
2) "age"
3) "sex"
centos7_01_192.168.120.90:0>HVALS hiema:user:4
1) "lilei"
2) "20"
3) "man"
#HINCRBY
centos7_01_192.168.120.90:0>HINCRBY hiema:user:4 age 2
"22"
#HSET和nx 原来有的改不了,原来没的创建
centos7_01_192.168.120.90:0>HSETNX hiema:user:4 sex women
"0"
centos7_01_192.168.120.90:0>HSETNX hiema:user:3 sex women
"1"
centos7_01_192.168.120.90:0>HGETALL hiema:user:3
1) "sex"
2) "women"
4.List
BLPOP 是阻塞等待,当前进程阻塞,等待另外一个进程输入结果
#LPUSH
centos7_01_192.168.120.90:0>LPUSH users 1 2 3
"3"
#RPUSH
centos7_01_192.168.120.90:0>RPUSH users 456
"4"
centos7_01_192.168.120.90:0>RPUSH users 4 5 6
"7"
#LPOP 直接移除
centos7_01_192.168.120.90:0>LPOP users 1
1) "3"#RPOP
centos7_01_192.168.120.90:0>RPOP users 1
1) "6"#LRANGE
centos7_01_192.168.120.90:0>LRANGE users 1 2
1) "1"
2) "456"#BLPOP 有的话弹出,没有的话等待指定时间,这里是100秒
centos7_01_192.168.120.90:0>BLPOP user2 100
1) "user2"
2) "Jack"
5.Set
单个集合的操作
#SADD添加
centos7_01_192.168.120.90:0>SADD s1 a b c
"3"
#SMEMBERS 查看所有
centos7_01_192.168.120.90:0>SMEMBERS s1
1) "b"
2) "c"
3) "a"
# SREM 删除
centos7_01_192.168.120.90:0>SREM s1 a
"1"
#SISMEMBER 是否存在
centos7_01_192.168.120.90:0>SISMEMBER s1 a
"0"
centos7_01_192.168.120.90:0>SISMEMBER s1 b
"1"
#SCARD 计数
centos7_01_192.168.120.90:0>SCARD s1
"2"
centos7_01_192.168.120.90:0>sadd zs lisi wangwu zhaoliu
"3"
centos7_01_192.168.120.90:0>sadd ls wangwu mazi ergou
"3"
centos7_01_192.168.120.90:0>sinter zs ls
1) "wangwu"centos7_01_192.168.120.90:0>sdiff zs ls
1) "lisi"
2) "zhaoliu"centos7_01_192.168.120.90:0>sunion zs ls
1) "wangwu"
2) "ergou"
3) "lisi"
4) "zhaoliu"
5) "mazi"centos7_01_192.168.120.90:0>sismember zs lisi
"1"
centos7_01_192.168.120.90:0>sismember ls zhangsan
"0"
centos7_01_192.168.120.90:0>sismember ls zhangsan
"0"
centos7_01_192.168.120.90:0>srem zs lisi
"1"
6.SortedSet
每个元素都带上分数,所以才能实现排序
#ZADD 添加
centos7_01_192.168.120.90:0>zadd stus 85 jack 89 Lucy 82 Rose 95 Tom 78 Jerry 92 Amy 76 Miles
"7"
#ZREM 删除
centos7_01_192.168.120.90:0>zrem stus Tom
"1"
#ZSCORE
centos7_01_192.168.120.90:0>zscore stus Amy
"92"
#ZRANK 这个是从0开始数的排名 升序
centos7_01_192.168.120.90:0>zrank stus Rose
"2"
#ZREVRANK 降序
centos7_01_192.168.120.90:0>zrevrank stus Rose
"3"
#ZCOUNT 0-80分
centos7_01_192.168.120.90:0>zcount stus 0 80
"2"
#ZINCRBY 自增,一个加分操作
centos7_01_192.168.120.90:0>zincrby stus 2 Amy
"94"
#这是后三名,因为原来的是按照成绩升序排的
centos7_01_192.168.120.90:0>zrange stus 0 2
1) "Miles"
2) "Jerry"
3) "Rose"
#这是前三名
centos7_01_192.168.120.90:0>zrevrange stus 0 2
1) "Amy"
2) "Lucy"
3) "jack"
#80以下的人
centos7_01_192.168.120.90:0>zrangebyscore stus 0 80
1) "Miles"
2) "Jerry"
相关文章:

黑马 | Reids | 基础篇
黑马reids基础篇 文章目录 黑马reids基础篇一.初始Redis1.1SQL 和 NoSql的区别1.1.1结构化和非结构化1.1.2关联和非关联1.1.3查询方式1.1.4 事务1.1.5总结 1.2 认识Redis1.3 Redis安装启动默认启动:后台启动:开机自启 1.4 Redis客户端1.4.1.Redis命令行客…...

SAP-换登录界面图片
SMW0 二、SM30 (将value值删除,登录图片恢复默认) 重新登录,更改成功。...

移动 Web核心笔记(二)
空间转换 空间:是从坐标轴角度定义的 X 、Y 和 Z 三条坐标轴构成了一个立体空间,Z 轴位置与视线方向相同。 空间转换也叫 3D转换 属性:transform 平移 /*单独设置 z轴效果不明显*/ transform: translate3d(x, y, z); transform: translateX(…...

MySQL创建和管理表
1. 基础知识 存储数据是处理数据的第一步,只有正确地把数据存储起来,才能进行有效的处理和分析。 在 MySQL 中,一个完整的数据存储过程总共有 4 步,分别是创建数据库、确认字段、创建数据表、插入数据。 从系统架构的层次上看…...

【从零开始的LeetCode-算法】910. 最小差值 II
给你一个整数数组 nums,和一个整数 k 。 对于每个下标 i(0 < i < nums.length),将 nums[i] 变成 nums[i] k 或 nums[i] - k 。 nums 的 分数 是 nums 中最大元素和最小元素的差值。 在更改每个下标对应的值之后…...
周报 | 24.10.14-24.10.20文章汇总
为了更好地整理文章和发表接下来的文章,以后每周都汇总一份周报。 周报 | 24.10.7-24.10.13文章汇总-CSDN博客 OpenCV与AI深度学习 | T-Rex Label !超震撼 AI 自动标注工具,开箱即用、检测一切-CSDN博客 计算机视觉与机器学习 | 目标检测 …...

Codeforce 980 Div2 A-D 题解
A. Profitable Interest Rate 原题 A. Profitable Interest Rate 思路 易推出公式 2 * a - b 代码 #include <bits/stdc.h> //#define int long long#define F(i, a, b) for (int i (a); i < (b); i) #define dF(i, a, b) for (int i (a); i > (b); i--)usi…...

一次代码优化的过程
场景说明: wpf项目,有4个不同的页面,共用一个next按钮,实现点击后跳转到下一个页面。 第一个页面是导入文件,当有2个及以上文件时,会弹窗提示。如下图所示: 之前和之后的代码对比: 之…...
多线程的学习(1)
线程的创建方式 1.继承Thread类 package duoXianCheng;public class MyThread extends Thread{public void run(){System.out.println("hoh");}public static void main(String[] args) {MyThread m1 new MyThread();m1.start();//start启动线程,调用重…...

PyCharm借助MobaXterm跳板机连接服务器
服务器信息: Step 1 MovaXterm→Session→SSH输入服务器信息 Step 2 MovaXterm→Session→SSH→Network setting→SSG gateway(jump host) 输入跳板机信息 键入密码即可 Step 3 MovaXterm→Tunneling→New SSH tunnel 依次输入:A本机端口,…...
计算机毕业论文基于Android 的签到系统设计与实现
计算机专业本科毕业设计(论文)开题报告 毕业设计(论文)题目:基于Android的签到系统设计与实现 文章目录 毕业设计论文开题报告一、课题的目的及意义(含国内外的研究现状分析):二、课题任务、重点研究内容、实现途径、条件:摘 要1. 绪论1.1. 研究背景1.2. 研究现状1.3.…...

量化学习-02
1、宏观经济学基础概念 宏观经济简单背景 宏观经济,就是在宏观范畴以全局视角观察经济现象,分析其中的经济总量。该宏观范畴所包含的范围可以指一个国家或地区,是由众多微观个体组成的一个经济体,而这里面的微观个体可以指一个家…...

SAP_MM模块-设置业务合作伙伴类型字段必输(多种方案)
一、业务背景 公司需要把供应商增加一个细分的维度,并且要求该字段设置为必输,防止用户新增供应商时忘记维护。这里给用户找了一个分类的字段:业务合作伙伴类型,本文主要讲解如何设置该字段设置为必填; 注意ÿ…...
STM32平台上实现串口接收不定长数据-实际项目中应用
文章目录 一、中断串口监听方式初始化中断处理串口监听 二、空闲中断方式三、空闲中断DMA方式四、总结 本文将详细介绍在STM32平台上实现串口接收不定长数据的几种方法 一、中断串口监听方式 这种方式也是我早期使用的方式,直接使用寄存器来操作,这种方…...

AWD入门
一、简介 AWD(Attack With Defense,攻防兼备)模式。你需要在一场比赛里要扮演攻击方和防守方,攻者得分,失守者会被扣分。也就是说攻击别人的靶机可以获取 Flag 分数时,别人会被扣分,同时你也要保护自己的主机不被别人…...

T3矩阵看功率
每个像素的T3矩阵,功率等于特征值的和。 不同的像素的T3矩阵相加,可不能用特征分解的相加,因为两个T矩阵的特征向量不同...
VLMEvalKit多模态大模型评测工具源码解析
vlmeval/api和vlmeval/vlm文件夹下分别是api接口和本地运行的大模型的代码 基类都是base vlmeval/dataset是数据集处理代码 vlmeval/inference.py是推理代码 run.py的整个流程 1 vlmeval/api/base.py 主要为需要与外部API交互的系统提供了一个通用的框架 类属性 allowed_type…...

将 Docker 安装到指定目录
将 Docker 安装到指定目录 将 Docker 安装到指定目录 Docker 默认安装在 C:\Program Files\Docker\Docker,这可能会占用大量 C 盘空间。你可以按以下步骤将 Docker 安装到其他盘(例如 E 盘): 创建安装目录:在 E 盘创…...

哪些企业需要部署SD-WAN?
首先,让我们先明确SD-WAN的定义。SD-WAN,中文全称为软件定义广域网(Software-Defined Wide Area Network),通过集中化管理与流量控制,帮助企业优化网络性能,提升用户体验。与传统广域网…...
通信基站类型、频段与网络标准
【1】通信基站类型 移动通信基站根据覆盖面积和功率大小主要可以分为以下几种类型: 宏基站(宏站):这是最常见的基站类型,具有较大的发射功率和较广的覆盖范围,通常覆盖半径从1到25公里不等。宏基站主要用于…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析
今天聊的内容,我认为是AI开发里面非常重要的内容。它在AI开发里无处不在,当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗",或者让翻译模型 "将这段合同翻译成商务日语" 时,输入的这句话就是 Prompt。…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
【位运算】消失的两个数字(hard)
消失的两个数字(hard) 题⽬描述:解法(位运算):Java 算法代码:更简便代码 题⽬链接:⾯试题 17.19. 消失的两个数字 题⽬描述: 给定⼀个数组,包含从 1 到 N 所有…...

使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...

linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案
随着新能源汽车的快速普及,充电桩作为核心配套设施,其安全性与可靠性备受关注。然而,在高温、高负荷运行环境下,充电桩的散热问题与消防安全隐患日益凸显,成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...
【JavaSE】绘图与事件入门学习笔记
-Java绘图坐标体系 坐标体系-介绍 坐标原点位于左上角,以像素为单位。 在Java坐标系中,第一个是x坐标,表示当前位置为水平方向,距离坐标原点x个像素;第二个是y坐标,表示当前位置为垂直方向,距离坐标原点y个像素。 坐标体系-像素 …...

企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...