自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Onecat_j的博客

记录才能提高

  • 博客(65)
  • 收藏
  • 关注

原创 Shell-打印文件空行行号

写一个 bash脚本以输出一个文本文件 nowcoder.txt中空行的行号,可能连续,从1开始。awk '/^\s*$/{print NR}' nowcoder.txt

2021-10-06 10:54:03 848

原创 Shell-输出文件第5行的内容

写一个 bash脚本以输出一个文本文件 nowcoder.txt 中第5行的内容。方法1:head -5 ./nowcoder.txt | tail -1方法2:sed -n "5p" nowcoder.txtsed命令详解https://www.nowcoder.com/practice/1d5978c6136d4252904757b4fa0c9296?tpId=195&tags=&title=&difficulty=0&judgeStatus=0&

2021-10-06 10:49:14 696

原创 Shell-输出7的倍数

写一个 bash脚本以输出数字 0 到 500 中 7 的倍数(0 7 14 21…)的命令:for num in {0..500..7}; do echo "${num}"done

2021-10-06 10:40:34 1156

原创 Python-字典合并

方法1:使用update方法,第二个参数合并第一个参数def merge(dict1, dict2): return (dict2.update(dict1))# 两个字典dict1 = {'a': 10, 'b': 8} dict2 = {'d': 6, 'c': 4} # 返回None print(Merge(dict1, dict2)) # dict2合并了dict1print(dict2)# 结果None{'d': 6, 'c': 4, 'a': 10, '..

2021-10-05 19:50:30 195

原创 MySQL-事务

事务的作用MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你既需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务!在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务;事务处理可以用来维护数据库的完整性,保证成批的 SQL 语句要么全部执行,要么全部不执行;事务用来管理 insert,update,delete 语句。事物的特性一般来说,事务是必须满足4个条件(A

2021-09-27 10:20:02 146 1

原创 MySQL-索引

索引的类型聚簇索引使⽤记录的主键值的大小进行记录和数据⻚的排序(页内、页间),叶⼦节点存储的是完整的⽤户记录。聚簇索引就是数据的存储方式。二级索引使⽤记录的非主键列值(指定列)的⼤⼩进⾏记录和⻚的排序(页内、页间),叶⼦节点存储的是列和对应主键值。联合索引本质上还是二级索引,但是有多个列共同排序决定大小。创建索引分为建表时创建和建表后创建,建表时创建直接在建表语句后声明索引,建表后创建用ALTER语句添加索引。主键索引ALTER TABLE table_name ADD PRIMAR

2021-09-27 09:52:35 312

转载 MySQL-HAVING语句

语法SELECT column1, column2, ... column_n, aggregate_function (expression)FROM tablesWHERE predicatesGROUP BY column1, column2, ... column_nHAVING condition1 ... condition_n;用法where、聚合函数、having 在from后面的执行顺序:where > 聚合函数(sum,min,max,avg,count) &g

2021-09-27 09:30:20 563

转载 Python-读写json文件

python的字典可以实现与json格式的互相转化,主要是json.dump和json.load。字典写入json文件我们将python创建一个字典类型的数据data,打包为json字符串格式;接下来,我们将打包好的json_str写入文件。data = { 'name':'ACM', 'day':'2018-11', 'place':'beijing'}json_str = json.dumps(data)print(json_str)print(type(j

2021-09-26 19:39:55 172

原创 MySQL-窗口函数&聚合函数

从salaries表中查询emp_no,salary,并根据emp_no字段升序累加salary作为running_total字段。最后的结果如下图所示:MySQL语句如下:SELECT emp_no,salary,SUM(salary) OVER(ORDER BY emp_no ASC) AS running_totalFROM salariesWHERE to_date = '9999-01-01';窗口函数窗口函数也称OLAP函数(online analytical processin

2021-09-26 09:53:50 634

原创 MySQL-case语句

btype=1,奖金是薪水的0.1倍;btype=2,奖金是薪水的0.2倍;其他情况奖金是薪水的0.3倍。(case btype when 1 then c.salary*0.1 when 2 then c.salary*0.2 else salary*0.3 end) bonus

2021-09-26 09:42:26 109

原创 MySQL-内连接、外连接和全连接

连接过程连接过程首先要确定第一个表,称为驱动表。驱动表上查询的每一条记录分别需要到被驱动表上查找符合过滤条件的记录。因此驱动表只需要访问一次,被驱动表可能需要访问多次。内连接对于内连接的两个表,驱动表中的记录在被驱动表中找不到匹配的记录,那么驱动表中的该记录不会加入到最后的结果集中。select <select list>from tableA Ainner join tableB Bon A.key=B.key;外连接对于外连接的两个表,驱动表中的记录即使在被驱动表中没有

2021-09-25 10:16:43 1631

转载 MySQL-limit

在使用数据库过程中,常会遇到查询或者导出某个数据表或者查询集的前几条或者后几条记录,LIMIT可以很好的满足需求。LIMIT基本语法:SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset;如果只给定一个参数,表示记录数。mysql> SELECT * FROM orange LIMIT 5; //检索前5条记录(1-5)相当于mysql> SELECT * from orange LIMIT 0,5;

2021-09-24 09:20:41 85

原创 MySQL-group_concat()

创建表格:CREATE TABLE `dept_emp` (`emp_no` int(11) NOT NULL,`dept_no` char(4) NOT NULL,`from_date` date NOT NULL,`to_date` date NOT NULL,PRIMARY KEY (`emp_no`,`dept_no`));插入数据:INSERT INTO dept_emp VALUES(10001,'d001','1986-06-26','9999-01-01');INSERT

2021-09-24 09:18:05 79

原创 MySQL-修改表(ALTER)

常见的修改有:ALTER TABLE 表名 ADD 列名/索引/主键/外键等;ALTER TABLE 表名 DROP 列名/索引/主键/外键等;ALTER TABLE 表名 ALTER 仅用来改变某列的默认值;ALTER TABLE 表名 RENAME 列名/索引名 TO 新的列名/新索引名;ALTER TABLE 表名 RENAME TO/AS 新表名;ALTER TABLE 表名 MODIFY 列的定义但不改变列名;ALTER TABLE 表名 CHANGE 列名和定义都可以改变。官

2021-09-18 09:20:21 277

转载 MySQL-插入数据(insert into,replace into)

插入数据的方法mysql中常用的三种插入数据的语句:insert into:正常的插入数据,插入数据的时候会检查主键或者唯一索引,如果出现重复就会报错;replace into:表示插入并替换数据,若表中有primary key或者unique索引,在插入数据的时候,若遇到重复的数据,则用新数据替换,如果没有数据效果则和insert into一样;insert ignore into:插入并忽略数据,如果中已经存在相同的记录,则忽略当前新数据(有则忽略,无则添加)。语法介绍insert i

2021-09-17 09:26:16 1154

原创 Python-正则表达式

元字符符号含义.匹配除换行符外的任意字符^匹配字符串的开始$匹配字符串的结束\d匹配数字\b匹配单词的开始或者结束,单词的分界通常是空格、标点符号或者换行\w匹配字母、数字、下划线或汉字\W匹配除字母、数字、下划线或汉字以外的字母\s匹配单个空白符\S匹配除单个空白符以外的所有字符限定符符号含义?匹配前面的字符0次或1次*匹配前面的字符0次或多次+匹配前面的字符1次或多次

2021-09-16 13:59:25 90

转载 MySQL-创建触发器(trigger)

创建触发器在MySQL中,创建触发器语法如下:CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt其中:trigger_name:标识触发器名称,用户自行指定;trigger_time:标识触发时机,取值为 BEFORE 或 AFTER;trigger_event:标识触发事件,取值为 INSERT、UPDATE 或 DELETE;tbl_name:标识建

2021-09-16 10:16:17 6071

转载 Python-内存管理与GC

内存管理引用计数Python解释器中,主要通过引用计数(Reference Counting)进行垃圾回收。typedef struct_object { int ob_refcnt; struct_typeobject *ob_type;} PyObject;在Python中每一个对象的核心就是一个结构体PyObject,它的内部有一个引用计数器(ob_refcnt)。程序在运行的过程中会实时的更新ob_refcnt的值,来反映引用当前对象的名称数量。当某对象的引用计数值为0,那么它的内存

2021-09-15 14:18:00 394

原创 Python-拷贝

原理:不可变对象是值传递;可变对象是引用传递。浅拷贝所属模块:copy.copy()。import copy # 导包list1 = ['w', 20, 10, ['d', 21, 11]] # 列表中包括可变对象和不可变对象list2 = list1.copy() # 浅拷贝list3 = copy.copy(list1) # 浅拷贝,和上面的浅拷贝一样print(id(list1),id(list3)) # 两者内存地址不一样print(id(list1[0]), id(list

2021-09-15 10:30:51 95

转载 MySQL-强制索引

使用 sql 语句查询数据的时候,如果表里有好几个索引,mysql 优化器会自己判断使用哪个索引进行搜索。但是,where 条件比较复杂的时候,优化器使用的索引就不一定是最优索引了。例如,最近有个需求,查询 4 月份每个商家的微信、支付宝订单额,sql 语句如下:SELECT o.client_id, c.client_name, SUM(IF(o.pay_by IN(4, 5), o.money, 0)) AS m_alipay, SUM(IF(o.pay_by IN(

2021-09-15 09:09:07 4514

原创 Python-错误与异常处理

通常情况下,在try语句块中写我们想要的逻辑,发生错误和异常时Python解释器会采用raise方法即将异常抛出,except语句可以承接raise方法抛出的异常并对异常做出处理。Python中有三种异常捕获与处理形式:第一种:try…except…形式,如下例子。def division(a, b): try: return a / b # 出现异常会扔出一个异常对象(rasie ...Error('错误信息')) except TypeError as err:

2021-09-14 19:07:40 74

原创 Python-迭代器/生成器

可调用对象(callable)用户使用def或lambda语句创建的函数。使用C语言(CPython)实现的内置函数,如time.strftime()和len()。使用C语言实现的方法,如dict.get()。方法,在类的定义体中定义的函数。类。类的实例,需要定义__call__()方法后的类的实例。使用yeild关键字的函数或方法。将可调用对象转换成迭代器,使用下面的方法:iter(callable, sentinel) -> iterator 可迭代对象(iterabl

2021-09-14 14:57:08 161

转载 Charles软件使用

Charles是通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。安装Charles去 Charles 的官方网站(http://www.charlesproxy.com)下载最新版的 Charles 安装包,是一个 dmg 后缀的文件。打开后将 Charles 拖到 Application 目录下即完成安装。将 Charles 设置成系统代理。之前提到,Charles 是通过将自己设置成代理服务器来完成封包截取的,所以使用 Cha

2021-09-13 10:27:22 252

转载 Python-reduce()

functools.reduce(function, iterable[, initializer])将两个参数的 function 从左至右积累地应用到 iterable 的条目,以便将该可迭代对象缩减为单一的值。例如,reduce(lambda x, y: x+y, [1, 2, 3, 4, 5]) 是计算 ((((1+2)+3)+4)+5) 的值。 左边的参数 x 是积累值而右边的参数 y 则是来自 iterable 的更新值。如果存在可选项 initializer,它会被放在参与计算的可迭代

2021-05-11 08:26:09 74

转载 Python-排序进阶(cmp_to_key)

python3之后不支持cmp,所用key函数并不直接比较任意两个原始元素,而是通过key函数把那些元素转换成一个个新的可比较对象,也就是元素的key,然后用元素的key代替元素去参与比较。如果原始元素本来就是可比较对象,比如数字、字符串,那么不考虑性能优化可以直接sort(key=lambda e: e)。不过这种基于key函数的设计倾向于每个元素的大小有个绝对标准,但有时却会出现单个元素并没有一个绝对的大小的情况,此时可以使用 functools.cmp_to_key构建基于多个元素的比较函数。以一个

2021-04-12 09:16:35 4097

原创 Python-求两数最大公约数

math.gcd(x,y)

2021-04-06 15:31:14 399

原创 Python-Pycharm更新pip错误

错误类型:AttributeError: ‘NoneType’ object has no attribute ‘bytes’。解决方法:terminal中用easy_install -U pip命令更新pip。

2020-12-24 16:10:38 236 1

转载 Python-排列组合函数

product 笛卡尔积  (有放回抽样排列)permutations 排列  (不放回抽样排列)combinations 组合,没有重复  (不放回抽样组合)combinations_with_replacement 组合,有重复  (有放回抽样组合)import itertoolsfor i in itertools.product('ABCD', repeat = 2): print(i)# ('A', 'A') ('A', 'B') ('A', 'C') ('A', 'D') (

2020-12-24 10:09:51 769

原创 上手Web自动化测试(Python+selenium+unittest)

从安装库、包和文件配置上手Web自动化测试,Python主要用Selenium、requests和Unittest库,此外还有用于远程测试的Selenium Server包。浏览器需要配置chromedriver。1.安装Selenium库可以在Pycharm,File—>Setting—>Project Interpreter中找到Selenium库安装之。如图:也可以在命令行中利用pip安装之,前提是pip命令包也安装过,且是最新版本。如图:上面显示我已经安装过了。2.安装un

2020-12-22 15:17:48 477

转载 python-Spider

爬取当当网排名前500的书籍信息import reimport jsonimport requests# 请求网页信息def request_dang(url): try: response = requests.get(url) if response.status_code == 200: return response.text except requests.RequestException: re

2020-12-16 14:32:25 133

转载 Python-leetcode1

1.题目给定一种规律 pattern 和一个字符串 str ,判断 str 是否遵循相同的规律。这里的 遵循 指完全匹配,例如, pattern 里的每个字母和字符串 str 中的每个非空单词之间存在着双向连接的对应规律。示例1:输入: pattern = “abba”, str = “dog cat cat dog”输出: true示例 2:输入:pattern = “abba”, str = “dog cat cat fish”输出: false示例 3:输入: pattern =

2020-12-16 09:25:22 132

原创 设计模式-创建型模式(抽象工厂模式)

抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。抽象工厂模式又称为Kit模式。

2020-12-10 16:40:52 111

原创 软件测试-自动化测试及工具

1.工具和自动化的好处重复测试的过程成为回归测试。在使用工具进行自动化测试时,主要有以下几个优点:速度快;效率高;准确度和精确度高;节省资源;仿真和模拟效果;坚持不懈。2.测试工具非入侵式测试工具:工具仅用于监视和检查软件而不对其进行修改;入侵式测试工具:工具以任何方式修改了程序代码或者控制了操作环境。工具的主要分类和使用方式:查看器和监视器例如:代码覆盖率分析器,通信分析器等。它们能够看到正常情况下看不到的软件运行的细节,属于入侵式工具,因为它们需要编译并链接到原程序中才能获得所需信

2020-12-10 10:39:14 513 1

转载 Python-求排列组合的方法

1. 调用 scipy 计算排列组合的具体数值 from scipy.special import comb, perm A = perm(3, 2)# out:A = 6.0C = comb(3, 2)# out: C = 3.02. 调用 itertools 获取排列组合的全部情况from itertools import combinations, permutationsitering = permutations([1, 2, 3], 2) Alist = list(it

2020-12-09 10:13:42 1222

原创 计算机网络-应用层协议5(P2P)

本文介绍两种特别适合P2P设计的应用,第一种是文件分发,从单个源向大量对等方分发一个文件(特殊例子BitTorrent);第二种是P2P应用是分布在大型对等社区中的数据库,重点讨论分布式散列表(DHT)的概念。1.P2P文件分发首先介绍文件分发环境中P2P体系结构的自扩展性;然后更详细地描述BitTorrent。P2P体系结构的扩展性因为对等方除了是比特的消费者外还是它们的重新分发者,所以在任意数量的对等方下,P2P体系结构的分发时间总是小于客户-服务器结构,而且一直小于1小时。也就是说它是自扩

2020-12-08 18:42:14 973

原创 软件测试-网站测试

1.黑盒测试在测试网站时,首先应该建立状态表(第5章),把每个网页当作不同的状态,超级链接当作状态之间的连接线。完整的状态图有利于对整个任务更好地进行审视。查找具体网页缺陷的思路:文本:把网页文本当作文档对待,根据(第12章)文档测试的方法进行测试。不要遗漏文字标签。超级链接:链接一定要明显,文字链接一般有下划线,鼠标经过任何类型的超链接应该发生变化。注意孤页的测试。图片:确保所有图片正确显示。如果图片和文字环绕,要改变浏览器的大小看环绕是否有问题。载入网页是否会因图片数量导致过慢。表单:(第5

2020-12-07 14:58:47 586

转载 Python-容器数据类型(collections)[2]

defaultdict对象defaultdict在字典dict的基础之上添加一个参数default_factory(default_factory可以指定为list,set,int)例子1:将下面的list转换成一个dict,其中key对应的value是一个listfrom collections import defaultdictl=[('a',2),('b',3),('a',1),('b',4),('a',3),('a',1),('b',3)]d=defaultdict(list)fo

2020-12-04 15:17:26 158

原创 操作系统(Linux)-进程控制

1.进程的概念进程是执行中的程序。程序的顺序执行1.概念程序由若干操作组成,一个操作对应一个功能,只有前一个功能执行完毕,后一个功能才能开始执行,这是程序内部的顺序执行;若一个任务由若干程序组成,这些程序之间也存在前后顺序,这是程序外部的顺序性。2.特点顺序性;环境的封闭性:按顺序执行程序,程序独占系统全部资源;结果的可再现性。程序的并发执行1.概念若干个程序或程序段同时在系统中运行,这些程序的执行时间是重叠的,即一个程序或程序段还未执行完毕,另一个程序或程序段已经开始运行。2

2020-12-03 16:05:59 440

原创 设计模式-创建型模式(单例、简工、工方)

1.单例模式确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,它提供全局访问的方法。单例模式是一种对象创建模式。1.1 饿汉式单例类当类被加载时,静态变量instance被初始化,此时类的私有构造函数会被调用,单例类的唯一实例将被创建。但是不管用不用得到,这个实例都被创建,占用内存空间。对应的Java片段:class EagerSingleton{ private static final EagerSingleton instance = new EagerS

2020-12-01 15:41:54 218

原创 软件测试-文档与软件安全测试

1.文档测试如果文档除了简单的readme文件外没有其他内容:要保证该文档包含应有的所有材料,全部内容从技术角度讲准确无误,还要进行拼写检查和磁盘病毒扫描。如果除此之外还有:包装文字和图形市场宣传材料、广告及其它插页授权/注册登记表EULA(最终用户许可协议)标签和不干胶条安装和设置指导用户手册联机帮助指南、向导和CBT(计算机基础训练)样例、示例和模板错误提示信息那么就需要对这些文档进行测试!1.1 文档测试的重要性提高易用性提高可靠性降低支持费用1.2 审查

2020-12-01 15:32:54 309

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除