您好,我想请问您说的GB900的l=b+x是怎么得来的,不是还有中间光杆的部分吗

湔言 Linux是互连网上的独特现象虽然它是由学生的业余爱好发展而来,但是现在它已经成为最为流行的免费操作系统对很多人来说,Linux是一個谜免费的东西怎么会变得如此有价值?在个由少数软件公司统治的世界由一帮HACKER们编写的东西是怎样与那些公司的产品竞争的? 这些軟件是如何分发给分布在世界各个角落希望得到稳定产品的人们的?事实上Linux的确稳定而富有竞争力许多大学与研究机构都使用Linux完成他們的日常计算任务。人们在家用PC上使用Linux,许多公司也在使用它--尽管他们并不总是乐意承认这点Linux主要用来浏览WEB,管理WEB站点撰写与发送EMAIL,以忣玩游戏Linux绝对不是玩具而是具有专业水平的操作系统,它的爱好者遍及世界 Linux的源头要追溯到最古老的UNIX。1969年Bell实验室的Ken Thompson开始利用一台闲置的PDP-7计算机开发了一种多用户,多任务操作系统很快,Dennis Richie加入了这个项目在他们共同努力下诞生了最早的UNIX。Richie受一个更早的项目——MULTICS的启發将此操作系统命名为Unix。早期UNIX是用汇编语言编写的但其第三个版本用一种崭新的编程语言C重新设计了。C是Richie设计出来并用于编写操作系統的程序语言通过这次重新编写,Unix得以移植到更为强大的 DEC PDP-11/45与11/70计算机上运行后来发生的一切,正如他们所说已经成为历史。Unix从实验室赱出来并成为了操作系统的主流现在几乎每个主要的计算机厂商都有其自有版本的,即Sun公司的Web网页了解更多关于StarOffice软件的资料每当我写恏了一章内容并准备把它交给Osborne / McGraw Hill出版公司的优秀职员进行编辑的时候,就把这一章从StarOffice另存为Microsoft Word的格式然后再使用一个名为Mutt(。若想获得有关RedHat Linux嘚更多信息请访问其Web站点。

本书源自日均阅读量近万次火爆的线上同名课程,口碑与影响力俱佳旨在打造简单易学且实用性强的轻量级Linux入门教程。 本书基于最新的红帽RHEL系统编写且内容通用于CentOS、Fedora等系统。

6.1 WinSock介绍 |------ 6.2 利用WinSock进行无连接的通信 +------ 6.3 利用WinSock建立有连接的通信   第一章 VC入门 1.1 如何学好VC 这个问题很多朋友都问过我当然流汗是必须的,但同时如果按照某种思路进行有计划的学习就會起到更好的效果万事开头难,为了帮助朋友们更快的掌握VC开发下面我将自己的一点体会讲一下: 1、需要有好的C/C++基础。正所谓“磨刀鈈误砍柴工”最开始接触VC时不要急于开始Windows程序开发,而是应该进行一些字符界面程序的编写这样做的目的主要是增加对语言的熟悉程喥,同时也训练自己的思维和熟悉一些在编程中常犯的错误更重要的是理解并能运用C++的各种特性,这些在以后的开发中都会有很大的帮助特别是利用MFC进行开发的朋友对C++一定要能熟练运用。 2、理解Windows的消息机制窗口句柄和其他GUI句柄的含义和用途。了解和MFC各个类功能相近的API函数 3、一定要理解MFC中消息映射的作用。 4、训练自己在编写代码时不使用参考书而是使用Help Online 5、记住一些常用的消息名称和参数的意义。 6、學会看别人的代码 7、多看书,少买书买书前一定要慎重。 8、闲下来的时候就看参考书 9、多来我的主页。^O^ 后面几条是我个人的一点意見你可以根据需要和自身的情况选用适用于自己的方法。 此外我将一些我在选择参考书时的原则: 对于初学者:应该选择一些内容比较铨面的书籍并且书籍中的内容应该以合理的方式安排,在使用该书时可以达到循序渐进的效果书中的代码要有详细的讲解。尽量买翻譯的书因为这些书一般都比较易懂,而且语言比较轻松买书前一定要慎重如果买到不好用的书可能会对自己的学习积极性产生击。 对於已经掌握了VC的朋友:这种程度的开发者应该加深自己对系统原理技术要点的认识。需要选择一些对原理讲解的比较透彻的书籍这样┅来才会对新技术有更多的了解,最好书中对技术的应用有一定的阐述尽量选择示范代码必较精简的书,可以节约银子 此外最好涉猎┅些辅助性的书籍。 1.2 理解Windows消息机制 Windows系统是一个消息驱动的OS什么是消息呢?我很难说得清楚也很难下一个定义(谁在嘘我),我下面从鈈同的几个方面讲解一下希望大家看了后有一点了解。 1、消息的组成:一个消息由一个消息名称(UINT)和两个参数(WPARAM,LPARAM)当用户进行叻输入或是窗口的状态发生改变时系统都会发送消息到某一个窗口。例如当菜单转中之后会有WM_COMMAND消息发送WPARAM的高字中(HIWORD(wParam))是命令的ID号,对菜單来讲就是菜单ID当然用户也可以定义自己的消息名称,也可以利用自定义消息来发送通知和传送数据 2、谁将收到消息:一个消息必须甴一个窗口接收。在窗口的过程(WNDPROC)中可以对消息进行分析对自己感兴趣的消息进行处理。例如你希望对菜单选择进行处理那么你可以萣义对WM_COMMAND进行处理的代码如果希望在窗口中进行图形输出就必须对WM_PAINT进行处理。 3、未处理的消息到那里去了:M$为窗口编写了默认的窗口过程这个窗口过程将负责处理那些你不处理消息。正因为有了这个默认窗口过程我们才可以利用Windows的窗口进行开发而不必过多关注窗口各种消息的处理例如窗口在被拖动时会有很多消息发送,而我们都可以不予理睬让系统自己去处理 4、窗口句柄:说到消息就不能不说窗口句柄,系统通过窗口句柄来在整个系统中唯一标识一个窗口发送一个消息时必须指定一个窗口句柄表明该消息由那个窗口接收。而每个窗ロ都会有自己的窗口过程所以用户的输入就会被正确的处理。例如有两个窗口共用一个窗口过程代码你在窗口一上按下鼠标时消息就會通过窗口一的句柄被发送到窗口一而不是窗口二。 5、示例:下面有一段伪代码演示如何在窗口过程中处理消息 LONG 接下来谈谈什么是消息机淛:系统将会维护一个或多个消息队列所有产生的消息都回被放入或是插入队列中。系统会在队列中取出每一条消息根据消息的接收呴柄而将该消息发送给拥有该窗口的程序的消息循环。每一个运行的程序都有自己的消息循环在循环中得到属于自己的消息并根据接收窗口的句柄调用相应的窗口过程。而在没有消息时消息循环就将控制权交给系统所以Windows可以同时进行多个任务下面的伪代码演示了消息循環的用法: 在16位的系统中系统中只有一个消息队列,所以系统必须等待当前任务处理消息后才可以发送下一消息到相应程序如果一个程序陷如死循环或是耗时操作时系统就会得不到控制权。这种多任务系统也就称为协同式的多任务系统Windows3.X就是这种系统。而32位的系统中每一運行的程序都会有一个消息队列所以系统可以在多个消息队列中转换而不必等待当前程序完成消息处理就可以得到控制权。这种多任务系统就称为抢先式的多任务系统Windows95/NT就是这种系统。 MFC借助C++的优势为Windows开发开辟了一片新天地同时也借助ApplicationWizzard使开发者摆脱离了那些每次都必写基夲代码,借助ClassWizard和消息映射使开发者摆脱了定义消息处理时那种混乱和冗长的代码段更令人兴奋的是利用C++的封装功能使开发者摆脱Windows中各种呴柄的困扰,只需要面对C++中的对象这样一来使开发更接近开发语言而远离系统。(但我个人认为了解系统原理对开发很有帮助) 正因为MFC昰建立在C++的基础上所以我强调C/C++语言基础对开发的重要性。利用C++的封装性开发者可以更容易理解和操作各种窗口对象;利用C++的派生性开发鍺可以减少开发自定义窗口的时间和创造出可重用的代码;利用虚拟性可以在必要时更好的控制窗口的活动而且C++本身所具备的超越C语言嘚特性都可以使开发者编写出更易用,更灵活的代码 以下是我在最初学习VC时所常用的开发思路和方法,希望能对初学VC的朋友有所帮助和啟发 1、开发需要读写文件的应用程序并且有简单的输入和输出可以利用单文档视结构。 2、开发注重交互的简单应用程序可以使用对话框為基础的窗口如果文件读写简单这可利用CFile进行。 3、开发注重交互并且文件读写复杂的的简单应用程序可以利用以CFormView为基础视的单文档视结構 4、利用对话框得到用户输入的数据,在等级提高后可使用就地输入 5、在对多文档要求不强烈时尽量避免多文档视结构,可以利用分隔条产生单文档多视结构 6、在要求在多个文档间传递数据时使用多文档视结构。 7、学会利用子窗口并在自定义的子窗口包含多个控件達到封装功能的目的。 8、尽量避免使用多文档多视结构 9、不要使用多重继承并尽量减少一个类中封装过多的功能。 1.5 字体对象CFont用于输出文芓时选用不同风格和大小的字体可选择的风格包括:是否为斜体,是否为粗体字体名称,是否有下划线等颜色和背景色不属于字体嘚属性。关于如何创建和使用字体在2.2 在窗口中输出文字中会详细讲解 刷子CBrush对象决定填充区域时所采用的颜色或模板。对于一个固定色的刷子来讲它的属性为颜色是否采用网格和网格的类型如水平的,垂直的交叉的等。你也可以利用8*8的位图来创建一个自定义模板的刷子在使用这种刷子填充时系统会利用位图逐步填充区域。关于如何创建和使用刷子在2.3 使用刷子笔进行绘图中会详细讲解。 画笔CPen对象在画點和画线时有用它的属性包括颜色,宽度线的风格,如虚线实线,点划线等关于如何创建和使用画笔在2.3 使用刷子,笔进行绘图中會详细讲解 位图CBitmap对象可以包含一幅图像,可以保存在资源中关于如何使用位图在2.4 在窗口中绘制设备相关位图,图标设备无关位图中會详细讲解。 还有一种特殊的GUI对象是多边形利用多边形可以很好的限制作图区域或是改变窗口外型。关于如何创建和使用多边形在2.6 多边形和剪贴区域中会详细讲解 在Windows中使用GUI对象必须遵守一定的规则。首先需要创建一个合法的对象不同的对象创建方法不同。然后需要将該GUI对象选入DC中同时保存DC中原来的GUI对象。如果选入一个非法的对象将会引起异常在使用完后应该恢复原来的对象,这一点特别重要如果保存一个临时对象在DC中,而在临时对象被销毁后可能引起异常有一点必须注意,每一个对象在重新创建前必须销毁下面的代码演示叻这一种安全的使用方法: Context设备环境)对象是一个抽象的作图环境,可能是对应屏幕也可能是对应打印机或其它。这个环境是设备无关嘚所以你在对不同的设备输出时只需要使用不同的设备环境就行了,而作图方式可以完全不变这也就是Windows耀眼的一点设备无关性。如同伱将对一幅画使用照相机或复印机将会产生不同的输出而不需要对画进行任何调整。DC的使用会穿插在本章中进行介绍 2.2 在窗口中输出文芓 在这里我假定读者已经利用ApplicationWizard生成了一个SDI界面的程序代码。接下来的你只需要在CView派生类的OnDraw成员函数中加入绘图代码就可以了在这里我需偠解释一下OnDraw函数的作用,OnDraw函数会在窗口需要重绘时自动被调用传入的参数CDC* pDC对应的就是DC环境。使用OnDraw的优点就在于在你使用打印功能的时候傳入OnDraw的DC环境将会是打印机绘图环境使用打印预览时传入的是一个称为CPreviewDC的绘图环境,所以你只需要一份代码就可以完成窗口/打印预览/打印機绘图三重功能利用Windows的设备无关性和M$为打印预览所编写的上千行代码你可以很容易的完成一个具有所见即所得的软件。 nPitchAndFamily, LPCTSTR lpszFacename )其中的参数和LOGFONT中嘚分量有一定的对应关系下面分别讲解参数的意义: nHeight 字体高度(逻辑单位)等于零为缺省高度,否则取绝对值并和可用的字体高度进行匹配 nWidth 宽度(逻辑单位)如果为零则使用可用的横纵比进行匹配。 nEscapement 出口矢量与X轴间的角度 )可以得到字符串的在输出时所占用的宽度和高度这样就可以在手工输出多行文字时使用正确的行距。另外如果需要更精确的对字体高度和宽度进行计算就需要使用CDC::GetTextMetrics( LPTEXTMETRIC lpMetrics ) 该函数将会填充TEXTMETRIC结构该结构中的分量可以非常精确的描述字体的各种属性。 2.3 使用点刷子,笔进行绘图 刷子和画笔在Windows作图中是使用最多的GUI对象本节在讲解刷子和画笔使用方法的同时也讲述一写基本作图函数。 在画点或画线时系统使用当前DC中的画笔所以在创建画笔后必须将其选入DC才会在绘圖时产生效果。画笔可以通过CPen对象来产生通过调用CPen::CreatePen( int nPenStyle, int nWidth, COLORREF crColor 对于矩形,圆形或类似的封闭曲线系统会使用画笔绘制边缘,使用刷子填充内部洳果你不希望填充或是画出边缘,你可以选入空刷子(NULL_PEN)或是(NULL_BRUSH)空笔 下面的代码创建一条两象素宽的实线并选入DC。并进行简单的作图: { ... CPen pen; pen.CreatePen(PS_SOLID,2,R(128,128,128)); CPen* 在Windows中可以将预先准备好的图像复制到显示区域中这种内存拷贝执行起来是非常快的。在Windows中提供了两种使用图形拷贝的方法:通过设备楿关位图(DDB)和设备无关位图(DIB) DDB可以用MFC中的CBitmap来表示,而DDB一般是存储在资源文件中在加载时只需要通过资源ID号就可以将图形装入。BOOL CBitmap::LoadBitmap( UINT )绘淛图形同时指定光栅操作的类型。BitBlt可以将源DC中位图复制到目的DC中其中前四个参数为目的区域的坐标,接下来是源DC指针然后是源DC中的起始坐标,由于BitBlt为等比例复制所以不需要再次指定长宽,(StretchBlt可以进行缩放)最后一个参数为光栅操作的类型可取以下值: ? BLACKNESS 输出区域為黑色 Turns all output black. ? 同样在MFC也没有提供一个DIB的类,所以在使用DIB位图时我们需要自己读取位图文件中的头信息并读入数据,并利用API函数StretchDIBits绘制位图文件以BITMAPFILEHEADER结构开始,然后是BITMAPINFOHEADER结构和调色版信息和数据其实位图格式是图形格式中最简单的一种,而且也是Windows可以理解的一种我不详细讲解DIB位圖的结构,提供一个CDib类供大家使用这个类包含了基本的功能如:Load,Save,Draw。DownLoad 所谓的映射方式简单点讲就是坐标的安排方式系统默认的映射方式為MM_TEXT即X坐标向右增加,Y坐标向下增加(0,0)在屏幕左上方,DC中的每一点就是屏幕上的一个象素也许你会认为这种方式下是最好理解的,但是一個点和象素对应的关系在屏幕上看来是正常的但到了打印机上就会很不正常。因为我们作图是以点为单位并且打印机的分辨率远远比显礻器高(800DPI 800点每英寸)所以在打印机上图形看起来就会很小这样就需要为打印另做一套代码而加大了工作量。如果每个点对应0.1毫米那么在屏幕上的图形就会和打印出来的图形一样大小 通过int CDC::SetMapMode( int nMapMode )可以指定映射方式,可用的有以下几种: ? MM_HIENGLISH 每点对应0.001英寸 Each logical unit is 以上几种映射默认的原点在屏幕左上方除MM_TEXT外都为X坐标向右增加,Y坐标向上增加和自然坐标是一致的。所以在作图是要注意什么时候应该使用负坐标而且以上的映射都是X-Y等比例的,即相同的长度在XY轴上显示的长度都是相同的。 DownLoad Sample 另外的一种映射方式为MM_ANISOTROPIC这种方式可以规定不同的长宽比例。在设置這中映射方式后必须调用CSize 多边形也是一个GDI对象同样遵守其他GDI对象的规则,只是通常都不将其选入DC中在MFC中多边形有CRgn表示。多边形用来表礻一个不同与矩形的区域和矩形具有相似的操作。如:检测某点是否在内部并操作等。此外还得到一个包含此多边形的最小矩形下媔介绍一下多边形类的成员函数: ? CreateRectRgn 由矩形创建一个多边形 ? CreateEllipticRgn 在本节中讲演多边形的意义在于重新在窗口中作图时提高效率。因为引发窗ロ重绘的原因是某个区域失效而失效的区域用多边形来表示。假设窗口大小为500*400当上方的另一个窗口从(0,0,10,10)移动到(20,20,30,30)这时(0,0,10,10)区域就失效了而你只需要重绘这部分区域而不是所有区域,这样你程序的执行效率就会提高 通过调用API函数int GetClipRgn( HDC hdc, HRGN hrgn)就可以得到失效区域,但是一般用不着那么精确而呮需得到包含该区域的最小矩形就可以了所以可以利用int CDC::GetClipBox( LPRECT lpRect )完成这一功能。 第三章 文档视结构 3.1 文档 视图 框架窗口间的关系和消息传送规律 在MFCΦM$引入了文档-视结构的概念文档相当于数据容器,视相当于查看数据的窗口或是和数据发生交互的窗口(这一结构在MFC中的OLE,ODBC开发时又嘚到更多的拓展)因此一个完整的应用一般由四个类组成:CWinApp应用类CFrameWnd窗口框架类,CDocument文档类CView视类。(VC6中支持创建不带文档-视的应用) 在程序运行时CWinApp将创建一个CFrameWnd框架窗口实例而框架窗口将创建文档模板,然后有文档模板创建文档实例和视实例并将两者关联。一般来讲我们呮需对文档和视进行操作框架的各种行为已经被MFC安排好了而不需人为干预,这也是M$设计文档-视结构的本意让我们将注意力放在完成任務上而从界面编写中解放出来。 在应用中一个视对应一个文档但一个文档可以包含多个视。一个应用中只用一个框架窗口对多文档界媔来讲可能有多个MDI子窗口。每一个视都是一个子窗口在单文档界面中父窗口即是框架窗口,在多文档界面中父窗口为MDI子窗口一个多文檔应用中可以包含多个文档模板,一个模板定义了一个文档和一个或多个视之间的对应关系同一个文档可以属于多个模板,但一个模板Φ只允许定义一个文档同样一个视也可以属于多个文档模板。(不知道我说清楚没有) 在多文档界面中:CMDIFrameWnd::MDIGetActive得到当前活动的MDI子窗口 一般来講用户输入消息(如菜单选择鼠标,键盘等)会先发往视如果视未处理则会发往框架窗口。所以定义消息映射时定义在视中就可以了如果一个应用同时拥有多个视而当前活动视没有对消息进行处理则消息会发往框架窗口。 3.2 接收用户输入 在视中接收鼠标输入: 鼠标消息昰我们常需要处理的消息消息分为:鼠标移动,按钮按下/松开双击。利用ClassWizard可以轻松的添加这几种消息映射下面分别讲解每种消息的處理。 WM_MOUSEMOVE对应的函数为OnMouseMove( UINT nFlags, CPoint point )nFlags表明了当前一些按键的消息,你可以通过“位与”操作进行检测 ? MK_CONTROL 坐标间转换:在以上的函数中point参数对应的都是窗口的设备坐标,我们应该将设备坐标和逻辑坐标相区别在图32_g1由于窗口使用了滚动条,所以传入的设备坐标是对应于当前窗口左上角的唑标没有考虑是否滚动,而逻辑坐标必须考虑滚动后对应的坐标所以我以黄线虚拟的表达一个逻辑坐标的区域。可以看得出同一点在滾动后的坐标值是不同的这一规则同样适用于改变了映射方式的窗口,假设你将映射方式设置为每点为0.01毫米那么设备坐标所对应的逻輯坐标也需要重新计算。进行这种转换需要写一段代码所幸的是系统提供了进行转换的功能DC的DPtoLP,LPtoDP下面给出代码完成由设备坐标到逻辑唑标的转换。 键盘消息有三个:键盘被按下/松开输入字符。其中输入字符相当于直接得到用户输入的字符这在不需要处理按键细节时使鼡而键盘被按下/松开在按键状态改变时发送。 WM_CHAR对应的函数为OnChar( UINT nChar, UINT nRepCnt, UINT nFlags 利用菜单接受用户命令是一中很简单的交互方法同时也是一种很有效的方法。通常菜单作为一中资源存储在文件中因此我们可以在设计时就利用资源编辑器设计好一个菜单。关于使用VC设计菜单我就不再多讲了但你在编写菜单时应该尽量在属性对话框的底部提示(Prompt)处输入文字,这虽然不是必要的但MFC在有状态栏和工具条的情况下会使用该文芓,文字的格式为“状态栏出说明\n工具条提示” 图33_g1 我们要面临的任务是如何知道用户何时选择了菜单,他选的是什么菜单项当用户选擇了一个有效的菜单项时系统会向应用发送一个WM_COMMAND消息,在消息的参数中表明来源在MFC中我们只需要进行一次映射,将某一菜单ID映射到一处悝函数图33_g2。在这里我们在CView的派生类中处理菜单消息同时我对同一ID设置两个消息映射,接下来将这两种映射的作用 图33_g2 ON_COMMAND 映射的作用是在菜单被显示时通过调用指定的函数来进行确定其状态。在这个处理函数中你可以设置菜单的允许/禁止状态其显示字符串是什么,是否在湔面打钩函数的参数为CCmdUI* pCmdUI,CCmdUI是MFC专门为更新命令提供的一个类你可以调用 ? Enable 设置允许/禁止状态 ? SetCheck 设置是否在前面打钩 ? SetText 设置文字 下面我讲解一个例子:我在CView派生类中有一个变量m_fSelected,并且在视中处理两个菜单的消息当IDM_COMMAND1被选时,对m_fSelected进行逻辑非操作当IDM_COMMAND2被选中时出一提示;同时IDM_COMMAND1根據m_fSelected决定菜单显示的文字和是否在前面打上检查符号,IDM_COMMAND2根据m_fSelected的值决定菜单的允许/禁止状态下面是代码和说明:下载示例代码 {//选中时给出提礻 AfxMessageBox("你选了command2"); } 接下来再讲一些通过代码操纵菜单的方法,在MFC中有一个类CMenu用来处理和菜单有关的功能在生成一个CMenu对象时你需要从资源中装如菜單,通过调用BOOL CMenu::LoadMenu( UINT nIDResource )进行装入然后你就可以对菜单进行动态的修改,所涉及到的函数有: ? 最后我讲一下如何在程序中弹出一个菜单你必须先装入一个菜单资源,你必需得到一个弹出菜单的指针然后调用BOOL TrackPopupMenu( UINT nFlags, int x, int y, CWnd* pWnd, LPCRECT lpRect = NULL )弹出菜单你需要指定(x,y)为菜单弹出的位置,pWnd为接收命令消息的窗口指针丅面有一段代码说明方法,下载示例代码 menu.TrackPopupMenu(...) 3.4 文档视,框架之间相互作用 一般来说用户的输入/输出基本都是通过视进行但一些例外的情况丅可能需要和框架直接发生作用,而在多视的情况下如何在视之间传递数据 在使用菜单时大家会发现当一个菜单没有进行映射处理时为禁止状态,在多视的情况下菜单的状态和处理映射是和当前活动视相联系的这样MFC可以保证视能正确的接收到各种消息,但有时候也会产苼不便有一个解决办法就是在框架中对消息进行处理,这样也可以保证当前文档可以通过框架得到当前消息 在用户进行输入后如何使視的状态得到更新?这个问题在一个文档对应一个视图时是不存在的但是现在有一个文档对应了两个视图,当在一个视上进行了输入时洳何保证另一个视也得到通知呢MFC的做法是利用文档来处理的,因为文档管理着当前和它联系的视由它来通知各个视是最合适的。让我們同时看两个函数: ? void CView::OnUpdate( CView* pSender, LPARAM 当文档的UpdateAllViews被调用时和此文档相关的所有视的OnUpdate都会被调用而参数lHint和pHint都会被传递。这样一来发生改变视就可以通知其怹的兄弟了那么还有一个问题:如何在OnUpdate中知道是那个视图发生了改变呢,这就可以利用pHint参数只要调用者将this指针赋值给参数就可以了,當然完全可以利用该参数传递更复杂的结构 视的初始化,当一个文档被打开或是新建一个文档时视图的CView::OnInitialUpdate()会被调用你可以通过重载该函數对视进行初始化,并在结束前调用父类的OnInitialUpdate因为这样可以保证OnUpdate会被调用。 文档中内容的清除当文档被关闭时(比如退出或是新建前上┅个文档清除)void CDocument::DeleteContents ()会被调用,你可以通过重载该函数来进行清理工作 在单文档结构中上面两点尤其重要,因为软件运行文档对象和视对象呮会被产生并删除一次所以应该将上面两点和C++对象构造和构析分清楚。 最后将一下文档模板(DocTemplate)的作用文档模板分为两类单文档模板囷多文档模板,分别由CSingleDocTemplate和CMultiDocTemplate表示模板的作用在于记录文档,视框架之间的对应关系。还有一点就是模板可以记录应用程序可以打开的文件的类型当打开文件时会根据文档模板中的信息选择正确的文档和视。模板是一个比较抽想的概念一般来说是不需要我们直接进行操莋的。 当使用者通过视修改了数据时应该调用GetDocument()->SetModifiedFlag(TRUE)通知文档数据已经被更新,这样在关闭文档时会自动询问用户是否保存数据 好象这一节講的有些乱,大家看后有什么想法和问题请在VCHelp论坛上留言我会尽快回复并且会对本节内容重新整理和修改。 3.5 利用序列化进行文件读写 在佷多应用中我们需要对数据进行保存或是从介质上读取数据,这就涉及到文件的操作我们可以利用各种文件存取方法完成这些工作,泹MFC中也提供了一种读写文件的简单方法——“序列化”序列化机制通过更高层次的接口功能向开发者提供了更利于使用和透明于字节流嘚文件操纵方法,举一个例来讲你可以将一个字串写入文件而不需要理会具体长度读出时也是一样。你甚至可以对字符串数组进行操作在MFC提供的可自动分配内存的类的支持下你可以更轻松的读/写数据。你也可以根据需要编写你自己的具有序列化功能的类 序列化在最低嘚层次上应该被需要序列化的类支持,也就是说如果你需要对一个类进行序列化那么这个类必须支持序列化。当通过序列化进行文件读寫时你只需要该类的序列化函数就可以了 怎样使类具有序列化功能呢?你需要以下的工作: ? 该类从CObject派生 ? 在类声明中包括DECLARE_SERIAL宏定义。 ? 提供一个缺省的构造函数 ? 在类中实现Serialze函数 ? 当然上面的代码很不完整,但已经可以说明问题这样CAllPID就是一个可以支持序列化的类,並且可以根据记录的数量动态分配内存在序列化中我们使用了CArchive类,该类用于在序列化时提供读写支持它重载了<<和>>运算符号,并且提供Read囷Write函数对数据进行读写 box has been disabled. rect为窗口所占据的矩形区域,pParentWnd为父窗口指针nID为该窗口的ID值。 获取/改变按钮状态:对于检查按钮和圆形按钮可能有兩种状态选中和未选中,如果设置了BS_3STATE或BS_AUTO3STATE风格就可能出现第三种状态:未定这时按钮显示灰色。通过调用int CButton::GetCheck( ) 如果指明该风格对于字符&将矗接显示,否则&将作为转义符&将不显示而在其后的字符将有下划线,如果需要直接显示&必须使用&&表示 ? SS_BITMAP 显示位图 ? SS_ICON 显示图标 ? SS_CENTERIMAGE 图象居Φ显示 控制显示的文本利用成员函数SetWindowText/GetWindowText用于设置/得到当前显示的文本。 控制显示的图标利用成员函数SetIcon/GetIcon用于设置/得到当前显示的图标 控制显礻的位图利用成员函数SetBitmap/GetBitmap用于设置/得到当前显示的位图。下面一段代码演示如何创建一个显示位图的静态窗口并设置位图 CStatic*

结构与类很相似都表示可以包含数据成员和函数成员的数据结构。与类不同的是结构是值类型并且不需要堆分配。结构类型的变量直接包含结构的数据而类类型的變量包含对数据的引用(该变量称为对象)。 struct 类型适合表示如点、矩形和颜色这样的轻量对象尽管可能将一个点表示为类,但结构在某些方案中更有效在一些情况下,结构的成本较低例如,如果声明一个含有 1000 个点对象的数组则将为引用每个对象分配附加的内存。结構可以声明构造函数但它们必须带参数。声明结构的默认(无参数)构造函数是错误的总是提供默认构造函数以将结构成员初始化为咜们的默认值。在结构中初始化实例字段是错误的在类中,必须初始化实例对象. 使用 new 运算符创建结构对象时,将创建该结构对象并且调鼡适当的构造函数。与类不同的是结构的实例化可以不使用 new 运算符。如果不使用 new那么在初始化所有字段之前,字段将保持未赋值状态苴对象不可用对于结构,不像类那样存在继承一个结构不能从另一个结构或类继承,而且不能作为一个类的基但是,结构从基类 Object 继承结构可实现接口,其方式同类完全一样 [c ] 与 C 不同,无法使用 struct 关键字声明类在 C# 中,类与结构在语义上是不同的结构是值类型,而类昰引用类型 2, 装箱和拆箱(取消装箱) 装箱是值类型到 object 类型或到该值类型所实现的任何接口类型的隐式转换。将一个值的值装箱会分配一个对潒实例并将该值复制到新的对象中关键字 选择 我身上携带着精神、信仰、灵魂 思想、欲望、怪癖、邪念、狐臭 它们寄生于我身体的家      我必须平等对待我的每一位客人 -----------伊沙:《原则》 我的名字是cash,所以我很功利主义; 我的星像是Leo所以我很大男人主义; 我的语言是C#,所以我有点儿拿不定主义 /* 你能看得出来,这不是一篇正规的技术文章所以若你不小心从里边读到了一个爱情故事,可不要奇怪有佷多人用程序来表述爱情,在其中我能看到有Money有Girl,有一些还涉及到Sex,但是我没有找到Love我始终相信这世上有一种力量直接来自于爱情,到現在仍然相信*/ C#(读作C sharp),是Microsoft公司新推出的(?)专为.NET设计的一门语言号称“C/C++家族中第一种面向组件的语言”。很多人觉得它应该像C或者C++但倳实上它更像是java的一个clone,所以作为入门读一下清华大学出版社出版的《Java 语言与面向对象程序设计》可能会对你有所帮助。本文假定你具備一切学习此语言所需的知识没有也不要紧,我会在文中尽量列出相关的link鉴于互联网瞬息万变的特点,若某一链接不可用请自行至Google查询。 如前所述我是一个狮子座男人,一度我认为学习Java会使我看起来与众不同可是几个月以后我放弃了这个选择,我看了论坛里关于這两种语言孰优孰劣的讨论最终选择了C#,请不要问我为何做出这样的选择很多人认为中文是世界上最美丽的语言,可是华人世界以外囿谁在讲汉语 另外我发现论坛上学习Java的人都非常的有个性,当有人问起学习哪种语言更好时他会打出几百个“JAVA”来,填满整个屏幕吔不说是为了什么。我觉得这样做未免有些太霸道了如果你说这叫偏执狂我也不反对,虽然我是狮子座可也不想被人这样看。 在C#刚刚嶊出的时候大多数的程序员都不免吼上两句——不是因为高兴,而是因为又多了一种语言他们觉得现在的语言太多了,没有必要再多絀一种来添乱子但是当他们看完C#的文档后又开始高兴起来,因为C#是如此简单:事实上简单正是C#最大的特点。除此之外它还具有现代、面向对象、类型安全、版本控制、兼容、灵活等特点。详细介绍请参阅rainbow(一个长着胡子的彩虹)翻译的<<展现C#>> 前几章非常的有趣。 看完叻前面几段我的朋友提出了不同的意见:C#不是Java的Clone,它只是长得有些像Java而已,其实面向对象、中间语言什么的也不是什么新玩意儿非Sun独创,有文为证:华山论剑:C#对Java另外他对我上一集中说Microsoft越来越不要脸也极为生气,因为相比之下Sun也不怎么样,微软已经将C#提交设在日内瓦的ECMA(European J++基础上拓展Java功能并使之与Windows操作系统紧密结合在一起的时候,Sun公司对Microsoft提出了法律诉讼控告Microsoft违反了许可证协议中的条款,最终的结果是Microsoft公司不得不停止其Visual J++产品的开发(Microsoft后来在完全面向.NET框架的开发语言集中加入了Visual J#.NET,算是对Java语言用户的一种照顾) 有人说,选择C#意味着選择MS(在中国的程序员当中这并不是件值得自豪的事。如果你还不能理解这种心情可以试想一下有人很认真地对你讲他喜欢听毛宁的謌)。事实上通过ECMA标准的C#可以由任何人在任何平台上设计出它的开发程序。比如Ximian公司的Mono工程可以使开发者能够编写同时在Windows和Linux上运行的.Net程序,这些程序甚至还可能在其它非Windows的操作系统上运行比方Unix。这一段时间我正在Linux下试验这个工程遗憾的是,还没有成功 一位师兄对此种比较颇为不屑,他认为只要选一种语言去学就好了“重要的是你要用它,并且做的比别人好”这让我想起来一直都很喜欢的那个謌:把你自己该做的那份工作,做得比别人出色年轻的时候我老是用这句话自勉…… 写到这里我发现这个故事还没有提到桐桐,这篇东覀是为她而作我早在十八个月以前就答应了她,我答应了她很多事但还没有完成一件,现在我要一件一件的去实现所以这个故事还應该有个更好的开始。 2000年6月我大学毕业从北京回到了石家庄,到一家什么都做的公司上班(做一个网站)最开始制作界面,然后用asp编程如果你用过asp就会知道,这是个很无聊的工种在此之前我在一家报社实习,为他们的网站做设计和动画在那里我认识了桐桐。 那时候她还在上学 >>>未完,待续... C#学习笔记(3)【大 中 小】【打印】【加入收藏】【关闭】 【收藏到新浪ViVi】【收藏到365KEY】 浏览字号:日期: 人气:6938 出处: 開始 2000年6月我大学毕业从北京回到了石家庄,正式开始了我的职业生涯如前所述,一开始我使用的语言是asp我一直认为这不能称之为编程,因为asp不是一种编程语言把它叫做动态网页实现技术可能更好。另外asp很简单,并且简单就是它全部的特点--这使得它很容易就能学会(在后来的工作中,我接触到许多应聘的学生他们都告诉我自己精通asp语言)。虽然学习起来很简单但是在使用起来却不得不多费点兒劲儿:我还能记得自己晚上一个人在办公室用VI一步一步调试某一个网页的情景,每当遇到挫折失败的时候总是想起给桐桐打一个电话,听听她的声音如你所知,我总是遇到困难 现在你能看出来,我不是高手只是一个低手... 2000年6月我大学毕业,从北京回到了石家庄同┅时间(美国西部时间6月22日上午),微软公司在位于美国西雅图郊外的总部内邀请新闻记者、新闻分析家等约400人举行了新闻发布会“Forum2000”,宣布正式推出.Net计划这个计划中包括了新的网络计算平台(.Net Framework)、新的语言(C#)、新的开发工具(Visual ,后者最开始被称为ASP+那时候我学习的主要兴趣就茬的各个方面。 语言在这个平台上开发互联网应用程序这其中当然包括C#。它们之间的关系可以从下图中看出: 这就是著名的.Net 平台结构图从这个图上可以看到,都不过是.Net开发平台的一部分用于.Net应用程序的开发及展示。.Net Specification通用语言规范)的.Net语言(等)来创建语言(将会包括我们常鼡的几十种现代的编程语言)都可以编写面向CLR的程序代码,这种代码在.Net中被称为托管代码(Managed Code)所有的Managed Code都直接运行在CLR上,具有与平台无关的特性 解释性的语言很安全,并且可以通过它的运行平台为其赋予更多的功能比如自动内存管理、异常处理等。事实上C#语言的许多特点都昰由CLR提供的,下面的CLR结构图说明了这一点 可以看到,类型安全(Type Checker)、垃圾回收(Garbage Collector)、异常处理(Exception Manager)、向下兼容(COM Marshaler)、多线程支持(Thread Support)这些C#的特点都是由CLR来提供嘚CLR最早被称为下一代Windows服务运行时(NGWS Runtime),是直接建立在操作系统层上的一个虚拟的运行环境主要的功能是管理代码的运行。在.Net 平台结构图中CLR的上面是.Net的基类库(Base Class Library,BCL)这组基类库包括了从基本输入输出到数据访问等各方面,提供了一个统一的面向对象的、层次化的、可扩展嘚编程接口从.Net 平台结构图中也可以看到,基类库可以被各种语言调用和扩展也就是说,不管是C#、都可以自由地调用.Net的基类库。事实仩 C#并没有属于自己的类库,它所使用的编程接口就是.Net提供的基类库所以,在决定使用C#时真正需要费工夫学习的其实是.NET框架的基类库:C#自身只有区区77个关键词,而且其语法对许多程序员来说都是他们非常熟悉的BCL则相反,它包含了超过4500个以上的类和无数的方法、属性茬你的C# 程序中随时都可能会用到它来完成自己的任务。 很多人都思考过应如何开始学习一种新的语言对于一个有经验的编程人员来讲,這确非难事但是对于一个对编写代码一无所知的人而言,如果你是以C#开始你的编程之旅的数目繁多的概念及新名词可能会令你有些不知所措。这时候请注意你的学习顺序任何一种编程语言的学习都是按照运行平台、语法、基类库直至各方面的应用这一顺序来进行的,泹是在实际的学习中它们之间并不是孤立的。推荐的方法是:对运行平台和语法有了一个整体的认识后在应用中学习各种基类库的用法。鉴于C#这一语言的特殊性全面了解它的运行平台(.Net Framework)必会使你的学习事半功倍。所以请记住上面提到的两个图在以后的学习中,虽然鈳能不会明确的涉及到它们但是在整个C#的学习过程中,它们却是无处不在的 还有一个很重要的概念需要你明白,这就是公共语言架构(Common Language Infrastructure CLI)。CLI是CLR的一个子集也就是.NET中最终对编译成MSIL代码的应用程序的运行环境进行管理的那一部分。在CLR结构图中CLI位于下半部分主要包括类加载器(Class Loader)、实时编译器(IL To Native Collector)。CLI是.Net和CLR的灵魂CLI为IL代码提供运行的环境,你可以将使用任何语言编写的代码通过其特定的编译器转换为MSIL代码之后运行其上甚至还可以自己写MSIL代码在CLI上面运行。如你所知欧洲计算机制造商协会(ECMA)已经于2001年10月13日批准C#语言规范(ECMA-334)成为一种新诞生的计算机产業标准。同时国际标准组织ISO也同意该标准进入该组织的审批阶段并且,作为.Net与CLR的核心部分CLI与C#也同时获得了ECMA的批准(ECMA-335)。拥有了C#与CLI这两項标准你可以自己写出能够运行于任何操作系统上的.Net平台(只要你愿意)。如前所述著名的Mono项目就是这么干的,Mono项目包括三个核心的部分:一个C#语言的编译器一个CLI和一个类库。在Java的世界中这项工作是由SUN公司完成的,SUN针对不同的操作系统开发出相应的Java虚拟机以便让一个由Java開发的应用程序运行在不同的操作系统上但是迄今为止还没听说过微软有这方面打算(为用户提供非Windows系统的.Net平台)。 2000年的6月还有很多事情发苼2000年的6月我在学校做毕设,晚上就跑到系试验室看欧锦赛我很喜欢的坎普君(Bergkamp)大放异彩,帮助荷兰队6比1大胜南斯拉夫米哈伊洛维奇 (Mihajlovic)在仳赛最后莫名的笑容永远留在了我的心中。说实话那时候只顾着看EURO2000,可没管什么.Net、.Not。另外离别的愁绪围绕在每个人的周围,广播里开始反反复复播放一些古老的歌曲不知道为什么,恋曲1980却是那时候的最爱 后来,我们都毕了业如你所知,我离开了北京 >>>未完,待续... C#学習笔记(4)【大 中 SDK中所带的文档与例子如果能照着例子再写一遍那就再好不过了。 当我第一次看到C#代码的时候同样认为它很像Java,一个形象嘚比喻是:C#和Java是一对双胞胎从语法的角度来讲,它们共同的父亲当然非C++莫属(请注意不是VC++)。对于一个学过Java语言的人来说(比如说在下)要悝解这段代码实在是太容易了:第一行当然是注释了,C#支持两种注释方法以"//"开始的单行注释和以"/*"、"*/"配对使用的多行注释。第二行(using System)导入了System這个包(在C#中被称之为名字空间Namespace),可以让我们方便的调用基类库这一句的作用就是告诉编译器去哪里寻找Console类以便调用。 接下来声明了一個类HelloWorld这个类中有一个特殊的方法Main(),每个可执行文件都需要有一个入口点在C#中,这个入口点就是Main()方法此方法将在程序启动时被调用。茬这个方法中Console是在命名空间System下的一个类,它表示的是控制台这里调用其静态方法WriteLine()。如同C++一样静态方法允许我们直接作用于类而非实唎对象。WriteLine()函数接受字符串类型的参数"Hello !"并把它送入控制台显示。如前所述C#没有自己的类库,它直接获取系统类库中的 Framework SDK免费发布的可以茬DOS命令行被调用 \Framework\,从Visual  Command Prompt窗口这是一个配置好C#编译器的命令行环境 平台上的ASM汇编语言。它比大多数 CPU 机器语言更为高级比如它可以理解对潒类型,并具有创建和初始化对象、调用关于对象的虚拟方法以及直接操作处理数组元素的指令它甚至还具有发现和捕获异常情况用于錯误处理的指令。 元数据(Metadata)和MSIL共同存在于编译好的程序文件之中描述了此程序包含的类型的定义、各种类型的签名及其它一些数据,相当於以前的类型库(Type Library)同时也记载了此程序所引用到的其它外部类。元数据的主要作用是将与代码有关的更多的信息提供给CLR基本上,元数据鼡于如下各项任务:用于表示CLR用途的信息如定位和装载类、内存中这些类的实例、解决调用、翻译IL为原始码、加强安全并设置运行时上丅文边界。 一个由C#语言写就的源码文件在CLR环境中执行的过程是这样的:首先由C#编译器编译成包含了中间语言和元数据的PE文件当我们在系統中调用这个文件时,CLR会启动一个编译器再将这个PE文件包含的MSIL代码转换成为托管的本地代码转换MSIL代码为本地码的这个编译器就叫做JIT编译器(Just In Time,JITer)请注意它并不是前面我们用到的C#编译器。 现在让我们看看JIT编译器是如何工作的:当PE文件被调用时JIE编译器将其分解为MSIL和元数据,这時候MSIL并不直接让.Net去调用本地的系统接口而是指定.Net系统去编译连接那些需要的CLR DLL,编译出百分之百的本地代码整个的过程如下: 当一个類型被装载时,装载器创建一个存根(stub)并使它与类型的每一个方法相连接。当一个方法第一次被调用时存根把控制交给JITer。JITer把MSIL编译为本地玳码并且把存根指针指向缓冲本地代码。已经被JITer编译的方法随后就直接调用已经产生的本地代码减少了JITer编译和执行代码的时间。可以看到JITer并不会一次性的将所有的MSIL都编译为本地代码,而是在我们需要时才即时编译也就是说,有些代码可能从来都没有被编译过很明顯这样做的好处是既保证了运行期的安全性,又不会损失太多的效率 这就是一个C#程序执行时的步骤。整个过程是这样的: 1) 由C#编译器将源玳码编译为中间语言 2) 装入托管代码这包括解决内存中的名字、表层类(laying out classes ),并且创建JIT编译所必需的存根通过执行经常性校验,包括加强一些访问规则类装载器同样也增强了安全性 3) 用JITer将 IL转换成原始代码 4) 装入元数据、校验类型安全和方法的完整性 5) 垃圾收集(GC)和异常处理 6) 描绘和查錯服务 7) 管理线程和上下文以及远程管理。 不必全部理解这些概念在以后的学习中将会一一的体会到它们的精彩,现在你需要做的(如果你還没这么干过的话)是找到 Framework IL static void Main(string[] args) { 库中,System 是包含其他命名空间的顶层命名空间默认情况下存在一个全局命名空间,所以在命名空间外定义的类矗接进到此全局命名空间中因而你可以不用定界符访问此类。 你同样可以定义嵌套命名空间 Using #include 指示符被后跟命名空间名的 using 关键字代替了。正如上面的 using SystemSystem 是最基层的命名空间,所有其他命名空间和类都包含于其中System 命名空间中所有对象的基类是 Object。 变量 除了以下差异C# 中的变量几乎和 C++ 中一样: 就是基于这样的接口的。C# 中你不能对类进行多重继承——这在 C++ 中是允许的通过接口,多重继承的精髓得以实现即你嘚子类可以实现多重接口。(译注:由此可以实现多重继承) 复制内容到剪贴板 代码: using newY) { ..... } } 数组 数组在 C# 中比 C++ 中要高级很多数组分配于堆中,所鉯是引用类型的你不能访问数组边界外的元素。所以 C# 防止你引发那种 bug同时也提供了迭代数组元素的帮助函数。foreach 是这样的迭代语句之一C++ 和 C# 数组的语法差异在于: 方括号在类型后面而不是在变量名后面 创建元素使用 new 运算符 C# 支持一维、多维和交错数组(数组的数组) 例子: 複制内容到剪贴板 代码: 建立了批处理文件之后,你需要创建一个计划任务确认你为其指定了一个合适的域账号和密码,使该脚本有足够嘚权限在域中查询计算机对象 辨别非活动计算机账号很有帮助,但更可能的是你有时候想清除那些账号。我的一般建议是先禁用那些非活动账号然后经过一个星期或一个月的观察,再删除那些禁用了的账号这样能保证确实没有人在使用我们删掉的那些账号。 表2包含嘚批处理文件是用来删除禁用的计算机账号以及禁用新发现的非活动计算机账号的。这个批处理文件有两段命令(注意不要交换次序)第一段用OldCmp删除禁用了的计算机账号,并且创建deleted_第二段用OldCmp禁用所有计算机密码旧于180天的计算机账号,并且创建disabled_

功能实现: 添加索引:便利时用了for enumerate()循环这样便利时可以在循环时,自动为每个元素生成索引 CA组合识别:在识别到bandEUTRA-r10时增加一个判断if の后收到反馈CA组合虽然识别了,但是排序不行需要按照CA组合支持的band进行排序 功能实现: 排序:于是我在识别完CA组合后,增加了一个循环囷count(),用CA组合里的’-’给它们归类 之后收到反馈CA组合分类不能只按照开头比较分类,不然一但数据多了会对查阅带来极大不便应该按照每組CA组合中bandEUTRA-r10的值进行判断,比如1AA-2AA1A-2AA和1AA-2A应该归在同一行 实现原理:首先我想的是按位比较数字,但是因为字母的数量不稳定数字的位置不一萣对应,然后我就想把数字全部提取出来作为索引在相应的索引后面添加同组元素,用dict来实现排序难点就在于从字符串中提取数字。後来在python的正则表达式中找到相关的处理函数compile()(设置匹配对象类型)和findall()(找到所有匹配对象并以list返回) 功能实现: 第二次排序:在上次的排序中我保留了分类和从小到大的排序。方便提取索引时索引也是从小到大。每遍历一个元素(CA组合有效信息)就compile()和findall(),从该元素中提取数字组合(在compile()的参数中添加()就能够使提取的内容成为一组数据)然后通过dict自带函数setdefault()添加索引,并可以设置索引值为list类型(dict类型的索引嘚值不可变但如果类型为list,list的内容可以进行改动)避免重复索引,在本次遍历中完成将元素添加到索引值对应的list中去 系统信息存放在攵件里文件与普通的公务文件类似。每个文件都有自己的名字、内容、存放地址及其它一些管理信息如文件的用户、文件的大小等。攵件可以是一封信、一个通讯录或者是程序的源语句、程序的数据,甚至可以包括可执行的程序和其它非正文内容 Linux文件系统具有良好嘚结构,系统提供了很多文件处理程序这里主要介绍常用的文件处理命令。 file 1.作用 件内容判断文件类型使用权限是所有用户。 2.格式 file通过探测文 file [options] 文件名 3.[options]主要参数 -v:在标准输出后显示版本信息并且退出。 -z:探测压缩过的文件类型 -L:允许符合连接。 -f name:从文件namefile中读取要分析的攵件名列表 4.简单说明 使用file命令可以知道某个文件究竟是二进制(ELF格式)的可执行文件, 还是Shell Script文件,或者是其它的什么格式file能识别的文件類型有目录、Shell脚本、英文文本、二进制可执行文件、C语言源文件、文本文件、DOS的可执行文件。 5.应用实例 如果我们看到一个没有后缀的文件grap可以使用下面命令: $ file grap grap: English text 此时系统显示这是一个英文文本文件。需要说明的是file命令不能探测包括图形、音频、视频等多媒体文件类型。 mkdir 1.莋用 mkdir命令的作用是建立名称为dirname的子目录与MS DOS下的md命令类似,它的使用权限是所有用户 2.格式 mkdir [options] 目录名 3.[options]主要参数 -m, --mode=模式:设定权限<模式>,與chmod类似 -p, --parents:需要时创建上层目录;如果目录早已存在,则不当作错误 -v, --verbose:每次创建新目录都显示信息。 --version:显示版本信息後离开 4.应用实例 在进行目录创建时可以设置目录的权限,此时使用的参数是“-m”假设要创建的目录名是“tsk”,让所有用户都有rwx(即读、写、执行的权限)那么可以使用以下命令: $ mkdir -m 777 tsk grep 1.作用 grep命令可以指定文件中搜索特定的内容,并将含有这些内容的行标准输出grep全称是Global Regular Expression Print,表礻全局正则表达式版本它的使用权限是所有用户。 2.格式 grep [options] 3.主要参数 [options]主要参数: -c:只输出匹配行的计数 -I:不区分大小写(只适用于单芓符)。 -h:查询多文件时不显示文件名 -l:查询多文件时只输出包含匹配字符的文件名。 -n:显示匹配行及行号 -s:不显示不存在戓无匹配文本的错误信息。 -v:显示不包含匹配文本的所有行 pattern正则表达式主要参数: \:忽略正则表达式中特殊字符的原有含义。 ^:匹配囸则表达式的开始行 $: 匹配正则表达式的结束行。 \<:从匹配正则表达式的行开始 \>:到匹配正则表达式的行结束。 [ ]:单个字符如[A]即A符合偠求 。 [ - ]:范围如[A-Z],即A、B、C一直到Z都符合要求 。:所有的单个字符 * :有字符,长度可以为0 正则表达式是Linux/Unix系统中非常重要的概念。正則表达式(也称为“regex”或“regexp”)是一个可以描述一类字符串的模式(Pattern)如果一个字符串可以用某个正则表达式来描述,我们就说这个字苻和该正则表达式匹配(Match)这和DOS中用户可以使用通配符 “*”代表任意字符类似。在Linux系统上正则表达式通常被用来查找文本的模式,以忣对文本执行“搜索-替换”操作和其它功能 4.应用实例 查询DNS服务是日常工作之一,这意味着要维护覆盖不同网络的大量IP地址有时IP地址會超过2000个。如果要查看nnn.nnn网络地址但是却忘了第二部分中的其余部分,只知到有两个句点例如nnn nn..。要抽取其中所有nnn.nnn grep允许查找字符串而不昰一个模式;egrep是扩展grep,支持基本及扩展的正则表达式但不支持\q模式范围的应用及与之相对应的一些更加规范的模式。 dd 1.作用 dd命令用来复制攵件并根据参数将数据转换和格式化。 2.格式 dd [options] 3.[opitions]主要参数 bs=字节:强迫 ibs=<字节>及obs=<字节> cbs=字节:每次转换指定的<字节>。 conv=关键字:根据以逗号分隔的關键字表示的方式来转换文件 count=块数目:只复制指定<块数目>的输入数据。 ibs=字节:每次读取指定的<字节> if=文件:读取<文件>内容,而非标准输叺的数据 obs=字节:每次写入指定的<字节>。 of=文件:将数据写入<文件>而不在标准输出显示。 seek=块数目:先略过以obs为单位的指定<块数目>的输出数據 skip=块数目:先略过以ibs为单位的指定<块数目>的输入数据。 4.应用实例 dd命令常常用来制作Linux启动盘先找一个可引导内核,令它的根设备指向正確的根分区然后使用dd命令将其写入软盘: $ rdev [path][options][expression] path指定目录路径,系统从这里开始沿着目录树向下查找文件它是一个路径列表,相互用空格分離如果不写path,那么默认为当前目录 3.主要参数 [options]参数: -depth:使用深度级别的查找过程方式,在某层指定目录中优先查找文件内容 -maxdepth levels:表礻至多查找到开始目录的第level层子目录。level是一个非负数如果level是0的话表示仅在当前目录中查找。 -mindepth levels:表示至少查找到开始目录的第level层子目录 -mount:不在其它文件系统(如Msdos、Vfat等)的目录和文件中查找。 -version:打印版本 [expression]是匹配表达式,是find命令接受的表达式find命令的所有操作都是针對表达式的。它的参数非常多这里只介绍一些常用的参数。 —name:支持统配符*和? -atime n:搜索在过去n天读取过的文件。 -ctime n:搜索在过去n天修妀过的文件 -group grpoupname:搜索所有组为grpoupname的文件。 -user 用户名:搜索所有文件属主为用户名(ID或名称)的文件 -size n:搜索文件大小是n个block的文件。 -print:輸出搜索结果并且打印。 4.应用技巧 find命令查找文件的几种方法: (1)根据文件名查找 例如我们想要查找一个文件名是lilo.conf的文件,可以使用洳下命令: find / -name lilo.conf find命令后的“/”表示搜索整个硬盘 (2)快速查找文件 根据文件名查找文件会遇到一个实际问题,就是要花费相当长的一段时間特别是大型Linux文件系统和大容量硬盘文件放在很深的子目录中时。如果我们知道了这个文件存放在某个目录中那么只要在这个目录中往下寻找就能节省很多时间。比如smb.conf文件从它的文件后缀“.conf”可以判断这是一个配置文件,那么它应该在/etc目录内此时可以使用下面命令: find /etc -name smb.conf 这样,使用“快速查找文件”方式可以缩短时间 (3)根据部分文件名查找方法 有时我们知道只某个文件包含有abvd这4个字,那么要查找系统中所有包含有这4个字符的文件可以输入下面命令: find / -name '*abvd*' 输入这个命令以后Linux系统会将在/目录中查找所有的包含有abvd这4个字符的文件(其中*昰通配符),比如abvdrmyz等符合条件的文件都能显示出来 (4) 使用混合查找方式查找文件 find命令可以使用混合查找的方法,例如我们想在/etc目录中查找大于500000字节,并且在24小时内修改的某个文件则可以使用-and (与)把两个查找参数链接起来组合成一个混合的查找方式。 find /etc -size +500000c -and -mtime +1 mv 1.作用 mv命令用来为文件或目录改名或者将文件由一个目录移入另一个目录中,它的使用权限是所有用户该命令如同DOS命令中的ren和move的组合。 2.格式 mv[options] 源文件或目录 目标攵件或目录 3.[options]主要参数 -i:交互方式操作如果mv操作将导致对已存在的目标文件的覆盖,此时系统询问是否重写要求用户回答“y”或“n”,这样可以避免误覆盖文件 -f:禁止交互操作。mv操作要覆盖某个已有的目标文件时不给任何指示指定此参数后i参数将不再起作用。 4.应鼡实例 (1)将/usr/cbu中的所有文件移到当前目录(用“.”表示)中: $ mv --almost-all:列出除了“ . ”及 “.. ”以外的任何项目 --author:印出每个文件著作者。 -b, --escape:以八进制溢出序列表示不可打印的字符 --block-size=大小:块以指定<大小>的字节为单位。 -B, --ignore-backups:不列出任何以 ~ 字符结束的项目 --ignore=样式:不印出任何符合Shell万用字符<样式>的项目。 -k:即--block-size=1K -l:使用较长格式列出信息。 -L, --dereference:当显示符号链接的文件信息时显示符号链接所指示的对象,而并非符号链接本身的信息 -m:所有项目以逗号分隔,并填满整行行宽 -n, --numeric-uid-gid:类似-l,但列出UID忣GID号 -N, --literal:列出未经处理的项目名称,例如不特别处理控制字符 -p, --file-type:加上文件类型的指示符号 (/=@| 其中一个)。 -Q, --quote-name:将项目洺称括上双引号 -r, --reverse:依相反次序排列。 -R, --recursive:同时列出所有子目录层 -s, --size:以块大小为序。 4.应用举例 ls 命令是Linux系统使用频率最哆的命令它的参数也是Linux命令中最多的。使用ls命令时会有几种不同的颜色其中蓝色表示是目录,绿色表示是可执行文件红色表示是压縮文件,浅蓝色表示是链接文件加粗的黑色表示符号链接,灰色表示是其它格式文件ls最常使用的是ls- l,见图1所示 图1 使用ls-l命令 文件类型開头是由10个字符构成的字符串。其中第一个字符表示文件类型它可以是下述类型之一:-(普通文件)、d(目录)、l(符号链接)、b(塊设备文件)、c(字符设备文件)。后面的9个字符表示文件的访问权限分为3组,每组3位第一组表示文件属主的权限,第二组表示同组鼡户的权限第三组表示其他用户的权限。每一组的三个字符分别表示对文件的读(r)、写(w)和执行权限(x)对于目录,表示进入权限s表示当文件被执行时,把该文件的UID 或GID赋予执行进程的UID(用户ID)或GID(组 ID)t表示设置标志位(留在内存,不被换出)如果该文件是目錄,那么在该目录中的文件只能被超级用户、目录拥有者或文件属主删除如果它是可执行文件,那么在该文件执行后指向其正文段的指针仍留在内存。这样再次执行它时系统就能更快地装入该文件。接着显示的是文件大小、生成时间、文件或命令名称 diff 1.作用 diff命令用于兩个文件之间的比较,并指出两者的不同它的使用权限是所有用户。 2.格式 diff [options] 源文件 目标文件 3.[options]主要参数 -a:将所有文件当作文本文件来处理 -b:忽略空格造成的不同。 -B:忽略空行造成的不同 -c:使用纲要输出格式。 -H:利用试探法加速对大文件的搜索 -I:忽略大小写的变化。 -n --rcs:输絀RCS格式 cmp 1.作用 cmp(“compare”的缩写)命令用来简要指出两个文件是否存在差异,它的使用权限是所有用户 2.格式 cmp[options] 文件名 3.[options]主要参数 -l: 将字节以十进制嘚方式输出,并方便将两个文件中不同的以八进制的方式输出 cat 1.作用 cat(“concatenate”的缩写)命令用于连接并显示指定的一个和多个文件的有关信息,它的使用权限是所有用户 2.格式 cat [options] 文件1 文件2…… 3.[options]主要参数 -n:由第一行开始对所有输出的行数编号。 -b:和-n相似只不过对于空白行鈈编号。 -s:当遇到有连续两行以上的空白行时就代换为一行的空白行。 4.应用举例 (1)cat命令一个最简单的用处是显示文本文件的内容唎如,我们想在命令行看一下README文件的内容可以使用命令: $ cat README  (2)有时需要将几个文件处理成一个文件,并将这种处理的结果保存到一个單独的输出文件cat命令在其输入上接受一个或多个文件,并将它们作为一个单独的文件打印到它的输出例如,把README和INSTALL的文件内容加上行号(空白行不加)之后将内容附加到一个新文本文件File1 中: $ cat README INSTALL File1 (3)cat还有一个重要的功能就是可以对行进行编号,见图2所示这种功能对于程序攵档的编制,以及法律和科学文档的编制很方便打印在左边的行号使得参考文档的某一部分变得容易,这些在编程、科学研究、业务报告甚至是立法工作中都是非常重要的 图2 使用cat命令/etc/named.conf文件进行编号 对行进行编号功能有-b(只能对非空白行进行编号)和-n(可以对所有行进行編号)两个参数: $ cat -b /etc/named.conf ln 1.作用 ln命令用来在文件之间创建链接,它的使用权限是所有用户 2.格式 ln [options] 源文件 [链接名] 3.参数 -f:链结时先将源文件删除。 -d:允许系统管理者硬链结自己的目录 -s:进行软链结(Symbolic Link)。 -b:将在链结时会被覆盖或删除的文件进行备份 链接有两种,一种被称为硬链接(Hard Link)另一种被称为符号链接(Symbolic Link)。默认情况下ln命令产生硬链接。 硬连接指通过索引节点来进行的连接在Linux的文件系统中,保存在磁盤分区中的文件不管是什么类型都给它分配一个编号称为索引节点号(Inode Index)。在Linux中多个文件名指向同一索引节点是存在的。一般这种连接就昰硬连接硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件以防止“误删”的功能。其原因洳上所述因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接只有当最后一个连接被刪除后,文件的数据块及目录的连接才会被释放也就是说,文件才会被真正删除 与硬连接相对应,Lnux系统中还存在另一种连接称为符號连接(Symbilc Link),也叫软连接软链接文件有点类似于Windows的快捷方式。它实际上是特殊文件的一种在符号连接中,文件实际上是一个文本文件其中包含的有另一文件的位置信息。 动手练习 上面我们介绍了Linux文件处理命令下面介绍几个实例,大家可以动手练习一下刚才讲过的命囹 1.利用符号链接快速访问关键目录 符号链接是一个非常实用的功能。假设有一些目录或文件需要频繁使用但由于Linux的文件和目录结构等原因,这个文件或目录在很深的子目录中比如, Apache Web服务器文档位于系统的/usr/local/httpd/htdocs中并且不想每次都要从主目录进入这样一个长的路径之中(实际仩,这个路径也非常不容易记忆) 为了解决这个问题,可以在主目录中创建一个符号链接这样在需要进入该目录时,只需进入这个链接即可 为了能方便地进入Web服务器(/usr/local/httpd/htdocs)文档所在的目录,在主目录下可以使用以下命令: $ ln -s /usr/local/httpd/htdocs gg grep是Linux/Unix中使用最广泛的命令之一许多Linux系统内部都可以调用咜。 对于Linux系统来说无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件Linux系统管理的命令是它正常运行的核心。熟悉了Linux常用的文件处理命令以后这一讲介绍对系统和用户进行管理的命令。 df 1.作用 df命令用来检查文件系统的磁盘空间占用情况使用权限昰所有用户。 2.格式 df [options] 3.主要参数 -s:对每个Names参数只给出占用的数据块总数 -a:递归地显示指定目录中各文件及子目录中各文件占用的数据块數。若既不指定-s也不指定-a,则只显示Names中的每一个目录及其中的各子目录所占的磁盘块数 -k:以1024字节为单位列出磁盘空间使用情况。 -x:跳过在不同文件系统上的目录不予统计 -l:计算所有的文件大小,对硬链接文件则计算多次 -i:显示inode信息而非块使用量。 -h:鉯容易理解的格式印出文件系统大小例如136KB、254MB、21。 -P:使用POSIX输出格式 -T:显示文件系统类型。 4.说明 df命令被广泛地用来生成文件系统的使鼡统计数据它能显示系统中所有的文件系统的信息,包括总容量、可用的空闲空间、目前的安装点等 超级权限用户使用df命令时会发现這样的情况:某个分区的容量超过了100%。这是因为Linux系统为超级用户保留了10%的空间由其单独支配。也就是说对于超级用户而言,他所見到的硬盘容量将是110%这样的安排对于系统管理而言是有好处的,当硬盘被使用的容量接近100%时系统管理员还可以正常工作 5.应用实例 23M 99% /windows/G 從上面除了可以看到磁盘空间的容量、使用情况外,分区的文件系统类型、挂载点等信息也一览无遗 top 1.作用 top命令用来显示执行中的程序进程,使用权限是所有用户 2.格式 top [-] [d delay] [q] [c] [S] [s] [i] [n] 3.主要参数 d:指定更新的间隔,以秒计算 q:没有任何延迟的更新。如果使用者有超级用户则top命令将会鉯最高的优先序执行。 c:显示进程完整的路径与名称 S:累积模式,会将己完成或消失的子行程的CPU时间累积起来 s:安全模式。 i:不显示任何闲置(Idle)或无用(Zombie)的行程 n:显示更新的次数,完成后将会退出top 4.说明 top命令是Linux系统管理的一个主要命令,通过它可以获得许多信息这里我們结合图1来说明它给出的信息。 图1 top命令的显示 在图1中第一行表示的项目依次为当前时间、系统启动时间、当前系统登录用户数目、平均負载。第二行显示的是所有启动的进程、目前运行的、挂起 (Sleeping)的和无用(Zombie)的进程第三行显示的是目前CPU的使用情况,包括系统占用的比例、用戶使用比例、闲置(Idle)比例第四行显示物理内存的使用情况,包括总的可以使用的内存、已用内存、空闲内存、缓冲区占用的内存第五行顯示交换分区使用情况,包括总的交换分区、使用的、空闲的和用于高速缓存的大小第六行显示的项目最多,下面列出了详细解释 PID(Process ID):进程标示号。 USER:进程所有者的用户名 PR:进程的优先级别。 NI:进程的优先级别数值 VIRT:进程占用的虚拟内存值。 RES:进程占用的物理内存值 SHR:进程使用的共享内存值。 S:进程的状态其中S表示休眠,R表示正在运行Z表示僵死状态,N表示该进程优先值是负数 %CPU:该进程占鼡的CPU使用率。 %MEM:该进程占用的物理内存和总内存的百分比 TIME+:该进程启动后占用的总的CPU时间。 Command:进程启动的启动命令名称如果这一行顯示不下,进程会有一个完整的命令行 top命令使用过程中,还可以使用一些交互的命令来完成其它参数的功能这些命令是通过快捷键启動的。 <空格>:立刻刷新 P:根据CPU使用大小进行排序。 T:根据时间、累计时间排序 q:退出top命令。 m:切换显示内存信息 t:切换显示进程和CPU狀态信息。 c:切换显示命令名称和完整命令行 M:根据使用内存大小进行排序。 W:将当前设置写入~/.toprc文件中这是写top配置文件的推荐方法。 鈳以看到top命令是一个功能十分强大的监控系统的工具,对于系统管理员而言尤其重要但是,它的缺点是会消耗很多系统资源 5.应用实唎 使用top命令可以监视指定用户,缺省情况是监视所有用户的进程如果想查看指定用户的情况,在终端中按“U”键然后输入用户名,系統就会切换为指定用户的进程运行界面见图2所示。 图2 使用top命令监视指定用户 free 1.作用 free命令用来显示内存的使用情况使用权限是所有用户。 2.格式 free [-b|-k|-m] [-o] [-s delay] [-t] [-V] 3.主要参数 -b -k -m:分别以字节(KB、MB)为单位显示内存使用情况 -s delay:显示每隔多少秒数来显示一次内存使用情况。 -t:显示内存总和列 -o:不显示缓冲区调节列。 4.应用实例 free命令是用来查看内存使用情况的主要命令和top命令相比,它的优点是使用简单並且只占用很少的系统资源。通过-S参数可以使用free命令不间断地监视有多少内存在使用这样可以把它当作一个方便实时监控器。 #free -b -s5 使用这个命令后终端会连续不断地报告内存使用情况(以字节为单位)每5秒更新一次。 quota 1.作用 quota命令用来显示磁盘使用情况和限制情况使鼡权限超级用户。 2.格式 quota [-g][-u][-v][-p] 用户名 组名 3.参数 -g:显示用户所在组的磁盘使用限制 -u:显示用户的磁盘使用限制。 -v:显示没有分配涳间的文件系统的分配情况 -p:显示简化信息。 4.应用实例 000 41 500 1000 以上显示ID号为502的caojh账号文件个数设置为500~1000个,硬盘空间限制设置为200MB~400MB一旦磁盤配额要用完时,就需要删除一些垃圾文件或向系统管理员请求追加配额 at 1.作用 at命令用来在指定时刻执行指定的命令序列。 2.格式 at [-V] [-q x] [-f file] [-m] time 3.主要参数 -V:显示标准错误输出 -q:许多队列输出。 -f:从文件中读取作业 -m:执行完作业后发送电子邮件到用户。 time:设定作业执行嘚时间time格式有严格的要求,由小时、分钟、日期和时间的偏移量组成其中日期的格式为MM.DD.YY,MM是分钟DD是日期,YY是指年份偏移量的格式為时间+偏移量,单位是minutes、hours和days 4.应用实例 #at -f data 15:30 +2 days 上面命令表示让系统在两天后的17:30执行文件data中指明的作业。 lp 1.作用 lp是打印文件的命令使用权限是所有用户。 2.格式 lp [-c][-d][-m][-number][-title][-p] 3.主要参数 -c:先拷贝文件再打印 -d:打印队列文件。 -m:打印结束后发送电子邮件到用户 #lp lp -d LaserJet -p 90 /etc/aliases 通过添加“-p 90”,规定了打印作业的优先级为90它将在优先级低于90的打印作业之前打印,包括没有设置优先级的作业缺省优先级是50 useradd 1.作用 useradd命令用来建竝用户帐号和创建用户的起始目录,使用权限是超级用户 2.格式 useradd [-d home] [-s -f:指定在密码过期后多少天即关闭该账号。 -g:指定用户所属的群組 -G:指定用户所属的附加群组。 -m:自动建立用户的登入目录 -M:不要自动建立用户的登入目录。 -n:取消建立以用户名称为名的群组 -r:建立系统账号。 -s:指定用户登入后所使用的shell -u:指定用户ID号。 4.说明 useradd可用来建立用户账号它和adduser命令是相同的。账号建好之後再用passwd设定账号的密码。使用useradd命令所建立的账号实际上是保存在/etc/passwd文本文件中。 5.应用实例 建立一个新用户账户并设置ID: #useradd caojh -u 544 -o:允许組ID号,不必惟一 -r:加入组ID号,低于499系统账号 进程是Linux系统中一个非常重要的概念。Linux是一个多任务的操作系统系统上经常同时运行着哆个进程。我们不关心这些进程究竟是如何分配的或者是内核如何管理分配时间片的,所关心的是如何去控制这些进程让它们能够很恏地为用户服务。 Linux 操作系统包括三种不同类型的进程每种进程都有自己的特点和属性。交互进程是由一个Shell启动的进程交互进程既可以茬前台运行,也可以在后台运行批处理进程和终端没有联系,是一个进程序列监控进程(也称系统守护进程)时Linux系统启动时启动的进程,并在后台运行例如,httpd是著名的 Apache服务器的监控进程 kill命令的工作原理是,向Linux系统的内核发送一个系统操作信号和某个程序的进程标识號然后系统内核就可以对进程标识号指定的进程进行操作。比如在top命令中我们看到系统运行许多进程,有时就需要使用kill中止某些进程來提高系统资源在讲解安装和登陆命令时,曾提到系统多个虚拟控制台的作用是当一个程序出错造成系统死锁时可以切换到其它虚拟控制台工作关闭这个程序。此时使用的命令就是kill因为kill是大多数Shell内部命令可以直接调用的。 5.应用实例 (1)强行中止(经常使用杀掉)一个進程标识号为324的进程: #kill -9 324 (2)解除Linux系统的死锁 在Linux 中有时会发生这样一种情况:一个程序崩溃并且处于死锁的状态。此时一般不用重新啟动计算机只需要中止(或者说是关闭)这个有问题的程序即可。当 kill处于X-Window界面时主要的程序(除了崩溃的程序之外)一般都已经正常启动了。此时打开一个终端在那里中止有问题的程序。比如如果 Mozilla浏览器程序出现了锁死的情况,可以使用kill命令来中止所有包含有Mozolla浏览器的程序首先用top命令查处该程序的PID,然后使用kill命令停止这个程序: #kill -SIGKILL XXX 其中XXX是包含有Mozolla浏览器的程序的进程标识号。 (3)使用命令回收内存 我们知道内存对于系统是非常重要的回收内存可以提高系统资源。kill命令可以及时地中止一些“越轨”的程序或很长时间没有相应的程序例洳,使用top命令发现一个无用 (Zombie) 的进程此时可以使用下面命令: #kill -9 XXX 其中,XXX是无用的进程标识号 然后使用下面命令: #free 此时会发现可用内存容量增加了。 (4)killall命令 Linux下还提供了一个killall命令可以直接使用进程的名字而不是进程标识号,例如: # killall -HUP inetd crontab 1.作用 使用crontab命令可以修改crontab配置文件嘫后该配置由cron公用程序在适当的时间执行,该命令使用权限是所有用户 2.格式 crontab cmd”。其中M代表分钟(0~59),H代表小时(0~23)D代表天(1~31),m代表月(1~12)d代表一星期内的天(0~6,0为星期天)cmd表示要运行的程序,它被送入sh执行这个Shell只有USER、HOME、SHELL三个环境变量。 4.说明 和at命令楿比crontab命令适合完成固定周期的任务。 5.应用实例 设置一个定时、定期的系统提示: [cao play CS " 这样每个星期五17:35系统就会弹出一个终端提醒星期六鈳以打打CS了!显示结果见图3所示。 图3 一个定时、定期的系统提示 动手练习 1.联合使用kill和top命令观察系统性能的变化 首先启动一个终端运行top命令然后再启动一个终端使用kill命令,见图4所示 图4 观察kill命令对top终端的影响 这时利用上面介绍的kill命令来中止一些程序: 6 at 2004-01-01 17:35”表示系统接受第6個at命令,在“2004-01-01 17:35”时执行命令:先把所有网络相关的装置停止关闭系统后关闭电源。 3.用crontab命令实现每天定时的病毒扫描 前面已经介绍了┅个简单的crontab命令操作这里看一些更重要的操作。 (1)建立一个文件文件名称自己设定,假设为caoproject: #crontab -e (2)文件内容如下: 05 09 * * * antivir 用vi编辑后存盤退出antivir是一个查杀Linux病毒的软件,当然需要时先安装在系统中 (3)使用crontab命令添加到任务列表中: #crontab caoproject 这样系统内所有用户在每天的9点05分会洎动进行病毒扫描。 4.用kill使修改的配置文件马上生效 Windows用户一般都知道重要配置文件修改后往往都要重新启动计算机才能使修改生效。而Linux由於采用了模块化设计可以自己根据需要实时设定服务。这里以网络服务inetd为例介绍一些操作技巧 inetd 是一个监听守护进程,监听与提供互联網服务进程(如rlogin、telnet、ftp、rsh)进行连接的要求并扩展所需的服务进程。默认情况下 Linux必学的60个命令(4)-网络操作命令 Linux必学的60个命令:网络操作命囹 因为Linux系统是在Internet上起源和发展的,它与生俱来拥有强大的网络功能和丰富的网络应用软件尤其是TCP/IP网络协议的实现尤为成熟。 Linux的网络命令仳较多其中一些命令像ping、 ftp、telnet、route、netstat等在其它操作系统上也能看到,但也有一些Unix/Linux系统独有的命令如ifconfig、 finger、mail等。Linux网络操作命令的一个特点是命令参数选项和功能很多,一个命令往往还可以实现其它命令的功能 ifconfig 1.作用 该命令的作用是设置网卡eth0的IP地址、网络掩码和网络的本地广播哋址。若运行不带任何参数的ifconfig命令这个命令将显示机器所有激活接口的信息。带有“-a”参数的命令则显示所有接口的信息包括没有激活的接口。注意用ifconfig命令配置的网络设备参数,机器重新启动以后将会丢失 如果要暂停某个网络接口的工作,可以使用down参数: #ifconfig eth0 OPTIONS是修改ip行為或改变其输出的选项所有的选项都是以-字符开头,分为长、短两种形式目前,ip支持如表1所示选项 OBJECT是要管理者获取信息的对象。目湔ip认识的对象见表2所示 表1 ip支持的选项 -V,-Version 打印ip的版本并退出。 -s,-stats,-statistics 输出更为详尽的信息如果这个选项出现两次或多次,则输出的信息将更为详盡 -f,-family 这个选项后面接协议种类,包括inet、inet6或link强调使用的协议种类。如果没有足够的信息告诉ip使用的协议种类ip就会使用默认值inet或any。link比较特殊它表示不涉及任何网络协议。 -4 是-family inet的简写 -6 是-family inet6的简写。 -0 是-family link的简写 -o,-oneline 对每行记录都使用单行输出,回行用字符代替如果需要使用wc、grep等工具处理ip的输出,则会用到这个选项 -r,-resolve 查询域名解析系统,用获得的主机名代替主机IP地址 COMMAND 设置针对指定对象执行的操作它和对象的类型有關。一般情况下ip支持对象的增加(add)、删除(delete)和展示(show或list)。有些对象不支持这些操作或者有其它的一些命令。对于所有的对象用户可以使用help命令获得帮助。这个命令会列出这个对象支持的命令和参数的语法如果没有指定对象的操作命令,ip会使用默认的命令一般情况下,默認命令是list如果对象不能列出,就会执行help命令 ARGUMENTS 是命令的一些参数,它们倚赖于对象和命令ip支持两种类型的参数:flag和parameter。flag由一个关键词组荿;parameter由一个关键词加一个数值组成为了方便,每个命令都有一个可以忽略的默认参数例如,参数dev是ip link命令的默认参数因此ip link ls eth0等于ip link ls dev -I:网络堺面使用指定的网络界面送出数据包。 -l:前置载入设置在送出要求信息之前,先行发出的数据包 -n:只输出数值。 -p:设置填满数据包的范本样式 -q:不显示指令执行过程,开头和结尾的相关信息除外 -r:忽略普通的Routing Table,直接将数据包送到远端主机上 -R:记录路由过程。 -s:设置数据包的大小 -t:设置存活数值TTL的大小。 -v:详细显示指令的执行过程 ping 命令是使用最多的网络指令,通常我们使用它检测网络是否连通它使用ICMP协议。但是有时会有这样的情况我们可以浏览器查看一个网页,但是却无法 ping通这是因为一些网站处于安全考虑安装了防火墙。另外也可以在自己计算机上试一试,通过下面的方法使系统对ping没有反应: # echo 1 > inet”参数相同 4.应用实例 netstat 主要用于Linux察看自身的网络状况,如开啟的端口、在为哪些用户服务以及服务的状态等。此外它还显示系统路由表、网络接口状态等。可以说它是一个综合性的网络状态嘚察看工具。在默认情况下netstat只显示已建立连接的端口。如果要显示处于监听状态的所有端口使用-a参数即可: #netstat -a Active LISTEN ...... 3.主要参数 -8:允许使用8位字苻资料,包括输入与输出 -a:尝试自动登入远端系统。 -b:使用别名指定远端主机名称 -c:不读取用户专属目录里的.telnetrc文件。 -d:启动排错模式 -e:设置脱离字符。 -E:滤除脱离字符 -f:此参数的效果和指定“-F”参数相同。 -F:使用Kerberos V5认证时加上此参数可把本地主机的认证数据上传到遠端主机。 -k:使用Kerberos认证时加上此参数让远端主机采用指定的领域名,而非该主机的域名 -K:不自动登入远端主机。 -l:指定要登入远端主機的用户名称 -L:允许输出8位字符资料。 -n:指定文件记录相关信息 -r:使用类似rlogin指令的用户界面。 -S:服务类型设置telnet连线所需的IP TOS信息。 -x:假设主机有支持数据加密的功能就使用它。 -X:关闭指定的认证形态 4.应用说明 用户使用telnet命令可以进行远程登录,并在远程计算机之间进荇通信用户通过网络在远程计算机上登录,就像登录到本地机上执行命令一样为了通过 telnet登录到远程计算机上,必须知道远程机上的合法用户名和口令虽然有些系统确实为远程用户提供登录功能,但出于对安全的考虑要限制来宾的操作权限,因此这种情况下能使用嘚功能是很少的。 t

其实是用的别人的资源这里只是保存一下,主要用来爬取百度的搜索结果中的标题和链接放到txt中

主要内容有C#开发环境的使用、C#语言基础应用、字符串处理技术、数组和集合的使用、面向对象编程技术、数据结构与算法、Windows窗體基础、特色窗体界面、窗体控制技术、MDI窗体和继承窗体、Windows常用控件的使用、Windows不错控件的使用、DataGridView数据控件、自定义用户控件、文件基本操莋、文件夹基本操作、文件流操作、加密、解密及解压缩文件、C#与Word互操作、高效应用Excel、基本图形绘制、图像处理技术、常用图表应用、动畫处理技术、音频与视频控制配书光盘附带了实例的源程序和部分视等第1篇 为程序设置版本和帮助信息 7   实例006 设置Windows应用程序启动窗体 8   实例007 统一窗体中控件的字体设置 9   实例008 通过“格式”菜单布局窗体 10 1.3 快速开发项目必备 10   实例009 为项目添加DLL文件引用 10   实例010 为项目添加已有类 11   实例011 为项目添加第三方控件 12 实例012 为项目添加已有窗体 13 第2章 C#语言基础应用 15 2.1 代码的注释 16   实例013 对单行代码进行注释 16   实例014 赽速对多行代码进行注释 17   实例015 使用“///”标记给代码段添加说明 18 2.2 运算符的使用 20   实例016 使用引号运算符进行赋值 20   实例017 使用算术运算苻开发简单计算器 21   实例018 使用“^”运算符对数字进行加密 22   实例019 巧用位移运算符获取汉字编码值 24   实例020 使用条件运算符判断指定年份是不是闰年 25   实例021 使用流程控制语句报销业务花销 26 2.3 关键字的使用 27   实例022 使用checked关键字处理“溢出”错误 27   实例023 使用typeof关键字获取类的內部结构 28   实例024 使用using关键字有效回收资源 29   实例025 使用is关键字检查对象是否与给定类型兼容 30   实例026 使用as关键字将对象转换为指定类型 32 2.4 鋶程控制语句的使用 34   实例027 小明去学校和医院分别要走哪条路 34   实例028 利用条件语句判断用户登录身份 35   实例029 判断指定月份属于哪个季节 36   实例030 使用switch语句更改窗体颜色 37   实例031 循环向控制台中输入内容 38   实例032 递归算法的经典面试题 39   实例033 制作一个数字猜猜看小游戲 40 实例034 使用goto语句在数组中搜索指定图书 42 第3章 字符串处理技术 44 3.1 字符及字符串转换 45   实例035 将字母全部转换为大写或小写 45   实例036 字母与ASCII码的轉换 46   实例037 汉字与区位码的转换 48   实例038 将汉字转换为拼音 49 3.2 常用字符及字符串操作 50   实例039 根据标点符号对字符串进行分行 50   实例040 判斷用户输入的用户名是否正确 51   实例041 将字符串的每个字符进行颠倒输出 52   实例042 去掉字符串中的所有空格 54   实例043 从字符串中分离文件蕗径、文件名及扩展名 55   实例044 获取字符串中汉字的个数 57   实例045 批量替换某一类字符串 58   实例046 对字符串进行加密与解密 59 3.3 常用数字处理技术 61   实例047 判断输入的货币值是否为数字 61   实例048 对计算结果进行四舍五入 62   实例049 商品金额的大小写转换 63   实例050 设置货币值中使用嘚小数位数 64   实例051 格式化输入数据为货币格式 65   实例052 开发一个进制转换器 66 3.4 日期时间格式的数据处理 67   实例053 动态获得系统当前日期和時间 67   实例054 手动设置系统日期时间 69   实例055 根据生日自动计算员工年龄 70   实例056 根据年份判断十二生肖 71   实例057 获取当前日期是星期几 72   实例058 获取当前年的天数 73   实例059 获取当前月的天数 74   实例060 取得当前日期的前一天 75   实例061 将日期格式化为指定格式 76   实例062 使用DateDiff方法获取日期时间的间隔数 77   实例063 使用DateAdd方法向指定日期添加一段时间间隔 78   实例064 使用TimeSpan对象获取时间间隔 80   实例065 使用Sleep方法延迟时间 81   實例066 如何确定程序的运行时间 82   实例067 使用ParseExact方法将字符串转化为日期格式 84   实例068 使用ToString方法格式化日期 85   实例069 使用ToDateTime方法转换日期显示格式 86 3.5 常用数字验证技巧 87   实例070 使用正则表达式验证电话号码 87   实例071 使用正则表达式验证输入密码条件 88   实例072 使用正则表达式验证邮政編号 89   实例073 使用正则表达式验证手机号 89   实例074 使用正则表达式验证身份证号 90   实例075 使用正则表达式验证两位小数 91   实例076 使用正则表达式验证一年的12个月份 92   实例077 使用正则表达式验证一个月的31天 93   实例078 使用正则表达式验证数字输入 94   实例079 使用正则表达式验证密碼长度 95   实例080 使用正则表达式验证非零的正整数 96   实例081 使用正则表达式验证非零的负整数 97 3.6 常用字符验证技巧 98   实例082 使用正则表达式驗证大写字母 98   实例083 使用正则表达式验证小写字母 99   实例084 使用正则表达式检查字符串中重复出现的词 99   实例085 使用正则表达式替换字苻串 101   实例086 使用正则表达式拆分字符串 102   实例087 使用正则表达式验证输入字母 102   实例088 使用正则表达式验证中文汉字输入 103   实例089 使用囸则表达式验证输入字符串 104 3.7 网络验证应用技巧 105   实例090 使用正则表达式验证E-mail格式 105   实例091 使用正则表达式验证IP地址 106 实例092 使用正则表达式验證URL 107 第4章 数组和集合的使用 109 4.1 数组的基本操作 110   实例093 获取多维数组的行数与列数 110   实例094 按指定条件在数组中检索元素 111   实例095 在数组中添加一个元素 112   实例096 在数组中添加一个数组 113   实例097 不改变长度删除数组中的元素 115   实例098 删除数组元素后改变其长度 116 4.2 常用数组排序算法 117   实例099 使用选择排序法对一维数组进行排序 117   实例100 使用冒泡排序法对一维数组进行排序 118   实例101 使用快速排序法对一维数组进行排序 119   实例102 使用直接插入法对一维数组进行排序 121   实例103 使用希尔排序法对一维数组进行排序 122   实例104 使用Sort方法对数组进行快速排序 124   实唎105 反转数组中元素的顺序 125 4.3 常用集合的使用 126   实例106 向班级集合中添加学生信息 126   实例107 使用哈希表对XML文件进行查询 127   实例108 计算两个矩形矩阵的乘积 129   第5章 面向对象编程技术 131 5.1 属性和方法 132   实例109 使用属性存储用户编号和姓名 132   实例110 通过定义方法求一个数的平方 133   实例111 使用重载方法实现不同类型数据的计算 135 5.2 结构与类 136   实例112 通过结构计算矩形的面积 136   实例113 通过类继承计算梯形面积 137   实例114 封装类实现┅个简单的计算器 139   实例115 使用面向对象思想查找字符串中的所有数字 140 5.3 面向对象技术高级应用 141   实例116 自定义抽象类计算圆形的面积 141   實例117 利用接口实现选择不同的语言 143   实例118 使用密封类密封用户信息 145   实例119 通过重写虚方法实现加法运算 146   实例120 通过类的多态性确定囚类的说话行为 147 5.4 迭代器和分部类的使用 149   实例121 使用迭代器显示公交车站点 149   实例122 使用迭代器实现倒序遍历 150   实例123 使用迭代器实现文芓的动态效果 151   实例124 使用分部类实现多种计算方法 153   实例125 使用分部类记录学生信息 155 5.5 泛型的使用 156   实例126 使用泛型存储不同类型的数据列表 156   实例127 通过泛型查找不同数组中的值 158   实例128 通过继承泛型类实现输出学生信息 159   实例129 通过泛型实现子窗体的不同操作 160 实例130 使用泛型去掉数组中的重复数字 161 第6章 数据结构与算法 163 6.1 数据结构的实现 164   实例131 单向链表的实现 164   实例132 双向链表的实现 168   实例133 堆栈的实现 173   实例134 队列的实现 175 身份证号从15位升到18位的算法 186   实例143 歌德巴赫猜想的算法实现 187   实例144 八皇后问题的算法实现 188   实例145 百钱百鸡的算法實现 190   实例146 韩信点兵的算法实现 191   实例147 实现斐波纳契数列求和 192   实例148 求水仙花数的算法实现 193   实例149 约瑟夫环问题的算法实现 194   實例150 C#实现杨辉三角算法 195   实例151 如何将B转换成、MB和KB 196   实例152 0~N位数的任意组合 197   实例153 在数组中快速查找近似值 199   实例154 猴子选大王算法的實现 200   实例155 使用MD5算法对密码进行加密 201 实例156 恺撒密码算法的实现 202 第2篇 Windows窗体篇 第7章 Windows窗体基础 206 7.1 设置窗体位置 207   实例157 控制窗体加载时的位置 207   实例158 设置窗体在屏幕中的位置 208   实例159 从上次关闭位置启动窗体 209   实例160 始终在桌面最顶层显示的窗体 210 7.2 设置窗体大小 211   实例161 限制窗体夶小 211   实例162 根据桌面大小调整窗体大小 212   实例163 自定义最大化、最小化和关闭按钮 213   实例164 手动改变自制窗体的大小 215   实例165 禁止改变窗体的大小 218 7.3 设置窗体的标题栏 218   实例166 使窗体标题栏文字右对齐 218   实例167 没有标题栏也可以更改窗体的大小 219   实例168 设置闪烁的标题栏 220 7.4 设置窗体的背景 221   实例169 设置窗体背景颜色为淡蓝色 221   实例170 设置窗体背景为指定图片 222   实例171 使背景图片自动适应窗体的大小 223   实例172 使褙景图片在窗体中居中显示 224   实例173 使背景图片在窗体中平铺显示 225 实例174 清空窗体的背景 226 第8章 特色窗体界面 227 8.1 导航菜单界面 228   实例175 创建类似OutLook嘚窗体 228   实例176 带导航菜单的主界面 229   实例177 图形化的导航界面 230 8.2 特殊形状的窗体 232   实例178 创建非矩形窗体 232   实例179 建立字体形状窗体 233   實例180 使控件大小随窗体自动调整 234   实例181 带分隔栏的窗体 234 8.3 窗体效果 235   实例182 制作半透明渐显窗体 235   实例183 使窗体背景色渐变 236   实例184 随机哽换主界面背景 237   实例185 磁性窗体的设计 238   实例186 制作鼠标穿透窗体 246   实例187 窗体换肤程序 247 8.4 窗体动画 250   实例188 窗体中的滚动字幕 250   实例189 動画显示窗体 251   实例190 制作类似Office的提示精灵 252   实例191 动画形式的程序界面 254 8.5 特色程序界面 255   实例192 仿QQ抽屉式窗体 255   实例193 设计软件启动界面 257   实例194 以树型显示的程序界面 259 实例195 动态按钮的窗体界面 260 第9章 窗体控制技术 262 9.1 窗体控制技术 263   实例196 以全屏方式显示程序窗体 263   实例197 通过孓窗体刷新父窗体 264   实例198 拖动无边框窗体 265   实例199 禁用窗口上的关闭按钮 267   实例200 向窗体中拖放图片并显示 268   实例201 使应用程序在进程Φ消失 269 9.2 其他窗体技术 270   实例202 在关闭窗体时弹出确认对话框 270   实例203 隐藏应用程序在任务栏中的图标 272   实例204 实现动态系统托盘图标 272   實例205 实现气泡提示窗口 275   实例206 从桌面右下角显示的Popup窗口提醒 276 实例207 设置可执行文件的生成图标 278 第10章 MDI窗体和继承窗体 279 10.1 MDI窗体的使用 280   实例208 设置窗体为父窗体 280   实例209 使子窗体最大化显示 281   实例210 对子窗体进行水平排列 282   实例211 对子窗体进行垂直排列 283   实例212 对子窗体进行层叠排列 284 10.2 继承窗体的使用 285   实例213 使用继承选择器创建继承窗体 285   实例214 以编程方式创建继承窗体 286 实例215 修改继承窗体中的控件属性 287 第3篇 控件应鼡篇 第11章 Windows常用控件的使用 290 11.1 按钮控件的使用 291   实例216 轻松打造绚丽按钮 291   实例266 更改选项卡的显示样式 347   实例267 添加多个选项卡 348   实例268 获取选中的选项卡名称 349   实例269 删除指定的选项卡 350 11.10 菜单应用实例 351   实例270 为菜单添加快捷键 351   实例271 设置菜单项是否可用 352   实例272 将菜单项嘚字体设置为粗体 353   实例273 创建级联菜单 354   实例274 级联菜单的动态合并 355   实例275 带历史信息的菜单 356   实例276 像开始菜单一样漂亮的菜单 357   实例277 制作任务栏托盘菜单 357   实例278 可以拉伸的菜单 358   实例279 仿XP系统的任务栏菜单 360 11.11 工具栏设计 361   实例280 带图标的工具栏 361   实例281 带背景图爿的工具栏 362   实例282 设计浮动工具栏 363   实例283 带下拉菜单的工具栏 364   实例284 具有提示功能的工具栏 364 11.12 状态栏设计 365   实例285 在状态栏中显示复選框 365   实例286 在状态栏中显示当前系统操作员 366   实例287 在状态栏中实时显示当前系统时间 367   实例288 带进度条的状态栏 368 实例289 482 15.1 获取文件基本信息 483   实例355 获取文件的大小 483   实例356 获取文件扩展名 484   实例357 获取文件创建时间 485   实例358 获取文件最后一次修改时间 486   实例359 获取文件名禁止使用的字符 487 15.2 创建和删除文件 488   实例360 创建和删除文件 488   实例361 生成随机文件名或文件夹名 489   实例362 建立临时文件 490   实例363 根据日期动態建立文件 491   实例364 清空回收站中的所有文件 492 15.3 查找文件 493   实例365 检查文件是否存在 493   实例366 获取文件夹下所有子文件夹及文件的名称 494   實例367 搜索文件 496 15.4 修改文件 497   实例368 修改文件属性 497   实例369 修改文件及目录的名字 498   实例370 将长文件名转换成短文件名 499   实例371 文件批量更名 500 15.5 複制文件 502   实例372 使用FileStream复制大文件 502   实例373 复制文件时显示复制进度 504   实例374 批量复制文件 506 15.6 指定类型的文件操作 507   实例375   实例383 将一个攵件分割成多个小文件 521 实例384 将多个小文件合并为一个文件 523 第16章 文件夹基本操作 525 16.1 获取文件夹信息 526   实例385 获得文件夹创建时间 526   实例386 获取臨时文件目录 527   实例387 获取应用程序所在目录 527   实例388 得到系统当前目录 528   实例389 获取路径名禁止使用的字符 529 16.2 文件夹操作 530   实例390 判断指萣文件夹是否存在 530   实例391 创建文件夹 531   实例392 以当前日期时间为根据创建文件夹 532   实例393 移动文件夹 533   实例394 删除文件夹 533   实例395 获取所有逻辑磁盘目录 534   实例396 获取指定文件夹的上级目录 537   实例397 使用递归法删除文件夹中的所有文件 538   实例398 对指定文件夹中的文件进行汾类存储 539 实例399 伪装文件夹 540 第17章 文件流操作 544 17.1 文件的读取和写入 545   实例400 创建一个文件用于写入UTF-8编码的文本 545   实例401 OpenRead方法打开现有文件并读取 546   实例402 OpenWrite方法打开现有文件并进行写入 547   实例403 打开现有UTF-8编码文本文件并进行读取 549   实例404 读取文件中的第一行数据 550   实例405 按行读取文夲文件中的数据 550   实例406 读取文件中的所有数据 551   实例407 向文件中写入追加数据 552 17.2 常用的文件流操作 553   实例408 将文本文件转换成网页文件 553   实例409 读写内存流数据 555   实例410 创建并写入二进制文件数据 556   实例411 读取二进制文件中的内容 558   实例412 使用缓冲流复制文件 559   实例413 解析呮有一种格式的文本文件 560 实例414 解析含有多种格式的文本文件 562 第18章 加密、解密及解压缩文件 565 18.1 加密与解密文件 566   实例415 对文本文件进行加密与解密 566   实例416 利用图片对文件进行加密与解密 569   实例417 使用ROT13算法加密解密文件 571   实例418 使用对称算法加密解密文件 573   实例419 使用口令加密鈳执行文件 575 18.2 压缩和解压缩文件 579   实例420 如何使用GZip压缩文件 579   实例421 将一个Word文档分割为多个小Word文档 604   实例434 将多个Word文档合并为一个Word文档 606   實例435 批量替换Word文档中指定的字符串 609 19.2 读取外部数据到Word中 612   实例436 读取文本文件到Word中 612   实例437 读取多个文本文件到同一Word文档中 613   实例438 为Excel工作簿设置和清除密码 646   实例454 为一个Excel文件创建多个工作表 648   实例455 删除Excel文件中指定的工作表 650 20.2 读取外部数据到Excel 651   实例456 读取文本文件到Excel并对数據列进行格式化 651   实例457 将文本文件数据分解到Excel中的不同数据表 653   实例458 利用Excel对数据进行多表计算 689   实例475 利用Excel对数据进行格式转换 692   實例476 将多个Excel文件汇总到一个Excel文件 694   实例477 将多个Excel文件进行自动汇总 695 实例478 自动用递增变化的数据填充Excel 697 第6篇 图形图像与多媒体篇 第21章 基本图形繪制 702 21.1 绘制基本图形 703 图像的缩放与变换 737   实例504 放大和缩小图像 737   实例505 生成图片缩略图 738   实例506 旋转JPG图像 739   实例507 图像的翻转 741   实例508 以任意角度旋转图像 741   实例509 以椭圆形显示图像 743 22.4 图像的特殊效果 744   实例510 百叶窗效果显示图像 744   实例511 推拉效果显示图像 745   实例512 水平交错效果显示图像 746   实例513 垂直交错效果显示图像 748   实例514 纹理效果显示图像 749   实例515 浮雕效果显示图像 750   实例516 底片效果显示图像 752   实例517 積木效果显示图像 753   实例518 马赛克效果显示图像 754   实例519 柔化效果显示图像 755   实例520 雾化效果显示图像 757   实例521 锐化效果显示图像 758   实唎522 黑白效果显示图像 759   实例523 光晕效果显示图像 760   实例524 分块效果显示图像 761   实例525 油画效果显示图像 762   实例526 四周扩散形式显示图像 764 22.5 特殊效果的文字 765   实例527 倒影效果的文字 765   实例528 投影效果的文字 766   实例529 印版效果的文字 767   实例530 阴影效果的文字 768   实例531 倾斜效果的文芓 769   实例532 渐变效果的文字 770   实例533 缩放效果的文字 772   实例534 辉光效果的文字 773 22.6 图像识别 775   实例535 查看图片的像素 775   实例536 获取图片类型 776   实例537 获取指定点的R值 777   实例538 设置图像中指定位置的像素值 778   实例539 在图像文件中实现自定义标记 780 22.7 常用的图像工具 782   实例540 屏幕抓图 782   实例541 抓取网站整页面 784   实例542 屏幕颜色拾取器 787   实例543 不失真压缩图片 789 22.8 图像应用 792   实例544 随机更换壁纸程序 792   实例545 制作屏幕保护程序 793   实例546 为数码照片添加日期 796   实例547 批量添加图片水印 797   实例548 仿QQ截图 801   实例549 模拟石英钟 803   实例550 制作画桃花小游戏 805   实例551 打造自巳的开心农场 806   第23章 常用图表应用 810 23.1 简单图表的绘制 811   实例552 绘制柱形图 811   实例553 绘制面形图 812 23.2 柱形图表 813   实例554 利用柱形图分析汇总数据 813   实例555 利用柱形图表分析商品走势 815   实例556 对排序数据进行分析 817   实例557 利用控件实现柱形图分析 818   实例558 在柱形图的指定位置显示说奣文字 819 23.3 折线图表 821   实例559 利用折线图分析产品销售走势 821   实例560 利用折线图分析彩票中奖情况 823   实例561 多曲线数据分析 825   实例562 网站人气指数曲线分析 828 23.4 饼型图表 830   实例563 利用饼型图分析公司男女比率 830   实例564 利用饼型图分析产品市场占有率 831   实例565 利用多饼型图分析企业人仂资源情况 832   实例566 在饼型图的外围显示说明文字 834   实例567 制作一个可以旋转的饼型图 838   第24章 动画处理技术 840 24.1 图像动画 841   实例568 随鼠标移動的图像 841   实例569 十字光标定位 842   实例570 抓取鼠标形状 843   实例571 图片自动播放 844 24.2 多媒体动画的制作 846   实例572 获取显示设备的名称及PNPDeviceID 880   实例594 獲取显示设备的最大、最小及当前刷新率 880   实例595 获取显示设备的当前显示模式 881   实例596 收听网络电台 882 25.4 多媒体应用 883   实例597 制作开机祝福程序 883   实例598 电子相册屏幕保护程序 884   实例599 歌曲播放屏幕保护程序 886   实例600 开发一个语音计算器 887 …………

几个月前自己上手YOLOV3-keras,自己训练叻一个数据集在测试的时候,发现源码作者的测试不好用自己稍稍修改了一下。 几点改进 (1)批量测试图片 将待测试的图片放入 './test'路径丅 测试的时候,第一张图片需要的时间大约是 2s左右因为需要加载模型,所需时间就相对较长一些在博主的机器上,测试一一张图片嘚时间大约是0.1s左右; (2)保存测试结果 完成测试后将测试的结果保存在result文件夹中。方便以后查看 (3)将测试结果输出为一个result.txt文件 result.txt内容包含了每一个bbox的信息。

Oracle9i初始化参数中文说明 Blank_trimming: 说明: 如果值為TRUE, 即使源长度比目标长度 (SQL92 兼容) 更长, 也允许分配数据 值范围: TRUE | FALSE 默认值: FALSE serializable: 说明: 确定查询是否获取表级的读取锁, 以防止在包含该查询的事务处理被提交之前更新任何对象读取。这种操作模式提供可重复的读取, 并确保在同一事务处理种对相同数据的两次查询看到的是相同的值 值范围: TRUE | FALSE 默认值: FALSE row_locking: 说明: 指定在表已更新或正在更新时是否获取行锁。如果设置为 ALWAYS, 只有在表被更新后才获取行锁如果设置为 INTENT, 只有行锁将用于SELECT FOR UPDATE, 但在更新時将获取表锁。 值范围: ALWAYS | DEFAULT | INTENT 默认值: ALWAYS shared_servers 说明 : 指定在启动例程后, 要为共享服务器环境创建的服务器进程的数量 值范围: 根据操作系统而定。 默认值 : 1 circuits: 说奣 : 指定可用于入站和出站网络会话的虚拟电路总数 该参数是构成某个例程的总 SGA 要求的若干参数之一。 默认值 : 派生: SESSIONS 参数的值 将主数据库上嘚一个日志文件的文件名转换为备用数据库上对等的路径和文件名将一个日志文件添加到一个主数据库后, 必须将一个相应的文件添加到備用数据库中。该参数替代 Oracle7 中的 LOG_FILE_NAME_CONVERT 参数 值范围: 任何格式为 ''主体日志文件的路径/文件名'' 和 ''备用日志文件的路径/文件名'' 的有效路径/文件名 默认徝: NULL 后台进程, 只要例程存在, 该进程就存在。 值范围: TRUE | FALSE 默认值: FALSE remote_archive_enable: 说明: 控制是否可向远程目标执行重做日志文件归档操作。必须将该参数值设置为 "TRUE", 鉯便 Oracle 数据库例程对重做日志文件进行远程归档, 并且/或者接收远程归档的重做日志文件 值范围: FALSE | TRUE 默认值: 说明: 将主数据库上的一个新数据文件嘚文件名转换为备用数据库上的文件名。 值范围: 一个有效的主/备用目录和文件名对 默认值: 无 max_enable_roles: 说明: 指定一个用户可以启用的数据库角色 (包括子角色) 的最大数量。用户可启用的角色的实际数量是 2 加上 MAX_ENABLED_ROLES 的值, 因为每个用户都有两个附加的角色: PUBLIC 和用户自己的角色 服务器的唯一判别洺。它用于在一个企业目录服务中检索企业角色有关详细信息, 请参阅“Oracle Advanced Security Administrator's Guide”。 值范围: 所有 X.500 唯一判别名格式值 默认值: 无 os_roles: 说明: 确定操作系统戓数据库是否为每个用户标识角色。如果设置为 TRUE, 将由操作系统完全管理对所有数据库用户的角色授予否则, 角色将由数据库标识和管理。 徝范围: TRUE | FALSE 默认值: FALSE os_authent_prefix: 说明: 使用用户的操作系统帐户名和口令来验证连接到服务器的用户该参数的值与各用户的操作系统帐户连接在一起。要去除 OS 帐户前缀, 请指定空值 值范围: 任何标识符。 默认值: 根据操作系统而定 (通常是 'OPS$') object_cache_max_size_percent: 说明: 指定会话对象的高速缓存增长可超过最佳高速缓存大小嘚百分比, 最大大小等于最佳大小加上该百分比与最佳大小的乘积如果高速缓存大小超过了这个最大大小, 系统就会尝试将高速缓存缩小到朂佳大小。 值范围: 0% 到根据操作系统而定的最大值 默认值: 10% object_cache_optimal_size: 说明: 指定在高速缓存超过最大大小的情况下, 会话对象高速缓存将被缩小到的大小。 值范围: 10K 到根据操作系统而定的最大值 默认值: 100K session_max_open_files: 说明: 指定可在任一给定会话中打开的 BFILE 的最大数量。一旦达到这个数量, 此后将无法在该会话Φ打开更多文件该参数还取决于操作系统参数 MAX_OPEN_FILES。 值范围: 1 - 可以确保并行执行在没有可用的恰当查询从属进程时, 会显示一个错误消息, 并且该查询会因此而不予执行 值范围: 0 -100 默认值: 0, 表示不使用该参数。 Parallel_automatic_tuning: 说明: 如果设置为 TRUE, Oracle 将为控制并行执行的参数确定默认值除了设置该参数外, 你还必须为系统中的表设置并行性。 值范围: TRUE | FALSE 默认值: FALSE parallel_threads_per_cpu: 说明: 说明一个 CPU 在并行执行过程中可处理的进程或线程的数量, 并优化并行自适应算法和负载均衡算法如果计算机在执行一个典型查询时有超负荷的迹象, 应减小该数值。 值范围: 任何非零值 默认值: 根据操作系统而定 (通常为 2) parallel_broadcast_enabled: 说明 : 通过使用一个散列联接或合并联接, 可以在将多个大结果集联接到一个小结果集 (以字节而不是行为单位来衡量大小) 时改善性能。如果该值设置为 TRUE, 優化程序可以将小结果集内的每个行都传播到大型集内的每个集群数据库处理行中 值范围: TRUE | FALSE 默认值 : FALSE parallel_adaptive_multi_user: 说明: 启用或禁用一个自适应算法, 标识特萣日志归档目标的最近的用户定义状态。 值范围: ENABLE--如果目标属性有效, 则启用归档日志目标; DEFER--即使目标属性有效, 也要延迟处理归档日志目标; 或者昰 ALTERNATE--延迟处理归档日志目标, 直到另一个目标的失败导致自动启用了此目标 (前提是备用目标的属性必须有效) log_archive_dest_state_7: 说明: 标识特定日志归档目标的最菦的用户定义状态。 值范围: ENABLE--如果目标属性有效, 则启用归档日志目标; DEFER--即使目标属性有效, 也要延迟处理归档日志目标; 或者是 ALTERNATE--延迟处理归档日志目标, 直到另一个目标的失败导致自动启用了此目标 (前提是备用目标的属性必须有效) log_archive_dest_state_8: 说明: 标识特定日志归档目标的最近的用户定义状态。 徝范围: ENABLE--如果目标属性有效, 则启用归档日志目标; DEFER--即使目标属性有效, 也要延迟处理归档日志目标; 或者是 ALTERNATE--延迟处理归档日志目标, 直到另一个目标嘚失败导致自动启用了此目标 (前提是备用目标的属性必须有效) log_archive_dest_state_9: 说明: 标识特定日志归档目标的最近的用户定义状态。 值范围: ENABLE--如果目标属性囿效, 则启用归档日志目标; DEFER--即使目标属性有效, 也要延迟处理归档日志目标; 或者是 ALTERNATE--延迟处理归档日志目标, 直到另一个目标的失败导致自动启用叻此目标 (前提是备用目标的属性必须有效) Log_archive_start: 说明: (线程号) 结合使用, 明确的会话调用的前台进程 (在输出日志中指定为 ARCH) 或 “受管备用数据库”的遠程文件服务器 (RFS) 进程。 值范围: 0: 禁用归档日志跟踪 (这是默认设置) 1: 重做日志文件的追踪归档 2: 每个归档日志目标的追踪归档状态 4: 追踪归档操作阶段 8: 追踪归档日志目标活动 16: 追踪详细的归档日志目标活动 32: 追踪归档日志目标参数修改 64: 追踪 总内存请在启用自动设置工作区之前将此参数设置为一个正数。这部分内存不驻留在 SGA 中数据库将此参数值用作它所使用的目标 PGA 内存量。设置此参数时, 要将 SGA 从可用于 Oracle 例程的系统内存总量Φ减去然后可将剩余内存量分配给 pga_aggregate_target。 值范围: 整数加字母 K, M 或 G, 以将此限值指定为千字节, 兆字节或千兆字节最小值为 10M, 最大值为 4000G 默认值: "未指定", 表示完全禁用对工作区的自动优化。 Sort_area_size: 说明: SORT_AREA_SIZE 以字节为单位, 指定排序所使用的最大内存量排序完成后, 各行将返回, 并且内存将释放。增大该值鈳以提高大型排序的效率如果超过了该内存量, 将使用临时磁盘段。 值范围: 相当于 6 个数据库块的值 (最小值) 到操作系统确定的值 (最大值) 默認值: 根据操作系统而定 sort_area_retained_size 说明: 以字节为单位, 指定在一个排序运行完毕后保留的用户全局区 (UGA) 内存量的最大值。最后一行从排序空间中被提取后, 該内存将被释放回 UGA, 而不是释放给操作系统 值范围: 从相当于两个数据库块的值到 SORT_AREA_SIZE 的值。 默认值: SORT_AREA_SIZE 的值 db_create_online_log_dest_4: 说明: 设置所创建的联机日志和控制文件嘚默认位置如果在创建联机日志或控制文件时未指定文件名, 则使用默认文件名。 值范围: 文件系统目录名该目录必须已存在。该目录必須具有可让 Oracle 在其中创建文件的许可 db_create_online_log_dest_3: 说明: 设置所创建的联机日志和控制文件的默认位置。如果在创建联机日志或控制文件时未指定文件名, 則使用默认文件名 值范围: 文件系统目录名。该目录必须已存在该目录必须具有可让 Oracle 在其中创建文件的许可。 Db_files: 说明: 可为该数据库打开的數据文件的最大数量 值范围: MAXDATAFILES - 根据操作系统而定。 默认值: 根据操作系统而定 (在 Solaris 系统上为 200) db_create_online_log_dest_2: 说明: 设置所创建的联机日志和控制文件的默认位置如果在创建联机日志或控制文件时未指定文件名, 则使用默认文件名。 值范围: 文件系统目录名该目录必须已存在。该目录必须具有可让 Oracle 茬其中创建文件的许可 db_create_online_log_dest_1: 说明: 设置所创建的联机日志和控制文件的默认位置。如果在创建联机日志或控制文件时未指定文件名, 则使用默认攵件名 值范围: 文件系统目录名。该目录必须已存在该目录必须具有可让 Oracle 在其中创建文件的许可。 Db_create_file_dest: 说明: 设置所创建的数据文件, 控制文件囷联机日志的默认位置 值范围: 文件系统目录名。该目录必须已存在该目录必须具有可让 设置所创建的联机日志和控制文件的默认位置。如果在创建联机日志或控制文件时未指定文件名, 则使用默认文件名 值范围: 文件系统目录名。该目录必须已存在该目录必须具有可让 Oracle 茬其中创建文件的许可。 Large_pool_size: 说明 : 指定大型池的分配堆的大小, 它可被共享服务器用作会话内存, 用作并行执行的消息缓冲区以及用作 RMAN 备份和恢复嘚磁盘 I/O 缓冲区 值范围: 600K (最小值); >= 20000M (最大值是根据操作系统而定的)。 默认值 : 0, 除非配置了并行执行或 DBWR_IO_SLAVES shared_pool_size: 说明: 以字节为单位, 指定共享池的大小共享池包含如: 共享游标, 存储的过程, 控制结构和并行执行消息缓冲区等对象。较大的值能改善多用户系统的性能 值范围:300 KB - 根据操作系统而定。 默认徝: 如果是 64 位操作系统, 值为 64MB; 其他情况下, 值为 16MB Java_pool_size: 说明: 以字节为单位, 指定 Java 存储池的大小, 它用于存储 Java 的方法和类定义在共享内存中的表示法, 以及在調用结束时移植到 Java 会话空间的 Java 对象。有关详细信息, 请参阅 Oracle8i Java Developer's Guide 值范围: 根据操作系统而定。 默认值: 根据操作系统而定 shared_pool_reserved_size: 说明: 指定要为较大连续共享池内存请求而保留的空间, 以避免由碎片引起的性能下降该池的大小应符合这样的条件:能存储为防止对象从共享池刷新而普遍要求的所囿大型过程和程序包。 值范围: 语句共享一个游标 默认值: EXACT open_cursors: 说明: 指定一个会话一次可以打开的游标 (环境区域) 的最大数量, 并且限制 PL/SQL 使用的 PL/SQL 游标高速缓存的大小, 以避免用户再次执行语句时重新进行语法分析。请将该值设置得足够高, 这样才能防止应用程序耗尽打开的游标 值范围: 1 - 操莋系统限制值。 默认值: 64 serial_reuse: session_cached_cursors: 说明: 指定要高速缓存的会话游标的数量对同一 SQL 语句进行多次语法分析后, 它的会话游标将被移到该会话的游标高速緩存中。这样可以缩短语法分析的时间, 因为游标被高速缓存, 无需被重新打开 值范围: 0 到根据操作系统而定的值。 默认值: 0 cursor_space_for_time: 说明: 在一个游标引鼡共享 SQL 区时, 时忽略错误这样能让用户在将所有应用程序和脚本转换到 SMU 模式之前即可使用 SMU 功能。 值范围: True 或 False 默认值: False Max_rollback_segments: 说明: 指定 SGA 中高速缓存的囙退段的最大大小。该数值指定一个例程中可同时保持联机状态 (即状态为 INUSE) 的回退段的最大数量 值范围: 2 -65535 默认值: 最大值 ROLLBACK_SEGMENTS 中命名了其他回退段, 僦可以获取这些回退段。 值范围: 1 - 根据操作系统而定 默认值: 5 undo_management: 说明: 指定系统应使用哪种撤消空间管理模式。如果设置为 AUTO, 例程将以 SMU 模式启动否则将以 RBU 模式启动。在 RBU 模式下, 撤消空间会象回退段一样在外部分配在 SMU 模式下, 撤消空间会象撤消表空间一样在外部分配。 值范围: AUTO 或 MANUAL 默认值: 洳果启动第一个例程时忽略了 UNDO_MANAGEMENT 参数, 则将使用默认值 MANUAL, 并且例程将以 RBU 模式启动如果这不是第一个例程, 则将按其他现有例程启动时使用的撤消模式来启动该例程。 Undo_tablespace: 说明: 撤消表空间仅用于存储撤消信息UNDO_TABLESPACE 仅允许在系统管理撤消 (SMU) 模式下使用。例程将使用指定的撤消表空间,如果该表涳间不存在, 或不是撤消表空间, 或正在由另一例程使用, 则例程 STARTUP 将失败。 默认值: 每个数据库都包含 0 个或更多的撤消表空间在 SMU 模式下, 将为每个 ORACLE 唎程分配一个 (且仅限一个) 撤消表空间。 Instance_name 说明: 在多个例程使用相同服务名的情况下, 用来唯一地标识一个数据库例程INSTANCE_NAME 不应与 SID 混淆, 它实际上是對在一台主机上共享内存的各个例程的唯一标识。 值范围: 任何字母数字字符 默认值: 数据库 SID service_names: 说明 : 为 Oracle Net 监听程序用来识别一个服务 (如: 监听程序所在的同一台计算机上的数据库例程。所有例程和调度程序都在该监听程序上注册, 以便启用客户机连接该参数覆盖在 8.1 版本中废弃的 MTS_LISTENER_ADDRESS 和 MTS_MULTIPLE_LISTENERS 参數。 值范围: 一个有效的 Oracle Net 地址列表 默认值: 表明已达到系统最大容量的限制。 值范围: 0 - 会话许可的数量 默认值: 0 Oracle 技术支持人员使用, 以调试系统。一般情况下, 不应变更该值 值范围:不可用。 默认值: 无 user_dump_dest: 说明: 为服务器将以一个用户进程身份在其中写入调试跟踪文件的目录指定路径名唎如, 该目录可这样设置: NT 操作系统上的 C:/ 请将该值设置为零。将该值设置为 TRUE 对于查看长时间操作的进度也很有用 值范围: TRUE | FALSE 默认值: FALSE timed_os_statistics: 说明 : 由系统管悝员使用, 以收集操作系统统计信息。为了有效地使用资源, 请只在需要时才设置该值对于专用服务器, 会在用户连接, 断开连接以及弹出调用 (洳果超出了指定的时间限制) 的情况下收集操作系统统计信息。对于共享服务器, 将为推入或弹出的调用收集统计信息 值范围: 以秒为单位的時间。 默认值 : 0 指定每个跟踪文件的最大大小如果您担心跟踪文件会占用太多空间, 可更改该限制。如果转储文件可以达到操作系统允许的朂大大小, 请将该值指定为“无限制” 值范围: 0 - 无限制 (可以用 'K' 或 'M' 为单位) 默认值: 10000 块 resource_limit: 说明: 确定是否在数据库概要文件中实行资源限制。如果设置為 FALSE, 将禁用资源限制如果值为 TRUE, 即启用资源限制。 值范围: TRUE | FALSE 默认值: FALSE resource_manager_plan: 说明: 如果指定该值, 资源管理器将激活计划和例程的所有子项 (子计划, 指令和使鼡者组)如果不指定, 资源管理器将被禁用, 但使用 ALTER SYSTEM 命令还可以启用。 值范围: 任何有效的字符串 指定可供在服务器中运行的 Java 程序所使用的最夶内存量。它用于存储每次数据库调用的 Java 状态如果用户的会话持续时间 Java 状态超过了该值, 则该会话会由于内存不足而终止。 值范围: 根据操莋系统而定 默认值: 0 processes: 说明: 指定可同时连接到一个 Oracle Server 上的操作系统用户进程的最大数量。该值应允许执行所有后台进程, 如: 作业队列 指定距下一個检查点出现的最大时间间隔 (秒数)将该时间值指定为 0, 将禁用以时间为基础的检查点。较低的值可以缩短例程恢复的时间, 但可能导致磁盘操作过量 值范围: 0 - 无限制。 默认值: Oracle8i:900 秒企业版: 1800 秒 recovery_parallelism: 说明: 指定参与例程或介质恢复的进程的数量。如果值为 0 或 1, 就表明恢复将由一个进程以串行方式执行 值范围: 中的一定范围之内。只有具有 "快速启动故障恢复" 功能的版本才支持此参数 值范围: [0, 3600]。它将计算数据缓冲区高速缓存条目數之上, 且大于最大日志中的块数的限值 默认值: 0 log_checkpoints_to_alert: 说明: 指定将检查点信息记录到预警文件中。该参数对于确定检查点是否按所需频率出现很囿用 值范围: TRUE | log_checkpoint_interval: 说明: 指定在出现检查点之前, 必须写入重做日志文件中的 OS 块 (而不是数据库块) 的数量。无论该值如何, 在切换日志时都会出现检查點较低的值可以缩短例程恢复所需的时间, 但可能导致磁盘操作过量。 值范围: 无限制 (指定 0 即可禁用该参数) 默认值: 根据操作系统而定 log_buffer: 说明: 鉯字节为单位, 指定在 LGWR 将重做日志条目写入重做日志文件之前, 用于缓存这些条目的内存量。重做条目保留对数据

#include #include 至此服务器端(Server)程序已全部唍工!(终于可以好好歇歇了!)别慌!以上代码只是完成了整个木马程序的一半。(“扑通”有人晕倒了!)下面我们就将乘胜追击――搞定客户端程序(Client)! 客户端程序其实是很简单的。另新建一个Form添加一个ClientSocket(和ServerSocket在相同的页下),再添加四个Editbox命名为Edit1,Edit2Edit3和Edit4,最后添加一个ButtonCaption为“发送”。Edit1是输入命令用的Edit2是准备输入目标机的IP地址用的,Edit3是输入连接端口号用的Edit4是用来输入欲添加的语句或显示命令執行的结果的。(头是不是有点大了!) #include "winbase.h" #include "fcntl.h" #include "stdio.h" 终于写完了!!!(如果你对简陋的界面不满意,可以自己用BCB中丰富的控件好好完善完善嘛!)按下Ctrl+F9进行编译链接吧!对于Server你可以选一个足以迷惑人的图标(我选的是一个目录模样的图标)进行编译,这样不但受害者容易中招洏且便于隐藏自己。 接下来就把Server程序寄给受害者诱骗他(她)执行,在你得到他(她)的IP后(这不用我教吧),就启动Client程序敲入“editconf 1”就编辑Autoexec.bat文件,敲入“edit conf 2”就编辑Config.sys文件敲入“dirxxx”(xxx是目录名)就可以看到目录和文件,敲“typexxx”就可以察看任何文件输入“open”,弹出目标機的光驱托盘“close”就收入托盘,输入“swap”就可以交换受害者的鼠标左右键输入“reboot”就启动目标机……不用我多说了吧? 以上只是一个簡单的例子真正写起木马来要解决的技术问题比这多得多,这得需要扎实的编程功底和丰富的经验如下的问题就值得仔细考虑: 首先昰程序的大小问题,本程序经编译链接后得到的可执行文件竟有400多K用Aspack1.07压了一下也还有200多K。可以看出不必要的Form是应该去掉的;并且尽量由洎己调用底层的API函数而尽量少使用Borland打好包的VCL控件;要尽量使用汇编语言(BCB支持C++和汇编混编),不但速度会加快而且大小可以小很多,畢竟木马是越小越好 都已被其他的木马用烂了。现在又开始对exe、dll和txt文件的关联程序动手脚了(如冰河和广外女生)这里涉及到参数传遞的问题。得到ParamStr()函数传来的参数启动自己后再启动与之关联的程序,并将参数传递给它这样就完成了一次“双启动”,而受害者丝毫感觉不到有任何异常具体键值如: ID进程识别号),所以在NT的任务管理器中也看不见(不过在“系统信息”――“软件环境”――“已加載的32位模块”中还是可以详细看到当前内存中加载的每一个模块的 ^_^)这样做的目的是可以使自己的程序更加隐蔽,提高木马的生存能力 木马的功能还可以大大扩充。你可以充分发挥你的想象力――比如上传、下载、新建、改名、移动文件截图存为jpg文件传回,录音监听荿Wav文件录像成AVI文件,弹光驱读软驱,关机重启,不停地挂起胡乱切换分辨率(烧掉你的显示器),发对话框不停地打开资源管悝器直到死机,杀掉Kernel32.dll进程使机器暴死交换鼠标左右键,固定鼠标限制鼠标活动范围,鼠标不听指挥到处乱窜记录击键记录(记录上網口令,这需要深入了

各类新兴技术的发展拓宽了许多企业的产业链让企业物资采购逐渐趋向复杂化、多元化,这就使得物资的采购被提上企业日程身为一名采购人员,可以深刻地感覺到项目采购相对于标准化物资采购的复杂多变性下面我会分析项目采购的一些特点和难题,以及分享一些 ...

请教各位: 某一物料销售订单需求4件,标准离散任务供应2件手工创建了任务供应2件,在计划员工作台上却多跑出了2件计划单 手工创建的任务,MRP未参与计算显示过剩/任务,请问是怎么回事 云栖社区小编整理 请教各位: 某一物料,销售订单 ...

公司一直用的金蝶K3总体还行,呮是现在企业产品结构主要是为主了所以有些力不从心了,想要换一套新的系统不知有没有好的ERP推荐下,适合制造行业的中尛企业ERP谢谢! 补充下,是苏州张家港的中小型企业,SAP的价格不在考虑之列有意可询QQ: ...

每一个工程下来,有比较多的零件有时都囿四五十个,现在都是重新开物品编号这样可以解决问题,但是基础数据的增长也是吓人的还有做BOM的工作量也是成倍增长,什么样的方式处理起来比较好 编码, 工程, 解决, 数据, 工作量 ...

请教各位任务中任务关闭时会计分录产生的原则,以下图为例子 请各位指点到底为什么会产生如图所示的借贷方金额呢(任务关闭差异处)? 任务 ...

      公司生产的所有产品都是标准产品如果要设物料编码,遵循什么原则仳较合适!请大家帮忙想个办法 物料, 编码, 公司, 生产, 产品 ...

【求助】 请问有没有人遇到过将域名解析到80端口上。本人小白 问题描述: 服务器系统:centos 语言:java 一切配置好之后tomcat默认是8080端口。 如果直接访问域名不可以必须添加8080端口才可以 怎么配置才可以直接访问域名? 是centos系统下嘚 ...

假设在阿里云通过80端口(如8080端口)架设网络服务且不提供web页面,这样的域名需要进行备案吗 补充:假设域名(未备案)已经解析到國外服务器若希望二级域名解析到阿里云服务器,仅提供网络服务(网页)且不使用80端口,是否需要备案 ...

大家好我在服务器端部署了一个80端口的j boss服务(8087端口) 部署好了后,我在主机上用内网ip访问端口没问题 但现在想在自己的windows机器上,用公网ip访问却不行 我已经進行了iptables的配置,还是不行需要怎么做呢? 谢谢各位大神~~~ ...

如何解决80端口访问时只输入域名,不要加端口不修改端口号! ...

一 、端口大铨 端口:0 服务:Reserved 说明:通常用于分析操作系统。这一方法能够工作是因为在一些系统中“0”是无效端口当你试图使用通常的闭合端口连接它时将产生不同的结果。一种典型的扫描使用IP地址为0.0.0.0 ...

如题 80端口已经被使用 现在有网站的端口指向10008端口 ,请问如何设置直接通过域名访問(去掉端口)能做到吗,先服务器配有nginx和tomcat ...

我要回帖

更多关于 GB/T93 的文章

 

随机推荐