在下图中,存在两个不同的命名空间:命名空间 A 和命名空间 B。图: 在不同的命名空间中,允许重名在命名空间 A 中,有 3 个变量 a、b、c,取值分别是 1、2、3在命名空间 B 中,有 3 个变量 a、b、c,取值分别是 11、22、33因为处于不同的命名空间,这种情况是允许的
计算机和人类发明的算盘一样,是一种计算工具。而计算机的发明就是要将人类从简单重复劳动中解放出来,所以计算机特别善于进行简单而需要大量人力才能完成的工作。循环的做一件事情就是这样一种简单而需要耗费大量精力才能完成的一件事情。而且人工在处理这个事情的时候,还会经常出现各种错误。循环作为计算机程序设计语言中基本的流控制语言,包含在几乎所有的程序中。比如我们常见的累加,计数,等等都是可以通过循环来完成的。
这一句是声明了 3 个整数型的变量。在 C 语言中,变量要先通过声明类型,然后才能使用。这一点和某些编程语言有点不太一样。不同的变量类型在 C 语言中会对应不同的内存分配大小。
mysql 是一个关系型数据库管理系统。目前 mysql 被广泛地应用在 Internet 上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了 mysql 作为网站数据库。mysql 的重要特性包括:使用 C 和 C++ 编写,源代码的可移植,支持Linux、BSD 和 Windows 等多种操作系统。为多种编程语言提供了 API。这些编程语言包括C、C++、Java、PHP、Python等。支持多线程,充分利用CPU资源,支持多用户。优化的SQL查询算法,有效地提高查询速度。提供多语言支持,常见的编码如中文的GB运维人员需要熟练掌握管理、检查、优化 mysql 数据库操作的管理工具。
我们通过之前的学习了解了,如何去定义一个类。class C puts "Hello"end# ---- 输出结果 ----HelloRuby 中类定义的语句和其他语句本质是一样的,我们现在使用 3.times 来迭代定义类 C。3.times do class C puts "Hello" endend# ---- 输出结果 ----HelloHelloHello这并不意味着我们可以定义三个同样名字为 C 的类,类只有第一次被创建,之后我们只是打开了这个类,并追加了一些内容给这个类。class D def x 'x' endendclass D def y 'y' endendobj = D.newputs obj.xputs obj.y# ---- 输出结果 ----xy解释:当第一次提及class D的时候,我们还没有类 D,所以我们定义了类 D,并增加了一个x方法。当第二次提及class D的时候,我们已经创建了类 D,就不会再次定义了,只是重新打开这个类 D,并给它定义了y方法。Tips:您甚至可以修改 Array 和 String 这些类,为这些类增加补丁。
展开语法在处理字符串时,顾名思义可以把字符进行展开,从而得到一个每项都是单个字符串的数组,注意展开语法在字符串使用时,需要包裹在 [] 中才能生效。const arr = [...'imooc'];console.log(arr); // ["i", "m", "o", "o", "c"]在 ES5 中也有方法,可以使用 split 方法实现把字符串变成数组。const arr = 'imooc'.split('');console.log(arr); // ["i", "m", "o", "o", "c"]
map 操作是将流中的对象换成一个新的流对象,是 Stream 上常用操作之一。 其示意图如下:比如我们把小写字母改成大写,通常我们会使用 for 循环:1281输出: [A, B, C]此时,我们可以使用 map 操作来进行转换:1282输出: [A, B, C]在 map 操作中,我们 把 collected 中的每一个元素转换成大写,并返回。
联合文件系统(Union File System):2004 年由纽约州立大学开发,它可以把多个目录内容联合挂载到同一个目录下,而目录的物理位置是分开的。UnionFS可以把只读和可读写文件系统合并在一起,具有写时复制功能,允许只读文件系统的修改可以保存到可写文件系统当中。目前有多种文件系统可以被当作联合文件系统,CentOS8 使用的是 overlay2,下面,我们尝试着挂载一个 overlay2 文件系统。在 /root/test 目录下,建立一个unionfs 目录,它的目录结构如下(a,b,c是文件,其他都是目录):unionfs├── lower1│ ├── a│ └── b├── lower2│ └── a├── merged├── upper│ └── c└── work进入 unionfs 目录,使用 mount 命令挂载:cd unionfsmount -t overlay overlay -o lowerdir=lower1:lower2,upperdir=upper,workdir=work merged如上,挂载了一个名为 overlay 的 overlay2 类型的文件系统,挂载点为 merged 目录。查看 merged 目录的层次:[root@centos8 unionfs]# tree mergedmerged├── a├── b└── c查看这些文件的内容:[root@centos8 unionfs]# for i in `ls merged`;do echo $i: `cat merged/$i`;donea: in lower1b: in lower1c: in upper可以看到,从 merged 视角,位于 lower2 的 a 文件被 lower1 的 a 文件覆盖;b 文件位于 lower1,c 文件位于 upper,符合从高到低 upper->lower1->lower2 的层次结构。我们按照如下操作来验证 unionfs 的分层特性:[root@centos8 unionfs]# touch merged/d[root@centos8 unionfs]# ls merged/a b c d[root@centos8 unionfs]# ls upper/c d[root@centos8 unionfs]# ls lower1a b[root@centos8 unionfs]# ls lower2a可以看到对 merged 目录的改动同步至 upper 目录中,并不会影响到 lower 目录。
编程语言的注释是为了程序员维护代码而出现的。注释内容其本身并不参与程序的编译与执行,注释的出现只是为了记录一些文本信息而出现的。在自由软件出现后,注释的更为重要的功能就是声明软件的授权使用协议。这在除我国在外的,其他很多国家具有法律效力。
字典由键和对应值成对组成,字典中所有的键值对放在 {} 中间,每一对键值之间用逗号分开,例如:{‘a’:‘A’, ‘b’: ‘B’, ‘c’:‘C’}字典中包含 3 个键值对键 ‘a’ 的值是 ‘A’键 ‘b’ 的值是 ‘B’键 ‘c’ 的值是 ‘C’{1:100, 2: 200, 3:300}字典中包含 3 个键值对键 1 的值是 100 键 2 的值是 200 键 3 的值是 300字典通常用于描述对象的各种属性,例如一本书,有书名、作者名、出版社等各种属性,可以使用字典描述如下:>>> book = {'title': 'Python 入门基础', 'author': '张三', 'press': '机械工业出版社'}>>> book['title']'Python 入门基础'>>> book['author']'张三'>>> book['press']'机械工业出版社'在第 1 行,创建了一个字典用于描述一本书;在第 2 行,使用字符串 ‘title’ 作为键(索引)访问字典中对应的值;在第 4 行,使用字符串 ‘author’ 作为键(索引)访问字典中对应的值;在第 6 行,使用字符串 ‘press’ 作为键(索引)访问字典中对应的值。
通过 loc() 函数指定要新增的行索引值,传入对应的列数据内容即可:# 导入pandas包import pandas as pd# 指定导入的文件地址 默认是file,这里的路径中省略了 file:/data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/第7,8,9,10小节/execl数据demo.xlsx"data = pd.read_excel(data_path)print(data)# --- 输出结果 --- 编程语言 推出时间 价格 主要创始人0 java 1995年 45.6 James Gosling1 python 1991年 67.0 Guido van Rossum2 C 1972年 33.9 Dennis MacAlistair Ritchie3 js 1995年 59.5 Brendan Eich4 php 2012年 69.9 Rasmus Lerdorf5 C++ 1983年 75.0 Bjarne Stroustrup# 通过 loc() 传入插入的行索引为 6 ,右侧为插入的列数据内容data.loc[6]=["ss","dd","23.1","ff"]print(data)# --- 输出结果 --- 编程语言 推出时间 价格 主要创始人0 java 1995年 45.6 James Gosling1 python 1991年 67 Guido van Rossum2 C 1972年 33.9 Dennis MacAlistair Ritchie3 js 1995年 59.5 Brendan Eich4 php 2012年 69.9 Rasmus Lerdorf5 C++ 1983年 75 Bjarne Stroustrup6 ss dd 23.1 ff输出解析:这里可以看到在原数据的基础上新增了行索引为 6 的数据行。但这里要注意,如果行索引指定的是已存在行索引,则不会进行数据行的插入,而是替换了该数据行的数据值,如下程序演示:# 这里我们指定行索引为 5 的值data.loc[5]=["ss","dd","23.1","ff"]print(data)# --- 输出结果 --- 编程语言 推出时间 价格 主要创始人0 java 1995年 45.6 James Gosling1 python 1991年 67 Guido van Rossum2 C 1972年 33.9 Dennis MacAlistair Ritchie3 js 1995年 59.5 Brendan Eich4 php 2012年 69.9 Rasmus Lerdorf5 ss dd 23.1 ff输出解析:通过结果可以看到,行索引为5的原数据为: C++ ,1983年,75,Bjarne Stroustrup,通过操作并没有新增数据行,而是将该行的数据改为了:ss,dd,23.1, ff
极坐标下绘制花瓣图,只需实现公式 r = a + b * |sin(c * θ)|:1311示例效果:
以表 student_course、course、course、teacher 链接为例:SELECT * FROM student_course a INNER JOIN course b ON a.course_id=b.id INNER JOIN teacher c ON b.teacher_id=c.id;查询结果如下图:如上图,若需要得到所有教师的所有课程信息,则需要多个字段对结果去重:SELECT DISTINCT a.course_id,b.course_name,b.teacher_id,c.nameFROM student_course a INNER JOIN course b ON a.course_id=b.id INNER JOIN teacher c ON b.teacher_id=c.id;去重后查询结果如下图 :Tips:多字段去重意思就是只有所有指定的列信息都相同,才会被认定为重复的信息。
在 loc() 函数中,我们通过传入要查询的列表项,可以查询多个数据内容,返回的数据结果是 Series 数据结构或者 DataFrame 数据结构。# 这里的 data 是上面我们从 Excel 中解析出来的数据print(data.loc[[1,2,5],["编程语言","价格"]])# --- 输出结果 --- 编程语言 价格1 python 67.02 C 33.95 C++ 75.0输出解析: 我们传入两个查询列表 [1,2,5] 和 [“编程语言”,“价格”],可以看到查询的结果为二维数据结构的数据集。
字典由键和对应值成对组成,字典中所有的键值对放在 {} 中间,每一对键值之间用逗号分开,例如:{‘a’:‘A’, ‘b’: ‘B’, ‘c’:‘C’}字典中包含3个键值对键 ‘a’ 的值是 ‘A’键 ‘b’ 的值是 ‘B’键 ‘c’ 的值是 ‘C’{1:100, 2: 200, 3:300}字典中包含3个键值对键 1 的值是 100键 2 的值是 200键 3 的值是 300字典通常用于描述对象的各种属性,例如一本书,有书名、作者名、出版社等各种属性,可以使用字典描述如下:>>> book = {'title': 'Python 入门基础', 'author': '张三', 'press': '机械工业出版社'}>>> book['title']'Python 入门基础'>>> book['author']'张三'>>> book['press']'机械工业出版社'在第 1 行,创建了一个字典用于描述一本书在第 2 行,使用字符串 ‘title’ 作为键(索引)访问字典中对应的值在第 4 行,使用字符串 ‘author’ 作为键(索引)访问字典中对应的值在第 6 行,使用字符串 ‘press’ 作为键(索引)访问字典中对应的值
在声明函数的时候,可以对参数也做上说明假设有一个需求,需要一个计算三角形周长的函数。计算三角形周长则需要知道三角形三条边各自的长度,然后将他们求和。定义函数的时候就可以将三条边作为参数进行声明。function calcPerimeter(a, b, c) { // a, b, c 分别代表三条边 var sum = a + b + c; return sum;}// 调用函数 并将返回值赋值给perimetervar perimeter = calcPerimeter(3, 4, 5);在调用函数的时可以传递值过去,这些值可以在函数中被访问。在以上 calcPerimeter 函数被调用的时,传递了 3, 4, 5 三个值。三个值对应到函数声明时定义的三个参数 a, b, c。所以函数执行过程中 sum 的值为 3 + 4 + 5,即 12,随后 sum 被作为返回值进行返回。最终变量 perimeter 也会被赋值为12。
Reflect.set() 是在一个对象上设置一个属性,类似 ES5 中属性设置语法:obj[key] = value ,它也是通过调用函数的方式来对对象设置属性的。语法:Reflect.set(target, propertyKey, value[, receiver])target:表示要操作的目标对象;propertyKey:表示要设置的属性名;value:表示设置的属性值;receiver:表示的是一个 this 值,如果我们在设置值的时候遇到 setter 函数,那么这个 receiver 值表示的就是 setter 函数中的 this 值。这个函数会返回一个 Boolean 值,表示在目标对象上设置属性是否成功。// Objectvar obj = {};Reflect.set(obj, "name", "imooc"); // trueconsole.log(obj.name); // "imooc"// Arrayvar arr = ["a", "b", "c"];Reflect.set(arr, 2, "C"); // trueconsole.log(arr); // ["a", "b", "C"]使用可以截断数组:var arr = ["a", "b", "c"];Reflect.set(arr, "length", 2); // trueconsole.log(arr); // ["a", "b"]当有 receiver 参数时,如果 receiver 对象中有 propertyKey 属性,则会使用 receiver 对象中的值。Reflect.set(obj, 'lession', 'ES5 Wiki', {lession: 'ES6 Wiki', age: 18});console.log(obj); // {name: "imooc", lesson: "ES5 Wiki"}
我们在 Memory Profiler 顶部看到的数字基于我们的应用根据 Android 系统机制所提交的所有私有内存页面。此计数不包含与系统或其他应用共享的页面。内存计数中的类别如下:Java:从 Java 或 Kotlin 代码分配的对象的内存;Native:从 C 或 C++ 代码分配的对象的内存;Graphics:图形缓冲区队列向屏幕显示像素(包括 GL 表面、GL 纹理等等)所使用的内存;(请注意,这是与 CPU 共享的内存,不是 GPU 专用内存。)Stack:我们的应用中的原生堆栈和 Java 堆栈使用的内存。通常与我们的应用运行多少线程有关;Code:我们的应用用于处理代码和资源(如 dex 字节码、经过优化或编译的 dex 代码、.so 库和字体)的内存;Others:我们的应用使用的系统不确定如何分类的内存;Allocated:我们的应用分配的 Java/Kotlin 对象数。此数字没有计入 C 或 C++ 中分配的对象。
我们假设 Sij 表示在 ai 结束之后开始,并且在 aj 开始之前结束的那些活动的集合。我们希望求得 Sij 的一个最大的相互兼容的活动子集,我们假定 Aij 就是这样的一个子集,且其中包含活动 ak 。由于最优解包含活动 ak ,我们得到两个子问题:寻找 Sik 中的兼容活动(在 ai 结束之后开始且 ak 开始之前结束的那些活动)以及寻找 Skj 中的兼容活动(在 ak 结束之后开始且 aj 开始之前结束的那些活动)。如上所述,我们假设 c [i, j] 表示集合 Sij 的最优解的大小,则可以按照这种方式去刻画活动选择问题的最优子结构: c [i, j] = c [i, k] + c [k, j] + 1; 当然,如果我们不知道 Sij 的最优解包含活动 ak ,就需要考察 Sij 中所有活动,寻找哪个活动可以获得最优解,最终结果如下:
块通常用来将两条或多条语句组合在一起,使其在格式上看更像一条语句。一堆语句可以放在大括号中,以作为单个块执行。可以为此类语句命名或为其提供执行条件(下一节的条件判断将会讲到)。下面是将一系列的语句放在一个块中的示例代码:{ int a = 1; int b = 2; int c = 3; int result = a + b + c;}
os.path.getsize(path) 获取指定路径的文件的大小,该函数的使用示例:>>> import os>>> os.path.getsize('C:\\Users\\desktop.ini')174
>>> db.sadd('set', 'a')1>>> db.sadd('set', 'b')1>>> db.sadd('set', 'c')1方法 sadd(set, value) 向集合 set 中添加元素 value如果集合 set 不存在,则创建一个集合在第 1 行,向集合 ‘set’ 添加元素 ‘a’在第 3 行,向集合 ‘set’ 添加元素 ‘b’在第 5 行,向集合 ‘set’ 添加元素 ‘c’
解压文件:sudo tar -C /usr/local -zxvf go1.13.8.darwin-amd64.tar.gz
95我在安装的时候遇到了几个小问题在这里给大家说明一下:1. 没有 C/C++ 的运行环境,如果遇到这个问题大家可以去这个网址下载一下 Microsoft Visual C++ 然后安装后重启一下就可以了。2. 我安装的是 TensorFlow2.0 版本,安装成功之后导入报错:ImportError: DLL load failed: 动态链接库(DLL)初始化例程失败这是因为我使用的电脑处理器比较老的原因。我把之前的 TensorFlow2.0 版本卸载掉之后重新安装了 1.5 的版本,并导入成功:卸载TensorFlow :pip uninstall tensorflow安装1.5 版本:pip install tensorflow==1.5
字符串在 C 语言中的处理与其他语言相比是比较特殊的。在 C 语言中没有专门的字符串的变量类型。而是通过字符数组的方式来实现字符串的功能。这使得字符串具有了数组的全部特性。但是与其它类型的数组最大的一点区别就是存储字符串的数组的最后一位是 \0 ,表示的是空,这点可以用来检测一个字符串是不是已经到了末尾。
输入就是将程序外部的数据输入到程序内部,输出就是将程序内部运行的结果等内容从程序内部输出到显示器,打印机或者存放到文件中。编程语言中的输入输出担负着程序与用户的交互工作。
这里我们讲的删除特定数据的行或列,其实并不是真正意义上的删除内容,而是通过数据条件的筛选过滤,得到一个新的数据集,从效果上看,也是去除了部分数据内容,达到了我们删除数据的实际需要。# 导入pandas包import pandas as pd# 指定导入的文件地址data_path="C:/Users/13965/Documents/myFuture/IMOOC/pandasCourse-progress/data_source/第7,8,9,10小节/execl数据demo.xlsx"# 解析数据data = pd.read_excel(data_path)print(data)# --- 输出结果 --- 编程语言 推出时间 价格 主要创始人0 java 1995年 45.6 James Gosling1 python 1991年 67.0 Guido van Rossum2 C 1972年 33.9 Dennis MacAlistair Ritchie3 js 1995年 59.5 Brendan Eich4 php 2012年 69.9 Rasmus Lerdorf5 C++ 1983年 75.0 Bjarne Stroustrup# 我们对价格列小于50的数据进行筛选data_res=data[data["价格"]<50]print(data_res)# --- 输出结果 --- 编程语言 推出时间 价格 主要创始人0 java 1995年 45.6 James Gosling2 C 1972年 33.9 Dennis MacAlistair Ritchie输出解析:这里我们通过对价格列费用小于50的数据进行筛选,进而删除掉了价格大于等于50的数据行,返回给了新的数据集 data_res ,在效果上达到了删除数据行的作用。
% 是一个特殊的符号,后面跟着一个字符用于说明参数的类型:% s 表示字符串 % d 表示整数 % f 表示浮点数有多种类型的占位符,初学时需要掌握如下常用的占位符:符号描述 %% 用于表示 %%c 格式化字符及其 ASCII 码 %s 格式化字符串 %d 格式化整数 %f 格式化浮点数 % s 用于格式化字符串 >>> name = 'tom'>>> 'name is %s' % name'name is tom'% d 用于格式化整数 >>> integer = 123>>> 'integer is %d' % integer'integer is 123'% f 用于格式化浮点数 >>> float = 123.456>>> 'float is %f' % float'float is 123.456000'%% 用于表示字符 % 本身 >>> a = 3>>> b = 2>>> c = a % b>>> '%d %% %d = %d' % (a, b, c)3 % 2 = 1%% 是一个特殊的占位符,表示字符 % 本身。
实例:hash = {a: 1, b: 2, c: 3}哈希的概念我们会在Ruby哈希章节中学习。
对象的行为示例如下:>>> string = 'Hello'>>> string.upper()'HELLO'>>> list = ['a', 'b', 'c']>>> list.append('d')>>> list['a', 'b', 'c', 'd']在第 1 行,创建字符串对象 ‘Hello’在第 2 行,调用对象的 upper 方法,获取字符串的大写在第 4 行,创建列表对象 list在第 5 行,调用对象的 append 方法,向列表追加一个元素