文件存储和删除的过程

查找文件 通过文件名打开文件时,通过文件名先找到对应的inode,然后通过inode找到文件内容所在的block来读取数据。 文件存储和删除的过程 https://blog.csdn.net/MyySophia/article/details/107696414 创建文件 /tmp/a.txt 首先从 inode table 中找一个空闲的 inode 号分配给 a.txt,例如 2222。再将 inode map(imap) 中 2222 这个 inode 标记为已使用。 在 /tmp 的 data block 中添加一条 a.txt 文件的记录。该记录中包括一个指向 inode 的指针,例如 “0x2222”。 然后从 block map (bmap) 中找出空闲的 data block,并开始将 a.txt 中的数据写入到 data block 中。每写一段空间 ( ext4 每次分配一段空间 ) 就从 bmap 中找一次空闲的 data block, 直到存完所有数据。 设置 inode table 中关于 2222 这条记录的 data block 指针, 通过该指针可以找到 a.txt 使用了哪些 data block。 删除文件的过程 /tmp/a.txt 在 inode table 中删除指向 a.txt 的 data block 指针。这里只要一删除,外界就找不到 a.txt 的数据了。但是这个文件还存在,只是它是被"损坏"的文件,因为没有任何指针指向数据块。 在 imap 中将 2222 的 inode 标记为未使用。于是这个 inode 就被释放,可以被后续的文件重用。 删除父目录 /tmp 的 data block 中关于 a.txt 的记录。 这里只要一删除,外界就看不到也找不到这个文件了。 在 bmap 中将 a.txt 占用的 block 标记为未使用。这里被标记为未使用后,这些 data block 就可以被后续文件覆盖重用。 考虑一种情况,当一个文件被删除时,但此时还有进程在使用这个文件,这时是怎样的情况呢?外界是看不到也找不到这个文件的,所以删除的过程已经进行到了第 3 步。但进程还在使用这个文件的数据,也能找到这个文件的数据,是因为进程在加载这个文件的时候就已经获取到了该文件占用哪些 data block,虽然删除了文件,但 bmap 中这些 data block 还没有标记为未使用。 ...

2015-04-23 · 1 min · 120 words · -

Linux 下删除正在进行读写操作的文件

Linux 下删除正在进行读写操作的文件 多进程环境下, 打开同一个文件, 进行读写操作过程中, 如果其中一个进程删除这个文件, 那么, 另外正在读写这个文件会发生什么呢? 因为文件被删除了, 正在读写的进程发生异常? 正在读写的进程仍然正常读写, 好像没有发现发生了什么? 删除文件,其实是删除 inode 和文件的对应关系,而 linux 文件系统只有当连接文件的 inode 数量为0,并且没有程序在使用这个文件时,才会标记文件内容所在的数据块删除。 每个文件都有 2 个 link 计数器 - i_count 和 i_nlink。i_count 的意义是当前使用者的数量,i_nlink 的意义是介质连接的数量;或者可以理解为 i_count 是内存引用计数器,i_nlink 是硬盘引用计数器。再换句话说,当文件被某个进程引用时,i_count 就会增加;当创建文件的硬连接的时候,i_nlink 就会增加。 对于 rm 而言,就是减少 i_nlink。这里就出现一个问题,如果一个文件正在被某个进程调用,而用户却执行 rm 操作把文件删除了,会出现什么结果呢? 当用户执行 rm 操作后,ls 或者其他文件管理命令不再能够找到这个文件,但是进程却依然在继续正常执行,依然能够从文件中正确的读取内容。这是因为,rm 操作只是将 i_nlink 置为 0 了;由于文件被进程引用的缘故,i_count 不为 0,所以系统没有真正删除这个文件。i_nlink 是文件删除的充分条件,而 i_count 才是文件删除的必要条件。 基于以上只是,大家猜一下,如果在一个进程在打开文件写日志的时候,手动或者另外一个进程将这个日志删除,会发生什么情况? 是的,数据库并没有停掉。虽然日志文件被删除了,但是有一个进程已经打开了那个文件,所以向那个文件中的写操作仍然会成功,数据仍然会提交。 下面,告诉大家如何恢复那个删除的文件。 例如,你删除了 tcpdump.log, 执行 lsof | grep tcpdump.log,你应该能看到这样的输出: tcpdump 2864 tcpdump 4w REG 253,0 0 671457 /root/tcpdump.log (deleted) ...

2015-04-22 · 1 min · 167 words · -

mbr gpt

MBR GPT http://www.rodsbooks.com/linux-fs-code/ 自从 2007 年 Vista 操作系统推出以后, 各大硬件厂商对硬件开发速度明显加快, 其中对于硬盘的速度和容量, 从最早的 5400 转, 160G 容量, 提升到现在的 7200 转甚至万转机械盘, 容量也先后出现上 TB 级别的。单硬盘都出现 4Tb 容量。 由于磁盘容量越来越大, 传统的 MBR 分区表 (主引导记录) 已经不能满足大容量磁盘的需求。传统的 MBR 分区表只能识别磁盘前面的 2.2TB 左右的空间, 对于后面的多余空间只能浪费掉了,而对于单盘4TB的磁盘,只能利用一半的容量。因此,才有了GPT (全局唯一标识分区表) 。 除此以外,MBR分区表只能支持4个主分区或者3主分区+1扩展分区 (包含随意数目的逻辑分区) ,而GPT在Windows下面可以支持多达128个主分区。 下面IT之家也给大家分享下MBR和GPT的详细区别。 MBR 分区表 在传统硬盘分区模式中,引导扇区是每个分区 (Partition) 的第一扇区,而主引导扇区是硬盘的第一扇区。它由三个部分组成,主引导记录MBR、硬盘分区表DPT和硬盘有效标志。在总共512字节的主引导扇区里MBR占446个字节,第二部分是Partition table区 (分区表) ,即DPT,占64个字节,硬盘中分区有多少以及每一分区的大小都记在其中。第三部分是magic number,占2个字节,固定为55AA。 一个扇区的硬盘主引导记录MBR由4个部分组成。 •主引导程序 (偏移地址0000H-0088H) ,它负责从活动分区中装载,并运行系统引导程序。 •出错信息数据区,偏移地址0089H-00E1H为出错信息,00E2H-01BDH全为0字节。 •分区表 (DPT,Disk Partition Table) 含4个分区项,偏移地址01BEH-01FDH,每个分区表项长16个字节,共64字节为分区项1、分区项2、分区项3、分区项4。 •结束标志字,偏移地址01FE-01FF的2个字节值为结束标志55AA,如果该标志错误系统就不能启动。 GPT 分区表, GUID Partition Map GPT 的分区信息是在分区中,而不象 MBR 一样在主引导扇区, 为保护 GPT 不受 MBR 类磁盘管理软件的危害, GPT 在主引导扇区建立了一个保护分区 (Protective MBR) 的MBR分区表 (此分区并不必要), 这种分区的类型标识为0xEE, 这个保护分区的大小在Windows下为128MB,Mac OS X下为200MB,在Window磁盘管理器里名为GPT保护分区, 可让MBR类磁盘管理软件把GPT看成一个未知格式的分区,而不是错误地当成一个未分区的磁盘。 ...

2015-04-21 · 1 min · 114 words · -

PXE booting

PXE booting 预启动执行环境 (Preboot eXecution Environment,PXE,也被称为预执行环境)提供了一种使用网络接口 (Network Interface) 启动计算机的机制。这种机制让计算机的启动可以不依赖本地数据存储设备 (如硬盘) 或本地已安装的操作系统。 PXE当初是作为Intel的有线管理体系的一部分,Intel 和 Systemsoft于1999年9月20日公布其规格版本2.1。通过使用像网际协议(IP)、用户数据报协议(UDP)、动态主机设定协定(DHCP)、小型文件传输协议(TFTP)等几种网络协议和全局唯一标识符(GUID)、通用网络驱动接口(UNDI)、通用唯一识别码(UUID)的概念并通过对客户机(通过PXE自检的电脑)固件扩展预设的API来实现目的。 _PXE 客户机(client)_这个术语是指机器在PXE启动过程中的角色。一个_PXE 客户机(client)_可以是一台服务器、桌面级电脑、笔记本电脑或者其他装有PXE启动代码的机器。

2015-04-18 · 1 min · 17 words · -

MES系统

MES系统 MES系统即制造企业生产过程执行管理系统,是一套面向制造企业车间执行层的生产信息化管理系统。MES 可以为企业提供包括制造数据管理、计划排程管理、生产调度管理、库存管理、质量管理、人力资源管理、工作中心/设备管理、工具工装管理、采购管理、成本管理、项目看板管理、生产过程控制、底层数据集成分析、上层数据集成分解等管理模块,为企业打造一个扎实、可靠、全面、可行的制造协同管理平台。[1]

2015-04-13 · 1 min · 3 words · -

flake8

flake8 pip install flake8 flake8 --max-line-length=120 project_0 # 忽略掉 E501,E302,E122,E225,E303,W291,E221,E231 flake8 --max-line-length=120 --ignore=E501,E302,E122,E225,E303,W291,E221,E231 project_0 # 只检查 F821 undefined name flake8 --select=F821 /path/to/project_0

2015-04-12 · 1 min · 22 words · -

IntelliJ tomat

IntelliJ tomat IntelliJ and Tomcat{.question-hyperlink} http://stackoverflow.com/questions/19596779/intellij-and-tomcat-changed-files-are-not-automatically-recognized-by-tomcat/19609115#19609115

2015-04-11 · 1 min · 6 words · -

tcp 状态 LISTENING、ESTABLISHED、TIME_WAIT,CLOSE_WAIT

tcp状态 LISTENING, ESTABLISHED, TIME_WAIT, CLOSE_WAIT TCP协议规定, 对于已经建立的连接, 网络双方要进行四次握手才能成功断开连接, 如果缺少了其中某个步骤, 将会使连接处于假死状态, 连接本身占用的资源不会被释放。网络服务器程序要同时管理大量连接, 所以很有必要保证无用连接完全断开, 否则大量僵死的连接会浪费许多服务器资源。在众多TCP状态中, 最值得注意的状态有两个: CLOSE_WAIT 和 TIME_WAIT。 LISTENING 状态 TCP 服务启动后首先处于侦听 (LISTENING) 状态。 ESTABLISHED 状态 ESTABLISHED的意思是建立连接。表示两台机器正在通信。 CLOSE_WAIT 对方主动关闭连接或者网络异常导致连接中断, 这时我方的状态会变成 CLOSE_WAIT 此时我方要调用 close() 来使得连接正确关闭 TIME_WAIT 我方主动调用 close() 断开连接, 收到对方确认后状态变为 TIME_WAIT。 TCP 协议规定 TIME_WAIT 状态会一直持续 2MSL (即两倍的分段最大生存期), 以此来确保旧的连接状态不会对新连接产生影响。处于 TIME_WAIT 状态的连接占用的资源不会被内核释放, 所以作为服务器, 在可能的情况下, 尽量不要主动断开连接, 以减少 TIME_WAIT 状态造成的资源浪费。 目前有一种避免 TIME_WAIT 资源浪费的方法, 就是关闭 socket 的 LINGER 选项。但这种做法是 TCP 协议不推荐使用的, 在某些情况下这个操作可能会带来错误。 http://www.cppblog.com/prayer/archive/2009/04/01/78592.html http://www4.cs.fau.de/Projects/JX/Projects/TCP/tcpstate.html TIME_WAIT CLOSE_WAIT http://blog.csdn.net/kobejayandy/article/details/17655739 在服务器的日常维护过程中,会经常用到下面的命令: ...

2015-04-11 · 1 min · 173 words · -

english date time on at in

english date time on at in 答: 英语中表示时间的介词用法: in+年/月/季节/世纪 (较大范围) ,另外固定结构: in the morning/afternoon/evening 如: in 2010在2010年, inJune在六月, in spring 在春天, in the 1980s 在20世纪80年代 on+具体某日/星期几 (要具体到某一天) 如: on October 1st在十月一日, on Sunday 在星期日 at+具体点钟,另外固定结构: at night ,at noon 如: at ten o’clock在十点钟, at half past four 在四点半 at指时间表示: (1) 时间的一点、时刻等。如: They came home at sunrise (at noon, at midnight, at ten o’clock, at daybreak, at dawn) . (2) 较短暂的一段时间。可指某个节日或被认为是一年中标志大事的日子。如: He went home at Christmas (at New Year, at the Spring Festival, at night) . in指时间表示: (1) 在某个较长的时间 (如世纪、朝代、年、月、季节以及泛指的上午、下午或傍晚等) 内。如: in 2004, in March, in spring, in the morning, in the evening, etc (2) 在一段时间之后。一般情况下,用于将来时,谓语动词为瞬间动词,意为"在……以后"。如: He will arrive in two hours. 谓语动词为延续性动词时,in意为"在……以内"。如: These products will be produced in a month. 注意: after用于将来时间也指一段时间之后,但其后的时间是"一点",而不是"一段"。如: He will arrive after two o’clock. on指时间表示: (1) 具体的时日和一个特定的时间,如某日、某节日、星期几等。如: On Christmas Day (On May 4th) , there will be a celebration. (2) 在某个特定的早晨、下午或晚上。如: He arrived at 10 o’clock on the night of the 5th.

2015-04-11 · 1 min · 156 words · -

windows command

windows command tasklist 查看进程对应哪服务 tasklist -svc 查看进程调用哪些DLL tasklist -m 查看调用某一Dll的所有进程 tasklist -m MSVCP60.DLL,有时候不得以需要删除文件夹,老是提示dll文件受保护,不能删除文件夹,找到进程结束掉,regsvr32 -u *.dll注销dll文件,删除。这样应该可以了。 查看进程详细信息 tasklist -v: “进程名”,“PID”,“会话名 “,“会话#”,“内存使用 “,“状态 “,“用户名”,“CPU 时间”,“窗口标题 " 筛选器查找进程 EQ:等于 NE:不等于 LT:小于 LE:小于等于 GT:大于 GE:大于等于 tasklist -fi “username ne NT authority\system” -fi “status eq running” 列出系统中正在运行的非SYSTEM状态的所有进程 tasklist -fi "username ne NT authority\system" -fi "status eq running" 列出系统中正在运行的非SYSTEM状态的所有进程 tasklist -fi "pid eq 2860" -svc列出pid是2860的这个进程中的服务 (有问题的进程调用哪些服务) tasklist -fi "pid eq 2860" -m列出pid是2860的这个进程加载的dll模块 (有问题的进程调用哪些DLL文件) tasklist -fi "pid eq 2860" -v列出pid是2860的这个进程的详细信息 tasklist -fi "servicers eq spooler"列出对应服务是spooler的进程 (哪些进程在使用这个有问题的服务) tasklist -fi "modules eq MSVCP60.DLL"列出调用MSVCP60.DLL的进程 (哪些进程在使用这个有问题的DLL) Taskkill -pid 2860/Taskkill -im qq.exe 关掉进程 系统debug级的ntsd,很多进程Tasklist是杀不了的,但是用ntsd就可以,基本上除了WINDOWS系统自己的管理进程,ntsd都可以杀掉,不过有些rootkit级别的超级木马就无能为力了,不过幸好这类木马还是很少的。 ntsd 系统debug级的ntsd,很多进程Tasklist是杀不了的,但是用ntsd就可以,基本上除了WINDOWS系统自己的管理进程,ntsd都可以杀掉,不过有些rootkit级别的超级木马就无能为力了,不过幸好这类木马还是很少的。 1、利用进程的PID结束进程 命令格式: ntsd -c q -p pid 命令范例: ntsd -c q -p 1332 (结束explorer.exe进程) 2、利用进程名结束进程 命令格式: ntsd -c q -pn ***.exe (***.exe 为进程名,exe不能省) 命令范例: ntsd -c q -pn explorer.exe 大家有补充的,请留言 ...

2015-04-11 · 1 min · 127 words · -

come in 和 come on in

come in 和 come on in 怎么说呢,come on in 是比较热情比较口语的,在日常生活中很常用,而譬如说你去一个美国人家里,他肯定是招呼你 come on in 的,但你要敲门进上司的办公室,他肯定是说come in,因为come in毕竟比较正式

2015-04-09 · 1 min · 16 words · -

sum、number、amount、quantity

sum、number、amount、quantity quantity 基本意义是"数量",正是用语.强调大批计量,含准确测量的意味. 可用large, great, small 等表示"大小"意义的词修饰.不可用much, less 等表示"多少"的词修饰. quantity of + 不可数名词+谓单 quantity of + 可数名词复数+谓复 quantities +不可数名词/可数名词复数 + 谓复 Quantities of flowers appear in the park in Spring.春季公园里有许多花. 涉及到quantity 时要注意谓语单复数的选择 2 . amount 指累积的结果.用于表示"量"“额”,如重量、金额等. The amount of your bill is $252.你的账单总额为252美元. 3 . number 指数字或东西相加所得的总数.强调"数",与复数名词或代词连用.常与介词 of 连用. A small number of people believe in ghosts.只有少数人相信有鬼. 4 . sum 指最后的总结果,表示截止现在的总数,还有增加的可能. The sum will be increased by fifteen percent.金额将要增加百分之15. 表示金额数目巨大的有amount 通常于of 连用,表示金额的"量".sum 则可以直接表示金额.

2015-04-09 · 1 min · 73 words · -

golang defer

golang defer 不要在for循环直接用defer https://studygolang.com/articles/12061 panic Golang里比较常见的错误处理方法是返回error给调用者,但如果是无法恢复的错误,返回error也没有意义,此时可以选择go die: 主动触发panic。 除了代码中主动触发的panic,程序运行过程中也会因为出现某些错误而触发panic,例如数组越界。 panic 会停掉当前正在执行的程序 (注意,不只是协程) ,但是与os.Exit(-1)这种直愣愣的退出不同,panic的撤退比较有秩序,他会先处理完当前 goroutine 已经 defer 挂上去的任务,执行完毕后再退出整个程序。 而defer的存在,让我们有更多的选择,比如在defer中通过recover截取panic,从而达到try..catch的效果。 panic允许传递一个参数给他,参数通常是将出错的信息以字符串的形式来表示。panic会打印这个字符串,以及触发panic的调用栈。 defer func() { if e := recover(); e != nil { var buf [4096]byte n := runtime.Stack(buf[:], false) fmt.Printf("==> %s\n", string(buf[:n])) os.Exit(1) } }() defer defer 和 go一样都是Go语言提供的关键字。defer用于资源的释放,会在函数返回之前进行调用。一般采用如下模式: f,err := os.Open(filename) if err != nil { panic(err) } defer f.Close() 如果有多个defer表达式,调用顺序类似于栈,越后面的defer表达式越先被调用。 不过如果对defer的了解不够深入,使用起来可能会踩到一些坑,尤其是跟带命名的返回参数一起使用时。在讲解defer的实现之前先看一看使用defer容易遇到的问题。 defer使用时的坑 先来看看几个例子。例1: ...

2015-04-08 · 2 min · 226 words · -

8D报告

8D报告 8D又称团队导向问题解决方法、8D问题求解法 (8D Problem Solving) 是福特公司处理问题的一种方法,亦适用于制程能力指数低於其应有值时有关问题的解决,它提供了一套符合逻辑的解决问题的方法,同时对於统计制程管制与实际的品质提升架起了一座桥梁。 8D最早是美国福特公司使用的经典质量问题分析手法。 二战期间,美国政府率先采用一种类似8D的流程——“军事标准1520”,又称之为"不合格品的修正行动及部署系统"。 1987年,福特汽车公司首次用书面记录下8D法,在其一份课程手册中这一方法被命名为"团队导向的问题解决法" (Team Oriented Problem Solving) 。 当时,福特的动力系统部门正被一些经年累月、反复出现的生产问题搞得焦头烂额,因此其管理层提请福特集团提供指导课程,帮助解决难题。 8D是解决问题的8条基本准则或称8个工作步骤,但在实际应用中却有9个步骤: D0: 征兆紧急反应措施 D1: 小组成立 D2: 问题说明 D3: 实施并验证临时措施 D4: 确定并验证根本原因 D5: 选择和验证永久纠正措施 D6: 实施永久纠正措施 D7: 预防再发生 D8: 小组祝贺 D0: 征兆紧急反应措施 目的:主要是为了看此类问题是否需要用8D来解决,如果问题太小,或是不适合用8D来解决的问题,例如价格,经费等等,这一步是针对问题发生时候的紧急反应。 关键要点: 判断问题的类型、大小、范畴等等。与D3不同,D0是针对问题发生的反应,而D3是针对产品或服务问题本身的暂时应对措施。 D1: 小组成立 目的:成立一个小组,小组成员具备工艺/产品的知识,有配给的时间并授予了权限,同时应具有所要求的能解决问题和实施纠正措施的技术素质。小组必须有一个指导和小组长。 关键要点: 成员资格,具备工艺、产品的知识;目标 ;分工 ;程序 ;小组建设 D2: 问题说明 目的:用量化的术语详细说明与该问题有关的内/外部顾客抱怨,如什么、地点、时间、程度、频率等。 "什么东西,在什么时候,在哪里,发生了什么问题,严重程度怎样,发生比率多少" 方法: 质量风险评定,FMEA分析 关键要点:收集和组织所有有关数据以说明问题;问题说明是所描述问题的特别有用的数据的总结;审核现有数据,识别问题、确定范围;细分问题,将复杂问题细分为单个问题;问题定义,找到和顾客所确认问题一致的说明,"什么东西出了什么问题",而原因又未知风险等级。 D3: 实施并验证临时措施 目的:保证在永久纠正措施实施前,将问题与内外部顾客隔离。 (原为唯一可选步骤,但发展至今都需采用) 方法: FMEA、DOE、PPM 关键要点: 评价紧急响应措施;找出和选择最佳"临时抑制措施";决策 ;实施,并作好记录;验证 (DOE、PPM分析、控制图等) D4: 确定并验证根本原因 目的:用统计工具列出可以用来解释问题起因的所有潜在原因,将问题说明中提到的造成偏差的一系列事件或环境或原因相互隔离测试并确定产生问题的根本原因。 方法: FMEA、PPM、DOE、控制图、5W1H法 关键要点: 评估可能原因列表中的每一个原因;原因可否使问题排除;验证;控制计划 D5: 选择并验证永久纠正措施 目的:在生产前测试方案,并对方案进行评审以确定所选的校正措施能够解决客户问题,同时对其它过程不会有不良影响。 方法: FMEA 关键要点: 重新审视小组成员资格;决策,选择最佳措施;重新评估临时措施,如必要重新选择;验证;管理层承诺执行永久纠正措施;控制计划 D6: 实施永久纠正措施 目的:制定一个实施永久措施的计划,确定过程控制方法并纳入文件,以确保根本原因的消除。在生产中应用该措施时应监督其长期效果。 方法: 防错、统计控制 关键要点: 重新审视小组成员;执行永久纠正措施,废除临时措施;利用故障的可测量性确认故障已经排除;控制计划、工艺文件修改 D7: 预防再发生 目的:修改现有的管理系统、操作系统、工作惯例、设计与规程以防止这一问题与所有类似问题重复发生。 关键要点:选择预防措施;验证有效性;决策 ;组织、人员、设备、环境、材料、文件重新确定 D8: 小组祝贺 目的:承认小组的集体努力,对小组工作进行总结并祝贺。 关键要点: 有选择的保留重要文档;流览小组工作,将心得形成文件;了解小组对解决问题的集体力量,及对解决问题作出的贡献;必要的物质、精神奖励。 问题解决方法 8D (8 Disciplines) 问题解决8步法 8D的原名叫做8 Disciplines,意思是8个人人皆知解决问题的固定步骤。原始是由Ford公司,全球化品质管制及改善的特殊必备方法,之后已成为QS9000/ISO TS16949、福特公司的特殊要求。凡是做FORD的零件,必须采用8D 作为品质改善的工具,成为一个固定而有共识的标准化问题解决步骤。 Discipline 1. 成立改善小组(Form the Team): 由议题之相关人员组成,通常是跨功能性的,说明团队成员间的彼此分工方式或担任的责任与角色。 Discipline 2. 描述问题(Describe the Problem): 将问题尽可能量化而清楚地表达,并能解决中长期的问题而不是只有眼前的问题。 Discipline 3. 实施及确认暂时性的对策(Contain the Problem): 对于解决 D2 之立即而短期行动,避免问题扩大或持续恶化,包含清查库存、缩短PM时间、加派人力等。 Discipline 4. 原因分析及验证真因(Identify the Root Cause): 发生 D2 问题的真正原因、说明分析方法、使用工具(品质工具)的应用。 Discipline 5. 选定及确认长期改善行动效果(Formulate and Verify Corrective Actions): 拟订改善计划、列出可能解决方案、选定与执行长期对策、验证改善措施,清除 D4 发生的真正原因,通常以一个步骤一个步骤的方式说明长期改善对策, 可以应用专案计划甘特图(Gantt Chart),并说明品质手法的应用。 Discipline 6. 改善问题并确认最终效果(Correct the Problem and Confirm the Effects): 执行 D5 后的结果与成效验证。 Discipline 7. 预防再发生及标准化(Prevent the Problem): 确保 D4 问题不会再次发生的后续行动方案,如人员教育训练、改善案例分享(Fan out) 、作业标准化、产出BKM、执行FCN 、分享知识和经验等。 Discipline 8. 恭喜小组及规划未来方向(Congratulate the Team): 若上述步骤完成后问题已改善,肯定改善小组的努力,并规划未来改善方向。 适用范围 该方法适用于解决各类可能遇到的简单或复杂的问题; 8D方法就是要建立一个体系,让整个团队共享信息,努力达成目标。 8D本身不提供成功解决问题的方法或途径,但它是解决问题的一个很有用的工具; 亦适用于过程能力指数低于其应有值时有关问题的解决; 面对顾客投诉及重大不良时,提供解决问题的方法。 8D法是美国福特公司解决产品质量问题的一种方法,曾在供应商中广泛推行,现已成为国际汽车行业 (特别是汽车零部件产家) 广泛采用来解决产品质量问题最好的、有效的方法。 优点 发现真正肇因的有效方法,并能够采取针对性措施消除真正肇因,执行永久性矫正措施。 能够帮助探索允许问题逃逸的控制系统。 逃逸点的研究有助于提高控制系统在问题再次出现时的监测能力。 预防机制的研究有助于帮助系统将问题控制在初级阶段。 缺点 8D培训费时,且本身具有难度。 除了对8D问题解决流程进行培训外,还需要数据挖掘的培训,以及对所需用到的分析工具 (如鱼骨图和流程图,等等) 进行培训。[1] http://baike.baidu.com/view/1318951.htm

2015-04-08 · 1 min · 194 words · -

MySQL install

MySQL install debian install MySQL server sudo apt-get install MySQL-server 一、下载MySQL安装包 安装包名称: MySQL-5.6.12-win32.zip 下载地址: http://dev.MySQL.com/downloads/MySQL/ 二、安装MySQL 2.1 修改配置文件my.ini 将MySQL-5.6.12-win32.zip解压拷贝到F:\ 修改F:\MySQL-5.6.12-win32.zip目录下的配置文件my.ini如下: [client] port = 3306 [MySQL] [MySQLd] bind-address = 0.0.0.0 basedir=D:/apps/MySQL-5.6.23-winx64 datadir=D:/apps/MySQL-5.6.23-winx64/data max_connections=200 character-set-server=utf8 port=3306 try to start MySQL with console MySQLd -console 2.2 安装MySQL为windows系统服务 以管理员身份(Run as administrator)启动cmd,切换到目录F:/MySQL-5.6.12-win32/bin MySQLd.exe -install 如果以普通用户执行该命令会提示Install/Remove of the Service Denied! 三、启动MySQL服务 3.1 启动MySQL服务 以管理员身份启动cmd,切换到目录F:/MySQL-5.6.12-win32/bin 启动MySQL服务: net start MySQL 四、执行命令 4.1 登录MySQL MySQL -u root -p ...

2015-04-04 · 1 min · 84 words · -

度、分、秒与角度的换算方法

度、分、秒与角度的换算方法 http://iask.sina.com.cn/b/15281411.html 如把:30°54′36″换算成角度 30°=30 54′=54/60=0.9 36″=36/3600=0.01 结果:=30+0.9+0.01=30.91° 反过来,把30.91°换算成度、分、秒 30=30° 0.91=0.9160=54.6′(取整数)=54′ 取上式的小数部分 0.6=0.660=36″ 结果:30°54′36″

2015-03-26 · 1 min · 13 words · -

Error, defect,fault, failure and mistake

Error, defect,fault, failure and mistake http://www.geekinterview.com/question_details/33503 Error/bug/defect/mistake-> are human intraction which produce an incorrect result. Fault-> Fault is a stage of software which is caused by an error/bug/defect/mistake. Failure-> It is a deviation of software from its expected delivery or service. For eg. you are driving a car and you are on road while on driving now there is two way on the road left-> mumbai right-> delhi now you have to go to delhi it means you have to turn the stearing to the right, but by mistake you turn the stearing to the left, from that position that is called as “Error” because human intraction is there. and now Fault is there till you will not reach the mumbai, but when you reach mumbai that is a final stage which is called “Failure” becoz you had to reach delhi but now you are in Mumbai.

2015-03-24 · 1 min · 147 words · -

table bench and desk

table bench and desk ~A table is an article of furniture supported by one or more vertical legs and having a flat horizontal surface. ~A bench is a long seat, differing from a stool in its greater length. ~A desk is a table, frame, or case, usually with sloping top, but often with flat top, for the use writers and readers. It often has a drawer or repository underneath. Note on “bench” - it can also refer to something used as a table, with the similarity being that it is long. Eg. workbench. ...

2015-03-24 · 1 min · 129 words · -

数据库模型设计——关系的实现

数据库模型设计 - 关系的实现 在实体关系模型中,我们知道有三种关系: 一对一、一对多、多 http://www.cnblogs.com/studyzy/p/3309782.html 数据库模型设计——关系的实现对多。这只是概念上的关系,但是在真实的关系数据库中,我们只有外键,并没有这三种关系,那么我们就来说一说在关系数据库管理系统中,怎么实现这三种关系。 一对多 这里先讲解一对多,因为这个关系最简单。一对多和多对一是一回事,所以就不再提多对一这个词。一对多的概念是一个对象A会对应多个对象B,而从B的角度看,一个对象B只会对于一个对象A。比如说班级和学生就是一对多关系。一个班级对应多个学生,一个学生只会对于一个班级。 一对多的关系之所以说简单,是因为RDBMS的外键其实就是表示一对多关系。对于一对多关系,我们只需要在"多"的这个表中建立"一"的外键关联即可,而"一"这边的表不需要做任何修改。比如前面说到的班级学生关系。班级表不变,学生表增加班级Id作为外键。 多对多 多对多的关系在数据库设计时比一对一要常见,所以这里先说说多对多。多对多是一个对象A对应多个对象B,从B角度看,一个对象B也会对应多个对象A。比如说学生和课程的关系就是多对多关系。一个学生会学习多门课程,一门课程会有多个学生来选修。 在RDBMS中,必须使用中间表来表示多对多的关系。中间表我们可以分成两种,一种是纯粹表示关系的中间表,一种是表示中间实体的中间表。 纯粹表示关系的中间表很简单,只需要两列: AID 和 BID,AID 以外键关联到 A 表的主键,BID 以外键关联到 B 表的主键,然后这两个列组成联合主键。 这个中间表纯粹是表示多对多关系而存在, 在业务上不会有对应的实体与之对应。比如前面提到的学生和课程的关系,如果我们只需要知道哪些学生上哪些课,哪些课有哪些学生选, 不需要有更多的信息的情况下,我们就可以建立"学生课程"中间表,里面只有学生ID和课程ID两个字段。 中间实体是在纯粹的中间关系表的基础上,加上了更多的属性,从而形成了一个新的实体。比如前面提到的学生和课程的关系,如果我们需要记录学生选课的时间、学生选择这门课程后的考试成绩,那么我们就像建立一个"选课"实体,该实体具有如下属性: 选课 ID,主键 学生ID,与学生表做外键关联 课程ID,与课程表做外键关联 选课时间,DateTime类型 考试成绩,记录选修该课程后考试的最终成绩 这就是一个中间实体,已经完全脱离了普通的多对多关系中间表,而变成一个实体的形式的存在,所以按照前面博客中讲到的主键设计的原则, 我们可以单独建立一个选课ID的列作为数据库的主键,该主键本身并没有业务含义。 一对一 一对一概念上是说一个对象A最多对应一个对象B,从B角度看,也是一个对象B最多对应一个对象A。比如说班主任 (教师) 和班级的关系,一个班主任最多管理一个班级,一个班级也最多只有一个班主任。 一对一的关系在数据库设计中,是使用的最少的关系,因为一般来说,如果两个实体是一对多关系,那么我们也可以把这两个实体合并成一个实体。但是在设计中,我们仍然会遇到两个完全不同的实体,之间存在一对一关系。 一对一的RDBMS实现是在其中的一个表上建立外键指向另一个表,同时在该外键列上建立唯一约束。比如前面说到的班主任和班级关系,我们可以在班级表建立班主任字段,然后再在该字段建立唯一约束。因为每个班都会有班主任,所以班主任字段是不允许为空的。一个教师可以当某个班的班主任,也可以不当任和班的班主任,同时也不可能在班级表的班主任字段上出现两次,所以最多就当一个班的班主任,所以该设计满足需求。 那么我们可不可以反过来,在教师表中建立所管理的班级Id字段,指向班级表,并建立唯一约束呢?除了不满足"每个班必然有一个班主任"这个业务约束外,其他都没有问题。所以如果对于一对一的情况,如果那边必须要求持有另一边,则就在哪边增加外键字段;如果没有要求必须持有一个另一类实体的话,就哪边添加外键列都行。 外键与索引 外键是一种约束,与索引的概念不一样,只是大多数情况下,我们建立外键时,都会在外键列上建立对应的索引。外键的存在会在每一次数据插入、修改时进行约束检查,如果不满足外键约束,则禁止数据的插入或修改,这必然带来一个问题,就是在数据量特别大的情况下,每一次约束检查必然导致性能的下降。索引其实也有类似的问题,索引如果建多了,那么在插入删除修改数据时也要去维护对应的索引,所以索引的存在也会导致数据操作变慢。 不过外键与索引的优点不同,外键只是保证数据的一致性,并不能给系统性能带来任何好处,所以由于外键导致的插入数据变慢会随着数据量的增长而越来越严重。而索引的目的是为了检索数据更快,维护数据时导致的索引数据的变更,对性能的影响不会像外键那样随着数据量增长而变得严重 (当然大数量时的索引树维护会比小数据量的索引树维护更麻烦,但至少不是像外键那样) 。 出于性能的考虑,如果我们的系统完全由我们开发的程序使用,而不需要提供数据库给其他应用系统写入数据,而且对性能要求较高,那么我们可以考虑在生产环境中不使用外键,只需要建立能够提高性能的索引。由于整个数据库的操作都是由我们开发的程序来完成的,所以我们程序可以在开发过程中做好各方面的一致性检查,保证操作的数据是满足外键约束的,而不需要真正的存在这样一个外键约束。怎么做到这一点呢,首先,我们在建立数据库时有多个脚本,包括创建表、创建初始化数据、创建索引、创建外键等,我们在开发和测试环境中,都把这些脚本运行了,以使开发测试环境中的数据库是完整的,经过大量测试保证应用程序能够维护数据之间的约束的情况下,那么我们在生产时,并不需要运行创建外键这个脚本文件,只需要创建表、初始化数据、创建索引等即可。 【出自博客园深蓝居,转载请注明作者出处】

2015-03-23 · 1 min · 49 words · -

数据库 关系表

数据库 关系表 http://www.itokit.com/2012/0512/73913.html 关联映射: 一对多/多对一存在最普遍的映射关系,简单来讲就如球员与球队的关系;一对多: 从球队角度来说一个球队拥有多个球员 即为一对多多对一: 从球员角度来说多个球员属于一个球队 即为多对一数据表间一对多关系如下图: 关联映射: 一对一关系就如球队与球队所在地址之间的关系,一支球队仅有一个地址,而一个地址区也仅有一支球队。数据表间一对一关系的表现有两种,一种是外键关联,一种是主键关联。图示如下: 一对一外键关联: 前言: 多对多关系至少需要3个表,我们把一个表叫做主表,一个叫做关系表,另外一个叫做字典表或者副表 (字典表是纪录比较少,而且基本稳定的,例如: 版块名称;副表是内容比较多,内容变化的,例如) 。 按照数据库的增删查改操作,多对多关系的查找都可以用inner join或者 select * from 主表 where id in (select 主表id from 关系表) 1,角色任命型 特点: 关系表两外键组合无重复纪录,关系表一般不需要时间字段和主键,有一个表是字典类型的表。 界面特点: 显示主表,用checkbox或多选select设置多选关系。 例如: 任命版主 (用户表-关系表-版块名称表) ,角色权限控制等,用户是5个版块版主,只要关系表5行纪录就可以确立,关系表的两个外键具有联合主键性质。 增加关系: 如果没有组合纪录,insert之。 删除关系: 如果有组合纪录,删除之。 2,集合分组型 特点: 同角色任命型类似,关系表两外键组合无重复纪录,关系表一般不需要时间字段和主键。区别是主副表都不是字典表,可能都很大不固定。 界面特点: 显示主表,用搜索代替简单的checkbox或多选select,或者一条一条的添加。 例如: 歌曲专集 (专集表-关系表-歌曲表) 。手机分组 (分组表-关系表-手机表) 。用户圈子 (圈子表-关系表-用户表) 。文章标签 (文章表-关系表-标签表) 增加关系: 同版主任命型。 删除关系: 同版主任命型。 3,明细帐型 特点: 关系表可以有重复纪录,关系表一般有时间字段,有主键,可能还有文字型的字段用来说明每次发生关系的原因 (消费) 。 界面特点: 显示关系表,用radio或下拉设置单选关系。 例如: 现金消费明细帐或订单 (用户表-订单表-消费原因表) ,用户可能多次在同一事情上重复消费。积分变化纪录也属于这类。 ...

2015-03-23 · 1 min · 156 words · -