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

智能推荐

《第一行代码》(第二版)广播的问题及其解决_代码里的广播错误-程序员宅基地

文章浏览阅读2.6k次,点赞5次,收藏13次。1)5.2.1弹出两次已连接或者未连接这是因为你同时打开了流量和WiFi,他就会发出两次广播。2)5.3.1中发送自定义广播问题标准广播未能弹出消息:Intent intent=new Intent("com.example.broadcasttest.MY_BROADCAST");sendBroadcast(intent);上述已经失效了。修改:Intent intent=new Intent("com.example.broadcasttest...._代码里的广播错误

K8s 学习者绝对不能错过的最全知识图谱(内含 58个知识点链接)-程序员宅基地

文章浏览阅读249次。作者 |平名 阿里服务端开发技术专家导读:Kubernetes 作为云原生时代的“操作系统”,熟悉和使用它是每名用户的必备技能。本篇文章概述了容器服务 Kubernet..._k8知识库

TencentOS3.1安装PHP+Nginx+redis测试系统_tencentos-3.1-程序员宅基地

文章浏览阅读923次。分别是etc/pear.conf,etc/php-fpm.conf, etc/php-fpm.d/www.conf,lib/php.ini。php8安装基本一致,因为一个服务期内有2个版本,所以注意修改不同的安装目录和端口号。可以直接使用sbin下的nginx命令启动服务。完成编译安装需要gcc支持,如果没有,使用如下命令安装。安装过程基本一致,下面是安装7.1.33的步骤。执行如下命令,检查已经安装的包和可安装的包。执行如下命令,检查已经安装的包和可安装的包。执行如下命令,检查已经安装的包和可安装的包。_tencentos-3.1

urllib.request.urlopen()基本使用_urllib.request.urlopen(url)-程序员宅基地

文章浏览阅读3.1w次,点赞21次,收藏75次。import urllib.requesturl = 'https://www.python.org'# 方式一response = urllib.request.urlopen(url)print(type(response)) # <class 'http.client.HTTPResponse'># 方式二request = urllib.request.Req..._urllib.request.urlopen(url)

如何用ChatGPT+GEE+ENVI+Python进行高光谱,多光谱成像遥感数据处理?-程序员宅基地

文章浏览阅读1.5k次,点赞12次,收藏15次。如何用ChatGPT+GEE+ENVI+Python进行高光谱,多光谱成像遥感数据处理?

RS485总线常识_rs485 差分走綫間距-程序员宅基地

文章浏览阅读1.2k次。RS485总线常识 2010-10-12 15:56:36| 分类: 知识储备 | 标签:rs485 总线 传输 差分 |字号大中小 订阅RS485总线RS485采用平衡发送和差分接收方式实现通信:发送端将串行口的TTL电平信号转换成差分信号A,B两路输出,经过线缆传输之后在接收端将差分信号还原成TTL电平信号。由于传输线通常使用双绞线,又是差分传输,所_rs485 差分走綫間距

随便推点

移植、制作uboot、Linux(一)_uboot制作-程序员宅基地

文章浏览阅读621次。u-boot、linux烧录_uboot制作

windows下安装git和gitbash安装教程_64-bit git for windows setup.-程序员宅基地

文章浏览阅读1.2w次,点赞10次,收藏44次。windos上git安装,git bash安装_64-bit git for windows setup.

环形链表(算法java)_java 实现环形链表-程序员宅基地

文章浏览阅读196次。环形链表(算法java)的两种解决方法_java 实现环形链表

docker部署Airflow(修改URL-path、更换postgres -->myslq数据库、LDAP登录)_airflow docker-程序员宅基地

文章浏览阅读5.7k次。Airflow什么是 Airflow?Airflow 的架构Airflow 解决哪些问题一、docker-compose 安装airflow(postgres)1、创建启动文件airflow-docker-compose.yml.1.1、添加挂载卷,需要修改airflow-docker-compose.yml的位置2、创建本地配置文件airflow.cfg2.1、如果想修改WEB URL地址,需要修改airflow.cfg中以下两个地方3、之后up -d直接启动即可web访问地址:二、存储数据库更换post_airflow docker

计算机毕业设计springboot高校教务管理系统532k79【附源码+数据库+部署+LW】-程序员宅基地

文章浏览阅读28次。选题背景:随着社会的发展和教育的普及,高校教务管理系统在现代高等教育中扮演着至关重要的角色。传统的手工管理方式已经无法满足高校日益增长的规模和复杂的管理需求。因此,开发一套高效、智能的教务管理系统成为了当今高校管理的迫切需求。选题意义:高校教务管理系统的开发具有重要的意义和价值。首先,它可以提高高校教务管理的效率和准确性。通过自动化处理学生选课、排课、考试安排等繁琐的事务,大大减轻了教务人员的工作负担,提高了工作效率。同时,系统可以实时更新学生信息和课程信息,减少了数据错误和冗余,保证了管理的准确性

javaint接收float_Java Integer转换double,float,int,long,string-程序员宅基地

文章浏览阅读132次。首页>基础教程>常用类>常用 Integer类Java Integer转换double,float,int,long,stringjava中Integer类可以很方便的转换成double,float,int,long,string等类型,都有固定的方法进行转换。方法double doubleValue() //以 double 类型返回该 Integer 的值。flo..._java integet接收float类型的参数

推荐文章

热门文章

相关标签