变量

PATH 环境变量查看和修改

泄露秘密 提交于 2020-03-31 16:54:51
含义 linux下,当在终端输入某个命令时,系统会自动到 PATH所指的位置 去查找该命令执行。 没有PATH,就得输入该命令的绝对路径 ,很麻烦。 查看PATH的值 #echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games 每个路径用冒号隔开。 添加路径到PATH 如将/etc/apache/bin添加到PATH中。 1、只对本次登录有效。 在终端, #PATH=$PATH:/etc/apache/bin 注:网上很多加了#export PATH这句,实际多余。 export的作用是显示或设置环境变量,即在shell中定义的变量只对当前shell有效,而通过export 命令可以将变量设置为环境变量从而使变量对以后的shell进程也有效。 因为PATH已经是环境变量了,再用export PATH画蛇添足, 2、永久全局有效。 在文件/etc/profile最后添加PATH=$PATH:/etc/apache/bin 然后重启或者source /etc/profile 再清晰的理下过程: (1)#sudo gedit /etc/profile (2)在文件/etc/profile最后添加PATH=$PATH:/etc/apache/bin (3)重启永久生效

运算符优先级 详细列表

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

CAS -- ABA问题的解决方案

点点圈 提交于 2020-03-31 13:05:55
CAS:Compare and Swap, 翻译成比较并交换。 java.util.concurrent包中借助CAS实现了区别于synchronized同步锁的一种乐观锁。 其原理是CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。 我们现在来说什么是ABA问题。假设内存中有一个值为A的变量,存储在地址V中。 此时有三个线程想使用CAS的方式更新这个变量的值,每个线程的执行时间有略微偏差。线程1和线程2已经获取当前值,线程3还未获取当前值。 接下来,线程1先一步执行成功,把当前值成功从A更新为B;同时线程2因为某种原因???被阻塞住,没有做更新操作;线程3在线程1更新之后,获取了当前值B。 为什么线程3又反过来操作???是自旋吗??? 在之后,线程2仍然处于阻塞状态,线程3继续执行,成功把当前值从B更新成了A。 最后,线程2终于恢复了运行状态,由于阻塞之前已经获得了“当前值A”,并且经过compare检测,内存地址V中的实际值也是A,所以成功把变量值A更新成了B。 个人见解: 不是说一定出现ABA情况,是说有出现这种情况的可能性。也就是举一个特例来说明问题的可能性??? 看起来这个例子没啥问题,但如果结合实际,就可以发现它的问题所在。 我们假设一个提款机的例子。假设有一个遵循CAS原理的提款机

Vue Element几个用法

你说的曾经没有我的故事 提交于 2020-03-31 10:27:40
1,单选按钮回显 (1)设置v-model,label (2)给model绑定的变量赋值 注:变量的值不可以是整数 2,多选按钮回显 (1)设置v-model,label (2)给model绑定的变量赋值 注:变量的值不可以是整数 3,子模块表单赋值 (1)问题:在列表页面(父模块)打开添加页面(子模块)时会执行一些操作,例如: 需要先执行:显示"添加模块" 在执行:调用添加界面的表单赋值操作 但是这两行代码异步执行的,但是在"显示"之前调用子模块的方法就会导致子模块的resetForm()方法还没加载就执行了,因此报方法未定义的错误 (2)解决:如上图所示使用async/await控制执行顺序 4,模块间方法调用 (1)父模块调用子模块   1)在父模块使用子模块的地方声明ref      2) 在子模块编写父模块要调用的方法     3)在父模块中通过ref调用子模块的方法,同时可以将父页面的对象以参数的形式传递过去      (2)子模块调用父模块   1)在父模块中绑定要执行的方法:     2)在父模块编写子模块要调用的方法 ,同时可以将子页面的对象以参数的形式传递过来     3)在子模块中通过this.$emit()调用   5,监听变量值的变化 (1)声明变量 (2)设置监听 /** * 监听"隐藏已关联模型“动态设置可选列表 */

Java集合(2)一 ArrayList 与 LinkList

梦想与她 提交于 2020-03-31 08:54:02
目录 Java集合(1)一 集合框架 Java集合(2)一 ArrayList 与 LinkList Java集合(3)一 红黑树、TreeMap与TreeSet(上) Java集合(4)一 红黑树、TreeMap与TreeSet(下) Java集合(5)一 HashMap与HashSet 引言 ArrayList<E>和LinkList<E>在继承关系上都继承自List<E>接口,上篇文章我们分析了List<E>接口的特点:有序,可以重复,并且可以通过整数索引来访问。 他们在自身特点上有很多相似之处,在具体实现上ArrayList<E>和LinkList<E>又有很大不同,ArrayList<E>通过数组实现,LinkList<E>则使用了双向链表。将他们放到一起学习可以更清楚的理解他们的区别。 框架结构 从上面的结构图可以看出ArrayList<E>和LinkList<E>在继承结构上基本相同,值得注意的是LinkList<E>在继承了List<E>接口的同时还继承了Deque<E>接口。 Deque<E>是一个双端队列的接口,LinkList<E>由于在实现上采用了双向链表,所以可以很自然的实现双端队列头尾进出的特点。 数据结构 上一篇文章中我们说过,为什么一个Collection<E>接口会衍生出这么多实现类,其中最大的原因就是每一种实现在数据结构上都有差别

java中volatile关键字的含义

人盡茶涼 提交于 2020-03-31 08:05:46
在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉。 Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了 同步块 和 volatile 关键字机制。 synchronized 同步块大家都比较熟悉,通过 synchronized 关键字来实现,所有加上synchronized 和 块语句,在多线程访问的时候,同一时刻只能有一个线程能够用 synchronized 修饰的方法 或者 代码块。 volatile 用volatile修饰的变量,线程在每次使用变量的时候,都会读取变量修改后的最的值。volatile很容易被误用,用来进行原子性操作。 下面看一个例子,我们实现一个计数器,每次线程启动的时候,会调用计数器inc方法,对计数器进行加一 执行环境——jdk版本:jdk1.6.0_31 ,内存 :3G cpu:x86 2.4G public class Counter { public static int count = 0; public static void inc() { //这里延迟1毫秒,使得结果明显 try { Thread.sleep(1); } catch (InterruptedException e) { } count++; } public

maven 配置环境变量

喜夏-厌秋 提交于 2020-03-31 07:27:04
maven 环境变量配置 CreationTime--2018年6月4日18点45分 Author:Marydon 前言    要先运行maven,需要按安装并配置jdk,没有配置的见文末推荐。 1.maven下载   http://maven.apache.org/download.cgi   文件解压到指定目录下,如D盘 2.win+r-->sysdm.cpl 3.高级-->环境变量 4.新建系统变量 5.添加变量MAVEN_HOME   设置其值为:maven所在根目录-->确定   添加成功 6.将系统变量MAVEN_HOME添加到path中   选中Path-->编辑   新建-->值为:%MAVEN_HOME%\bin-->确定 7.测试是否配置成功   win+r-->cmd-->输入命令:mvn -v(有空格)    如出现版本信息,则说明环境变量配置成功   没有配置jdk时,报错信息如下: 注意:    如果你的cmd窗口一直处于开启状态,需要将其关闭,重新打开再进行测试;   如果你时win7系统,将其配置在最后面时,在其前面添加";",用于闭合上一个变量的引用。 相关推荐: java 配置环境变量 来源: https://www.cnblogs.com/Marydon20170307/p/9134948.html

golang内存模型

旧巷老猫 提交于 2020-03-31 03:21:40
介绍 go内存模型是指在特定的条件下,向goroutine中的变量写入值,在另一个goroutine中能够读取到该变量的值 建议 多个goroute同时修改一个数据必须是有序的 使用channel或sync、sync/atomic包中提供的同步原语,可保证对数据顺序访问 happens before 单个goroutine读写必需按一定顺序执行,编译器和处理器只有在不改变程序执行最终结果的情况下会对单个goroutine的读写重新排序。重新排序会导致一个goroutine看到的行为与另一个goroutine不一致。比如在一个goroutine中执行a=1;b=2,另外的goroutine看到的b值的更新发生在a值更新之前。 golang的内存操作读写请求的happens before:事件e1 happens before 事件e2,则e2在e1后执行。事件e1不是happen before 事件e2且不是在事件e2之后执行,则说事件e1和事件e2是同时执行的。 单个goroutine的happens-before是由程序顺序表达。 以下两条件都满足时一个写操作w向变量v写入数据,读操作r可以观察到变量v的值 1、读操作r没有 happen before 写操作w 2、在写w操作之后与读r操作之前,没有其他的写操作w’’对变量v写入数据 为了保证读操作r读到变量v

windows下修改Mysql5.7.11初始密码的图文教程

一曲冷凌霜 提交于 2020-03-31 01:07:47
参考:http://www.jb51.net/article/98481.htm [摘要:1.my-default.ini 更名my.ini 正在解压的目次上面复造my-default.ini一份更名字为 my.ini。 2.翻开 Windows 情况变量设置, 新建变量名 MYSQL_HOME , 变量值为 MyS] 1.my-default.ini 改名my.ini 在解压的目录下面复制my-default.ini一份改名字为 my.ini。 当成功进入开启服务以后,用 mysql -u root -p 回车 输入密码 出现 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) 关闭服务net stop MySQL 用安全模式打开,mysqld --skip-grant-tables 这个时候,光标会一直闪。注意,不要动,打开另一个命令行窗口。 (5.7.11)update user set authentication_string=password("123456") where user="root"; 最后,flush privileges;就OK了。 来源: https://www.cnblogs.com/manmanlu/p/8028040.html

python——封装、解构

*爱你&永不变心* 提交于 2020-03-30 19:42:29
1、封装   将多个值使用逗号分割,组合在一起 本质上,返回一个元组,只是省掉了小括号 # -*- coding:utf-8 -*- # version:python3.7 t1 = 1,2 t2 = (1,2) print(t1,type(t1)) print(t2,type(t2)) 执行结果: (1, 2) <class 'tuple'> (1, 2) <class 'tuple'> 2、交换(封装、解构) # -*- coding:utf-8 -*- # version:python3.7 a = 2 b = 3 # temp = a # a = b # b = temp a, b = b, a #等号右边使用了封装,先封装成一个tuple,而左边就使用了解构 print(a,b) 执行结果: 3 2 3、解构:   把线性结构的元素解开,并顺序的赋给其它变量   左边接纳的变量数要和右边解开的元素个数一致 # -*- coding:utf-8 -*- # version:python3.7 lst = [3, 5] first, second = lst print(first, second) 执行结果: 3 5   使用*变量名接收,但不能单独使用   被*变量名收集后组成一个列表 # -*- coding:utf-8 -*- # version:python3.7