网络基础 -- https加密通讯
参考贴:https://blog.csdn.net/junehappylove/article/details/52288796
https与http相比它的通讯是加密的安全的
服务器和客户端之间的信息传递需要做加密处理
这里我们要明确另一些概念
对称加密:加密和解密使用同一把钥匙,这个时候需要保存好这个密钥。
非对称加密:加密和解密是使用不同的密钥的,也就是非对称加密系统,通常一个密钥是公开的,大家都知道的,一个密钥是私有的,需要妥善的保存避免泄露,这样一方用公钥或者私钥进行加密,另一方用相反的钥匙做解密。
那么情景一:
服务器作为主体时,服务器拥有私钥,向客户端推送数据时,服务器用私钥做了加密,将加密后的数据发送给客户端,客户端拿到数据后用公钥做解密就能得到真实的信息了。
客户端通过一个服务器地址向服务器发起请求:
C to S:hello server222
S to C:hello , I’m server
C to S:证明自己是服务器
S to C:我是服务器 {我是服务器}[私钥|RSA]
客户端向服务器发出消息,但是地址这个东西是不可靠的,黑客可以冒充服务器,那么这个时 ...
网络基础 -- 互联网协议--五层模型
介绍网络的工作原理,物理设备到底是怎样与各种协议合作组成的信道网络。
原博客地址:http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html
这里将按照分层的方式来了解网络组成,按照功能分成五个层次,这个不是一个标准的分层,也没有标准,方便理解的去模糊划分。
实体层
实体层就是将电脑连入网络的网线, 像上面宽带、光纤、无线电波一类的东西,就是信号传输的线路。
链路层
首先在实体层中传输的数据本质上都是0和1,所以要规定出我们要如何去传输和识别这些01数据,这个层确定了这些0和1的分组方式。
一开始大家都有自己的分组方式,但是这样明显不方便,不能相互的沟通,后来叫“以太网“的协议占据了主导地位,这种协议规定一组电信号构成一个数据包,叫做帧,每个帧又分为”标头“和”数据“两个部分。标头里存储了发送者、接收者、数据类型等信息;数据里就是需要传输的数据。标头的长度固定为18个字节,数据部分的长度为46到1500之间,所以一个帧的最短长度为64字节,最长为1518字节;
MAC地址,上面 ...
网络基础 -- 网络基础
自顶向下
概论:第一章 概论
因特网:第一章 计算机网络与因特网
应用层:第二章 应用层
运输层:第三章 运输层
网络层-数据平面:第四章 网络层-数据平面
名词解释
WAN、LAN、ETH:WAN、LAN、ETH接口
杂项
HTTP:HTTP
HTTPS加密通讯:https加密通讯
ssh原理:SSH原理
五层模型(浅诉):互联网协议–五层模型
DNS:DNS
clickhouse -- python调用clickhouse语法
[TOC]
一、client方式1.1 基础用法12345678910111213141516import clickhouse_driver# 使用 HTTP 连接方式连接 ClickHouse 数据库client = clickhouse_driver.Client( host='your_host', port='your_port', user='your_user', password='your_password', database='your_database')# 执行 SQL 查询语句results = client.execute('SELECT * FROM your_table')# 处理查询结果print(results)
1.2 防止SQL注入
查询操作,防止SQL注入,in查询语法
1234567891011ck_client = get_slb_client()query_sql = " ...
clickhouse -- 一、安装与配置
{“canTryAgain”:false,”scope”:”PREVIOUS_EXCEPTION”,”error”:”27601”,”message”:”Message[NOS_ERROR_PARAM_EMPTY_KEY]: failed to download file, userId=qq7AE1C3EC95D8BC3B8E19DFC70C1C83F1, fileId=WEB7339520ab742d936c5ad910f6a987494”,”objectUser”:”qq7AE1C3EC95D8BC3B8E19DFC70C1C83F1”}
clickhouse -- 三、表结构
定义数据表数据库创建CREATE DATABASE if not exists lxl_test_flow_snmp ENGINE = Ordinary;
引擎ch中数据库也是可以设置引擎的,目前支持5中引擎
ordinary:默认引擎,此数据库可以使用任意类型的表引擎
dictionary:字典引擎,自动为所有数据字典创建他们的数据表
memory:内存引擎,用于存放临时数据,此数据库下的数据表只会停留在内存中,不会涉及任何磁盘操作,当服务重启后数据会被清除
lazy:日志引擎,此数据库下只能使用Log系列表引擎
MySQL:MySQL引擎,此类数据库下会自动拉取远端MySQL中的数据,并为他们创建MySQL表引擎的数据表
存储
在data目录下创建对应的文件目录
在metadata下创建用于数据库恢复的xx.sql文件
数据表本地表CREATE TABLE lxl_test_flow_snmp.flow_data_local_new ON CLUSTER clickhouse_remote_servers
(
`pipe_id` Stri ...
clickhouse -- 二、数据定义
数据类型clickhouse的数据类型可以划分为基础数据类型、复合数据类型和特殊数据类型
基础数据类型数值、字符串和时间
数值int
名称
大小
数值
普遍称呼
int8
1
-128~127
tinyint
int16
2
-32768~32767
smallint
int32
4
…
int
int64
8
…
bigint
ch在这个地方还是比较直,int加上多少位进行命名,同MySQL一样,也支持无符号整数
名称
大小
数值
普遍称呼
uint8
1
0~255
tinyint
uint16
2
0~65535
smallint
uint32
4
…
int
uint64
8
…
bigint
floatch中有float32和float64来表示单精度和双精度浮点数
名称
大小
精度
普遍称呼
float32
4
7
float
float64
8
16
double
同时浮点数还支持正无穷select 8/0和负无穷select -8/0以及非数字select 0/0
decimal高精度计算,暂时没 ...
clickhouse -- 基础SQL
[TOC]
DDL创建DBCREATE DATABASE flow_snmp ON CLUSTER clickhouse_remote_servers ENGINE = Ordinary;
创建数据库表CREATE TABLE lxl_test_flow_snmp.rename_test ON CLUSTER clickhouse_remote_servers
(
`pipe_id` UUID,
`time` DateTime,
`in_flow` Float64,
`out_flow` Float64,
`in_bps` Float64,
`out_bps` Float64
)
ENGINE = ReplicatedMergeTree('/clickhouse/tables/{shard}/rename_test', '{replica}')
PARTITION BY toYYYYMM(time)
ORDER BY (pipe_id, time)
SETTING ...
clickhouse -- 架构概述
CH的核心特性完备的DBMS功能不单是一个数据库,它应该是一个数据库管理系统,具备DDL、DML、分布式、权限控制、安全备份等特性
列式存储和数据压缩列式存储是指同一列的数据会被存储到一起,同一行的数据的列被存储在不同的文件中,比如有一个表有50个字段,100行数据,要提取某5个字段的数据来进行分析,对于行存储来说实际还是要扫描所有字段然后取出要的字段,而列存储可以直接去获取需要的列
数据压缩的基本原理,比如字符串abcdefghi_bdcefghi可以被压缩为abcdefghi_(9,8),压缩的本质就是对相同的数据进行编码存储,也就是说数据重复度越高,那么压缩率也就越高,而什么样的数据重复度高呢,同一列的数据由于拥有相同的属性,更容易出现重复,所以列式存储对数据压缩更友好
所以可以看到列式存储对于某些业务场景下,可以减少磁盘IO和数据传输体积,从而提高效率
向量化执行引擎这里说的是从指令集的层面使用SSE4.2来进行单条指令执行多条数据,来进行并发,不懂
标准SQL支持CH不像NoSQL数据库,它拥有数据库、表、视图这些传统概念,
end -- 关于jdbc的conn、ps、rs、pool
关于 parperedstatement和statement的故事
ps可以传递参数
ps性能更为优化,具体原因:使用ps时sql会被预编译到数据库系统中(大概是一个什么缓存中把),但我们重复调用时效率更高,数据库压力更小;这个地方要注意的是,要想得到这种性能上的提升我们必须使用“?”占位符,而不能直接把字符串写入到sql语句中,比如
“select * from users where username=?”
“select * from users where username = “+username //username是我们程序里面定义的一个字符串
上面的第二种写法就不再具有性能提升的功能
ps可以防止sql注入,sql注入举例:
sql:“select * from users where username = ”+username+”and password = “+password
当恶意传入的参数为:username = “‘1’ or ‘1’ = ‘1’ “ password = “‘1’ or ‘1’ = ‘1’ “ 时,sql变成了 ...