10n | 接頭辞 | 記号 | 漢数字表記(命数法) | 十進数表記 |
---|---|---|---|---|
1024 | ヨタ (yotta) | Y | 一秭 | 1 000 000 000 000 000 000 000 000 |
1021 | ゼタ (zetta) | Z | 十垓 | 1 000 000 000 000 000 000 000 |
1018 | エクサ (exa) | E | 百京 | 1 000 000 000 000 000 000 |
1015 | ペタ (peta) | P | 千兆 | 1 000 000 000 000 000 |
1012 | テラ (tera) | T | 一兆 | 1 000 000 000 000 |
109 | ギガ (giga) | G | 十億 | 1 000 000 000 |
106 | メガ (mega) | M | 百万 | 1 000 000 |
103 | キロ (kilo) | k | 千 | 1 000 |
102 | ヘクト (hecto) | h | 百 | 100 |
101 | デカ (deca, deka) | da | 十 | 10 |
100 | なし | なし | 一 | 1 |
10−1 | デシ (deci) | d | 十分の一 / 一分 | 0.1 |
10−2 | センチ (centi) | c | 百分の一 / 一厘 | 0.01 |
10−3 | ミリ (milli) | m | 千分の一 / 一毛 | 0.001 |
10−6 | マイクロ (micro) | µ | 百万分の一 / 一微 | 0.000 001 |
10−9 | ナノ (nano) | n | 十億分の一 / 一塵 | 0.000 000 001 |
10−12 | ピコ (pico) | p | 一兆分の一 / 一漠 | 0.000 000 000 001 |
10−15 | フェムト (femto) | f | 千兆分の一 / 一須臾 | 0.000 000 000 000 001 |
10−18 | アト (atto) | a | 百京分の一 / 一刹那 | 0.000 000 000 000 000 001 |
10−21 | ゼプト (zepto) | z | 十垓分の一 / 一清浄 | 0.000 000 000 000 000 000 001 |
10−24 | ヨクト (yocto) | y | 一秭分の一 / 一涅槃寂静 | 0.000 000 000 000 000 000 000 001 |
2010年3月27日土曜日
SI接頭辞
2010年3月21日日曜日
notebook hardware control 即 NHC
2010年3月17日水曜日
vba addtextbox
2010年3月16日火曜日
VBA编程时常用的提速方法
速度是程序设计永恒的热门话题,使用VBA编程当然也不例外,这里就将在网上收集到的VBA编程常用提 速的方法与自己在VBA编程时的心得整理一下,上传到这里.
一、让代码"专注"运行
1.将Application.ScreenUpdating设定为 False,关闭屏幕更新.这个是最基本的加速方法,在程序结束设还原时设定为True.
2. 将Application.EnableEvents设定为False,禁止触发事件.这个在有其它自定义事件时,如定义了Worksheet_Change时,就有需要设定,还原时设定为True.
3.将 Application.Interactive设定为False,禁止交互模式.当我们运行程序时,如删除有数据的工作表而不需要提示,这时就可以使用,见意这段代码只加在需要的地方,之后就立即开启.
4.将 Application.Calculation设定为xlCalculationManual,将计算模式设定为手动.当工作簿中有大量公式时,这样的设定提速特别明显,还原时设定为xlCalculationAutomatic.
二、单元格(区域)写法的选择
单元格(区域)写法有3种,以A1单元格为例,可以使用
1.Cell 对象写法:cells(1,1)
2.Range对象写法:Range("A1")
3.名称写法:[A1]
三种写法各有优缺点,但以取值速度论,cells(1,1)最快,[A1]写法最 慢,Range("A1")比cells(1,1)稍慢,但优点是在VBE中输入可以显示属性 方法等快速输入信息.此外,要明示对象属性而不要依赖于对象的默认属性,这是一种好的编程习 惯.下面两句,第二句要比第一句快得多:
x= cells(1,1)
x= cells(1,1).value
三、比较语句
1.分解IF语句
如:
IF A THEN
IF B THEN
优于
IF A AND B THEN
与
IF A THEN
...
ELSE IF B THEN
优于
IF A OR B then
2.并列的条件使用elseif或select,elseif写起来麻烦,但速度优于select
3.将最可能的条件及容易计算的条件放在前面
上面分解后的A应当比B出现的机会更大,或者需要进行计算更容易计算出结果,select语句放在前面 的case也应这样
4.Iif速度慢于if/else
四、循环语句
1.For 语句快于DO/WHILE,这是因为FOR语句的增量部分是VBA自带的,特别是步长为1的更明显
2.For/each快于for/to
五、使用With语句
with语句不仅仅是简化了写法,速度也大大提升了。
六、尽量不用Variant类型
这不用多说吧,使用Option Explicit是一个好习惯。
给返回值一个明确的类型,会对提速有好处。虽然有时候我们觉得不明显,这是很多人使用left$,而不 用left,使用int%,而不用int的原因(你是否对这种写法好奇过?)。但如果你一开始 你就没有DIM,这就很有必要了。
七、关注内存
对占用内存较多的对象变量,不要时要记住set=nothing,如果你对你的机器内存的容量没有信 心,应避免使用递归程序,递归的过程会吃掉大量的内存。
八、使用工作表函数(方法)
有些工作表函数(方法)速度是很快的,比如FIND,VLOOKUP等,要记得使用它们,不要花力气去 做不讨好的事。当使用工作表函数时,操作对象应避免使用内存变量,那样反而慢。
九、划零为整
当需要对较大区域进行相同的操作时,可以先使用union等方法收集,一次进行。 在Range对象上尤其明显,内容、格式变更,删除等等一个一个的处理要比把这些选定后一起处 理慢得多的多。
十、使用内存数组
1.内存变量的运算速度大大快于RANGE对象。
1)将RANGE数据写入内存数组。下面两句 将生成一个65536行,6列的数组。用这种方法产生的数组都是两维数组,即使引用的 RANGE只有一行或一列。下标始于1,不受option base设置的影响。arr必需声明为Variant类型。
Dim arr()
arr=range(“A1:F65536”)
2)将内存数组数据写入RANGE。在内存数组经过计算处理后,写回时只需下句就可以了。
range(“A1:F65536”)= arr
2.非数组变量快于数组变量。当数组很大时,根据下标提取数值会比从单个变量慢得多,这时可以把需要多
次使用的数组值先赋给内存变量。
3.减少使用REDIM的次数。REDIM是对数组操作中最费时的动作。可以先预算大小,不够或多余时 再进行调整。
ORACLE纯SQL实现多行合并一行
表结构如下:
NAME Null Type
------------------------ --------- -----
N_SEC_CODE NOT NULL CHAR(6)
C_RESEARCHER_CODE NOT NULL VARCHAR2(20)
此表保存了“股票”与“研究员”的对应关系数据,一般而言,对于同一只股票而言,可能有多个研究员
对其进行跟踪研究。所以目前遇到一个要求,需查询出每只股票和对应的研究员(研究员代码间,使用逗号分隔)。
例如有如下数据:
000297 chenpeng
000297 liusu
合并处理后需显示为:
000297 chenpeng,liusu
网上查了很多方法,但通常而言都是编写自定义多行文本合并函数,或者对支持的列数具有局限性。
最后在英文google中搜到如下比较巧的方法。不用在数据库中增加function,纯SQL一次性搞定,
而且扩充性很好,没有列的限制。
SELECT n_sec_code, TRANSLATE (LTRIM (text, '/'), '*/', '*,') researcherList
FROM (SELECT ROW_NUMBER () OVER (PARTITION BY n_sec_code ORDER BY n_sec_code,
lvl DESC) rn,
n_sec_code, text
FROM (SELECT n_sec_code, LEVEL lvl,
SYS_CONNECT_BY_PATH (c_researcher_code,'/') text
FROM (SELECT n_sec_code, c_researcher_code as c_researcher_code,
ROW_NUMBER () OVER (PARTITION BY n_sec_code ORDER BY n_sec_code,c_researcher_code) x
FROM m_researcher_stock_rel
ORDER BY n_sec_code, c_researcher_code) a
CONNECT BY n_sec_code = PRIOR n_sec_code AND x - 1 = PRIOR x))
WHERE rn = 1
ORDER BY n_sec_code;
预想的结果成功出现,多行数据成功汇总到一行,特此分享与大家。对于你自己的应用中,只需要把SQL中“n_sec_code”
换为你的用来汇总的列,“c_researcher_code”替换为需合并文本的列,“m_researcher_stock_rel”替换为你的表名,就是这么简单。
SQL分析:
1、利用 “ROW_NUMBER () OVER (PARTITION BY……” 为按“股票代码”汇总后的数据行添加组内序号
2、“SYS_CONNECT_BY_PATH” 按组内序号相邻关系,为每一层进行不同行的“研究员代码”叠加
3、再次利用“股票代码”进行组内分组,但按第二部中的层次排倒序,增加调整后等级
4、取所有调整后等级为1的结果,即为所要求的数据行
方法很巧妙,值得学习。:-)
感谢网友@OctoberOne、@ericqliu的指点,在ORACLE10中可使用以下方法:
SELECT n_sec_code, wmsys.wm_concat (c_researcher_code) as result
FROM m_researcher_stock_rel
GROUP BY n_sec_code
利用syslinux制作USB启动菜单
一、概述
U盘具有价格越便宜、携带方便的特点,在工作中可以把一些自己常用的工具整和到里面,在电脑维护方面比较方便。
二、系统的选择
1、dos系统
目前在dos工具盘中比较多,有MS-DOS 7.1,深山红叶DOS工具盘、MaxDos、矮人dos工具盘、超普DOS工具盘等等,在制作中你自己自己选择自己喜欢的dos工具盘,我选择的MaxDos,里面有许多的工具,比如pq、windows密码破解等。
2、WinPE系统
WinPE系统网上提供的版本很多,基本都是修改至老毛桃的WinPE,主要有深山红叶WINPE工具箱、老九WinPE 老毛桃修改之撒手不管版、金手指快速装机U盘版、通用PE工具箱、完美者U盘WinPE维护系统、晨枫U盘维护等,为了使集成时修改最少,这里选择晨枫U盘维护版。
3、Linux
U盘上的Linux比较多,比如Damn Small Linux、Slax Linux、puppy linux、Ubuntu等选择体积比较小的,功能比较完备的,这里选择Slax。
4、口袋操作系统
主要有ceedo、mojopac和PortableApps Suite,根据自己的爱好去选择,我从使用习惯和功能上在这里选了ceedo。
三、u盘启动引导程序的选择
任何一个操作系统在任何一个硬件平台上运行都需要一个引导的过程,即,初始化软件环境、把内核从存储介质放到内存当中去,并开始运行。引导程序上承 BIOS,下接内核的初始化代码,开一次机只运行一次后就不留痕迹了,相当的重要。
可对u 盘引导的引导程序主要有IO、NTLDR、syslinux、Grub等,她们各有特点,从兼容性考虑,我选择了syslinux。syslinux是专门用来引导可移动介质的轻量级引导程序,支持initrd功能,initrd = init ramdisk,就是在启动时使用的一个内存虚拟磁盘,提高了对广泛的硬件支持性。
四、软件清单与说明
1、syslinux-3.73
Syslinux系统文件,可以到下面地址下载:
http://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-3.73.zip
相关安装教程:
http://syslinux.zytor.com/wiki/index.php/SYSLINUX
2、HP优盘格式化工具
HP优盘格式化工具是用来对u盘进行格式化的工具,也可以直接进行做io的启动u盘。可以到下面地址下载:
http://www.xdowns.com/soft/6/7/2007/Soft_35477.html
3、GDParam
GDParam这个工具可以方便得获取 PC 虚拟启动当中所需要的磁盘镜像文件的c/h/s 参数。在用syslinux启动dos的磁盘镜像时需要指定c/h/s 参数。可以到下面地址下载:
http://www.05sun.com/downinfo/5089.html
4、WinImage
用来创建和修改磁盘镜像的软件,你可以自己创建或者修改dos的磁盘镜像。可以到下面地址下载:
http://www.crsky.com/soft/281.html
5、UltraISO
UltraISO软碟通是一款光盘映像ISO文件编辑制作工具,它可以图形化地从光盘、硬盘制作和编辑ISO文件。可以对下载得到的winpe或者slax光盘映像进行修改。可以到下面地址下载:
http://www.crsky.com/soft/1134.html
6、WinHex
Winhex是在Windows下运行的十六进制编辑软件,在对winpe进行安装文件修改等方面需要的工具。可以到下面地址下载:
http://www.orsoon.com/Soft/4921.html
7、XCAB
XCAB能调用系统的makecab.exe文件,把文件加或目录压缩为CAB,特别支持为 XCMD DEVI 生成 CAB,在对winpe进行修改打包时用到。可以到下面地址下载:
http://bbs.wuyou.net/attachment.php?aid=14397
8、WimTool
WimTool可以对Wim格式文件进行进行操作处理,在修改winpe的外置程序包时必须用的。可以到下面地址下载:
http://www.newasp.net/soft/app/26726.html
9、slax 6.0.9
ftp://ftp.slax.org/SLAX-6.x/slax-6.0.9.iso
10、.晨枫U盘维护V2.0_512M版
http://www.rayfile.com/zh-cn/files/5731196e-e314-11dd-85f0-0019d11a795f/
11、Loadbin
http://download.gna.org/grubutil/makerom-0.1-bin-w32-2008-01-01.zip
12、ceedo
http://www.myfiles.com.cn/soft/5/5224.htm
五、安装 SYSLINUX
1、把u盘格式化,采用fat32格式。你可以用windows或者HP优盘格式化工具进行。
2、在u盘的根创建boot文件夹,在boot下创建syslinux子文件夹
3、把下载得到的syslinux-3.73.zip解压缩到任意文件夹,在其中的win32下有syslinux.exe文件。拷贝syslinux.exe到你u盘的/boot/syslinux文件夹下
4、打开命令行,切换到u盘根目录,进入/boot/syslinux文件夹,执行syslinux.exe,假设你的u盘的盘符为j:
在命令行下依次运行下列命令:
C:\Documents and Settings\xxxxx> J:
J:\>Cd boot/syslinux
J:\boot\syslinux> syslinux.exe -ma -d /boot/syslinux j:
其中 -d /boot/syslinux是把命令生成的启动系统文件ldlinux.sys放到/boot/syslinux目录,可以从该目录寻找syslinux.cfg配置文件。
六、配置启动菜单
1、拷贝syslinux系统文件
启动菜单的配置都在syslinux.cfg文件中。需要几个syslinux文件:
memdisk 引导IMG镜像的文件
vesamenu.c32 二种窗口模块之一
menu.c32 二种窗口模块之一
chain.c32 指定分区启动 如:chain.c32 hd0 1 (或chain.c32 hd1 1)
reboot.c32 重新启动计算机
在解压缩的syslinux-3.73文件夹中搜索以上就几个文件依次拷贝到u盘的/boot/syslinux文件夹下。
2、SYSLINUX.CFG菜单
default vesamenu.c32 默认使用vesamenu.c32窗口模块(必填项)
timeout 60 菜单停留时间,计时单位1/10秒(必填项)
F1 readme.txt 按F1阅读自述文件
F2 syslinux.cfg 按F2显示启动菜单配置文件
MENU BACKGROUND back.png 运行窗口背景图片(必填项)
MENU TITLE 菜单标题
MENU WIDTH 40 菜单选择条长度(必填项)
MENU MARGIN 0 菜单选择条缩进,0不缩进(若删除则自动使用默认值)
MENU ROWS 30 菜单选择条却换,0不能却换(若删除则自动使用默认值)
MENU HELPMSGROW 26 (若删除则自动使用默认值)
MENU TIMEOUTROW 27 倒计时条下移,0不下移(若删除则自动使用默认值)
MENU TABMSGROW 28 TAB显示条下移,0不下移 (若删除则自动使用默认值)
MENU CMDLINEROW 28 TAB信息条下移,0不下移 (若删除则自动使用默认值)
上面这2项的参数必须一致,以免按TAB键后弹出的信息条易位
MENU HSHIFT 0 菜单选择条右移,0不右移 (若删除则自动使用默认值)
MENU VSHIFT 0 菜单选择条顶端,0不下移(若删除则自动使用默认值)
menu color screen 37;40 #00000000 #00000000 none
menu color border 30;44 #00000000 #00000000 none(必填项)
menu color title 1;36;44 #00000000 #00000000 none
七、dos系统的配置
1、在u盘的根建立dos文件夹,从网上下载maxdos系统,或者你自己用WinImage进行创建修改成img文件,比如MaxDOS.img放在dos文件下。
2、取得img文件的CHS参数
syslinux支持gzip或zip压缩格式的磁盘映像,但memdisk自身不能压缩,memdisk支持标准floppy镜像直接启动,非标准(容量大于2880K的)要附加CHS参数。我们可以用GDParam取得img文件的CHS参数。
3、修改SYSLINUX.CFG
打开SYSLINUX.CFG文件在里面添加形如下的内容:
LABEL MaxDOS
MENU LABEL MaxDOS
kernel /boot/syslinux/memdisk c=142 h=4 s=36 floppy
append initrd=/dos/MaxDOS.img
八、slax系统的配置
1、把下载得到的slax-6.0.9.iso完全提取出来放在slax-6.0.9文件夹。
2、把其中的slax文件夹包含子文件复制到u盘的根目录。
3、slax-6.0.9文件夹中的下面vmlinuz、initrd.gz两文件拷贝到u盘的boot文件下。
4、打开slax-6.0.9文件夹boot中的slax.cfg文件,复制其中的:
LABEL xconf
MENU LABEL Slax Graphics mode (KDE)
kernel /boot/vmlinuz
append initrd=/boot/initrdch.gz ramdisk_size=6666 root=/dev/ram0 rw autoexec=xconf;telinit~4 changes=/slax/ locale=CHS.UTF-8
5、把复制的上面内容贴人u盘/boot/syslinux下的SYSLINUX.CFG
九、winpe的配置
1、解压缩下载得到的晨枫U盘维护V2.0_512M版.rar到任意一文件夹。
2、在u盘根新建winpe文件夹。
3、修改winpe OEM信息
解压缩得到的MyFeng/Boot下的WinPE.is_改为WinPE.cab,用winrar打开解压出WinPE.iso,用UltraISO打开,提取出\WXPE\SYSTEM32下的oeminfo.ini和OEMLOGO.bmp进行修改,导入替换掉就可以了,保持iso文件,把新得到的iso文件用xcab软件重新进行打包,得到WinPE.cab,再把WinPE.cab改为WinPE.is_ 。
4、修改winpe外置程序包
解压缩解压缩得到的MyFeng/Boot下的OP.WIM用WimTool解开,然后你可以替换桌面背景图片,加入或者删除一些程序,然后再用WimTool打包成OP.WIM
5、把处理完的OP.WIM、WinPE.is_文件拷贝到u盘的winpe文件夹。
6、打开MyFeng/Boot下的winpe.ini修改其中的关于OP.WIM位置的代码,你也可以修改其他的链接。修改如下。
MOUN %CurDrv%\winpe\OP.WIM,Y:\外置程序,1
保存,然后拷贝到u盘的boot文件夹下。
7、拷贝MyFeng/Boot下的ldrxpe、fon.bin、ntd.com到u盘的boot文件夹下。
8、用记事本修改MyFeng/Boot下的xpsi文件中的WinPE.IS_路径为:
OsLoadOptions="/minint /fastdetect /rdexportascd /rdpath=winpe\WinPE.IS_"
保持,然后拷贝到u盘的boot文件夹下。
9、解压缩下载得到的loadbin-0.1-bin-w32-2008-03-01.zip,把其中的ldntldr.bin改名为ldntldr,然后拷贝到u盘的boot文件夹下。
10、修改SYSLINUX.CFG文件,在其中加入下面内容:
LABEL WinPE
MENU LABEL Lite Win PE
kernel /boot/ldntldr
append initrd=/boot/ldrxpe
十、安装Ceedo
把下载得到的Ceedo安装到你的u盘,然后进行配置。
十一、U盘的目录结构和启动配置文件
1、根目录
|---boot----|--syslinux--| sysinux.cfg
|---dos
|---slax
|---winpe
|---Ceedo
|---My Documents
2、参考SYSLINUX.CFG文件内容:
prompt 1
timeout 90
default vesamenu.c32
MENU BACKGROUND back.png
MENU WIDTH 36
MENU MARGIN 0
MENU ROWS 8
MENU HELPMSGROW 14
MENU TIMEOUTROW 22
MENU TABMSGROW 24
MENU CMDLINEROW 24
MENU HSHIFT 40
MENU VSHIFT 2
menu color screen 37;40 #00000000 #00000000 none
menu color border 30;44 #00000000 #00000000 none
menu color title 1;36;44 #00000000 #00000000 none
menu color unsel 37;44 #ff60CA00 #00000000 none
menu color hotkey 1;37;44 #ff60CA00 #00000000 none
menu color sel 7;37;40 #ffffffff #ff60CA00 none
menu color hotsel 1;7;37;40 #ff808080 #ff60CA00 none
menu color scrollbar 30;44 #00000000 #00000000 none
menu color tabmsg 31;40 #aaaaaaaa #00000000 none
menu color cmdmark 1;36;40 #ffff0000 #00000000 none
menu color cmdline 37;40 #aaaaaaaa #00000000 none
menu color pwdborder 30;47 #ffff0000 #00000000 std
menu color pwdheader 31;47 #ffff0000 #00000000 std
menu color pwdentry 30;47 #ffff0000 #00000000 std
menu color timeout_msg 37;40 #aaaaaaaa #00000000 none
menu color timeout 1;37;40 #ffaaaaff #00000000 none
menu color help 37;40 #aaaaaa00 #00000000 none
menu color msg07 37;40 #90ffffff #00000000 std
MENU TITLE Jinjun's Tools Disk
LABEL MaxDOS
MENU LABEL MaxDOS
kernel /boot/syslinux/memdisk c=142 h=4 s=36 floppy
append initrd=/dos/MaxDOS.img
TEXT HELP
More about currently selected:
Run MaxDOS.
ENDTEXT
LABEL WinPE
MENU LABEL Lite Win PE
kernel /boot/ldntldr
append initrd=/boot/ldrxpe
TEXT HELP
More about currently selected:
Run Lite Win PE.
ENDTEXT
LABEL xconf
MENU LABEL Slax Graphics mode (KDE)
kernel /boot/vmlinuz
append initrd=/boot/initrdch.gz ramdisk_size=6666 root=/dev/ram0 rw autoexec=xconf;telinit~4 changes=/slax/ locale=CHS.UTF-8
TEXT HELP
More about currently selected:
Run Slax the best way we can.
ENDTEXT
LABEL reboot
MENU LABEL reboot
kernel /boot/syslinux/reboot.c32
TEXT HELP
More about currently selected:
reboot.
ENDTEXT
十二、使用
在使用中你可以把启动顺序设置u-hdd方式优先。