当前位置: 首页 > 编程日记 > 正文

Linux设备文件简介。

概述
设备管理是linux中比较基础的东西,但是由于Linux智能程度的越来越高,Udev的使用越来越广泛,使得越来越多的Linux新用户对 /dev 目录下的东西变得不再熟悉。有时候遇见问题就会变得抓狂。
Linux 中的设备有2种类型:字符设备(无缓冲且只能顺序存取)、块设备(有缓冲且可以随机存取)。每个字符设备和块设备都必须有主、次设备号,主设备号相同的设备是同类设备(使用同一个驱动程序)。这些设备中,有些设备是对实际存在的物理硬件的抽象,而有些设备则是内核自身提供的功能(不依赖于特定的物理硬件,又称为"虚拟设备")。每个设备在 /dev 目录下都有一个对应的文件(节点)。可以通过 cat /proc/devices 命令查看当前已经加载的设备驱动程序的主设备号。内核能够识别的所有设备都记录在原码树下的 Documentation/devices.txt 文件中。在 /dev 目录下除了字符设备和块设备节点之外还通常还会存在:FIFO管道、Socket、软/硬连接、目录。这些东西没有主/次设备号。

设备文件
Linux内核所能识别的所有设备都记录在http://www.lanana.org/docs/device-list/。而内核原码树中的 Documentation/devices.txt 可能不是最新版本。了解这些设备的最基本要求就是对每个设备文件的含义了如指掌,下面列出常见的设备文件以及相应的含义(比较偏僻的就省略了)。
----------------------------------------------------------------------
主设备号        设备类型
次设备号=文件名          简要说明
----------------------------------------------------------------------
0        未命名设备(例如:挂载的非设备)
0 = 为空设备号保留

1 char    内存设备
1 = /dev/mem        直接存取物理内存
2 = /dev/kmem        存取经过内核虚拟之后的内存
3 = /dev/null        空设备。任何写入都将被直接丢弃,任何读取都将得到EOF。
4 = /dev/port        存取 I/O 端口
5 = /dev/zero        零字节源,只能读取到无限多的零字节。
7 = /dev/full        满设备。任何写入都将失败,并把errno设为ENOSPC以表示没有剩余空间。
8 = /dev/random    随机数发生器。完全由用户的输入来产生随机数。如果用户停止所有动作,则停止产生新的随机数。
9 = /dev/urandom    更快,但是不够安全的随机数发生器。尽可能由用户的输入来产生随机数,如果用户停止所有动作,则把已经产生的随机数做为种子来产生新的随机数。
10 = /dev/aio        异步 I/O 通知接口
11 = /dev/kmsg        任何对该文件的写入都将作为 printk 的输出

1 block    RAM disk
0 = /dev/ram0        第1个 RAM disk (initrd只能使用ram0)
1 = /dev/ram1        第2个 RAM disk
...
200 = /dev/ram200    第200个 RAM disk

4 char    TTY(终端)设备
0 = /dev/tty0        当前虚拟控制台
1 = /dev/tty1        第1个虚拟控制台
...
63 = /dev/tty63    第63个虚拟控制台

4 block    如果根文件系统以是以只读方式挂载的,那么就不可能创建真正的设备节点,
此时就使用该设备作为动态分配的主(major)设备的别名
0 = /dev/root

5 char    其他 TTY 设备
0 = /dev/tty        当前 TTY 设备
1 = /dev/console    系统控制台(一般是/dev/tty0)
2 = /dev/ptmx        所有 PTY master 的复用器

7 char    虚拟控制台捕捉设备(这些设备既允许读也允许写)
0 = /dev/vcs        当前虚拟控制台(vc)的文本内容
1 = /dev/vcs1        tty1 的文本内容
...
63 = /dev/vcs63    tty63 的文本内容
128 = /dev/vcsa        当前虚拟控制台(vc)的文本/属性内容
129 = /dev/vcsa1    tty1 的文本/属性内容
...
191 = /dev/vcsa63    tty63 的文本/属性内容

7 block    回环设备(用一个普通的磁盘文件来模拟一个块设备)
对回环设备的绑定由 mount(8) 或 losetup(8) 处理
0 = /dev/loop0    第1个回环设备
1 = /dev/loop1    第2个回环设备
...

8 block    SCSI 磁盘(0-15)
0 = /dev/sda        第1个 SCSI 磁盘(整个磁盘)
16 = /dev/sdb        第2个 SCSI 磁盘(整个磁盘)
32 = /dev/sdc        第3个 SCSI 磁盘(整个磁盘)
...
240 = /dev/sdp        第16个 SCSI 磁盘(整个磁盘)

分区表示方法如下(以第3个 SCSI 磁盘为例)
33 = /dev/sdc1        第1个分区
34 = /dev/sdc2        第2个分区
...
47 = /dev/sdc15    第15个分区
对于Linux/i386来说,分区1-4是主分区,5-15是逻辑分区。

9 block    Metadisk(RAID)设备
0 = /dev/md0        第1组 metadisk
1 = /dev/md1        第2组 metadisk
...
metadisk 驱动用于将同一个文件系统分割到多个物理磁盘上。

10 char    非串口鼠标,各种杂项设备和特性
1 = /dev/psaux    PS/2鼠标
131 = /dev/temperature    机器内部温度
134 = /dev/apm_bios    APM(高级电源管理) BIOS
135 = /dev/rtc        实时时钟(Real Time Clock)
144 = /dev/nvram    非易失配置 RAM
162 = /dev/smbus    系统管理总线(System Management Bus)
164 = /dev/ipmo        Intel的智能平台管理(Intelligent Platform Management)接口
173 = /dev/ipmikcs    智能平台管理(Intelligent Platform Management)接口
175 = /dev/agpgart    AGP图形地址重映射表(Graphics Address Remapping Table)
182 = /dev/perfctr    性能监视计数器
183 = /dev/hwrng    通用硬件随机数发生器
184 = /dev/cpu/microcode CPU微代码更新接口
186 = /dev/atomicps    进程状态数据的原子快照
188 = /dev/smbusbios    SMBus(系统管理总线) BIOS
200 = /dev/net/tun    TAP/TUN 网络设备(TAP/TUN以软件的方式实现了网络设备)
TAP模拟了以太网帧(第二层),TUN模拟了IP包(第三层)。
202 = /dev/emd/ctl    增强型 Metadisk RAID (EMD) 控制器
220 = /dev/mptctl    Message passing technology (MPT) control
223 = /dev/input/uinput    用户层输入设备驱动支持
227 = /dev/mcelog    X86_64 Machine Check Exception driver
228 = /dev/hpet        HPET driver
229 = /dev/fuse        Fuse(用户空间的虚拟文件系统)
231 = /dev/snapshot    系统内存快照
232 = /dev/kvm        基于内核的虚构机(基于AMD SVM和Intel VT硬件虚拟技术)

11 block    SCSI CD-ROM 设备
0 = /dev/scd0        第1个 SCSI CD-ROM
1 = /dev/scd1        第2个 SCSI CD-ROM
...

13 char    核心输入设备
32 = /dev/input/mouse0        第1个鼠标
33 = /dev/input/mouse1        第2个鼠标
...
62 = /dev/input/mouse30    第31个鼠标
63 = /dev/input/mice        所有鼠标的统一
64 = /dev/input/event0        第1个事件队列
65 = /dev/input/event1        第2个事件队列
...
95 = /dev/input/event1        第32个事件队列

21 char    通用 SCSI 设备(通常是SCSI光驱)
0 = /dev/sg0        第1个通用 SCSI 设备
1 = /dev/sg1        第2个通用 SCSI 设备
...

29 char    通用帧缓冲(frame buffer)设备
0 = /dev/fb0        第1个帧缓冲设备
1 = /dev/fb1        第2个帧缓冲设备
...
31 = /dev/fb31        第32个帧缓冲设备

30 char    iBCS-2 兼容设备
0 = /dev/socksys    套接字访问接口
1 = /dev/spx        SVR3 本地 X 接口
32 = /dev/inet/ip    网络访问接口
33 = /dev/inet/icmp
34 = /dev/inet/ggp
35 = /dev/inet/ipip
36 = /dev/inet/tcp
37 = /dev/inet/egp
38 = /dev/inet/pup
39 = /dev/inet/udp
40 = /dev/inet/idp
41 = /dev/inet/rawip

此外,iBCS-2 还需要下面的连接必须存在
/dev/ip -> /dev/inet/ip
/dev/icmp -> /dev/inet/icmp
/dev/ggp -> /dev/inet/ggp
/dev/ipip -> /dev/inet/ipip
/dev/tcp -> /dev/inet/tcp
/dev/egp -> /dev/inet/egp
/dev/pup -> /dev/inet/pup
/dev/udp -> /dev/inet/udp
/dev/idp -> /dev/inet/idp
/dev/rawip -> /dev/inet/rawip
/dev/inet/arp -> /dev/inet/udp
/dev/inet/rip -> /dev/inet/udp
/dev/nfsd -> /dev/socksys
/dev/X0R -> /dev/null

36 char    Netlink 支持
0 = /dev/route    路由, 设备更新, kernel to user
3 = /dev/fwmonitor    Firewall packet 复制

59 char    sf 防火墙模块
0 = /dev/firewall    与 sf 内核模块通信

65 block    SCSI 磁盘(16-31)
0 = /dev/sdq        第17个 SCSI 磁盘(整个磁盘)
16 = /dev/sdr        第18个 SCSI 磁盘(整个磁盘)
32 = /dev/sds        第19个 SCSI 磁盘(整个磁盘)
...
240 = /dev/sdaf        第32个 SCSI 磁盘(整个磁盘)

66 block    SCSI 磁盘(32-47)
0 = /dev/sdag        第33个 SCSI 磁盘(整个磁盘)
16 = /dev/sdah        第34个 SCSI 磁盘(整个磁盘)
32 = /dev/sdai        第35个 SCSI 磁盘(整个磁盘)
...
240 = /dev/sdav        第48个 SCSI 磁盘(整个磁盘)

89 char    I2C 总线接口
0 = /dev/i2c-0    第1个 I2C 适配器
1 = /dev/i2c-1    第2个 I2C 适配器
...

98 block    用户模式下的虚拟块设备(分区处理方式与 SCSI 磁盘相同)
0 = /dev/ubda        第1个用户模式块设备
16 = /dev/udbb        第2个用户模式块设备
...

103 block    审计(Audit)设备
0 = /dev/audit    审计(Audit)设备

128-135 char    Unix98 PTY master

这些设备不应当存在设备节点,而应当通过 /dev/ptmx 接口访问。

136-143 char    Unix98 PTY slave
这些设备节点是自动生成的(伴有适当的权限和模式),不能手动创建。
方法是通过使用适当的 mount 选项(通常是:mode=0620,gid=)
将 devpts 文件系统挂载到 /dev/pts 目录即可。
0 = /dev/pts/0    第1个 Unix98 PTY slave
1 = /dev/pts/1    第2个 Unix98 PTY slave
...

153 block    Enhanced Metadisk RAID (EMD) 存储单元(分区处理方式与 SCSI 磁盘相同)
0 = /dev/emd/0    第1个存储单元
1 = /dev/emd/0p1    第1个存储单元的第1个分区
2 = /dev/emd/0p2    第1个存储单元的第2个分区
...
15 = /dev/emd/0p15    第1个存储单元的第15个分区

16 = /dev/emd/1    第2个存储单元
32 = /dev/emd/2    第3个存储单元
...
240 = /dev/emd/15    第16个存储单元

180 char    USB 字符设备
96 = /dev/usb/hiddev0    第1个USB人机界面设备(鼠标/键盘/游戏杆/手写版等人操作计算机的设备)
...
111 = /dev/usb/hiddev15    第16个USB人机界面设备

180 block    USB 块设备(U盘之类)
0 = /dev/uba        第1个USB 块设备
8 = /dev/ubb        第2个USB 块设备
16 = /dev/ubc        第3个USB 块设备
...

192 char    内核 profiling 接口
0 = /dev/profile    Profiling 控制设备
1 = /dev/profile0    CPU 0 的 Profiling 设备
2 = /dev/profile1    CPU 1 的 Profiling 设备
...

193 char    内核事件跟踪接口
0 = /dev/trace    跟踪控制设备
1 = /dev/trace0    CPU 0 的跟踪设备
2 = /dev/trace1    CPU 1 的跟踪设备
...

195 char    Nvidia 图形设备(比如显卡)
0 = /dev/nvidia0        第1个 Nvidia 卡
1 = /dev/nvidia1        第2个 Nvidia 卡
...
255 = /dev/nvidiactl        Nvidia 卡控制设备

202 char    特定于CPU模式的寄存器(model-specific register,MSR)
0 = /dev/cpu/0/msr        CPU 0 的 MSRs
1 = /dev/cpu/1/msr        CPU 1 的 MSRs
...

203 char    CPU CPUID 信息
0 = /dev/cpu/0/cpuid        CPU 0 的 CPUID
1 = /dev/cpu/1/cpuid        CPU 1 的 CPUID
...

有没有感到很奇怪?为什么没有 /dev/hda 这样的设备,难道不常用么?原因在于从 2.6.19 版本开始,内核引入了新的ATA驱动,将SATA/PATA硬盘统一使用 /dev/sd? 来表示了,所以 /dev/hd? 就没有存在的必要了。具体说来也就是你在编译内核的时候不要再使用"ATA/ATAPI/MFM/RLL support"下面的驱动,而是使用更新的"Serial ATA and Parallel ATA drivers"驱动。

链接、套接字、管道、挂载点
这部分详细说明一些应该或可能存在于 /dev 目录之外的文件。链接最好使用与这里完全相同的格式(绝对路径或相对路径)。究竟是使用硬链接(hard)还是软连接(symbolic)取决于不同的设备。

必须的链接
必须在所有的系统上都存在这些连接:

链接        目标        链接类型    简要说明
/dev/fd        /proc/self/fd    symbolic    文件描述府
/dev/stdin    fd/0        symbolic    标准输入文件描述府
/dev/stdout    fd/1        symbolic    标准输出文件描述符
/dev/stderr    fd/2        symbolic    标准错误文件描述符
/dev/nfsd    socksys        symbolic    仅为 iBCS-2 所必须
/dev/X0R    null        symbolic    仅为 iBCS-2 所必须
[注意] /dev/X0R 是 --

推荐的链接
推荐在所有的系统上都存在这些连接:
链接        目标        链接类型    简要说明
/dev/core    /proc/kcore    symbolic    为了向后兼容
/dev/ramdisk    ram0        symbolic    为了向后兼容
/dev/ftape    qft0        symbolic    为了向后兼容
/dev/bttv0    video0        symbolic    为了向后兼容
/dev/radio    radio0        symbolic    为了向后兼容
/dev/i2o*    /dev/i2o/*    symbolic    为了向后兼容
/dev/scd?    sr?        hard        代替 SCSI CD-ROM 的名字

本地定义的链接
下面的链接很可能需要根据机器的实际硬件配置创建其中的一部分甚至全部。这些链接仅仅是为了迎合习惯用法,它们既非必须也非推荐。

链接        目标        链接类型    简要说明
/dev/mouse    mouse port    symbolic    当前鼠标
/dev/tape    tape device    symbolic    当前磁带
/dev/cdrom    CD-ROM device    symbolic    当前CD-ROM
/dev/cdwriter    CD-writer    symbolic    当前CD-writer
/dev/scanner    scanner        symbolic    当前扫描仪
/dev/modem    modem port    symbolic    当前调制解调器
/dev/root    root device    symbolic    当前根文件系统所在设备
/dev/swap    swap device    symbolic    当前swap所在设备

/dev/modem 不应当用于能够同时支持呼入和呼出的modem,因为往往会导致锁文件问题。如果存在 /dev/modem ,那么它应当指向一个恰当的主 TTY 设备。
对于SCSI设备,/dev/tape 和 /dev/cdrom 应该分别指向"cooked"设备 /dev/st* 和 /dev/sr* ;而 /dev/cdwriter 和 /dev/scanner 应当分别指向恰当的 /dev/sg* 。

/dev/mouse 可以指向一个主串行 TTY 设备、一个硬件鼠标、或者一个对应鼠标驱动程序的套接字(例如 /dev/gpmdata)。

套接字和管道
持久套接字和命名管道可以存在于 /dev 中。常见的有:

/dev/printer    socket        lpd 本地套接字
/dev/log    socket        syslog 本地套接字
/dev/gpmdata    socket        gpm 鼠标多路复用器(multiplexer)
/dev/gpmctl    socket        (LFS-LiveCD中出现)
/dev/initctl    fifo pipe    init 监听它并从中获取信息(用户与 init 进程交互的通道)

挂载点
以下名称被保留用于挂载特殊的文件系统。这些特殊的文件系统只提供内核界面而不提供标准的设备节点。

/dev/pts    devpts        PTY slave 文件系统
/dev/shm    tmpfs        提供对 POSIX 共享内存的直接访问

终端设备
终端(或TTY)设备是一种特殊的字符设备。终端设备是可以在会话中扮演控制终端角色的任何设备,包括:虚拟控制台、串行接口(已废弃)、伪终端(PTY)。
所有的终端设备共享一个通用的功能集合:line discipline,它既包含通用的终端 line discipline 也包含SLIP和PPP模式。所有的终端设备的命名都很相似。这部分内容将解释命名规则和各种类型的TTY(终端)的使用。需要注意的是这些命名习惯包含了几个历史遗留包袱。其中的一些是Linux所特有的,另一些则是继承自其他系统,还有一些反映了Linux在成长过程中抛弃了原来借用自其它系统的一些习惯。井号(#)在设备名里表示一个无前导零的十进制数。

虚拟控制台(Virtual console)和控制台设备(console device)
虚拟控制台是在系统视频监视器上全屏显示的终端。虚拟控制台被命名为编号从 /dev/tty1 开始的 /dev/tty# 。/dev/tty0 是当前虚拟控制台。/dev/tty0 用于在不能使用帧缓冲设备(/dev/fb*)的机器上存取系统视频卡,注意,不要将 /dev/console 用于此目的。/dev/console 由内核管理,系统消息将被发送到这里。单用户模式下必须允许 login 使用 /dev/console。

串行接口
这里所说的"串行接口"是指 RS-232 串行接口和任何模拟这种接口的设备,不管是在硬件(例如调制解调器)还是在软件(例如ISDN驱动)中模拟。在linux中的每一个串行接口都有两个设备名:主设备或呼入(callin)设备、交替设备或呼出(callout)设备。设备类型之间使用字母的大小写进行区分。比如,对于任意字母X,"tty"设备名为 /dev/ttyX# ,而"cu"设备名则为 /dev/cux# 。由于历史原因,/dev/ttyS# 和 /dev/ttyC# 分别等价于 /dev/cua# 和 /dev/cub# 。名称 /dev/ttyQ# 和 /dev/cuq# 被保留为本地使用。

伪终端(PTY)
伪终端用于创建登陆会话或提供其它功能,比如通过 TTY line discipline (包括SLIP或者PPP功能)来处理任意的数据生成。每一个 PTY 都有一个master端和一个slave端。按照 System V/Unix98 的 PTY 命名方案,所有master端共享同一个 /dev/ptmx 设备节点(打开它内核将自动给出一个未分配的PTY),所有slave端都位于 /dev/pts 目录下,名为 /dev/pts/# (内核会根据需要自动生成和删除它们)。
一旦master端被打开,相应的slave设备就可以按照与 TTY 设备完全相同的方式使用。master设备与slave设备之间通过内核进行连接,等价于拥有 TTY 功能的双向管道(pipe)。

相关文章:

羊车门问题分析

1、按照你的第一感觉回答,你觉得不换选择能有更高的几率获得汽车,还是换选择能有更高的几率获得汽车?或几率没有发生变化?答:换。2、请自己认真分析一下“不换选择能有更高的几率获得汽车,还是换选择能有更…

python多版本共存使用pip

有时候大家使用python的时候都会用到两个版本,虽说可以独立设置环境变量独立使用,但是用到pip的时候就不行了,python2和python3中的都用相同的pip。在这里我就把我的经验分享给大家。 这是python设置的环境变量 下面是python2的名字 下面是py…

Ruby开发环境

假设您已经安装了Eclipse,那么只需按照如下步骤即可:Please copy the following Update Site URL to your clipboard and then follow the steps listed below to add this URL to your Available Software Sites list. Attempting to access this URL u…

【spring】spel表达式

格式: #{ } 简单使用实例 一、DButil.java 代码实现: package springboottest.ioc.speltest;public class DBUtil {private UserService us;public UserService getUs() {return us;}public void setUs(UserService us) {this.us us;} }二、UserSe…

distinct吃亏记

distinct 是一个去掉重复数据的函数 1.此函数只能在 头部 2.此函数声明后。如果跟两个或两个以上的字段。则会导致。此函数去判断与两个字段都相同的。 例如ID为2 的字段有两个。但是这两个字的的创建时间不同。所有当你想通过DISTINCT ID,CREATTIME来把其中一个ID给筛选的话是…

input 选择框改变背景小技巧

最近在项目中遇到一个问题,想要改变input选择框的背景,然而,令我没有想到的是,竟然无法直接改变背景的颜色 通常情况下:我们都可以通过改变元素的 background-color 的值来改变元素的背景,但是在input选择框…

[转]Android JNI使用方法

本文转自:http://www.open-open.com/lib/view/open1324909652374.html 经过几天的努力终于搞定了android JNI部分,下面将我的这个小程序和大家分享一下。android JNI是连接android Java部分和C/C部分的纽带,完整使用JNI需要Java代码和C/C代码…

【spring】使用eclipse在没网时编写配置文件无法获取提示 解决方法

获得xsd文件 1、打开maven的目录 2、按照该顺序找到spring-context的目录 3、选择最新版本的进入 4、找到context的jar包 5、解压到存放xsd文件的文件夹(自己建立) 6、按照该顺序进入目录 7、将xsd文件放到cpfhxsd文件的文件夹 将xsd文件配置到ecipse中…

P4568 [JLOI2011]飞行路线

P4568 [JLOI2011]飞行路线 Description Alice和Bob现在要乘飞机旅行,他们选择了一家相对便宜的航空公司。该航空公司一共在n个城市设有业务,设这些城市分别标记为0到n-1,一共有m种航线,每种航线连接两个城市,并且航线有…

拿到淘宝offer后的胡思乱想plus面试总结

没想到能拿到淘宝的实习offer,心里还是很激动的。 大三以后就忙着找实习,参加了SAP和淘宝的校招,呵呵,还好,第二次就拿到了offer,剩下还有腾讯和百度的招聘,决定去看看,但是还是要走…

Map与List数据操作

为避免与数据库的多次连接,减少数据库的压力,先将所有的订货数据先从数据库中抽取出来,而后再将数据按门店进行分类汇总以备待用,Map与List混合操作,理解数据结构。提神醒脑哦。以下是原始数据结构:[{store…

《Java虚拟机规范》阅读(三):Class文件格式

每一个Class都对应着唯一的一个类或借口的定义信息。这里,我们称为"Class文件格式"只是通俗的将任意一个符合有效的类或借口的格式这么称呼,但是它并不一定是以磁盘文件的形式存在。 每个Class文件都是由8字节为单位的字节流组成,所…

【spring】自动装配

山顶洞人方法:aotowire UserDao.java 代码实现: public class UserDao {private DBUtil dbu;public DBUtil getDbu() {return dbu;}public void setDbu(DBUtil dbu) {this.dbu dbu;}public void test() {System.out.println(dbu);} }DBUtil.java 代…

扩展jquery实现客户端表格的分页、排序

下面链接中是我用jQuery的扩展来实现的表格分页和排序&#xff0c;使用这个扩展必须加上表头<thead>和<tbody>标签&#xff0c;因为我是 通过<tbody>来进行分页的&#xff0c;要是不加thead&#xff0c;那么表头也要作为分页计算时的一个行了。 下载最新代码…

Win7中如何删除word模板

Win7中如何删除word模板 计算机→本地磁盘c盘→用户→Administrator→AppData→Roaming→Microsoft→Templates转载于:https://blog.51cto.com/ilanni/555302

Spring 学习笔记

Spring 的 Ioc 容器所有的组件都是被动的&#xff08; Passive&#xff09;&#xff0c;所有的组件初始化和调用都由容器负责。组件处在一个容器当中&#xff0c;由容器负责管理。BeanFactory 根据配置文件确定容器中 bean 的实现&#xff0c;管理 bean 之间的依赖关系。通常&a…

【spring】初识aop(面向切面编程) 使用jdk动态代理

BankServiceIImple.java 代码实现&#xff1a; package com.zzxtit.aop;import java.math.BigDecimal;public interface BankServiceImple {public void transfer(String source, String target, BigDecimal money);public void withdraw(String account, BigDecimal money);…

sigaction

#include <signal.h> int sigaction(int signum, const struct sigaction *act,struct sigaction *oldact); struct sigaction {   void (*sa_handler)(int);   void (*sa_sigaction)(int, siginfo_t *, void *);   sigset_t sa_mask;   int sa_flags;   void …

003本周总结报告

本周对java的循坏结构和条件语句以及switch分支进行了复习并通过九九乘法表和制作日历来更加熟练使用和理解循环&#xff0c;并用eclipse替代了记事本来编写程序&#xff0c;同时针对记事本编写java程序后台运行出现的GBK不可映射字符问题先后采用了 javac -encoding UTF-8 …

HDU-1203 I NEED A OFFER!-0、1背包及空间优化

I NEED A OFFER! Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 5280 Accepted Submission(s): 1799Problem DescriptionSpeakless很早就想出国&#xff0c;现在他已经考完了所有需要的考试&#xff0c;准备了…

docker监控系统

第一&#xff1a;docker监控系统之命令行式监控 第二&#xff1a;docker监控系统之cadvisor 第三&#xff1a;docker监控系统之 第四&#xff1a;docker监控系统之 转载于:https://www.cnblogs.com/fengjunhua/p/8968210.html

Visual Studio 2005 Team System下载地址

注册一个msn就可以去微软下载了&#xff0c;关于替换序列号变成正版的方法我没有试&#xff0c;team suite我在用&#xff0c;但Team Foundation Server 我还没有安装好Microsoft Visual Studio 2005 简体中文正式版Visual Studio 2005 Team Suite 180 天试用版(可更换key变为正…

【spring】springAop开发

xml开发方式 springboot的使用 1、声明一个parent 代码实现&#xff1a; <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.0.RELEASE</version><relati…

使用 SqlHelperParameterCache 类管理参数

SqlHelperParameterCache类是位于 Microsoft.ApplicationBlocks.Data命名空间底下。它底下有三个方法&#xff0c;分别是&#xff1a; CacheParameterSet&#xff1a;用于将SqlParameters 数组存储到缓存中GetCachedParameterSet&#xff1a;用于检索读取缓存中SqlParameters数…

改善C#程序的建议6:在线程同步中使用信号量

所谓线程同步&#xff0c;就是多个线程之间在某个对象上执行等待&#xff08;也可理解为锁定该对象&#xff09;&#xff0c;直到该对象被解除锁定。C#中对象的类型分为引用类型和值类型。CLR在这两种类型上的等待是不一样的。我们可以简单的理解为在CLR中&#xff0c;值类型是…

Jerry眼中的SAP客户数据模型

本文Jerry将介绍八款SAP产品中的客户模型。希望您在阅读完本文之后&#xff0c;能对SAP客户模型设计的思路有一个最最粗浅的了解。 由于Jerry水平和精力所限&#xff0c;本文不会详细阐述这些产品里的客户模型设计细节&#xff0c;而是介绍了一种方法&#xff0c;如果您对这些模…

【spring】spring JDBC开发 、 将创建表生成sql语句的方法

将navicate中已存在表的创建转化成sql语句的方法 1、右击表&#xff0c;选择对象信息 2、点击DDL jar包引入 1、spring-starter-jdbc 代码实现&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-star…

PL/SQL ——分页编程

通过PL/SQL编程&#xff0c;编写分页存储过程。代码如下所示&#xff1a; 1 --PL/SQL开发编写分页代码 2 --创建包 3 create or replace package Page as 4 type test_cursor is ref cursor 5 end Page; 6 --创建存储过程 7 create or replace procedure Page( 8 (tablenam…

My view towards Machine Learning

Introduction:[to be continued]转载于:https://www.cnblogs.com/JVKing/articles/2290780.html

两个表的更新、表的复制

update 表1 set from 表1&#xff0c;表2 where 条件 表的复制数据 1.select * into newtable from table 2.insert into table select table2 select identity(int,1,1),* into newtable from .. 这条语句有时挺管用的转载于:https://www.cnblogs.com/leshang/archive/2…