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"

sudo "clickhouse-common-static-22.3.2.2/install/doinst.sh"

tar -xzvf "clickhouse-common-static-dbg-22.3.2.2.tgz"

sudo "clickhouse-common-static-dbg-22.3.2.2/install/doinst.sh"

tar -xzvf "clickhouse-server-22.3.2.2.tgz"

sudo "clickhouse-server-22.3.2.2/install/doinst.sh"

tar -xzvf "clickhouse-client-22.3.2.2.tgz"

sudo "clickhouse-client-22.3.2.2/install/doinst.sh"

 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

vim /etc/clickhouse-server/users.xml

  注:只读文件,退出时命令: 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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/353486.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2024最新IDEA插件开发+发布全流程 SelectCamelWords[选中驼峰单词](idea源代码)

2024最新IDEA插件开发&#xff08;发布&#xff09;-SelectCamelWords[选中驼峰单词]&#xff08;idea源代码&#xff09; 参考文档 Jetbrains Idea插件开发文档: https://plugins.jetbrains.com/docs/intellij/welcome.html代码地址&#xff1a;https://github.com/yangfeng…

RIP路由协议汇总、版本兼容、定时器、协议优先级配置(华为)

#交换设备 RIP路由协议汇总 一、原理概述 当网络中路由器的路由条目非常多时&#xff0c;可以通过路由汇总&#xff08;又称路由汇聚或路由聚合&#xff09;来减少路由条目数&#xff0c;加快路由收敛时间和增强网络稳定性。路由汇总的原理是&#xff0c;同一个自然网段内的…

Java每日作业day6.18

ok了家人们今天我们继续学习方法的更多使用&#xff0c;闲话少叙&#xff0c;我们来看今天学了什么 1.重载 在同一个类中&#xff0c;可不可以存在同名的方法&#xff1f;重载:在同一个类中&#xff0c;定义了多个同名的方法&#xff0c;但每个方法具有不同的参数类型或参数个…

ClickHouse 高性能的列式数据库管理系统

ClickHouse是一个高性能的列式数据库管理系统&#xff08;DBMS&#xff09;&#xff0c;主要用于在线分析处理查询&#xff08;OLAP&#xff09;。以下是对ClickHouse的详细介绍&#xff1a; 基本信息&#xff1a; 来源&#xff1a;由俄罗斯的Yandex公司于2016年开源。全称&…

DDP算法之线性化和二次近似(Linearization and Quadratic Approximation)

DDP算法线性化和二次近似 在DDP算法中,第三步是线性化系统动力学方程和二次近似代价函数。这一步是关键,它使得DDP能够递归地处理非线性最优控制问题。通过线性化和二次近似,我们将复杂的非线性问题转换为一系列简单的线性二次问题,逐步逼近最优解。通过这些线性化和二次近…

R语言做图

目录 1. 图形参数 2. 低级图形 3. 部分高级图形 参考 1. 图形参数 图形参数用于设置图形中各种属性。 有些参数直接用在绘图函数内&#xff0c;如plot函数可以用 pch&#xff08;点样式&#xff09;、col&#xff08;颜色&#xff09;、cex&#xff08;文字符号大小倍数&…

pdf怎么压缩到2m以内或5m以内的方法

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

48-1 内网渗透 - 内核漏洞提权

权限提升 提权是指将普通用户的权限进行提升,也叫特权提升。在渗透测试中,通过利用各种漏洞提升webshell权限以夺得服务器权限。 系统内核漏洞提权 当目标系统存在已知的内核漏洞且没有更新安全补丁时,攻击者可以利用这些漏洞进行提权,从而获得系统级别的访问权限。 ###…

【记录45】【案例】echarts 柱状图3D效果

环境 echarts4.1.0 <template> <!-- 商场各楼层统计 --><div id"threethree"></div> </template><script> import * as echarts from "echarts" export default {name:"",components:{},data(){return {…

Python基础用法 之 运算符

1.算数运算符 符号作用说明举例加与“”相同 - 减与“-”相同*乘 与“ ”相同 9*218/除 与“ ”相同 9/24.5 、6/32.0//求商&#xff08;整数部分&#xff09; 两个数据做除法的 商 9//24%取余&#xff08;余数部分&#xff09; 是两个数据做除法的 余数 9%21**幂、次方2**…

vue3-父子通信

一个简单的vue3子组件调用父组件方法的demo <template> <div> <h2>Parent Component父组件</h2> <ChildComponent notify-parent"handleParentMethod" /> </div> </template> <script> import { ref } fr…

三星S20以上手机中的动态相片及其分解

三星S20以后的相机&#xff0c;相机拍出来的图片&#xff0c;用三星手机自带的“相册”打开之后&#xff0c;还会有“查看动态照片”的选项&#xff0c;点击之后就能查看拍照片时前后2秒左右的视频&#xff01; 不知道这个功能是不是三星独有的。 这样得到的图片非常大。因为…

用python实现多文件多文本替换功能

用python实现多文件多文本替换功能 今天修改单位项目代码时由于改变了一个数据结构名称&#xff0c;结果有几十个文件都要修改&#xff0c;一个个改实在太麻烦&#xff0c;又没有搜到比较靠谱的工具软件&#xff0c;于是干脆用python手撸了一个小工具&#xff0c;发现python在…

RabbitMQ 相关概念

引言 什么是消息中间件 消息是指在应用间传送的数据&#xff0c;包含文本字符串、JSON等。消息队列中间件&#xff08;MQ&#xff09;指利用高效可靠的消息传递机制进行平台无关的数据交流&#xff0c;并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型…

基于STM32和人工智能的智能四轴飞行器系统

目录 引言环境准备智能四轴飞行器系统基础代码实现&#xff1a;实现智能四轴飞行器系统 4.1 数据采集模块4.2 数据处理与分析4.3 控制系统4.4 用户界面与数据可视化应用场景&#xff1a;智能飞行器管理与优化问题解决方案与优化收尾与总结 1. 引言 随着无人机技术的发展&…

8.华为两台交换机的三种连接方式access 、trunk、undo portswitch

目的&#xff1a;两台三层交换机的三种连接方式 1.access 2.trunk 3.undo portswitch 模拟机不支持此配置&#xff0c;实体机支持 第一种access CE1配置 [~HUAWEI]vlan batch 10 [~HUAWEI]int Vlanif 10 [~HUAWEI-Vlanif10]ip add 10.10.10.1 24 [~HUAWEI]int g1/0/0 [~HUAWE…

Go语言RPC开发深度指南:net/rpc包的实战技巧和优化策略

Go语言RPC开发深度指南&#xff1a;net/rpc包的实战技巧和优化策略 概览理解net/rpc的核心概念RPC的基本原理net/rpc的工作模式关键特性 快速开始准备RPC服务和客户端的基础环境构建一个基础的RPC服务端构建一个基础的RPC客户端 开发一个实际的RPC服务设计服务接口实现服务客户…

男士内裤哪个品牌质量好?国内质量好的男士内裤推荐

今天想和大家分享一个虽不起眼但至关重要的时尚单品——男士内裤。它可能不像外套或鞋子那样引人注目&#xff0c;但却承载着男士们日常的舒适与健康。选择一款合适的男士内裤&#xff0c;不仅能提升穿着体验&#xff0c;更是展现个人品味和生活态度的关键。以下是一些选择内裤…

JS读取目录下的所有图片/require动态加载图片/文字高亮

<template class"aa"><div class"demo-image__lazy container"><div class"head"><div class"left-bar"><div><span>综合</span></div><div><span>定位</span><…

睡眠脑电 | 多导睡眠图技术

摘要 多导睡眠图(PSG)一词由Holland等人于1974年提出&#xff0c;用于描述在睡眠期间同时记录、分析和解释多个生理特征。PSG是诊断睡眠障碍患者和增进我们对正常睡眠认识的重要工具。这是一个复杂的过程&#xff0c;应由训练有素的技术人员执行。本文回顾了多导睡眠图(PSG)的…