CentOS 7 安装部署Cassandra4.1.5
一、Cassandra的介绍
Cassandra是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集GoogleBigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身Facebook于2008将 Cassandra 开源,此后,由于Cassandra良好的可扩展性,被Digg、Twitter等知名Web 2.0网站所采纳,成为了一种流行的分布式结构化数据存储方案。
Cassandra的官网:Apache Cassandra | Apache Cassandra Documentation
Cassandra特点
-
弹性可扩展性 - Cassandra是高度可扩展的; 它允许添加更多的硬件以适应更多的客户和更多的数据根据要求。
- 始终基于架构 - Cassandra没有单点故障,它可以连续用于不能承担故障的关键业务应用程序。
- 快速线性性能 - Cassandra是线性可扩展性的,即它为你增加集群中的节点数量增加你的吞吐量。因此,保持一个快速的响应时间。
- 灵活的数据存储 - Cassandra适应所有可能的数据格式,包括:结构化,半结构化和非结构化。它可以根据您的需要动态地适应变化的数据结构。
- 便捷的数据分发 - Cassandra通过在多个数据中心之间复制数据,可以灵活地在需要时分发数据。
- 事务支持 - Cassandra支持属性,如原子性,一致性,隔离和持久性(ACID)。
- 快速写入 - Cassandra被设计为在廉价的商品硬件上运行。 它执行快速写入,并可以存储数百TB的数据,而不牺牲读取效率。
二、Cassandra下载、安装、访问
进入下载页后,选择最新稳定版本4.1.5
三、Cassandra 安装部署
1、安装准备
注意:Cassandra 使用 JAVA 语言开发,首先保证当前机器中已经安装 JDK 11 or JDK 8
# 安装JDK 11 # yum install java-11-openjdk -y# java -version
注意:Cassandra的客户端的使用需要用的Python3版本。需要先安装Python3
# 安装python3 # yum install python3 -y# python3 -V
2、部署Cassandra
# 解压
# tar -zxvf apache-cassandra-4.1.5-bin.tar.gz# 重命名
# mv apache-cassandra-4.1.5 apache-cassandra
配置 Cassandra
进入解压后的目录,创建3个 Cassandra 的数据文件夹
# mkdir data
# mkdir commitlog
# mkdir saved-caches
修改配置文件
在 conf 目录中找到 cassandra.yaml 配置文件,配置上面创建的3个数据目录
- 配置 data_file_directories
data_file_directories:- /home/Cassandra/apache-cassandra/data
- 配置 commitlog_directory
commitlog_directory: /home/Cassandra/apache-cassandra/commitlog
- 配置 saved_caches_directory
saved_caches_directory: /home/Cassandra/apache-cassandra/saved_caches
- 配置 RPC,用于客户端连接
rpc_address: 192.168.204.131
3、启动 Cassandra
[root@localhost apache-cassandra]# pwd
/home/Cassandra/apache-cassandra
[root@localhost apache-cassandra]# ./bin/cassandra -R
输入命令来查看正在运行的cassandra的 pid
ps -ef|grep cassandra
显示如图,pid 是 11733:
4、关闭Cassandra
刚才已经查到了 pid,现在可以使用命令杀掉这个pid对应的进程
kill -9 11733
5、查看状态
[root@localhost apache-cassandra]# ./bin/nodetool status
如果cassandra启动出错,可以在bin目录下 使用 journalctl -u cassandra 命令查看
[root@localhost apache-cassandra]# cd bin
[root@localhost bin]# journalctl -u cassandra
# 问题
[root@localhost bin]# ./nodetool status
nodetool: Failed to connect to '127.0.0.1:7199' - URISyntaxException: 'Malformed IPv6 address at index 7: rmi://[127.0.0.1]:7199'.# 解决办法
[root@localhost bin]# ./nodetool -Dcom.sun.jndi.rmiURLParsing=legacy status
[root@localhost bin]# ./nodetool -h ::FFFF:127.0.0.1 status
6、客户端连接服务器
进入Cassandra的目录,输入
[root@localhost apache-cassandra]# ./bin/cqlsh 192.168.204.131 9042
Connected to Test Cluster at 192.168.204.131:9042
[cqlsh 6.1.0 | Cassandra 4.1.5 | CQL spec 3.4.6 | Native protocol v5]
Use HELP for help.
cqlsh>
上面的操作在启动cqlsh的时候并没有指定需要连接的节点以及端口,默认 cqlsh 会自动探测本机及端口。上面的操作时已经启动了 Cassandra 服务并绑定相关端口,注:【 端口列表】,cqlsh默认就会连接本机的9042端口。
从上面的命令可以看出 cqlsh 连接到名为 Test Cluster 的集群,这个名字是默认值,可以自定义,配置在 conf/cassandra.yaml 文件的 cluster_name 参数,注:【yaml全内容】
输入quit退出客户端
Cassandra的端口
7199 - JMX 7000 - 节点间通信(如果启用了TLS,则不使用) 7001 - TLS节点间通信(使用TLS时使用) 9160 - Thrift客户端API 9042 - CQL本地传输端口
7、服务运行脚本
为了方便管理,可以编写脚本来管理,在 /home/Cassandra/apache-cassandra 下创建一个 startme.sh,输入一下内容:
#!/bin/sh
CASSANDRA_DIR="/home/Cassandra/apache-cassandra"echo "************cassandra***************"
case "$1" instart)echo "* *"echo "* starting *"nohup $CASSANDRA_DIR/bin/cassandra -R >> $CASSANDRA_DIR/logs/system.log 2>&1 &echo "* started *"echo "* *"echo "************************************";;stop)echo "* *"echo "* stopping *"PID_COUNT=`ps aux |grep CassandraDaemon |grep -v grep | wc -l`PID=`ps aux |grep CassandraDaemon |grep -v grep | awk {'print $2'}`if [ $PID_COUNT -gt 0 ];thenecho "* try stop *"kill -9 $PIDecho "* kill SUCCESS! *"elseecho "* there is no ! *"echo "* *"echo "************************************"fi;;restart)echo "* *"echo "********* restarting ******"$0 stop$0 startecho "* *"echo "************************************";;status)$CASSANDRA_DIR/bin/nodetool status;;*)echo "Usage:$0 {start|stop|restart|status}"exit 1
esac
接下来就可以使用这个脚本进行 启动,重启,关闭 的操作
[root@localhost apache-cassandra]# sh startme.sh start
[root@localhost apache-cassandra]# sh startme.sh restart
[root@localhost apache-cassandra]# sh startme.sh stop
四、Cassandra根据用户名密码登录cqlsh
修改conf目录下cassandra.yaml文件
authenticator: PasswordAuthenticator //将authenticator修改为PasswordAuthenticator
重新启动cassandra并且根据默认用户登录cqlsh,用户名密码都是cassandra
[root@localhost apache-cassandra]# ./bin/cqlsh 192.168.204.131 9042 -ucassandra -pcassandraWarning: Using a password on the command line interface can be insecure.
Recommendation: use the credentials file to securely provide the password.Connected to Test Cluster at 192.168.204.131:9042
[cqlsh 6.1.0 | Cassandra 4.1.5 | CQL spec 3.4.6 | Native protocol v5]
Use HELP for help.
cassandra@cqlsh>
如果要修改默认用户,进入cqlsh后
#超级用户可以更改用户的密码或超级用户身份。为了防止禁用所有超级,超级用户不能改变自己的超级用户身份。普通用户只能改变自己的密码。附上用户名在单引号如果它包含非字母数字字符。附上密码在单引号。
CREATE USER test WITH PASSWORD '123456' SUPERUSER; //创建一个超级用户
CREATE USER test1 WITH PASSWORD '123456' NOSUPERUSER; //创建一个普通用户
ALTER USER test WITH PASSWORD '654321' ( NOSUPERUSER | SUPERUSER ) //修改用户
DROP USER cassandra //删除默认用户
五、Cassandra的基本概念
1、数据模型
1.1列(Column)
列是Cassandra的基本数据结构单元,具有三个值:名称,值、时间戳
在Cassandra中不需要预先定义列(Column),只需要在KeySpace里定义列族,然后就可以开始写数据了。
1.2列族( Column Family)
列族相当于关系数据库的表(Table),是包含了多行(Row)的容器。
1.3建空间 (KeySpace)
Cassandra的键空间(KeySpace)相当于数据库,我们创建一个键空间就是创建了一个数据库。
2、数据类型
2.1数值类型
2.2文本类型
CQL提供2种类型存放文本类型,text和varchar基本一致
2.3时间类型
2.4标识符类型
2.5集合类型
set
集合数据类型,set 里面的元素存储是无序的。
set 里面可以存储前面介绍的数据类型,也可以是用户自定义数据类型,甚至是其他集合类型。
list
list 包含了有序的列表数据,默认情况下,数据是按照插入顺序保存的。
map
map 数据类型包含了 key/value 键值对。key 和 value 可以是任何类型,除了 counter 类型
使用集合类型要注意: 1、集合的每一项最大是64K。 2、保持集合内的数据不要太大,免得Cassandra 查询延时过长,Cassandra 查询时会读出整个集合内的数据,集合在内部不会进行分页,集合的目的是存储小量数据。 3、不要向集合插入大于64K的数据,否则只有查询到前64K数据,其它部分会丢失。
2.6其他基本类型
3、数据定义命令
4、数据操作指令
5、查询指令
六、Cassandra的基本操作
1、操作键空间
1.1创建Keyspace
语法
CREATE KEYSPACE <identifier> WITH <properties>;更具体的语法:
Create keyspace KeyspaceName with replicaton={'class':strategy name,
'replication_factor': No of replications on different nodes};
要填写的内容:
KeyspaceName 代表键空间的名字
strategy name 代表副本放置策略,内容包括:简单策略、网络拓扑策略,选择其中的一个。
No of replications on different nodes 代表 复制因子,放置在不同节点上的数据的副本数。
编写完成的创建语句 创建一个键空间名字为:school,副本策略选择:简单策略 SimpleStrategy,副本因子:3
CREATE KEYSPACE school WITH replication = {'class':'SimpleStrategy', 'replication_factor' : 3};
1.2连接Keyspace
语法
USE <identifier>;
1.3修改键空间
语法
ALTER KEYSPACE <identifier> WITH <properties>
1.4删除键空间
语法
DROP KEYSPACE <identifier>
2、操作表、索引
2.1查看键空间下所有表 代码
DESCRIBE TABLES;
2.2创建表
语法
CREATE (TABLE | COLUMNFAMILY) <tablename> ('<column-definition>' , '<column-definition>')
(WITH <option> AND <option>)
完整创建表语句,创建student 表,student包含属性如下: 学生编号(id), 姓名(name),年龄(age),性别(gender),家庭地址(address),interest(兴趣),phone(电话号码),education(教育经历) id 为主键,并且为每个Column选择对应的数据类型。 注意:interest 的数据类型是set ,phone的数据类型是list,education 的数据类型是map
CREATE TABLE student(id int PRIMARY KEY, name text, age int, gender tinyint, address text ,interest set<text>,phone list<text>,education map<text, text>
);
2.3cassandra的索引(KEY)
Cassandra的5种Key
- Primary Key
- Partition Key
- Composite Key
- Compound Key
- Clustering Key
1)Primary Key
是用来获取某一行的数据, 可以是单一列(Single column Primary Key)或者多列(Composite Primary Key)。
在 Single column Primary Key 决定这一条记录放在哪个节点。create table testTab (
id int PRIMARY KEY,
name text
);
2)Composite Primary Key
如果 Primary Key 由多列组成,那么这种情况称为 Compound Primary Key 或 Composite Primary Key。
create table testTab (
key_one int,
key_two int,
name text,
PRIMARY KEY(key_one, key_two)
);
3)Partition Key
在组合主键的情况下(上面的例子),第一部分称作Partition Key(key_one就是partition key),第二部分是CLUSTERING KEY(key_two)
Cassandra会对Partition key 做一个hash计算,并自己决定将这一条记录放在哪个节点。
如果 Partition key 由多个字段组成,称之为 Composite Partition key
create table testTab (
key_part_one int,
key_part_two int,
key_clust_one int,
key_clust_two int,
key_clust_three uuid,
name text,
PRIMARY KEY((key_part_one,key_part_two), key_clust_one, key_clust_two, key_clust_three)
);
4)Clustering Key
决定同一个分区内相同 Partition Key 数据的排序,默认为升序,可以在建表语句里面手动设置排序的方式
2.4修改表结构
添加列,语法
ALTER TABLE table name ADD new column datatype;删除列,语法
ALTER table name DROP columnname;
2.5删除表
语法
DROP TABLE <tablename>
2.6清空表
语法
TRUNCATE <tablename>
2.7创建索引
普通列创建索引
CREATE INDEX <identifier> ON <tablename>集合列创建索引
CREATE INDEX ON student(interest); -- set集合添加索引
CREATE INDEX mymap ON student(KEYS(education)); -- map结合添加索引效果:
2.8 删除索引
语法
DROP INDEX <identifier>
3、查询数据
使用 SELECT 、WHERE、LIKE、GROUP BY 、ORDER BY等关键词
SELECT FROM <tablename>
SELECT FROM <table name> WHERE <condition>;
查询时使用索引
- Primary Key 只能用 = 号查询
- 第二主键 支持= > < >= <=
- 索引列 只支持 = 号
- 非索引非主键字段过滤可以使用ALLOW FILTERING
ALLOW FILTERING是一种非常消耗计算机资源的查询方式。 如果表包含例如100万行,并且其中95%具有满足查询条件的值,则查询仍然相对有效,这时应该使用ALLOW FILTERING。
如果表包含100万行,并且只有2行包含满足查询条件值,则查询效率极低。Cassandra将无需加载999,998行。如果经常使用查询,则最好在列上添加索引。
ALLOW FILTERING在表数据量小的时候没有什么问题,但是数据量过大就会使查询变得缓慢。
查询时排序
cassandra也是支持排序的,order by。 排序也是有条件的
- 必须有第一主键的=号查询,cassandra的第一主键是决定记录分布在哪台机器上,cassandra只支持单台机器上的记录排序。
- 只能根据第二、三、四…主键进行有序的,相同的排序。
- 不能有索引查询,cassandra的任何查询,最后的结果都是有序的,内部就是这样存储的。
分页查询
使用limit 关键字来限制查询结果的条数 进行分页
4、添加数据
语法
INSERT INTO <tablename>(<column1 name>, <column2 name>....) VALUES (<value1>, <value2>....) USING <option>
5、更新列数据
更新表中的数据,可用关键字:
- Where - 选择要更新的行
- Set - 设置要更新的值
- Must - 包括组成主键的所有列
在更新行时,如果给定行不可用,则UPDATE创建一个新行
语法
UPDATE <tablename>
SET <column name> = <new value>
<column name> = <value>....
WHERE <condition>
更新简单数据
把student_id = 1012 的数据的gender列 的值改为1,代码:UPDATE student set gender = 1 where student_id= 1012;
更新set类型数据
在student中interest列是set类型1)添加一个元素
使用UPDATE命令 和 ‘+’ 操作符代码:
UPDATE student SET interest = interest + {'游戏'} WHERE student_id = 1012;2)删除一个元素
使用UPDATE命令 和 ‘-’ 操作符代码:
UPDATE student SET interest = interest - {'电影'} WHERE student_id = 1012;3)删除所有元素
可以使用UPDATA或DELETE命令,效果一样代码:
UPDATE student SET interest = {} WHERE student_id = 1012;
或
DELETE interest FROM student WHERE student_id = 1012;
更新list类型数据
使用UPDATA命令向list插入值
代码:
UPDATE student SET phone = ['020-66666666', '13666666666'] WHERE student_id = 1012;在list前面插入值
代码:
UPDATE student SET phone = [ '030-55555555' ] + phone WHERE student_id = 1012;在list后面插入值
代码:
UPDATE student SET phone = phone + [ '040-33333333' ] WHERE student_id = 1012;使用列表索引设置值,覆盖已经存在的值
这种操作会读入整个list,效率比上面2种方式差现在把phone中下标为2的数据,也就是 “13666666666”替换,代码:
UPDATE student SET phone[2] = '050-22222222' WHERE student_id = 1012;【不推荐】使用DELETE命令和索引删除某个特定位置的值
非线程安全的,如果在操作时其它线程在前面添加了一个元素,会导致移除错误的元素代码:
DELETE phone[2] FROM student WHERE student_id = 1012;【推荐】使用UPDATE命令和‘-’移除list中所有的特定值
代码:
UPDATE student SET phone = phone - ['020-66666666'] WHERE student_id = 1012;
更新map类型数据
map输出顺序取决于map类型。1)使用Insert或Update命令
UPDATE student SET education={'中学': '城市第五中学', '小学': '城市第五小学'} WHERE student_id = 1012;2)使用UPDATE命令设置指定元素的value
UPDATE student SET education['中学'] = '爱民中学' WHERE student_id = 1012;3)可以使用如下语法增加map元素。如果key已存在,value会被覆盖,不存在则插入
UPDATE student SET education = education + { '幼儿园' : '大海幼儿园', '中学': '科技路中学'} WHERE student_id = 1012;4)删除元素
可以用DELETE 和 UPDATE 删除Map类型中的数据使用DELETE删除数据
DELETE education['幼儿园'] FROM student WHERE student_id = 1012;使用UPDATE删除数据
UPDATE student SET education=education - {'中学','小学'} WHERE student_id = 1012;
6、删除行
语法
DELETE FROM <identifier> WHERE <condition>;
7、批量操作
把多次更新操作合并为一次请求,减少客户端和服务端的网络交互。 batch中同一个partition key的操作具有隔离性
语法使用BATCH,您可以同时执行多个修改语句(插入,更新,删除)BEGIN BATCH
<insert-stmt>/ <update-stmt>/ <delete-stmt>
APPLY BATCH
相关文章:
![](https://img-blog.csdnimg.cn/direct/07e4b4f0742c44abb90a802788241230.png)
CentOS 7 安装部署Cassandra4.1.5
一、Cassandra的介绍 Cassandra是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集GoogleBigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身Facebook于2008将 Cassandra 开源,此后࿰…...
![](https://img-blog.csdnimg.cn/direct/a7a579efd1da4f0d9a7b4a01dec9b57c.png)
【数据结构与算法】对称矩阵,三角矩阵 详解
给出对称矩阵、三角矩阵的节省内存的存贮结构并写出相应的输入、输出算法。 对称矩阵和三角矩阵可以通过特殊的存储结构来节省内存。这种存储结构只存储矩阵的一部分元素,而不是全部元素。 对称矩阵:对于一个n阶对称矩阵,我们只需要存储主对…...
![](https://img-blog.csdnimg.cn/img_convert/37bacc6acd1b15e3fa81493ed57b1626.gif)
Apache IoTDB 走进东南大学,深入分享项目发展历程与收获
源于高校,回到高校,Apache IoTDB PMC 成员乔嘉林为同学们详细分享行业前瞻、研发历程与心得体会。 01 把领先的数据库知识带到校园 6 月 5 日,东南大学计算机科学与工程学院、软件学院、人工智能学院主办的“拔尖领航系列活动特别策划篇-第二…...
![](https://img-blog.csdnimg.cn/img_convert/29283966dc84fcb31808e98674307c67.png)
Stable Diffusion AI绘画助力建筑设计艺术创新——城市建筑设计大模型分享
大家好,我是向阳 今天我将针对建筑设计方面的AI大模型进行简单介绍,我们将通过富有想象力的关键词或结合Stable Diffusion 的ControlNet 给原本只有黑白线条的线稿变成彩色的效果图,可能你只需要短短几分钟就可以让黑白线稿变成几种甚至十几种…...
![](https://img-blog.csdnimg.cn/img_convert/10d39b5f760a570a30069e62926717a5.png)
没有 ADetailer,ComfyUI 画图脸崩了怎么办?
我们都知道 SD 的 WebUI 中的面部修复神器是 ADetailer,不过它是 WebUI 的专属插件,在 ComfyUI 中是搜索不到这个插件的,但是并不代表 ComfyUI 就不能使用面部修复功能了,ComfyUI 中也是可以找到平替的。 今天我们就来讲讲在 Com…...
![](https://img-blog.csdnimg.cn/direct/2331aabdcb8e4bf4b378950edaddf3fa.jpeg)
防爆气象仪的工作原理
TH-WFB5矿山气象传感器在矿山安全监测系统中扮演着至关重要的角色,它们能够及时发现异常情况,为矿山的安全运营提供可靠的数据支持。矿山气象传感器能够实时监测矿山环境中的风速、风向、温度、湿度和大气压力等关键气象参数。这些传感器采用先进的传感技…...
![](https://img-blog.csdnimg.cn/img_convert/83f3971a2b3c847bb06a95c63553199b.png)
深度学习入门5——为什么神经网络可以学习?
在理解神经网络的可学习性之前,需要先从数学中的导数、数值微分、偏导数、梯度等概念入手,从而理解为什么神经网络具备学习能力。 1.数值微分的定义 先从导数出发理解什么是梯度。某一点的导数直观理解就是在该点的切线的斜率。在数学中导数表示某个瞬…...
![](https://img-blog.csdnimg.cn/direct/80b4960986c1420dbbde0b1fc4eb65ab.png#pic_center)
Integer溢出问题
0. 背景 在刷 LeetCode 时,代码的执行结果与预期出现了偏差,原因是 Int 值超过了允许范围 [ − 2 31 , 2 31 − 1 ] [-2^{31},2^{31}-1 ] [−231,231−1]。工作中从来没有遇到过这种情况,之前的认知是如果 Int 中存储的值超过了允许范围也许…...
![](https://www.ngui.cc/images/no-images.jpg)
软件测试全面指南:提升软件质量的系统流程
一、引言 随着软件行业的飞速发展,确保软件质量、稳定性和用户体验已成为企业竞争的关键。本文档旨在为测试团队提供一套全面的软件测试指南,通过规范测试用例管理、功能测试、接口测试、性能测试及缺陷管理等流程,助力测试团队实现高效、系统…...
![](https://img-blog.csdnimg.cn/img_convert/06c987f50dde51439d030a24cabed393.png)
《逆贫大叔》:一部穿越时光的温情史诗
《逆贫大叔》:一部穿越时光的温情史诗 在历史的长河中,有些故事能够穿越时光的尘埃,直击人心。《逆贫大叔》就是这样一部作品,它不仅是一部电视剧,更是一段历史的缩影,一次心灵的触动。 背景设定࿱…...
![](https://img-blog.csdnimg.cn/direct/3b74137dd1b84fc284d09f97b0242965.png)
【电机控制】FOC算法验证步骤——PWM、ADC
【电机控制】FOC算法验证步骤 文章目录 前言一、PWM——不接电机1、PWMA-H-50%2、PWMB-H-25%3、PWMC-H-0%4、PWMA-L-50%5、PWMB-L-75%6、PWMC-L-100% 二、ADC——不接电机1.电流零点稳定性、ADC读取的OFFSET2.电流钳准备3.运放电路分析1.电路OFFSET2.AOP3.采样电路的采样值范围…...
![](https://www.ngui.cc/images/no-images.jpg)
如何衡量llm 数据集的多样性
衡量大型语言模型(LLM)数据集的多样性是一个复杂的问题,因为多样性可以从多个角度来考虑。以下是一些常用的方法和指标来评估数据集的多样性: 词汇多样性: 类型-词符比(Type-Token Ratio, TTR)…...
![](https://www.ngui.cc/images/no-images.jpg)
编程天才是什么意思
编程天才是什么意思 编程天才,这个词汇似乎充满了神秘与敬畏的色彩。那么,它究竟意味着什么呢?在本文中,我们将从四个方面、五个方面、六个方面和七个方面深入探讨编程天才的内涵与外延,带您领略这一领域的独特魅力。…...
![](https://img-blog.csdnimg.cn/direct/c7c068d341bc41508a4bcaa324043739.png)
创建npm私包
参考文章: 使用双重身份验证访问 npm | npm 中文网 私有npm包的实例详解-js教程-PHP中文网 1.注册npm账号 npm官网: npm | Home 2.安装node 百度挺多的,安装完后,检查是否安装成功就行 3.写一个简单的模块 创建个文件夹&am…...
![](https://www.ngui.cc/images/no-images.jpg)
provider追加android:name的命名有哪些?
在Android中,为<provider>元素添加android:name属性时,命名应遵循Android组件的命名规范和包名的命名规范。以下是一些关于命名android:name的要点: 包名前缀:android:name属性的值通常应以包名开始,这是应用程序…...
![](https://img-blog.csdnimg.cn/direct/3e61735ec9504df08e4aa31205e94fee.png)
长亭网络通信基础
长亭笔试之前就已经学过一遍了 这算温故而知新吧 TCP/IP 首先我在这里默写一下之前的7层和4层 应用层 应 【表示层 数据格式转换 传 【会话层 …...
![](https://img-blog.csdnimg.cn/direct/cbe3d877543843c2883aad82f070ca5e.png)
hdfs源码解析之DFSClient
1、DFSClient类简介 DFSClient 是 Hadoop 分布式文件系统(HDFS)中的一个核心类,用于客户端与 HDFS 之间的交互。它提供了一组方法,使客户端应用程序可以方便地与 HDFS 进行通信,包括文件的读取、写入、创建、删除、重命…...
![](https://www.ngui.cc/images/no-images.jpg)
智能化立体仓库的种类有哪些?
在仓储运输系统中,自动化立体仓库可充分利用空间储存货物,故而也被称之为高层货架仓库。在实际应用中,自动化仓库系统是不需人工处理的情况下能自动存储和取出物料的系统。那么,智能化立体仓库的种类有哪些?下面就让小…...
![](https://www.ngui.cc/images/no-images.jpg)
Stable Diffusion 3 如何下载安装使用及性能优化
Stable Diffusion 3 Stable Diffusion 3(SD3),Stability AI最新推出的Stable Diffusion模型系列,现在可以在Hugging Face Hub上使用,并且可以与Diffusers一起使用。 今天发布的模型是Stable Diffusion 3 Medium&…...
![](https://img-blog.csdnimg.cn/direct/35cc3d7147e2418a89eef06305cee350.png)
c语言操作符详解
操作符详解 正数的原码反码补码相同 负数的原码最高位数是1,正数为0 整数在内存中存储的是补码 负数的左移与右移,移的是补码,打印的是源码 补码-1取反就是原码。 左移有乘2的效果 左移和右移只针对整数。 vs里的右移操作赋采用的是算数右…...
![](https://img-blog.csdnimg.cn/direct/f51cf32a01d9420483e5df103f2532a8.jpeg)
【耐水好】强耐水UV胶水它的粘接强度和普通UV胶水比如何呢
【耐水好】强耐水UV胶水它的粘接强度和普通UV胶水比如何呢 强耐水UV胶水的粘接强度与普通UV胶水相比,具有显著的优势。以下是详细的比较和归纳: 固化方式: 两者都是通过紫外线(UV)照射进行固化,但强耐水UV…...
![](https://img-blog.csdnimg.cn/direct/bce817d630b747e68612e9849e7e3309.png)
jumpserver堡垒机集群搭建
1、环境 操作系统:龙蜥os 7.9 firewall-cmd --permanent --zonepublic --remove-servicessh firewall-cmd --permanent --zonepublic --add-rich-rulerule familyipv4 source address10.90.101.1 port port22 protocoltcp accept firewall-cmd --reload2、安装NFS…...
![](https://img-blog.csdnimg.cn/img_convert/f0901b4da14d459819c779b2c256d038.webp?x-oss-process=image/format,png)
Termius for Mac/Win:跨平台多协议远程管理利器
Termius for Mac/Win是一款备受瞩目的跨平台多协议远程管理软件,以其卓越的性能、丰富的功能和便捷的操作体验,赢得了广大用户的青睐。无论是在企业IT管理、系统维护,还是个人远程连接、文件传输等方面,Termius都展现出了出色的实…...
![](https://img-blog.csdnimg.cn/direct/184b21a7049d4226bd634357aeee3269.png)
Unity OpenCVForUnity 安装和第二个案例详解 <二>
目录 一、前言 二、场景介绍 1.WebCamTextureToMatExample脚本 2.FpsMonitor脚本 三、 结构体Scaler 四、找到相机并使用 1.相机的启用 2.格式转换 a.把webCamTexture转换成Mat b.把Mat转换成Texture2D 五、脚本组合 六、作者的碎碎念 一、前言 第二个案例…...
![](https://img-blog.csdnimg.cn/direct/eed0cbdab258439d98f3bdef509296b0.jpeg)
Lua实现自定义函数面向对象编程
本文目录 1、引言2、原理3、实例4、层析验证 文章对应视频教程: 暂无,可以关注我的B站账号等待更新。 点击图片或链接访问我的B站主页~~~ 1、引言 在现代软件开发中,面向对象编程(OOP)已经成为一种广泛使用的编程范式…...
![](https://img-blog.csdnimg.cn/direct/3d83cfc2002f410390e64c7f4b55f917.png)
docker安装消息队列mq中的rabbit服务
在现代化的分布式系统中,消息队列(Message Queue, MQ)已经成为了一种不可或缺的组件。RabbitMQ作为一款高性能、开源的消息队列软件,因其高可用性、可扩展性和易用性而广受欢迎。本文将详细介绍如何在Docker环境中安装RabbitMQ服务…...
![](https://img-blog.csdnimg.cn/img_convert/938ec8293e40185313f26361ba1b1e3c.jpeg)
OpenAI新模型发布,免费开放GPT-4o!但只开放一点点...
GPT-4o 中的“o”代表“omni”——指的是 GPT-4o 的多模态。 该模型将向免费客户开放,这意味着任何人都可以通过 ChatGPT 访问 OpenAI 最先进的技术。 GPT-4o 是 OpenAI 昨天晚上发布的新旗舰模型,可以实时推理音频、视觉和文本。 据官方介绍࿰…...
![](https://img-blog.csdnimg.cn/direct/d0dd4d79c6ec4cca9e22f1374638ffb2.png)
idea的右边栏maven不见了(丢了)解决方案以及idea无法识别maven项目
前言 众所周知,idea是java开发中不可缺少的利器,但是由于功能过多,导致奇怪的问题也很多 问题汇总 idea的右边栏maven丢了 idea无法识别maven项目 对应的解决办法 idea的右边栏maven丢了 原因可能是被自己手动移除了 或者 项目没被正确…...
![](https://img-blog.csdnimg.cn/direct/98ffcc3e3796443483210360b30196d0.jpeg)
等待 chrome.storage.local.get() 完成
chrome.storage.local.get() 获取存储处理并计数,内部计数正常,外部使用始终为0,百思不得其解。 如何在继续执行之前等待异步chrome.storage.local.get()完成-腾讯云开发者社区-腾讯云 (tencent.com) 原来我忽略了异步问题,最简…...
![](https://www.ngui.cc/images/no-images.jpg)
004 AOP使用
文章目录 基于AspectJ的AOP的使用添加依赖编写目标类和目标方法使用XML实现实现步骤切入点表达式通知类型 使用注解实现实现步骤环绕通知注解配置定义通用切入点 纯注解方式 基于AspectJ的AOP的使用 其实就是指的SpringAspectJ整合,不过Spring已经将AspectJ收录到自…...
![](/images/no-images.jpg)
wordpress优缺点/网络营销方案ppt
容斥原理 设\(S_1,S_2,...,S_n\)为\(n\)个有限集合,\(|S|\)代表集合\(S\)的大小,则有 \[\left | \bigcup_{i1}^nS_i \right |\sum_{i1}^n|S_i|-\sum_{1\leq i \leq j \leq n}|S_i\cap S_j|...(-1)^{n1}\left | \bigcap_{i1}^nS_i \right |\] 多重集组合数…...
![](/images/no-images.jpg)
安徽省建设监理协会新网站/广州专业seo公司
在虚拟机CentOS 7上安装部署ftp服务器,主机win10上访问 1.安装 安装包vsftpd-3.0.2-25.el7.x86_64.rpm放入/usr/src/路径下 [rootlocalhost ~]# cd /usr/src [rootlocalhost src]# yum install -y vsftpd-3.0.2-25.el7.x86_64.rpm 2.创建用户及设置目录 创建主目…...
![](/images/no-images.jpg)
深圳 企业网站建设/网站优化排名公司哪家好
JavaScript面试题 1.JavaScript 中 undefined 和 not defined 的区别 JavaScript 未声明变量直接使用会抛出异常:var name is not defined 如果没有处理异常,代码就停止运行了 但是,使用typeof undeclared_variable并不会产生异常ÿ…...
![](https://img-blog.csdnimg.cn/img_convert/c197e4fe17a9e818e11d43148bb51bd4.png)
wordpress临时维护/seo推广论坛
在Vue中,其中最最最核心的一个知识点就是数据响应式原理,数据响应式原理归结起来就包含两大部分:侦测数据变化、依赖收集,了解这两个知识点就了解到了数据响应式原理的精华。一、侦测数据变化能够帧听到数据变化是数据响应式原理的…...
![](/images/no-images.jpg)
东莞智通人才网官网首页/seo关键字排名
10月27日消息,据路透社报道,富士通公司周四证实,正在与联想商谈在设计和制造PC上进行合作,不过表示将保留自己的PC品牌。此声明的发布,正值日益复杂的智能手机和平板电脑侵蚀PC市场之时,而全球PC销售早在5年…...
![](https://img-blog.csdnimg.cn/img_convert/29517c21a7d6cee34a59b2647a64b892.gif)
可以免费做推广的网站/百度app下载安装普通下载
XD中的图层面板Adobe XD里画出来的每一个元素都是一个独立的图层,和PS一样可以通过快捷键CtrlG键进行自由组合,也可以通过CtrlShiftG取消组合。单击工具栏中的“图层”工具,或者按CtrlY键打开和关闭图层面板。在未选择任何对象的情况下&#…...