单例和懒加载
站内链接:
mro 多重继承
Python 魔术发放
Python 日志库
python 作用域和命名空间
python 单例模式
python 模块导入
python 多线程
python 协程
介绍介绍单例模式是一种简单的设计模式, 用于确保某一个类在项目运行时仅仅存在一个实例对象, 并且自行实例化并向整个系统提供服务.
使用场景
提供一个全局的访问,且只要求一个实例,如应用的配置信息
创建一个对象比较耗费资源,如数据库连接管理、文件管理、日志管理等
资源共享,如线程池
工具类对象(也可以直接使用静态常量或者静态方法)
要求一个类只能产生两三个实例对象,比如某些场景下,会要求两个版本的网络库实例,如公司内网和外网的网络库实例
要求:
延时加载或者懒加载
线程安全
防止反射破坏
模式以及实现
饿汉模式: 在类初始化时, 执行静态代码以及初始化静态域来完成实例的创建, 例如 python 的模块导入, 由 JVM/Python 虚拟机来确保线程安全
懒汉模式: 在调用 getInstance()时才会去实例化类, 但是并非线程安全
懒汉模式-线程安全: 在实例化时, ...
数据库:NoSQL介绍和说明
站内链接:
容灾-mysql 主从配置
数据库-nosql 基础知识
NoSQL三大原则
ACID
现在让我们聊聊为什么关系型数据库在某些应用场景中性能大大落后于 NoSQL 数据库, 传统关系型数据库遵循事务处理的四个基本要求(ACID):
Atomicity(原子性): 原子性要求数据库事务中的操作是一个不可分割的原子单位,要么全部执行成功,要么全部回滚
Consistency(数据一致性): 数据库要处于一致状态, 事务的执行不会更改数据库的一致性原则, 例如两个账户转账, 则两个账户数据必须保持一致
Isolation(隔离性): 隔离性要求并发执行的多个事务之间互相隔离,每个事务都应该感知不到其他事务的存在。事务应该具有隔离性,以避免并发执行时出现脏读、不可重复读和幻读等问题,保证数据的准确性和一致性。
Durability(持久性): 一旦事务提交, 其修改就永久的保存在数据库上, 即使宕机数据也不会丢失
关系型数据库为了保证ACID特性, 确保各种复杂的多表关联查询, 在设计时必须遵循这些范式, 其中每一个表都是存储在一个格式化的数据结构中, 并且每一个元祖(每 ...
数据库:sql基本命令介绍
存储过程Intro自定义的数据库API,一系列sql语句的集合(这两个概念非常重要)
查看数据库中的所有存储过程/具体信息查看:
12show procedure status;show create procedure proc_name;
删除存储过程:
1drop procedure if exists proc_name;
调用存储过程:
1call proc_name();
存储过程中的变量:
1234declare a, b, c int default 5;(变量名,类型,默认值)set a = 'xxx'进行复制操作set a = (select id from user where username='zheng');select id into a from user where username='zheng';
Example注意,在begin…end之间可以执行多条命令,另外注意delimiter的格式
12345678delimiter //drop procedure if ex ...
自动化:docker常用命令
站内链接:
docker 基础知识和容器命令
docker 数据卷相关
docker 命令
docker 安装配置
docker 虚拟化介绍
本篇文章主要讲解除了仓库,镜像,容器之外的 docker 命令, 上述三者命令说明见 docker 基础知识文章介绍
logs格式批量获取当前正在执行的容器中的日志信息, 命令格式: docker logs [OPTIONS] CONTAINER, 其中命令 options:
1234567--details: 除了显示正常的日志信息之外, 还会添加环境变量, 标签等信息--follow/-f: 持续的获取容器的stdout/stderr输出--timestamps/-t:输出日志的时候显示每一行的时间戳信息, 该选项常常配合后面的since使用--tail/-n: 显示末尾的 N 行数据--since: 获取某一个时间戳之后的日志(例如: 2021-03-01), 或者相对时间(12h, 42m, 3s)--until: 获取给定时间之前的日志信息
实例1234567891011121314151617181 ...
man帮助页
man命令sectionsman页, 查看系统的各项数据的手册, man可以指定不同的section来浏览不同的手册, 例如man 1 ls. 对于大部分的命令, 查看man帮助文档不需要额外指定sections, 但是对于有歧义的关键字比如macOS上的open, 其本身有open命令帮助页和open函数帮助页, 此时就需要手动指定sections. section可选项字段含义如下:
1, commands 普通命令
2, system calls 系统调用,例如open,write函数
3, library calls 库函数,例如fprintf函数
4, special file 特殊文件,例如/dev下的各种设备文件
5, file formats and convertions 文件的格式,例如passwd就会指定该文件中各项含义
6, games ...
数据库:sqlplus命令
客户端连接安装和部署参考linux安装oracle创建一个临时的测试型的oracle(注意,这是一个个人镜像,并非完全安全),使用阿里云的按量收费,在需要的时候再开启即可。
创建volume: docker volume create oracle_vol
启动实例: docker run -d -it -p 1521:1521 --name oracle --restart=always --mount source=oracle_vol,target=/home/oracle/app/oracle/oradata registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g
进入实例执行一些基本配置:
1234567891011121314151617181920212223242526# a. 更改配置(root密码为:helowin)su - rootvi /etc/profileexport ORACLE_HOME=/home/oracle/app/oracle/product/11.2.0/dbhome_2export ORA ...
postman工具使用
Install在chrome中打开:
1234# 安装chrome扩展# 打开chrome应用(左上角)---> 选择postman ---> 保存快捷方式
安装Mac APP, app
UI窗口:
123456sidebar-左边侧边栏(快速的使用) Environment:运行环境 Collection:文件夹或者收藏夹 Iterations:运行收藏夹的次数 Data:加载CSV/JSON文件Request Editor-请求构建器(URL/Method/Headers/Body)
URL:
1234Method:选择HTTP方法Url:指定资源路径Params: query设置URL编码:全选URL,右键选择编码
Headers:
1234567受限Headers:Accept-charset、Cookie、Host、Referer等等 解决办法:使用拦截器(postman-interceptor,需要单独安装)来发送“受限Headers”header preset: 预设headers,以便于其他URL的快速设置 Head ...
python日志库介绍
站内链接:
mro 多重继承
Python 魔术发放
Python 日志库
python 作用域和命名空间
python 单例模式
python 模块导入
python 多线程
python 协程
logging 知识点处理流程python 日志库采用模块化的方式, 并提供如下几个组件共同完成日志的记录:
logger(记录器): 日志系统的实体, 提供应用程序进行日志打印的接口
handler(处理程序): 将有 logger 记录的日志记录发送到适当的地方
filter(过滤器): 在 logger 和 handler 之后, 提供更加精细化的附加功能(自定义), 确定输出的日志记录
formater(格式化): 指定了最终日志记录输出格式
一条日志记录会在 logger, handler, filter, formater 之间传递. 官网提供了日志事件信息流程:
从上述的图示可知, 整个日志事件信息流程如下:
记录器判断当前日志 LEVEL 是否合规, 如果合规创建日志记录, 否则结束
过滤器 filter 返回 True/False 来判断是否合规, 一 ...
Python装饰器
站内链接:
装饰器
编码和解码
字符串格式化
解析 json 串需求: 给出一个字串, 例如字符串
1str1 = {"name": "liu", "age": "3", "sex": 0, "educations": [{"school": "A", "location": "HANGZHOU"}]}
如何编写一个函数转换为 json 格式的输出? 得到类似json.dumps(str1, indent=2)的输出格式.
单例使用场景问题: 单例模式是什么? 单例模式的使用场景或者优势在哪里?使用场景:
提供一个全局的访问,且只要求一个实例,如应用的配置信息
创建一个对象比较耗费资源,如数据库连接管理、文件管理、日志管理等
资源共享,如线程池
工具类对象(也可以直接使用静态常量或者静态方法)
要求一个类只能产生两三个实例对象,比如某些场景下 ...
操作系统:专业术语说明
站内链接:
操作系统环境-shell 分类介绍
操作系统环境-操作系统术语
操作系统环境-远程登录模式
操作系统内核-同步编程到异步编程的技术演进
操作系统内核-术语
操作系统内核-会话
Arch
Arch 之道: Keep It Simple, Stupid
What it is?Arch Linux 是通用 x86-64 GNU/Linux 发行版, 初始为基本系统, 用户可以根据自身需求安装需要的包.Arch Linux 是一个简洁的系统, 避免任何不必要的添加, 修改和复杂增加, 仅进行最小修改.Arch linux 遵循如下原则: 简洁, 现代, 实用, 以用户(而非为用户服务, 参与贡献开源的用户)为中心为了确保系统的简洁性, 会有如下的规定, 其中上游–原始开发者, 下游–发行版:
不包含上游不接受的补丁,其他接受补丁会在下一个正式版给出
配置文件来自上游, 不会在软件包安装之后自动启动
软件包一般直接和上游项目对应
不支持图形化
What is the history of Arch?
参考: history
初期: 2001, Judd Vin ...