Docker-2021/12/10

Docker-2021/12/10

Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与基础架构分开,从而可以快速交付软件。借助 Docker,您可以与管理应用程序相同的方式来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,您可以大大减少编写代码和在生产环境中运行代码之间的延迟。 菜鸟教程--docker的优点 ...

2021-12-13 · 5 min · 2472 words · kutake

Note: 数据库原理与应用P113 sql表创建

CREATE TABLE Student( Sno Char(3) NOT NULL PRIMARY KEY, Sname CHAR(3) NOT NULL, Ssex CHAR(2) NOT NULL, Sbirthday datetime, Class CHAR(5) ) CREATE TABLE Teacher( Tno CHAR(3) PRIMARY KEY, Tname CHAR(4) NOT NULL, Tsex CHAR(2) NOT NULL, Tbirthday datetime, Prof CHAR(6), Depart VARCHAR(10) NOT NULL ) CREATE TABLE Course( Cno CHAR(5) NOT NULL PRIMARY KEY, Cname VARCHAR(10) NOT NULL, Tno CHAR(3) NOT NULL, FOREIGN KEY (Tno) REFERENCES Teacher(Tno) ) CREATE TABLE Score( Sno CHAR(3) NOT NULL, Cno CHAR(5) NOT NULL, Degree Decimal(4,1) FOREIGN KEY (Sno) REFERENCES Student(Sno), FOREIGN KEY (Cno) REFERENCES Course(Cno) )

2021-12-06 · 1 min · 93 words · kutake

哈夫曼编码的实现(python)

思路 C++实在是弄不懂 代码 from typing import List, Optional class Node: """ 结点 """ def __init__(self): self.name: Optional[str] = None self.weight: Optional[int] = None self.left_child: Optional[Node] = None self.right_child: Optional[Node] = None self.parent: Optional[Node] = None class NodeCode: """ 结点的编码 """ def __init__(self, name: str, code: str): self.name = name self.code = code def __str__(self): return f"{self.name}:{self.code}" class HaffumanTreeCode: """ 哈夫曼树的编码 """ def __init__(self): self.code_list: List[NodeCode] = [] def append(self, code: NodeCode): self.code_list.append(code) def code(self, massage: str): """ 针对编码表编码 :param massage: 需要编码的信息 :return: """ code = "" for i in massage: for n in self.code_list: if n.name == i: code += n.code break # raise ValueError(f"'{i}'不存在") return code def decode(self, code: str): """ 针对编码表解码 :param code:需要解码的哈夫曼码 :return: """ out = "" i = 0 while code: code_need_match = code[0:i+1] for n in self.code_list: if n.code == code_need_match: out += n.name code = code[i+1:] i = 0 break i += 1 return out def __str__(self): """ 打印 :return: """ out = "" for i in self.code_list: out += i.__str__() + "\n" return out.strip() class HaffumanTree: """ 哈夫曼树 """ def __init__(self): self.root = Node() self.nodes: List[Node] = [] self.nodes_raw: List[Node] = [] self.codes: HaffumanTreeCode = HaffumanTreeCode() def inser(self, newnode: Node): for i in range(len(self.nodes)): if self.nodes[i].weight < newnode.weight: self.nodes.insert(i, newnode) return self.nodes.append(newnode) def build_tree(self, name_list: List[str], weight_list: List[int]): """ 创建哈夫曼树 :param name_list: 字符列表 :param weight_list: 权重列表 :return: """ # 队每个字符生成结点 while len(name_list) > 0: max_weight = max(weight_list) max_index = weight_list.index(max_weight) max_name = name_list[max_index] newnode = Node() newnode.name = max_name newnode.weight = max_weight self.nodes.append(newnode) name_list.remove(max_name) weight_list.remove(max_weight) # 保存源结点 self.nodes_raw = self.nodes[:] # 创建新结点并生成树 while len(self.nodes) > 2: left = self.nodes.pop() right = self.nodes.pop() newnode = Node() newnode.weight = left.weight + right.weight newnode.left_child = left newnode.right_child = right left.parent = newnode right.parent = newnode # 根据权重插入 self.inser(newnode) left = self.nodes.pop() right = self.nodes.pop() self.root.weight = left.weight + right.weight self.root.left_child = left self.root.right_child = right left.parent = self.root right.parent = self.root def make_code(self): """ 生成编码表 :return: """ while len(self.nodes_raw): node = self.nodes_raw.pop() name = node.name code = "" while node.parent != self.root: parent = node.parent if parent.left_child == node: code = "0" + code elif parent.right_child == node: code = "1" + code node = parent if self.root.left_child == node: code = "0" + code elif self.root.right_child == node: code = "1" + code self.codes.append(NodeCode(name, code)) def decode(self, code: str): return self.codes.decode(code) def code(self, massage: str): return self.codes.code(massage) if __name__ == '__main__': h = HaffumanTree() name_list = ["a", "b", "c", "d", "e"] wight_list = [5, 11, 6, 21, 19] h.build_tree(name_list, wight_list) h.make_code() print(f"编码表:\n{h.codes}") print(f'bcacce编码为:{h.code("bcacce")}') print(f'01001000001001解码为: {h.decode("0100100000100110")}')

2021-11-21 · 2 min · 668 words · kutake

Real-ESRGAN腾讯的类WIAFU2X二次元图片放大算法

项目地址:xinntao/Real-ESRGAN: Real-ESRGAN aims at developing Practical Algorithms for General Image Restoration. (github.com) 中文介绍:Real-ESRGAN/README_CN.md at master · xinntao/Real-ESRGAN (github.com) 使用方法 先进行下载,后解压缩,解压后文件如图 在这个文件夹路径内输入cmd,回车 输入cmd后回车 就来到了命令终端: 之后把要放大的图片放在这个文件夹内,比如我这里是test.jpg ...

2021-11-17 · 1 min · 315 words · kutake

Nginx反向代理中涉及Websocket的问题

也许是我这种小白在反向代理中最常面临的问题 Nas上挂载过很多自用的站点,提供包括影音、docker管理、qB客户端之类的服务,在穿透到云端并使用Nginx进行反向代理时经常会遇到各种各样无法访问的问题: ...

2021-09-10 · 2 min · 769 words · kutake

Win下挂载Webdav卡顿问题的解决方法

远程文件访问需求 家里的Nas里面有音乐、电影、动漫啥的需要在外面进行访问,如果是单纯的视听,那么解决方法非常多,docker就可以部署很多成品的影音娱乐应用,再对端口进行穿透即可访问。但我这里有个需求,有些动漫需要用第三方客户端加载弹幕才看的输出,这个第三方客户端也没有对远程视频文件进行支持,所以还是选择了将文件挂载到本地环境的方法。 ...

2021-09-05 · 2 min · 790 words · kutake
Openwrt-从安装到插件设置记录

Openwrt-从安装到插件设置记录

Openwrt 按照我浅显的了解,这是一个开源的路由系统,本质就是个用在路由器上的linux,具体的作用非常多,上网管控、广告屏蔽、dns管理、KMS破解、网易云灰色歌曲解锁、内网穿肉、游戏加速、分流分拨等等等等非常多的功能就不一一介绍。 ...

2021-08-15 · 3 min · 1263 words · kutake

PyMySQL基础使用

安装 pip install PyMySQL 连接 db = pymysql.connect(host="192.168.1.1", port=3306, user="root", password="password", database="database_name") cursor = db.cursor() 查/增 sql_insert = """ INSERT INTO 表名(id, name, path) VALUES (%s, %s, %s) """ # 无论数据库数据类型为int或date,全部使用py的字符串形式插入,所以使用%s cursor.execute(sql_insert, (user_id, name, path)) # 这种可以有效避免因敏感字符而导致出现语法错误 db.commit() # 进行提交,否则无效 # 当数据源为http相关时,注意转义 import html from pymysql.converters import escape_string safe_data = escape_string(html.unescape(unsafe_data)) # unescape转义html字符,escape转义为可直接插入数据库的安全字符串 # 多数据一次插入 cursor.executemany(sql, info) # info可为list,循环按顺序进行插入 db.commit() 以及 因为图库已经快20g了,为了管理方便,顺便就上了mysql做数据管理,但有个问题,pymysql非异步,可能会造成bot的io堵塞,现在的数据量查询速度还算快,但要是时间久了就不一定; ...

2021-08-13 · 1 min · 419 words · kutake
Gogs-0.13Dev版本邮件服务设置失败方法

Gogs-0.13Dev版本邮件服务设置失败方法

起因 因为Gitlab各种设置实在是繁琐+奇怪,受不鸟还是转回gogs了,秒重启+秒开真的舒服,Gitlab的消耗我的小Nas实在是受不起。 ...

2021-07-24 · 1 min · 277 words · kutake
无语的折腾记录-Gitlab的STMP服务设置

无语的折腾记录-Gitlab的STMP服务设置

自建Git - Gogs/Gitlab 代码修修改改多了,就有了版本控制的需求,Github是最好的选择,但对于个人来说,代码里面有非常重要的隐私信息,又需要方便的进行分享,于是就转到了自建git服务器。 ...

2021-07-20 · 2 min · 896 words · kutake