删除逻辑卷

  • 逻辑卷的删除不允许联机操作,需要先卸载,在执行删除

  • 在执行删除操作时,首先删除LV逻辑卷,在删除VG卷组,最后删除PV物理卷

  • 删除命令:lvremove

  1. #删除逻辑卷错误示范
  2. [root@localhost ~]# lvremove /dev/systemvg/mylv
  3. Logical volume systemvg/mylv contains a filesystem in use. #提示文件正在使用中
  4. #需要先卸载
  5. [root@localhost ~]# umount /dblod/
  6. #删除逻辑卷
  7. [root@localhost ~]# lvremove /dev/systemvg/mylv
  8. Do you really want to remove active logical volume systemvg/mylv? [y/n]: y
  9. Logical volume "mylv" successfully removed
  10. #删除卷组
  11. [root@localhost ~]# vgremove systemvg
  12. Volume group "systemvg" successfully removed

逻辑卷的缩减

  • 命令lvreduce

  • 不允许连接缩减

  • 先缩减文件系统的空间,在缩减逻辑卷的空间

RAID磁盘阵列

  • RAID中文全称:独立磁盘冗余阵列 ,简称磁盘阵列

  • RAID可通过技术(软件/硬件)将多个独立的磁盘整合成一个巨大容量大逻辑磁盘使用

  • RAID可以提高数据I/O(读写)速度,和冗余数据的功能

RAID级别

RAID0:等量存储,至少由2块磁盘组成,同一个文档等量存放在不同的磁盘并行写入数据来提高效率,但只是单纯的提高效率,并没有冗余功能,如果其中一块盘故障,数据会丢失,不适合存放重要数据

RAID1:完整备份,至少由两块磁组成,同一个文档复制成多份存储到不同磁盘提高可靠性,读写速度没有提升,适合存储重要的数据

RAID2:至少由3块磁盘组成,数据分散存储在不同磁盘,在读写数据时需要对数据时时校验,由于采用的校验算法复杂,数据量比原有数据增大,而且导致硬件开销较大

RAID3:至少由三块磁盘组成,同一份文档分散写入不同的磁盘,校验数据单独存放在另外一块磁盘,由于每次读写操作都会访问校验盘,容易导致校验盘长时间高负荷工作而挂掉,如果校验盘损坏数据将无法恢复

RAID4:与RAID3类似,至少由3块磁盘组成,同一份文档分散存写入不同磁盘,校验数据单独存放在另外一块磁盘,由于每次读写操作都会访问校验盘,容易导致校验盘长时间高负荷工作而挂掉,如果校验盘损坏数据将无法恢复,与RAID3的区别是数据分割方式不一样

RAID5:至少由3块磁盘组成,同一份文档分散写入不同磁盘,每个硬盘都有校验数据,其中校验数据会占用磁盘三分之一的空间,三分之二的空间存放原始数据,允许同时坏一块磁盘,当一块磁盘损坏,其他磁盘里的数据配合校验信息可将数据恢复回来

RAID6:至少由4块磁盘组成,同一份文档分散写入不同磁盘,每个磁盘都有校验数据,由于采用双校验算法,所以校验数据量是RAID5的两倍,需要占用2块磁盘空间存放校验数据,两块盘存放原始数据,由于数据校验的算法计算量偏大,所以在速写速度上没有RAID5快,允许同时坏2块磁盘

RAID7:美国SCC公司专利,花钱

RAID10:RAID10=RAID1+RAID0合二为一,最少需要4块磁盘,先将4块硬盘组成两组RAID1,在将两组RAID1组成一个RAID0,既提高数据读写速度,又能保障数据安全性,缺点是可用容量是总容量的一半

实现RAID方式

实现RAID通常有三种方式,通过软件技术实现RAID功能(软RAID)

外接式磁盘阵列柜,被常用在大型服务器上,不过这类产品价格昂贵

RAID磁盘阵列卡,分为服务器自带和额外安装,硬RAID比软RAID更安全稳定,RAID卡带有缓存功能可实现数据自动恢复,RAID卡有电池

配置硬RAID方式

进程管理

  • 什么是程序:用计算机语言编写的命令序列集合,用来实现特定的目标或解决特定的问题,程序占用磁盘空间,程序是静态并且是永久的

  • 什么是进程:正在运行中的程序叫进程,程序占用内存空间,进程是动态的,进程是有生命周期的,进程有自己的独立内存空间,每启动一个进程,系统就会为它分配内存空间并分配一个PID号,每个进程都会对应一个父进程,而父进程可以复制多个子进程,每种进程都有两种方式存在,前台与后台,一般进程都是以后台方式运行

  • 什么是线程:线程也被称为轻量级进程,被包含在进程中,是进程的一个子集,是进程中的实际运作单位,一个进程中可以并发多个线程,每条线程并行执行不同的任务,每个线程都是独立的,线程之间共享进程的内存空间,在多线程的程序中,由于线程很“轻”,故线程的切换非常迅速且开销小(在同一进程中)

查看进程树

  • pstree以树状结构显示进程信息,包括进程之间的关系

  • 命令格式:pstree [选项...] [参数...]

  • 常用选项:

  • -p #显示进程PID

  • -a #显示完整的命令行

  • -u #列出每个进程所属账号名称

  1. #查看进程树
  2. [root@localhost ~]# pstree
  3. systemd─┬─ModemManager───2*[{ModemManager}]
  4. CentOS7版本:天父进程systemd
  5. CentOS6版本:天父进程initApstart
  6. CentOS5版本:天赋进程init
  7. #以PID形式显示进程信息
  8. [root@localhost ~]# pstree -p
  9. systemd(1)─┬─ModemManager(6714)─┬─{ModemManager}(6739)
  10. #查看系统用户的进程信息
  11. [root@localhost ~]# pstree -p lisi
  12. sshd(15086)───bash(15089)───vim(15244)
  13. [root@localhost ~]# pstree -pa lisi
  14. sshd,15086
  15. └─bash,15089
  16. └─vim,15244 1.txt
  17. #查看系统所有用户的进程
  18. root@localhost ~]# pstree -up
  19. ...
  20. ├─smartd(6726)
  21. ├─sshd(7337)─┬─sshd(8880)───bash(8887)───pstree(15395)
  22. └─sshd(15066)───sshd(15086,lisi)───bash(15089)───vim(15244)
  • ps aux:unix格式静态查看系统进程,查看系统所有进程信息

  • a #显示当前终端所有进程

  • u #以用户格式输出

  • x #当前用户在所有终端下的进程

  • ps -ef:Linux格式静态查看系统进程,查看系统所有进程信息

  • -e #显示系统所有进程

  • -l #以长格式输出信息

  • -f #显示最完整的进程信息

  1. #查看系统所有进程信息
  2. [root@localhost ~]# ps aux
  3. USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
  4. root 1 2.2 0.3 127992 6576 ? Ss 09:08 0:01 /usr/lib/systemd/systemd --switched-root
  5. #个字段含义如下:
  6. user:进程属于那个用户
  7. PID :进程PID
  8. %CPU:进程占用CPU资源百分比
  9. %MEM:进程占用物理内存百分比
  10. VSZ :进程使用掉的虚拟内存量(单位:Kb
  11. RSS :进程占用固定内存量(单位:Kb
  12. TTY :进程在那个终端运行,如果内核直接调用则显示“?”,tty1-tty6表示本机终端登录的用户进程,pts/0-255则表示远程终端登录用户的进程
  13. STAT:进程状态:RRunning)运行,SSleep)休眠,s包含子进程,Tstop)停止,ZZombie)僵尸,+后台进程
  14. START:进程启动时间
  15. TIME :占用CPU运算时间
  16. COMMAND:产生进程的命令
  17. #查看系统所有进程信息
  18. [root@localhost ~]# ps -ef
  19. UID PID PPID C STIME TTY TIME CMD
  20. root 1 0 0 09:08 ? 00:00:01 /usr/lib/systemd/systemd --switched-root --system --dese
  21. #PPID :该进程的父进程ID号

top查看系统健康状态

  • top命令动态来查看系统运行性能及状态信息

  • 命令格式:top [选项...]

  • 常用选项:-d #指定刷新秒数,默认为3秒刷新一次

  • 交互界面显示指令:

  • 键盘上下键翻行

  • h #获取交互模式帮助

  • P(大写) #按照CPU使用资源排序

  • M #按照内存使用资源排序

  • q #退出

  1. [root@localhost ~]# top
  2. top - 21:22:04 up 12:13, 2 users, load average: 0.00, 0.01, 0.05
  3. Tasks: 115 total, 1 running, 114 sleeping, 0 stopped, 0 zombie
  4. %Cpu(s): 0.3 us, 0.3 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
  5. KiB Mem : 1863224 total, 1502920 free, 107872 used, 252432 buff/cache
  6. KiB Swap: 2097148 total, 2097148 free, 0 used. 1565576 avail Mem
  7. PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
  8. 8317 root 20 0 161984 2220 1568 R 0.7 0.1 0:01.62 top
  9. #第一行top每个字段含义如下:
  10. 第二列:21:22:04:当前系统时间
  11. 第三列:up 12:13:系统运行时间,该系统以运行12小时13分钟(up 10 day12:13 代表运行1012小时13分钟)
  12. 第四列:2 users:当前系统登录终端数量
  13. 第五列:load average: 0.00, 0.01, 0.05CPU1分钟,5分钟,15分钟之前平均负载量,根据CPU核数判断系统CPU负载量,1CPU若高于1代表负载过高,2CPU若高于2代表负载过高,依次类推。。。
  14. #第二行Tasks每个字段含义如下:
  15. 第二列:115 total:当前系统中进程的总数量
  16. 第三列:1 running:正在运行的进程数量
  17. 第四列:114 sleeping:正在睡眠的进程数量
  18. 第五列:0 stopped:正在停止的进程数量
  19. 第六列:0 zombie:僵尸进程数量,僵尸进程是当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将成为一个僵尸进程。
  20. #查找僵尸进程与其父进程
  21. ps -A -o stat,ppid,pid,cmd | grep "^Zz"
  22. 命令解释:
  23. -A 参数列出所有进程
  24. -o 自定义输出字段,我们设定显示字段为 stat(状态), ppid(父进程id), pid(进程id),cmd(命令)这四个参数,因为状态为 z或者Z的进程为僵尸进程,所以我们使用grep抓取stat状态为zZ进程
  25. #杀死进程
  26. kill -9 + 父进程号
  27. #第三行%Cpu(s)每个字段含义如下
  28. 第二列:0.0 us:用户进程占用的CPU百分比
  29. 第三列:0.0 sy:系统进程占用的CPU百分比
  30. 第四列:0.0 ni:改变过优先级的用户进程占用的CPU百分比
  31. 第五列:100.0 id:空闲的CPU百分比(重点关注)
  32. 第六列:0.0 wa:等待输入/输出的进程的占用CPU百分比
  33. 第七列:0.0 hi:硬中断请求服务占用的CPU百分比
  34. 第八列:0.0 si:软中断请求服务占用的CPU百分比
  35. 第九列:0.0 st:虚拟时间百分比,当有虚拟机时,虚拟CPU等待实际CPU的时间百分比
  36. #第四行KiB Mem每个字段含义如下:
  37. 第二列:1863224 total:物理内存总量,单位KB
  38. 第三列:1502516 free 空闲内存总量,单位KB
  39. 第四列:108240 used 以使用的内存总量,单位KB
  40. 第五列:252468 buff/cache:块设备与普通文件占用的缓存数量
  41. #第五行KiB Swap每个字段含义如下:
  42. 第二列:2097148 total:交换空间总量,单位KB
  43. 第三列:2097148 free:可用空闲交换空间总量,单位KB
  44. 第四列:0 used::以使用的交换空间总量,单位KB
  45. 第五列:1565180 avail Mem:可用于进程下一次分配的物理内存数量
  46. #第六行每个字段含义如下:
  47. PID:进程PID
  48. USER:进程所有者的用户名
  49. PR:进程优先级执行顺序,越小越优先被执行
  50. NI:负值表示高优先级,正值表示低优先级,越小越优先被执行
  51. VIRT:进程使用的虚拟内存总量,单位kb
  52. RES:进程使用的、未被换出的物理内存大小,单位kb
  53. SHR:共享内存大小,单位kb
  54. S:进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
  55. %CPU:进程使用的CPU百分比(重点关注)
  56. %MEM:进程使用的物理内存百分比(重点关注)
  57. TIME+:进程使用的CPU时间总计,单位1/100
  58. COMMAND:命令名/命令行

检索进程

  • pgrep 通过匹配其程序名,找到匹配的进程

  • 命令格式:pgrep [选项...] [参数...]

  • 常用选项:

  • -l #输出进程名与PID

  • -U #检索指定用户进程

  • -t #检索指定终端进程

  • -x #精确匹配完整进程名

  1. #过滤sshd进程
  2. [root@localhost ~]# pgrep sshd
  3. 7337
  4. 8880
  5. 15066
  6. 15086
  7. 17027
  8. 过滤sshd进程,并显示进程名称
  9. [root@localhost ~]# pgrep -l sshd
  10. 7337 sshd
  11. 8880 sshd
  12. 15066 sshd
  13. 15086 sshd
  14. 17027 sshd
  15. #过滤指定用户的进程
  16. [root@localhost ~]# pgrep -lU lisi
  17. 15086 sshd
  18. 15089 bash
  19. 15244 vim
  20. #按照用户名过滤进程时,选项不要颠倒
  21. [root@localhost ~]# pgrep -Ul lisi
  22. pgrep: invalid user name: l
  23. #查看系统所有终端用户
  24. [root@localhost ~]# who
  25. root pts/0 2021-04-24 14:06 (192.168.0.1)
  26. lisi pts/1 2021-04-24 15:57 (192.168.0.1)
  27. root pts/2 2021-04-24 16:29 (192.168.0.1)
  28. #过滤用户在指定终端开启的进程信息
  29. [root@localhost ~]# pgrep -lU lisi -t pts/1
  30. 15089 bash
  31. 15244 vim
  32. #过滤用户在指定终端开启的进程信息
  33. [root@localhost ~]# pgrep -lU lisi -t pts/3
  34. 19704 bash
  35. 19754 top
  36. #精确匹配进程名(没有则不显示)
  37. [root@localhost ~]# pgrep -x ssh
  38. #精确匹配进程名
  39. [root@localhost ~]# pgrep -xl crond
  40. 7362 crond

进程的前后台调度

  • & #将进程放入后台运行

  • jobs -l #查看后台进程列表

  • fg 进程编号 #将后台进程恢复至前台运行

  • ctrl + z 组合键 #挂起当前进程并放入后台

  • bg 进程编号 #激活后台被挂起进程

  1. [root@localhost ~]# sleep 5m &
  2. [1] 20130
  3. #查看后台进程信息
  4. [root@localhost ~]# jobs -l
  5. [1]+ 20130 运行中 sleep 5m &
  6. #将后台进程放入前台运行
  7. [root@localhost ~]# fg 1
  8. sleep 5m
  9. #挂起前台进程放入后台
  10. [root@localhost ~]# jobs
  11. [1]+ 已停止 sleep 5m
  12. #激活后台的进程
  13. [root@localhost ~]# bg 1
  14. [1]+ sleep 5m &
  15. [root@localhost ~]# jobs -l
  16. [1]+ 20130 运行中 sleep 5m &

杀死进程

  • 杀死进程的方式

  • ctrl + c 组合键结束当前命令程序

  • kill [选项...] PID

  • 常用选项:-l #列出可用进程信号

  • 常用信号:-1重启进程,-9强制杀死进程,-15正常杀死进程(默认信号无需指定)

  • killall -9 进程名 #强制杀死进程

  • killall -9 -u 用户名 #强制杀死该用户所有进程

  • pkill -9 进程名 #强制杀死进程

  • 常用选项:-t 终端号 #提出终端用户

  1. #结束前台正在运行的进程
  2. [root@localhost ~]# sleep 5m
  3. ^C
  4. #启用进程放入后台
  5. [root@localhost ~]# sleep 5m &
  6. [1] 21150
  7. [root@localhost ~]# sleep 6m &
  8. [2] 21155
  9. [root@localhost ~]# sleep 7m &
  10. [3] 21159
  11. [root@localhost ~]# sleep 8m &
  12. [4] 21162
  13. #查看后台进程
  14. [root@localhost ~]# jobs -l
  15. [1] 21150 运行中 sleep 5m &
  16. [2] 21155 运行中 sleep 6m &
  17. [3]- 21159 运行中 sleep 7m &
  18. [4]+ 21162 运行中 sleep 8m &
  19. #杀死后台指定的进程(按照PID)
  20. [root@localhost ~]# kill 21150
  21. #查看后台进程
  22. [root@localhost ~]# jobs -l
  23. [1] 21150 已终止 sleep 5m
  24. [2] 21155 运行中 sleep 6m &
  25. [3]- 21159 运行中 sleep 7m &
  26. [4]+ 21162 运行中 sleep 8m &
  27. [root@localhost ~]# kill 21155
  28. [root@localhost ~]# jobs -l
  29. [2] 21155 已终止 sleep 6m
  30. [3]- 21159 运行中 sleep 7m &
  31. [4]+ 21162 运行中 sleep 8m &
  32. #强制杀死进程
  33. [root@localhost ~]# kill -9 21159
  34. [root@localhost ~]# jobs -l
  35. [3]- 21159 已杀死 sleep 7m
  36. [4]+ 21162 运行中 sleep 8m &
  37. #启动进程
  38. [root@localhost ~]# sleep 4m &
  39. [5] 21402
  40. [root@localhost ~]# sleep 5m &
  41. [6] 21406
  42. [root@localhost ~]# sleep 6m &
  43. [7] 21409
  44. [root@localhost ~]# sleep 7m &
  45. [8] 21412
  46. [root@localhost ~]# jobs -l
  47. [4] 21162 运行中 sleep 8m &
  48. [5] 21402 运行中 sleep 4m &
  49. [6] 21406 运行中 sleep 5m &
  50. [7]- 21409 运行中 sleep 6m &
  51. [8]+ 21412 运行中 sleep 7m &
  52. #按照进程名去杀
  53. [root@localhost ~]# killall sleep
  54. [4] 已终止 sleep 8m
  55. [5] 已终止 sleep 4m
  56. [6] 已终止 sleep 5m
  57. [7]- 已终止 sleep 6m
  58. [8]+ 已终止 sleep 7m
  59. #启动进程
  60. [root@localhost ~]# sleep 5m &
  61. [1] 21491
  62. [root@localhost ~]# sleep 6m &
  63. [2] 21495
  64. [root@localhost ~]# sleep 7m &
  65. [3] 21498
  66. [root@localhost ~]# jobs -l
  67. [1] 21491 运行中 sleep 5m &
  68. [2]- 21495 运行中 sleep 6m &
  69. [3]+ 21498 运行中 sleep 7m &
  70. #按照进程名强制杀死进程
  71. [root@localhost ~]# killall -9 sleep
  72. [1] 已杀死 sleep 5m
  73. [2]- 已杀死 sleep 6m
  74. [3]+ 已杀死 sleep 7m
  75. [root@localhost ~]# who
  76. root pts/0 2021-04-24 14:06 (192.168.0.1)
  77. lisi pts/1 2021-04-24 15:57 (192.168.0.1)
  78. root pts/2 2021-04-24 16:29 (192.168.0.1)
  79. lisi pts/3 2021-04-24 17:14 (192.168.0.1)
  80. #杀死指定用户的所有进程(讲用户提出系统)
  81. [root@localhost ~]# killall -9 -u lisi
  82. [root@localhost ~]# who
  83. root pts/0 2021-04-24 14:06 (192.168.0.1)
  84. root pts/2 2021-04-24 16:29 (192.168.0.1)
  85. #pkill命令演示
  86. [root@localhost ~]# sleep 4m &
  87. [1] 21870
  88. [root@localhost ~]# sleep 5m &
  89. [2] 21873
  90. [root@localhost ~]# sleep 6m &
  91. [3] 21876
  92. [root@localhost ~]# jobs
  93. [1] 运行中 sleep 4m &
  94. [2]- 运行中 sleep 5m &
  95. [3]+ 运行中 sleep 6m &
  96. [root@localhost ~]# pkill sleep
  97. [1] 已终止 sleep 4m
  98. [2]- 已终止 sleep 5m
  99. [3]+ 已终止 sleep 6m
  100. [root@localhost ~]# who
  101. root pts/0 2021-04-24 14:06 (192.168.0.1)
  102. lisi pts/1 2021-04-24 17:47 (192.168.0.1)
  103. root pts/2 2021-04-24 16:29 (192.168.0.1)
  104. lisi pts/3 2021-04-24 17:48 (192.168.0.1)
  105. [root@localhost ~]# pkill -9 -t pts/3

用户登录分析

  • users who w #查看以登录的用户信息(详细度不同)

  • last #显示登录成功的用户信息

  • lastb #显示登录失败的用户信息

  1. [root@localhost ~]# users
  2. [root@localhost ~]# users
  3. lisi root root
  4. #root:以登录系统的用户名
  5. [root@localhost ~]# who
  6. root pts/0 2021-04-24 14:06 (192.168.0.1)
  7. lisi pts/1 2021-04-24 17:47 (192.168.0.1)
  8. root pts/2 2021-04-24 16:29 (192.168.0.1)
  9. #第一列:以登录系统的用户名
  10. #第二列:用户登录的终端编号
  11. #第三列:登陆时间
  12. #第四列:远程登录地址
  13. [root@localhost ~]# w
  14. 08:16:10 up 55 min, 1 user, load average: 0.00, 0.01, 0.05
  15. USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
  16. root pts/0 192.168.0.1 07:21 2.00s 0.10s 0.00s w
  17. #第一行为top命令显示的第一行数据
  18. #第二行每列含义如下:
  19. USER:以登录的用户名
  20. TTY:用户登录终端编号
  21. FROM:登录地址
  22. LOGIN@:登录时间
  23. IDLE:用户空闲时间,这是个计时器,一旦用户执行任何操作,该计时器便会被重置
  24. JCPU:该终端所有进程占用CPU处理时间,包括正在运行和后台作业占用时间。
  25. PCPU:进程执行以后消耗的CPU时间
  26. WHAT:当前正在执行的任务
  27. #显示登录成功用户
  28. [root@localhost ~]# last
  29. lisi pts/1 192.168.0.1 Sat Apr 24 07:56 - 08:03 (00:07)
  30. #第一列:用户名
  31. #第二列:用户登录终端编号
  32. #第三列:登录地址
  33. #第四列:登录起使时间
  34. #第五列:登录结束时间
  35. #第六列:登录持续时间
  36. #查看最近2次登录系统成功的用户
  37. [root@localhost ~]# last -2
  38. lisi pts/3 192.168.0.1 Sat Apr 24 17:48 - 17:50 (00:01)
  39. lisi pts/3 192.168.0.1 Sat Apr 24 17:47 - 17:48 (00:00)
  40. #查看登录失败用户
  41. [root@localhost ~]# lastb
  42. lisi ssh:notty 192.168.0.1 Sat Apr 24 08:52 - 08:52 (00:00)

RHCSA_DAY11的更多相关文章

随机推荐

  1. python基本函数增删改排序,用range()求和

    a=["blue","red","brack"] print(len(a))#列表长度 a.append("yellow" ...

  2. EXCEL根据某一列单元格特定标点符号分行,其它列内容一致

    注意事项:此方法注意运用excel空值单元格填充,因此数据处理之前,如果存在值为空的,请特殊处理,后期处理完再替换为原来的空值 1.在决定分行数的列后插入一列 2.根据逗号之前值最多的数量来决定分行数 ...

  3. Dagger2入门,以初学者角度

    2016-12-21 更新:添加@Subcomponent注解以及Lazy与Provider的使用,本文基本完结!如果有好的建议请提出,感谢大家的支持,谢谢 依赖注入 Dagger2是Android中 ...

  4. 重新整理 .net core 实践篇————网关[三十六]

    前言 简单整理一下网关. 正文 在介绍网关之前,介绍一下BFF,BFF全称是Backend For Frontend,它负责认证授权,服务聚合,目标是为前端提供服务. 说的通透一点,就是有没有见过这种 ...

  5. 27、异常处理(except)

    27.1.什么是异常: 1.异常介绍: 异常就是程序运行时发生错误的信号,在程序出错的时候,则会产生一个异常,若程序没有处理它,则会抛出该异常, 程序的运行也会随之终止,在python中,错误触发的异 ...

  6. Python日志模块的管理(二)

    日志模块可以通过封装一个类,也可以通过配置文件取管理 新建1个log.ini文件 [loggers] keys=root [handlers] keys=fileHandler,streamHandl ...

  7. XCTF EasyRE

    一.查壳 无壳,并且发现是vc++编译的 二.拖入ida,来静态分析,这题让我深刻感觉到汇编的nb. 这段算是灵性的一段了,单从静态语句来看,发现分析不出啥,只能靠猜一下,我当时猜的是将输入的字符串又 ...

  8. Android单元测试问题解决

    1.'java.lang.RuntimeException: Method isEmpty in android.text.TextUtils not mocked'报错 https://www.ji ...

  9. 团队开发day06

    实现功能,通过连接,获取到品牌商存入数据库的数据, 将数据返回到list集合,展示在安卓前端 出现问题:servlet响应请求返回数据格式出错,利用gson类将java类 转化为jsonobject对 ...

  10. final修饰符(6)-final类

    final修饰的类不可以有子类,例如:java.lang.Math类就是一个final类,它不可以有子类 子类继承父类,可以访问父类的内部数据,可以重写父类的方法来改变父类方法的实现细节,可能导致不安 ...