现在我想要这个两个文件合并后的结果为: 1 ab aa 2 cd bb 3 ad ee 4 bd ss 5 de 实现这个需求的命令示例: awk ‘NR==FNR{a[1]=2}NR> FNR{print 0,a[1]}’ 1.txt 2.txt ? 流程: 当读取1.txt时 第一行时:NR=0,FNR=0, 第二行时:NR=1,FNR=1, …… 最后一行时,NR=3,FNR=3, 然后开始读2.txt 读2.txt第一行时,NR=4,FNR=0 ,此时NR>FNR,所以开始打印第一行1 ab aa 第二行时,NR=5,FNR=2,同样满足NR>FNR,所以开始打印第二行2 cd bb …… 2.txt最后一行时,NR=7,FNR=4,打印最后一行 行号后面列的顺序是在print中定义的,也可以定义先打1.txt的2列,后打2.txt的2列,改为{print a[1],0}即可。
写文件缓冲区初始化时,如何设置正确的大小,这个不太好掌握,设置太大浪费内存,设置太小又装不下,正确姿势可参考下面的示例2 1.2 缓冲区不够大时循环写入 public static void writeFileDemo 这个方法,对于小文件而言没什么问题,但如果文件是一个几G的巨无霸,会遇到2个问题: ? 3.2 利用RandomAccessFile及Channel.map修改文件 public static void modify2() throws IOException {
字段'>'值' AND '字段'='值'; in关键字 in里面的每个数据都会作为一次条件,只要满足条件的就会显示 test SELECT * FROM '表名' WHERE 字段名 IN (值1, 值2, 值3); BETWEEN关键字 BETWEEN 值1 AND 值2; 比如:age BETWEEN 80 AND 100 相当于: age>=80 && age<=100 模糊查询 **关键字(like length是指需要显示的总记录数 test SELECT * FROM '表名' LIMIT 2,6; LIMIT的使用场景:分页 比如我们登录京东,淘宝,返回的商品信息可能有几万条,不是一次全部显示出来
1.lstrip()—— 去掉字符串左边的空格或指定字符 2.rstrip()——去掉字符串末尾的指定字符,默认为空格,根据提供的函数对指定的序列做映射 3.str.format()格式化数字 4
HashTable的区别: 两者都实现了Map接口,是将唯一键映射到特定的值上,主要区别在于: 1.HashMap没有排序,允许一个NULL键和多个NULL值,而Hashtable不允许 2. J2EE的N层体系结构 spring的注入方式: 1.属性注入(setter方法注入) 2.构造器注入 3.工厂方法注入 接口注入方式是不支持的 Spring中Bean的作用域有singleton和 - MVC:Spring的MVC框架是非常优秀的,从各个方面都可以甩Struts 2几条街,为Web表示层提供了更好的解决方案。 ,比如${driver}会被静态替换为com.mysql.jdbc.driver 2.#{}是sql的参数占位符,mybatis会将sql中的#{}替换为? https://www.v2ex.com/t/454877?
"李四", 70, 70, 30); if (s1 == s2) { cout << "张三和李四的分数一样" << endl; } else { if (s1 < s2) { = "知己"; cout << "第三亲密:" << s1[2] << endl; s1.show(); const student s2 = s1; cout << "第三亲密:" << s2[2] << endl; return 0; } (4)赋值运算符的重载 赋值运算符其实编译器会提供默认的,我们了解即可,这个我们在重载赋值运算符的时候,需要判断这个时不时会出现自己给自己赋值的情况 s2 = s1; s2.show(); return 0; } 3.继承的方式 (1)三种不同的继承方式 上面展示的就是三种不同的继承方式,我们假设这个基类有三个成员变量,一个是共有的,一个是受保护的 1, 2, 3); b2.showa(); b2.showb(); cout << endl; a a1(10, 20); b b11(a1, 30); return 0; } 我们分别使用初始化列表的方式指定了调用默认的构造函数
但是之后 面试官仍然会出一些 非常复杂的命令,本小节复习,除了基础中常见的命令之外,还有常见的复杂命令。 Part2基础命令 注意,每个linux命令都包含很多参数,我这里不像网上教程一样全写出来,我只会把常用的或者面试大概率遇到的参数写出来,以免参数太多大家记混。 script' var=value 文件 read 读取输入 read 变量 会把用户输入的字符放在变量里,然后在后续命令中使用$变量 来占位 好了,本节学习的内容够多了,大家放松放松,准备迎接下一节复习吧
WithWidth: (CGFloat)width WithStartPoint: (CGPoint)startPoint; @end PaintingBezierPath.m文件代码: 1 // 2 kCGLineCapRound; 19 [self moveToPoint:startPoint]; 20 } 21 return self; 22 } 23 24 @end 2、 )clearScreen; //清屏 - (void)saveImgToAlbum; //保存相片到到手机相册里 @end PaintingView.m文件代码: 1 // 绘画, 涂鸦 2 //1、开启图形上下文 82 UIGraphicsBeginImageContextWithOptions(self.bounds.size, NO, 0.0); 83 //2、 UIKit.h> @interface DoodleViewController : UIViewController @end DoodleViewController.m 1 // 信手涂鸦 2
而换一个方式, public void appendOne2(StringBuilder s){ s = new StringBuilder(); s.append("a"); } 这样 那方法2有什么不同? ? 方法2中,把参数s指向了新地址,那么接下来的任何修改,都将不会影响旧地址。则方法外的sb对应的地址空间也就不会发生变化。
那么手势解锁功能是怎么是实现的呢,这里使用Quart2D来简单模拟一下, 先看下截图效果: ? ? ? 按钮的有两个背景图片,一个默认样式,一个用于选中样式: ? ? import <UIKit/UIKit.h> @interface GestureLockView : UIView @end GestureLockView.m文件代码: 1 // 手势解锁 2 CGRect)rect { 146 //1、获取当前上下文 147 CGContextRef ctr = UIGraphicsGetCurrentContext(); 148 //2、 : UIViewController @end GestureLockViewController.m文件代码: 1 #import "GestureLockViewController.h" 2
基数权重展开法 基数权重展开法把可以把任意基数的数字转换成十进制 看图 注意,10是以16为基数的计数系统中的16 以2的幂为基数的计数系统 二进制数和八进制数有很特殊的关系,只需要把二进制从左往右读
背景打算系统的复习一下python3的语法,为后续AI相关工具研究和使用打下基础。先从基本语法开始。知识小树如下。1 语法结构a 语句分隔符换行符号就是python语句分隔符,每个语句独占一样。 print(1 + 2)print(1 - 2)print(1 * 2)print(1 / 2)print("================")x = 1y = 2z = x + yprint(z)print ,python相关的;1.电脑2.显卡3.书'''print(s1,"\n",s2,"\n",s3 ,"\n",s4)转义:# 转义符号:# 1)普通符号给与特殊的功能# 2)特殊符号普通化s1="\\ = int(input("number 2: "))print(f"{n1} + {n2} = {n1 + n2}")# 输出函数print("hello world",1,"carter")print <= age <=35)print(hire)小结本节复习了Python基础语法的核心内容,包括:语句与注释:掌握换行符、分号的使用规范,以及单行/多行注释的写法。
2.缺陷管理 2.1软件缺陷的定义 软件缺陷就是软件产品中所存在的问题,最终表现为 用户所需要的功能没有完全实现,没有满足用户的需求。
知道为什么我要单独拿出2章来给大家普及numpy和pandas么? 因为,在不久的将来,我即将更新ai测试领域的具体应用教程,这算是给大家提前打打基础,扫扫盲。 import pandas as pd s = pd.Series([1,2,3,4,5]) 这个运行后,我们打印s,得到的结果是这样的:左边第一列是行标,第二列开始是内容 我们也可以创建个多列的, s = pd.Series({"a":1,"b":2}) print(s) 结果如下: 但是这样创建看起来就不舒服,所以我们用DataFrame方法来创建。 = pd.Series({"a":1,"b":2},index=["a","b"]) 创建复合型序列 df = pd.DataFrame({'a':1,"b":pd.Series([1,2,3]),"c ) print(df) #查看内容 print(df.describe) #查看统计 print(df.head(2)) #查看头部2行 print(df.tail(2)) #查看倒数2行 print(
是修改字段名的 alter table table_name change name user_name alter table table_name add(id int, name varchar) 2. 不安全 没有确认重传这些 容易丢包 好处 是 速度快 占用系统资源少 tcp 面向连接 安全 确认重传 四次挥手 --> 双全工的双向通信 每个方向都必须关闭 2msl
比如匹配1开头,第二位是2-9,总共11位: var reg = /^1[2-9]{1}[0-9]{9}/g console.log(reg.test(15555555555));//true 方括号[
然后固定在每周的不同早习/晚习课,复习自己的各科笔记。上大学以后,知识/信息爆增,浩如烟海,手写笔记越来越少,也越来越不现实。于是我便基本放弃记笔记来巩固知识的方式,转而开始写博客。 提供多平台同步功能,随时随地记录/复习,充分利用碎片化时间。 提供笔记导入/导出功能,方便用户迁移/备份笔记。 提供自定义复习模板功能,Anki 默认有「填空题」、「问答题」的笔记复习模板,用户也可以自定义更多适合自己的模板。 提供免费共享/获取共享笔记的功能,有很多超级棒的共享笔记可供下载。 2. 安装 平台 地址 Android Windows/Linux/Mac 安装完成后,到官网注册一个免费帐号,然后在所有平台上的 Anki 登录,方便后续的跨平台笔记同步。 3. 笔记+复习 一般「创建牌组」作为一个大类,然后在「牌组」里面「添加」笔记即可。也可以通过「获取牌组」,浏览网上热门的共享笔记,并可以下载到本地进行导入(吹爆!)。
datetime. timedelta(hours=1000)(a-d1).isoformat()(a+d1).strftime('%m/%d/%Y')b.isoformat()(b-d2)# 2. for i in range(100000): sum_i+=ielse: sum_i=sum(range(100000)) print sum_itime.sleep(2) 天前是哪一天import datetimea=datetime.date.today()b=datetime.datetime.now()d1=datetime.timedelta(days=1000)d2= datetime.timedelta(hours=1000)(a-d1).isoformat()(a+d1).strftime('%m/%d/%Y')b.isoformat()(b-d2)# 2. =0 for i in range(100000): sum_i+=ielse: sum_i=sum(range(100000))print sum_itime.sleep(2)
@DataProvider public Object[][] dp() { Object[][] data = {{"testCase-", 1}, {"testCase-", 2} _151.jdk/Contents/Home/lib/tools.jar:/Users/imac/Desktop/chat/AutoTest/target/classes:/Users/imac/.m2/ repository/org/testng/testng/6.9.10/testng-6.9.10.jar:/Users/imac/.m2/repository/com/beust/jcommander -usedefaultlisteners false -socket50881 @w@/private/var/folders/8n/kmxfvb_17jngjq053xkzt2jr0000gn/T/ idea_working_dirs_testng.tmp -temp /private/var/folders/8n/kmxfvb_17jngjq053xkzt2jr0000gn/T/idea_testng.tmp
替换空格 %0d 替换空格 /**/ 替换空格 使用其他方式执行alert window['alert'](0) parent['alert'](1) self['alert'](2) /open/ontoggle="alert`1`">