/images/avatar.jpeg

七夕收到的礼物

回眸相识,似轻舟之聚于江洋,飞鸟之遇于穹苍。

若非缘起一方,则无来日悠长。

至于相知,则并肩携手,逍遥同游。

惠风和畅,尤见山水青秀,

烈日灼心,愈闻草木清幽。

我如何爱你

我如何爱你?我细数心迹。

我爱你直至灵魂边际,如同寻求梦幻的恩典,存在的意义。

我爱你直至日常所需,无可代替,如同暖阳星光,照亮天地。

我爱你以自由,如同为正义战斗。

域名解析知识

主机记录

域名前缀

记录类型

类型说明
A将域名指向一个IPV4地址
CNAME将域名指向另一个域名
AAAA将域名指向一个IPV6地址
NS将子域名指定其他DNS服务器解析
MX将域名指向邮件服务器地址
SRV记录提供特定的服务的服务器
TXT文本长度限制512,通常做SPF记录(反垃圾邮件)
CAACA证书办法机构授权校验

解析线路(isp)

记录值

  • 服务器IP

TTL

  • Time To Live,缓存的生存时间。指地方dns缓存您域名记录信息的时间。
  • 600(10分钟):建议正常情况下使用 600。
  • 60(1分钟):如果您经常修改IP,修改记录一分钟即可生效。长期使用 60,解析速度会略受影响。
  • 3600(1小时):如果您IP极少变动(一年几次),建议选择 3600,解析速度快。如果要修改IP,提前一天改为 60,即可快速生效。

算法标签

  • 数据结构

    • 数组 Array
    • 栈 Stack
    • 队列 Queue
    • 优先队列(Priority Queue, heap)
    • 链表 LinkedList(single/double)
    • Tree/ Binary Tree
    • Binary Search Tree
    • HashTable
    • Disjoint Set
    • Trie
    • BloomFliter
    • LRU Cache
  • 算法分类

    • 线性结构

      • 莫队 (Mo’s Algorithm)
      • 前缀和
      • 基本数组
      • 向量
      • 链接表(linked list)
      • 栈(stack)
      • 队列
      • 块状链表,块状数组,分块
      • st表, 稀疏表
      • 差分
    • 树形结构

如果没有你

如果没有你, 我的灵魂漫无目的。

如果没有你, 我的情感无处传递。

我将是,

一张僵硬枯槁的脸庞,

一颗停止跳动的心脏,

一丝丧失了温度的微弱火光。

若你是我眼中泪滴, 未免受分离,我将永不哭泣。

Git常用命令

create a new repository on the command line

git init
git add README.md
git commit -m "first commit"
git remote add origin [email protected]:user/project_name.git
git push -u origin master

push an existing repository from the command line

git remote add origin [email protected]:user/project_name.git
git push -u origin master

tag

# 查看
git tag
# 在某个 commit 打 tag
git tag tag_name commit_id
# 本地 tag 推到线上
git push origin tag_name
# 删除本地 tag
git tag -d tag_name
# 删除本地,然后删除线上tag
git push origin :refs/tags/tag_name
# 添加tag 并推送到远程
git tag tag_name -m "tag_msg"
git push origin tag_name

commit

# 统计提交次数
git log | grep "^Author: Spaceack"|wc -l
# 统计合并次数
git log | grep "^Merge" | wc -l
# 修改当前分支最新的一次提交。commit的 hash 不变. 避免有多个commit的情况。
git commit --amend

revert

git revert -n commit-id

Python3编码转换

没有什么编码是不能转的

import hashlib
import base64
# string to md5
input_text = "我能吞下玻璃而不伤身体"
md5_string = hashlib.md5(input_text.encode(encoding='utf8')).hexdigest()
# 2e536f0d3a95e676e30afb2b511c6fe2

# string to base64
base64_string = base64.b64encode(input_text.encode('utf-8')).decode('utf-8')
# 5oiR6IO95ZCe5LiL546755KD6ICM5LiN5Lyk6Lqr5L2T 

# base64 to string
output_text = base64.b64decode(base64_string).decode(encoding='utf8')
# 我能吞下玻璃而不伤身体

# URL Decode quote/unquote
import urllib.parse
result = urllib.parse.unquote("%E6%88%91%E8%83%BD%E5%90%9E%E4%B8%8B%E7%8E%BB%E7%92%83%E8%80%8C%E4%B8%8D%E4%BC%A4%E8%BA%AB%E4%BD%93")
#  我能吞下玻璃而不伤身体
result = urllib.parse.quote(input_text)
#%E6%88%91%E8%83%BD%E5%90%9E%E4%B8%8B%E7%8E%BB%E7%92%83%E8%80%8C%E4%B8%8D%E4%BC%A4%E8%BA%AB%E4%BD%93

# string to hex
bytes_string = input_text.encode()
bytes_string = b'\xe6\x88\x91\xe8\x83\xbd\xe5\x90\x9e\xe4\xb8\x8b\xe7\x8e\xbb\xe7\x92\x83\xe8\x80\x8c\xe4\xb8\x8d\xe4\xbc\xa4\xe8\xba\xab\xe4\xbd\x93'
hex_str = bytes_string.hex()
# e68891e883bde5909ee4b88be78ebbe79283e8808ce4b88de4bca4e8baabe4bd93

# hex to string
text = bytes.fromhex(hex_str).decode()
# 我能吞下玻璃而不伤身体

ipv4字符串与数字转换

import socket
import struct
ip = '127.0.0.1'
int_ip = struct.unpack('!I', socket.inet_aton(ip))[0]
print(int_ip)
str_ip = socket.inet_ntoa(struct.pack('!I', int_ip))
print(str_ip)

Python urllib3

发送POST请求,内容为json格式。并忽略证书验证。

import json
import urllib3
urllib3.disable_warnings() # 屏蔽警告忽略证书的警告。
# cert_reqs='CERT_NONE' 忽略https证书验证
http = urllib3.PoolManager(cert_reqs='CERT_NONE')
encode_data = json.dumps({"name":"spaceack"}).encode("utf-8")
url = "https://127.0.0.1:5000/api/v1/hello"
req = http.request('POST',
                    url=url, 
                    body=encode_data,
                    headers={'Content-Type': 'application/json'},
                    timeout=10,
                    )
result = req.data.decode('utf-8') # 获取响应的数据。