- 博客(99)
- 资源 (1)
- 收藏
- 关注
转载 linux中 .zip .gz .tar 的差别及解压缩命令
一、Linux下最常用的压缩文件就是.tar了,使用tar程序打出来的包我们常称为tar包。 对于tar包,可以再用gz,zip等压缩算法再次压缩,比如:jdk-8u181-linux-x64.tar.gz二、解压缩命令 tar (可以保留原文件,可以压缩文件夹) -c: 建立压缩档案 -r:向压缩归档文件末尾追加文件 -x:解压 -z:是否需用用gzip压缩; -t:查看内容 -v:显示所有过程 -f: 使用档案名字,切记,这个参数是最后一
2021-12-17 09:57:18 1087
原创 shell编程基础: menu drvien script template(菜单脚本模板)
前言菜单类脚本,其实就是我们经常使用的交互脚本。在我们安装一个app的时候最常见,我们需要使用交互脚本进行一些配置。在工作中,写一个交互性脚本也同样重要,比如我现在需要写一个数据库授权的脚本。上下文是这样的:我们在开发中都是使用docker部署mysql,这样的话在一台物理机上就可以使用多个mysql了。但是有些小伙伴对于docker这一套并不熟悉,给他们写个指引有时候也搞不清。所以我决定写一个脚本给他们,通过执行脚本交互性脚本配置对外端口、数据挂载、用户创建、数据库创建等功能。后面我觉得脚本写的能
2021-05-25 17:23:58 435
原创 shell编程基础: $系列符号集的使用
目录前言一、$符号集用法详解1、$用于获取变量2、${} 用于告诉变量分界,避免歧义3、${#} 用于获取变量长度4、脚本参数获取:$0 $1 $2 $n $# $* $@5、$? 判断上一个命令是否执行成功。执行成功为值为0, 失败为非06、$()等同于双引号的作用7、$[ ] 表达式计算8、$- 显示shell所使用的当前选项9、$! 获取后台运行的最后一个进程的pid,多用于脚本10、!$ 将上一条命令的参数传递给下一条命令的参数,平时用于更方便,.
2021-05-25 09:19:53 1316 1
原创 网络基础:WSGI、CGI、Fastcgi、mode_python、mode_wsgi是什么?Python Web Frameworks / WSGI / CGI / FastCGI的工作流程?
前言这篇文章知识满满,如果大家看到这篇文章时,也正好是你想要了解的内容,请好好看。首先,先说点题外话。1、这篇文章纯属是我总结的一些stack overflow、python官方文档、其他英文资料形成的。我想说的是:有能力阅读英文的,直接去阅读英文资料。网上查阅中文的资料(比如CSDN)绝大多数就是浪费自己的时间。没有能力阅读英文的,逼着自己去读,除非你一点英文都不懂,时间长了自然就能阅读英文了。2、那么有人问,怎么找英文资料?有条件的直接google(需要proxy一下),没条件的上.
2021-04-28 16:59:05 675
原创 网络知识基础:gzip和chunk是怎样优化网页传输的?
目录前言一、文件传输的本质是什么?二、http传输文件三、http传输文件的方式 Content-length、chunk四、chunk实现的介绍前言最近在看http原理的书籍,对http传输有了更深的理解。结合网上搜索的知识,总结下http的流传输。一、文件传输的本质是什么?文件是什么?文件就是磁盘上的一段空间,文件的内容就是一串2进制数字(1或者0)。文件传输,就是把这串数字通过http协议传过去。服务器端,接到这段数据之后,按照协议规定的格式..
2021-04-11 20:36:35 815
原创 docker、k8s基础:mysql容器化部署,挂载data到宿主机
前言最近开发项目过程中,遇到一个问题。自己用docker起了一个mysql的容器,然后由于只是用来测试一下,就不会再用这个数据库了,所以就没有把mysql的数据目录挂载出来。其实也是因为我得mysql记录的数据对我没什么用,所以菜没有挂载数据。但是,意想不到的是,我用docker启的mysql所在的磁盘空间竟然被用满了。这是由于服务器是大家共享使用的,很多项目都在这台机器上布,还有一些同学没有删除无用镜像的习惯,所以很快1T的空间就用满了。要想扩容还要去找运维。然后我就看了看其他的磁盘,发现有块
2021-03-05 18:12:29 1044
原创 k8s/docker的真实容器化部署,模拟上线流程-详细
前言前面开发了几个项目,上线时都是固定一个同事负责的,当时看他花了挺久的时间,觉得肯定费事的。当时就在想,应该没有那么难把,为什么会这么久?然后这次上线,赶上同事不在,所以由我来准备上线的事情。我发现,流程不难,但也没有我想的那么简单。而最耽误时间的是上线资源的申请,如pvc、数据库等等,申请周期非常长。所以大家如果承担上线部署工作,一定要把流程和周期提前问清楚,要不然很容易错过上线窗口。一、部署流程说明废话不多说了,针对这次上线流程简要的做个说明。使用工具:docker、k8s
2021-02-27 22:41:55 1616 1
原创 python基础:如何从数据库加载代码并运行
前言最近在做一个微服务网关的项目。大概就是下面这张图,当然这是比较笼统的一张图,其实还有很多功能,但是今天它不是重点,所以就不多说它了。这个微服务网关项目其中的一些功能:(1)代理下游客户端发来的请求到微服务,并获取response后返给用户(2)记录下request、response、trace、exc_info等等的日志那么关于日志这里,大家可以参考一下。为了避免数据库压力过大,加了一层日志队列。从gateway产生的日志会先写入日志队列中,commiter模块定时从日志队列中取走日
2021-02-09 20:30:28 1282
原创 FastAPI基础:Depends怎么用?
目录前言一、Depends的是干什么的?二、Depends的两种用法1、Depends(function)形式2、Depends(class)形式三、拓展前言FastAPI真的是个非常好用的东西。首先它是异步,但是我想说的是Fast API对于保证数据交互传递过程中的一致性,保持的非常好。当然,能做到这一点也是因为它站在了巨人肩膀上,因为它的schema是依靠pydantic来做的。大家用Fast API的过程中会越来越发现,Fast API实现的东西并不..
2021-01-11 19:56:26 15409 1
原创 python基础:泛型Generic的坑-注意它只是提示符,而不能真正schema
目录前言一、证明Generic无法shema二、项目中遇到了什么问题,怎么解决的前言在写项目的时候,我实现了一个泛型容器,希望能够用来兼容多个实体的shema。但是这时候出问题了,我发现通过Generic容器传入的schema参数并没有什么用?这是为什么呢?原因就在于:泛型只是一个hint,可以帮助提示你应该输入什么类型的参数以及可以提示ID E此处应该传入什么参数,从而提醒你是否出错的参数。但是泛型(包括typing里的所有变量)并无法帮助你完成schema的功能。所以,.
2021-01-08 21:35:45 9038 4
原创 python基础: os.path.realpath()、os.path.getcwd()、 os.path.abspath() 的区别
目录前言一、realpath、getcwd、abspath各是干嘛的?二、常用应用场景前言在写代码过程中,经常会遇到 realpath、getcwd、abspath。但是对于他们的区别就傻傻分不清楚,对于他们应该在什么场景就更是不知道了。今天特别记录一下,今后有据可依。一、realpath、getcwd、abspath各是干嘛的?realpath 1、获取代码所在的脚本文件的绝对路径(用的多) 2、获取当前应用的真实路径,而非软连接路径(用得少) ab...
2020-12-28 15:47:50 4779 1
原创 《深入理解计算机系统》第三版重要知识点
目录前言第一章:计算机系统漫游前言最近在看《深入计算机系统》第三版,这本书是真的挺厚的。那我为什么要选读这本书来读呢?很简单,它的豆瓣评分9.7,并且是公认的经典著作,系统的讲解了贯穿计算机的整体的基础知识,包括了计算机操作系统,计算机硬件,计算机组成原理等等。而我对于计算机整体知识没有一个整体上的把握,不能够将所有知识串起来,我想这本书正是我需要的。那么我为什么又要写这篇博客呢?也很简单,发现自己的记忆力是真的不行。写这篇博客时,我刚读了本书2章内容(共12章,730页),前.
2020-12-24 16:15:24 437
原创 python基础:4种uuid详解
目录1、 uuid是什么?2、uuid的组成3、uuid的分类3.1 uuid13.2 uuid43.3uuid3、uuid51、 uuid是什么?UUID stands forUniversally Unique IDentifier. It's a 128-bit value used fora unique identificationin software development。UUID代表通用唯一标识符。它是一个128位的值,用于软件开发中的唯一标识。...
2020-12-21 15:19:52 4640
转载 数据分析基础:pandas中的Series和DataFrame的rank方法的理解
转自:https://www.cnblogs.com/yinyoupoet/p/13287392.html
2020-11-01 21:22:47 234
原创 python基础:Python判断文件是否存在的三种方法(os.path.exsist, os.path.isfile, try-catch)
博客原文:http://www.spiderpy.cn/blog/detail/28前言:通常在读写文件之前,需要判断文件或目录是否存在,不然某些处理方法可能会使程序出错。所以最好在做任何操作之前,先判断文件是否存在。这里将介绍三种判断文件或文件夹是否存在的方法,分别使用os模块、Try语句、pathlib模块。一、使用os模块os模块中的os.path.exists()方法用于检验文件是否存在判断文件是否存在import osos.path.exists(t...
2020-10-28 15:53:22 54854
原创 python基础:isinstance的使用
前言:这个知识点比较低级,只是在这里记录一下,以防自己忘记了。以前只知道isinstance(some_variable, some_type),后来在看flask源码时,发现了了另一种用法:>>> a = 50>>> b = "ok">>> string_type = (str, int) # 注意必须是tuple>>> isinstance(a, string_type)True>>
2020-10-28 10:55:48 324
原创 python基础-flask源码中使用的模块:sys.module的使用和场景
前言最近在做一件事情:把flask的源码通读一遍。虽然对flask的运行原理已经比较理解了。但是看了一些代码,发现有很多用法都很有借鉴意义。并且有很多基础模块自己还是不会用。所以决定细细的看一遍flask源码。一、sys.module的使用sys.module是一个全局的字典,在初始化python后就已经加载到内存了。比如我们使用的平时的模块,其实早就在module里面记录了。如下:import sysprint(sys.modules.get("random"))# 输出<
2020-10-20 13:58:50 627
原创 2、luigid的分布式配置-central scheduler的分布式配置
目录前言1、local scheduler 和 central scheduler的使用与区别2、central scheduler 详细使用与分布式配置前言 luigid是luigi任务的一个可视化界面,我们使用luigi执行的任务都会显示在这个可视化界面中。可以很好的帮助我们监控我们task的执行情况。通常我们在本地测试时,总是设置 local_scheduler=True,这其实表示我们设置的是本地调度器。但是在项目中其实使用最多是central planner。...
2020-10-19 19:27:42 463
原创 计算机基础:区分概念-程序与进程、进程与线程
前言最近在看《现代操作系统》这本书,感觉里面讲的一些概念非常通俗易懂,因此也会摘抄一些过来,有必要的情况下,我会加上自己的理解进程与程序的区别(摘抄)进程和程序之间的区别是很微妙的,但很重要。用一个比喻可以是我们更容易理解这一点。想象一位好厨艺的计算机科学家正在为他的女儿烘培生日蛋糕。他有做蛋糕的食谱,厨房里有所需的原料:面粉、鸡蛋、糖、香草汁等。在这个比喻中,做蛋糕的食谱就是程序(即用适当形式描述的算法),计算机科学家就是中央处理器(CPU),而做蛋糕的各种原料就是输入数据。进程.
2020-08-27 17:28:27 327
原创 python基础:logging模块的使用
前言在项目中我们用到logging模块的地方非常之多,一个好的日志格式可以为我们的后期排查bug的工作带来很多方便,所以logging能使用好是非常重要的。这篇文章中,主要讲一个比较好的logging日志的使用模式。在简单介绍logging的几个函数后,我会把这个模式的代码贴出来,供大家参考。这个模式也是我在项目中看到别人这样写,觉得不错,摘抄下来的。一、logging模块的用法logging模块的用法,一搜一大堆介绍,并且也比较简单,因此这里只是简单的说说。1、使用步骤配置日志信息
2020-08-24 18:42:36 435
原创 python基础:网络通信
前言本节只是对总体的python通信模块做一个总体的介绍,具体要查看哪个模块,请直接点击相应的文章链接。python用于网络通信的标准库主要有4个ipaddress socket select selectors他们的使用场景时什么呢?ipaddress 提供了一些类来验证、比较和处理 IPv4/IPv6网络地址,用的比较少socket比较底层,可以直接访问原生C套接字库,可以用于与任何网络服务通信,很常用。(多说一句,http、ws等等这些服务都可以用socket编程来模.
2020-08-06 19:11:35 281
原创 python基础:%r,%d,%s以及!r的使用
目录前言一、%r,%d,%s,%f的使用二、指定打印格式前言在我们打印日志时,经常会希望打印出格式化的日志,就会用到占位符。本文将介绍常用的:%r,%d,%s,f%以及!r的使用。一、%r,%d,%s,%f的使用%s其实就是 字符串的占位符 %d是整数的占位符(也可以传float参数,但是会被floor掉) %f是float的占位符 %r是原生字符串占位符%s其实就是 字符串的占位符>>> name = "weihua">>.
2020-08-03 16:14:55 4205 1
原创 python基础:inspect模块各函数的用法
目录前言一、inspect模块各函数的用法1、获取成员与判断2、获取源代码3、类与函数4、调用栈前言inspect函数主要用于以下四个方面 对是否是模块、框架、函数进行类型检查 获取源码 获取类或者函数的参数信息 解析堆栈由于我对解析堆栈还不是很熟悉,所以对其的介绍,今后再详细说明。一、inspect模块各函数的用法1、获取成员与判断1. inspect.getmembers(object[,predicate])第二个参数通常可以.
2020-08-02 22:14:58 24223
原创 python基础:all、any的用法,配合luigi源码中用到的场景
目录前言一、all和any的用法1、all的用法2、any的用法二、luigi源码中的活用all的实例前言最近在写项目中,用到了luigi,并且对luigi的scheduler要做一些改造。看luigi的源码时,发现了一个用到all的场景,感觉挺不过错的,特此记录下来。其实下面我摘自源码的一段代码更值得去学习,动态检测你输入的参数是否合法那么,本文还是先说all和any的用法。最后再上应用例子一、all和any的用法1、all的用法语法all(itera
2020-08-02 21:02:24 434
原创 python基础:isinstance的使用细节,以及常用类型判断所使用的包
numberstypingcollections前言isinstance相信大家都已经很熟悉了,对于他的用法和一些基本的操作,我们再做一个介绍。但是我今天最想和大家将的其实是isinstance(object, classinfo) 中的classinfo都有哪些类型,int、str、dict、bool、list等这些基本类型都是一些最基本的,本文将告诉大家一些常用的classinfo,以及isinstance它的内部到底是怎样一个判断机制。一、isinstance的基本使用1、
2020-07-28 19:09:44 4584 1
原创 python基础:queue模块的用法,重点介绍LifoQueue与queue_prioriry
目录前言一、LifoQueue二、PriorityQueue(优先队列)前言python内置的queue模块再作为消息队列使用时,是一个非常好用的模块。它好用最主要的原因就是:他是线程安全的,所以支持多线程消费。那么,它为什么是线程安全的呢?这篇文章中我只能跟你说,因为queue是基于锁机制实现的。具体的实现原理,请看我另外一篇文章:《python基础:queue实现的底层原理》针对queue中的put、get、put_nowait、get_nowait这种方法,本文就不详细介.
2020-07-28 10:24:48 3213
原创 1、luigid的启动与简单使用
前言我们在使用luigi简单调试时,在启动luigi任务时,经常加上参数 local_scheduler=True,如下。luigi.build([Join()], local_scheduler=True, detailed_summary=False)但是,这只是为了调试时,聚焦于代码自身的正确性,才会用它。而luigi内置了一个调度器叫做Central Scheduler。我们在生产中也是用这个Central Scheduler来控制、监控我们的task。为什么用这个Central
2020-07-27 17:31:38 1554
原创 windows配置PYTHONPATH环境变量的方法
一、为什么要配置PYTHONPATHpython的程序架构是基于多文件系统的,一个python程序包含一个顶层文件和多个模块文件。除了标准库模块和安装的第三方库模块外,有时需要导入自己编写的模块文件。标准库模块和第三方库模块文件的导入,不需要特殊的设置,系统会从默认的模块搜索路径中找到模块文件。但当导入自己编写的模块时,且模块文件和顶层文件不在同一个路径下时,如何让计算机找到模块文件的位置呢?这时需要将模块文件的路径加入到python的模块搜索路径中去。最简单的方法就是使用PYTHONPAT
2020-07-27 17:18:33 16543
原创 python的__name__、__class__、__dict__、__module__、__qualname__,以及dir的含义与使用场景
目录前言实战1、__dict__2、__class__3、__name__4、__module__5、__qualname__前言在一些底层代码中,我们经常可以看到__name__/__class__等用法的存在,其实我们能从字面上的意思大概猜到各自的作用,但是具体不知到他们指向的是哪个对象。今天就统一记录一下。这些模块的功能我并没有去百度,我是直接去拿着python IDE去测试的,其实对于这种很简单的功能的测试,建议大家不要第一想法就是搜索引擎查找用法..
2020-07-23 09:55:10 3703 1
原创 sqlalchemy-自定义数据类型
前言sqlalchemy包含了mysql支持的所有的数据类型,我们平时的使用基本上都能够满足了。但是,有一种情况比较特殊,就是mysql不能存储json数据,自然,sqlalchemy也没有对应json的数据类型。这次在项目中,我需要在mysql中存储一个结构化的数据:JSON数据。那么,能实现吗?实现原理是可以实现的,因为sqlalchemy提供了一个类:TypeDecorator。这个类可以定义某个现存的数据类型的行为,文档原话:Allows the creation of.
2020-07-14 09:25:25 1327 1
原创 python项目中config的设计模式
前言最近在写项目时,认真阅读了底层代码的框架结构,有很多好的设计思想,所以记录下来,希望今后能够为自己所用。这个专题不记录大的架构设计思想,而是专门调一些小的模块设计,以及python中比较好用的、可以用于架构设计的标准库来记录。所以这个专题的记录也就较琐碎。当然我会整理一个目录,方便以后查阅。1、如何合理的配置config包项目开发中我们会区分dev环境与production环境,在配置文件中我们一般会配置两种环境的参数。通过传参的方式觉得此次启动服务使用的哪个环境。当然dev环.
2020-07-13 16:41:47 1756
原创 16、mysql底层知识进阶-mysql主从复制配置方法
目录3. Mysql复制3.1 复制概述3.2 复制原理3.3 复制优势3.4 搭建步骤3.4.1 master配置3.4.2 slave配置3.4.3 验证同步操作3. Mysql复制3.1 复制概述复制是指将主数据库的DDL 和 DML 操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。MySQL支持一台主库同时向多台从库进行复制, 从库同时也可以作为其他从服务器的主库,实现链状复制。.
2020-07-11 09:51:57 374
原创 15、mysql底层知识进阶-Mysql 日志:错误日志、binlog、查询日志、慢查询日志
目录2. Mysql 日志2.1 错误日志2.2 二进制日志2.2.1概述2.2.2 日志格式2.2.3 日志读取2.2.4 日志删除2.3 查询日志2.4 慢查询日志2.4.1 文件位置和格式2.4.2 日志的读取2. Mysql 日志在任何一种数据库中,都会有各种各样的日志,记录着数据库工作的方方面面,以帮助数据库管理员追踪数据库曾经发生过的各种事件。MySQL 也不例外,在 MySQL 中,有 4 种不同的日志,分别是错误日志、二进制日志(BINLO
2020-07-11 09:51:34 279
原创 14、mysql底层知识进阶-MySql中常用工具:mysqladmin、mysqlbinlog、mysqldump、mysqlimport、mysqlshow
目录1. MySql中常用工具1.1 mysql1.1.1 连接选项1.1.2 执行选项1.2 mysqladmin1.3 mysqlbinlog1.4 mysqldump1.5 mysqlimport/source1.6 mysqlshow1. MySql中常用工具1.1 mysql该mysql不是指mysql服务,而是指mysql的客户端工具。语法 :mysql [options] [database]mysql [options] [data
2020-07-10 17:17:54 454
原创 13、mysql底层知识进阶-mysql常用技巧:sql正则、常用函数
6. 常用SQL技巧6.1 SQL执行顺序编写顺序SELECT DISTINCT <select list>FROM <left_table> <join_type>JOIN <right_table> ON <join_condition>WHERE <where_condition>GROUP BY <group_by_list>HAVING <having_condition&
2020-07-10 17:04:25 144
原创 12、mysql底层知识进阶-Mysql锁问题
目录5. Mysql锁问题5.1 锁概述5.2 锁分类5.3 Mysql 锁5.2 MyISAM 表锁5.2.1 如何加表锁5.2.2 读锁案例5.2.3 写锁案例5.2.4 结论5.2.5 查看锁的争用情况5.3 InnoDB 行锁5.3.1 行锁介绍5.3.2 背景知识5.3.3 InnoDB 的行锁模式5.3.4 案例准备工作5.3.5 行锁基本演示5.3.6 无索引行锁升级为表锁5.3.7 间隙锁危害5.3.8 Inn...
2020-07-10 16:28:24 181
原创 11、mysql底层知识进阶-Mysql内存管理及优化
3. Mysql内存管理及优化3.1 内存优化原则1) 将尽量多的内存分配给MySQL做缓存,但要给操作系统和其他程序预留足够内存。2) MyISAM 存储引擎的数据文件读取依赖于操作系统自身的IO缓存,因此,如果有MyISAM表,就要预留更多的内存给操作系统做IO缓存。3) 排序区、连接区等缓存是分配给每个数据库会话(session)专用的,其默认值的设置要根据最大连接数合理分配,如果设置太大,不但浪费资源,而且在并发连接较高时会导致物理内存耗尽。3.2 MyISAM 内存优化.
2020-07-10 15:55:57 112
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人