系统变量

七、管道命令符、命令行的通配符、常用的转义字符、重要的环境变量、Vim文本编辑器

限于喜欢 提交于 2019-12-07 01:16:38
管道命令符 细心的读者肯定还记得在2.6节学习tr命令时曾经见到过一个名为管道符的东西。同时按下键盘上的Shift+\键即可输入管道符,其执行格式为“命令A | 命令B”。管道命令符的作用也可以用一句话来概括“把前一个命令原本要输出到屏幕的标准正常数据当作是后一个命令的标准输入”。在2.8节讲解grep文本搜索命令时,我们通过匹配关键词/sbin/nologin找出了所有被限制登录系统的用户。在学完本节内容后,完全可以把下面这两条命令合并为一条: 找出被限制登录用户的命令是grep "/sbin/nologin" /etc/passwd; 统计文本行数的命令则是wc -l。 现在要做的就是把搜索命令的输出值传递给统计命令,即把原本要输出到屏幕的用户信息列表再交给wc命令作进一步的加工,因此只需要把管道符放到两条命令之间即可,具体如下。这简直是太方便了! [root@linuxprobe ~]# grep "/sbin/nologin" /etc/passwd | wc -l 33 这个管道符就像一个法宝,我们可以将它套用到其他不同的命令上,比如用翻页的形式查看/etc目录中的文件列表及属性信息(这些内容默认会一股脑儿地显示到屏幕上,根本看不清楚): [root@linuxprobe ~]# ls -l /etc/ | more total 1400 drwxr-xr-x. 3

面试:史上最全多线程面试题 - (锁&内存模型&线程)

一个人想着一个人 提交于 2019-12-06 23:14:33
多线程经典面试题60问。 历史文章: dubbo&zookeeper55道高频面试题(附加答案) SpringCloud&SpringBoot经典面试题(附加答案) 1.什么是活锁、饥饿、无锁、死锁? 死锁、活锁、饥饿是关于多线程是否活跃出现的运行阻塞障碍问题,如果线程出现 了这三种情况,即线程不再活跃,不能再正常地执行下去了。 死锁 死锁是多线程中最差的一种情况,多个线程相互占用对方的资源的锁,而又相互等 对方释放锁,此时若无外力干预,这些线程则一直处理阻塞的假死状态,形成死锁。 举个例子,A 同学抢了 B 同学的钢笔,B 同学抢了 A 同学的书,两个人都相互占 用对方的东西,都在让对方先还给自己自己再还,这样一直争执下去等待对方还而 又得不到解决,老师知道此事后就让他们相互还给对方,这样在外力的干预下他们 才解决,当然这只是个例子没有老师他们也能很好解决,计算机不像人如果发现这 种情况没有外力干预还是会一直阻塞下去的。 活锁 活锁这个概念大家应该很少有人听说或理解它的概念,而在多线程中这确实存在。 活锁恰恰与死锁相反,死锁是大家都拿不到资源都占用着对方的资源,而活锁是拿 到资源却又相互释放不执行。当多线程中出现了相互谦让,都主动将资源释放给别 的线程使用,这样这个资源在多个线程之间跳动而又得不到执行,这就是活锁。 饥饿 我们知道多线程执行中有线程优先级这个东西

如何安装和使用Maven

亡梦爱人 提交于 2019-12-06 17:30:29
今天我们来学习一下如何安装Maven,把步骤分享给大家,希望能对大家有帮助! 我的博客地址: https://www.cnblogs.com/themysteryofhackers/p/11996550.html 更新时间:2019-12-06 一、下载Maven 直接去官网下载Maven,地址为 Maven下载地址 。 二、安装Maven 下载好Maven后,我建议你创建一个用来管理软件的文件夹,然后解压到该文件夹即可。然后就配置Maven的环境变量,“我的电脑”---》“右击” ---》“属性” ---》“高级系统设置” ---》环境变量,在系统变量那里新建一个系统变量,取名为 “MAVEN_HOME”(默认就取这个名字,方便以后识别,当然你也可以去其他的,但是不建议),变量值为你解压Maven的位置,要带上Maven文件夹的路径,如下图: 配好这个系统变量后,就在系统变量找到一个叫 “Path”的系统变量,点击编辑这个 “Path”系统变量,然后在里面直接添加 “%MAVEN_HOME%\bin”,添加这个的意思就是将你下载的Maven下的bin目录下的一些运行程序可以全局化,既可以在cmd里面运行,如下图所示: 然后进入cmd,快捷键为 win+r,输入cmd,进去之后输入mvn –v,弹出下面的信息就代表Maven就安装成功了。 结尾 我是一个Java程序员

插件化框架解读之so 文件加载机制(四)

不羁岁月 提交于 2019-12-06 12:28:48
阿里P7移动互联网架构师进阶视频(每日更新中)免费学习请点击: https://space.bilibili.com/474380680 提问 本文的结论是跟着 System.loadlibrary() 一层层源码走进去,个人对其的理解所整理的,那么开始看源码之前,先来提几个问题: Q1:你知道 so 文件的加载流程吗? Q2:设备存放 so 的路径有 system/lib,vendor/lib,system/lib64,vendor/lib64,知道在哪里规定了这些路径吗?清楚哪些场景下系统会去哪个目录下寻找 so 文件吗?还是说,所有的目录都会去寻找? Q3:Zygote 进程是分 32 位和 64 位的,那么,系统是如何决定某个应用应该运行在 32 位上,还是 64 位上? Q4:如果程序跑在 64 位的 Zygote 进程上时,可以使用 32 位的 so 文件么,即应用的 primaryCpuAbi 为 arm64-v8a,那么是否可使用 armeabi-v7a 的 so 文件,兼容的吗? Q2,Q3,Q4,这几个问题都是基于设备支持 64 位的前提下,在旧系统版本中,只支持 32 位,也就没这么多疑问需要处理了。 源码 准备工作 由于这次的源码会涉及很多 framework 层的代码,包括 java 和 c++,直接在 AndroidStudio 跟进 SDK

SQL中的全局变量和局部变量(@@/@)

核能气质少年 提交于 2019-12-06 08:25:41
在SQL中,我们常常使用临时表来存储临时结果,对于结果是一个集合的情况,这种方法非常实用,但当结果仅仅是一个数据或者是几个数据时,还要去建一个表,显得就比较麻烦,另外,当一个SQL语句中的某些元素经常变化时,比如选择条件,(至少我想)应该使用局部变量。当然MS SQL Server的全局变量也很有用。 >>>>局部变量 声明:DECLARE @local_variable data_type @local_variable 是变量的名称。变量名必须以 at 符 (@) 开头。data_type 是任何由系统提供的或用户定义的数据类型。变量不能是 text、ntext 或 image 数据类型。 示例: use master declare @SEL_TYPE char(2) declare @SEL_CUNT numeric(10) set @SEL_TYPE = 'U'/*user table*/ set @SEL_CUNT = 10 /*返回系统中用户表的数目*/ select @SEL_CUNT = COUNT(*) from sysobjects where type = @SEL_TYPE select @SEL_CUNT as 'User table ''s count' 如果要返回系统表的数目,可以用set @SEL_TYPE = 'S'

heap和stack的区别?

旧时模样 提交于 2019-12-06 02:01:50
1、申请方式    stack:由系统自动分配。例如,声明在函数中一个局部变量 int b; 系统自动在栈中为 b 开辟空间   heap:需要程序员自己申请,并指明大小,在 c 中 malloc 函数,对于 Java 需要手动 new Object()的形式开辟 2、申请后系统的响应   stack:只要栈的剩余空间大于所申请空间,系统将为程序提供内存,否则将报异常提示栈溢出。   heap:首先应该知道操作系统有一个记录空闲内存地址的链表,当系统收到程序的申请时,会遍历该链表,寻找第一个空间大于所申请空间的堆结点,然后将该结点从空闲结点链表中删除,并将该结点的空间分配给程序。另外,由于找到的堆结点的大小不一定正好等于申请的大小,系统会自动的将多余的那部分重新放入空闲链表中。 3、申请大小的限制   stack:栈是向低地址扩展的数据结构,是一块连续的内存的区域。这句话的意思是栈顶的地址和栈的最大容量是系统预先规定好的,在 WINDOWS 下,栈的大小是 2M(也有的说是 1M,总之是一个编译时就确定的常数),如果申请的空间超过栈的剩余空间时,将提示 overflow。因此,能从栈获得的空间较小。   heap:堆是向高地址扩展的数据结构,是不连续的内存区域。这是由于系统是用链表来存储的空闲内存地址的,自然是不连续的,而链表的遍历方向是由低地址向高地址

【Linux】C字节对齐

大兔子大兔子 提交于 2019-12-05 22:18:42
什么是对齐,以及为什么要对齐 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。 对齐的作用和原因 各个硬件平台对存储空间的处理上有很大的不同。一些平台对某些特定类型的数据只能从某些特定地址开始存取。其他平台可能没有这种情况,但是最常见的是如果不按照适合其平台要求对数据存放进行对齐,会在存取效率上带来损失。比如有些平台每次读都是从偶地址开始,如果一个int型(假设为 32 位系统)存放在偶地址开始的地方,那么一个读周期就可以读出,而如果存放在奇地址开始的地方,就可能会需要2个读周期,并对两次读出的结果的高低字节进行拼凑才能得到该int数据。显然在读取效率上下降很多。这也是空间和时间的博弈。 对齐的实现 通常,我们写程序的时候,不需要考虑对齐问题。编译器会替我们选择适合目标平台的对齐策略。当然,我们也可以通过给编译器传递预编译指令而改变对指定数据的对齐方法。 但是,正因为我们一般不需要关心这个问题,所以当编辑器对数据存放做了对齐,而我们不了解的话,常常会对一些问题感到迷惑。最常见的就是struct数据结构的sizeof结果,出乎意料。为此,我们需要对对齐算法所了解。 对齐的算法

Android Studio奇淫巧技

杀马特。学长 韩版系。学妹 提交于 2019-12-05 20:00:45
目录 3.1 Android Studio使用初探 Project面板 Stucture面板 Android Monitor Keymap Tip of the Day 快速查找 Search Action 演示模式 3.2 Android Studio使用进阶 操作与导航 快速重构 代码模板 内置模板 自定义代码注释模板 代码分析 在Android Studio中进行版本管理 3.3 Android Studio新功能 项目模板 ThemeEditor Image Asset&&Vector Asset Android Monitor Instant Run Productivity Guide 3.4 Android Studio插件 Ignore 自动生成代码类插件 主题插件 3.5 Android Studio资源网站 Android Studio中文社区 Android Studio问答社区 3.1 Android Studio使用初探 本人感觉这章对刚使用 Android Studio的初学者来说很有用,里面很多技巧需要自己慢慢摸索,建议养成使用快捷键的习惯,久而久之,会给你的编程带来极大的效率。本章作者主要以Mac的快捷键来介绍的,文章最后会给出快捷键附录 Project面板 在Android Studio最左边可以找到Project标签,这里是开发者管理项目的地方

强类型语言和弱类型语言

Deadly 提交于 2019-12-05 19:14:57
参考文章: https://blog.csdn.net/sinolzeng/article/details/40742757 编译型和解释型   我们先看看编译型,其实它和汇编语言是一样的:也是有一个负责翻译的程序来对我们的源代码进行转换,生成相对应的可执行代码。这个过程说得专业一点,就成为编译(Compile),而负责编译的程序自然就称为编译器(Compiler)。   如果我们写的程序代码都包含在一个源文件中,那么通常编译后就会直接生成一个可执行文件,我们就可以直接运行了。但对于一个比较复杂的项目,为了方便管理,我们通常把代码分散在各个源文件中,作为不同的模块来组织。这时编译各个文件时就会生成目标文件(Ojbect file)而不是前面说的可执行文件。一般一个源文件的编译都会对应一个目标文件。这些目标文件里的内容基本上以及可执行代码了,但由于只是整个项目的一部分,所以我们还不能直接运行。   待所有的源文件的编译都大功告成,我们就可以最后把这些半成品的目标文件“打包”成一个可执行文件了,这个工作由另一个程序负责完成,由于词过程好像是把包含可执行代码的目标文件连接装配起来,所以有称为链接(Link),而负责链接的程序就叫链接程序(Linker)。链接程序除了链接目标文件外,可能还有各种资源,像图标文件啊、声音文件啊什么的,还要负责去除目标文件之间的冗余重复代码,等待

WIN10系统JAVA环境配置

别来无恙 提交于 2019-12-05 16:28:57
1.下载并安装JDK   jdk-8u131-windows-x64.exe 2.配置环境变量路径   路径:此电脑--属性--高级系统设置--高级--环境变量 3.新建系统变量JAVA_HOME 和CLASSPATH 变量名:   JAVA_HOME 变量值:C:\Program Files\Java\jdk1.8.0_131(JDK安装目录)   CLASSPATH 变量值:%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar; 4. 选择“系统变量”中变量名为“Path”的环境变量,新建如下变量   %JAVA_HOME%\bin  (配置后command下,javac命令有效)   %JAVA_HOME%\jre\bin 来源: https://www.cnblogs.com/24Key/p/11933173.html