Linux CentOS7 笔记_centos7 lost+found-程序员宅基地

技术标签: 笔记  linux  

下载

下载地址

https://www.bilibili.com/video/BV1dW411M7xL?from=search&seid=6818366384308552946
在这里插入图片描述

关于 Linux

Linux 特点

免费,开源,高效,稳定,处理高并发非常强悍

硬盘分区

swap分区:交换分区,当系统内存不足时,会暂时使用swap分区

Linux文件目录结构

/bin:Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。
/boot:这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。
/dev :Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。
/etc:Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。
/home:用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
/lib:这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。
/lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
/media:linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。
/mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。
/opt:opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
/proc:proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
/root:该目录为系统管理员,也称作超级权限者的用户主目录。
/sbin:s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。
/selinux:这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
/srv: 该目录存放一些服务启动之后需要提取的数据。
/sys:这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。
sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。
该文件系统是内核设备树的一个直观反映。
当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
/tmp:tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。
/usr: usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。
/usr/bin:系统用户使用的应用程序。
/usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。
/usr/src:内核源代码默认的放置目录。
/var:var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
/run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。

  • 用户配置文件(用户信息):/etc/passwd
  • 口令和配置文件:/etc/shadow
  • 组配置文件信息:/etc/group
  • 鸟哥的LINUX私房菜_基础学习篇(第三版) :
    鸟哥的LINUX私房菜_基础学习篇(第三版)在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

软件

XShell,XFtp

快捷键

5yy 复制下面5行, p 粘贴
dd 删除行

Linux 常用操作命令

技巧

https://www.linuxidc.com/Linux/2020-03/162522.htm

  1. 使用tab键进行自动完成
    使用Tab键进行自动完成
    也可以在完成命令时使用Tab键。

  2. 切换回上一个工作目录 cd -

  3. 返回主目录 cd ~
    但是,您也可以仅使用cd返回主目录:cd

  4. 列出目录的内容 ll

  5. 在一个命令中运行多个命令
    假设您必须一个接一个地运行几个命令。您是否在等待第一个命令完成运行,然后执行下一个命令?
    那么,您可以使用;分隔符。这样,您可以在一行中运行许多命令。无需等待先前的命令完成后再执行其他任务。
    command_1; command_2; command_3

  6. 仅在上一个命令成功的情况下,才能在一个命令中运行多个命令
    在上一个命令中,您了解了如何在一个命令中运行多个命令以节省时间。但很多时候你必须确保命令不会失败才能执行下一条命令,那怎么半?
    比如您要构建代码,然后在构建成功的情况下才接着运行make。
    在这种情况下,可以使用&&分隔符。 &&确保下一条命令仅在上一条命令成功执行时运行。
    command_1 && command_2
    此命令的一个很好的例子是当您使用sudo apt update && sudo apt upgrade升级系统时。

  7. 轻松搜索您使用过的命令
    只需使用ctrl + r键即可启动反向搜索并键入命令的某些部分。它将查询历史记录,并向您显示与搜索词匹配的命令。
    ctrl + r 搜索词
    默认情况下,它将仅显示一个结果。要查看更多与您的搜索字词匹配的结果,您将不得不反复使用ctrl + r。要退出反向搜索,只需使用Ctrl + C。
    在命令历史记录中进行反向搜索

  8. 解除Linux终端意外冻结的Ctrl + S
    在很多类Unix 的系统上,Ctrl-S 都有特殊的含义:它会“冻结”终端(它曾经被用来暂停快速滚动)。因为“保存”一般也是用这个快捷键,所以经常会有人不假思索地按下这个快捷键,结果大多数人都会被搞糊涂(我也经常犯这个错误)。解冻终端是用Ctrl-Q,所以如果你忽然发觉终端看起来被冻结了,试一下Ctrl-Q,看能不能释放它。

  9. 移至行首或行尾
    假设您正在键入一个长命令,并且在途中您意识到必须在开始时进行一些更改。 您将使用几次向左键击移动到行的开头。 并且类似地进行到该行的末尾。
    当然,您可以在此处使用Home和End键,但是也可以使用Ctrl + A转到行的开头,并使用Ctrl + E转到结尾。

  10. 实时读取日志文件
    在需要在应用程序运行时分析日志的情况下,可以将tail命令与-F选项一起使用。
    tail -F linuxidc_log
    等同于--follow=name --retry,根据文件名进行追踪,并保持重试,即该文件被删除或改名后,如果再次创建相同的文件名,会继续追踪。

  11. 读取压缩日志而不解压缩
    服务器日志通常被gzip压缩以节省磁盘空间。这给分析日志的开发人员或系统管理员带来了一个问题。您可能必须将其scp到本地,然后提取它来访问文件,因为有时您没有提取日志的写权限。
    值得庆幸的是,在这种情况下,z命令可以帮助您。 z命令提供了用于处理日志文件(例如less,cat,grep等)的常规命令的替代方法。
    这样您就可以使用zless,zcat,zgrep等命令查看压缩包的内容,甚至不必显式提取压缩文件。

  12. 使用 less 读取文件
    less -N linuxidc.txt
    //按下v键来编辑文件
    //退出编辑器后,你可以继续用less浏览了
    您可以在更少的范围内搜索字词,按页移动,高亮与行号等。

  13. 使用!$重新使用上一个命令中的最后一项
    更好的方法您可以使用使用alt + . 。 在最后一个命令的选项之间来回移动的次数。

  14. !!重用当前命令中的上一个命令。
    您可以使用!!调用前面的整个命令。当您必须运行一个命令并意识到它需要root特权时,这一点特别有用。
    一个快速 sudo !! 省去了很多击键。

  15. 使用别名来修正错别字
    您可能已经知道Linux中的别名命令是什么。你能做的是,用它们来修正打字错误。
    例如,您可能经常将grep输入为gerp。如果您以这种方式在您的bashrc中放置一个别名:
    alias gerp=grep
    这样,您无需再次输入命令。

  16. 在Linux终端中复制粘贴
    这一点有点模棱两可,因为它取决于Linux和终端应用程序。但通常,您应该能够使用以下快捷键复制粘贴命令:
    选择要复制的文本,然后右键单击以粘贴(在Putty和其他Windows SSH客户端中有效)
    选择要复制的文本,然后单击鼠标中键(滚动按钮)以进行粘贴
    Ctrl + Shift + C表示复制,Ctrl + Shift + V表示粘贴

  17. 终止正在运行的命令/进程
    这可能太明显了。如果有一个命令正在运行运行,并且您想退出该命令,则可以按Ctrl + C停止该正在运行的命令。

  18. 清空文件而不删除它
    如果只想清空文本文件的内容而不删除文件本身,则可以使用类似于以下命令:
    > 文件名

  19. 查找是否有包含特定文本的文件
    在Linux命令行中有多种搜索和查找方法。但是,当您只想查看是否有包含特定文本的文件时,可以使用以下命令:
    grep -Pri要搜索的字符串 路径
    精通find命令。《如何使用find命令在Linux中查找文件》 见 https://www.linuxidc.com/Linux/2018-07/153205.htm

  20. 对任何命令都可使用帮助命令(help)
    比如bc命令的帮助:bc -help

用户操作
  • 添加用户:useradd [-d 指定目录/ -g 用户组名] 新的用户名 (不指定目录则默认创建在/home/目录下)
    添加密码/修改密码:passwd 用户名
    删除用户 :userdel [-r] 用户名 (-r 删除用户及用户家目录)
    查询用户: id 用户名
    切换用户:su - 用户名
  • 添加组:groupadd 组名
    删除组:grouodel 组名
    修改用户组:usermod -g 用户组 用户名
目录
  • 添加目录:mkdir [-p] 目录 (-p创建多级目录)
    删除目录:rmdir 目录 (只能删除空文件目录)
复制
  • 复制文件:(\)cp [-r] 文件 路径 (\ 表示强制覆盖,-r 复制整个目录)
查看文件

在这里插入图片描述

cat
  • cat -n 文件名 | more (-n 显示行号,"|" 管道符,more 分页显示)
    “|” 管道符,表示将前一个命令的处理结果输出传递给后面的命令处理

more 常用操作命令

指令 作用
Enter 向下n行,需要定义。默认为1行
Ctrl+F 向下滚动一屏
空格键 向下滚动一屏
Ctrl+B 返回上一屏
= 输出当前行的行号
:f 输出文件名和当前行的行号
V 调用vi编辑器
!命令 调用Shell,并执行命令
q 退出more
less可用于查看大文件

> 指令和 >> 指令

  • > 输出重定向:会将原来的文件的内容覆盖
    >> 追加:不会覆盖原来文件的内容,而是追加到文件的尾部。
cal日历
head:head [-n 5] 文件 (输出文件前5行,默认10行)
tail:追踪文档
  • tail [-n 5] 文件 (输出文件后5行,默认10行)
    tail -f 文件 实时追踪该文档的所有更新 (常用)
history:显示历史命令

!数字 执行标号为 n 的指令

find 查找
  • find 查找路径 -name/-user 名称
    如果要进行不区分大小写的搜索,请使用-iname更改-name选项
    find / -size +20M 查找大于20M的文件(+n 大于n,-n 小于n,n 等于 n,大写M)
    过滤查找:grep [-n/-i] 查找内容 源文件 (-n 显示行号,-i 不区分大小写)
参数 作用
-type f:常规文件,d:目录,l:符号链接,c:字符设备,b:块设备,p:命名管道(FIFO),s:套接字
压缩和解压缩
  • 压缩:gzip 文件名 (压缩后不会保留原文件)
    解压缩:gunzip 文件名.gz

zip/unzip 指令
zip用于压缩文件,unzip 用于解压的,这个在项目打包发布中很有用的

  • zip [选项]XXX.zip 将要压缩的内容(功能描述:压缩文件和目录的命令)

    • zip常用选项
      -r:递归压缩,即压缩目录
  • unzip [选项]XXX.zip(功能描述:解压缩文件)

    • unzip的常用选项
      -d <目录> 指定解压后文件的存放目录

tar指令
tar指令是打包指令,最后打包后的文件是.tar.gz 的文件。

  • 打包:tar -zcvf XXX.tar.gz 打包的内容(功能描述:打包目录,压缩后的文件格式.tar.gz)
    解包:tar -zxvf XXX.tar.gz -C [解包的目录] (-C的作用:解压到指定目录,否则会在当前目录下也解压)
  • 选项说明
    在这里插入图片描述
磁盘情况查询
  • 系统整体磁盘使用情况:df -h
  • 查询制定目录的磁盘使用情况:du [选项] /目录
选项 作用
-s 指定目录占用大小汇总
-h 带计量单位
-a 含文件
–max-depth=1 子目录深度
-c 列出明细的同时,增加汇总值

统计/home文件夹下文件的个数:ls -l(R) /home | grep "^-" | wc -l (-R 包括子目录)
统计/home文件夹下目录的个数:ls -l(R) /home | grep "^d" | wc -l (-R 包括子目录)

Linux网络配置
  • 指定固定的ip
    直接修改配置文件来指定IP,并可以连接到外网(程序员推荐),编辑
    vi /etc/sysconfig/network-scripts/ifcfg-eth0
    在这里插入图片描述
    重启网络服务:service network restart
Linux查看进程

ps

  • 显示所有包含其他使用者的行程:ps -aux | less
    查看sshd的父进程:ps -ef | grep ssh
    在这里插入图片描述
    终止进程:kill [选项] 进程号
选项 作用
-9 强制终止进程
  • 根据名称终止进程及子进程:killall 进程名
  • 查看进程树:pstree -pu
选项 作用
-p 显示进程的 PID
-u 显示进程的所属用户

top
top [选项]

选项 作用
-d 秒数 指定top命令每隔几秒更新,默认是3秒在top命令的交互模式当中可以执行的命令
-i 使top不显示任何闲置或者僵死进程
-p 通过指定监控进程id来仅仅监控某个进程的状态
  • 案例 1.监视特定用户 top:输入此命令,按回车键,查看执行的进程。 u:然后输入“u”回车,再输入用户名,即可
  • 案例 2:终止指定的进程。 top:输入此命令,按回车键,查看执行的进程。 k:然后输入“k”回车,再输入要结束的进程 ID 号
  • 案例 3:指定系统状态更新的时间(每隔 10 秒自动更新, 默认是 3 秒): bash> top -d 10

在这里插入图片描述

Linux监控网络状态

netstat -anp
-an 按一定顺序排列输出
-p 显示哪个进程在调用

时区修改

tzselect 查看时区

  • 更改每个用户的时区
    Linux 用户一个多用户系统,每个用户都可以配置自己所需的时区,你可以为自己新增一个 TZ 环境变量:
    export TZ='Asia/Shanghai'

  • 执行完成之后需要重新登录系统或刷新 ~/.bashrc 生效。
    source ~/.bashrc
    更改Linux系统时区
    要更改 Linux 系统整个系统范围的时区可以使用如下命令:
    sudo rm -f /etc/localtime
    sudo ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
    注意:/usr/share/zoneinfo/Asia/Shanghai 中的具体时区请用自己获取到的 TZ 值进行替换。

  • 使用Systemd更改Linux系统时区
    如果你使用的 Linux 系统使用 Systemd,还可以使用 timedatectl 命令来更改 Linux 系统范围的时区。在 Systemd 下有一个名为 systemd-timedated 的系统服务负责调整系统时钟和时区,我们可以使用 timedatectl 命令对此系统服务进行配置。
    sudo timedatectl set-timezone 'Asia/Shanghai'
    参考链接 https://www.linuxprobe.com/linux-time.html

rpm 和 yum

修改镜像
rpm

  • 查询 fiefox 安装的rpm软件包:rpm -qa | grep firefox
    查询软件包是否安装 :rpm -q 软件包名
    查询软件包信息:rpm -q firefox rpm -qi 软件包名
    查询软件包安装目录:rpm -ql 软件包名
    查询文件所属的软件包:rpm -qf 文件全路径名
  • 安装rpm包:rpm -ivh rpm包全路径名称
    i:install 安装 ,v:verbose 提示,h:hash 进度条
    自动安装所需依赖:yum localinstall wps-offcie-10.1.0.6634-1.i686.rpm
  • 卸载安装包:rpm -e [--nodeps] rpm包名称 (–nodeps 强制删除)

yum

  • 到yum服务器查询:yum list | grep chrome
镜像

http://chinanet.mirrors.ustc.edu.cn/help/centos.html
https://blog.csdn.net/qq_43736514/article/details/100078901

Linux 查看端口
#查看开放的端口号
firewall-cmd --list-all
#启用默认服务的(http)
firewall-cmd --add-service=http --permanent
#开放端口
firewall-cmd --add-port=8080/tcp --permanent
#重新加载一下设置,很关键~不然也不管用
firewall-cmd –-reload
Linux服务管理
  • service 服务名 [start | stop | restart | reload | status]
    测试连接:telnet ip地址 端口号

  • 查看服务名:setup
    在这里插入图片描述

Linux的运行级别

开机流程
在这里插入图片描述
在这里插入图片描述
修改运行级别:vim /etc/inittab
在这里插入图片描述

  • 给每个服务的各个运行级别设置自启动/关闭: chkconfig --list | grep 服务名
  • 查看某个服务: chkconfig 服务名 --list
  • 设置某个服务开机开关:chkconfig --level 5 服务名 on/off

找回丢失密码
CentOS 7.xx不同

开机->在引导时输入回车键~>看到-一个界面输入e->看到一个新的界面,选中第二行(编辑内核)在输入e-> 在这行最后输入 1,再输入回车键->再次输入b,这时就会进入到单用户模式。
这时,我们就进入到单用户模式,使用passwd指令来修改root密码。

组管理和权限管理(重难点)

  • 修改文件所有者:chown 用户名 文件名
    修改文件所在组:chgrp [-R] 组名 文件名 (-R:如果是目录则使其下所有子文件或目录递归生效)
    修改用户的所有者和所有组:chown newowner:newgroup file
    修改用户所在组:usermod -g 组名 用户名
    修改该用户登陆的初始目录:usermod -d 目录名 用户名
权限的基本介绍

ls -l 中显示的内容如下:
-rwxrw-r--1 root root 1213 Feb 2 09:39 abc

0-9位说明
1)第0位确定文件类型(d,-,1,c,b)
2)第1-3 位确定所有者(该文件的所有者)拥有该文件的权限。—User
3)第4-6位确定所属组(同用户组的)拥有该文件的权限,–Group.
4)第7-9位确定其他用户拥有该文件的权限—Other
在这里插入图片描述

rwx权限

  • rwx 作用到文件
    1)[r]代表可读(read):可以读取,查看
    2)[w]代表可写(write):可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件.
    3)[x]代表可执行(execute):可以被执行
  • rwx 作用到目录
    1)[r]代表可读(read):可以读取,ls 查看目录内容
    2)[w]代表可写(write):可以修改,目录内创建+删除+重命名目录
    3)[x]代表可执行(execute):可以进入该目录

修改权限-chmod
基本说明:通过chmod指令,可以修改文件或者目录的权限10.10.2

第一种方式:+、-、=变更权限。u:所有者 g:所有组 o:其他人 a:所有人(u、g、o的总和)
1)chmod u=rwx,g=rx,o=x 文件目录名
2)chmod o+w 文件目录名 (给其他组添加写)
3)chmod a-x文件目录名 (给所有人减少执行)
第二种方式:通过数字变更权限规则:r=4 w=2 x=1,rwx=4+2+1=7
chmod u=rwx,g=rx,o=x 文件目录名
相当于 chmod 751 文件目录名

任务调度

crontab [选项]

选项 作用
-e 编辑crontab定时任务
-l 查看crontab任务
-r 删除当前用户所有的crontab任务
service crond restart 重启任务调度

设置任务调度文件:
/etc/crontab 设置个人任务调度。
执行 crontab –e 命令。
接着输入任务到调度文件
如:*/1 * * * * ls –l /etc/ > /tmp/to.txt
意思说每小时的每分钟执行 ls –l /etc/ > /tmp/to.txt 命令

Linux磁盘分区、挂载

1)mbr 分区: 1.最多支持四个主分区 2.系统只能安装在主分区 3.扩展分区要占一个主分区 4.MBR 最大只支持 2TB,但拥有最好的兼容性
2)gtp 分区: 1.支持无限多个主分区(但操作系统可能限制,比如 windows 下最多 128 个分区) 2.最大支持 18EB 的大容量(1EB=1024 PB,1PB=1024 TB ) 3.windows7 64 位以后支持 gtp


主分区,逻辑分区

在这里插入图片描述
lsblk -f查看分区
在这里插入图片描述

如何添加一块硬盘

  1. 虚拟机添加硬盘
  2. 分区 fdisk /dev/sdb
  3. 格式化 mkfs -t ext4 /dev/sdb1
  4. 挂载 先创建一个 /home/newdisk , 挂载 mount /dev/sdb1 /home/newdisk
  5. 设置可以自动挂载(永久挂载,当你重启系统,仍然可以挂载到 /home/newdisk) 。
    vim /etc/fstab
    添加:/dev/sdb1 /home/newdisk ext4 defaults 0 0

具体步骤

  • 虚拟机增加硬盘步骤 1
    在【虚拟机】菜单中,选择【设置】,然后设备列表里添加硬盘,然后一路【下一步】,中间只有选择磁盘大小的地方需要修改,至到完成。然后重启系统(才能识别)!
    在这里插入图片描述
  • 虚拟机增加硬盘步骤 2
    分区命令 fdisk /dev/sdb
    开始对/sdb 分区
    •m 显示命令列表
    •p 显示磁盘分区 同 fdisk –l
    •n 新增分区
    •d 删除分区
    •w 写入并退出
    说明: 开始分区后输入 n,新增分区,然后选择 p ,分区类型为主分区。两次回车默认剩余全
    部空间。最后输入 w 写入分区并退出,若不保存退出输入 q。
    在这里插入图片描述
  • 虚拟机增加硬盘步骤 3
    格式化磁盘
    分区命令: mkfs -t ext4 /dev/sdb1
    其中 ext4 是分区类型
  • 虚拟机增加硬盘步骤 4
    挂载: 将一个分区与一个目录联系起来,
    •mount 设备名称 挂载目录
    •例如: mount /dev/sdb1 /newdisk
    •umount 设备名称 或者 挂载目录
    •例如: umount /dev/sdb1 或者 umount /newdisk
  • 虚拟机增加硬盘步骤 5
    永久挂载: 通过修改/etc/fstab 实现挂载添加完成后 执行 mount –a 即刻生效
    在这里插入图片描述

Java的环境搭建

jdk,tomcat,mysql,eclipse

jdk 版本 1.8.0_144

  1. 安装、解压jdk https://www.oracle.com/java/technologies/downloads/#java8
  2. 配置环境变量:vim /etc/profile
  3. 在最后插入
export JAVA_HOME=/usr/lib/jvm/jdk-8u301-linux-x64
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
  1. 退出用户,重新登陆生效

Tomcat-9.0.40

http://tomcat.apache.org/download-90.cgi

  1. 安装、解压Tomcat
  2. 运行 bin 下面的 startup.sh:./startup.sh,本地可访问
  3. 开放端口:firewall-cmd --zone=public --add-port=8080/tcp --permanent
    或者关闭防火墙service firewalld stop

–zone=public:表示作用域为公共的;
–add-port=8080/tcp:添加tcp协议的端口8080;
–permanent:永久生效,如果没有此参数,则只能维持当前服务生命周期内,重新启动后失效;

Mysql-8.0.22-el7-x86_64

mysql无法输入中文字符时,修改/etc/my.cnf,将 [mysql] 和 [client] 的
default-character-set=utf8 注释掉即可。。

Maven 安装

https://maven.apache.org/download.cgi
解压,vim /etc/profile 文件,添加以下

export MAVEN_HOME=/opt/apache-maven-3.6.3
export PATH=$PATH:$MAVEN_HOME/bin

通过 source /etc/profile 让文件立刻生效
mvn -v 查看

git 安装

yum -y install git

安装docker

参考文档:
https://help.aliyun.com/document_detail/60742.html?spm=a2c4g.11174283.6.548.24c14541ssYFIZ

  • 第一步:安装必要的一些系统工具
    yum install -y yum-utils device-mapper-persistent-data lvm2
  • 第二步:添加软件源信息
    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
  • 第三步:更新并安装Docker-CE
    yum makecache fast
    yum -y install docker-ce
  • 第四步:开启Docker服务
    service docker start
  • 第五步、测试是否安装成功
    docker -v

Java 并发编程的艺术

  • 使用vmstat可以测量上下文切换的次数
    CS(Content Switch)表示上下文切换的次数
  • volatile

有volatile变量修饰的共享变量进行写操作的时候会多出第二行汇编代码,通过查IA-32架构软件开发者手册可知,Lock前缀的指令在多核处理器下会引发了两件事情。
1)将当前处理器缓存行的数据写回到系统内存。
2)这个写回内存的操作会使在其他CPU里缓存了该内存地址的数据无效

  • synchronize

synchronized用的锁是存在Java对象头里的。如果对象是数组类型,则虚拟机用3个字宽(Word)存储对象头,如果对象是非数组类型,则用2字宽存储对象头。在32位虚拟机中,1字宽等于4字节,即32bit
在这里插入图片描述

  • 偏向锁
    在这里插入图片描述

  • 轻量锁
    在这里插入图片描述

  • 锁的优缺点的对比
    在这里插入图片描述

  • 处理器如何实现原子操作

第一个机制是通过总线锁保证原子性
第二个机制是通过缓存锁定来保证原子性

  • CAS实现原子操作的三大问题

1)ABA问题
2)循环时间长开销大
3)只能保证一个共享变量的原子操作

  • 在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递

  • 指令重排序
    在这里插入图片描述

  • JMM属于语言级的内存模型,它确保在不同的编译器和不同的处理器平台之上,通过禁止特定类型的编译器重排序和处理器重排序,为程序员提供一致的内存可见性保证

深入理解Java虚拟机

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/rainbow0518/article/details/110232355

智能推荐

使用nginx解决浏览器跨域问题_nginx不停的xhr-程序员宅基地

文章浏览阅读1k次。通过使用ajax方法跨域请求是浏览器所不允许的,浏览器出于安全考虑是禁止的。警告信息如下:不过jQuery对跨域问题也有解决方案,使用jsonp的方式解决,方法如下:$.ajax({ async:false, url: 'http://www.mysite.com/demo.do', // 跨域URL ty..._nginx不停的xhr

在 Oracle 中配置 extproc 以访问 ST_Geometry-程序员宅基地

文章浏览阅读2k次。关于在 Oracle 中配置 extproc 以访问 ST_Geometry,也就是我们所说的 使用空间SQL 的方法,官方文档链接如下。http://desktop.arcgis.com/zh-cn/arcmap/latest/manage-data/gdbs-in-oracle/configure-oracle-extproc.htm其实简单总结一下,主要就分为以下几个步骤。..._extproc

Linux C++ gbk转为utf-8_linux c++ gbk->utf8-程序员宅基地

文章浏览阅读1.5w次。linux下没有上面的两个函数,需要使用函数 mbstowcs和wcstombsmbstowcs将多字节编码转换为宽字节编码wcstombs将宽字节编码转换为多字节编码这两个函数,转换过程中受到系统编码类型的影响,需要通过设置来设定转换前和转换后的编码类型。通过函数setlocale进行系统编码的设置。linux下输入命名locale -a查看系统支持的编码_linux c++ gbk->utf8

IMP-00009: 导出文件异常结束-程序员宅基地

文章浏览阅读750次。今天准备从生产库向测试库进行数据导入,结果在imp导入的时候遇到“ IMP-00009:导出文件异常结束” 错误,google一下,发现可能有如下原因导致imp的数据太大,没有写buffer和commit两个数据库字符集不同从低版本exp的dmp文件,向高版本imp导出的dmp文件出错传输dmp文件时,文件损坏解决办法:imp时指定..._imp-00009导出文件异常结束

python程序员需要深入掌握的技能_Python用数据说明程序员需要掌握的技能-程序员宅基地

文章浏览阅读143次。当下是一个大数据的时代,各个行业都离不开数据的支持。因此,网络爬虫就应运而生。网络爬虫当下最为火热的是Python,Python开发爬虫相对简单,而且功能库相当完善,力压众多开发语言。本次教程我们爬取前程无忧的招聘信息来分析Python程序员需要掌握那些编程技术。首先在谷歌浏览器打开前程无忧的首页,按F12打开浏览器的开发者工具。浏览器开发者工具是用于捕捉网站的请求信息,通过分析请求信息可以了解请..._初级python程序员能力要求

Spring @Service生成bean名称的规则(当类的名字是以两个或以上的大写字母开头的话,bean的名字会与类名保持一致)_@service beanname-程序员宅基地

文章浏览阅读7.6k次,点赞2次,收藏6次。@Service标注的bean,类名:ABDemoService查看源码后发现,原来是经过一个特殊处理:当类的名字是以两个或以上的大写字母开头的话,bean的名字会与类名保持一致public class AnnotationBeanNameGenerator implements BeanNameGenerator { private static final String C..._@service beanname

随便推点

二叉树的各种创建方法_二叉树的建立-程序员宅基地

文章浏览阅读6.9w次,点赞73次,收藏463次。1.前序创建#include&lt;stdio.h&gt;#include&lt;string.h&gt;#include&lt;stdlib.h&gt;#include&lt;malloc.h&gt;#include&lt;iostream&gt;#include&lt;stack&gt;#include&lt;queue&gt;using namespace std;typed_二叉树的建立

解决asp.net导出excel时中文文件名乱码_asp.net utf8 导出中文字符乱码-程序员宅基地

文章浏览阅读7.1k次。在Asp.net上使用Excel导出功能,如果文件名出现中文,便会以乱码视之。 解决方法: fileName = HttpUtility.UrlEncode(fileName, System.Text.Encoding.UTF8);_asp.net utf8 导出中文字符乱码

笔记-编译原理-实验一-词法分析器设计_对pl/0作以下修改扩充。增加单词-程序员宅基地

文章浏览阅读2.1k次,点赞4次,收藏23次。第一次实验 词法分析实验报告设计思想词法分析的主要任务是根据文法的词汇表以及对应约定的编码进行一定的识别,找出文件中所有的合法的单词,并给出一定的信息作为最后的结果,用于后续语法分析程序的使用;本实验针对 PL/0 语言 的文法、词汇表编写一个词法分析程序,对于每个单词根据词汇表输出: (单词种类, 单词的值) 二元对。词汇表:种别编码单词符号助记符0beginb..._对pl/0作以下修改扩充。增加单词

android adb shell 权限,android adb shell权限被拒绝-程序员宅基地

文章浏览阅读773次。我在使用adb.exe时遇到了麻烦.我想使用与bash相同的adb.exe shell提示符,所以我决定更改默认的bash二进制文件(当然二进制文件是交叉编译的,一切都很完美)更改bash二进制文件遵循以下顺序> adb remount> adb push bash / system / bin /> adb shell> cd / system / bin> chm..._adb shell mv 权限

投影仪-相机标定_相机-投影仪标定-程序员宅基地

文章浏览阅读6.8k次,点赞12次,收藏125次。1. 单目相机标定引言相机标定已经研究多年,标定的算法可以分为基于摄影测量的标定和自标定。其中,应用最为广泛的还是张正友标定法。这是一种简单灵活、高鲁棒性、低成本的相机标定算法。仅需要一台相机和一块平面标定板构建相机标定系统,在标定过程中,相机拍摄多个角度下(至少两个角度,推荐10~20个角度)的标定板图像(相机和标定板都可以移动),即可对相机的内外参数进行标定。下面介绍张氏标定法(以下也这么称呼)的原理。原理相机模型和单应矩阵相机标定,就是对相机的内外参数进行计算的过程,从而得到物体到图像的投影_相机-投影仪标定

Wayland架构、渲染、硬件支持-程序员宅基地

文章浏览阅读2.2k次。文章目录Wayland 架构Wayland 渲染Wayland的 硬件支持简 述: 翻译一篇关于和 wayland 有关的技术文章, 其英文标题为Wayland Architecture .Wayland 架构若是想要更好的理解 Wayland 架构及其与 X (X11 or X Window System) 结构;一种很好的方法是将事件从输入设备就开始跟踪, 查看期间所有的屏幕上出现的变化。这就是我们现在对 X 的理解。 内核是从一个输入设备中获取一个事件,并通过 evdev 输入_wayland

推荐文章

热门文章

相关标签