Linux——基础命令用法(下)

一、linux用户

1、什么是用户

用户用于运行某些进程并拥有某些文件或目录。

[En]

Users are used to run certain processes and own certain files or directories.

Linux里面,用户分成三大类: root用户、系统用户、普通用户。
用户是用UID来唯一标识身份的,且root用户UID为0,系统用户UID范围为1-999,普通用户UID从1000开始默认依次往后累加。

什么是系统用户?
一般运行的进程属于系统内核进程,那么运行这些进程的用户都是系统用户,通常不会到系统前台,也就是命令解释器shell里面去登录。

用户名和UID信息通常存储在/etc/passwd文件中
当用户登录时它被分配一个主目录并且运行一个程序(通常是一个shell程序)
未经许可,用户不能读取、写入或执行其他用户的文件

[En]

Users cannot read, write, or execute files of other users without permission

2、用户有关的命令

useradd命令——创建用户,通常创建完用户后要设置一个密码

useradd [选项] 用户名
选项说明:
-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号
-g 用户组 指定用户所属的用户组。
-c comment 指定一段注释性描述。
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
-G 用户组,用户组指定用户所属的附加组。
-s Shell文件 指定用户的登录Shell

[root@localhost ~]# useradd wzg
[root@localhost ~]# passwd wzg

usermod命令——修改用户属性

-g -> 为用户指定主要组
-G -> 为用户指定从属组
-c -> 为用户添加一个注释字段
-u -> 为用户指定一个UID
-L -> 锁定用户,使用户密码不可用,例如连续输错密码
-U -> 解锁用户,使用户密码恢复可用

userdel命令——删除用户

userdel  用户名 -> 非彻底删除,宿主目录被保留
userdel  -r  用户名  ->  彻底删除,宿主目录被删除

附:
sudo 命令 -> 以root身份运行命令(root用户具有系统全部权限的用户,如果要执行安装或删除软件以及管理系统文件等任务,必须将特权升级到root用户)

id命令 -> 查看当前已登录用户的信息,也可以查看其他用户的基本信息。

ps -au -> 查看当前终端下运行的所有进程并显示与之相关联的用户。

ls -l -> 查看某一文件或目录的用户所有权。或查看三类用户对某个文件的访问权限

文件权限

[root@localhost /]# ls -l
total 28
lrwxrwxrwx.   1 root root    7 Sep 21 12:53 bin -> usr/bin
dr-xr-xr-x.   3 root root 4096 Sep 21 12:58 boot
drwxr-xr-x.  20 root root 3260 Nov 16 19:51 dev
drwxr-xr-x. 141 root root 8192 Nov 16 19:53 etc
drwxr-xr-x.   6 root root   62 Oct 31 11:09 home
...

第一列第1位:

  • l -> link 代表:链接文件
  • d -> directory 代表:文件夹
  • 横杠 – 代表:普通文件

第一列后9位:(r可读,w可写,x可执行)

  • 第一组代表用户对文件的访问权限
    [En]

    the first group represents the user’s access to the file*

  • 第二组代表对其所属组的文件的访问权限。
    [En]

    the second group represents the access to the file of the group to which it belongs.*

  • 第三组代表其他用户对该文件的访问权限(他们所属的用户和组除外)
    [En]

    the third group represents the access rights of other users to the file (other than the users and groups to which they belong)*

第二列:硬链接

第三列root代表:文件所属用户是root

第四列root代表:文件所属组是root组
……

大小 修改时间 文件名

权限对文件和目录的影响

权限 对文件的影响 对目录的影响 r (读)4 可以读取文件的内容 可以列出目录的内容(文件名) w (写)2 可以更改文件的内容 可以创建或删除目录中的任一文件 x (执行)1 可以作为命令执行文件 可以进入目录(还需要r权限才能读目录内容)

目录要有意义:rx权限

chmod更改文件和目录的权限

chmod命令用于更改文件对于某类用户的操作权限
chmod [-R] ((ugoa)(+-=)(rwx)/nnn) file

增加文件属主的执行权限(x)

chmod u+x test

去除文件属主与属组的写权限(w)

chmod u-w,g-w test

将其他用户的文件权限设置为可执行

[En]

Set the file permissions of other users to executable

chmod o=x test

为组和其他人设置主控完全控制、读取权限

[En]

Set master full control, read permissions for group and others

chmod 744 test

3、本地用户的信息

路径:/etc/passwd
root:x:0:0:root:/root:/bin/bash

格式 -> 用户名:密码:UID:GID:注释:宿主目录:命令环境

  • 密码:用X代替保存在影子文件中
  • GID:新建用户后系统默认一个同名组
  • 注释:可空
  • 宿主目录:/root或者/home/dir
  • 命令环境:/bin/bash或者/sbin/nologin

/bin/bash -> 解锁账户,用户可以使用shell登陆系统
/sbin/nologin -> 锁定账户,用户不能登陆系统,但可以运行某个程序,如果哪个用户属于不安全用户,就可以将该用户设置为nologin

练习
创建一个名为luna的用户,在系统中没有可登陆的shell
[root@localhost ~]# useradd luna
[root@localhost ~]# passwd luna
[root@localhost ~]# vim /etc/passwd
找到luna用户,把/bin/bash 改为:/sbin/nologin

4、用户密码的信息

/etc/shadow -> 存放本地用户的密码

格式 -> 用户名:密码:最后更改密码日期:密码最短使用期限:密码最多使用期限:密码到期警告期:密码到期后还可使用时间:密码到期日:预留空白字段

字段1: 用户帐号的名称
字段2: 加密的密码字串信息
字段3: 最近一次修改密码的时间,表示从1970.01.01至今的天数
字段4: 密码的最短使用天数,默认值为0,没有要求
字段5: 密码的最长有效天数,默认值为99999
字段6: 密码即将到期警告天数,默认值为7
字段7: 在密码过期之后账号保持活动的天数,指定天数后账号被锁定,成为无效
字段8: 帐号失效时间,默认值为空,以1970.01.01的天数表示
字段9: 保留字段(未使用)

  • 密码: * -> 代表没有密码,是空的,!-> 代表该用户被禁用
  • 密码最短使用期限:0 -> 表示无限期使用

chage配置密码的期限

语法: chage [选项] 用户

chage -m 0 -M 90 -W7 -I 14 user3 分别修改用户密码的最短期限,最长期限,警告周期和失效期限
chage -d 0 user3 强制要求用户在下一次登录时更新密码
chage -l user3 显示用户密码的的信息
chage -E 2020-10-10 user3 用户将于2020-10-10到期(YYYY-MM-DD格式)

chage -用户名 命令——设置账户到期时间
    -d  ->  设置最后一次修改用户密码的时间,以距离1970年1月1日开始算起
    -E  ->  设置账户到期日期
    -I   ->  设置账户到期后能继续登陆系统的时间
    -m ->  设置账户可以修改密码的最少天数
    -M ->  设置账户必须更改密码前的最多天数
    -W ->  设置密码即将到期的警告天数

二、Linux组

1、什么是组

用户必须属于一个组,每一个组被分配一个独特的组ID(gid)
系统组:GID为0-999
私有组:GID为1000及以上

主要组的概念:
当系统创建用户时,会为该用户分配一个单独的组。

[En]

When the system creates a user, a separate group is assigned to that user.

在/etc/passwd文件中的第四个字段GID定义。

  • 特点:默认情况下,组名与用户名同名,GID与UID同号,该组里面只有该成员本身一人
  • 特点:每个用户只有一个大群体,是1:1的数量关系。
    [En]

    Features: each user has one and only one major group, which is the quantitative relationship at 1:1.*

从属组(附加组)的概念:

[En]

The concept of subordinate groups (additional groups):

如果人为地将用户添加到附加组以获得该组的权限,则该组称为从属组或附加组,即非主要组。

[En]

If a user is artificially added to an additional group to gain permission for that group, then the group is called a subordinate group, or an additional group, which is a non-primary group.

在/etc/group文件中的最后一个字段定义。

  • 特点:每个用户的从属组可以有多个,是1:n的数量关系。
  • 特点:相反,一个群可以有多个用户成员,即可以是多个用户的下级群。
    [En]

    Features: conversely, a group can have multiple user members, that is, it can be a subordinate group of multiple users.*

2、组有关的命令

groupadd命令——创建组

-g  ->  给新建的组分配一个GID

groupmod命令——修改现有的组 -modify

-g  ->  指定新的GID(主组)
-G  ->  指定附加组
-n  ->  指定新的groupname

groupdel命令——删除组 (不能删除属于其他用户的主组)

练习
创建一个名为groupone的组
创建一个名为harry的用户,设置用户ID为2021,其属于staff组,且这个组是该用户的附加组
[root@localhost ~]# groupadd groupone
[root@localhost ~]# useradd -u 2021 -G groupone harry

3、本地组信息

/etc/group -> 存放本地组信息

格式 -> 组名称:组密码:GID:从属组用户

  • 组密码:用X代替,密码存放在/etc/gshadow文件中
  • 下级组用户:即哪些用户属于该组
    [En]

    subordinate group users: that is, which users belong to this group*

chown设置文件属主和属组

chown命令用于设置文件的属主和属组
命令格式: chown [-R] OWNER[:GROUP] FILE…

chgrp命令用于设置文件属组
命令格式: chgrp [-R] GROUP FILE..

只有root可以修改文件的拥有人,root和文件的拥有人可以修改文件的拥有组,前提是用户需要在组里面。

chown user1 test 设置文件test的属主为用户user1
chown :it2 test 设置文件test的属组为用户组it2
chgrp it2 test 效果同上
chown user3:it3 test 设置文件test的属主为user3,并设置文件的属组为it3

三、Linux软件包管理器

1、什么是rpm包和yum源

红帽有两款软件包管理器,分别是rpm和yum。

1、什么是rpm包?
rpm包,类似于Windows里面的exe文件,只不过在Linux里面,一个软件通常需要由多个rpm才能安装好,而rpm包之间存在着安装顺序,这种安装顺序就叫做依赖性关系。

2、什么是yum源?
自动化解析rpm包之间的依赖性关系,实现了安装包的批量安装。在Linux里面,要使用yum,就需要提前配置一个yum源,用来解决rpm包之间的依赖性关系。

2、如何配置本地yum源:

要使用yum软件包管理器,首先得需要一个yum仓库,也就是一个yum源,这个是需要我们自己来配置的。
而这个yum仓库可以使用本地仓库(file),也可以使用远程链接仓库(http或ftp)。

具体操作步骤:

1、先进入虚拟机设置,把系统镜像连接到虚拟机的光驱上;

2、挂载光驱里的镜像:
[root@localhost ~]# mount /dev/cdrom /media/
mount: /dev/sr0 is write-protected, mounting read-only

3、修改yum源配置文件local.repo(注意,文件后缀为.repo,文件名可以自定义):
[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# ls        #如果有其他的配置文件需要移除
[root@localhost yum.repos.d]# vim local.repo
[rhel]
name=rhel
baseurl=file:///media
enabled=1   #1代表开启此yum仓库,0为关闭此仓库
gpgcheck=0  #代表验证仓库软件包的完整性(安全性),0为不验证

4、清空yum源缓存信息:
[root@localhost yum.repos.d]# yum clean all
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-
              : manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

Cleaning repos: rhel
Cleaning up everything

5、检索当前yum源信息:
[root@localhost yum.repos.d]# yum repolist
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-
              : manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.

rhel                                                     | 4.1 kB     00:00
(1/2): rhel/group_gz                                       | 136 kB   00:00
(2/2): rhel/primary_db                                     | 3.9 MB   00:00
repo id                               repo name                           status
rhel                                  rhel                                4,751
repolist: 4,751
[root@server yum.repos.d]#

3、软件包管理器命令

rpm命令用法:

-i  ->  install  ->  安装某个package   dependencies (依赖包)
-e  ->  erase  ->  卸载(删除)某个package
-v  ->  显示整个安装过程中的详细信息
-h  ->  以#号显示安装进度
-q  ->  query  ->  查询
-f  ->  filename  ->  文件名
-l  ->  list  ->  罗列文件

常见用法:

[root@localhost ~]# rpm -ivh yum-utils-1.1.31-40.el7.noarch.rpm #安装某个软件包并显示详细安装过程,以#号显示安装进度
[root@localhost ~]# rpm –qf /etc/chrony.conf #查询某文件(chrony.conf)是由哪个软件包安装的
[root@localhost ~]# rpm -aq httpd   #查询对应的服务所要用到的rpm包
[root@localhost ~]# rpm -ql httpd   #查询对应的服务所涉及到的所有文件,包括数据文件和配置文件

yum命令用法:

[root@localhost ~]# yum clean all   #清空yum 缓存
[root@localhost ~]# yum repolist    #列表查看本操作系统所有的yum源
[root@localhost ~]# yum list            #显示已安装和可用的软件包
[root@localhost ~]# yum provides + 路径 #查询某个文件安装的rpm包
[root@localhost ~]# yum -y install + 软件名   #安装某个软件
[root@localhost ~]# yum -y remove + 软件名    #卸载某个软件
[root@localhost ~]# yum -y update + 软件名    #更新某个软件
[root@localhost ~]# yum info    #提供与软件包相关的详细信息,包括安装所需的磁盘空间
[root@localhost ~]# yum history #查询yum软件管理记录
[root@localhost ~]# yum -y upgrade  #升级系统内核

四、Linux的网络配置与管理

1、网络基础命令

1、ifconfig 命令

2、ping 命令——测试网络连通性(使用ctrl+c来结束测试)

3、ip route 命令——查看本地路由

4、tracepath 命令——查看到目标ip地址所经的路由器地址

5、netstat 命令——查看网络连接状态
netstat -pant -> 查看带有PID进程信息的tcp协议网络端口连接状态

6、ss 命令——获取系统套接字(sockets)统计信息
ss -lt -> 与netstat -pant 功能类似,也可用来查看网络连接状态

网络管理工具-ip系列
ip link管理设备

ip link [show ]查看设备信息
ip link set ens33 up/down设置网卡激活和禁用

ip addr管理地址

ip addr [show]查看网络地址
ip addr add ip/netmask dev ens33添加地址
ip addr del ip/netmask dev ens33删除地址

ip route管理路由表

ip route [show]查看路由表信息
ip route add目标地址p[/netmask] via网关地址添加路由
ip route del目标地址ip[/netmask] 删除路由

2、如何配置网络

1、虚拟交换机配置为192.168.100.0网段,网络适配器选择仅主机模式;

2、编辑网络配置文件:
[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# vim ifcfg-ens33
TYPE=Ethernet       #网卡类型是以太网
BOOTPROTO=static    #ip地址获取方式有三种:dhcp为动态获取ip,none或static为手动设置固定ip地址
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33                          #网卡连接名
UUID=da1a701d-8cee-4e1d-9423-56280232e595   #网卡的系统设备ID号
DEVICE=ens33                        #设备名
ONBOOT=yes                  #是否开机自启
IPADDR=192.168.100.10       #IPv4地址
PREFIX=24                   #子网掩码,相当于NETMASK=255.255.255.0
GATEWAY=192.168.100.1       #网关
DNS1=192.168.100.254        #DNS地址,一张网卡可以绑定多个DNS
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes

3、重启网络服务:
[root@localhost network-scripts]# systemctl restart network
[root@localhost network-scripts]# ip a
1: lo:  mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens33:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:af:2f:d2 brd ff:ff:ff:ff:ff:ff
    inet 192.168.100.10/24 brd 192.168.100.255 scope global ens33
       valid_lft forever preferred_lft forever
    inet6 fe80::9ef7:e697:cc63:418b/64 scope link
       valid_lft forever preferred_lft forever
3: virbr0:  mtu 1500 qdisc noqueue state DOWN qlen 1000
    link/ether 52:54:00:08:d4:17 brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever
4: virbr0-nic:  mtu 1500 qdisc pfifo_fast master virbr0 state DOWN qlen 1000
    link/ether 52:54:00:08:d4:17 brd ff:ff:ff:ff:ff:ff
[root@localhost network-scripts]#

3、通过nmcli命令来配置

查看所有网卡连接信息
[root@localhost ~]# nmcli connection show

删除已有的网卡连接名ens32
[root@localhost ~]# nmcli connection delete ens32

给网卡ens32添加一个新的网卡连接eth0,设置为:以太网类型、开机自启
[root@localhost ~]# nmcli connection add con-name eth0 ifname ens32 type ethernet autoconnect yes

将网卡连接eth0修改为:手动添加IPv4地址,IP地址是:192.168.100.20/24,网关地址:192.168.100.2,对应的dns服务器地址是:119.29.29.29
[root@localhost ~]# nmcli connection modify eth0 ipv4.method man ipv4.addresses 192.168.100.20/24 ipv4.gateway 192.168.100.2 ipv4.dns 119.29.29.29

开启网卡连接eth0
[root@localhost ~]# nmcli connection up eth0

#如果网卡连接起不来,可以先关闭该连接,然后再开启
[root@localhost ~]#nmcli connection down eth0

重新加载所有网卡连接配置<details><summary>*<font color='gray'>[En]</font>*</summary>*<font color='gray'>Reload all network card connection configurations</font>*</details>
[root@localhost ~]# nmcli connection reload

由于修改了网卡的配置,需要重新启动系统的网络服务。<details><summary>*<font color='gray'>[En]</font>*</summary>*<font color='gray'>Because the configuration of the network card has been modified, it is necessary to restart the network service of the system.</font>*</details>
[root@localhost ~]# systemctl restart network

检查网络是否配好
[root@localhost ~]# ifconfig

或检查配置文件是否正确<details><summary>*<font color='gray'>[En]</font>*</summary>*<font color='gray'>Or check whether the configuration file is correct</font>*</details>
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0

测试新配置好的本地网络是否ping得通
[root@localhost ~]# ping 192.168.100.20

Linux——基础命令用法(下)

nmcli命令总结:

Linux——基础命令用法(下)

LVM架构

  • PP (物理分区) :用来存储数据的块设备,可以是分区,磁盘,RAID或SAN设备
  • PV (物理卷) : LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
  • VG (卷组) :卷组是存储池,由-一个或多个物理卷组成,-个PV只能分配给f个VG
  • LV (逻辑卷) : LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统
  • PE (physical extent) :每一个物理卷被划分为称为PE的基本单元,是LV的最小存储单元,具有唯- -编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB.

  • LE (logical extent) :逻辑卷也被划分为被称为LE的可被寻址的基本单位。在同一个卷组中, LE的大小和PE是相同的,并且一对应。 设置特定LV选项将会更改此映射,例如:镜像会导致每个LE映射到两个PE.

声明:未经许可,不得转载

Original: https://www.cnblogs.com/wzgwzg/p/15612931.html
Author: 王智刚
Title: Linux——基础命令用法(下)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/524315/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • oracledb_exporter监控Oracle,一个入侵性极低的监控方案。

    写在开篇 Oracle怎么做监控?用Zabbix?可以呀,但!本篇讲的内容是基于上次设计的Prometheus主备方案的基础上进行的, 上篇的文章是《重磅!DIY的Promethe…

    Linux 2023年6月7日
    0104
  • Linux下腾达无线网卡U6的驱动安装

    U6无线网卡是rt8192eu芯片, 腾达驱动只支持到内核4.4左右; 5.0以上的内核就需要自己编译的。 终于找到了一个github修改版的驱动,经过验证运行正常。 https:…

    Linux 2023年6月14日
    088
  • muduo项目介绍

    在上一个集群聊天服务器项目中,我使用了 muduo作为网络库,然后主要实现了业务逻辑等,所以为了深入网络库的代码和实现,我跟着一位老师的代码去实现了 muduo库的基本原理和作用,…

    Linux 2023年6月13日
    0109
  • python小技巧

    关于 ipython 1 Tab补全 从外观上,IPython shell和标准的Python解释器只是看起来不同。IPython shell的 进步之一是具备其它IDE和交互计算…

    Linux 2023年6月8日
    0108
  • 版本控制gitlab

    版本控制gitlab 版本控制gitlab 版本控制介绍 常用的版本控制工具: gitlab部署 gitlab网页界面的基本使用 使用命令行的方式进行上传文件 版本控制介绍 版本控…

    Linux 2023年6月6日
    0128
  • windows下安装virtualenv并且配置指定环境

    下面是在windows下通过virtualenv创建虚拟环境, 包括 : 安装virtualenv(使用pip可直接安装) 使用virtualenv创建指定版本的虚拟环境 进入虚拟…

    Linux 2023年6月6日
    0104
  • Go实现安全双检锁的方法和最佳实践

    不安全的双检锁 从其他语言转入Go语言的同学经常会陷入一个思考:如何创建一个单例? 有些同学可能会把其它语言中的双检锁模式移植过来,双检锁模式也称为懒汉模式,首次用到的时候才创建实…

    Linux 2023年6月13日
    099
  • 试吃香甜可口的《程序员面试指南》

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    Linux 2023年6月6日
    081
  • 本地连接虚拟机redis,解决redis connection refused: connect问题

    VM VirtualBox安装虚拟机ubuntu16.04 1、redis.conf配置文件中注释 bind 127.0.0.1,重启redis: 2、防火墙关闭(或添加可访问的端…

    Linux 2023年5月28日
    0106
  • 基于eNSP的NAT/NAPT协议仿真实践

    一. 基本原理 eNSP(Enterprise Network Simulation Platform)是一款由华为提供的、可扩展的、图形化 操作的网络仿真工具平台,主要对企业网络…

    Linux 2023年6月8日
    089
  • MacOS设置终端代理

    前言 国内的开发者或多或少都会因为网络而烦恼,因为一些特殊原因有时候网络不好的时候需要使用代理才能完成对应的操作。原来我一直都是使用斐讯路由器然后刷了梅林的固件,直接在路由器层面设…

    Linux 2023年6月14日
    098
  • docker:nginx+confd动态生成配置

    docker:nginx+confd动态生成配置当我们项目越来越多时手动去服务器修改nginx配置是一件很麻烦而且可能出错的事情。我们可以通过 nginx+confd+&#…

    Linux 2023年6月13日
    082
  • 四大高阶函数、匿名函数、递归

    四大高阶函数: map、reduce、filter、sorted 1.map函数: 根据提供的函数对指定序列做映射 使用可迭代对象(指定的序列)中的每个元素调用函数,将返回值作为新…

    Linux 2023年6月8日
    0116
  • Popovers

    弹出式窗口弹出式窗口是一个短暂的视图,当你点击一个控件或一个区域时,它就会出现在屏幕上的其他内容之上。通常情况下,弹出窗口包括一个箭头,指向它出现的位置。弹出式窗口可以是非模态或模…

    Linux 2023年6月7日
    0101
  • 日常开发方案设计指北

    互联网公司管理研发流程,常常使用TAPD一类的敏捷工具。一个需求从提出到上线要经历至少七个流程: 1)需求评审:产品经理给出需求文档,邀请技术参与需求评审,目的是扫清需求疑点,排除…

    Linux 2023年6月6日
    0115
  • Redis从入门到精通:中级篇

    原文链接:http://www.cnblogs.com/xrq730/p/8944539.html,转载请注明出处,谢谢 本文目录 上一篇文章以认识Redis为主,写了Redis系…

    Linux 2023年5月28日
    0102
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球