linux基本功系列之lsof命令实战
文章目录
- 前言
- 一. lsof命令介绍
- 二. 语法格式及常用选项
- 三. 参考案例
- 3.1 显示系统打开的文件
- 3.2 查找某个文件相关的进程
- 3.3 列出某个用户打开的文件信息
- 3.4 列出某个程序进程所打开的文件信息
- 3.5 查看某个进程号打开的文件
- 3.6 列出所有的网络连接
- 3.7 列出谁在使用某个端口
- 3.8 恢复误删除的文件
- 总结
前言
大家好,又见面了,我是沐风晓月,本文是专栏【linux基本功-基础命令实战】的第45篇文章。
专栏地址:[linux基本功-基础命令专栏] , 此专栏是沐风晓月对Linux常用命令的汇总,希望能够加深自己的印象,以及帮助到其他的小伙伴😉😉。
如果文章有什么需要改进的地方还请大佬不吝赐教👏👏。
🏠个人主页:我是沐风晓月
🧑个人简介:大家好,我是沐风晓月,双一流院校计算机专业😉😉
💕 座右铭: 先努力成长自己,再帮助更多的人 ,一起加油进步🍺🍺🍺
💕欢迎大家:这里是CSDN,我总结知识的地方,喜欢的话请三连,有问题请私信😘
一. lsof命令介绍
lsof命令用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP),是十分方便的系统监视工具,因为lsof命令需要访问核心内存和各种文件,所以需要root用户执行。
lsof 查看的文件可以是:
- 普通文件
- 目录
- 字符或块设备文件
- 共享库
- 管道、命名管道
- 符号链接
- 网络文件(如 NFS file、网络 socket,Unix 域名 socket)
- 其它类型的文件,等等
二. 语法格式及常用选项
常用的命令选项如下表:
参数 | 描述 |
---|---|
-a | 列出打开文件存在的进程 |
-c | <进程名> 列出指定进程所打开的文件 |
-g | 列出GID号进程详情 |
-d | <文件号> 列出占用该文件号的进程 |
+d | <目录> 列出目录下被打开的文件 |
+D | <目录> 递归列出目录下被打开的文件 |
-n | <目录> 列出使用NFS的文件 |
-i | <条件> 列出符合条件的进程。(4、6、协议、:端口、 @ip ) |
-p | <进程号> 列出指定进程号所打开的文件 |
-u | 列出UID号进程详情 |
-h | 显示帮助信息 |
-v | 显示版本信息 |
三. 参考案例
3.1 显示系统打开的文件
也就是查找谁在使用文件系统:
在终端下输入lsof即可显示系统打开的文件,因为 lsof 需要访问核心内存和各种文件,所以必须以 root 用户的身份运行它才能够充分地发挥其功能。
[root@mufenggrow ~]# lsof |head -5
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root cwd DIR 253,0 224 64 /
systemd 1 root rtd DIR 253,0 224 64 /
systemd 1 root txt REG 253,0 1616360 17335469 /usr/lib/systemd/systemd
systemd 1 root mem REG 253,0 20112 171185 /usr/lib64/libuuid.so.1.3.0
[root@mufenggrow ~]#
输出的内容,第一行的参数解释:
参数 | 描述 |
---|---|
COMMAND: | 进程的名称 |
PID | 进程标识符 |
USER | 进程所有者 |
FD | 文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等 |
TYPE | 文件类型,如DIR、REG等 |
DEVICE | 指定磁盘的名称 |
SIZE | 文件的大小 |
NODE | 索引节点(文件在磁盘上的标识) |
NAME | 打开文件的确切名称 |
关于FD列的介绍:
FD 列中的文件描述符cwd 值表示应用程序的当前工作目录,这是该应用程序启动的目录,除非它本身对这个目录进行更改
txt 类型的文件是程序代码,如应用程序二进制文件本身或共享库,如上面代码中显示的 /usr/lib/systemd/systemd程序
其他常用的参数如下表:
参数 | 描述 |
---|---|
cwd | 表示current work dirctory,即:应用程序的当前工作目录,这是该应用程序启动的目录,除非它本身对这个目录进行更改 |
txt | 该类型的文件是程序代码,如应用程序二进制文件本身或共享库,如上列表中显示的 /sbin/init 程序 |
lnn | library references (AIX); |
er | FD information error (see NAME column); |
jld | jail directory (FreeBSD); |
ltx | shared library text (code and data); |
mem | memory-mapped file; |
mmap | memory-mapped device; |
pd | parent directory; |
rtd | root directory; |
tr | kernel trace file (OpenBSD); |
0 | 表示标准输出 |
1 | 表示标准输入 |
2 | 表示标准错误 |
一般在标准输出、标准错误、标准输入后还跟着文件状态模式:r、w、u等
(1)u:表示该文件被打开并处于读取/写入模式
(2)r:表示该文件被打开并处于只读模式
(3)w:表示该文件被打开并处于
(4)空格:表示该文件的状态模式为unknow,且没有锁定
(5)-:表示该文件的状态模式为unknow,且被锁定
关于Type 列的介绍:
缩写 | 含义 |
---|---|
DIR | 表示目录 |
CHR | 表示字符类型 |
BLK | 块设备类型 |
UNIX UNIX 域套接字 | |
FIFO | 先进先出 (FIFO) 队列 |
IPv4 | 网际协议 (IP) 套接字 |
3.2 查找某个文件相关的进程
查找某个文件相关的进程,换句话说就是查看谁在使用某个文件
[root@mufenggrow ~]# lsof /bin/bash
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
ksmtuned 6230 root txt REG 253,0 964608 50423603 /usr/bin/bash
bash 19925 root txt REG 253,0 964608 50423603 /usr/bin/bash
bash 20483 root txt REG 253,0 964608 50423603 /usr/bin/bash
bash 21114 root txt REG 253,0 964608 50423603 /usr/bin/bash
可以看到PID,进程号,和某个命令command
3.3 列出某个用户打开的文件信息
创建一个mufeng用户,然后使用lsof -u 进行查看,mufeng用户打开的文件信息
[root@mufenggrow ~]# useradd mufeng
[root@mufenggrow ~]# echo 123456 |passwd --stdin mufeng
更改用户 mufeng 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@mufenggrow ~]# su - mufeng
[mufeng@mufenggrow ~]$ vim a.txt
查看mufeng用户打开的文件信息:
[root@mufenggrow ~]# lsof -u mufeng
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
bash 73251 mufeng cwd DIR 253,0 139 33788283 /home/mufeng
bash 73251 mufeng rtd DIR 253,0 224 64 /
bash 73251 mufeng txt REG 253,0 964608 50423603 /usr/bin/bash
如果我们创建好用户但是不登录:
[root@mufenggrow ~]# useradd mufenggrow
[root@mufenggrow ~]# lsof -u mufenggrow
可以看到如果不登录,查看不到任何信息。
如果不想显示某个用户打开的进程,可以使用^
lsof -u ^root 表示不查看root用户打开的进程,换句话说就是root用户打开的进程不显示。
3.4 列出某个程序进程所打开的文件信息
比如我们查看MySQL进程,使用-C 参数, -c 选项将会列出所有以mysql这个进程开头的程序的文件
[root@mufenggrow ~]# yum install mariadb -y
## 此时没有启动进程,可以发现未输出任何内容
[root@mufenggrow ~]# lsof -c mysql
#启动MySQL
[root@mufenggrow ~]# systemctl restart mariadb
[root@mufenggrow ~]# lsof -c mysql
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld_sa 73597 mysql cwd DIR 253,0 224 64 /
mysqld_sa 73597 mysql rtd DIR 253,0 224 64 /
mysqld_sa 73597 mysql txt REG 253,0 964608 50423603
如果想看多个进程打开的多个文件,可以加多个-c参数。
比如:
lsof -c mysql -c apache
3.5 查看某个进程号打开的文件
这里用到-p参数,查看进程号为1的进程号打开的文件
[root@mufenggrow ~]# lsof -p 1
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root cwd DIR 253,0 224 64 /
systemd 1 root rtd DIR 253,0 224 64 /
如果要查看多个进程号对应的文件:
lsof -p 1,2,3
3.6 列出所有的网络连接
在这里我们可以使用 -i 列出网络连接
-i tcp 表示列出所有tcp相关的网络连接信息
-i upd 表示列出所有UDP相关的网络连接信息
[root@mufenggrow ~]# lsof -i udp
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root 87u IPv4 33667 0t0 UDP *:sunrpc
systemd 1 root 146u IPv6 33669 0t0 UDP *:sunrpc
rpcbind 6105 rpc 5u IPv4 33667 0t0 UDP *:sunrpc
rpcbind 6105 rpc 7u IPv6 33669 0t0 UDP *:sunrpc
rpcbind 6105 rpc 10u IPv4 34871 0t0 UDP *:rxe
rpcbind 6105 rpc 11u IPv6 34872 0t0 UDP *:rxe
avahi-dae 6158 avahi 12u IPv4 37772 0t0 UDP *:mdns
avahi-dae 6158 avahi 13u IPv4 37773 0t0 UDP *:58076
chronyd 6176 chrony 1u IPv4 38347 0t0 UDP localhost:323
chronyd 6176 chrony 2u IPv6 38348 0t0 UDP localhost:323
dnsmasq 7293 nobody 3u IPv4 46027 0t0 UDP *:bootps
dnsmasq 7293 nobody 5u IPv4 46030 0t0 UDP mufenggrow:domain
dhclient 21569 root 6u IPv4 93194 0t0 UDP *:bootpc
3.7 列出谁在使用某个端口
此时也是用 -i参数
[root@mufenggrow ~]# lsof -i :3306
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld 73762 mysql 14u IPv4 169606 0t0 TCP *:mysql (LISTEN)
我们遇到端口冲突的时候,可以使用lsof查看端口是否被占用。
3.8 恢复误删除的文件
当Linux计算机受到入侵时,常见的情况是日志文件被删除,以掩盖攻击者的踪迹。
有时候管理错误也可能导致意外删除某些重要的文件,比如在清理旧日志时,意外地删除了数据库的活动事务日志。
这时候可以尝试使用lsof来恢复:
使用lsof 恢复文件的原理:
当进程打开了某个文件时,只要该进程保持打开该文件,即使将其删除,它依然存在于磁盘中。
这意味着,进程并不知道文件已经被删除,它仍然可以向打开该文件时提供给它的文件描述符进行读取和写入。除了该进程之外,这个文件是不可见的,因为已经删除了其相应的目录索引节点。
在/proc 目录下,其中包含了反映内核和进程树的各种文件,/proc目录挂载的是在内存中所映射的一块区域,所以这些文件和目录并不存在磁盘中,当我们写入和读取信息的时候,实际是从内存中获取相关的信息。
我们来看看恢复过程,实验过程如下:
- 创建一个目录并创建一个文件
- 在另一个窗口打开这个文件,并保持一直打开的状态,比如使用vim命令
- 在第一个创建删掉文件
- 使用lsof进行恢复
# 创建文件
[root@mufenggrow ~]# mkdir test
[root@mufenggrow ~]# cd test/
# 拷贝一份文件过来
[root@mufenggrow test]# cp /etc/passwd ./#在另一个窗口使用vim打开文件
# [root@mufenggrow ~]# vim passwd
# 删除文件
[root@mufenggrow test]# rm -rf passwd
# 用lsof来查看当前是否有进程打开passwd文件
[root@mufenggrow test]# lsof |grep passwd
cupsd 6850 root 10r REG 253,0 2323 17951309 /etc/passwd+ (deleted)
vim 74174 root 4u REG 253,0 12288 33994260 /root/.passwd.swp# 这里我们发现PID6850 打开文件的文件描述符为10, 另外在passwd后面看到delete字样。
接下来我们打开文件描述符为10的文件:[root@mufenggrow test]# head -n 10 /proc/6850/fd/10
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@mufenggrow test]# ls
#通过上面的命令我们可以确认,这个描述符为10的文件就是我们要恢复的文件
使用重定向进行文件恢复
[root@mufenggrow test]# cat /proc/6850/fd/10 > passwd
# 查看是否执行成功[root@mufenggrow test]# cat passwd |head
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
[root@mufenggrow test]#
我们通过上面的案例可以看到,已经恢复成功了,这里的前提就是,被删除的文件一定要有进程在使用。
总结
以上就是关于lsof命令的全部内容了,喜欢的小伙伴,一键三连哦。
✨原创不易,还希望各位大佬支持一下\textcolor{blue}{原创不易,还希望各位大佬支持一下}原创不易,还希望各位大佬支持一下
👍 点赞,你的认可是我创作的动力!\textcolor{green}{点赞,你的认可是我创作的动力!}点赞,你的认可是我创作的动力!
⭐️ 收藏,你的青睐是我努力的方向!\textcolor{green}{收藏,你的青睐是我努力的方向!}收藏,你的青睐是我努力的方向!
✏️ 评论,你的意见是我进步的财富!\textcolor{green}{评论,你的意见是我进步的财富!}评论,你的意见是我进步的财富!
相关文章:
linux基本功系列之lsof命令实战
文章目录前言一. lsof命令介绍二. 语法格式及常用选项三. 参考案例3.1 显示系统打开的文件3.2 查找某个文件相关的进程3.3 列出某个用户打开的文件信息3.4 列出某个程序进程所打开的文件信息3.5 查看某个进程号打开的文件3.6 列出所有的网络连接3.7 列出谁在使用某个端口3.8 恢…...
基础篇:02-SpringCloud概述
1.SpringCloud诞生 基于前面章节,我们深知微服务已成为当前开发的主流技术栈,但是如dubbo、zookeeper、nacos、rocketmq、rabbitmq、springboot、redis、es这般众多技术都只解决了一个或一类问题,微服务并没有一个统一的解决方案。开发人员或…...
【软件测试】软件测试工作上95%会遇到的问题,你遇到多少?
目录:导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜)前言 1、测试负责人要进行…...
4.5.4 LinkedList
文章目录1.特点2.常用方法3.练习:LinkedList测试1.特点 链表,两端效率高,底层就是链表实现的 List接口的实现类,底层的数据结构为链表,内存空间是不连续的 元素有下标,有序允许存放重复的元素在数据量较大的情况下,查询慢&am…...
Python之FileNotFoundError: [Errno 2] No such file or directory问题处理
错误信息:FileNotFoundError: [Errno 2] No such file or directory: ../AutoFrame/temp/report.xlsx相对于当前文件夹的路径,其实就是你写的py文件所在的文件夹路径!python在对文件的操作时,需要特别注意文件地址的书写。文件的路…...
C语言中耳熟能详的printf与scanf
没有什么比时间更有说服力了,因为时间无需通知我们就可以改变一切了。---余华《活着》大家好,今天给大家分享的是C语言中的scanf与printf函数,一提起这两个函数,大家可能觉得这不就是打印和输入嘛?有什么可以说的&…...
【数据结构】复杂度讲解
目录 时间复杂度与空间复杂度:: 1.算法效率 2.时间复杂度 3.空间复杂度 4.常见时间复杂度以及复杂度OJ练习 时间复杂度与空间复杂度:: 什么是数据结构? 数据结构中是计算机存储,组织数据的方式,指相互之间存在一种或多种特定关…...
JAVA-线程池技术
目录 概念 什么是线程? 什么是线程池? 线程池出现背景 线程池原理图 JAVA提供线程池 线程池参数 如果本篇博客对您有一定的帮助,大家记得留言点赞收藏哦。 概念 什么是线程? 是操作系统能够进行运算调度的最小单位。&am…...
【C++】从0到1入门C++编程学习笔记 - 提高编程篇:STL常用算法(算术生成算法)
文章目录一、accumulate二、fill学习目标: 掌握常用的算术生成算法 注意: 算术生成算法属于小型算法,使用时包含的头文件为 #include <numeric> 算法简介: accumulate // 计算容器元素累计总和 fill // 向容器中添加元…...
【C++】static成员
💙作者:阿润菜菜 📖专栏:C 目录 概念 特性 出个题 概念 声明为static的类成员称为类的静态成员,用static修饰的成员变量,称之为静态成员变量; 用static修饰的成员函数,称之为静态…...
Python Scrapy 爬虫简单教程
1. Scrapy install 准备知识 pip 包管理Python 安装XpathCssWindows安装 Scrapy $>- pip install scrapy Linux安装 Scrapy $>- apt-get install python-scrapy 2. Scrapy 项目创建 在开始爬取之前,必须创建一个新的Scrapy项目。进入自定义的项目目录中&am…...
【DOCKER】容器概念基础
文章目录1.容器1.概念2.特点3.与虚拟机的对比2.docker1.概念2.命名空间3.核心概念3.命令1.镜像命令2.仓库命令1.容器 1.概念 1.不同的运行环境,底层架构是不同的,这就会导致测试环境运行好好的应用,到了生产环境就会出现bug(就像…...
第九层(16):STL终章——常用集合算法
文章目录前情回顾常用集合算法set_intersectionset_unionset_difference最后一座石碑倒下,爬塔结束一点废话🎉welcome🎉 ✒️博主介绍:一名大一的智能制造专业学生,在学习C/C的路上会越走越远,后面不定期更…...
一起学习用Verilog在FPGA上实现CNN----(六)SoftMax层设计
1 SoftMax层设计 1.1 softmax SoftMax函数的作用是输入归一化,计算各种类的概率,即计算0-9数字的概率,SoftMax层的原理图如图所示,输入和输出均为32位宽的10个分类,即32x10320 本项目softmax实现逻辑为: …...
pixhawk2.4.8-APM固件-MP地面站配置过程记录
目录一、硬件准备二、APM固件、MP地面站下载三、地面站配置1 刷固件2 机架选择3 加速度计校准4 指南针校准5 遥控器校准6 飞行模式7 紧急断电&无头模式8 基础参数设置9 电流计校准10 电调校准11 起飞前检查(每一项都非常重要)12 飞行经验四、遇到的问…...
【unity细节】关于资源商店(Package Maneger)无法下载资源问题的解决
👨💻个人主页:元宇宙-秩沅 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 本文由 秩沅 原创 收录于专栏:unity细节和bug ⭐关于资源商店为何下载不了的问题⭐ 文章目录⭐关于资源商店为何下载不了的问题…...
[Arxiv 2022] A Novel Plug-in Module for Fine-Grained Visual Classification
Contents MethodPlug-in ModuleLoss functionExperimentsReferencesMethod Plug-in Module Backbone:为了帮助模型抽取出不同尺度的特征,作者在 backbone 里加入了 FPNWeakly Supervised Selector:假设 backbone 的 i i...
RocketMQ Broker消息处理流程及部分源码解析
🍊 Java学习:Java从入门到精通总结 🍊 深入浅出RocketMQ设计思想:深入浅出RocketMQ设计思想 🍊 绝对不一样的职场干货:大厂最佳实践经验指南 📆 最近更新:2023年2月10日 &#x…...
Java面试题:Java集合框架
文章目录一、Java集合框架二、Java集合特性三、各集合类的使用ArrayListLinkedListHashSetHashSet源码解析对源码进行总结HashSet可同步HashSet的使用HashMap四、Iterator迭代器五、遍历集合元素的若干方式参考文章:Hash详解参考文章:深入浅出学Java——…...
时间之间的比较与计算相差年、月、日、小时、分钟、毫秒、纳秒以及判断闰年--LocalDateTime
如何把String/Date转成LocalDateTime参考String、Date与LocalDate、LocalTime、LocalDateTime之间互转 String、Date、LocalDateTime、Calendar与时间戳之间互相转化参考String、Date、LocalDateTime、Calendar与时间戳之间互相转化 比较方法介绍 isBefore(ChronoLocalDateT…...
PyTorch学习笔记:nn.L1Loss——L1损失
PyTorch学习笔记:nn.L1Loss——L1损失 torch.nn.L1Loss(size_averageNone, reduceNone, reductionmean)功能:创建一个绝对值误差损失函数,即L1损失: l(x,y)L{l1,…,lN}T,ln∣xn−yn∣l(x,y)L\{l_1,\dots,l_N\}^T,l_n|x_n-y_n| l(…...
Java程序设计-ssm企业财务管理系统设计与实现
摘要系统设计系统实现开发环境:摘要 对于企业集来说,财务管理的地位很重要。随着计算机和网络在企业中的广泛应用,企业发展速度在不断加快,在这种市场竞争冲击下企业财务管理系统必须优先发展,这样才能保证在竞争中处于优势地位。…...
疑难杂症篇(二十一)--Ubuntu18.04安装usb-cam过程出现的问题
对Ubuntu18.04{\rm Ubuntu 18.04}Ubuntu18.04环境下的ROS{\rm ROS}ROS的melodic{\rm melodic}melodic版本安装usb−cam{\rm usb-cam}usb−cam过程出现的两个常见问题提出解决方案。 1.问题1:usb-cam功能包编译时出现"未定义的引用"的问题 问题描述&#…...
npm-npm i XX --save 和--save-dev
之前使用npm i XX --save 和--save-dev 没太在意,就想记录一下,查到一篇比较全的(链接:NPM install -save 和 -save-dev 傻傻分不清),直接看好了,哈哈~ # 安装模块到项目目录下 npm install moduleName # -g 的意思是…...
可重构或可调谐微波滤波器技术
电子可重构,或者说电调微波滤波器由于其在改善现在及未来微波系统容量中不断提高的重要性而正吸引着人们越来越多的关注来对其进行研究和开发。例如,崭露头脚的超宽带(UWB)技术要求使用很宽的无线电频谱。然而,作为资源…...
医院智能化解决方案-门(急)诊、医技、智能化项目解决方案
【版权声明】本资料来源网络,知识分享,仅供个人学习,请勿商用。【侵删致歉】如有侵权请联系小编,将在收到信息后第一时间删除!完整资料领取见文末,部分资料内容:篇幅有限,无法完全展…...
判断元素是否在可视区域
前言 在日常开发中,我们经常需要判断目标元素是否在视窗之内或者和视窗的距离小于一个值(例如 100 px),从而实现一些常用的功能,例如: 图片的懒加载列表的无限滚动计算广告元素的曝光情况可点击链接的预加…...
告别传统繁杂的采购合同管理 打造企业自动化采购管理模式
随着企业竞争日趋激烈,采购成本压力剧增,企业对于采购合同管理更加严格,从而把控物资成本。对于任何一家企业采购来说,规范化合同的全面管理,是采购活动中重要的一个环节。 但在如今,依旧有很多企业采购合…...
【prism】路由事件映射到Command命令
在之前的一篇文章中,我介绍了普通的自定义事件: 【wpf】自定义事件总结(Action, EventHandler)_code bean的博客-CSDN博客_wpf action可以说通过Action和EventHandle,自定义事件是相当的方便简单了。https…...
面向对象的基本概念和方法
面向对象的开发方法在近几十年见得以广泛应用,我们常见的Java语言就是一种典型的面向对象的开发语言。然而,面向对象的概念较为复杂,知识点也很细碎,本文整理了面向对象的基本概念和方法,供大家参考。为了便于读者理解…...
网站建设需要的服务器/腾讯3大外包公司
一二三四五六七八九十百千万亿兆吉太拍艾分厘毫微零壹贰叁肆伍陆柒捌玖拾佰仟『』〖〗【】{}≈≡≠=≤≥<>≮≯∷+-/∫∮∝∞∧∨∑∏∪∩∈∵∴⊥∥∠⌒⊙≌∽√′″$&a…...
做网站在线视频如何添加/app推广30元一单
文章目录基于阈值的分割方法Otsu阈值分割自适应阈值分割最大熵阈值分割法迭代阈值分割基于边缘的分割方法基于区域的分割方法基于图论的分割方法基于聚类的分割方法基于能量泛函的分割方法曲线演化理论snake方法水平集(LevelSet)Active Contours Without Edges能量函数用水平集…...
个人网站设计提纲/推广普通话心得体会
均值为0,方差为0.01 均值为0,方差为0.09 代码如下: %imnoise demo f imread(cameraman.tif); %fnoise imnoise(f, gaussian); %增加均值为0, 方差为0.01得噪声 fnoise imnoise(f, gaussian, 128); %增加均值为2, …...
怎么制作钓鱼网站/东莞做网站推广公司
//PHP中可以通过bin2hex函数将字符串转换成16进制的形式输出,bin2hex()函数返回结果为ascii码 $string "cfg_power"; $arr1 str_split($string, 1); foreach($arr1 as $akey>$aval){$arr1[$akey]"0x".bin2hex($aval); } var_dump($arr1);/…...
网站开发系统设计/百度竞价开户
问题: ubuntu中vi在编辑状态下方向键不能用,还有回格键不能删除等我们平时习惯的一些键都不能使用。 解决办法: 可以安装vim full版本,在full版本下键盘正常,安装好后同样使用vi命令。 安装vim: ubuntu预装…...
wordpress安装虚拟主机/深圳市企业网站seo营销工具
首先解释一下CiA,CiA是一个组织,CAN in Automation,主要工作是推广CANopen协议。CANopen大概是这样的: CANopen四问 http://www.gongkong.com/article/201412/55783.html 1. CANopen的起源,CANopen从何而来ÿ…...