Linux_实用指令
1 指定运行级别1.1基本介绍
运行级别说明:
0 :关机
1 :单用户【找回丢失密码】
2:多用户状态没有网络服务
3:多用户状态有网络服务
4:系统未使用保留给用户
5:图形界面
6:系统重启
常用运行级别是 3 和 5 ,也可以指定默认运行级别
1init [0123456]
1.2应用实例
通过 init 来切换不同的运行级别,比如动 5-3 , 然后关机。
1init 3
使用init切换运行级别需要root权限,且切换仅本次有效,重启后运行级别恢复默认!!如果需要每次开机都运行相应的级别,则需要修改配置文件,介绍如下。
1.3CentOS7 后运行级别说明
在 centos7 以前, /etc/inittab 文件中 ,进行了简化 ,如下:
123456multi-user.target: analogous to runlevel 3graphical.target: analogous to runlevel 5# To view current default target, run:systemctl get-default# T ...
Linux_用户管理
1 基本介绍Linux 系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统
2 添加用户2.1基本语法1useradd 用户名
2.2应用案例
案例 1:添加一个用户 milan, 默认该用户的家目录在 /home/milan
1useradd milan
2.3细节说明
当创建用户成功后,会自动的创建和用户同名的家目录
也可以通过 useradd -d 指定目录 新的用户名,给新创建的用户指定家目录
3 指定/修改密码3.1基本语法1passwd 用户名
3.2应用案例
给 milan 指定密码
1passwd milan
补充,显示当前用户所在的目录 :pwd
4 删除用户4.1基本语法1userdel 用户名
4.2应用案例
删除用户 milan,但是要保留家目录, userdel milan
删除用户以及用户主目录, 比如 tom, userdel -r tom
删除用户后,一般先保留家目录。
5 查询用户信息指令5.1基本 ...
Linux_开机、重启和用户登录注销
开机、重启和用户登录注销1.关机&重启命令1.1基本介绍
shutdown –h now 立该进行关机
shudown -h 1 “hello, 1 分钟后会关机了”
shutdown –r now 现在重新启动计算机
halt 关机,作用和上面一样.
reboot 现在重新启动计算机
sync 把内存的数据同步到磁盘.
1.2注意细节
不管是重启系统还是关闭系统,首先要运行 sync 命令,把内存中的数据写到磁盘中
目前的 shutdown/reboot/halt 等命令均已经在关机前进行了 sync (以防万一,最好还是先运行sync)
2.用户登录和注销2.1基本介绍
登录时尽量少用 root 帐号登录,因为它是系统管理员,最大的权限,避免操作失误。可以利用普通用户登录,登录后再用”su - 用户名’命令来切换成系统管理员身份.
在提示符下输入 logout 即可注销用户
2.2使用细节
logout 注销指令在图形运行级别无效,在运行级别 3 下有效.
Linux_Vi和Vim编辑器
1. 关于Vim
1.1 Vim的几种模式1.正常模式以 vim 打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中, 你可以使用『上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来处理档案内容, 也可以使用『复制、粘贴』来处理你的文件数据。
2.插入模式按下 i, I, o, O, a, A, r, R 等任何一个字母之后才会进入编辑模式, 一般来说按 i 即可.
3.命令行模式输入 esc 再输入:在这个模式当中, 可以提供你相关指令,完成读取、存盘、替换、离开 vim 、显示行号等的动作则是在此模式中达成的!
2. 启动Vim
vim -c cmd file: 在打开文件前,先执行指定的命令;
vim -r file: 恢复上次异常退出的文件;
vim -R file: 以只读的方式打开文件,但可以强制保存;
vim -M file: 以只读的方式打开文件,不可以强制保存;
vim -y num file: 将编辑窗口的大小设为num行;
vim + file: 从文件的末尾开始;
vim +num file: 从第num行开始;
vim + ...
Linux_目录结构
Linux 目录结构1.1基本介绍
linux 的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录“/”,然后在此目录下再创建其他的目录。
深刻理解 linux 树状文件目录是非常重要的
记住一句经典的话:在 Linux 世界里,一切皆文件(!!)
示意图
1.2 具体的目录结构
/bin [常用] (/usr/bin 、 /usr/local/bin)是 Binary 的缩写, 这个目录存放着最经常使用的命令
/sbin (/usr/sbin 、 /usr/local/sbin)s 就是 Super User 的意思,这里存放的是系统管理员使用的系统管理程序。
/home [常用]存放普通用户的主目录,在 Linux 中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名
/root [常用]该目录为系统管理员,也称作超级权限者的用户主目录
/lib 系统开机所需要最基本的动态连接共享库 ...
JVM-17-垃圾回收器
垃圾回收器GC分类与性能指标垃圾收集器没有在规范中进行过多的规定,可以由不同的厂商、不同版本的JVM来实现。
由于JDK的版本处于高速迭代过程中,因此Java发展至今已经衍生了众多的GC版本。
从不同角度分析垃圾收集器,可以将GC分为不同的类型。
Java不同版本新特性
语法层面:Lambda表达式、switch、自动拆箱装箱、enum
API层面:Stream API、新的日期时间、Optional、String、集合框架
底层优化:JVM优化、GC的变化、元空间、静态域、字符串常量池位置变化
垃圾收集器分类按线程数分按线程数分(垃圾回收线程数),可以分为串行垃圾回收器和并行垃圾回收器。
串行回收指的是在同一时间段内只允许有一个CPU用于执行垃圾回收操作,此时工作线程被暂停,直至垃圾收集工作结束。
在诸如单CPU处理器或者较小的应用内存等硬件平台不是特别优越的场合,串行回收器的性能表现可以超过并行回收器和并发回收器。所以,串行回收默认被应用在客户端的Client模式下的JVM中
在并发能力比较强的CPU上,并行回收器产生的停顿时间要短于串行回收器。
和串行回收相反,并行 ...
JVM-16-垃圾回收相关概念
垃圾回收相关概念System.gc()的理解在默认情况下,通过system.gc()者Runtime.getRuntime().gc() 的调用,会显式触发FullGC,同时对老年代和新生代进行回收,尝试释放被丢弃对象占用的内存。
然而system.gc() )调用附带一个免责声明,无法保证对垃圾收集器的调用。(不能确保立即生效)
JVM实现者可以通过system.gc() 调用来决定JVM的GC行为。而一般情况下,垃圾回收应该是自动进行的,无须手动触发,否则就太过于麻烦了。在一些特殊情况下,如我们正在编写一个性能基准,我们可以在运行之间调用System.gc()
代码演示是否出发GC操作
123456789101112131415161718/** * System.gc() * */public class SystemGCTest { public static void main(String[] args) { new SystemGCTest(); // 提醒JVM进行垃圾回收 System.gc(); ...
JVM-15-垃圾回收相关算法
标记阶段:引用计数算法在堆里存放着几乎所有的Java对象实例,在GC执行垃圾回收之前,首先需要区分出内存中哪些是存活对象,哪些是已经死亡的对象。只有被标记为己经死亡的对象,GC才会在执行垃圾回收时,释放掉其所占用的内存空间,因此这个过程我们可以称为垃圾标记阶段。
那么在JVM中究竟是如何标记一个死亡对象呢?简单来说,当一个对象已经不再被任何的存活对象继续引用时,就可以宣判为已经死亡。
判断对象存活一般有两种方式:引用计数算法和可达性分析算法。
引用计数算法(Reference Counting)比较简单,对每个对象保存一个整型的引用计数器属性。用于记录对象被引用的情况。
对于一个对象A,只要有任何一个对象引用了A,则A的引用计数器就加1;当引用失效时,引用计数器就减1。只要对象A的引用计数器的值为0,即表示对象A不可能再被使用,可进行回收。
优点:实现简单,垃圾对象便于辨识;判定效率高,回收没有延迟性。
缺点:它需要单独的字段存储计数器,这样的做法增加了存储空间的开销。
每次赋值都需要更新计数器,伴随着加法和减法操作,这增加了时间开销。引用计数器有一个严重的问题,即无法处理循环引用的 ...
JVM-14-垃圾回收概述
概念这次我们主要关注的是黄色部分,内存的分配与回收
什么是垃圾在提到什么是垃圾之前,我们先看下面一张图
从上图我们可以很明确的知道,Java 和 C++语言的区别,就在于垃圾收集技术和内存动态分配上,C语言没有垃圾收集技术,需要我们手动的收集。
垃圾收集,不是Java语言的伴生产物。早在1960年,第一门开始使用内存动态分配和垃圾收集技术的Lisp语言诞生。关于垃圾收集有三个经典问题:
哪些内存需要回收?
什么时候回收?
如何回收?
垃圾收集机制是Java的招牌能力,极大地提高了开发效率。如今,垃圾收集几乎成为现代语言的标配,即使经过如此长时间的发展,Java的垃圾收集机制仍然在不断的演进中,不同大小的设备、不同特征的应用场景,对垃圾收集提出了新的挑战,这当然也是面试的热点。
什么是垃圾?垃圾是指在运行程序中没有任何指针指向的对象,这个对象就是需要被回收的垃圾。
如果不及时对内存中的垃圾进行清理,那么,这些垃圾对象所占的内存空间会一直保留到应用程序的结束,被保留的空间无法被其它对象使用,甚至可能导致内存溢出。
磁盘碎片整理机械硬盘需要进行磁盘整理,同时还有坏道
大厂面试题蚂蚁 ...
JVM-13-StringTable
String的基本特性
String:字符串,使用一对 ”” 引起来表示
String s1 = “mogublog” ; // 字面量的定义方式
String s2 = new String(“moxi”);
string声明为final的,不可被继承
String实现了Serializable接口:表示字符串是支持序列化的。实现了Comparable接口:表示string可以比较大小
string在jdk8及以前内部定义了final char[] value用于存储字符串数据。JDK9时改为byte[]
为什么JDK9改变了结构String类的当前实现将字符存储在char数组中,每个字符使用两个字节(16位)。从许多不同的应用程序收集的数据表明,字符串是堆使用的主要组成部分,而且,大多数字符串对象只包含拉丁字符。这些字符只需要一个字节的存储空间,因此这些字符串对象的内部char数组中有一半的空间将不会使用。
我们建议改变字符串的内部表示clasš从utf - 16字符数组到字节数组+一个encoding-flag字段。新的Stri ...