ClickHouse安装与下载22.3.2.2
ClickHouse安装与下载
目录
1. ClickHouse简介
1.1 ClickHouse优点:
1.2 ClickHouse缺点:
1.3 ClickHouse引擎:
1.3.1 数据库引擎
1.3.2 表引擎
2. ClickHouse下载安装
2.1 ClickHouse下载安装
2.2 ClickHouse使用
1. ClickHouse简介
ClickHouse是俄罗斯的Yandex于2016年开源的一个用于联机分析(OLAP:Online Analytical Processing)的列式数据库管理系统(DBMS:Database Management System) , 主要用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报告。 ClickHouse的全称是Click Stream,Data WareHouse,简称ClickHouse
ClickHouse是一个完全的列式分布式数据库管理系统(DBMS),允许在运行时创建表和数据库,加载数据和运行查询,而无需重新配置和重新启动服务器,支持线性扩展,简单方便,高可靠性,容错。它在大数据领域没有走 Hadoop 生态,而是采用 Local attached storage 作为存储,这样整个 IO 可能就没有 Hadoop 那一套的局限。它的系统在生产环境中可以应用到比较大的规模,因为它的线性扩展能力和可靠性保障能够原生支持 shard + replication 这种解决方案。它还提供了一些 SQL 直接接口,有比较丰富的原生 client。
1.1 ClickHouse优点:
1.灵活的MPP架构,支持线性扩展,简单方便,高可靠性
2.多服务器分布式处理数据 ,完备的DBMS系统
3.底层数据列式存储,支持压缩,优化数据存储,优化索引数据 优化底层存储
4.容错跑分快:比Vertica快5倍,比Hive快279倍,比MySQL快800倍,其可处理的数据级别已达到10亿级别
5.功能多:支持数据统计分析各种场景,支持类SQL查询,异地复制部署
6.海量数据存储,分布式运算,快速闪电的性能,几乎实时的数据分析 ,友好的SQL语法,出色的函数支持。
1.2 ClickHouse缺点:
1.不支持事务,不支持真正的删除/更新;
2.不支持高并发,官方建议qps为100,可以通过修改配置文件增加连接数,但是在服务器足够好的情况下;
3.SQL满足日常使用80%以上的语法,join写法比较特殊;最新版已支持类似SQL的join,但性能不好;
4.尽量做1000条以上批量的写入,避免逐行insert或小批量的insert,update,delete操作,因为ClickHouse底层会不断的做异步的数据合并,会影响查询性能,这个在做实时数据写入的时候要尽量避开;
5.Clickhouse快是因为采用了并行处理机制,即使一个查询,也会用服务器一半的CPU去执行,所以ClickHouse不能支持高并发的使用场景,默认单查询使用CPU核数为服务器核数的一半,安装时会自动识别服务器核数,可以通过配置文件修改该参数。
1.3 ClickHouse引擎:
表引擎是 ClickHouse 的一大特色。可以说, 表引擎决定了如何存储表的数据。包括:
数据的存储方式和位置
支持哪些查询以及如何支持
并发数据访问
索引的使用
是否可以执行多线性请求
数据复制参数
引擎决定了数据的存储位置、存储结构、表的特征(是否修改操作DDL、DDL、是否支持并发操作)
1.3.1 数据库引擎
目前支持的数据库引擎有5种:
Ordinary:默认引擎,在绝大多数情况下我们都会使用默认引擎,使用时无须刻意声明。在此数据库下可以使用任意类型的表引擎。
Dictionary:字典引擎,此类数据库会自动为所有数据字典创建它们的数据表
Memory:内存引擎,用于存放临时数据。此类数据库下的数据表只会停留在内存中,不会涉及任何磁盘操作,当服务重启后数据会被清除
Lazy:日志引擎,此类数据库下只能使用Log系列的表引擎
MySQL:MySQL引擎,将远程的MySQL服务器中的表映射到ClickHouse中,常用语数据的合并。
MaterializeMySQL:MySQL数据同步;将MySQL数据全量或增量方式同步到clickhouse中,解决mysql服务并发访问压力过大的问题。
1.3.2 表引擎
2. ClickHouse下载安装
2.1 ClickHouse下载安装
官方下载地址:https://packages.clickhouse.com/tgz/stable
阿里云下载地址:https://mirrors.aliyun.com/clickhouse/tgz/stable
一共需要下载4个文件:
clickhouse-client-22.2.2.1.tgz
clickhouse-common-static-22.2.2.1.tgz
clickhouse-common-static-dbg-22.2.2.1.tgz
clickhouse-server-22.2.2.1.tgz
将下载后的四个安装文件上传到服务器,这里是上传到linux的/opt/software/下。
依次将这四个安装包解压,并且每解压一个,执行一下解压文件夹下的install下的doinst.sh脚本。
1. clickhouse-common-static-22.2.2.1.tgz
tar -zxvf /opt/software/clickhouse-common-static-22.2.2.1.tgz
./clickhouse-common-static-22.2.2.1/install/doinst.sh
2. clickhouse-common-static-dbg-22.2.2.1.tgz
tar -zxvf /opt/software/clickhouse-common-static-dbg-22.2.2.1.tgz
./clickhouse-common-static-dbg-22.2.2.1/install/doinst.sh
3. clickhouse-server-22.2.2.1.tgz
注意:在运行doinst.sh时,clickhouse会默认创建一个default的用户,让你设置密码,不设置密码可以按回车。
tar -zxvf /opt/software/clickhouse-server-22.2.2.1.tgz
./clickhouse-server-22.2.2.1/install/doinst.sh
4. clickhouse-client-22.2.2.1.tgz
tar -zxvf /opt/software/clickhouse-client-22.2.2.1.tgz
./clickhouse-client-22.2.2.1/install/doinst.sh
#查看 clickhouse 命令
clickhouse --help
#启动clickhouse服务
clickhouse start
启动结果:
2.2 ClickHouse使用
连接clickhouse
clickhouse-client -u default --password 199511
连接成功结果
clickhouse相关目录
# 命令目录
/usr/bin
ll |grep clickhouse
-------------------------------------------
# 配置文件目录
cd /etc/clickhouse-server/
-------------------------------------------
# 日志目录
cd /var/log/clickhouse-server/
-------------------------------------------
# 数据文件目录
cd /var/lib/clickhouse/
允许远程访问
clickhouse 默认不允许远程访问,需要修改配置文件:
cd /etc/clickhouse-server/
vi config.xml
注意:只需要把 <listen_host>::</listen_host> 这一个的注释放开即可。
重启clickhouse服务:
clickhouse restart
在浏览器输入服务器ip:8123验证一下,显示OK即代表可远程连接。
使用客户端连接clickhouse
第一次连接需要安装驱动,根据提示操作即可安装成功。
————————————————
clickhouse 安装
clickhouse中文文档地址:
https://clickhouse.com/docs/zh/getting-started/tutorial/
1、centos安装部署
采用tgz的方式安装
官网上安装部署有比较详细的说明,具体文档地址如下,支持deb、rpm、tgz、docker等安装部署方式
https://clickhouse.com/docs/zh/getting-started/install/
tgz包下载地址:
https://packages.clickhouse.com/tgz/
https://github.com/ClickHouse/ClickHouse/releases
下载的版本是22.3.2.2,以此版本为例,tgz包上传到同一个目录下,执行以下操作
1 2 3 4 5 6 7 8 9 10 11 |
|
tar -xzvf clickhouse-common-static-22.3.2.2.tgz
tar -xzvf clickhouse-common-static-dbg-22.3.2.2.tgz
tar -xzvf clickhouse-server-22.3.2.2.tgz
tar -xzvf clickhouse-client-22.3.2.2.tgz
./clickhouse-common-static-22.3.2.2/install/doinst.sh
./clickhouse-common-static-dbg-22.3.2.2/install/doinst.sh
./clickhouse-server-22.3.2.2/install/doinst.sh
[root@clickhouse2 opt]# ./clickhouse-server-22.3.2.2/install/doinst.sh
ClickHouse binary is already located at /usr/bin/clickhouse
Symlink /usr/bin/clickhouse-server already exists but it points to /opt/clickhouse. Will replace the old symlink to /usr/bin/clickhouse.
Creating symlink /usr/bin/clickhouse-server to /usr/bin/clickhouse.
Creating symlink /usr/bin/clickhouse-client to /usr/bin/clickhouse.
Creating symlink /usr/bin/clickhouse-local to /usr/bin/clickhouse.
Creating symlink /usr/bin/clickhouse-benchmark to /usr/bin/clickhouse.
Symlink /usr/bin/clickhouse-copier already exists but it points to /opt/clickhouse. Will replace the old symlink to /usr/bin/clickhouse.
Creating symlink /usr/bin/clickhouse-copier to /usr/bin/clickhouse.
Creating symlink /usr/bin/clickhouse-obfuscator to /usr/bin/clickhouse.
Creating symlink /usr/bin/clickhouse-git-import to /usr/bin/clickhouse.
Creating symlink /usr/bin/clickhouse-compressor to /usr/bin/clickhouse.
Creating symlink /usr/bin/clickhouse-format to /usr/bin/clickhouse.
Symlink /usr/bin/clickhouse-extract-from-config already exists but it points to /opt/clickhouse. Will replace the old symlink to /usr/bin/clickhouse.
Creating symlink /usr/bin/clickhouse-extract-from-config to /usr/bin/clickhouse.
Creating symlink /usr/bin/clickhouse-keeper to /usr/bin/clickhouse.
Creating symlink /usr/bin/clickhouse-keeper-converter to /usr/bin/clickhouse.
Creating clickhouse group if it does not exist.
groupadd -r clickhouse
Creating clickhouse user if it does not exist.
useradd -r --shell /bin/false --home-dir /nonexistent -g clickhouse clickhouse
Will set ulimits for clickhouse user in /etc/security/limits.d/clickhouse.conf.
Creating config directory /etc/clickhouse-server/config.d that is used for tweaks of main server configuration.
Creating config directory /etc/clickhouse-server/users.d that is used for tweaks of users configuration.
Config file /etc/clickhouse-server/config.xml already exists, will keep it and extract path info from it.
/etc/clickhouse-server/config.xml has /var/lib/clickhouse/ as data path.
/etc/clickhouse-server/config.xml has /var/log/clickhouse-server/ as log path.
Users config file /etc/clickhouse-server/users.xml already exists, will keep it and extract users info from it.
Creating log directory /var/log/clickhouse-server/.
Creating data directory /var/lib/clickhouse/.
Creating pid directory /var/run/clickhouse-server.
chown -R clickhouse:clickhouse '/var/log/clickhouse-server/'
chown -R clickhouse:clickhouse '/var/run/clickhouse-server'
chown clickhouse:clickhouse '/var/lib/clickhouse/'
groupadd -r clickhouse-bridge
useradd -r --shell /bin/false --home-dir /nonexistent -g clickhouse-bridge clickhouse-bridge
chown -R clickhouse-bridge:clickhouse-bridge '/usr/bin/clickhouse-odbc-bridge'
chown -R clickhouse-bridge:clickhouse-bridge '/usr/bin/clickhouse-library-bridge'
Enter password for default user:
Password for default user is saved in file /etc/clickhouse-server/users.d/default-password.xml.
Setting capabilities for clickhouse binary. This is optional.
Cannot set 'net_admin' or 'ipc_lock' or 'sys_nice' capability for clickhouse binary. This is optional. Taskstats accounting will be disabled. To enable taskstats accounting you may add the required capability later manually.
Allow server to accept connections from the network (default is localhost only), [y/N]: y
The choice is saved in file /etc/clickhouse-server/config.d/listen.xml.
chown -R clickhouse:clickhouse '/etc/clickhouse-server'
ClickHouse has been successfully installed.
Start clickhouse-server with:
sudo clickhouse start
Start clickhouse-client with:
clickhouse-client --password
Created symlink from /etc/systemd/system/multi-user.target.wants/clickhouse-server.service to /etc/systemd/system/clickhouse-server.service.
./clickhouse-client-22.3.2.2/install/doinst.sh
2、启动server
关于tgz安装的时候这条命令
sudo /etc/init.d/clickhouse-server start 或: sudo -u clickhouse clickhouse-server --config-file=/etc/clickhouse-server/config.xml 下面这个会有执行日志,如果遇到权限问题,执行相关的权限命令: 如:sudo chown -R clickhouse:clickhouse /usr/lib
查看是否启动成功
ps -ef|grep clickhouse
命令行登录(默认没有密码)
$ clickhouse-client
3、修改密码
1 |
|
注:只读文件,退出时命令: wq!
重启服务: systemctl restart clickhouse-server 密码登录: clickhouse-client --password xxxx
clickhouse-client --password ecs****
登录:
默认端口 9000
4、远程访问
vim /etc/clickhouse-server/config.xml
之后重启clickhouse-server
systemctl restart clickhouse-server
防火墙: 开放 22端口: firewall-cmd --zone=public --add-port=9000/tcp --permanent
firewall-cmd --zone=public --add-port=8123/tcp --permanent
重新载入一下: firewall-cmd --reload
5、修改default 用户权限:
修改default 为管理员用户:users.xml (/etc/clickhouse-server/users.xml)下面: vim /etc/clickhouse-server/users.xml
里面 将<access_management>1</access_management>注释去掉,改为管理员权限,重启
systemctl restart clickhouse-server
6、修改数据目录
配置文件
vim /etc/clickhouse-server/config.xml
后期修改方法:
clickhouse默认数据目录在 /var/lib/clickhouse, 一般分区空间有限,需要修改。
只要停止数据库之后移走该目录再软连接回原地址,即可不修改config.xml实现对数据目录的修改。
#先停库 sudo clickhouse stop sudo mkdir -p /data01/ch/ #权限一定要修改否则没权限就启动不了 sudo chown -R clickhouse:clickhouse /data01/ch sudo mv /var/lib/clickhouse /data01/ch/ #建立软连接 sudo ln -s /data01/ch/clickhouse /var/lib/clickhouse sudo chown -R clickhouse:clickhouse /var/lib/clickhouse sudo ls -l /var/lib/clickhouse #启动 sudo clickhouse start
如果启动不了,一般都是目录的权限问题,可以根据具体的报错日志来判断是哪个目录。
重启生效 systemctl restart clickhouse-server
6.3,启动服务
启动服务之前,修改config.xml,修改数据的保存地址
<!-- <path>/var/lib/clickhouse/</path> -->
<path>/u01/chbase/data/</path>
<!-- <tmp_path>/var/lib/clickhouse/tmp/</tmp_path> -->
<tmp_path>/u01/chbase/data/tmp/</tmp_path>
<!-- <user_files_path>/var/lib/clickhouse/user_files/</user_files_path> -->
<user_files_path>/u01/chbase/data/user_files/</user_files_path>
正是由于修改了路径,所以这个目录的 OWNER 设为 clickhouse 用户
mkdir -p /u01/chbase/data/
mkdir -p /u01/chbase/data/tmp
mkdir -p /u01/chbase/data/user_files
chmod -R 775 /u01/
chown -R clickhouse:clickhouse /u01/chbase/data/
clickhouse用户由安装 程序自动创建,启动脚本会基于此用户启动服务
启动有两种方式:首先是基于默认配置的启动,命令如下
cd /usr/bin
service clickhouse-server start
7、创建用户和角色
创建角色及用户
登录client:
clickhouse-client -m --user test--password xxxxx(密码)
创建角色
创建一个角色acaidb_rw, 该角色针对数据库acaidb具备读写权限。 CREATE ROLE acaidb_rw; GRANT SELECT, INSERT, ALTER UPDATE, ALTER DELETE ON acaidb.* TO acaidb_rw; 如果让一个角色只允许select,不允许修改数据,下面的语句就可以。 CREATE ROLE acaidb_read; GRANT SELECT ON acaidb.* TO acaidb_read; 创建普通账户并赋权 我们分别创建账户reader和writer,然后把只读角色ro分配给reader,把读写角色分配给writer。这样,reader拥有只读权限,writer拥有读写权限。 新建一个数据库用户acai,并设置密码(将下文的<你的密码>替换)。并给用户acai赋予读写权限角色acaidb_rw 。 CREATE USER IF NOT EXISTS acai IDENTIFIED WITH sha256_password BY '<你的密码>'; 如: CREATE USER IF NOT EXISTS testuser IDENTIFIED WITH PLAINTEXT_PASSWORD BY '12222' GRANT acaidb_rw TO acai; 使用下列命令访问clickhouse数据,show databases得到acaidb,说明我们成功了。因为acai用户只能访问acaidb。 # clickhouse-client -m -u acai --password '<你的密码>' --query 'show databases;'
创建记录如下:
CREATE ROLE ehrdsrw; CREATE USER IF NOT EXISTS ehrds IDENTIFIED WITH PLAINTEXT_PASSWORD BY 'u_2024' GRANT ehrdsrw TO ehrds ; create database if not exists ehrdsdb; GRANT SELECT, INSERT, ALTER UPDATE, ALTER DELETE ON ehrdsdb.* TO ehrdsrw; GRANT ALL ON ehrdsdb.* TO ehrds;
8、web浏览器访问:
前面两步做完后,可以通过 ip:8123/play 访问到clickhouse界面,然后再password处输入密码即可
1、密码问题解决:
users.xml 里面的password 不生效,删除配置文件 rm -f /etc/clickhouse-server/users.d/default-password.xml 重启
2、更全面的部署方式:
https://zhuanlan.zhihu.com/p/522431332
相关文章:

ClickHouse安装与下载22.3.2.2
ClickHouse安装与下载 目录 1. ClickHouse简介 1.1 ClickHouse优点: 1.2 ClickHouse缺点: 1.3 ClickHouse引擎: 1.3.1 数据库引擎 1.3.2 表引擎 2. ClickHouse下载安装 2.1 ClickHouse下载安装 2.2 ClickHouse使用 1. ClickHouse简…...

【Go语言】Gin 框架教程
Gin 框架教程 1.第一个 Gin 程序 1.1 Gin 安装 # 执行执行如下操作即可,安装Gin前需要安装Go环境 go get -u -v github.com/gin-gonic/gin # -v:打印出被构建的代码包的名字 # -u:已存在相关的代码包,强行更新代码包及其依赖包…...

MySQL性能问题诊断方法和常用工具
作者介绍:老苏,10余年DBA工作运维经验,擅长Oracle、MySQL、PG数据库运维(如安装迁移,性能优化、故障应急处理等) 公众号:老苏畅谈运维 欢迎关注本人公众号,更多精彩与您分享。MySQL运…...
CGFloat转NSString保持原有的精度,末尾不添加0
问题阐述: 我们进行CGFloat转NSString可能会遇到一个问题 例如有一个CGFloat的值为2.1,转化成NSString后显示2.1000... 解决办法: 方法一: 如何解决呢,可以使用%g格式符,可以保证传入的不管是2还是2.1…...

UDS服务——TransferData (0x36)
诊断协议那些事儿 诊断协议那些事儿专栏系列文章,本文介绍TransferData (0x36)—— 数据传输,用于下载/上传数据时用的,数据的传输方向由不同的服务控制:0x34服务表示下载,0x35服务表示上传。通过阅读本文,希望能对你有所帮助。 文章目录 诊断协议那些事儿传输数据服务…...

jQuery 基本操作
01-简介 jQuery 是一个功能丰富且广泛使用的 JavaScript 库,它简化了 HTML 文档遍历和操作、事件处理、动画和 Ajax 操作。jQuery 通过其易用的 API,使复杂的 JavaScript 编程任务变得更加简单,并且兼容各种浏览器。 1、jQuery特点 简化 DOM …...

有玩家在2011年的MacBook上成功运行了Windows XP 还安装了触摸屏
我们已经在许多不同的设备上看到过 Windows XP 正在运行。这个古老的操作系统于 2001 年正式推出,现在已经老到其最后一次软件更新是在近十年前。一位好奇的玩家试图在 2011 年的触摸屏 MacBook 上为 Windows XP 打造了一个新家,复古技术探索者 Michael …...

高纯PFA容量瓶PFA试剂瓶在半导体材料的应用
在半导体生产过程中,为避免金属污染对硅器件性能造成不利影响,碳化硅产业链不同阶段产品(如衬底、外延、芯片、器件)表面的痕量杂质元素浓度表征至关重要。 在实验人员使用质谱法高精度检测第三代半导体碳化硅材料的痕量杂质浓度…...

AudioSep:从音频中分离出特定声音(人声、笑声、噪音、乐器等)本地一键整合包下载
AudioSep是一种 AI 模型,可以使用自然语言查询进行声音分离。这一创新性的模型由Audio-AGI开发,使用户能够通过简单的语言描述来分离各种声音源。 比如在嘈杂的人流车流中说话的录音中,可以分别提取干净的人声说话声音和嘈杂的人流车流噪声。…...

Prompt 提示词工程:翻译提示
近期在对计算机学习时,许多内容需要看原始的英文论文,对于我这种学渣来说特别不友好,🤷🏻♀️无奈只能一边看翻译,一边学习。 之前有搜到过专门的翻译工具,无奈都是按照字数算费用的…...
【MySQL 的三大日志的作用】
在管理MySQL数据库时,了解和区分数据库使用的三大日志类型至关重要。这些日志对于确保数据的完整性、提供恢复机制以及维持数据库的稳定性发挥着关键作用。最主要还是小豆前段时间去参加面试被问到了这些内容,下面将详细讨论Redo Log、Binlog和Undo Log的…...
数据库中数据的id生成和算法
id生成策略 自增主键 一般使用整数类型的id可使用自增主键的策略去生成id 优点: 简单、易于使用和理解。保证唯一性,无需额外的查询操作。提高查询性能,因为ID是有序的,且支持索引。 缺点: 不适用于分布式系统&a…...

SystemVerilog Assertion精华知识
前言 断言主要用于验证设计的行为。断言也可用于提供功能覆盖率,并标记用于验证的输入激励不符合假定的需求。 在验证平台中,通常进行三个主要任务: 产生激励功能检查功能覆盖率度量 在当今的设计越来越复杂情况下,像波形调试…...

pdf怎么压缩到2m以内或5m以内的方法
PDF作为一种广泛使用的文档格式,已经成为我们工作和生活中不可或缺的一部分。然而,有时候PDF文件内存会比较大,给我们的存储和传输带来了很大的不便。因此,学会压缩 PDF 文件是非常必要的。 打开"轻云处理pdf官网"&…...

Butter Knife 8
// 部分代码省略… Override public View getView(int position, View view, ViewGroup parent) { ViewHolder holder; if (view ! null) { holder (ViewHolder) view.getTag(); } else { view inflater.inflate(R.layout.testlayout, parent, false); holder new ViewHolde…...

AMSR/ADEOS-II L1A Raw Observation Counts V003地球表面和大气微波辐射的详细观测数据
AMSR/ADEOS-II L1A Raw Observation Counts V003 简介 AMSR/ADEOS-II L1A Raw Observation Counts V003数据是由日本航空航天研究开发机构(JAXA)的AMSR (Advanced Microwave Scanning Radiometer)仪器收集的一组原始观测计数数据。这些数据是从ADEOS-I…...

MySQL之复制(十一)
复制 复制的问题和解决方案 数据损坏或丢失的错误 当一个二进制日志损坏时,能恢复多少数据取决于损坏的类型,有几种比较常见的类型: 1.数据改变,但事件仍是有效的SQL 不幸的是,MySQL甚至无法察觉这种损坏。因此最好还是经常检查…...

深入源码设计!Vue3.js核心API——Computed实现原理
如果您觉得这篇文章有帮助的话!给个点赞和评论支持下吧,感谢~ 作者:前端小王hs 阿里云社区博客专家/清华大学出版社签约作者/csdn百万访问前端博主/B站千粉前端up主 此篇文章是博主于2022年学习《Vue.js设计与实现》时的笔记整理而来 书籍&a…...

驾考小技巧:老北京布鞋!距离高考出分还剩3天,我却看到有些孩子已经拿了“满分”——早读(逆天打工人爬取热门微信文章解读)
我20年驾校4000多块钱,你呢? 引言Python 代码第一篇 洞见 距离高考出分还剩3天,我却看到有些孩子已经拿了“满分”第二篇 视频新闻结尾 引言 昨天的文章顺利发出 看来“梅西” 这两个字在我们这边 不是敏感词 只是很多个罗粉搞得有点过头了 …...
java-正则表达式 2
7. 复杂的正则表达式示例(续) 7.1 验证日期格式 以下正则表达式用于验证日期格式,例如YYYY-MM-DD。 import java.util.regex.*;public class RegexExample {public static void main(String[] args) {String[] dates {"2023-01-01&q…...

CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...

黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 
Swift 协议扩展精进之路:解决 CoreData 托管实体子类的类型不匹配问题(下)
概述 在 Swift 开发语言中,各位秃头小码农们可以充分利用语法本身所带来的便利去劈荆斩棘。我们还可以恣意利用泛型、协议关联类型和协议扩展来进一步简化和优化我们复杂的代码需求。 不过,在涉及到多个子类派生于基类进行多态模拟的场景下,…...

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility
Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …...

DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...

人机融合智能 | “人智交互”跨学科新领域
本文系统地提出基于“以人为中心AI(HCAI)”理念的人-人工智能交互(人智交互)这一跨学科新领域及框架,定义人智交互领域的理念、基本理论和关键问题、方法、开发流程和参与团队等,阐述提出人智交互新领域的意义。然后,提出人智交互研究的三种新范式取向以及它们的意义。最后,总结…...

Golang——9、反射和文件操作
反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一:使用Read()读取文件2.3、方式二:bufio读取文件2.4、方式三:os.ReadFile读取2.5、写…...

【LeetCode】算法详解#6 ---除自身以外数组的乘积
1.题目介绍 给定一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请 不要使用除法,且在 O…...

渗透实战PortSwigger靶场:lab13存储型DOM XSS详解
进来是需要留言的,先用做简单的 html 标签测试 发现面的</h1>不见了 数据包中找到了一个loadCommentsWithVulnerableEscapeHtml.js 他是把用户输入的<>进行 html 编码,输入的<>当成字符串处理回显到页面中,看来只是把用户输…...

pgsql:还原数据库后出现重复序列导致“more than one owned sequence found“报错问题的解决
问题: pgsql数据库通过备份数据库文件进行还原时,如果表中有自增序列,还原后可能会出现重复的序列,此时若向表中插入新行时会出现“more than one owned sequence found”的报错提示。 点击菜单“其它”-》“序列”,…...