Authorized users only. All activity may be monitored and reported.

Authorized users only. All activity may be monitored and reported. Directory: /home/oracle 如出现如上问题,是由于系统做了安全加固,要求为: 用户通过网络或者本地成功登录系统后,显示一些警告信息。 修改的方法是: 修改文件/etc/motd的内容,如没有该文件,则创建它。 #echo "Authorized users only. All activity may be monitored and reported " > /etc/motd 可根据实际需要修改该文件的内容。 验证方法: 1.使用telnet或者SSH登录该服务器 2.预期结果:登录成功后显示文件/etc/motd中的内容  转载于:https://www.cnblogs.com/Rainbow-G/p/4080056.html

内存溢出与内存泄露的区别

内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。 内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。 memory leak会最终会导致out of memory! 内存溢出就是你要求分配的内存超出了系统能给你的,系统不能满足需求,于是产生溢出。 内存泄漏是指你向系统申请分配内存进行使用(new),可是使用完了以后却不归还(delete),结果你申请到的那块内存你自己也不能再访问(也许你把它的地址给弄丢了),而系统也不能再次将它分配给需要的程序。一个盘子用尽各种方法只能装4个果子,你装了5个,结果掉倒地上不能吃了。这就是溢出!比方说栈,栈满时再做进栈必定产生空间溢出,叫上溢,栈空时再做退栈也产生空间溢出,称为下溢。就是分配的内存不足以放下数据项序列,称为内存溢出. 以发生的方式来分类,内存泄漏可以分为4类: 1. 常发性内存泄漏。发生内存泄漏的代码会被多次执行到,每次被执行的时候都会导致一块内存泄漏。 2. 偶发性内存泄漏。发生内存泄漏的代码只有在某些特定环境或操作过程下才会发生。常发性和偶发性是相对的。对于特定的环境,偶发性的也许就变成了常发性的。所以测试环境和测试方法对检测内存泄漏至关重要。 3. 一次性内存泄漏。发生内存泄漏的代码只会被执行一次,或者由于算法上的缺陷,导致总会有一块仅且一块内存发生泄漏。比如,在类的构造函数中分配内存,在析构函数中却没有释放该内存,所以内存泄漏只会发生一次。 4. 隐式内存泄漏。程序在运行过程中不停的分配内存,但是直到结束的时候才释放内存。严格的说这里并没有发生内存泄漏,因为最终程序释放了所有申请的内存。但是对于一个服务器程序,需要运行几天,几周甚至几个月,不及时释放内存也可能导致最终耗尽系统的所有内存。所以,我们称这类内存泄漏为隐式内存泄漏。 从用户使用程序的角度来看,内存泄漏本身不会产生什么危害,作为一般的用户,根本感觉不到内存泄漏的存在。真正有危害的是内存泄漏的堆积,这会最终消耗尽系统所有的内存。从这个角度来说,一次性内存泄漏并没有什么危害,因为它不会堆积,而隐式内存泄漏危害性则非常大,因为较之于常发性和偶发性内存泄漏它更难被检测到 转载于:https://www.cnblogs.com/fatfatdachao/p/3679037.html

外连接(OUTER JOIN)

9.3.4 外连接(OUTER JOIN) 不管是内连接还是带WHERE子句的多表查询,都组合自多个表,并生成结果表。换句话说,如果任何一个源表中的行在另一个源表中没有匹配,DBMS将不把该行放在最后的结果表中。 而外连接告诉ODBC生成的结果表,不仅包含符合连接条件的行,而且还包括左表(左外连接时)、右表(右外连接时)或两个边接表(全外连接)中的所有数据行。 SQL的外连接共有3种类型:左外连接,关键字为LEFT OUTER JOIN、右外连接,关键字为RIGHT OUTER JOIN和全外连接,关键字为FULL OUTER JOIN。外连接的用法和内连接一样,只是将INNER JOIN关键字替换为相应的外连接关键字即可。 说明 使用外连接时,关键字OUTER是可选的,如可用LEFT JOIN替代LEFT OUTER JOIN。 下面分别介绍一下这几种外连接方式。 1.左外连接 左外连接,LEFT OUTER JOIN,告诉DBMS生成的结果表中,除了包括匹配行外,还包括JOIN关键字(FROM子句中)左边表的不匹配行。左外连接实际上可以表示为: 左外连接 = 内连接 + 左边表中失配的元组 其中,缺少的右边表中的属性值用NULL表示。图9.17给出了典型的左外连接示意图。 图9.17 左外连接 实例11 左连接STUDENT表和COURSE表 左连接STUDENT表和COURSE表,查询所有同学的学号、姓名、课程代码、课程名称、考试时间和成绩信息。实例代码: SELECT S.SNO, SNAME, S.CNO, CNAME, CTEST, MARKFROM STUDENT AS SLEFT OUTER JOIN COURSE AS CON S. CNO = C. CNOORDER BY SNAME 运行结果如图9.18所示。 可见,最终得到的结果表中,除了包括两个表匹配的行(3~20行),还包括了左边表STUDENT中的不匹配行(1、2行),缺少的右边表,即COURSE表中的属性值用NULL表示。 技巧 在SQL Server中,可以在WHERE子句中使用“*=”符号实现左外连接。 图9.18 左连接STUDENT表和COURSE表的查询结果 在WHERE子句,使用“*=”符号实现左外连接实现上例,代码如下。 SELECT S.SNO, SNAME, S.CNO, CNAME, CTEST, MARKFROM STUDENT AS S, COURSE AS CWHERE S.

Unity3d 多线程、多并发网络解决方案(C#)

此方案和结构在多线程多并发大吞吐下有绝对的效率优势 以下是服务端 vs2012 C# using System; using System.IO; using System.ComponentModel; using System.Collections; using System.Collections.Generic; using System.Diagnostics; using System.Net; using System.Net.Sockets; using System.Threading; using Tools; using GameDates; namespace TestServer { /// <summary> /// MyTcpIpClient 提供在Net TCP_IP 协议上基于消息的服务端 /// </summary> public class MyTcpIpServer : System.ComponentModel.Component { private int bufferSize=2048; private string tcpIpServerIP="127.0.0.1"; private int tcpIpServerPort=11000; private Socket listener=null; private ManualResetEvent allDone = new ManualResetEvent(false); private ManualResetEvent sendDone = new ManualResetEvent(false); private Thread thread=null; public static List<StateObject> StateList = new List<StateObject>(); private void StartListening() { try { listener = new Socket(AddressFamily.

java.sql.SQLException: Unknown type '246 in column 4 of 11 in binary-encoded result set.

当Mysql 5.0表数据类型设计为DECIMAL时,在spring,hibernate项目运行会出现246错误: Unknown type '246 in column 4 of 11 in binary-encoded result set.; nested exception is java.sql.SQLException: Unknown type '246 in column 4 of 11 in binary-encoded result set. 刚开始还以为是程序有问题,后来才知道MYSQL5在decimal 类型有BUG,解决方法是更改数据类型。 java.sql.SQLException: Unknown type '246 in column 0 of 1 in binary-encoded result set这个异常容易出现在对Bigint字段的操作上。使用的mysql-connector-java-3.1.7-bin.jar,是属于mysql的一个bug。 解决办法:使用mysql-connector-java-3.0.17-bin.jar就没有问题了,而且目前好象只有这个版本无此bug。 另外:在mysql-connector-java-3.1.7-bin.jar下 session.createSQLQuery("select sum(bigintField) from tableName").uniqueResult() 返回BigInteger 类型的对象。 在mysql-connector-java-3.0.17-bin.jar下 session.createSQLQuery("select sum(bigintField) from tableName").uniqueResult() 返回String 类型的对象。 转载于:https://www.cnblogs.com/means-sisy/p/3666735.html

处理器体系结构(了解CPU的基本运行原理)——《深入理解计算机系统》

处理器体系结构 ISA 一个处理器支持的指令和指令的字节级编码称为它的指令集体系结构ISA。 虽然每个厂商制造的处理器性能和复杂性不断提高,但是不同型号在ISA级别上都保持着兼容。因此,ISA在编译器编写者和处理器设计人员之间提供了一个概念抽象层。 这个概念抽象层即ISA模型:CPU允许的指令集编码,且顺序地执行指令,也就是先取出一条指令,等到她执行完毕,再开始下一条。然而,现代处理器的实际工作方式可能跟ISA隐含的计算模型大相径庭。通过同时处理多条指令的不同部分,处理器可以获得较高的性能。但其必须对外表现出符合ISA模型的执行结果。 在计算机科学中,用巧妙的方法在提高性能的同时,又保持一个更简单、更抽象模型的功能,这种思想是众所周知的(抽象)。 CPU硬件简介 大多数现代电路设计都是用信号线上的高电压和低电压来表示不同的位值。 要实现一个数字系统需要三个主要的组成部分: ①计算对位进行操作的函数的组合逻辑(ALU) ②存储位的存储器元素(寄存器) ③控制存储器元素更新的时钟信号 逻辑门是数字电路的基本计算元素,它们产生的输出,等于它们输入位值的某个布尔函数。 将很多逻辑门组合成一个网,就能构建计算块,称为组合电路。(相当于一个表达式) 算术/逻辑单元(ALU)是一种很重要的组合电路,这个电路有三个输入:两个数据输入及一个控制输入。根据控制输入的设置,电路会对数据输入执行不同的算术或逻辑操作。 存储器和时钟 组合电路从本质上讲,不存储任何信息。它们只是简单地响应输入信号,产生等于输入的某个函数的输出。为了产生时序电路,也就是有状态并且在这个状态上进行计算的系统,我们必须引入按位存储信息的设备。 存储设备都是由同一个时钟控制,时钟是一个周期性信号,决定了什么时候要把新值加载到设备中。 大多数时候,寄存器都保持在稳定状态(用x表示),产生的输出等于它的当前状态。信号沿着寄存器前面的组合逻辑传播,这时,产生了一个新的寄存器输入(用y表示),但只要时钟是低电位的,寄存器的输出就仍然保持不变。当时钟变成高电位的时候,输入信号才加载到寄存器中,成为下一个状态y,直至下一个时钟的上升沿。 寄存器是作为电路不同部分中的组合逻辑之间的屏障。每当每个时钟到达上升沿时,值才会从寄存器的输入传送到输出。 寄存器文件(通用寄存器组成的逻辑块) 有两个读端口,还有一个写端口。电路可以读两个程序寄存器的值,同时更新第三个寄存器的状态。每个端口都有一个地址输入,表明选择哪个程序寄存器。 虽然寄存器文件不是组合电路,因为它有内部存储。不过,从寄存器文件读数据就好像它是一个以地址为输入、数据为输出的一个组合逻辑块。 指令编码 指令集的一个重要性质就是字节编码必须有唯一的解释。任意一个字节序列要么是一个唯一的指令序列的编码,要么就不是一个合法的字节序列。因为每条指令的第一个字节有唯一的代码和功能组合,给定这个字节,我们就可以决定所有其他附加字节的长度和含义。 每条指令需要1——6个字节不等,这取决于需要哪些字段。每条指令的第一个字节表明指令的类型:高4位是代码部分(例:6为整数类操作指令),低4位是功能部分(例:1为整数类中的减法指令) 61合起来即为sub指令。 处理一条指令的序列: 取指(fetch) 取值阶段从存储器读取指令字节,放到指令存储器(CPU中)中,地址为程序计数器(PC)的值。 它按顺序的方式计算当前指令的下一条指令的地址(即PC的值加上已取出指令的长度) 译码(decode) ALU从寄存器文件(通用寄存器的集合)读入最多两个操作数。(即一次最多读取两个寄存器中的内容) 执行(execute) 在执行阶段会根据指令的类型,将算数/逻辑单元(ALU)用于不同的目的。对其他指令,它会作为一个加法器来计算增加或减少栈指针,或者计算有效地址,或者只是简单地加0,将一个输入传递到输出。 条件码寄存器(CC)有三个条件位。ALU负责计算条件码新值。当执行一条跳转指令时,会根据条件码和跳转类型来计算分支信号cnd。 访存(memory) 访存阶段,数据存储器(CPU中)读出或写入一个存储器字。指令和数据存储器访问的是相同的存储器位置,但是用于不同的目的。 写回(write back) 写回阶段最多可以写两个结果到寄存器文件。寄存器文件有两个写端口。端口E用来写ALU计算出来的值,而端口M用来写从数据存储器中读出的值。 更新PC(PC update) 根据指令代码和分支标志,从前几步得出的信号值中,选出下一个PC的值。 我们以SEQ(sequential 顺序的)处理器为例讲解CPU的基本原理。每个时钟周期上,SEQ执行处理一条完整指令所需的所有步骤。不过这需要一个很长的时钟周期时间,因此时钟周期频率会低到不可接受。 SEQ的时序 组合逻辑不需要任何时序或控制——只要输入变化了,值就通过逻辑门网络传播。 我们也将读随机访问存储器(寄存器文件、指令存储器和数据存储器)看成和组合逻辑一样的操作。(写随机访问存储器需要等待高电平) 由于指令存储器只用来读指令,因此我们可以将这个单元看成是组合逻辑。(内存向指令存储器中写指令是CPU外部的事件 不属于CPU内的时序) 每个时钟周期,程序计数器都会装载新的指令地址。 只有在执行整数运算指令时,才会装载条件码寄存器。 只有在执行mov、push、call指令时,才会写数据存储器。 要控制处理器中活动的时序,只需要寄存器和存储器的时钟控制。 因为指令运行计算的结果,写入寄存器或存储器中。 我们可以把取指、译码、执行等过程看做是组合逻辑的处理过程(因为它们不涉及写入寄存器)。把写回看做是另一个过程。 则整个过程可简化为下图所示: 【举例详解】 有如下指令: 0x000 : irmovl $0x100, %ebx 0x006 : irmovl $0x200, %edx

Celery(bind=True) 修饰实例方法和类方法时怎么传参, self问题.

不用filter=task_method时,实例(self)不会自动传入。 只有bind=True时, task对象会作为第一个参数自动传入。 加上filter=task_method参数,实例(self)会作为第一个参数自动传入。 加上filter=task_method, bind=True, task对象会作为第一个,实例(self)会作为第二个参数自动传入。 所以,最佳调用方式应为: from celery.contrib.methods import task_method class A(object): def __init__(self): object.__init__(self) self.a = 1 self.b = 2 @app.task(bind=True, filter=task_method) def test1(task_self, self, a, b): print a print b return a+b+self.a+self.b 或: from celery.contrib.methods import task_method class A(object): def __init__(self): object.__init__(self) self.a = 1 self.b = 2 @app.task(filter=task_method) def test1(self, a, b): print a print b return a+b+self.a+self.b

shell脚本接收来自命令行传入的参数:

第一个参数用$1表示,第二个参数用$2表示,以此类推。。 写一个简单的传参数脚本来测试: #!/bin/bash if [ $1 =="start" ] then echo"do start" elif [ $1 =="stop" ] then echo"do stop" else echo "Pleasemake sure the positon variable is start or stop." fi 保存为test.sh 执行 ./test.sh start或./test.sh stop awk的结果如何写入数组中: 写了一个简单的功能: B=(`awk '/insert overwrite table/ {print $4}' $1`) echo ${B[1]} echo ${#B[@]} 输出数组元素个数 如何在变量中定义双引号: 用单引号 lstr='tblist="1111"' echo $lstr tblist="1111" grep获取行号: grep -nw "k=0" automan.sh if判断: ?b当file存在并且是块文件时返回真 -c 当file存在并且是字符文件时返回真 -d 当pathname存在并且是一个目录时返回真 -e 当pathname指定的文件或目录存在时返回真

Unknown type '246 in column 3 of 5 in binary-encoded result set

Unknown type '246 in column 3 of 5 in binary-encoded result set 是不是用sum函数的时候报错了,那你来对地方了 这个查了一下据说是mysql的bug,只有在3.0.17的包里有,但是你的value是varchar类型的,所以sum出来没问题,但是要sum int类型的就会出这个错 刚刚把左右int类型的都改成varchar类型的,就没问题了 转载于:https://www.cnblogs.com/MartinLi841538513/p/3624408.html

error LNK2005: "public: void __thiscall std::basic_ofstream<char,struct std::char_traits<char>

>osgDBd.lib(osg80-osgDBd.dll) : error LNK2005: "public: void __thiscall std::basic_ofstream<char,struct std::char_traits<char> >::`vbase destructor'(void)" (??_D?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXXZ) 已经在 PointChoose.obj 中定义 1>osgDBd.lib(osg80-osgDBd.dll) : error LNK2005: "public: void __thiscall std::basic_ofstream<char,struct std::char_traits<char> >::close(void)" (?close@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXXZ) 已经在 PointChoose.obj 中定义 1>osgDBd.lib(osg80-osgDBd.dll) : error LNK2005: "public: void __thiscall std::basic_ofstream<char,struct std::char_traits<char> >::open(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,int,int)" (?open@?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAEXABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@2@HH@Z) 已经在 PointChoose.obj 中定义 1>osgDBd.lib(osg80-osgDBd.dll) : error LNK2005: "public: __thiscall std::basic_ofstream<char,struct std::char_traits<char> >::basic_ofstream<char,struct std::char_traits<char> >(void)" (??0?$basic_ofstream@DU?$char_traits@D@std@@@std@@QAE@XZ) 已经在 PointChoose.obj 中定义 1>osgDBd.lib(osg80-osgDBd.dll) : error LNK2005: "public: void __thiscall std::basic_ofstream<char,struct std::char_traits<char> >::open(char const *,int,int)"

Linux 下网络性能优化方法简析

概述 对于网络的行为,可以简单划分为 3 条路径:1) 发送路径,2) 转发路径,3) 接收路径,而网络性能的优化则可基于这 3 条路径来考虑。由于数据包的转发一般是具备路由功能的设备所关注,在本文中没有叙述,(在 Linux 内核中,分别使用了基于哈希的路由查找和基于动态 Trie 的路由查找算法)。本文集中于发送路径和接收路径上的优化方法分析,其中的 NAPI 本质上是接收路径上的优化,但因为它在 Linux 的内核出现时间较早,而它也是后续出现的各种优化方法的基础,所以将其单独分析。 最为基本的 NAPI NAPI 的核心在于:在一个繁忙网络,每次有网络数据包到达时,不需要都引发中断,因为高频率的中断可能会影响系统的整体效率,假象一个场景,我们此时使用标准的 100M 网卡,可能实际达到的接收速率为 80MBits/s,而此时数据包平均长度为 1500Bytes,则每秒产生的中断数目为: 80M bits/s / (8 Bits/Byte * 1500 Byte) = 6667 个中断 /s 而如果按照 64Bytes 的小包计算则更多。每秒 6667 个中断,对于系统是个很大的压力,此时其实可以转为使用轮询 (polling) 来处理,而不是中断;但轮询在网络流量较小的时没有效率,因此低流量时,基于中断的方式则比较合适,这就是 NAPI 出现的原因,在低流量时候使用中断接收数据包,而在高流量时候则使用基于轮询的方式接收。 现在内核中 NIC 基本上已经全部支持 NAPI 功能,由前面的叙述可知,NAPI 适合处理高速率数据包的处理,而带来的好处则是: 1. 中断缓和 (Interrupt mitigation),由上面的例子可以看到,在高流量下,网卡产生的中断可能达到每秒几千次,而如果每次中断都需要系统来处理,是一个很大的压力,而 NAPI 使用轮询时是禁止了网卡的接收中断的,这样会减小系统处理中断的压力 2. 数据包节流 (Packet throttling),NAPI 之前的 Linux NIC 驱动总在接收到数据包之后产生一个 IRQ,接着在中断服务例程里将这个 skb 加入本地的 softnet,然后触发本地 NET_RX_SOFTIRQ 软中断后续处理。如果包速过高,因为 IRQ 的优先级高于 SoftIRQ,导致系统的大部分资源都在响应中断,但 softnet 的队列大小有限,接收到的超额数据包也只能丢掉,所以这时这个模型是在用宝贵的系统资源做无用功。而 NAPI 则在这样的情况下,直接把包丢掉,不会继续将需要丢掉的数据包扔给内核去处理,这样,网卡将需要丢掉的数据包尽可能的早丢弃掉,内核将不可见需要丢掉的数据包,这样也减少了内核的压力 对 NAPI 的使用,一般包括以下的几个步骤: 1.

【转】.NET引用Excel操作时无法关闭Excel.exe进程的解决方法

 http://blog.csdn.net/hsyj_0001/article/details/7686364 在使用Office类库Microsoft.Office.Interop.Excel导入导出Excel文件操作后,即使调用Application的Quit()函数还是无法关闭Excel进程,在资源管理器中还是存在。 查询一些网上资料该问题终于解决了。具体步骤如下: 1.创建Excel的Application对象 2.获取Application的Workbooks对象集合 3.添加一个工作薄Workbook对象 4.获取该工作薄中的一个Worksheet对象 5.对该Worksheet对象中的Range对象进行操作。 6.调用Workbook对象的Save或SaveAs函数,保存工作簿 7.调用Workbook对象的Close函数,关闭该工作簿 8.调用Application对象的Quit函数,关闭整个Excel程序。 一般到这一步大家都以为处理结束,Excel进程会结束,但实际运行时,即使关闭整个应用程序Excel进程也不会关闭。在网上会见到一些解决方法枚举系统中所有的Excel进程,然后将其逐个杀死,但是这样可能会误杀一些用户开启的Excel进程。 其实,没有退出Excel进程的原因只是由于一些资源没有释放,所以必须要手动释放这些资源,并且要显式调用垃圾回收GC进行垃圾回收。只需要在以上第8步之后,增加一下操作。 9.调用System.Runtime.InteropServices.Marshal.ReleaseComObject依次释放Range、Worksheet、Workbook、Workbooks和Application对象。 10.调用GC的垃圾回收方法。 以上操作的代码如下: private void button1_Click(object sender, EventArgs e) { String str = @"测试数据"; // 1.启动Excel进程 Microsoft.Office.Interop.Excel.Application excelApp = new Microsoft.Office.Interop.Excel.Application(); excelApp.Visible = false; // 2.获取Workbooks对象 Workbooks wbs = excelApp.Workbooks; // 3.添加工作薄Workbook对象 Workbook wb = wbs.Add(); // 4.获取第一个工作表Workbook Worksheet ws = (Worksheet)wb.Worksheets.Item[1]; // 5.获取单元格并设置文本 Range rng = (Range)ws.Cells[1, 1]; rng.Value = str; rng = (Range)ws.Cells[2, 1]; rng.

.NET 页面间传值的几种方法

1. QueryString 这是最简单的传值方式,但缺点是传的值会显示在浏览器的地址栏中且不能传递对象,只适用于传递简单的且安全性要求不高的数值。 传递: location.href="WebForm2.aspx?name=" + yourName ; 接收: string name = Request.QueryString["name"]; 2. Form 传递: 根据表单内控件的name和value传递,如: <form id="form1" method="post"> <input type="text" name="name" value="xxx" /> </form> 表单需要被提交<input type="submit" /> 或者 document.getElementById("form1").submit(); 接收: string name = Request.Form["name"]; 3. Session 需要注意的是在Session变量存储过多的数据会消耗比较多的服务器资源,在使用session时应该使用一些清理动作来去除一些不需要的session。 移除: Session.Remove("name"); 传递: Session["name"] = yourName; 接收: string name=Session["name"].ToString(); 4. Cookie 传递: HttpCookie cookie_name = new HttpCookie("name"); cookie_name.Value = yourName; Response.AppendCookie(cookie_name); 接收: Request.Cookies["name"].Value; 5. Application Application对象的作用范围是整个全局,也就是说对所有用户都有效。其常用的方法用Lock和UnLock。 传递: Application["name"] = name;

“Internet连接共享访问被启用时,出现了一个错误” 解决方法 .

ctrl+r 运行 services.msc 找到 Windows Firewall 启动。就行了 在运行窗口输入"regedit"打开注册表,转到“HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasMan\”表项下 ,然后左键点中“ DependOnService ”,在右边窗口里显示的项目中找到“ DependOnService ” ,双击会弹出一个 “编辑多字符串”窗口,删除此窗口里数值数据中的“ SstpSvc ”,再点击“确定”。 关闭注册表后重启电脑。 如果还不成功,到C:\Windows\system32\路径下找到:logfile 和 wbem 这两个文件夹, 取得管理员权限。

VS2010下编译oRTP-0.22.0

1. 从http://download.savannah.gnu.org/releases/linphone/ortp/sources/下载ortp-0.22.0.tar.gz 2. 解压ortp-0.22.0.tar.gz 3. 在VS2010中新建解决方案oRTP 4. 从目录ortp-0.22.0\build\vsx\oRTP\oRTP导入工程oRTP.vcxproj 5. 打开工程oRTP的属性,选"配置属性"->"常规"->"平台工具集",把"v110"改为"v100" 6. 点击"生成oRTP" 最终生成oRTP.dll和oRTP_dll.lib。

GUID和UUID、CLSID、IID 区别及联系

原文摘抄自:GUID和UUID、CLSID、IID 区别及联系 当初微软设计com规范的时候,有两种选择来保证用户的设计的com组件可以全球唯一: 第一种是采用和Internet地址一样的管理方式,成立一个管理机构,用户如果想开发一个COM组件的时候需要向该机构提出申请,并交一定的费用。 第二种是发明一种算法,每次都能产生一个全球唯一的COM组件标识符。 第一种方法,用户使用起来太不方便,微软采用第二种方 法,并发明了一种算法,这种算法用GUID(Globally Unique Identifiers)来标识COM组件,GUID是一个128位长的数字,一般用16进制表示。算法的核心思想是结合机器的网卡、当地时间、一个随即 数来生成GUID。从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义上)3240年不重复。 GUID的例子: 54BF6567--1007--11D1--B0AA--444553540000 HKEY_CLASSES_ROOT/CLSID/{002B9E07-2E10-438F-AF1E-40E6A96F1EE4} 在微软的COM中GUID和UUID、CLSID、IID是一回事,只不过各自代表的意义不同: UUID : 代表COM CLSID :代表COM组件中的类 IID :代表COM组件中的接口 在程序中,实际对象数据对应的处理程序路径string往往不尽相同,比如有的放C盘有的D盘,微软想出了一个解决方案,那就是不使用直接的路径表示方法,而使用一个叫 CLSID的方式间接描述这些对象数据的处理程序路径。 CLSID 其实就是一个号码,CLSID 的结构定义如下: typedef struct _GUID { DWORD Data1; // 随机数 WORD Data2; // 和时间相关 WORD Data3; // 和时间相关 BYTE Data4[8]; // 和网卡MAC相关 } GUID; typedef GUID CLSID; //组件ID typedef GUID IID; // 接口ID #define REFCLSID const CLSID & // 常见的声明和赋值方法 CLSID CLSID_Excel = {0x00024500,0x0000,0x0000,{0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}}; struct __declspec(uuid("

解决PLSQL Developer导出CSV文件数据显示乱码和科学计数法问题

使用PLSQL Developer导出CSV文件格式数据后,用EXCEL打开文件显示是乱码或者长数字串变成了科学计数法。 这并不是导出的CSV文件数据有问题, 如果使用记事本或其他编辑器如EDITPLUS打开文件,会发现数据是正常的。 一、解决显示乱码问题 用EXCEL打开文件显示乱码是因为导出的数据文件的编码格式是UTF-8,而EXCEL默认打开文件的编码格式是UNICODE,编码格式不一致。 解决方法: 1、用记事本或其他编辑器如EDITPLUS打开文件,然后另存为,填写文件名,编码格式选择UNICODE。 2、用EXCEL打开新的文件,即可正常显示。 二、解决科学计数法问题 1、新建EXCEL文件。 2、点击EXCEL菜单中的“数据”->“导入外部数据”->“导入数据”(EXCEL2007点击“数据”->“自文本”),然后选中导出的CSV文件,选择分割符号,下一步,选择逗号,下一步,相应的列选择相应的数据格式(长数字串就选择为文本格式),完成。 3、数据导入完成后,就可以正常显示了。 注意:使用解决科学计数法问题的方法同样可以解决显示乱码问题。

java中File类的使用方法

构造函数 复制代码代码如下: public class FileDemo { public static void main(String[] args){ //构造函数File(String pathname) File f1 =new File("c:\\abc\\1.txt"); //File(String parent,String child) File f2 =new File("c:\\abc","2.txt"); //File(File parent,String child) File f3 =new File("c:"+File.separator+"abc");//separator 跨平台分隔符 File f4 =new File(f3,"3.txt"); System.out.println(f1);//c:\abc\1.txt } } 创建方法 1.boolean createNewFile() 不存在返回true 存在返回false 2.boolean mkdir() 创建目录 3.boolean mkdirs() 创建多级目录 删除方法 1.boolean delete() 2.boolean deleteOnExit() 文件使用完成后删除 复制代码代码如下: import java.io.File; import java.io.IOException; public class FileDemo2 { public static void main(String[] args){

WPF之无法触发KeyDown或者KeyUp键盘事件

有时候我们可能在Panel(StackPanel、Canvas、Grid)上或者是在一些默认不支持Focus的控件上添加了KeyDown或者KeyUp,可是残酷的现实告诉我们,这是无法触发的,怎么办呢,很简单,只需一句代码。 private void MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { Grid1.Focus(); } 也就是在鼠标单击事件中,让容器(或者其他控件)调用Focus方法,使其尝试获得焦点。小伙伴们是不是尝试过后发现还是不行,哈哈哈,那是因为还少了一个步骤,在XAML代码中给容器(控件)设置一个属性即可。 <Canvas x:Name="Grid1" Focusable="True" /> 哈哈,聪明的骚年是不是踩到了,这样就是让控件支持获得焦点。 好了,本文较短,到此结束。 转载于:https://www.cnblogs.com/ListenFly/p/3581735.html

unsigned无符号数减法问题

今天一个QQ群里有人扔出一段代码: #include <stdio.h> float sum_elem(float a[],unsigned length){ int i; float result = 0; for(i=0;i<=length-1;i++){ //printf("test\n"); result+=a[i]; } return result; } int main(){ float a[1]={0.0}; printf("%f",sum_elem(a,0)); return 0; } 看代码的时候,也觉着应该输出a[0],但是编译通过,运行时发生段错误:Segmentation fault (core dumped) 仔细观察觉着问题应该出现在unsigned length身上,将其修改为int类型,就可以输出期望的a[0]了。 然后去检索了下无符号数的减法问题 参考以下链接: http://blog.chinaunix.net/uid-23629988-id-2984353.html http://bbs.csdn.net/topics/300036795 得出结论:无符号数相减的结果仍然是无符号数! 其过程是:先将无符号数转换成有符号数相减,结果再转为无符号数。 所以上面的代码中传递给unsigned length的值为0,减1后,得到一个很大的无符号数。 在for循环中添加一个打印语句,发现打印语句被执行多次后才出现段错误,也说明了上面的结论。

ASP+ACCESS 怎么无法增删改记录

对,如果排除语句有误的情况,就是ACCESS是否有写权限,请检查一下。 对着access数据库文件右击->属性->安全->对users的权限全选打勾 这样即可解决这个问题了.

uint8_t数据类型

在看一些开源c程序时,经常会看到很多不认识的数据类型,比如uint8_t等。咋一看,好像是个新的数据类型,不过C语言里面好像没有这种数据类型啊!怎么又是u又是_t的?很多人有这样的疑问。论坛上就有人问:以*_t结尾的类型是不是都是long型的?在baidu上查一下,才找到答案,这时才发觉原来自己对C掌握的太少。 那么_t的意思到底表示什么?具体的官方答案没有找到,不过我觉得有个答案比较接近。它就是一个结构的标注,可以理解为type/typedef的缩写,表示它是通过typedef定义的,而不是其它数据类型。 uint8_t,uint16_t,uint32_t等都不是什么新的数据类型,它们只是使用typedef给类型起的别名,新瓶装老酒的把戏。不过,不要小看了typedef,它对于你代码的维护会有很好的作用。比如C中没有bool,于是在一个软件中,一些程序员使用int,一些程序员使用short,会比较混乱,最好就是用一个typedef来定义,如: typedef char bool; 一般来说,一个C的工程中一定要做一些这方面的工作,因为你会涉及到跨平台,不同的平台会有不同的字长,所以利用预编译和typedef可以让你最有效的维护你的代码。为了用户的方便,C99标准的C语言硬件为我们定义了这些类型,我们放心使用就可以了。 按照posix标准,一般整形对应的*_t类型为: 1字节 uint8_t 2字节 uint16_t 4字节 uint32_t 8字节 uint64_t 附:C99标准中inttypes.h的内容 00001 /* 00002 inttypes.h 00003 00004 Contributors: 00005 Created by Marek Michalkiewicz <marekm@linux.org.pl> 00006 00007 THIS SOFTWARE IS NOT COPYRIGHTED 00008 00009 This source code is offered for use in the public domain. You may 00010 use, modify or distribute it freely. 00011 00012 This code is distributed in the hope that it will be useful, but 00013 WITHOUT ANY WARRANTY.

OracleMTSRecoveryService无法启动的解决方法

以下安装和测试环境均为win 情况一:oracle安装完成后之后单独启动服务时提示 在本地计算机无法启动OracleMTSRecoveryService服务 错误1:函数不正确 查看注册表中 如果32操作系统: 查看注册表键值: HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\OracleMTSRecoveryService\Protid_0 键Host的内容要和本机名一致。 如果是64位操作系统 同时需要验证键值: HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\ORACLE\OracleMTSRecoveryService\Protid_0 键Host的内容要和本机名一致。 情况二:安装的时候启动不了这个服务 出现这种情况一般是之前曾安装过注册表没有删除干净导致。 运行注册表(cmd-输入regedit),到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services下,找到OracleMTSRecoveryService及OracleRemExecService,查看ImagePath对应路径是否正确,如OracleRemExecService的ImagePath:"C:\Users\yong\AppData\Local\Temp\oraremservice\RemoteExecService.exe"

刀闸和隔离开关以及断路器和负荷开关的区别

刀闸和隔离开关同属刀型开关。无论外形、结构原理、操作方法都很相似。但它们有截然不同之点,必须严格区分。 刀闸是一种最简单的开关电器,用于开断500伏以下电路,它只能手动操作。由于电路开断时常有电弧,所以,装有灭弧装置或快断触头。为了增大灭弧能力,其刀一般都较短。 隔离开关有高压、低压、单极、三极、室内、室外之分,它没有专门的灭弧装置,不能用来接通、切断负荷电流和短路电流,只能在电气线路切断的情况 下,才能进行操作。其主要作用是隔离电源,使电源与停电电气设备之间有一明显的断开点,所以不必考虑灭弧。为了保证可靠地隔离电源,防止过电压击穿或相间闪络,其刀一般做得较长,相间距离也较大。 总之,隔离开关不能当作刀闸使用,而刀闸也只允许在电压不高的情况下用来隔离电路,且必须与熔断器等串联使用。 负荷开关没有欠压脱扣功能,突然长时间停电,不会自动断开电路,也就是说变频器在恢复供电后直接通电启动,鉴于有的变频设置的参数在恢复供电后仍然有效,使电动机自动启动。为防止因工作疏忽而造成安全事故,不支持使用负荷开关代替断路器! 负荷开关是在额定电压和额定电流下,接通和切断高压电路的专用开关。只允许接通和断开负载电流,但不允许断开短路电流。 断路器是用于接通和断开有载或无载线路及电气设备,以及发生短路时,能自动切断故障或重新合闸,能起到控制和保护两方面的作用。

自定义QtCreator添加Ogre新建模板

进入自己的QtCreator目录下,路径: 换成自己的 D:\Qt\Qt5.2.1-vs\Tools\QtCreator\share\qtcreator\templates\wizards 复制多一份hello world 改名为ogre 把wizard_sample.xml 改为 wizard.xml QtCreator 只认这个文件名 打开wizard.xml 找到 <wizard version="1" kind="project" class="qt4project" firstpage="10" id="A.HelloWorld" category="B.CustomProjects"> <icon>console.png</icon> <description>Creates a hello-world-project with custom message.</description> <displayname>Hello World</displayname>; <displaycategory>Custom Projects</displaycategory> <files> <file source="main.cpp" openeditor="true"/> <file source="project.pro" target="%ProjectName%.pro" openproject="true"/> </files> 改为 <wizard version="1" kind="project" class="qt4project" firstpage="10" id="A.HelloWorld" category="B.CustomProjects"> <icon>qtogre.png</icon> <description>Creates a ogre-project.</description> <displayname>ogre</displayname>; <displaycategory>Custom Projects</displaycategory> <files> <file source="main.cpp" openeditor="true"/> <file source="ogreview.cpp" openeditor="true"/> <file source="ogreview.h" openeditor="true"/> <file source="project.pro" target="%ProjectName%.pro" openproject="true"/> </files> project.

<zz>计算机视觉和模式识别领域SCI期刊介绍

原帖地址: http://blog.sciencenet.cn/blog-370458-750306.html 关于计算机视觉和模式识别领域的期刊并不是很多,下面我收集了一些该领域的代表性期刊,并介绍了他们的影响因子以及投稿难度和审稿周期。希望对大家有帮助吧,后期大家还有发现的可以留言,补充哦。 首先介绍计算机视觉领域的4个顶级代表性期刊吧。 (1) IEEE Transactions on Pattern Analysis and Machine Intelligence,IEEE模式分析与机器智能汇刊,简称PAMI,是IEEE最重要的学术性汇刊之一。在各种统计中,PAMI被认为有着很强的影响因子(2011年影响因子为4.9)和很高的排名。显然,这个期刊的中稿难度那是相当的大,一般先投中CVPR之后再加点东西投该期刊会比较好中一点。 (2) ACM Transactions on Graphics。美国计算机协会图形汇刊,简称TOG,该刊侧重于计算机图形的处理,影响因子在该领域也比较高,2011年为3.5。中稿的难度也极大,一般该刊对每年的SIGGRAPH(Special Interest Group for Computer GRAPHICS,计算机图形图像特别兴趣小组)会议论文全文收录。 (3) International Journal of Computer vision,该刊也是该领域的顶级期刊之一,相比于PAMI来讲,该刊侧重于理论的推导。2011年影响因子为3.7,中稿难度也相当大。 (4) IEEE Transactions on Image Processing,该刊也是图像处理领域的代表性期刊之一,相比于上面三个期刊来讲,该刊稍微低一点层次。2011年影响因子为3.042,中稿难度也比较大。审稿周期一年左右。 除了上述让人望而生畏的顶级期刊之外,我们再看看一般的期刊吧。 (1)Pattern recognition letters, 从投稿到发表,一年半时间; (2)Pattern recognition 不好中,时间长; (3)IEICE Transactions on Information and Systems, 作者中有一个必须是会员。收费高,审稿快。影响因子0.4; (4)International Journal of Pattern Recognition and Artificial Intelligence , 审稿周期一般6--12周,影响因子偏低,容易中; (5)Computational Intelligence, 中等偏上,要求较高,杂志级别不错,关注人数偏少,比较冷门; (6)information processing letters, 影响因子低0.5左右,接搞量大,容易发表,审稿周期一般3--6个月; (7)Computer vision and image understanding, 9个月审稿期,平均投稿命中率20%,业内比较认可;

c++ 多线程编程基础

原文地址:http://blog.csdn.net/lzx_bupt/article/details/6910503 c/c++: 多线程编程基础讲解(一) 利用几篇文章简单记录下c与c++多线程编程基础入门的东西,每篇一个程序来记录,备忘。这些章节是由浅入深组织的,赖死狗! 在注释中讲吧,佛楼米! [cpp] view plain copy #include <iostream> #include <pthread.h>//头文件是必须的,符合posix标准使程序可移植众多平台 using namespace std; #define NUM_THREADS 5 void* say_hello(void* args)//线程的运行函数,必须void*,没说的表示返回通用指针、输入通用指针 { cout << "hello..." << endl; } int main() { pthread_t tids[NUM_THREADS];//定义线程的id变量,多个变量可以声明为数组使用 for(int i = 0; i < NUM_THREADS; ++i) { int ret = pthread_create(&tids[i], NULL, say_hello, NULL);//参数依次是:创建的线程id,线程参数,调用函数名,传入的函数参数 if (ret != 0) { cout << "pthread_create error: error_code=" << ret << endl; } } pthread_exit(NULL);//等各个线程退出后,进程才结束,否则进程强制结束了,线程可能还没反应过来; } 编译命令:

一步一步教你怎么编译GNU ARM GCC 交叉编译器arm-none-eabi-gcc

一步一步教你怎么编译GNU ARM GCC 交叉编译器arm-none-eabi-gcc Step by step teaching you how to build a GNU ARM GCC cross compiler 首先,对于编译器这东西,我一向认为很高深,当然现在还是这么认为,呵,所以呢,一般都是用别人编译好的现成的编译好版本。可是最近因为要在windows下面编译u-boot的原因,因为找不到合适的arm编译器,故只能自己编译一个了。下面就是整个的编译过程,一步步来吧。 在开始之前,还要说明一点,这里所编译的gnu arm gcc 编译器,运行时是依赖于cygwin的,而且这也是我所需要的,至于为什么,请看我的另一篇:如何实现在windows下面编译u-boot,里面已经说了详细的原因。如果你不想依赖于cygwin,那请直接用yagarto,或其他的windows版本的gnu arm gcc吧。 1. 确定要编译arm编译器的类型和版本,下载合适的编译器源文件和库源文件 (1)类型:arm-none-eabi-gcc (2)版本:Binutils-2.22,Newlib-1.20.0,GCC-4.7.1,GDB-7.4.1,insight-6.8.1 嘿嘿,这个版本的问题,我参考了yagarto 还有一些其他的版本,yagarto 用Eclipse + CDT作为代码编辑和调试的前端,所有没有编insight-6.8.1,我这时是编了,如果你不需要用insight来作为调试的前端,你也不用编,只编前面四个就可以了。 (3)下载所要的源文件: Binutils-2.22: 官网:http://www.gnu.org/software/binutils/ 下载地址:http://ftp.gnu.org/gnu/binutils/binutils-2.22.tar.bz2 Newlib-1.20.0: 官网:http://sourceware.org/newlib/ 下载地址:http://nchc.dl.sourceforge.net/project/devkitpro/sources/newlib/newlib-1.20.0.tar.gz 也可以通过CVS来获得: cvs -z 9 -d :pserver:anoncvs@sources.redhat.com:/cvs/src login {enter "anoncvs" as the password} cvs -z 9 -d :pserver:anoncvs@sources.redhat.com:/cvs/src co newlib GCC-4.7.1: 官网:http://gcc.gnu.org/ 下载地址:http://www.netgull.com/gcc/releases/gcc-4.7.1/gcc-4.7.1.tar.bz2 GDB-7.4.1: 官网:http://www.gnu.org/software/gdb/ 下载地址:http://ftp.gnu.org/gnu/gdb/gdb-7.4.1.tar.bz2 insight-6.8.1: 官网:http://sourceware.org/insight/ 下载地址:ftp://sourceware.org/pub/insight/releases/insight-6.8-1.tar.bz2

【D3相关资料整理】持续更新中......

写在前面的话: 我一直在搜索D3的资料 也是不断在学习 我自己学习的时候感觉资料很少很痛苦 所以就不希望别人也这么痛苦了 我把我找到过的资料都分享一下,希望对您有帮助,如果你有新的资料可以给我留言 资料太多不方便看的话看目录吧 \(^o^)/~ 主要资料 [1] 官方API文档。 学习和使用D3 的一手资料。除了文档之外还有一些代码示例。 https://github.com/mbostock/d3/wiki/API-Reference [2] Stackoverflow。 很多难以理解的API 可以在这找到答案。http://stackoverflow.com/search?q=d3 [3] D3 开发者Mike Bostock 的博客。 包含大量在线示例。介绍了很多D3 的编程技巧,讲解了部分API 的使用,还探讨了许多 使用D3 会遇到的问题的解决方案。http://bl.ocks.org/mbostock [4] D3 开发者Jason Davies 的个人网站。 包含很多在线示例。涉及一些API 的形象解释。扩展了D3 的地理投影。讲解了很多D3 的实现原理如贝塞尔曲线的动态演示等。还有一些像词云这样的实用插件。 https://www.jasondavies.com/ [5] 2000 多个D3 在线案例汇总。 作者收集的这些可视化案例大都可以在线运行,并且已经按照类别组织好,可以通过关键 词来筛选案例。http://christopheviau.com/d3list/gallery.html [6] D3 官方教程。 教程包含图书、博客、幻灯片等各种资料。https://github.com/mbostock/d3/wiki/Tutorials [7] 数据可视化工具汇总。 数据可视化技术选型的重要参考资料。包含50 多种流行的数据可视化工具的开源协议, 主页,文档,案例等资源的简单介绍,这些工具包括著名的D3.js,R,Gephi,Raphaël, Processing.js,Tableau Public,Google Chart Tools,Arbor.js 等工具。 http://selection.datavisualization.ch/ [8] SVG 在线教程。 讲解SVG 的基本功能,案例都可以在线演示。http://tutorials.jenkov.com/svg/index.html [9] 《数据可视化实战(使用D3 设计交互式图表)》。 Scott Murray 著,李松峰译。这本书写得浅显易懂,是入门D3 的经典书籍。其中也有涉及 一些API 的简要介绍。

study list

一. TCP 2. ss 指令 3. 定时器 二. epoll 三. 四. 正向/反向代理 + Nginx 五. 路由协议 六. sendfile & splice http://hi.baidu.com/widebright/item/f2e98bcb64239e46a9ba948e

Red Hat Enterprise linux 6中文输入法

好久没用Linux了,今天又装了一个red hat enterprise linux 6.0,现在已经到6.X版本了,上次用的时候还是5.4呢,装好之后找不见中文输入法,半天没弄出来,上网搜了一下,很多人都说安装一个小企鹅输入法、或者把系统语言设置成中文,可是我不想把系统设置成中文,就想用英文的,我想系统肯定有,肯定是我没打开,后来找了一下,终于发现了,很简单啊。 打开System-Preference-Input Method,打开输入法编辑框 里面有两个系统自带的输入法框架,我用的就是第一个,点击Input Method Preferences General下面又输入法的打开方式和切换方式,打开和关闭方式就是Control+Space,切换方式就是Alt+Shift,可以点击后面的按钮修改快捷方式,(修改方法,按住按钮释放即可,系统自动抓取) 在Input Method下面可以添加输入法,在Select an input method 下拉列表中选择Chinese-拼,然后点击右侧Add按钮即可。 关闭对话框,Control+Space,就可以打开中文输入法了。右上角“拼”。

重新理解“充要条件”

什么是充要条件? 从字面上看,充要条件即充分必要条件。那“充分”和“必要”又包含什么样的含义呢? 先来说明一下什么是“充分”。举个例子,我们说“男人会长胡子”。这里就可以说“男人”是“会长胡子”的充分条件。再来看一下什么是“必要”。继续看“男人会长胡子”这句话。我们说“会长胡子”是“男人”的必要条件。很显然,如果一个人不长胡子,那他就一定不是男人,所以说“会长胡子”是必要的。那什么是“充分且必要”呢?还是刚才的例子,“会长胡子”的一定是“男人“吗?这不一定,猫也长胡子,所以是”会长胡子“对于是”男人“而言,是不充分的。但是,如果我们说”会长胡子的人“是”男人“,这应该没有人会置疑。因为,”会长胡子“并且是个”人“,这是”男人“的充分必要条件。 我们将上面的内容作一些抽象: 如果说,由A这个条件可以推出B这个结论,则A是B的充分条件,B是A的必要条件;如果说,由B这个条件可以推出A这个结论,则B是A的充分条件,A是B的必要条件;如果说,既可以由A推出B,又可以由B推出A,那么A和B互为充要条件。 以上便是对“充要条件“的定义。 回头再看上面的例子,这里我们把“男人”看作A,“会长胡子”看作B。“男人会长胡子”,即由A可以推出B,那么,“男人”是“会长胡子”的充分条件,“会长胡子”是“男人”的必要条件。到此,我们就说明了上例中的1、2两点,接着再回头看第3点,因为猫也长胡子,所以”会长胡子“对于是”男人“而言是不充分的,则“会长胡子(B)”是“男人(A)”的必要条件,但不是充分条件。再看,对于“男人是会长胡子的人”,这里仍把“男人”看作A,B则稍作变化,“会长胡子的人”看作B。那么,A可以推出B,B也可以推出A,则“男人”和“会长胡子的人”互为充要条件。 如何证明充要条件? 先证明充分性,再证明必要性。主要方法有定义法、等价法、集合法以及逻辑判断法。 深入了解“充要条件”,可以看了下王贵友的《充要条件的判断与证明》。

基于CentOS6.0-64定制系统iso制作(修改)

一.制作环境的准备 1.安装制作发行版的工具: [shell]# yum -y install anaconda repodata createrepo mkisofs [shell]# yum -y install anaconda-runtime createrepo yum-utils anacondaanaconda-help busybox-anaconda mkisofs 2.安装Centos6.0系统 由于方便制作,我们可以在VMware、vbox、xen等虚拟环境中进行安装,这里我们选用了VMware作为制作环境。 (1)在官方网站上下载CentOS-6.0-x86_64-bin-DVD.iso镜像文件 Wgethttp://mirrors.loosefoot.com/centos/6.0/isos/x86_64/CentOS-6.0-x86_64-bin-DVD1.iso Wgethttp://mirrors.loosefoot.com/centos/6.0/isos/x86_64/CentOS-6.0-x86_64-bin-DVD2.iso 二.创建定制系统(MediaCentOS基于 CentOS6.0-64 Base server) 1.光盘主要结构及文件简介 *isolinux目录存放光盘启动时的安装界面信息 *images目录包括了必要的启动映像文件 *Packages目录存放安装软件包及信息 *.discinfo文件是安装价质的识别信息 MediaCentOS目录存放媒体中心安装包 Repodata目录存放rpm包依赖信息 2.创建设/disk目录,挂载光盘 [shell]# mkdir /disk [shell]# mkdir /mnt/cdrom [shell]# mount –o loop /dev/cdrom /mnt/cdrom 3.拷贝光盘目录 [shell]# cd /mnt/cdrom [shell]# ls -a .|grep –v “Packages”|xargs -i cp -rp {} /disk //将所有文件和文件夹拷贝到/disk,除了Packages目录 [shell]# mkdir -p /disk/Packages

Wing IDE 破解版/注册机/注册码/破解方法

Wing IDE 是 Python 的商业集成开发工具。 原版下载地址 http://wingware.com/products 测试环境 Wing IDE Pro version 3.2.10/windows2003/python2.6.6 下载: Wing IDE Professional 3.2.10 + 注册机 下载: Wing IDE Professional 3.2.10 破解手册 注意 如果安装过 Wing IDE 3 先卸载,通常情况下是不能完全卸载的,所以你需要进行下面的操作。 删除 C:\Documents and Settings\Administrator\LocalSettings\Application Data 下的Wing IDE 3 目录,C:\Documents andSettings\Administrator\Application Data 下的 Wing IDE 3 目录。 如果不删除,就没办法进入下面的破解页面了。 以上方法来自网络,不要用于商业用途,请支持正版软件。

C语言图形编程--俄罗斯方块制作(二)源代码

所有源代码文件,此为本人2年前所作,设计上还有些缺陷。希望大家不吝指正。 设计详解点击这里 下面是头文件head.h /************************ (C) COPYRIGHT 2013 yang_yulei ************************ * File Name : head.h * Author : yang_yulei * Date First Issued : 12/18/2013 * Description : * * *******************************************************************************/ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef _HEAD_H_ #define _HEAD_H_ /* Includes ------------------------------------------------------------------*/ #include <graphics.h> #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <time.h> /* Macro ---------------------------------------------------------------------*/ #define TRUE 1 #define FALSE 0 //GUI游戏界面相关的参数 #define GUI_WALL_SQUARE_WIDTH 10 //外围围墙小方格的宽度(单位:像素) #define GUI_xWALL_SQUARE_NUM 30 //横向(x轴方向)围墙小方格的数量(必须是偶数) #define GUI_yWALL_SQUARE_NUM 46 //纵向(y轴方向)围墙小方格的数量(必须是偶数) #define GUI_WALL_WIDTH_PIX (GUI_WALL_SQUARE_WIDTH*GUI_xWALL_SQUARE_NUM) #define GUI_WALL_HIGH_PIX (GUI_WALL_SQUARE_WIDTH*GUI_yWALL_SQUARE_NUM) #define WINDOW_WIDTH 480 //窗口的宽度 #define WINDOW_HIGH GUI_WALL_HIGH_PIX //窗口高度 //俄罗斯方块相关的参数 //移动的方向 #define DIRECT_UP 3 #define DIRECT_DOWN 2 #define DIRECT_LEFT -1 #define DIRECT_RIGHT 1 //每一个小方块的大小(是围墙小方格宽度的2倍) #define ROCK_SQUARE_WIDTH (2*GUI_WALL_SQUARE_WIDTH) //横向能容纳小方格的数量 #define X_ROCK_SQUARE_NUM ((GUI_xWALL_SQUARE_NUM-2)/2) //纵向能容纳小方格的数量 #define Y_ROCK_SQUARE_NUM ((GUI_yWALL_SQUARE_NUM-2)/2) /* Exported types ------------------------------------------------------------*/ typedef int BOOL ; //布尔值类型 /*数据结构-线性表(结构体数组)*/ typedef struct ROCK { //用来表示方块的形状(每一个字节是8位,用每4位表示方块中的一行) unsigned int rockShapeBits ; int nextRockIndex ; //下一个方块,在数组中的下标 } RockType ; //方块在图形窗口中的位置(即定位4*4大块的左上角坐标) typedef struct LOCATE { int left ; int top ; } RockLocation_t ; /* Function prototypes -------------------------------------------------------*/ //源文件play.

C语言图形编程--俄罗斯方块制作(一)详解

效果图 用C语言实现俄罗斯方块,需要先解决下面几个问题: 1、如何用C语言绘制图形界面 EasyX图形库(http://www.easyx.cn)即TC的图形库在VC下的移植。 包含库#include <graphics.h> 先初始化图形窗口 initgraph(WINDOW_WIDTH, WINDOW_HIGH) ;WINDOW_WIDTH为窗口的宽带,WINDOW_HIGH为窗口的高度。 清空绘图设备 cleardevice(); 设置画笔颜色 setcolor(RED) ; 设置线条风格 setlinestyle(PS_SOLID, NULL, 0); 画矩形 rectangle 还有画线、显示文字等函数,可以参照其帮助文档。 注意:由于我们用的是EasyX图形库,故源文件后缀要为.cpp,但其中内容都是C的语法。 2、如何存储表示出俄罗斯方块的形状 在计算机中如何让一串的01数字,代表俄罗斯方块? 一、我们可以用编号,不同的编号代表不同的俄罗斯方块,根据编号把不同方块的画法写在代码中,这样19种 方块就得有19种相应的代码来描绘。而且这样扩展性不好,若以后设计了新的方块,则需要更改大量源代码。 二、我们很自然的想到可用字模点阵的形式来表示,即设置一个4行4列的数组,元素置1即代表这个位置有小 方块,元素置0即代表这个位置无小方块,这个整个的4*4的数组组成俄罗斯方块的形状。 1000 1000 1100 0000 这个方法挺靠谱,但我们还可以优化一下:不用4*4的数组,而是用16个bit位来表示这个点阵。这样存储起来比较方便,故我们用unsigned int 的低16位来表示方块的点阵。 我们可以用掩码与表示俄罗斯方块的位进行操作,来识别并在屏幕上画出方块。 详情见GUI.cpp中的DrawRock函数。 //逐位扫描由unsigned int的低2字节 //16个位组成的俄罗斯方块形状点阵(其代表4*4的方块形状) mask = (unsigned int)1 << 15 ; for (i=1; i<=16; i++) { //与掩码相与为1的 即为方块上的点 if ((rockArray[rockIndex].rockShapeBits & mask) != 0) { //在屏幕上画出此方块 rectangle(rockX+2, rockY+2, rockX+ROCK_SQUARE_WIDTH-2, rockY+ROCK_SQUARE_WIDTH-2) ; } //每4次 换行 转到下一行继续画 i%4 == 0 ?

示波器使用的经验——50Hz干扰

别看一个示波器探头很简单,其实还是很有讲究的。 1、首先是带宽,这个通常会在探头上写明,多少MHz。如果探头的带宽不够,示波器的带宽再高也是无用,瓶颈效应。 2、另外就是探头的阻抗匹配。探头在使用之前应该先对其阻抗匹配部分进行调节。通常在探头的靠近示波器一端有一个可调电容,有一些探头在靠近探针一端也具有可调电容。它们是用来调节示波器探头的阻抗匹配的。如果阻抗不匹配的话,测量到的波形将会变形。调节示波器探头阻抗匹配的方法如下:首先将示波器的输入选择打在GND上,然后调节Y轴位移旋钮使扫描线出现在示波器的中间。检查这时的扫描线是否水平(即是否跟示波器的水平中线重合),如果不是,则需要调节水平平衡旋钮(通常模拟示波器有这个调节端子,在小孔中,需要用螺丝刀伸进去调节。数字示波器不用调节)。然后,再将示波器的输入选择打到直流耦合上,并将示波器探头接在示波器的测试信号输出端上(一般示波器都带有这输出端子,通常是1KHz的方波信号),然后调节扫描时间旋钮,使波形能够显示2个周期左右。调节Y轴增益旋钮,使波形的峰-峰值在1/2屏幕宽度左右。然后观察方波的上、下两边,看是否水平。如果出现过冲、倾斜等现象,则说明需要调节探头上的匹配电容。用小螺丝刀调节之,直到上下两边的波形都水平,没有过冲为止。当然,可能由于示波器探头质量的问题,可能调不到完全无失真的效果,这时只能调到最佳效果了。 3、另外就是示波器探头上还有一个选择量程的小开关:X10和X1。当选择X1档时,信号是没经衰减进入示波器的。而选择X10档时,信号是经过衰减到1/10再到示波器的。因此,当使用示波器的X10档时,应该将示波器上的读数扩大10倍(有些示波器,在示波器端可选择X10档,以配合探头使用,这样在示波器端也设置为X10档后,直接读数即可)。当我们要测量较高电压时,就可以利用探头的X10档功能,将较高电压衰减后进入示波器。另外,X10档的输入阻抗比X1档要高得多,所以在测试驱动能力较弱的信号波形时,把探头打到X10档可更好的测量。但要注意,在不甚明确信号电压高低时,也应当先用X10档测一下,确认电压不是过高后再选用正确有量程档测量,养成这样的习惯是很有必要的,不然,哪天万一因为这样损坏了示波器,要后悔就来不及了。经常有人提问,为什么用示波器看不到晶振引脚上的波形?一个可能的原因就是因为使用的是探头的X1档,这时相当于一个很重的负载(一个示波器探头使用×1档具有上百pF的电容)并联在晶振电路中,导致电路停振了。正确的方法应该是使用探头的X10档。这是使用中应当注意的,即使不停振,也有可能因过度改变振荡条件而看不到真实的波形了。 4、示波器探头在使用时,要保证地线夹子可靠的接了地(被测系统的地,非真正的大地),不然测量时,就会看到一个很大的50Hz的信号,这是因为示波器的地线没连好。如果你发现示波器上出现了一个幅度很强的50Hz信号(我国市电频率为50Hz,国外有60Hz的),这时你就要注意下看是否是探头的地线没连好。由于示波器探头经常使用,可能会导致地线断路。检测方法是:将示波器调节到合适的扫描频率和Y轴增益,然后用手触摸探头中间的探针,这时应该能看到波形,通常是一个50Hz的信号。如果这时没有波形,可以检查是否是探头中间的信号线是否已经损坏。然后,将示波器探头的地线夹子夹到探头的探针(或者是钩子)上,再去用手触摸探头的探针,这时应该看不到刚刚的信号(或者幅度很微弱),这就说明探头的地线是好的,否则地线已经损坏。通常是连接夹子那条线断路,通常重新焊上即可,必要时可更换,注意连接夹子的地线不要太长,否则容易引入干扰,尤其是在高频小信号环境下。示波器探头的地线夹子应该要靠近测量点,尤其是测量频率较高、幅度较小的信号时。因为长长的地线,会形成一个环,它就像一个线圈,会感应到空间的电磁场。另外系统中的地线中电流较大时,也会在地线上产生压降,所以示波器探头的地线应该连接到靠近被测试点附近的地上。 5、有时顺变脉冲串扰会对示波器造成干扰,造成误触发,可尝试使用示波器的高频抑制触发模式,限制示波器带宽等方法。 以上这段内容转自网络,但是我对50Hz的干扰产生的原因网上有说是来自空间的辐射,对此我不敢苟同,请教了公司里一个工程师,给我的解释挺合理的。如果示波器的测试地与被测设备的地接在一起,那么信号的回流路径就最短,直接从示波器的探头流到示波器的测试地,经过被测设备的地最后回流到示波器的探头。但如果中间示波器的测试地断掉了,那么信号只能绕远路回流,探头的信号经过示波器的大地,流到被测设备的大地,最后流到示波器的探头,中间绕了一个大圈,而且引入了工频50Hz的干扰。

关于uint8_t数据类型的理解

我们知道的常用数据类型有char、int、double、flout、string、struct等,其实这里的uint8_t不是什么新的数据类型,他只是用typedef定义出来的一个东东,那么为什么会有uint8_t数据类型的出现呢,其实主要是为了预防程序在不同平台之间移植会出现不兼容性,如果我们看到一个int类型数据,我们并不知道他有多少位,因为有的运行平台是32位系统,有点是64位,并且由于编译器等的不同都会导致int类型数据的大小不一样,那么如何避免由于系统或编译器不同导致的程序移植的不兼容性呢,我们就想到了使用typedef自己定义几个数据类型,将容易出现“不和谐”的几个变量使用我们自己定义的数据类型,并且将typedef定义在自己的头文件中,这样就既稳定又方便了。也许你会问,为什么我看到的代码中,只看到了使用uint8_t数据类型,没看到关于他的头文件呢,是这样的,在c99中提供了一个可选的名字集合,用来确切的描述数据类型大小,例如int16_t表示一个16位有符号的整数类型,并且c99已经将这一系列定义在了一个名字叫做inttypes.h的头文件中了,不过并不一定你的编译器就包括这个头文件哦。相信到这里你已经明白了uint8_t数据类型存在的意义,如果没有#include <inttypes.h>,至于他们的大小,只有你才知道,你定义多大,那他就是多大,如果你喜欢你可以定义typedef unsigned char uchar123_t或者typedef unsignet char uchar321_t,不过尽量要让名字具有可读性哦。 参考资料:c primer plus(第五版) 中文版 第46页

Ubuntu U盘安装时安装时卡在Syslinux的问题

用软碟通制作的U盘启动,ubuntu是11.10版本,安装时显示: SYSLINUX 3.86 2010-04-01 EBIOS Copyright (C) 1994-2010 H.Peter Anvin et al 解决方法,仅供参考: 1、格式化u盘为ntfs格式 2、用UltraISO写入Ubuntu镜像文件 3、修改syslinux.cfg,在default一行和ui一行加#注释掉。注意不要使用记事本编辑,换行会出问题。可以使用写字板,修改如下: # D-I config version 2.0 include menu.cfg # default vesamenu.c32 prompt 0 timeout 50 # ui gfxboot bootlogo 4、用u盘引导,显示Syslinux之后按回车,即可进入Ubuntu

转-关于Method类中invoke方法和Class类中getmethod方法的使用

摘要: 对于大多数java的新手一般不会用到这两个方法,但是即使是对java有了一定的了解的人,对这两个方法的使用,也存在着一定的问题,下面就这个问题作出一定的解释,能给大家一个初步的认识。 sheen: thisMethod.invoke(thisClass, new Object[] {InParam,new Integer(OutParamNum)})其中InParam为String[],而不是String, 所以不能用new String(InParam),程序运运行此句就停, what should I do? help! 多谢各位,多谢! humming评论: 此处sheen调用的invoke方法属于java.lang..reflect.Method中的一个方法,这里的thisMethod是一个Method变量,sheen想调用thisMethod对应的一个方法,可能在参数的设置中有问题,它没有通过编译。关于invoke方法的具体使用见附录) Wingzhang: you may try as following: Object[] realArgs = new Object[2]; String[] strArgs = {"aa","bb"}; Integer intArgs = ....; realArgs[0] = strArgs; realArgs[1] = intArgs; thisMethod.invoke(thisClass,realArgs); humming评论: 此处wingzhang给出了invoke方法的一个参数的具体用法,在这里认为要调用的方法中即thisMethod对应的方法中的形参中要求包括着String[]和Integer,这里wingzhang提到的realArgs就起到这个作用,但是没有很清楚的说明第一个参数是如何用的。 sheen: Thank you, I will try... shenn: I have try, but the same result: 无法调用此方法 //评注:sheen兄还是没有领会到其要领,也不能完全怪他,因为wingzhang大侠没有把 它解释说的很清楚。不过Wingzhang大侠还是非常热情的,下面他就给出了一个完整的例 子。 Wingzhang: Can you put out your method signature?

SQL Server配置管理WMI问题

今天在打开数据库的时候,连接不上。一看错误就知道肯定是SQL Server的服务没开启,所以自然而然的去SQL Server配置管理中去打开,但是打开配置管理器的时候出现了下面的错误: 每次连接数据库的时候总是会出各种各样的问题,都见怪不怪了。但是这个问题还是第一次遇到呢,起初还有新鲜劲,但是这个问题捣鼓了一个下午+晚上1小时。就开始变得纠结了。为了纪念一下这个难的的问题,还是写篇博客吧。 问题初期:新鲜劲来了, 好奇的是WMI是什么东西啊? WMI,Windows管理规范(Windows Management Instrumentation) 是一项核心的Windows管理技术;用户可以使用WMI管理本地和远程计算机。 既然提示无法连接到WMI提供程序,那就是服务没开启呗。先查看WMI服务: 计算机—>管理—>双击服务—>找到WMI 第二,去网上找了相关的问题,大部分都是给出这三种解决方案: 1.权限问题:管理员(administrator)没有 network service的权限,所以 WMI无法打开。 右击“我的电脑”-->“管理” 在“本地用户和组”内的Administrators组上双击,出现添加属性对话框。 单击“添加”按钮,出现添加用户对话框 单击“高级”按钮,再单击“搜索”(或是“立即查找”)按钮。注:此'NT AUTHORITY\NETWORK SERVICE'用户为系统内置帐户,无法直接添加。 在“搜索结果”内选择“Network Service”用户后,单击“确定” 经测试,此方法无效!问题依然存在! 2.检查一下 windows下的system32 中是否有framedyn.dll这个系统文件,如果没有到system32 下的wbem文件中拷贝framedyn.dll到system32 目录下。 我进到system32目录找framedyn.dll文件,果然没有找到,再进入system32\wbem目录,找framedyn.dll,拷贝到system32目下。 经查找,有该文件! 3.在doc命令中输入:mofcomp.exe "C:\Program Files\Microsoft SQL Server\90\Shared\sqlmgmproviderxpsp2up.mof" 但是运行之后,出现了下面的错误: 提示找不到文件,在网上查找问题,都是这三种解决方案。捣鼓了一下午之后,感觉自己快要放弃的时候,这时候看到八期的师哥过来了,拉着他一起帮忙解决。同样是查找相关的问题。 捣鼓了一段时间还是不行。此时已经能明确的确定引起这个问题的主要原因是sqlmgmproviderxpsp2up.mof 这个文件。该文件的作用主要是由于上一次SQL安装失败之后,将存储在该文件之中,所以需要进行更新该文件。 后来又发现有个小小的问题,就是有的解决方案给出的路径是不一样的。有的是:mofcomp.exe "C:\Program Files(x86)\Microsoft SQL Server\90\Shared\sqlmgmproviderxpsp2up.mof" 或者是 mofcomp.exe "C:\Program Files\Microsoft SQL Server\100\Shared\sqlmgmproviderxpsp2up.mof" 。 注意观察他们的区别,这时候就知道肯定是路径上的问题。但是这个文件该去哪找呢?想查一下sqlmgmproviderxpsp2up.mof 这个文件,但是网上都没有介绍。 正当再次要放弃的时候,观察SQL Server的目录组织结构。 既然有人在90和100中找到了,那为什么不到110 下面去找呢。最后在该文件下找到了sqlmgmproviderxpsp2up.mof 这个文件。 运行结果: 主要原因是路径上的错误,sqlmgmproviderxpsp2up.mof 这个文件的路径,在每个系统上存放的路径是不一样的。 注意Program Files(x86)和Program Files的区别。 在64位系统的系统盘中会存在program files和program files(x86)两个文件夹。前者用来存放64位文件,后者用来存放32位文件。这两个文件夹的存在使得目前64为操作系统可兼容32为程序,也可以说是为了兼容32位程序,program files(x86)这个文件夹才会存在。

matlab,多条曲线画到一张图上

在matlab中,经常遇到画图问题,甚至,有时候需要把其他软件中的数据,导出来,用matlab处理。 此处给出,用matlab处理数据的一些简单方法。 1)matlab加载excel文件 首先,数据在excel中,需要是一列表的形式,不存在无关的数据。 代码为: clc; close all; clear all; file = 'E:\matlabtest\1.xls'; data = xlsread(file); y = data(:,2); plot(x,y); 系统中需要安装excel。 2)一次画多个曲线 clc; close all; clear all; file = 'E:\matlabtest\1.xls'; data = xlsread(file); x = data(:,1); y = data(:,2); plot(x,y); hold on; file = 'E:\matlabtest\2.xls'; data = xlsread(file); x = data(:,1); y = data(:,2); plot(x,y); 简单而言,就是在上次绘图完成之后,加入hold on;然后进行第二次绘图。当需要结束本图的绘制,进入下一副的绘制,加入代码hold off;即可。 3)关于绘图的图例,线型,可以参考网上资料。此处给出简单说明。 y 黄 - 实线 . 点 < 小于号 m 紫 : 点线 o 圆 s 正方形 c 青 -.

win7下运行英雄无敌3的方法

从网上看来的,很管用。 win7有32位和64位两种,如果游戏无法启动,主要的解决方法有两种: 1、导入注册表文件; 2、设置运行在兼容模式下; 这里主要讲第一种,第二种其实很简单,右键点“heroes3.exe”,出来的菜单中就有“兼容性”这一项。然后设置就可以了。 一般绿色的英雄无敌3都提供一个需要导入的“reg”文件,但这个文件是32位机用的,在64位win7下必须修改下才能用。 32位的reg文件如下: REGEDIT4 [HKEY_LOCAL_MACHINE\Software\New World Computing] [HKEY_LOCAL_MACHINE\Software\New World Computing\Heroes of Might and Magic?III] [HKEY_LOCAL_MACHINE\Software\New World Computing\Heroes of Might and Magic?III\1.0] "AppPath"=".\" "CDDrive"=".\" "Show Intro"=dword:00000001 "Music Volume"=dword:00000005 "Sound Volume"=dword:00000000 "Last Music Volume"=dword:00000005 "Last Sound Volume"=dword:00000000 "Walk Speed"=dword:00000002 "Computer Walk Speed"=dword:00000003 "Show Route"=dword:00000001 "Move Reminder"=dword:00000001 "Quick Combat"=dword:00000000 "Video Subtitles"=dword:00000001 "Town Outlines"=dword:00000001 "Animate SpellBook"=dword:00000001 "Window Scroll Speed"=dword:00000001 "Bink Video"=dword:00000001 "Blackout Computer"=dword:00000000 "First Time"=dword:00000000 "Test Decomp"=dword:0000000f "Test Read"=dword:00000002

SPEC 文件编写

%define pkg modules %define name tengine-modules %define version 1.4.6 %define release 1 #以下 2 行控制 debuginfo 的 rpm 包生成 %define __os_install_post /usr/lib/rpm/redhat/brp-compress %define debug_package %{nil} Summary: modules for Tengine %{version} Name: %{name} Version: %{version} Release: %{release} License: Alibaba Group: System Environment/Libraries Source: %{pkg}-%{version}.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version} %description Tengine %{version} modules, including alibeacon, alicookie and imgurlfilter %pre %prep %setup -n %{pkg}-%{version} %build %install rm -rf $RPM_BUILD_ROOT mkdir -p $RPM_BUILD_ROOT%{_prefix}/alibaba/install/%{pkg}-%{version} cp -rf * $RPM_BUILD_ROOT%{_prefix}/alibaba/install/%{pkg}-%{version} cd $RPM_BUILD_ROOT%{_prefix}/alibaba ln -s install/%{pkg}-%{version} %{pkg} %files %{_prefix}/alibaba/* %clean rm -rf $RPM_BUILD_DIR/%{pkg}-%{version} [ "

C语言中 %02X 是什么意思

X 表示以十六进制形式输出 02 表示不足两位,前面补0输出; 举例: printf("%02X", 0x123); //打印出:123 printf("%02X", 0x1); //打印出:01 char mac[32]; snprintf(mac, 6, "%2x:%2x:%2x:%2x:%2x:%2x",pe->Addr[0], pe->Addr[1], pe->Addr[2], pe->Addr[3],pe->Addr[4], pe->Addr[5]); //failed 应该为%02x memcpy(mac, pe->Addr, 6);

如何查看ASM磁盘空间使用情况

有两种方法: 1.查看v$asm_diskgroup视图 SQL> select group_number,name,total_mb,free_mb from v$asm_diskgroup; GROUP_NUMBER NAME TOTAL_MB FREE_MB ------------ ------------------------------ ---------- ---------- 1 DATA 5114 2685 2.进入asmcmd查看 rac2:oracle:rac2 > export ORACLE_SID=+ASM2 rac2:oracle:rac2 > asmcmd ASMCMD> lsdg State Type Rebal Unbal Sector Block AU Total_MB Free_MB Req_mir_free_MB Usable_file_MB Offline_disks Name MOUNTED EXTERN N N 512 4096 1048576 5114 2685 0 2685 0 DATA/

如何在32、64位Windows7下玩英雄无敌3

最近突然怀旧了,听老歌玩老游戏,特别怀念英雄无敌3。虽然以后还出了好多版本,也做的漂亮了很多,但是真正好玩的还是3代,其他的都外表华丽,但内容和玩法华而不实。 以前都是在XP上完的,换了新的WIN7(64位)系统,想玩还花了一番功夫。 直接运行EXE文件之后会报错。如何解决此问题呢,只要导入一个注册表文件就好了。 一般来说你安装或者解压后的文件夹中会有一个注册表文件供你导入使用。 内容应该与下面的内容类似: 在 reg 文件上面右键,编辑—— 以下是 32位系统下的绿色版英雄无敌3的reg文件内容,本行不算 /// REGEDIT4 [HKEY_LOCAL_MACHINE\Software\New World Computing] [HKEY_LOCAL_MACHINE\Software\New World Computing\Heroes of Might and Magic?III] [HKEY_LOCAL_MACHINE\Software\New World Computing\Heroes of Might and Magic?III\1.0] "AppPath"=".\" "CDDrive"=".\" "Show Intro"=dword:00000001 "Music Volume"=dword:00000005 "Sound Volume"=dword:00000000 "Last Music Volume"=dword:00000005 "Last Sound Volume"=dword:00000000 "Walk Speed"=dword:00000002 "Computer Walk Speed"=dword:00000003 "Show Route"=dword:00000001 "Move Reminder"=dword:00000001 "Quick Combat"=dword:00000000 "Video Subtitles"=dword:00000001 "Town Outlines"=dword:00000001 "Animate SpellBook"=dword:00000001 "Window Scroll Speed"=dword:00000001 "Bink Video"=dword:00000001 "Blackout Computer"=dword:00000000 "First Time"=dword:00000000

DB2数据库联邦创建步骤

准备工作: 本地数据库 : 数据库:sample ; IP地址:192.168.56.101 ; 端口号:50000 ;用户名:db2inst1 ; 密码:db2inst1 对方数据库 : 数据库:payment ; IP地址:192.168.56.101 ; 端口号:50002 ;用户名:db2inst2 ; 密码:db2inst2 远程数据库全局设置应该如下: 示例: 添加编目数据库: 创建数据库联邦: 查看联邦数据: 参考步骤: 1.查看联合数据库参数是否可用,不可用则设置为可用 db2 get dbm cfg | grep -i federated ----查询命令 db2 update dbm cfg using federated yes ----重置命令 db2stop force db2start 2.编目远程数据库节点(编目节点名称不能超过8位) 命令格式: db2 catalog TCPIP NODE <节点名> REMOTE <对方数据库地址> SERVER <对方数据库端口> $ db2 catalog tcpip node db2node1 remote 192.168.56.101 server 50002