文件相关

创建文件

  • touch: touch README.md
  • ">"重定向: echo 'study and share' > README.md
  • vi && vim: vim README.md, vim是vi的升级版,直接用它吧,有些系统装好后只有vi,这里提一下。

删除文件

  • 删除文件 rm README.md,如果是多个文件你就往后面补文件名。

  • 自信地强制删除:rm -rf README.md, 数据无价,慎用。

linux最佳文本编辑器vim

# vim file: 有则打开文件,没则创建文件

# 三种模式: 插入模式(按i进入,或者o下一行)、可视模式(CTRL + V)、命令模式(默认)

# 关于保存: :q 退出、 :q! 退出不保存、 :wq 退出并保存

文件夹的相关操作

  • 创建文件夹:mkdir app

    • -p 创建多层嵌套文件夹,例子mkdir -p a/b/c
  • 删除文件夹:rmdir app, 多层嵌套的话rm -rf app

  • 查看文件夹相关信息:ls app

    • -a: 列举所有文件(包含隐藏的)
    • -l列表形式展示
  • 查看文件夹树结构:tree app

     root@ataola ? ~/linux ? mkdir -p a/b/c/d/e/f/g/h
    root@ataola ? ~/linux ? tree a
    a
    `-- b
    `-- c
    `-- d
    `-- e
    `-- f
    `-- g
    `-- h 7 directories, 0 files
    root@ataola ? ~/linux ?
  • 进入文件夹:cd app, .表示当前目录,那么返回上一级就是cd ..

复制、修改、移动、文件(夹)

  • 复制文件(夹): cp file1 file2

    • -r: 复制嵌套文件夹,例如cp -r a b, 其中a的结构是a/b/c,即多层时。
  • 修改和移动:mv app ppa, mv这个命令承载了重命名文件(夹)和拷贝的重任。

硬链接和软链接

  • 硬链接: ln ataola zjt,占用空间
  • 软链接: ln -s ataola zjt, 相当与快捷方式,不占空间

压缩与解压缩

tar

  • 将ataola文件压缩称ataola.tar.gz: tar -czvf ataola.tar.gz ataola
  • 将ataola.tar.gz文件解压缩到当前目录: tar -zxvf ataola.tar.gz
    • -c 创建
    • -z gzip压缩
    • -v显示细节
    • -f 文件
    • -x 解压缩

zip

  • 压缩: zip ataola.zip ataola
  • 解压:unzip ataola.zip ataola
  • 加密压缩:zip -re ataola.zip ataola

网络相关

查看网络信息

  • 查看本机网络信息:ip addr
  • 查看本机网络信息:ifconfig

网络通信

  • 检测与外界通信是否正常:ping xxx, 例如:ping zhengjiangtao.cn
  • 查看本机相关端口暴露情况:netstat, 推荐使用netstat -tlunp,显示正在监听的tcp和udp信息,清爽一点。
    • -u (udp): 仅显示udp相关选项
    • -n: 显示全名。
    • -l: 仅列出有在 Listen 的服務状态
    • -p: 显示建立相关链接的程序名
  • 查看TCP UDP相关服务 lsof -i

防火墙

  • 安装:yum install iptables iptables-services -y

  • 开启:service iptables start

  • 关闭:service iptables stop

  • 保存: service iptables save

  • 查看状态:service iptables status

  • 开启某个端口(80为例): iptables -I INPUT -p tcp --dport 80 -j ACCEPT,iptables -I OUTPUT -p tcp --sport 80 -j ACCEPT

  • 关闭某个端口(80为例):iptables -I INPUT -p tcp --dport 80 -j DROP, iptables -I OUTPUT -p tcp --sport 80 -j DROP

    • -I: 将在指定链的指定编号位置插入一个规则
    • -F:清除预设的所有规则
    • -A : 将一个规则添加到链末尾
    • -p tcp: 指定协议为tcp
    • -s: 指定源地址或地址段
    • -j ACCEPT: 允许
    • -j DROP: 拒绝
    • -d: 指定目标地址或地址段
    • -m limit : 限制单位时间访问频率
    • --dport port: 指定目标TCP/IP端口, 如 –dport 80
    • --sport port: 指定来源TCP/IP端口, 如 –dport 80
    • -L -n: 查看防火墙配置信息
    • -L -n --line-number : 显示规则和相应编号
    • -t nat -L: 列出所有NAT链中所有规则
    • INPUT: 处理数据输入包
    • OUTPUT: 处理数据输出包
 ✘  root@ataola  ~/tmp  iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 Chain FORWARD (policy ACCEPT)
target prot opt source destination Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp spt:80
root@ataola  ~/tmp 
  • 屏蔽某IP: 例如:ptables -A INPUT -p tcp -m tcp -s 218.109.192.109 -j DROP
  • 阻止window蠕虫攻击:iptables -I INPUT -j DROP -p tcp -s 0.0.0.0/0 -m string --algo kmp --string "cmd.exe"
  • 防止SYN洪水攻击:iptables -A INPUT -p tcp --syn -m limit --limit 5/second -j ACCEPT

用户相关

  • 组信息存放位置:/etc/group, 格式:用户组名:密码:用户组ID:组内用户名
  • 添加用户组: groupadd usergroup
    • -g: 自定义组ID, 例如groupadd -g 613 sanguo
  • 修改用户组: groupmod usergroup
    • -g: 修改用户组ID
    • -n: 修改用户组名
  • 删除用户组:groupdel usergroup

用户

  • 用户信息存放位置:/etc/password,格式:用户名:密码:用户ID:用户组ID:注释:家目录:解释器shell

  • 用户密码存放位置: /etc/shadow

  • 添加用户: useradd user

    • -m: 自动创建家目录

    • -g: 指定用户主组

    • -G: 指定用户附加组

    • -u: 指定用户默认uid

    • -c: 添加注释

    • -s: 指定登录后的shell

    • -d: 指定用户登录时的启动目录

    • -n: 取消建立用户同名称组

    • 修改用户密码: passwd user, root用户可以重置其他用户密码

      [caocao@ataola nginx]$ passwd caocao
      passwd: Only root can specify a user name.
      [caocao@ataola nginx]$ passwd
      Changing password for user caocao.
      Changing password for caocao.
      (current) UNIX password:
      New password:
      Retype new password:
      Sorry, passwords do not match.
      New password:
      Retype new password:
      passwd: all authentication tokens updated successfully.
      [caocao@ataola nginx]$
      • -l: 锁定口令,即禁用账号。
      • -u: 口令解锁。
      • -d : 使账号无口令。
      • -f: 强迫用户下次登录时修改口令

    我们来实践下,在三国组下创建用户曹操,指定用户uid为1997,登录的shell为/bin/bash

      root@ataola  ~/tmp  useradd -m -g sanguo -s /bin/bash -u 1997 caocao
    root@ataola  ~/tmp  cat /etc/passwd | grep caocao
    caocao:x:1997:613::/home/caocao:/bin/bash
    root@ataola  ~/tmp 
  • 删除用户:userdel user

    • -r: 连家目录一起删除
  • 切换用户:su user

     ✘  root@ataola  ~/docker/nginx  su caocao
    [caocao@ataola nginx]$ pwd
    /root/docker/nginx
    [caocao@ataola nginx]$

权限问题

这个地方我纠结了一下,到底时放在文件相关还是用户相关讲,最后我选择这里。对于用户而言,其操作一个文件,有可读可写可执行否这么多种可能对吧,那么我们接下来讨论下。

对于一个文件而言,其与用户的关系,不外乎所有者(创建者)、组内成员、其他组或者用户,这里root用户时linux最高权限的用户,简言之,没有它干不了的事。

u g o a
所有者 同组用户 其他组 所有

字母表示

我们来看这样一个例子

  root@ataola  ~  ls -l /home/caocao
total 4
-rw-r--r-- 1 caocao sanguo 0 Jul 18 18:16 a
drwxr-xr-x 3 caocao sanguo 4096 Jul 18 18:17 b
root@ataola  ~ 

单独把b前面的这一坨东西拎出来讲:drwxr-xr-x,

  • 第一个字母d,表示它是一个文件夹,而a第一个字母是-,表示它是一个文件
  • 第一组rwx, 表示其创建者caocao拥有可读可写可执行的权限
  • 第二组r-x: 表示其所在sanguo组其他用户有可读可执行的权限
  • 第三组r-x: 表示其他组或者用户有可读可执行的权限

实践一下

  • 对于a文件给同组用户增加可写可执行权限, chmod g+wx a

    [caocao@ataola ~]$ ls -l
    total 4
    -rwxr--r-- 1 caocao sanguo 0 Jul 18 18:16 a
    drwxr-xr-x 3 caocao sanguo 4096 Jul 18 18:17 b
    [caocao@ataola ~]$ chmod g+wx a
    [caocao@ataola ~]$ ls -l
    total 4
    -rwxrwxr-- 1 caocao sanguo 0 Jul 18 18:16 a
    drwxr-xr-x 3 caocao sanguo 4096 Jul 18 18:17 b
    [caocao@ataola ~]$
  • 之后曹操有点小情绪,决定移除同组的可执权限chmod u-x a

    [caocao@ataola ~]$ chmod g-x a
    [caocao@ataola ~]$ ls -l
    total 4
    -rwxrw-r-- 1 caocao sanguo 0 Jul 18 18:16 a
    drwxr-xr-x 3 caocao sanguo 4096 Jul 18 18:17 b
    [caocao@ataola ~]$
  • 再之后,曹操他疯了,他决定移除自己的可写可执行权限chmod u-wx a

    [caocao@ataola ~]$ chmod u-wx a
    [caocao@ataola ~]$ ls -l
    total 4
    -r--rw-r-- 1 caocao sanguo 0 Jul 18 18:16 a
    drwxr-xr-x 3 caocao sanguo 4096 Jul 18 18:17 b
    [caocao@ataola ~]$

数字表示

​ 除了楼上的字母表示,也是可以用数字进行相关权限设置

字母与数字的对应关系如下:

r w x
4 2 1

那我们接着实践。

  • 曹操后来又自己给自己治好了,决定收回撤销的a文件的可写可执行的权限,并设置其他人都只可读chmod 744 a

    [caocao@ataola ~]$ chmod 744 a
    [caocao@ataola ~]$ ls -l
    total 4
    -rwxr--r-- 1 caocao sanguo 0 Jul 18 18:16 a
    drwxr-xr-x 3 caocao sanguo 4096 Jul 18 18:17 b
    [caocao@ataola ~]$

这里的744, 第一个代表所有者,4 + 2 + 1 = 7。 第二个代表所属组 ,第三个代表其他选手。

更改文件用户组

这里我们创建一个魏国的group,然后将曹操家目录下的b文件夹归属与魏国这个组chgrp weiguo b, 这里如果加个参数-R的话,其内部的所有文件都会跟着变成魏国这个组,而不是三国,执行这个命令的是root用户。

  root@ataola  /home/caocao  ls -l
total 4
-rwxr--r-- 1 caocao sanguo 0 Jul 18 18:16 a
drwxr-xr-x 3 caocao sanguo 4096 Jul 18 18:17 b
root@ataola  /home/caocao  chgrp weiguo b
root@ataola  /home/caocao  ls -l
total 4
-rwxr--r-- 1 caocao sanguo 0 Jul 18 18:16 a
drwxr-xr-x 3 caocao weiguo 4096 Jul 18 18:17 b
root@ataola  /home/caocao 

更改文件所属用户

之后root用户,决定干掉曹操,自己掌管b文件,那么可以这么做chown root b, 相关参数同楼上的chgrp

  root@ataola  /home/caocao  chown root b
root@ataola  /home/caocao  ls -l
total 4
-rwxr--r-- 1 caocao sanguo 0 Jul 18 18:16 a
drwxr-xr-x 3 root weiguo 4096 Jul 18 18:17 b
root@ataola  /home/caocao  ls -l b
total 4
drwxr-xr-x 2 caocao sanguo 4096 Jul 18 18:17 c
root@ataola  /home/caocao 

root用户想了想,狠人做到底,回收了其他人的可读可执行权限chmod o-rx b

  root@ataola  /home/caocao  chmod o-rx b
root@ataola  /home/caocao  ls -l
total 4
-rwxr--r-- 1 caocao sanguo 0 Jul 18 18:16 a
drwxr-x--- 3 root weiguo 4096 Jul 18 18:17 b
root@ataola  /home/caocao 

此时曹操登录后想进入b目录,哈哈,是不可能的了。

[caocao@ataola ~]$ cd b
bash: cd: b: Permission denied
[caocao@ataola ~]$ ls -l
total 4
-rwxr--r-- 1 caocao sanguo 0 Jul 18 18:16 a
drwxr-x--- 3 root weiguo 4096 Jul 18 18:17 b
[caocao@ataola ~]$

进程相关

查看进程(ps)

  • a 显示所有进程
  • -a 显示同一终端下的所有程序
  • -A 显示所有进程
  • c 显示进程的真实名称
  • -N 反向选择
  • -e 等于“-A”
  • e 显示环境变量
  • f 显示程序间的关系
  • -H 显示树状结构
  • r 显示当前终端的进程
  • T 显示当前终端的所有程序
  • u 指定用户的所有进程
  • -au 显示较详细的资讯
  • -aux 显示所有包含其他使用者的行程
  • -C<命令> 列出指定命令的状况
  • –lines<行数> 每页显示的行数
  • –width<字符数> 每页显示的字符数
  • –help 显示帮助信息
  • –version 显示版本显示

例如说我要查看docker的相关信息,你可以这样写ps -aux | grep docker | tail, 因为数据量很大,tail就是只看文件尾部。

[caocao@ataola ~]$ ps -aux | grep docker | tail
root 16970 0.0 0.0 264800 428 ? Sl May31 0:03 /usr/bin/docker-containerd-shim-current 0e4ef69c19b981163067ec8af0c38b6fa84c380855c22309a884f0a0ed691912 /var/run/docker/libcontainerd/0e4ef69c19b981163067ec8af0c38b6fa84c380855c22309a884f0a0ed691912 /usr/libexec/docker/docker-runc-current
root 19417 0.0 0.0 188476 1636 ? Sl May31 0:04 /usr/libexec/docker/docker-proxy-current -proto tcp -host-ip 0.0.0.0 -host-port 3307 -container-ip 172.19.0.3 -container-port 3306
root 19422 0.0 0.0 272996 488 ? Sl May31 0:04 /usr/bin/docker-containerd-shim-current 6de60216270a3b6f5bfbe5d94d40fa2449e443eb77b67d4bf005061dd4ff412e /var/run/docker/libcontainerd/6de60216270a3b6f5bfbe5d94d40fa2449e443eb77b67d4bf005061dd4ff412e /usr/libexec/docker/docker-runc-current
root 22621 0.0 0.1 111092 2000 ? Sl Jul14 0:00 /usr/libexec/docker/docker-proxy-current -proto tcp -host-ip 0.0.0.0 -host-port 80 -container-ip 172.18.0.3 -container-port 80
root 22626 0.0 0.0 272996 1732 ? Sl Jul14 0:00 /usr/bin/docker-containerd-shim-current 52fca7d70916037e865da9ad1dfbf330e39be4a1a72c3a05ba1d862dff8cb563 /var/run/docker/libcontainerd/52fca7d70916037e865da9ad1dfbf330e39be4a1a72c3a05ba1d862dff8cb563 /usr/libexec/docker/docker-runc-current
root 29722 0.0 0.0 110036 1108 ? Sl May30 0:03 /usr/libexec/docker/docker-proxy-current -proto tcp -host-ip 0.0.0.0 -host-port 6379 -container-ip 172.20.0.2 -container-port 6379
root 29727 0.0 0.0 264800 340 ? Sl May30 0:03 /usr/bin/docker-containerd-shim-current 5c8daf272042ad0396924e6cd1f3d936e4c5f0280401861983316707c5ab9e75 /var/run/docker/libcontainerd/5c8daf272042ad0396924e6cd1f3d936e4c5f0280401861983316707c5ab9e75 /usr/libexec/docker/docker-runc-current
root 30185 0.0 0.0 264800 324 ? Sl May30 0:03 /usr/bin/docker-containerd-shim-current 5c8daf272042ad0396924e6cd1f3d936e4c5f0280401861983316707c5ab9e75 /var/run/docker/libcontainerd/5c8daf272042ad0396924e6cd1f3d936e4c5f0280401861983316707c5ab9e75 /usr/libexec/docker/docker-runc-current
root 30607 0.2 1.4 763120 26556 ? Ssl May30 186:57 /usr/bin/dockerd-current --add-runtime docker-runc=/usr/libexec/docker/docker-runc-current --default-runtime=docker-runc --exec-opt native.cgroupdriver=systemd --userland-proxy-path=/usr/libexec/docker/docker-proxy-current --init-path=/usr/libexec/docker/docker-init-current --seccomp-profile=/etc/docker/seccomp.json --selinux-enabled --log-driver=journald --signature-verification=false --storage-driver overlay2
root 30612 0.0 0.2 501356 4432 ? Ssl May30 41:51 /usr/bin/docker-containerd-current -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --shim docker-containerd-shim --runtime docker-runc --runtime-args --systemd-cgroup=true
[caocao@ataola ~]$

当然啦,根据上面的命令参数,你也可以ps -ef | grep mysql,打出mysql的相关信息

[caocao@ataola ~]$ ps -ef | grep mysql
1001 3471 3455 0 May30 ? 03:38:23 mysqld --wsrep_start_position=52a382bb-a27b-11ea-867f-c364b5a6fb0a:18
caocao 5928 16797 0 19:05 pts/0 00:00:00 grep --color=auto mysql
1001 6247 6231 0 May30 ? 03:38:57 mysqld
1001 7553 7537 0 May30 ? 03:38:59 mysqld
1001 8697 8679 0 May30 ? 03:38:07 mysqld
1001 19439 19422 0 May31 ? 03:33:23 mysqld --wsrep_start_position=52a382bb-a27b-11ea-867f-c364b5a6fb0a:23
[caocao@ataola ~]$

杀掉进程(kill)

根据查看进程得到的最前面的pid,杀掉一个进程是kill xxx, 例如杀掉mysqld的pid为1001的进程kill 1001, 可能运气不好会有杀不掉的情况,kill -9 xxx,强制杀掉,慎用。

内存CPU和硬盘相关

内存

  • 粗略 free

    [caocao@ataola ~]$ free
    total used free shared buff/cache available
    Mem: 1882192 454268 69256 2212 1358668 1238236
    Swap: 4194300 1242368 2951932
    [caocao@ataola ~]$
  • 详细 /proc/meminfo这个文件里面,太长了,这里就显示最后十行意思下

    [caocao@ataola ~]$ tail -10 /proc/meminfo
    AnonHugePages: 4096 kB
    CmaTotal: 0 kB
    CmaFree: 0 kB
    HugePages_Total: 0
    HugePages_Free: 0
    HugePages_Rsvd: 0
    HugePages_Surp: 0
    Hugepagesize: 2048 kB
    DirectMap4k: 88056 kB
    DirectMap2M: 2009088 kB
    [caocao@ataola ~]$

CPU

  • 查看cpu详细信息: cat /proc/cpuinfo

    [caocao@ataola ~]$ cat /proc/cpuinfo
    processor : 0
    vendor_id : GenuineIntel
    cpu family : 6
    model : 79
    model name : Intel(R) Xeon(R) CPU E5-26xx v4
    stepping : 1
    microcode : 0x1
    cpu MHz : 2394.454
    cache size : 4096 KB
    physical id : 0
    siblings : 1
    core id : 0
    cpu cores : 1
    apicid : 0
    initial apicid : 0
    fpu : yes
    fpu_exception : yes
    cpuid level : 13
    wp : yes
    flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx lm constant_tsc rep_good nopl eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch bmi1 avx2 bmi2 rdseed adx xsaveopt
    bogomips : 4788.90
    clflush size : 64
    cache_alignment : 64
    address sizes : 40 bits physical, 48 bits virtual
    power management: [caocao@ataola ~]$

硬盘

查看硬盘使用情况df

[caocao@ataola ~]$ df
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 930176 0 930176 0% /dev
tmpfs 941096 24 941072 1% /dev/shm
tmpfs 941096 2224 938872 1% /run
tmpfs 941096 0 941096 0% /sys/fs/cgroup
/dev/vda1 51473868 14918560 34358064 31% /
tmpfs 188220 0 188220 0% /run/user/0
[caocao@ataola ~]$

综合查看(vmstat)

[caocao@ataola ~]$ vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
3 0 1242368 85884 103628 1240960 0 0 13 42 5 6 2 3 95 0 0
[caocao@ataola ~]$

实时查看(top)

top - 19:16:16 up 52 days, 18:17,  3 users,  load average: 0.58, 0.23, 0.25
Tasks: 149 total, 1 running, 148 sleeping, 0 stopped, 0 zombie
%Cpu(s): 3.0 us, 3.0 sy, 0.0 ni, 93.6 id, 0.0 wa, 0.0 hi, 0.3 si, 0.0 st
KiB Mem : 1882192 total, 82052 free, 454844 used, 1345296 buff/cache
KiB Swap: 4194300 total, 2951932 free, 1242368 used. 1237660 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
6247 1001 20 0 1385620 37224 1844 S 0.7 2.0 218:59.15 mysqld
7553 1001 20 0 1385644 38936 1860 S 0.7 2.1 219:01.83 mysqld
16104 polkitd 20 0 1583856 72124 4756 S 0.7 3.8 28:45.69 mongod
3471 1001 20 0 1414336 28812 2684 S 0.3 1.5 218:25.69 mysqld
7924 root 20 0 35632 3088 720 S 0.3 0.2 116:41.86 redis-server
8249 root 20 0 33464 2096 748 S 0.3 0.1 113:38.97 redis-server
8631 root 20 0 33464 1616 708 S 0.3 0.1 111:53.89 redis-server
10370 root 20 0 160080 8448 1384 S 0.3 0.4 60:37.62 barad_agent
10371 root 20 0 677032 8004 1492 S 0.3 0.4 344:28.10 barad_agent
19439 1001 20 0 1394932 22712 2656 S 0.3 1.2 213:25.65 mysqld

环境变量相关

临时

直接命令行里敲export xxx, 例如

[caocao@ataola ~]$ export NODE_ENV=production
[caocao@ataola ~]$ echo $NODE_ENV
production
[caocao@ataola ~]$

setunset也是可以的。

永久

  • /etc/profile: 对所有用户生效
  • .bashrc | .zshrc | .bash.profile: 对当前用户生效

问题思考

如果我把一个组删了,但是这个组里面有用户,是不是意味着他们将成为僵尸用户?

怎么可能。。。它会提示你先清用户,有用户就删不掉

  root@ataola  /home/caocao  groupdel sanguo
groupdel: cannot remove the primary group of user 'caocao'
✘ root@ataola  /home/caocao  ls /

创建用户不指定组,默认行为是什么?

如果不指定,默认创建一个和用户相同名字的组

使用useradd 命令,用户有哪些可以解析器shell(-s 后面可以跟哪些选择)?

/bin/zsh
/bin/bash
/sbin/nologin

这里/sbin/nologin就是不让其登录,没有登录权限

参考文献

iptables命令:https://wangchujiang.com/linux-command/c/iptables.html

ps 进程查看器: https://linuxtools-rst.readthedocs.io/zh_CN/latest/tool/ps.html


本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。

最新文章

  1. 使用AFNetWorking上传图片
  2. Android控件之WebView
  3. offsetLeft和style.left的区别
  4. 又一个绝对棒的对话框插件fancybox v1.3.4
  5. SaundProgressBar
  6. php安装中的错误
  7. OpenWrt编译
  8. MYSQL 查询缓存
  9. 【Spring】详解Spring中Bean的加载
  10. Mybatis(七) mybatis的逆向工程的配置详解
  11. Angular路由——路由守卫
  12. windows PHP 安装 redis 外加扩展
  13. Sorl搜索技术
  14. MySQL Execution Plan--数据排序操作
  15. 《深入应用C++11:代码优化与工程级应用》开始发售
  16. 如何能够通过代码来重启Android手机?
  17. 小游戏专场:腾讯云Game-Tech技术沙龙上海站顺利落下帷幕
  18. js封装正则验证
  19. array_unshift() 函数
  20. Angular部署到windows上

热门文章

  1. 恕我直言你可能真的不会java第4篇:Stream管道流Map操作
  2. Java并发编程的本质是解决这三大问题
  3. Elasticsearch、Solr、Lucene、Hermes区别
  4. day12—列表、元组、字典基本语法
  5. 只需几行 JavaScript 代码,网页瞬间有气质了!
  6. 编译运行Zookeeper源码
  7. 线程的创建方式以及synchronize的使用
  8. Spring IoC 属性赋值阶段
  9. Linux 下载工具推荐: Motrix && qbittorrent
  10. 记一次线上服务CPU 100%的处理过程