CentOS 7文件系统与日志分析详解

Linux 文件系统

在处理 Linux 系统出现的各种故障时,故障的症状是最易发现的,而导致这一故障的原因才是最终排除故障的关键。熟悉 Linux 系统中常见的日志文件,了解一般故障的分析与解决办法,将有助于管理员快速定位故障点、“对症下药”、并及时解决各种系统问题。

inode 与 block 详解

  • 文件存储再硬盘上,硬盘最小存储单位是“扇区”,每个扇区存储512字节

  • 文件数据包括元信息与实际数据

  • 元信息包含文件属性信息,文件打开来输入的内容为实际数据

  • block(块)

    • 连续的八个扇区组成一个block (4k)
    • 是文件存取的最小单位
  • inode(索引节点)
    • 中文译名为“索引节点”,也就i节点
    • 用于存储文件元信息

关于CentOS 7文件系统与日志分析

inode的内容

inode包含文件的元信息

  • 文件的字节数
  • 文件拥有着的User ID
  • 文件的Group ID
  • 文件的读、写、执行权限
  • 文件的时间戳
  • ……

使用stat命令查看inode信息

[root@localhost mnt]# stat abc.txt           //查看abc文件inode信息文件:"abc.txt"大小:12         块:8          IO 块:4096   普通文件
设备:802h/2050d   Inode:18123362    硬链接:1
权限:(0644/-rw-r--r--)  Uid:(    0/    root)   Gid:(    0/    root)
环境:unconfined_u:object_r:mnt_t:s0
最近访问:2019-09-02 04:12:18.210370997 +0800
最近更改:2019-09-02 04:12:18.210370997 +0800
最近改动:2019-09-02 04:12:18.210370997 +0800
创建时间:-

Linux系统文件三个主要的时间属性

  • ctime(change time):最后一次改变文件或目录(属性)的时间
  • atime(access time):最后一次访问文件或目录的时间
  • mtime(modify time):最后一次修改文件或目录(内容)的时间

目录文件的结构

  • 目录也是文件
  • 目录文件的结构

关于CentOS 7文件系统与日志分析

  • 每个inode都有一个号码,操作系统用inode号码来识别不同的文件
  • Linux系统内部不使用文件名,而使用inode号命来识别文件
  • 对于用户来说,文件名只是inode号码便于识别的别称

inode的号码

  • 用户通过文件名打开文件时,系统内部的过程

    • 系统找到这个文件名对应的inode号码
    • 通过inode号码,获取inode信息
    • 根据inode信息,找到文件数据所在的block,读出数据
  • 查看inode号码的方法
    • ls -i命令:查看文件名对应的inde号码
[root@localhost mnt]# ls -i abc.txt           //查看文件节点信息 
18123362 abc.txt

inode的大小

  • inode也会消耗硬盘空间,每个inode的大小,一般时128字节或256字节

  • 格式化文件系统时确定inode的总数

  • 使用df -i命令可以查看每个硬盘分区的inode总数和已经使用的数量
[root@localhost mnt]# df -i               //查看分区节点信息
文件系统          Inode 已用(I)  可用(I) 已用(I)% 挂载点
/dev/sda2      10485760  121203 10364557       2% /
devtmpfs         229708     376   229332       1% /dev
tmpfs            233381       1   233380       1% /dev/shm
tmpfs            233381     560   232821       1% /run
tmpfs            233381      16   233365       1% /sys/fs/cgroup
/dev/sda5       5241856     146  5241710       1% /home
/dev/sda1       3145728     328  3145400       1% /boot
tmpfs            233381       6   233375       1% /run/user/42
tmpfs            233381      17   233364       1% /run/user/0
/dev/sr0              0       0        0        - /run/media/root/CentOS 7 x86_64

inode的特殊作用

  • 由于inode号码与文件名分离,导致一些Linux系统具有以下的现象
    • 当文件名包换特殊字符,可能无法正常删除文件,直接删除inode,也可以删除文件
    • 按节点号删除文件命令:find ./* -inum [节点号] -delete
[root@localhost mnt]# ls -i
16777284 ac1.txt  18123362 ac2.txt  18123366 ac3.txt  18123370 ac4.txt  18123371 ac5.txt
[root@localhost mnt]# find ./* -inum 16777284 -delete
[root@localhost mnt]# ls -i
18123362 ac2.txt  18123366 ac3.txt  18123370 ac4.txt  18123371 ac5.txt
  • 移动或重命名文件时,只改变文件名,不影响inode号码
[root@localhost mnt]# ls -i
18123362 ac2.txt  18123366 ac3.txt  18123370 ac4.txt  18123371 ac5.txt
[root@localhost mnt]# mv ac2.txt /opt
[root@localhost mnt]# ls -i /opt
18123362 ac2.txt   1389838 rh
  • 打开一个文件后,系统通过inode号码来识别该文件,不再考虑文件名

访问文件的简单流程

关于CentOS 7文件系统与日志分析

xfs 类型文件备份和恢复

xfs文件的恢复需要我们先把文件备份到另一块磁盘,当文件损坏时可以通过备份的文件进行恢复(这里面的备份文件是通过对文件做固定格式的压缩来进行备份)。

  • xfs 类型的文件可使用 xfsdump 与 xfsrestore 工具进行备份恢复。若系统中未安装xfsdump 与 xfsrestore 工具,可以通过yum来安装工具。
[root@localhost mnt]# yum install xfsdump -y
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile* base: centos.ustc.edu.cn* extras: centos.ustc.edu.cn* updates: centos.ustc.edu.cn
正在解决依赖关系
--> 正在检查事务
---> 软件包 xfsdump.x86_64.0.3.1.4-1.el7 将被 升级
---> 软件包 xfsdump.x86_64.0.3.1.7-1.el7 将被 更新
...//省略部分内容...
  • 命令格式

    xfsdump -f 备份存放位置 要备份的路径或设备文件

  • xfsdump 的备份级别有两种

    • 0:表示完全备份(默认为0)
    • 1~9:表示增量备份
  • 常用的备份参数
    • -f:指定备份文件目录
    • -L:指定标签 session label
    • -M:指定设备标签 media label
    • -s:备份单个文件,-s 后面不能直接跟路径。
[root@localhost ~]# fdisk /dev/sdb          //创建新磁盘
欢迎使用 fdisk (util-linux 2.23.2)。更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。Device does not contain a recognized partition table
使用磁盘标识符 0x57599cea 创建新的 DOS 磁盘标签。命令(输入 m 获取帮助):n
Partition type:p   primary (0 primary, 0 extended, 4 free)e   extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):
将使用默认值 41943039
分区 1 已设置为 Linux 类型,大小设为 20 GiB命令(输入 m 获取帮助):w
The partition table has been altered!Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# mkfs.xfs /dev/sdb1         //格式化磁盘
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=1310656 blks=                       sectsz=512   attr=2, projid32bit=1=                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=5242624, imaxpct=25=                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2=                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@localhost ~]# mkdir /opt/data           //创建挂载点
[root@localhost ~]# mount /dev/sdb1 /opt/data   //挂载创建的磁盘
[root@localhost ~]# cp /etc/passwd /opt/data   //将passwdd目录复制到挂载的磁盘中
[root@localhost ~]# ls /opt/data              //查看文件
passwd
[root@localhost ~]# xfsdump -f /mnt/xfs_dump /dev/sdb1  //使用命令备份文件
xfsdump: using file dump (drive_simple) strategy
xfsdump: version 3.1.7 (dump format 3.0) - type ^C for status and control============================= dump label dialog ==============================please enter label for this dump session (timeout in 300 sec)-> xfs_dump                         //输入备份的文件名
session label entered: "xfs_dump"--------------------------------- end dialog ---------------------------------xfsdump: level 0 dump of localhost.localdomain:/opt/data
xfsdump: dump date: Mon Sep  2 05:27:29 2019
xfsdump: session id: 96c17954-e969-4041-9d9e-4bd59746ddab
xfsdump: session label: "xfs_dump"
xfsdump: ino map phase 1: constructing initial dump list
xfsdump: ino map phase 2: skipping (no pruning necessary)
xfsdump: ino map phase 3: skipping (only one dump stream)
xfsdump: ino map construction complete
xfsdump: estimated dump size: 25216 bytes
xfsdump: /var/lib/xfsdump/inventory created============================= media label dialog =============================please enter label for media in drive 0 (timeout in 300 sec)-> sdb1                          //输入要备份设备
media label entered: "sdb1"--------------------------------- end dialog ---------------------------------xfsdump: creating dump session media file 0 (media 0, file 0)
xfsdump: dumping ino map
xfsdump: dumping directories
xfsdump: dumping non-directory files
xfsdump: ending media file
xfsdump: media file size 24264 bytes
xfsdump: dump size (non-dir files) : 2592 bytes
xfsdump: dump complete: 13 seconds elapsed
xfsdump: Dump Summary:
xfsdump:   stream 0 /mnt/xfs_dump OK (success)
xfsdump: Dump Status: SUCCESS                    //备份成功
[root@localhost ~]# rm -rf /opt/data/*          //删除磁盘中文件
[root@localhost ~]# ls /opt/data                 //查看文件是否删除
[root@localhost ~]# xfsrestore -f /mnt/xfs_dump /opt/data    //执行命令恢复文件
xfsrestore: using file dump (drive_simple) strategy
xfsrestore: version 3.1.7 (dump format 3.0) - type ^C for status and control
xfsrestore: searching media for dump
xfsrestore: examining media file 0
xfsrestore: dump description: 
xfsrestore: hostname: localhost.localdomain
xfsrestore: mount point: /opt/data
xfsrestore: volume: /dev/sdb1
xfsrestore: session time: Mon Sep  2 05:27:29 2019
xfsrestore: level: 0
xfsrestore: session label: "xfs_dump"
xfsrestore: media label: "sdb1"
xfsrestore: file system id: 2e3df4e8-dd92-46f7-84ca-f254c4e579bd
xfsrestore: session id: 96c17954-e969-4041-9d9e-4bd59746ddab
xfsrestore: media id: d27aafc8-a405-4a8f-b7f0-1a018a7026ee
xfsrestore: using online session inventory
xfsrestore: searching media for directory dump
xfsrestore: reading directories
xfsrestore: 1 directories and 1 entries processed
xfsrestore: directory post-processing
xfsrestore: restoring non-directory files
xfsrestore: restore complete: 0 seconds elapsed
xfsrestore: Restore Summary:
xfsrestore:   stream 0 /mnt/xfs_dump OK (success)
xfsrestore: Restore Status: SUCCESS
[root@localhost ~]# ls /opt/data          //查看文件是否恢复
passwd                                 //成功恢复文件
  • xfsdump使用的限制
    • 只能备份已挂载的文件系统
    • 必须使用root的权限才能操作
    • 只能备份XFS文件系统
    • 备份后的数据只能让xfsrestore解析
    • 不能备份两个具有相同UUID的文件系统

日志文件

日志的功能

  • 用于记录系统、程序运行中发生的各种事件
  • 通过阅读日志,有助于诊断和解决系统故障

日志文件的分类

  • 内核及系统日志

    • 由系统服务syslog统一进行管理,日志格式基本相似
  • 用户日志

    • 记录系统用户登录及退出系统的相关信息
  • 程序日志
    • 由各种应用程序独立管理的日志文件,记录格式不统一

日志保存位置

  • 默认位于/var/log目录下

主要日志文件介绍

  • 内核及公共消息日志:/var/log/messages

  • 计划任务日志:/var/log/cron

  • 系统引导日志:/var/log/dmesg

  • 邮件系统日志:/var/log/maillog

  • 用户登录日志:/var/log/lastlog、 /var/log/secure、 /var/log/wtmp、 /var/run/btmp

日志的管理

  • 由系统服务rsyslogd统一管理
    • 软件包:reyelog-7.4.7-16.el7.x86_64
    • 主要程序:/sbin/rsyslogd
    • 配置文件:/etc/rsyslog.conf
[root@localhost ~]# vim /etc/rsyslog.conf      //查看日志文件配置信息# rsyslog configuration file# For more information see /usr/share/doc/rsyslog-*/rsyslog_conf.html
# If you experience problems, see http://www.rsyslog.com/doc/troubleshoot.html#### MODULES ##### The imjournal module bellow is now used as a message source instead of imuxsock.
$ModLoad imuxsock # provides support for local system logging (e.g. via logger command)
$ModLoad imjournal # provides access to the systemd journal
#$ModLoad imklog # reads kernel messages (the same are read from journald)
#$ModLoad immark  # provides --MARK-- message capability# Provides UDP syslog reception
#$ModLoad imudp
#$UDPServerRun 514# Provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514#### GLOBAL DIRECTIVES ##### Where to place auxiliary files
$WorkDirectory /var/lib/rsyslog# Use default timestamp format
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
...//省略部分内容...
[root@localhost ~]# cd /var/log         //查看日志文件目录
[root@localhost log]# ls
anaconda  dmesg               libvirt   rhsm               tallylog                Xorg.0.log
audit     dmesg.old           maillog   sa                 tuned                   Xorg.0.log.old
boot.log  firewalld           messages  samba              vmware-vgauthsvc.log.0  Xorg.1.log
btmp      gdm                 ntpstats  secure             vmware-vmsvc.log        Xorg.9.log
chrony    glusterfs           pluto     speech-dispatcher  vmware-vmusr.log        yum.log
cron      grubby_prune_debug  ppp       spooler            wpa_supplicant.log
cups      lastlog             qemu-ga   sssd               wtmp
  • 查看系统日志文件

    [root@localhost log]# vim messages                  //查看系统日志文件Aug 10 03:53:40 localhost journal: Runtime journal is using 8.0M (max allowed 91.1M, trying to leave 136.7M free of 903.6M available → current limit 91.1M).
    Aug 10 03:53:40 localhost kernel: Initializing cgroup subsys cpuset
    Aug 10 03:53:40 localhost kernel: Initializing cgroup subsys cpu
    Aug 10 03:53:40 localhost kernel: Initializing cgroup subsys cpuacct
    Aug 10 03:53:40 localhost kernel: Linux version 3.10.0-693.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc  version 4.8.5 20150623 (Red Hat 4.8.5-16) (GCC) ) #1 SMP Tue Aug 22 21:09:27 UTC 2017
    Aug 10 03:53:40 localhost kernel: Command line: BOOT_IMAGE=/vmlinuz-3.10.0-693.el7.x86_64   root=UUID=729c9a26-dfdc-40f9-ae91-1ade55be51bb ro crashkernel=auto rhgb quiet LANG=zh_CN.UTF-8
    Aug 10 03:53:40 localhost kernel: Disabled fast string operations
    Aug 10 03:53:40 localhost kernel: e820: BIOS-provided physical RAM map:
    Aug 10 03:53:40 localhost kernel: BIOS-e820: [mem 0x0000000000000000-0x000000000009ebff] usable
    Aug 10 03:53:40 localhost kernel: BIOS-e820: [mem 0x000000000009ec00-0x000000000009ffff] reserved
    Aug 10 03:53:40 localhost kernel: BIOS-e820: [mem 0x00000000000dc000-0x00000000000fffff] reserved
    ...//省略部分内容...
  • last命令查看用户登录日志
[root@localhost log]# last
root     pts/0        192.168.144.1    Mon Sep  2 05:17   still logged in   
reboot   system boot  3.10.0-693.el7.x Mon Sep  2 05:17 - 05:58  (00:40)    
root     pts/0        192.168.144.1    Mon Sep  2 04:11 - crash  (01:05)    
root     :0           :0               Mon Sep  2 04:11 - crash  (01:05)    
reboot   system boot  3.10.0-693.el7.x Mon Sep  2 04:10 - 05:58  (01:47)    
root     pts/0        :0               Sun Aug 25 01:10 - 01:10  (00:00)    
root     :0           :0               Sun Aug 25 01:10 - crash (8+03:00)   
...//省略部分内容...
  • lastb查看用户登录次数日志
[root@localhost log]# lastb
root     :0           :0               Sun Aug 25 01:10 - 01:10  (00:00)    
root     :1           :1               Sat Aug 10 06:26 - 06:26  (00:00)    btmp begins Sat Aug 10 06:26:22 2019
  • 查看程序日志文件

    1、安装httpd服务,搭建Apache网站服务;然后关闭防火墙,使宿主机可以访问

[root@localhost ~]# yum install httpd -y   //安装httpd服务
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile* base: centos.ustc.edu.cn* extras: centos.ustc.edu.cn* updates: centos.ustc.edu.cn
正在解决依赖关系
--> 正在检查事务
---> 软件包 httpd.x86_64.0.2.4.6-89.el7.centos.1 将被 安装
...//省略部分内容...
[root@localhost ~]# systemctl start httpd              //开启服务
[root@localhost ~]# systemctl stop firewalld.service    //关闭防火墙
[root@localhost ~]# setenforce 0                       
[root@localhost ~]# cd /var/log               //查看日志文件目录,看是否生成httpd日志闻文件目录
[root@localhost log]# ls
anaconda  dmesg               lastlog   qemu-ga            sssd                    wtmp
audit     dmesg.old           libvirt   rhsm               tallylog                Xorg.0.log
boot.log  firewalld           maillog   sa                 tuned                   Xorg.0.log.old
btmp      gdm                 messages  samba              vmware-vgauthsvc.log.0  Xorg.1.log
chrony    glusterfs           ntpstats  secure             vmware-vmsvc.log        Xorg.9.log
cron      grubby_prune_debug  pluto     speech-dispatcher  vmware-vmusr.log        yum.log
cups      httpd               ppp       spooler            wpa_supplicant.log

2、通过宿主机访问搭建的网站后,查看系统程序的日志文件

关于CentOS 7文件系统与日志分析

[root@localhost log]# cd httpd    //进入httpd程序目录
[root@localhost httpd]# ls 
access_log  error_log
[root@localhost httpd]# vim access_log     //查看程序日志文件192.168.144.1 - - [02/Sep/2019:06:12:48 +0800] "GET /noindex/css/bootstrap.min.css HTTP/1.1" 200 19341 "http://192.168.144.133/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36"
192.168.144.1 - - [02/Sep/2019:06:12:48 +0800] "GET /noindex/css/open-sans.css HTTP/1.1" 200 5081 "http://192.168.144.133/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36"
192.168.144.1 - - [02/Sep/2019:06:12:48 +0800] "GET /images/apache_pb.gif HTTP/1.1" 200 2326 "http://192.168.144.133/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36"
192.168.144.1 - - [02/Sep/2019:06:12:48 +0800] "GET /images/poweredby.png HTTP/1.1" 200 3956 "http://192.168.144.133/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36"
192.168.144.1 - - [02/Sep/2019:06:12:48 +0800] "GET /noindex/css/fonts/Light/OpenSans-Light.woff HTTP/1.1" 404 241 "http://192.168.144.133/noindex/css/open-sans.css" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36"
192.168.144.1 - - [02/Sep/2019:06:12:48 +0800] "GET /noindex/css/fonts/Bold/OpenSans-Bold.woff HTTP/1.1" 404 239 "http://192.168.144.133/noindex/css/open-sans.css" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.132 Safari/537.36"
192.168.144.1 - - [02/Sep/2019:06:12:48 +0800] "GET /noindex/css/fonts/Bold/OpenSans-Bold.ttf HTTP/1.1" 404 238 "http://192.168.144.133/noindex/css/open-sans.css" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) 

日志消息的级别

  • 0 EMERG(紧急):会导致主机系统不可用的情况
  • 1 ALERT(警告):必须马上采取措施解决问题
  • 2 CRIT (严重):比较严重的情况
  • 3 ERR (错误):运行出现错误
  • 4 WARNING(提醒):可能会影响系统功能的事件
  • 5 NOTICE (注意):不会影响系统但值得注意
  • 6 INFO(信息):一般信息
  • 7 DEBUG (调试):程序员调试信息

日志管理策略

  • 及时做好备份和归档
  • 延长日志保存期限
  • 控制日志访问权限
  • 日志中可能会包含各类敏感信息,如账户、口令等

集中管理日志

  • 将服务器的日志文件发到统一的日志文件服务器

  • 便于日志信息的同一收集、整理和分析
  • 杜绝日志信息的意外丢失、恶意篡改或删除

Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/438893.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle同一个示例两个用户的数据同步_分享两个shell脚本--一键统计Oracle数据库用户信息...

概述今天主要分享一下两个shell脚本,主要是为了查看所有数据库用户及其表空间,统计某个指定用户的明细,下面一起来看看吧~数据库连接脚本use script settdb.sh for DB login details registry#!/bin/bashtmp_username$SH_USERNAMEtmp_passwor…

plsql视图添加表字段_教你不到两分钟,快速创建数据透视图

如果说数据透视表给我们提供了灵活、快捷的数据计算工具, 那么数据透视图就是更直观、动态地展现大批量数据的变化规律和趋势。数据透视图作为数据透视表中的重点内容,高阶的内容包括数据透视图的编辑、美化成高大上的数据分析图表。与万能切片器结合使用实现多表甚…

c datatable导入mysql_《项目经验》–简单三层使用DataTable向数据库表批量导入数据—向SqlServer一张表中导入数据 | 学步园...

向数据库的一张表中添加数据,可以采用单个添加,即一条数据、一条数据的添加;也可以采用批量导入,依次将好些条数据写入数据库的一张表中。文本借助实例《添加系列信息》讲解一种向数据库批量导入数据的方法。1.界面设计观看一下添…

项目架构开发:数据访问层之Cache

数据访问层简单介绍 数据访问层,提供整个项目的数据访问与持久化功能。在分层系统中所有有关数据访问、检索、持久化的任务,最终都将在这一层完成。 来看一个比较经典的数据访问层结构图 大概可以看出如下信息 1、有缓存、日志、异常处理、数据CRUD、…

jquery mysql实现加入购物车_jQuery实现加入购物车飞入动画效果

HTML首先载入jQuery库文件和jquery.fly.min.js插件。接着,将商品信息html结构布置好,本例中,我们用四个商品并排布置,每个商品box中包括有商品图片、价格、名称以及加入购物车按钮等信息。¥3499.00LG 49LF5400-CA 49寸…

结合vue、react、angular谈谈MVC、MVP、MVVM框架

首先,在谈这个话题之前, 我们有必要了解一下库和框架的区别。 我们先来看react官网以及vue官网对他们的定位: react: vue: react我们不说了,官网上明明白白说了,人家是一个library,用于构建用户界面。 v…

先进的ASP.NET开源工作流快速开发框架 - RoadFlow

.net可视化工作流引擎RoadFlow - 设计概述 RoadFlow是天知软件旗下基于.NET的工作流快速开发平台,由从事六年以上OA及工作流开发与实施的团队设计开发,该工作流平台已应用于众多大型企事业单位。拥有全浏览器兼容的可视化流程设计器、表单设计器、基于角…

view [bootstrap-4] not found如何解决_Dubbo如何处理业务异常,这个一定要知道哦

前言我们在开发应用系统时,不可避免的要使用到我们自己定义的异常,所以我们一般通常会用到自定义的业务异常类BusinessException,这个异常会继承extends RuntimeException,当发生业务限制的时候,会throw出来。问题在Sp…

android 加载网络bitmap图片 oom 简书_Android常见问题--ImageView加载图片OOM

开发中给ImageView加载一个高质量图片时,APP抛出了“Canvas: trying to draw too large(840253440bytes) bitmap.”的异常。猜测是图片占用内存太大,超出APP被分配的内存(我用的mate9,APP被分的内存差不多200m),造成了OOM。解决方…

matlab连接mysql教程视频_Matlab建立到Oracle数据库的连接

Linux下的配置过程和Windows一样,如下:1、将Oracle JDBC的JAR包拷贝到Matlab的相关目录(..\matlab\java\jar\toolbox\)下。一、Matlab通过ODBC建立到Oracle数据库的连接1、在Windows下“开始”→“控制面板”→“性能和维护”→“管理工具”,…

C# App.config学习

进入公司一年多来&#xff0c;对配置文件添加了不少参数&#xff0c;但是从未想过这些参数是如何被读取出来的&#xff0c;今天把读取参数的处理看了一下&#xff0c;收获不少。假定有App.config如下 <?xml version"1.0" encoding"utf-8" ?> <…

大数据-----软件开发模型(详细讲解)

大数据学习免费学习资料&#xff08;免费教程&#xff09; 软件工程中&#xff0c;常用的开了模型有四种&#xff1a;瀑布模型、原型模型、增量模型和螺旋模型。 ⒈瀑布模型包括计划&#xff0c;需求分析、设计、编码、测试、运行维护六个阶段&#xff0c;阶段自上而下&#x…

C#中struct和class的区别详解

本文详细分析了C#中struct和class的区别&#xff0c;对于C#初学者来说是有必要加以了解并掌握的。 简单来说&#xff0c;struct是值类型&#xff0c;创建一个struct类型的实例被分配在栈上。class是引用类型&#xff0c;创建一个class类型实例被分配在托管堆上。但struct和cla…

ssm框架搭建连接mysql_从零开始搭建SSM框架(Spring + Spring MVC + Mybatis)

最近在回顾和总结一些技术&#xff0c;想到了把之前比较火的 SSM 框架重新搭建出来&#xff0c;作为一个小结&#xff0c;同时也希望本文章写出来能对大家有一些帮助和启发&#xff0c;因本人水平有限&#xff0c;难免可能会有一些不对之处&#xff0c;欢迎各位大神拍砖指教&am…

基于TFS实践敏捷-可视化管理

TFS是基于微软平台一套不错的系统&#xff0c;支持源码管理运行调试持续集成自动化测试Bug管理代码评审任务项管理文档管理沟通管理。 基于TFS 2015实践看板管理&#xff0c;让团队的数据可视化&#xff0c;让大家更多的关心产品、关注团队的努力&#xff0c;增强沟通、及时反映…

[转载]基于TFS实践敏捷-修复Bug和执行代码评审

本主题阐释了这些功能&#xff0c;以继续这一关注虚拟敏捷团队成员的一天的教程。 Peter 忙于编写一些代码以完成积压工作 (backlog) 项任务。但是&#xff0c;他的同事发现了一个阻碍他们工作的 Bug&#xff0c;他想立即修复此 Bug。 他暂停了手中的工作并修复此 Bug。 他请求…

单元测试入门

https://docs.microsoft.com/zh-cn/visualstudio/test/getting-started-with-unit-testing?viewvs-2019 使用 Visual Studio 定义和运行单元测试&#xff0c;使代码保持正常运行、确保代码覆盖率并在客户之前找到错误和缺陷。 经常运行单元测试&#xff0c;确保代码正常运行。…

.net开源框架简介和通用技术选型建议

.net体系 .net core .net 类库 asp.net mvc asp.net webapi asp.net core EF 跨平台和运行时解决方案&#xff08;解决方案&#xff09; Katana&#xff1a;微软基于OWIN规范实现的非IIS寄宿ASP.NET和MVC等。 MONO.NET&#xff1a;跨平台的.NET运行环境&#xff0c;让.NE…

JAVA 2048源码_java实现2048游戏源代码

本文实例为大家分享了java实现2048游戏源代码&#xff0c;供大家参考&#xff0c;具体内容如下一.主要功能&#xff1a;1、游戏初始化&#xff1a;新建游戏44的16宫格画布&#xff0c;随机格子上生成2或者4两个数字2、格子的移动&#xff1a;先判断能否移动&#xff0c;移动后判…

开源干货!.NET Core + Vue.js通用动态权限(RBAC)管理系统框架[DncZeus]开源

DncZeus 前言 关于 DncZeus DncZeus Dnc Zeus "Dnc"--.Net Core 的缩写&#xff1b; "Zeus"--中文译为宙斯&#xff0c;是古希腊神话中的众神之王&#xff0c;奥林匹斯十二主神之首&#xff0c;统治宇宙万物的至高无上的主神&#xff08;在古希腊神…