Web开发
未读介绍本博客用于记录一些技术学习笔记,便于我日后自己查询。这篇文章记录一下创建此博客时的过程以及配置时的产生的问题以及一些解决方法。内容主要包括:
域名准备:购买域名并托管到Cloudflare
Hexo博客搭建: 搭建环境并且部署
配置Hexo主题
搭建的全部过程中可能遇到的问题
域名准备具体视频演示参考域名托管参考视频。
1. 网站注册这里选择Namesilo网站做演示,注册结束之后直接搜索想要的域名加入购物车后使用默认地址后可使用支付宝购买。
2. 托管到Cloudflare首先注册Cloudflare账号,注册完成后选择添加站点,在如下界面中将购买好的域名输入进行扫描。随后默认点击直到更改名称服务器,界面如下:回到Namesilo,点击Domain Manager, 点击购买好的域名,默认在Quick settings界面,将默认的三条NameServer删除,更改为Cloudflare分配的两个后保存。随后回到cloudflare,点击立即检查名称服务器,随后点击继续,随后默认点击,等到界面中的域名有绿色勾表示可以正常使用。
Hexo博客搭建具体文章和视频演示参考Hexo搭 ...
HDFSHDFS配置HiveHive配置连接DataGrip12345start-dfs.shstart-yarn.shcd /export/servers/hivenohup bin/hive --service metastore >> logs/metastore.log 2>&1 &nohup bin/hive --service hiveserver2 >> logs/hiveserver2.log 2>&1 &
启动完毕后,在DataGrip中连接Hive,端口默认为10000。
可以用jps命令查看Hive的进程。结果如下:
常用语句不同于MySQL,Hive的语法和MySQL的语法略微不同。
12345678910-- 创建表-- Hive 不支持 AUTO_INCREMENT。-- 必须指定数据的存储格式(如 TEXTFILE、PARQUET、ORC 等)和字段分隔符。CREATE TABLE table_name ( column1 STRING, column2 INT)ROW FOR ...
基础语法DDL(Data Definition Language)DDL: 数据定义语言,用来定义数据库对象(数据库、表、字段)
12345678910111213141516-- 数据库操作-- 查询所有数据库show databases;-- 查询当前使用的数据库select database();-- 创建数据库create database if not exists 数据库名 default charset utf8mb4;-- 删除数据库drop database if exists 数据库名;-- 使用数据库use 数据库名;
1234567891011121314151617181920212223242526272829303132333435363738-- 表操作-- 查询所有表show tables;-- 查询表结构desc 表名;-- 查询指定表的创建语句show create table 表名;-- 创建表CREATE TABLE 表名 ( 字段名1 字段类型1, 字段名2 字段类型2, ...);-- 删除表drop table if e ...
介绍记录Linux(Ubuntu)当中常用命令。
命令汇总1234ls #查看当前目录,可以加路径ls -a #展示隐藏文件ls -l #列表形式,更多细节ls -lh #显示文件大小单位
1234cd #切换到指定目录cd .. #上一级cd ~ #切到当前用户的home目录pwd #查看当前目录
1mkdir -p 路径 #创建文件夹,-p表示自动创建不存在的父目录
123touch 路径 #创建文件cat 路径 #查看文件more 路径 #可以翻页查看文件
123cp -r 路径1 路径2 #复制文件或者文件夹,复制文件夹时加入-rmv 路径1 路径2 #移动文件或者文件夹,若目标不存在则进行改名rm -r -f 路径1 路径2 ... # 删除文件或者文件夹,-r表示删除文件夹,-f表示强制删除,参数可以用*模糊匹配
12find 起始路径 -size +10k #从起始路径找大于10KB的文件find 起始路径 -name "文件名" #找匹配文件名的文件
123grep -n 关键字 路径 #从文件中用关键字过滤,-n ...
介绍本文介绍Vless以及XTLS的原理,XTLS被探测原因以及Vless+ws+tls+web+cdn通过X-UI进行搭建。
Vless和xtls相对Vmess,无需额外加密以及校对时间。在进行传输时,Vmess在对数据包加上头部的同时会对后续进行加密,但是Vless只添加了头部而不进行加密。因此数据包经过Vless时的组成为:
Vless头部
google.com
搜索内容(首先和google通过代理进行了tls连接,内容通过tls进行了加密)
由于直接发送会暴露访问的网址(google),除了通过tls进行全部加密之外,也可以用xtls进行加密,他只会对搜索内容之前的小部分内容进行加密,因此效率更高,随后数据包加上VPS的域名进行传输。
不过xtls加密方式为tls1.3,而搜索内容一般时用tls1.2进行加密,这个则是其可以被精准探测的原因。
当数据包传到服务器时,首先确定Vless协议和id正确后,即可帮我们去访问google。
若我们发送的是trojan数据包,服务器端会将数据包回落到trojan客户端的监听的端口上。
Vless+xtls+回落搭建(trojan)安装 ...
介绍前面介绍了利用Trojan进行搭建,本文采用Vmess实现搭建。
vmess原理本地v2rayN客户端配置vmess服务器,需要确定:
服务器ip地址
端口
用户id(直接生成)
额外id(默认为0):在原id基础上,多生成id的数量,0表示启用AEAD
加密方式
传输协议
在服务器端的v2ray上需要确定:
监听ip
端口
用户id(与本地相同)
额外id
传输协议
当本地在google上进行搜索的时候,通过系统代理将请求发送到v2rayN客户端,它会自动确定一种加密方式(aes)将搜索请求进行加密,并将加密方式(aes)和密钥加在头部。
随后,vmess会用用户id对加密方式和密钥进行加密,并在头部插入其他数据(为当前时间戳正负30秒范围内的随机值+用户id组成的hash字符串),最后在头部加上目标的ip地址后进行传输。
服务器端的vmess收到数据后,通过不同时间戳生成许多hash字符串验证头部的hash字符串是否合法,合法后,利用用户id进行解密,得到加密方式和密钥。
最后用加密方式和密钥进行解密得到请求。
但是它存在被精确探测的漏洞,一段时间内头部是可以一样的,通 ...
介绍前面介绍了利用SS+plugin进行搭建,本文采用Trojan实现搭建。
原理https原理HTTPS(HyperText Transfer Protocol Secure)是HTTP(超文本传输协议)的安全版本,用于在客户端(如浏览器)与服务器之间加密通信,以确保数据传输的安全性。它通过SSL(Secure Sockets Layer)或TLS(Transport Layer Security)协议实现加密,防止数据在传输过程中被窃听、篡改或伪造。
要想实现https,首先在服务器端,需要利用自身的域名来向CA机构申请证书,其中包含用于非对称加密的公钥,并且服务器会生成唯一的私钥。
当本地客户端需要对服务器进行https访问时,服务器会提供一个SSL/TLS证书,这个证书包含服务器的公钥和由可信的证书颁发机构(CA)签名的服务器身份信息。
客户端确保证书之后(属于受信任的根证书颁发机构验证证书),会生成对称加密密钥,并且利用公钥进行加密发送给服务器,随后服务器利用私钥进行解密得到对称加密密钥后,双方就可以使用这个只有双方知道的对称加密密钥进行数据的加密传输(即使数据被截 ...
介绍本片文章内容主要记录本人对节点搭建合集的学习记录,本章主要记录网络通信的一些基础知识。
网络通信的基本过程下图为本小节的网络结构的例子。
DNS解析首先对一台电脑打开浏览器后输入baidu.com进行搜索这一动作进行分析。
对于域名baidu.com,首先需要得到这个域名对应的ip地址,这个地址首先通过检查浏览器缓存寻找
若没有浏览器记录则检查本地缓存即检查本地hosts文件是否有映射关系
若还未找到,则会去请求电脑所配置的DNS服务器。其中DNS解析示意图如下所示。
DNS请求发送过程DNS为应用层的协议,其主要用于获取域名所绑定的ip地址。本地向DNS服务器具体发送请求的方式如下图所示。
首先在应用层生成请求
在传输层封装源端口和目标端口
接着传到网络层加上本机的ip和DNS服务器ip,当电脑找不到目标的ip地址之后,继续将数据包发送到网关(家中一般是路由器)
在同一个局域网同通信,一般是采用MAC地址进行通信,因此在数据链路层会继续添加源MAC地址(通过ARP协议获取到网关地址)和本机MAC地址
随后将封装好的数据包从物理层即通过网卡从网线发出去达到交换机的位置
交换机 ...
介绍哈希表是一种常见且高效的数据结构,通常用于快速判断元素是否出现过、统计元素频率等操作。本文目前记录了使用python中数据结构的一些解题方法和区别,包括以下内容:
Python 中常用的哈希表实现方式。
各种哈希表结构在不同问题中的应用与选择。
哈希表python中实现哈希表的方法一般有如下几种:
dict()
set()
collections.defaultdict
dict()dict() 是 Python 中最常用的哈希表实现,基于哈希函数将键映射到一个数组中,以常数时间复杂度 O(1)完成查找、插入和删除操作。典型的使用场景包括统计字符频率、记录元素的索引位置等。但是其在使用的过程中,访问一个不存在的键会抛出 KeyError 异常,因此在访问之前通常需要检查键是否存在。
12345my_dict = {}if 'key' in my_dict: value = my_dict['key']else: value = 'default_value'
set()set()是一 ...