星期三, 四月 30, 2008
如何得到JSON对象的数目?
for 函数来遍历
一种是单纯的数组:
strJSON = "['one','two',{obj1:'obj1_one',obj2:'obj2_two'}]";
var arrObj = eval('(' +strJSON+ ')');
alert(arrObj.length);
另外一种是复杂对象:
var jsonString = "{field1:'data1',field2:'data2',arrField1:['arrField1Content1','arrField1Content2']}";
var obj = eval('(' + jsonString + ')');
var objCount=0;
for(_obj in obj) objCount++;
alert(objCount);
星期一, 二月 11, 2008
RealPlay 11 的不兼容
比如使用kmplayer放电影或 .rmvb无声音的情况.
或者WinAVI Video Converter 7.x,8.0版本转换视频到手机等其他格式的时候,只有图像,
没有声音。
解决的办法是用realplay 10.x的cook.dll来替换realplay 11版本的cook.dll,这样启动机器后,就正常了。这个dll在目录C:\Program Files\Common Files\Real\Codecs下。
这个情况很糟糕,希望以后能改进。
星期六, 一月 19, 2008
如何配置apache,jboss mod_jk一起工作
http://labs.jboss.com/jbossas/docs/Clustering_Guide/beta422/html/clustering-http-modjk.html
Apache下载:
http://httpd.apache.org/
Mod_Jk下载:
http://tomcat.apache.org/download-connectors.cgi
编译好的版本:
http://apache.mirror.phpchina.com/tomcat/tomcat-connectors/jk/binaries/
注意下载对应的apache http server的正确版本。
mod_jk-1.2.26-httpd-2.2.6.so 这个名字表示对应http server 2.2.6的版本,其他配置,参看jboss文档
星期五, 一月 18, 2008
Kaspersky 注册表的删除
[-HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/SystemCertificates/SPC/Certificates]
[-HKEY_LOCAL_MACHINE/SOFTWARE/KasperskyLab/LicStorage]
[-HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Cryptography/RNG]
保存,为k.reg,然后运行就可以删除啦。
星期三, 一月 16, 2008
Redhat 如何打开 telnet
需要如此
/etc/init.d/./ipchains stop
/etc/init.d/./xinetd restart //重起xinetd
如果需要允许root远程登录,修改
/etc/securetty
加入:pts/0,pts/1
星期六, 十二月 22, 2007
罗马数字的表示方法
II - 2 duo
III - 3 tres
IV - 4 quattuor
V - 5 quinque
VI - 6 sex
VII - 7 septem
VIII - 8 octo
IX - 9 novem
X - 10 decem
XI - 11 undecim
XII - 12 duodecim
XIII - 13 tresdecim
XIV - 14 quattuordecim
XV - 15 quindecim
XVI - 16 sedecim
XVII - 17 septendecim
XVIII - 18 duodeviginti
XIX - 19 undeviginti
XX - 20 viginti
XXI - 21 viginti unus
XXII - 22 viginti duo
XXVIII - 28 duodetriginta
XXIX - 29 undetriginta
XXX - 30 triginta
XL - 40 quadraginta
L - 50 quinquaginta
1~10: I II III IV V VI VII VIII IX X
11~20: XI XII XIII XIV XV XVI XVII XVIII XIX XX
21~30: XXI XXII XXIII XXIV XXV XXVI XXVII XXVIII XXIX XXX
31~40: XXXI XXXII XXXIII XXXIV XXXV XXXVI XXXVII XXXVIII XXXIX XL
41~50: XLI XLII XLIII XLIV XLV XLVI XLVII XLVII XLIX L
其中,I 为1
V为5
X为10
L为50
星期五, 十二月 21, 2007
Hibernate的数据库事务处理
1. 介绍数据库事务、事务隔离级别、悲观锁、乐观锁等概念。
2.数据库ACID特征:
Atomic(原子性):指整个数据库事务是不可分割的工作单元。
Consistency(一致性):指数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性。
Isolation(隔离性):指的是在并发环境中,当不同的事务同时操纵相同的数据时,每个事务都有各自的完整数据空间。
Durability(持久性):指的是只要事务成功结束,它对数据库所作的更新就必须永久保存下来。
3.数据库系统支持两种事务模式:
自动提交模式:每个SQL语句都是一个独立的事务,当数据库系统执行完一个SQL语句后,会自动提交事务。
手动提交模式:必须由数据库客户程序显示指定事务开始边界和结束边界。
4.MySQL中数据库表分为3种类型:INNODB、BDB和MyISAM,其中MyISAM不支持数据库事务。MySQL中create table 语句默认为MyISAM类型。
5.对于同时运行的多个事务,当这些事务访问数据库中相同的数据时,如果没有采取必要的隔离机制,就会导致各种并发问题,这些并发问题可归纳为以下几类:
A.第一类丢失更新:撤销一个事务时,把其他事务已提交的更新数据覆盖。
B.脏读:一个事务读到另一个事务为提交的更新数据。
C.虚读:一个事务读到另一个事务已提交的新插入的数据。
D.不可重复读:一个事务读到另一个事务已提交的更新数据。
E.第二类丢失更新:这是不可重复读中的特例,一个事务覆盖另一个事务已提交的更新数据。
6.数据库系统提供了四种事务隔离级别供用户选择:
A.Serializable(串行化):一个事务在执行过程中完全看不到其他事务对数据库所做的更新。
B.Repeatable Read(可重复读):一个事务在执行过程中可以看到其他事务已经提交的新插入的记录,但是不能看到其他其他事务对已有记录的更新。
C.Read Commited(读已提交数据):一个事务在执行过程中可以看到其他事务已经提交的新插入的记录,而且能看到其他事务已经提交的对已有记录的更新。
D.Read Uncommitted(读未提交数据):一个事务在执行过程中可以拷打其他事务没有提交的新插入的记录,而且能看到其他事务没有提交的对已有记录的更新。
隔离级别越高,越能保证数据的完整性和一致性,但是对并发性能的影响也越大。对于多数应用程序,可以有优先考虑把数据库系统的隔离级别设为Read Commited,它能够避免脏读,而且具有较好的并发性能。尽管它会导致不可重复读、虚读和第二类丢失更新这些并发问题,在可能出现这类问题的个别场 合,可以由应用程序采用悲观锁或乐观锁来控制。
7.当数据库系统采用read Commited隔离级别时,会导致不可重复读喝第二类丢失更新的并发问题,可以在应用程序中采用悲观锁或乐观锁来避免这类问题。从应用程序的角度,锁可以分为以下几类:
A.悲观锁:指在应用程序中显示的为数据资源加锁。尽管能防止丢失更新和不可重复读这类并发问题,但是它会影响并发性能,因此应该谨慎地使用。
B.乐观锁:乐观锁假定当前事务操作数据资源时,不回有其他事务同时访问该数据资源,因此完全依靠数据库的隔离级别来自动管理锁的工作。应用程序采用版本控制手段来避免可能出现的并发问题。
8.悲观锁有两种实现方式:
A.在应用程序中显示指定采用数据库系统的独占所来锁定数据资源。SQL语句:select ... for update,在Hibernate中使用get,load时如session.get(Account.class,new Long(1),LockMode,UPGRADE)
B.在数据库表中增加一个表明记录状态的LOCK字段,当它取值为“Y”时,表示该记录已经被某个事务锁定,如果为“N”,表明该记录处于空闲状态,事务可以访问它。增加锁标记字段就可以实现。
9.利用Hibernate的版本控制来实现乐观锁
乐观锁是由程序提供的一种机制,这种机制既能保证多个事务并发访问数据,又能防止第二类丢失更新问题。
在应用程序中可以利用Hibernate提供的版本控制功能来视线乐观锁,OR映射文件中的
星期三, 十二月 19, 2007
VBA.Vbscript的定时器timer.任务安排功能的实现
Application.OnTime(EarliestTime, Procedure, LatestTime, Schedule)
因为可以有许多的任务,所以默认的索引任务的唯一key,就是该任务开始的时间。就是:EarliestTime,如果想可以控制一个任务,必须保留下来开始任务的时间。
vba中需要申明一个全局的public变量来保存,
例子:
Public RunWhen As Double
找一个地方调用下面的方法就可以了。
sub msgMovie
RunWhen = Now + DateTime.TimeValue("00:00:05")
Application.OnTime RunWhen, "msgMovie"
end sub
如果要停止这个任务,需要调用以下方法:
sub stopTime()
On Error Resume Next
Application.OnTime EarliestTime:=RunWhen, Procedure:="msgMovie", Schedule:=False
end Sub
VBA/Vbscript 如何彻底关闭一个UserForm实例
当点击close按钮的时候,往往是调用me.hide方法来隐藏。单这样不能完全清楚当前
实例,当再次调用me.show的时候,只是将该窗口重新显示。
所以,如果需要在隐藏窗口的时候动态修改了内容,当再次显示的时候,
想显示出来的时候,必须加入unload me代码
如下:
Private Sub okbutton_Click()
aboutForm.Hide
Unload Me
End Sub
星期一, 十一月 19, 2007
Mathematica 6 帮助搜索没有反应
星期五, 十一月 09, 2007
配置Jboss web 虚拟目录
deploy/jboss-web.deployer/server.xml
加入下面类似的红色代码行。
<Host name="localhost"
autoDeploy="false" deployOnStartup="false" deployXML="false"
configClass="org.jboss.web.tomcat.security.config.JBossContextConfig"
>
......
<context path="/help" docbase="/home/jb/jboss/server/mrp_guide" debug="0" reloadable="true">
</host >
星期五, 十月 26, 2007
网络Vbscript函数库大全
不过现在还不太清楚如何在一个vbscript调用另外一个vbscript文件里的函数呢?
需要研究一下
星期二, 十月 23, 2007
Sqlite3 3.5.1 如何读取汉字?
当进入管理界面通过.read sql.txt运行的命令或insert into插入的汉字,sqlite3认为是"合格"的
UTF-8字符串。
所以需要,使用UltraEdit之类的软件,首先把sql.text转换为标准的utf-8的编码,然后再用.read读取
在powershell读取sqlite.net的数据库代码:
1.首先需要建立一个数据库,名字叫szsk.db3,只要在sqlite3.exe 后面跟随数据库名就可以了。
sqlite3.exe szsk.db3 ,然后敲入.quit推出,就发现szsk.db3已经被建立了。
sqlite3.exe可以从www.sqlite.org下载最新的window 版本。
把System.Data.SQLite.dll文件放在当前目录下.
SQLITE.NET 2.0 下载地址: http://sourceforge.net/projects/sqlite-dotnet2
cls
$global:sdb="$pwd\szsk.db3"
$global:url="$pwd\System.Data.SQLite.dll"
$createTable=@"
CREATE TABLE IF NOT EXISTS DoubleBall (
id integer primary key AUTOINCREMENT,
_Year varchar(4),
_Month varchar(2),
_Day varchar(2),
_Term varchar(3),
_N1 varchar(2),
_N2 varchar(2),
_N3 varchar(2),
_N4 varchar(2),
_N5 varchar(2),
_N6 varchar(2),
_Blue varhcar(2)
)
"@
$dropit= "drop table doubleball"
$command="";
trap [exception]
{
write-host "Exception"
}
function initdb
{
[void][system.reflection.Assembly]::LoadFile($url)
if ((test-path $sdb) -eq $FALSE)
{
$global:conn=new-object System.Data.SQLite.SQLiteConnection("data source="+$sdb+";Version=3;New=TRUE;")
}else
{
$global:conn=new-object System.Data.SQLite.SQLiteConnection("data source="+$sdb+";Version=3;New=false;")
}
}
function getDBConnection
{
$conn=new-object System.Data.SQLite.SQLiteConnection("data source="+$sdb+";Version=3;New=false;")
}
initdb
$command=new-object System.Data.SQLite.SQLiteCommand
if($args.count -eq 0)
{
return $conn
}else
{
$sql="select * from stocklist where stockCode='" + $args[0]+".sz'"
$command.CommandText =$sql
$command.Connection=$conn
$conn.open()
$dataReader =$command.ExecuteReader()
$script:cnName=$args[0]
while($dataReader.Read() )
{
$script:cnName $dataReader.GetString(1)
}
$dataReader.close()
$conn.close()
return $cnName
}
星期五, 十月 19, 2007
Vbscript 实现 cls命令
Set WshShell = CreateObject("wscript.shell")
WshShell.SendKeys "%( )+E+P{ENTER}CLS{ENTER}{TAB}",True
Wscript.Sleep 5000
但是这个代码有一个问题就是键盘缓冲区是在当前VBS执行完成后,才被发送到当前cmd
窗口,因此是一种后script方式,不是希望在执行其他vbscript之前清空的方式。
经过努力,发现没有其他办法实现。
星期三, 十月 17, 2007
如何在vbscript/cscript 中调用.dll
必须是通过regsvr32 可以注册的dll才能在vbscript中被调用,应为createobject必须是 ActiveObject dll,如果是标准的函数库,则无法使用。必须包装成Activexobject
2..NET Dll
必须通过 regasm注册后,就可以在vbscript中使用了?
regasm System.Data.SQLite.DLL /tlb:System.Data.SQLite.tlb /codebas
星期三, 十月 10, 2007
Powershell .ps1 如何得到返回的对象?
其他命令的输出需要同管道|out-null,来回避。
比如下面:
[system.reflection.Assembly]::LoadFrom($url) |out-null
$conn=new-object System.Data.SQLite.SQLiteConnection("data source="+$sdb+";Version=3;New=TRUE;")
如果想返回一个connection object
就在ps1文件的最后一行写明
$conn就可以了。
星期一, 十月 08, 2007
PowerShell如何处理HTMLDocument Object
HTMLDocument对象。
但是速度上同同样的VBS代码比感觉差太多。所以始终想使用"HTMLFILE"来处理HTML Document.
最终通过get-member发现了 在PowerShell里使用的IHTMLDocument2_write方法可以用来初始化HTMLDocument对象内容。
如下代码,可以在POWERSHELL里使用了。
$htmlDoc= New-Object -com "HTMLFILE"
$page = "<html><body>this is a test</body></html>"
$htmlDoc.IHTMLDocument2_write($page)
$htmlDoc.close
如何在PowerShell调用Dll文件。
[system.reflection.Assembly]::LoadFrom("dll所在绝对路径");
但是传统的非.NET生成的Dll库如何使用呢?
比较复杂,基本可以按照下列语句来使用:
$dir="C:\\curl-7.16.4\\FTCTRLPRO3.dll"
$ctor = [Runtime.InteropServices.DllImportAttribute].GetConstructor([string])
$attr = New-Object Reflection.Emit.CustomAttributeBuilder $ctor, $dir
这只能简单载入Dll,如果想使用Dll的具体的函数,可以参看如下文章:
http://www.leeholmes.com/blog/ManagingINIFilesWithPowerShell.aspx
##############################
##
## Invoke-WindowsApi.ps1
##
## From PowerShell Cookbook (O'Reilly)
## by Lee Holmes (http://www.leeholmes.com/guide)
##
## Invoke a native Windows API
##
## ie:
##
## ## Prepare the parameter
## CreateHardLink function
## $parameterTypes = [string],
## $parameters = [string]
##
## ## Call the CreateHardLink
## $result = Invoke-WindowsApi
## $parameterTypes
##
##############################
param(
[string] $dllName,
[Type] $returnType,
[string] $methodName,
[ Type[]] $parameterTypes,
[Object[]] $parameters
)
## Begin to build the dynamic
$domain = [AppDomain]::CurrentDomain
$name = New-Object Reflection.AssemblyName 'PInvokeAssembly'
$assembly = $domain.DefineDynamicAssembly( $name, 'Run')
$type = $module.DefineType('PInvokeType', "Public,BeforeFieldInit")
## Go through all of the
## we clone the user's inputs
## the P/Invoke call.
$inputParameters = @()
$refParameters = @()
for($counter = 1; $counter -le $parameterTypes.Length; $counter++)
{
## If an item is a PSReference
## wants an [out] parameter.
if($parameterTypes[$counter - 1] -eq [Ref])
{
## Remember which parameters
$refParameters += $counter
## On the cloned array, we
## .Net reference type that
## and the value with the
$parameterTypes[ $counter - 1] =
$parameters[$counter - 1 ].Value.GetType().MakeByRefType
$inputParameters += $parameters[$counter - 1].Value
}
else
{
## Otherwise, just add their
## input array.
$inputParameters += $parameters[$counter - 1]
}
}
## Define the actual P/Invoke
## attribute for any parameters
## parameters.
$method = $type.DefineMethod( $methodName, 'Public,HideBySig,Static
$returnType, $parameterTypes )
foreach($refParameter in $refParameters)
{
}
## Apply the P/Invoke construct
$ctor = [Runtime.InteropServices.DllImportAttribute ].GetConstructor([string])
$attr = New-Object Reflection.Emit.CustomAttribute
$method.SetCustomAttribute($attr)
## Create the temporary type,
$realType = $type.CreateType()
$inputParameters)
## Finally, go through all of
## values of the PSReference
foreach($refParameter in $refParameters)
{
$parameters[$refParameter - 1].Value = $inputParameters[$refParameter - 1]
}
星期五, 十月 05, 2007
Akashic records
阿 克夏的概念起源于印度。在婆罗门教的文献中,“阿克夏”被描述为“宇宙的精神—物质”,它包括了所有的存在与发展。与之类似的“梵”(婆罗门教与印度教的 主神之一,为创造之神,亦指终生之本)在实质上通常被视作非个人的、无法识别的最高宇宙原理,万物来源于它,万物又回归于它。它非实体、非物质、非先天而 又永恒存续,无始无终。按照古老的印度学说,梵“能够穿透一切,赋予至高无上的天神或是小到极点的矿物原子以生机。”古印度秘密学说最后明确指出,“阿克 夏就是一切创造物的起源于回归之地”,阿克夏“比一切万物都更古老”,简直就是“最后的终点”。阿克夏就是世间万物的根源(荒耶宗莲竭尽全力所追求的,想 必就是这个东西了);而阿克夏记录则使得任何时刻——包括过去、现在和未来——所发生的任何事情都不致归于遗忘之中,它记录了一切的信息。
当 然在客观上,没有确切的证据能证明这样一种所谓的“宇宙记忆”确实存在,或者证明这个世界上从一开始曾经发生的一切都被记录了下来。但若仅仅因此就认为阿 克夏记录是不存在的,同样不能令人信服。即使是现代,这种现象也能得到共鸣和认同,只是换了一个完全不同的名字:形态发生场。
剑桥大学的 生化学家鲁伯特·谢尔德雷克在其著作《创造性的宇宙》中写道,形态发生场能够摆脱时间和空间发挥作用。具体地说,如果一个生物种类的成员获得了一种新的行 为,那么它自己的形态发生场会由此改变。只要这种新的行为在足够长的时间里得到了坚持,物种成员之间就会形成一种相互影响,进而影响整个物种。实际的例子 是:一只老鼠一旦学会了在一明一暗的信号下告到黄油,其他老鼠就会越来越快地掌握这个方法。直到最后,所有的老鼠——即便不是由最初的那只生出来的,也不 曾与它有过接触——都学会了这种行为。
按照谢尔德雷克的观点,自然是具有“记忆”的,我们通常视作自然法则的东西只不过是“习惯”。自然存在与“习惯”也就是“行为模式”之中。根据这一构想,自然界中的每一类事物都必须按照它那一类的“集体记忆”内容来行事,从有生命的事物到无生命的物质都是如此。