赋值

Python笔记:深浅拷贝

自作多情 提交于 2020-04-01 05:39:56
  1.赋值操作两者是同一数据,其内存地址一样。适用于list、dict、set数据类型。   2.copy是浅拷贝,只能拷贝嵌套数据的第一层数据,嵌套的数据与赋值操作相同,其内存地址一样,当一个被更改,其他的拷贝也会跟着变。   3.deepcopy是深拷贝,使用深拷贝需要引入copy库,深拷贝是将元素内部的所有元素完全进行拷贝赋值,即使是嵌套数据,其嵌套的数据也是可以复制的,所以原数据改变,拷贝的数据不会跟着变。 来源: https://www.cnblogs.com/heshike/p/9432239.html

spring自动装配

自作多情 提交于 2020-04-01 00:05:50
Spring利用依赖注入(DI),完成对IOC容器中中各个组件的依赖关系赋值; 一、@Autowired:自动注入: 默认 优先按照类型 去容器中找对应的组件:applicationContext.getBean(BookDao.class);找到就赋值 如果找到多个相同类型的组件,再将属性的名称作为组件的id去容器中查找applicationContext.getBean("bookDao") @Qualifier("bookDao"):使用@Qualifier指定需要装配的组件的id,而不是使用属性名 自动装配默认一定要将属性赋值好,没有就会报错;可以使用@Autowired(required=false); @Primary:让Spring进行自动装配的时候,默认使用首选的bean;也可以继续使用@Qualifier指定需要装配的bean的名字 @Service public class BookService { // @Qualifier("bookDao") @Autowired(required = false) private BookDao bookDao; } @Configuration @ComponentScan("com.cn") public class MainConifgOfAutowired { @Primary @Bean("bookDao2"

运算符优先级 详细列表

我们两清 提交于 2020-03-31 16:12:01
优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标 数组名[常量表达式] 左到右 () 圆括号 (表达式)/函数名(形参表) . 成员选择(对象) 对象.成员名 -> 成员选择(指针) 对象指针->成员名 2 - 负号运算符 -表达式 右到左 单目运算符 (类型) 强制类型转换 (数据类型)表达式 ++ 自增运算符 ++变量名/变量名++ 单目运算符 -- 自减运算符 --变量名/变量名-- 单目运算符 * 取值运算符 *指针变量 单目运算符 & 取地址运算符 &变量名 单目运算符 ! 逻辑非运算符 !表达式 单目运算符 ~ 按位取反运算符 ~表达式 单目运算符 sizeof 长度运算符 sizeof(表达式) 3 / 除 表达式/表达式 左到右 双目运算符 * 乘 表达式*表达式 双目运算符 % 余数(取模) 整型表达式/整型表达式 双目运算符 4 + 加 表达式+表达式 左到右 双目运算符 - 减 表达式-表达式 双目运算符 5 << 左移 变量<<表达式 左到右 双目运算符 >> 右移 变量>>表达式 双目运算符 6 > 大于 表达式>表达式 左到右 双目运算符 >= 大于等于 表达式>=表达式 双目运算符 < 小于 表达式<表达式 双目运算符 <= 小于等于 表达式<=表达式 双目运算符 7 == 等于 表达式==表达式 左到右 双目运算符 !=

星号的秘密

北慕城南 提交于 2020-03-30 17:20:42
1 、乘法运算符 2 、定义指针 int *p = 0; 还是 int* p = 0;? 后一种比较容易这样理解:定义了一个变量p,它是指针型的(更详细一点,是指向int的指针型),相比而言,前面一种定义似乎是定义了*P这个奇怪的东西。但是后面一种写法会带来一个容易产生的误解: int* p1, p2; 这儿给人的感觉似乎是定义了两个指针型变量p1和p2,但是,事实上,这种直觉是错误的,正确的理解方式是int *p1, p2;即p1是指针型的,而p2确是整型的。 在MS VC++ 6.0中,是按照后面一种格式写的。 3 、何谓指针? 指针仅仅表示一个内存中的某个地址? 非也,注意到,我们在定义指针的时候,都关联了一个类型,如int,char,或者是string等等,如果说指针仅仅表示一个内存中的地址,那何必要关联这么多变化的东西呢?完全可以DWORD p=0;这样解决问题。 关联了的数据类型是作何用的呢? 它可以指示编译器怎样解释特定地址上内存的内容,以及该内存区域应该跨越多少内存单元。如 int *p; 编译器可以从这个定义中获得信息:1、p指向的内存存放的是整型数据,2、由于该内存区域只存放了一个数据,跨越的内存区域为4个字节,即p+1的效果是跳过了四个字节。 另一个复杂一点的例子,如 struct a {int x1; short x2; a *next; } 定义指针 a

C++星号的含义

爷,独闯天下 提交于 2020-03-30 17:03:04
1 、乘法运算符 2 、定义指针 int *p = 0; 还是 int* p = 0;? 后一种比较容易这样理解:定义了一个变量p,它是指针型的(更详细一点,是指向int的指针型),相比而言,前面一种定义似乎是定义了*P这个奇怪的东西。但是后面一种写法会带来一个容易产生的误解: int* p1, p2; 这儿给人的感觉似乎是定义了两个指针型变量p1和p2,但是,事实上,这种直觉是错误的,正确的理解方式是int *p1, p2;即p1是指针型的,而p2确是整型的。 在MS VC++ 6.0中,是按照后面一种格式写的。 3 、何谓指针? 指针仅仅表示一个内存中的某个地址? 非也,注意到,我们在定义指针的时候,都关联了一个类型,如int,char,或者是string等等,如果说指针仅仅表示一个内存中的地址,那何必要关联这么多变化的东西呢?完全可以DWORD p=0;这样解决问题。 关联了的数据类型是作何用的呢? 它可以指示编译器怎样解释特定地址上内存的内容,以及该内存区域应该跨越多少内存单元。如 int *p; 编译器可以从这个定义中获得信息:1、p指向的内存存放的是整型数据,2、由于该内存区域只存放了一个数据,跨越的内存区域为4个字节,即p+1的效果是跳过了四个字节。 另一个复杂一点的例子,如 struct a {int x1; short x2; a *next; } 定义指针 a

5数组指针和引用:数组

谁说我不能喝 提交于 2020-03-29 10:06:19
数组 一维数组:数据类型 数组名 [常量表达式] 注意: 命名规则和变量名相同 数组后面一定是[],方括号内 是常量表达式 常量表达式表达元素的个数,即数组的长度 定义数组的常量表达式不能是变量 引用: 一维数组引用的一般形式:数组名[下标] 数组元素的下标起始值为0 初始化: 单个元素逐一赋值 a[10]=1;a[9]=100;...... 聚合方式赋值 int a[10]={1,2,.....10} ; int a[]={1,2,.....10} ; int a[10]={1,2,.....7} 没被赋值的元素 默认补0 二维数组:数据类型 数组名[常量表达式1][常量表达式2] 注意: 数组名按照标识符命名 二维数组有两个下标 a[3][4] 下标一定是整数a[3][4]表示有12个元素 声明的时候 下标不能是变量 一维数组:连续的内存单位进行排序 二维数组:存储形式与一维相同 引用: 数组名[下标][下标] 起始值从0开始 初始化: 单一元素逐一赋值 聚合方式赋值 int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; int a[3][4]={1,2,3,4} 后面补0; int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}} 字符数组:char 数组名 [常量表达式] 初始化: 聚合方式 char a

make和makefile简明基础

梦想与她 提交于 2020-03-29 00:51:22
0.make、makefile是什么?   makefile定义了一系列的规则,来规定哪些部分先编译,哪些部分后编译,写好makefile以后,只需一个make命令就可以让整个工程完全自动编译,所以简单的说,make&makefile实现了大工程的自动化编译。 1.makefile里是什么?   看个makefile的简单例子: 1 target:main.o test.o 2 cc -o target main.o teat.o 3 main.o:main.c x.h 4 cc -c main.c 5 test.o:test.c y.h 6 cc -c test.c 7 clean: 8 rm target main.o test.o   可以看出,makefile中主要由两个部分组成:#1文件依赖关系和#2生成所需命令。其中clean是一个伪目标文件,可用".PHONY:clean"在其前面注明。执行make命令即可编译,执行make clean即可删除所有目标文件。 2.make是如何工作的?   0)make会在当前目录下找名字为"makefile "或"Makefile"的文件;   1)若找到makefile文件,接着找第一个目标文件(target),并把它作为最终的目标文件;   2)若target文件依赖后面的.o文件更新,则执行后面定义的命令会生成target文件

Python list列表修改元素

若如初见. 提交于 2020-03-27 17:45:30
Python 提供了两种修改列表(list)元素的方法,你可以每次修改单个元素,也可以每次修改一组元素(多个)。 修改单个元素 修改单个元素非常简单,直接对元素赋值即可。请看下面的例子: nums = [ 40 , 36 , 89 , 2 , 36 , 100 , 7 ] nums [ 2 ] = - 26 #使用正数索引 nums [- 3 ] = - 66.2 #使用负数索引 print (nums ) 运行结果: [40, 36, -26, 2, -66.2, 100, 7] 使用索引得到列表元素后,通过 = 赋值就改变了元素的值。 修改一组元素 Python 支持通过切片语法给一组元素赋值。在进行这种操作时,如果不指定步长(step 参数),Python 就不要求新赋值的元素个数与原来的元素个数相同;这意味,该操作既可以为列表添加元素,也可以为列表删除元素。 下面的代码演示了如何修改一组元素的值: nums = [ 40 , 36 , 89 , 2 , 36 , 100 , 7 ] #修改第 1~4 个元素的值(不包括第4个元素) nums [ 1 : 4 ] = [ 45.25 , - 77 , - 52.5 ] print (nums ) 运行结果: [40, 45.25, -77, -52.5, 36, 100, 7] 如果对空切片(slice)赋值

php运算符

孤街浪徒 提交于 2020-03-27 15:22:47
PHP 运算符 按操作数: 一元运算符(只能接受一个值) 二元运算符(接受两个值) 三元运算符(接受三个值) 按类型: 算术运算符 赋值运算符 位运算符 比较运算符 错误控制运算符 递增/递减运算符 逻辑运算符 算法运算符 /* * - 取反 * + 加法 * - 减法 * * 乘法 * / 除法 (两个整数能整除会返回integer型,其他情况会返回float型) * % 取模 (在运算之前会将两个数除去小数部分,转换成整数,结果和被除数的符号--正负号相同,和除数的符号无关) * ** */ echo (5 % 3)."\n"; //输出:2 echo (5 % -3)."\n"; //输出:2 echo (-5 % 3)."\n"; //输出:-2 echo (-5 % -3)."\n"; //输出:-2 echo (5 ** 3)."\n"; //输出125(5*5*5) 赋值运算符 //=:赋值 //传值赋值:将原变量的值拷贝到新变量中,改变一个并不影响另外一个。 $a1 = 10; $a2 = $a1; $a2 = 20; echo "a1 = ".$a1."\ta2 = ".$a2."\n"; //引用赋值:意味着两个变量指向了同一个数据,没有拷贝任何东西 $b1 = 3; $b2 = &$b1; $b2 = 4; echo "b1 = ".$b1."\tb2 = "

php基础

╄→гoц情女王★ 提交于 2020-03-27 12:37:59
PHP 简介 最初用于维护个人主页,简写为: Personal HomePage 。 最后改为: Hypertext Preprocessor (超文本预处理器),于1994年诞生。 优势 性能好,开发效率高 跨平台(可以在不同的操作系统上运: windows / linux / unix ) 上手快,编辑简单,实用性强 面向对象[ PHP 4 开始,目前完全支持面向对象] 开放的源代码,所有的 PHP 源代码都可以得到 成本低 注: PHP 灵活,对程序员的约束太少, PHP 默认是解释运行机制,所以很多问题在运行阶段才会发现。 B/S 结构和 C/S 结构 B/S : Browser-Server ,浏览器-服务器,通过浏览器访问,都可以看作 B/S C/S : Client-Server ,客户端-服务器,通过客户端访问,比如 QQ ,微信 PHP 基础语法 开始标记和结束标记 告诉 PHP 开始和停止解析二者之间的代码,这使得 PHP 可以被嵌入到各种不同的文档中去。 如果是文件是纯 PHP 代码,最好在文件末尾删除 PHP 结束标记。 指令分隔符 //指令分隔符:php和其他编程语言一样,在每个语句后用分号';'结束指令,一段PHP代码中的结束标记隐含一个分号,所以在一个PHP代码段中的最后一行可以不用分号结束。 echo 'hello, world'."\n"; 注释