赋值

字符串

假装没事ソ 提交于 2020-01-07 23:58:13
------------恢复内容开始------------ 一。二进制安全   数据写入时是什么样子,读出来就是什么样子,这称为二进制安全。   c语言的字符串不是二进制安全的,以\0为结束符,只能存储文本数据,不能存储图片音频等二进制数据。   举例 string.c 文件   运行后得出如下结果, a和b是相等的,长度是3,而显然a和b是不想等的,长度也应该为5,这是因为c的字符串以\0为结束符   PHP的字符串是二进制安全的,看一下PHP的代码,$a和$b是不想等的,而且长度为5   PHP实现二进制安全的主要原因是zend_string结构体的重新封装,直接以长度len来直接全部读取出来。 二。双引号和单引号转义的区别   先看上面二进制安全的例子,同一个字符串,单引号和双引号得出的结果却不一样   先查看 transfer_string.php 文件   接着调试查看存储的值为: "<?php\n$a = 'abc\\0a';\n$b = \"abc\\0a\";\n" , 这里\\即为\,\"即为",\0也是字符,为空字符。   在读取到存储的值后,会经过词法解释生成AST树,这里只简单说一下过程。   在解释到单引号时,从第一个单引号读到下一个单引号结束,中间直接返回zend_string,即字符串。   而双引号和单引号过程一样,但中间的字符会进入到zend

shell变量详解

最后都变了- 提交于 2020-01-07 20:06:37
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> shell变量详解 1 shell变量基础 shell变量是一种很“弱”的变量,默认情况下,一个变量保存一个串,shell不关心这个串是什么含义。所以若要进行数学运算,必须使用一些命令例如let、declare、expr、双括号等。shell变量可分为两类:局部变量和环境变量。局部变量只在创建它们的shell中可用。而环境变量则可以在创建它们的shell及其派生出来的任意子进程中使用。有些变量是用户创建的,其他的则是专用shell变量。变量名必须以字母或下划线字符开头。其余的字符可以是字母、数字(0~9)或下划线字符。任何其他的字符都标志着变量名的终止。名字是大小写敏感的。给变量赋值时,等号周围不能有任何空白符。为了给变量赋空值,可以在等号后跟一个换行符。用set命令可以查看所有的变量,unset var命令可以清除变量var,var相当于没有定义过。readonly var可以把var变为只读变量,定义之后不能对var进行任何更改。对shell变量的引用方式很多,用这些方式可以方便的获取shell变量的值,变量值的长度,变量的一个字串,变量被部分替换后的值等等。shell变量常见引用方式如下: 2 环境变量 环境变量的定义方法如下: var=value export var

(对象、数组)解构赋值

ε祈祈猫儿з 提交于 2020-01-07 16:42:20
解构赋值 解析一个结构并给变量赋值,就是快速的从对象或数组中拿到对应的数据 解构对象 使用{}解构对象 语法:{变量}=对象 使用的时候可以一次解析多个 PS:这个变量必须是对象中的某一个成员,否则拿到的就是undefined var obj = { name : "Jack" , age : 18 , gender : "男" } //可以解析一个 let { name } = obj ; //等价于 let name = obj.name; console . log ( name ) ; //="Jack" //也可以解析多个 let { name , age , gender } = obj ; console . log ( name ) ; //="Jack" console . log ( age ) ; //=18 console . log ( gender ) ; //="男" 在解构的时候赋值一个新名字 语法:{对象中的成员名称:新变量名}=对象 var obj = { name : "Jack" , age : 18 , gender : "男" } let { name : a } = obj ; //等价于 let a = obj.name; console . log ( a ) ; //=>"Jack" //混合使用 let { name : a ,

atomic与nonatomic,assign,copy与retain的定义和区别

会有一股神秘感。 提交于 2020-01-07 16:21:52
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> Objective-C语言关键词,@property与@synthesize配对使用。 声明property的语法为:@property (参数1,参数2) 类型 名字; 功能: 让编译好器自动编写一个与数据成员同名的方法声明来省去读写方法的声明。 如:@property(nonatomic,retain) UIWindow *window; 其中参数主要分为三类: 读写属性: (readwrite/readonly) setter语意:(assign/retain/copy) 原子性: (atomicity/nonatomic) 各参数意义如下: readwrite: 产生setter\getter方法 readonly: 只产生简单的getter,没有setter。 assign: 默认类型,setter方法直接赋值,而不进行retain操作 retain: setter方法对参数进行release旧值,再retain新值。 copy: setter方法进行Copy操作,与retain一样 nonatomic: 禁止多线程,变量保护,提高性能 atomic和nonatomic用来决定编译器生成的getter和setter是否为原子操作。 atomic 设置成员变量的@property属性时

i++与++i的区别

为君一笑 提交于 2020-01-07 11:08:01
i++是先赋值,然后再自+1;++i是先自+1,后赋值。 用代码表示就是: 若 a = i++; 则等价于 a=i;i=i+1; 而 a = ++i; 则等价于 i=i+1;a=i; 例子: int i=2; System.out.println("1、i="+i+",i的初始值为2");//打印I的初始值 int a=++i; System.out.println("2、a=++i:表示i+1后,将结果赋值给自己,然后再赋值给a,此时的i="+i+",a="+j); //此时i已+1 int b=i++; System.out.println("3、b=i++:表示先将i的值赋值给b,然后i自身再加1,b="+b+",此时的i="+i); 结果是: 1、i=2:i的初始值为2 2、a=++i:表示i+1后,将结果赋值给自己,然后再赋值给a,此时的i=3,a=3 3、b=i++:表示先将i的值赋值给b,然后i自身再加1,b=3,此时的i=4 来源: https://www.cnblogs.com/henrypaul/p/12159636.html

java基础面试题

末鹿安然 提交于 2020-01-07 09:51:29
谈谈你对java平台的理解?java是解释执行,这句话正确吗? 答:java本身是一种面向对象的语言,最显著特性是2个方面,1是书写一次,到处运行即跨平台,另外1个是垃圾回收,java通过垃圾收集器回收分配的内存,大部分情况下,程序员不需要自己操作内存的分配和回收。 对于java是解释执行这句话,说法不太正确,我们开发的java源码即.java文件,首先通过javac编译器编译为字节码,然后运行时,通过jvm内嵌的解释器将字节码转换为最终的机器码,但常见jvm,eg:oracle jdk提供的Hotspot jvm,都提供了JIT(Just-in-time)编译器即动态编译器。JIT能够在运行时将热点代码编译成机器码,这种情况下部分热点代码就属于编译执行,而非解释执行。 JDK 和 JRE 有什么区别? JDK:Java Development Kit 的简称,java 开发工具包,提供了 java 的开发环境和运行环境。 JRE:Java Runtime Environment 的简称,java 运行环境,为 java 的运行提供了所需环境。 具体来说 JDK 其实包含了 JRE,同时还包含了编译 java 源码的编译器 javac,还包含了很多 java 程序调试和分析的工具。简单来说:如果你需要运行 java 程序,只需安装 JRE 就可以了,如果你需要编写 java 程序

Shell 参数扩展及各类括号在 Shell 编程中的应用

本秂侑毒 提交于 2020-01-07 09:30:17
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 今天看有人总结了 shell 下的参数扩展,但不是很全,恰好以前整理过放在百度空间,但百度空间目前半死不活的情况下对 Google 非常不友好,索性一并转过来方便查阅。 1、bash 中的 大括号参数扩展 (Parameter Expansion) 假设我们定义了一个变量为: file=/dir1/dir2/dir3/my.file.txt 1.1 bash 下的 split 取“数组”的首、尾: ${file#*/}:拿掉第一条 / 及其左边的字符串:dir1/dir2/dir3/my.file.txt ${file##*/}:拿掉最后一条 / 及其左边的字符串:my.file.txt ${file#*.}:拿掉第一个 . 及其左边的字符串:file.txt ${file##*.}:拿掉最后一个 . 及其左边的字符串:txt ${file%/*}:拿掉最后条 / 及其右边的字符串:/dir1/dir2/dir3 ${file%%/*}:拿掉第一条 / 及其右边的字符串:(空值) ${file%.*}:拿掉最后一个 . 及其右边的字符串:/dir1/dir2/dir3/my.file ${file%%.*}:拿掉第一个 . 及其右边的字符串:/dir1/dir2/dir3/my Tips: 记忆的方法为: #

oracle存储过程创建-调试-调用-删除(二)

喜欢而已 提交于 2020-01-07 08:54:57
上一篇文章已经介绍了存储过程简单的创建,调用,调试和删除。这篇文章将会主要讨论一下存储过程中选择循环判断等的用法。 存储过程中变量的定义和赋值 在存储过程里,我们除了可以使用参数,还可以定义一些变量来进行操作。 第一种赋值方式 ::= 1. 定义的变量要写在as或is关键字后面,begin前面。 2. 定义的变量区别于参数的是,需要指定长度。 3. 定义完的参数可以在begin中对其进行赋值,oracle中赋值的动作不是 = 而是 := 。 4. 参数为in类型的不允许再次赋值了。 5. 下面的参数num虽然存在,但是下面的代码中没有地方引用,所以编译的时候会提醒 ‘已编译但有警告’。 6. commit提交一定要写,否则无法成功完成insert操作。 7. 为字符类型的变量赋值的时候两边要用单引号,数值型则不用。 1 create or replace procedure test3(num number) as 2 age integer;--integer不需要指定长度 3 names varchar2(20);--varchar2 需要指定长度 4 sex integer; 5 begin 6 age:=0;--为上面定义的变量赋值不是用 = 而是用 := 7 names:='张三';-- 为字符型数据赋值两边要加上单引号 8 sex:=1; 9 --num:=1;

01评论小案例

只愿长相守 提交于 2020-01-07 08:45:05
  0.准备工作:安装脚手架(npx create-react-app pinglun),启动项目(npm start) 循环用map 判断条件直接写 if 文本框值 1 先绑定value 2 在onChange值改变的函数 去修改值 如果 数据是 数组 或者对象 需要先 展开赋值一个新数据 操作新数据 再把新数据去赋值 修改数据必须 用this.setState({ }) App.js import React from 'react'; import './App.css' class App extends React.Component { state={ comment:[ { id: 1, name: 'jack', content: '沙发!!!' }, { id: 2, name: 'rose', content: '板凳~' }, { id: 3, name: 'tom', content: '楼主好人' } ], username:'', content:'' } // renderList=()=>{ if(this.state.comment.length===0){ return <div className="no-comment">暂无评论,快去评论吧~</div> }else{ return <ul> {/* 循环生成数据 */} {this

Commonjs规范中module.exports和exports的区别

扶醉桌前 提交于 2020-01-06 20:49:00
经常能看到两种导出模块的方式:module.exports和exports。 穿插一个必备小知识:在文件a.js中用exports或module.exports导出的对象(方法、变量),可以在另一个文件b.js中通过require('./a')引用。 module和exports是Node.js给每个js文件内置的两个对象。 在node.js中打印console.log(module)可以看出 module 和 exports 都是node中提供的两个对象,其中module里包裹着exports Module { id: '.', exports: {}, parent: null, filename: '', loaded: false, children: [], paths:[] } 实际上这两个对象指向同一块内存。这也就是说module.exports和exports是等价的。如图示: 例如: exports.age = 18; module.exports.age = 18; 这两种写法是一致的(都相当于给最初的空对象{}添加了一个属性,通过require得到的就是{age: 18})。 但是这里有个重点,每个导出模块 node.js 默认会返回 return module.exports ; 当直接给module.exports或exports赋值时,就相当于改变了内存