SQL Server 2008 阻止保存要求重新创建表的更改问题的设置方法

SQL Server 2008设计表时,出现提示阻止保存要求重新创建表的更改的提示,原来SQL Server 2008企业管理器中更改表结构时,必须要先删除原来的表,然后重新创建新表,才能完成表的更改。

解决方法:工具-〉选项-〉左侧有个 设计器-〉表设计器和数据库设计器 -> 阻止保存要求重新创建表的更改(右侧) 把钩去掉即可。

Read More →

Excel中利用VBA实现批量设置文本的上标

 在Excel中设备上标较为简单,通过设备单元格属性即可完成,如下图:

但是如果量大,一个一个设置是不好弄的,结合网上找的内容,写了一段VBA如下:

 

Sub 批量设置上标()
'
' 批量设置上标 宏
'

    ' 复制值
    Dim line As Integer
    
    line = 0    '行号
    
    '行号自动获取, 以免新增行时忘记
    Dim r As Range
    For Each r In Range("A8:A1000")
        If r.Address < r.MergeArea.Address And r.Address = r.MergeArea.Item(1).Address Then
            line = r.Row - 1
            Exit For
        End If
    Next
    
    Range("Y8:Y" & line).Select
    Selection.Copy
    Range("D8").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        
    '设备字体格式
    Range("D8:D" & line).Select
    With Selection.Font
        .Name = "宋体"
        .Size = 10
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ColorIndex = xlAutomatic
        .TintAndShade = 0
        .ThemeFont = xlThemeFontNone
    End With
    
    '变上标
    Dim txtLength       As Long
    Dim i               As Long
    '循环设置
    For i = 8 To line
        
        '获取文本的长度
        txtLength = Cells(i, "D").Characters.Count
        
        '将最后一个文本设置为上标
        Cells(i, "D").Characters(txtLength, 1).Font.Superscript = True
        
    Next i
    
End Sub

参考网址:http://club.excelhome.net/thread-1247192-1-1.html

Read More →

完美解决IE兼容模式问题

解决了一个兼容性问题,参考:http://www.3lian.com/edu/2013/06-28/77048.html

IE浏览器从IE8开始添加了兼容模式,开启后会以低版本的IE进行渲染。兼容模式有可能会导致网页显示出问题,于是我们通常在HTML中添加下列代码来使 IE 使用固定的渲染模式:

<meta http-equiv="X-UA-Compatible" content="IE=8"><!--以IE8模式渲染-->
<meta http-equiv="X-UA-Compatible" content="IE=7"><!--以IE7模式渲染-->

还有一种情况,在IE8下只有不使用兼容模式页面才能显示正常,但是如果设定为IE8的模式,在IE9中却会导致CSS3失效。看来,需要针对 IE8、IE9 分别 禁用兼容模式。怎么办呢?可以在后台判断浏览器版本,如果是IE8就输出content="IE=8",如果是IE9就输出 content="IE=9"。其实还可以单纯通过HTML来实现的,HTML代码如下:

<meta http-equiv="X-UA-Compatible" content="IE=9; IE=8; IE=7; IE=EDGE">

经测试后完美解决了兼容模式问题,这样设置后IE中设置兼容模式的按钮也会消失,可以按F12打开“开发人员工具”来检查浏览器模式。

Read More →

JavaScript判断浏览器类型及版本

参考:http://www.cnblogs.com/leadzen/archive/2008/09/06/1285764.html

IE

只有IE支持创建ActiveX控件,因此她有一个其他浏览器没有的东西,就是ActiveXObject函数。只要判断window对象存在ActiveXObject函数,就可以明确判断出当前浏览器是IE。而IE各个版本典型的userAgent如下:

  • Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.0)
  • Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.2)
  • Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
  • Mozilla/4.0 (compatible; MSIE 5.0; Windows NT)

其中,版本号是MSIE之后的数字。

Firefox

Firefox中的DOM元素都有一个getBoxObjectFor函数,用来获取该DOM元素的位置和大小(IE对应的中是getBoundingClientRect函数)。这是Firefox独有的,判断它即可知道是当前浏览器是Firefox。Firefox几个版本的userAgent大致如下:

  • Mozilla/5.0 (Windows; U; Windows NT 5.2) Gecko/2008070208 Firefox/3.0.1
  • Mozilla/5.0 (Windows; U; Windows NT 5.1) Gecko/20070309 Firefox/2.0.0.3
  • Mozilla/5.0 (Windows; U; Windows NT 5.1) Gecko/20070803 Firefox/1.5.0.12

其中,版本号是Firefox之后的数字。

Opera

Opera提供了专门的浏览器标志,就是window.opera属性。Opera典型的userAgent如下:

  • Opera/9.27 (Windows NT 5.2; U; zh-cn)
  • Opera/8.0 (Macintosh; PPC Mac OS X; U; en)
  • Mozilla/5.0 (Macintosh; PPC Mac OS X; U; en) Opera 8.0

其中,版本号是靠近Opera的数字。

Read More →

VirtualBox启动镜像蓝屏提示intelppm.sys的解决方法

现实是从其它人拷贝过来的虚拟机,启动时会卡在欢迎界面的情况,偶尔出现蓝屏,提示intelppm.sys的问题,参考网络上的解决方案,经实践得出有效方案:

  1. 启动计算机时,按F8键,进入安全模式;
  2. 找到这个位置:C:\Windows\System32\Drivers,定位到intelppm.sys文件;
  3. 将其重命名,如:XXXintelppm.syx;
  4. 重启。

Read More →

使用命令行启动VirtualBox虚拟机

转自:使用命令行启动VirtualBox虚拟机

装上VirtualBox就琢磨着如何让它开机自动启动,又或者能够通过命令行的形式直接启动指定的虚拟机。看了下VirtualBox的官方文档,发现有一个命令可以满足我的需求,即VBoxManage。VBoxManage提供了一系列的虚拟机管理命令,包括创建/删除/启动/修改等等,这里不一一列举。有点像Xen的XM命令。不过这里只关心启动虚拟机的命令:VBoxManage startvm。VBoxManage的完整命令列表可以参考这里。

VBoxManage startvm子命令可以开启一台状态为关闭或者保存的虚拟机。该命令的语法为:

VBoxManage startvm uuid>|name... [--type gui|sdl|headless]

可以通过虚拟机的uuid或者name来指定某台虚拟机,可以通过另外一个子命令list列出系统已有的虚拟机:

$ VBoxManage list vms
"XP" {8842d793-228c-458e-a880-8051193fd2db}

我系统上已经安装了一台名为XP的虚拟机,后面括号内部的是它的UUID。

VBoxManage startvm子命令可以通过–type参数指定启动的方式,其中gui就是图形化界面,这和我们平时启动的方式一样。sdl也是图形化界面,但是少掉了部分功能,比如没有菜单等,一般用于调试过程。最后headless是在后台运行,并且默认开启vrdp服务,可以通过远程桌面工具来访问。关于这三种启动方式的介绍可以看手册中的这一篇。所以一般我们使用gui或者headless类型启动。

使用gui类型启动虚拟机:

$ VBoxManage startvm XP --type gui

执行结束后,就会启动指定的虚拟机,几乎和平时没什么区别。

使用headless类型启动虚拟机:

$ VBoxManage startvm "XP" --type headless
或者
$ VBoxHeadless --startvm "XP"

结果返回:

$ rdesktop -a 16 -N -g 1280x800 127.0.0.1:3389
Autoselected keyboard map en-us
ERROR: connect: Connection refused

翻了下手册,结果发现要获得VRDP的支持还需要安装额外的扩展包,详细说明可以参考这里。从VirtualBox的下载页面选择相应的版本下载扩展包。下载完成后,双击即可以完成安装,或者在菜单中File-Preference-Extensions可以安装和查看已安装的扩展包。

安装好再次执行上面的远程命令,这下可以看见虚拟机界面了吧。可以通过ctrl+alt+enter切换全屏。不过我这里用rdesktop全屏后,屏幕就黑了,只有点过的地方才会恢复。不知道是什么原因,我就干脆用TigerVNC了,同时在启动headless的时候加上-n参数:

{$ VBoxHeadless -n -s winxp (VBoxHeadless -s winxp --vnc --vncport 5900 --vncpass password)}

通过以下命令远程连接: $ vncviewer localhost:5900

按下F8会出现一个菜单,里面可以切换全屏。

一切相关的命令:

$ VBoxManage list runningvms # 列出运行中的虚拟机
$ VBoxManage controlvm XP acpipowerbutton # 关闭虚拟机,等价于点击系统关闭按钮,正常关机
$ VBoxManage controlvm XP poweroff # 关闭虚拟机,等价于直接关闭电源,非正常关机
$ VBoxManage controlvm XP pause # 暂停虚拟机的运行
$ VBoxManage controlvm XP resume # 恢复暂停的虚拟机
$ VBoxManage controlvm XP savestate # 保存当前虚拟机的运行状态

Read More →

VirtualBox already exists in the media registry解决方案

想复制一个虚拟机镜像,再导入使用,出现了以下问题:

Cannot register the hard disk 'c.vdi' with UUID {xxxx} because a hard disk 'c.vdi' with UUID {xxx} already exists in the media registry ('C:/Documents and Settings/xxx/.VirtualBox/VirtualBox.xml').

解决方法是重设UUID,这个和VMware不同,方法如下:

D:\Program Files\PowerCmd>"D:\Program Files\Oracle\VirtualBox\VBoxManage.exe" internalcommands sethduuid "d:\xp.vdi"
UUID changed to: a290d94b-19b8-4cbf-9cda-00084c246d15

也可以直接使用clonehd直接得到UUID不同的两个镜像,方法类似,如VBoxManage clonehd "a.vdi' "b.vdi" 

搞定!

还有一个用于压缩VDI文件的命令:

VBoxManage modifyvdi "C:\xxx.vdi" compact

Read More →

嵌入式系统VxWorks介绍及编程

VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是嵌入式开发环境的关键组成部分。良好的持续发展能力、高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域占据一席之地。它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。在美国的 F-16、FA-18 战斗机、B-2 隐形轰炸机和爱国者导弹上,甚至连1997年4月在火星表面登陆的火星探测器上也使用到了VxWorks。 

实时操作系统和分时操作系统的区别

从操作系统能否满足实时性要求来区分,可把操作系统分成分时操作系统和实时操作系统。

分时操作系统按照相等的时间片调度进程轮流运行,分时操作系统由调度程序自动计算进程的优先级,而不是由用户控制进程的优先级。这样的系统无法实时响应外部异步事件。(jm注:windows并不是分时操作系统,网上说的不正确

实时操作系统能够在限定的时间内执行完所规定的功能,并能在限定的时间内对外部的异步事件作出响应。分时系统主要应用于科学计算和一般实时性要求不高的场合。实时性系统主要应用于过程控制、数据采集、通信、多媒体信息处理等对时间敏感的场合。

VxWorks的特点

  • 可靠性

操作系统的用户希望在一个工作稳定,可以信赖的环境中工作,所以操作系统的可靠性是用户首先要考虑的问题。而稳定、可靠一直是VxWorks的一个突出优点。自从对中国的销售解禁以来,VxWorks以其良好的可靠性在中国赢得了越来越多的用户。

  • 实时性

实时性是指能够在限定时间内执行完规定的功能并对外部的异步事件作出响应的能力。实时性的强弱是以完成规定功能和作出响应时间的长短来衡量的。

VxWorks 的实时性做得非常好,其系统本身的开销很小,进程调度、进程间通信、中断处理等系统公用程序精练而有效,它们造成的延迟很短。VxWorks 提供的多任务机制中对任务的控制采用了优先级抢占(Preemptive Priority Scheduling)和轮转调度(Round-Robin Scheduling)机制,也充分保证了可靠的实时性,使同样的硬件配置能满足更强的实时性要求,为应用的开发留下更大的余地。

  • 可裁减性

用户在使用操作系统时,并不是操作系统中的每一个部件都要用到。例如图形显示、文件系统以及一些设备驱动在某些嵌入系统中往往并不使用。

VxWorks 由一个体积很小的内核及一些可以根据需要进行定制的系统模块组成。VxWorks 内核最小为 8kB,即便加上其它必要模块,所占用的空间也很小,且不失其实时、多任务的系统特征。由于它的高度灵活性,用户可以很容易地对这一操作系统进行定制或作适当开发,来满足自己的实际应用需要。

对一个实时内核的要求

一个实时操作系统内核需满足许多特定的实时环境所提出的基本要求,这些包括:

多任务:由于真实世界的事件的异步性,能够运行许多并发进程或任务是很重要的。多任务提供了一个较好的对真实世界的匹配,因为它允许对应于许多外部事件的多线程执行。系统内核分配CPU给这些任务来获得并发性。

抢占调度:真实世界的事件具有继承的优先级,在分配CPU的时候要注意到这些优先级。基于优先级的抢占调度,任务都被指定了优先级,在能够执行的任务(没有被挂起或正在等待资源)中,优先级最高的任务被分配CPU资源。换句话说,当一个高优先级的任务变为可执行态,它会立即抢占当前正在运行的较低优先级的任务。

任务间的通讯与同步:在一个实时系统中,可能有许多任务作为一个应用的一部分执行。系统必须提供这些任务间的快速且功能强大的通信机制。内核也要提供为了有效地共享不可抢占的资源或临界区所需的同步机制。

任务与中断之间的通信:尽管真实世界的事件通常作为中断方式到来,但为了提供有效的排队、优先化和减少中断延时,我们通常希望在任务级处理相应的工作。所以需要在任务级和中断级之间存在通信。 

 

Read More →

Android环境搭建笔记

参考:http://android.yaohuiji.com/archives/5

JDK和Eclipse去官网下载即可。

ADT(Android Development Tools)的安装:

ADT是Eclipse的插件,是用Eclipse进行Android开发的开发工具,它本身不是Android SDK。安装方法和同其他Eclipse插件的方法一样(Help-> Install New Software…)。ADT安装成功后eclipse工具栏中会出现小机器人图标。

这里说得比较粗,添加软件的源不是Eclipse自带的,源地址是:https://dl-ssl.google.com/android/eclipse/,具体参考这里:http://blog.chinaunix.net/uid-12845622-id-311979.html

 

Read More →

The keywords of JAVA

Java具有一组内置的关键字,这些关键字绝对不能用来做为标识符。Java  SE6里一共有50个关键字(keywords):

abstract, continue, for, new, switch assert, default, goto, package, synchronized boolean, do, if, private, this break, double, implements, protected, throw byte, else, import, public, throws case, enum, instanceof, return, transient catch, extentds, int, short, try char, final, interface, static, void class, finally, long, strictfp, volatile const, float, native, super, while

这些单词有共同的特点是:全是小写的,不能用作标识符。(如果非要用做标识符呢,会有什么事情发生?自己去试试看)。其中 instanceof 是 instance of 的连写 ,strictfp 是 strict float point 的连写

有三个看起来像是关键字,其实不是关键的东东,他们是字面值(literal)。

  • true 布尔字面值
  • false 布尔字面值
  • null 空值字面值

Read More →
在线学习答案查询入口
微信扫一扫
微信扫码联系