随记

by 章玖 13. January 2012 17:42

若说无缘,今生偏又遇见她,若说有缘,奈何十年两相忘.

在快要遗忘她的时候,偏偏她又出现...傻妞跟我说,这就是人生.

Tags:

随记 | 心情日志

情缘了

by 章玖 19. December 2011 15:22

      情缘了,               
  此恨绵,
  往日恩爱尽云烟。
  心已碎,
  泪亦干,
  茫茫天涯啼杜鹃。
  念伊人,
  望眼穿,
  悠悠岁月吾难遣。
  芙蓉美,
  娇花艳,
  纤纤柳腰何人揽?
  自叹命薄属红颜。
  今生难见君,
  再修来世缘,
  除却三千烦恼丝,
  终身伴佛青灯前。

 

 

Tags:

精美散文

有一种单身,只为了等一个人

by 章玖 18. December 2011 19:23

总有人问你,有对象没?
  呵呵,没有呢。
  不会吧,不可能吧 ……

  其实,那是真的,不是没人追,没人要,只是没有合适的;
  不是眼光高,要求多,只是没有有感觉的。
  也许有时想恋爱,想让自己不再寂寞,可是那个人却没有,不想随随便便的爱了。
  有时候当自己静下心来会觉得自己的执着很可笑,
  为什么不去恋爱?为什么要让自己单身呢?
  难道是爱上了孤独爱上了寂寞吗?

  其实不然,因为有一种单身叫“宁缺勿滥”。
  他们对爱很专一也很执着,有自己独特的思想,能够坚持自己;
  在茫茫人海中只想找一个能让自己对上眼的人,
  也许在别人眼里那很傻,可是这样的傻只是想对得起自己的心;
  让自己孤独让自己寂寞就是不可以让自己随便和人恋爱;
  前世的500次回眸才换来今生的一次擦肩而过,
  这样的虚幻不去相信,缘分没有多少,要得只是感觉;
  不会轻易的去恋爱,不想去欺骗别人,也不想去骗自己,爱是纯洁的互相的,
  但如果一旦遇到那个她就会坚持不懈,定下自己的心,绝不会花心,用心去爱。

  每个人心里都有自己另一半的身影的,
  就算是勉强找到另一半的你,难道在你的心里除了他就没有另一个心底的人吗?
  在心里也会有对另一半的憧憬,希望彼此的遇见是一个浪漫美丽的邂逅;
  希望她是你的公主,但却不会沉迷于这种童话的幻想,
  只想要那份属于自己的真实邂逅,不会去痴迷于公主,
  只要我的那个她,只是想找个懂自己的愿意陪伴自己的。
  当你有一天真正遇到那个她,

  两人的交往中绝对会为彼此设定底线,不会轻易越过;
  尊重爱情,尊重感情,尊重彼此,
  不会随便开始,但一旦开始,那么就会是最珍惜生活的人。
  因为他们相信爱。

  当遇到一个喜欢自己但没有好感的人,
  会礼貌而尊重的对方说“对不起,我们不适合”,
  尊重自己的感情也是尊重别人的感情,
  不会让对方浪费时间,如果对方觉得朋友可以做,当然我很乐意。
  但想要改变我的想法,不可能,
  因为他们不会轻易让自己妥协,除非你是哪个她。

  有朋友说,现在的社会已经不流行宁缺勿滥了,应该是宁滥勿缺,
  可能那是对的,但我却不想改变,难道这样错了吗?
  不想像别人那样轻易的爱了,轻易的让自己不孤单了,
  当结束一段又一段情时不会有任何伤感,因为那样的人没有用过情, 确切的说他们不懂爱与被爱,
  会对所有的异性都有好感,不会执着与追求自己的那个她,
  相对于宁缺勿滥之人他们会更现实,也更会在恋爱中保护自己,
  分手后的他不会知道痛的感觉,他们不曾为爱付出。

  而宁缺勿滥的人不是这样,他们从不会,会将一段情维持很长,
  结束时他们会伤心、痛苦、难过,
  曾经付出过,不会后悔,让自己刻骨铭心的爱,
  要用心去等待,哪怕是用一生。

  孤独,不一定不快乐;
  得到,不一定能长久;

  失去,不一定不再拥有。
  我在等的人,看到了吗?

Tags:

精美散文

js 日期格式化

by 章玖 15. December 2011 05:07
<script language="JavaScript"> 
Date.prototype.format = function(format) //author: meizz 
{ 
  var o = { 
    "M+" : this.getMonth()+1, //month 
    "d+" : this.getDate(),    //day 
    "h+" : this.getHours(),   //hour 
    "m+" : this.getMinutes(), //minute 
    "s+" : this.getSeconds(), //second 
    "q+" : Math.floor((this.getMonth()+3)/3),  //quarter 
    "S" : this.getMilliseconds() //millisecond 
  } 
  if(/(y+)/.test(format)) format=format.replace(RegExp.$1, 
    (this.getFullYear()+"").substr(4 - RegExp.$1.length)); 
  for(var k in o)if(new RegExp("("+ k +")").test(format)) 
    format = format.replace(RegExp.$1, 
      RegExp.$1.length==1 ? o[k] : 
        ("00"+ o[k]).substr((""+ o[k]).length)); 
  return format; 
} 
alert(new Date().format("yyyy/MM/dd")); 
alert(new Date("january 12 2008 11:12:30").format("yyyy-MM-dd hh:mm:ss")); 
</script>

Tags:

javascript

大型网站架构不得不考虑的10个问题

by 章玖 6. December 2011 18:11

这里的大型网站架构只包括高互动性高交互性的数据型大型网站,基于大家众所周知的原因,我们就不谈新闻类和一些依靠HTML静态化就可以实现的架构了,我们以高负载高数据交换高数据流动性的网站为例,比如海内,开心网等类似的web2.0系列架构。我们这里不讨论是PHP还是JSP或者.NET环境,我们从架构的方面去看问题,实现语言方面并不是问题,语言的优势在于实现而不是好坏,不论你选择任何语言,架构都是必须要面对的。

这里讨论一下大型网站需要注意和考虑的问题

1、海量数据的处理

众所周知,对于一些相对小的站点来说,数据量并不是很大,select和update就可以解决我们面对的问题,本身负载量不是很大,最多再加几个索引就可以搞定。对于大型网站,每天的数据量可能就上百万,如果一个设计不好的多对多关系,在前期是没有任何问题的,但是随着用户的增长,数据量会是几何级的增长的。在这个时候我们对于一个表的select和update的时候(还不说多表联合查询)的成本的非常高的。

2、数据并发的处理

在一些时候,2.0的CTO都有个尚方宝剑,就是缓存。对于缓存,在高并发高处理的时候也是个大问题。在整个应用程序下,缓存是全局共享的,然而在我们进行修改的时候就,如果两个或者多个请求同时对缓存有更新的要求的情况下,应用程序会直接的死掉。这个时候,就需要一个好的数据并发处理策略以及缓存策略。

另外,就是数据库的死锁问题,也许平时我们感觉不到,死锁在高并发的情况下的出现的概率是非常高的,磁盘缓存就是一个大问题。

3、文件存贮的问题

对于一些支持文件上传的2.0的站点,在庆幸硬盘容量越来越大的时候我们更多的应该考虑的是文件应该如何被存储并且被有效的索引。常见的方案是对文件按照日期和类型进行存贮。但是当文件量是海量的数据的情况下,如果一块硬盘存贮了500个G的琐碎文件,那么维护的时候和使用的时候磁盘的Io就是一个巨大的问题,哪怕你的带宽足够,但是你的磁盘也未必响应过来。如果这个时候还涉及上传,磁盘很容易就over了。

也许用raid和专用存贮服务器能解决眼下的问题,但是还有个问题就是各地的访问问题,也许我们的服务器在北京,可能在云南或者新疆的访问速度如何解决?如果做分布式,那么我们的文件索引以及架构该如何规划。

所以我们不得不承认,文件存贮是个很不容易的问题

4、数据关系的处理

我们可以很容易的规划出一个符合第三范式的数据库,里面布满了多对多关系,还能用GUID来替换INDENTIFY COLUMN 但是,多对多关系充斥的2.0时代,第三范式是第一个应该被抛弃的。必须有效的把多表联合查询降到最低。

5、数据索引的问题

众所周知,索引是提高数据库效率查询的最方面最廉价最容易实现的方案。但是,在高UPDATE的情况下,update和delete付出的成本会高的无法想想,笔者遇到过一个情况,在更新一个聚焦索引的时候需要10分钟来完成,那么对于站点来说,这些基本上是不可忍受的。

索引和更新是一对天生的冤家,问题A,D,E这些是我们在做架构的时候不得不考虑的问题,并且也可能是花费时间最多的问题。

6、分布式处理

对于2.0网站由于其高互动性,CDN实现的效果基本上为0,内容是实时更新的,我们常规的处理。为了保证各地的访问速度,我们就需要面对一个绝大的问题,就是如何有效的实现数据同步和更新,实现各地服务器的实时通讯有是一个不得不需要考虑的问题。

7、Ajax的利弊分析

成也AJAX,败也AJAX,AJAX成为了主流趋势,突然发现基于XMLHTTP的post和get是如此的容易。客户端get或者post 到服务器数据,服务器接到数据请求之后返回来,这是一个很正常的AJAX请求。但是在AJAX处理的时候,如果我们使用一个抓包工具的话,对数据返回和处理是一目了然。对于一些计算量大的AJAX请求的话,我们可以构造一个发包机,很容易就可以把一个webserver干掉。

8、数据安全性的分析

对于HTTP协议来说,数据包都是明文传输的,也许我们可以说我们可以用加密啊,但是对于G问题来说的话,加密的过程就可能是明文了(比如我们知道的QQ,可以很容易的判断他的加密,并有效的写一个跟他一样的加密和解密方法出来的)。当你站点流量不是很大的时候没有人会在乎你,但是当你流量上来之后,那么所谓的外挂,所谓的群发就会接踵而来(从qq一开始的群发可见端倪)。也许我们可以很的意的说,我们可以采用更高级别的判断甚至HTTPS来实现,注意,当你做这些处理的时候付出的将是海量的database,io以及CPU的成本。对于一些群发,基本上是不可能的。笔者已经可以实现对于百度空间和qq空间的群发了。大家愿意试试,实际上并不是很难。

9、数据同步和集群的处理的问题

当我们的一台databaseserver不堪重负的时候,这个时候我们就需要做基于数据库的负载和集群了。而这个时候可能是最让人困扰的的问题了,数据基于网络传输根据数据库的设计的不同,数据延迟是很可怕的问题,也是不可避免的问题,这样的话,我们就需要通过另外的手段来保证在这延迟的几秒或者更长的几分钟时间内,实现有效的交互。比如数据散列,分割,内容处理等等问题。

10、数据共享的渠道以及OPENAPI趋势

Openapi已经成为一个不可避免的趋势,从google,facebook,myspace到海内校内,都在考虑这个问题,它可以更有效的留住用户并激发用户的更多的兴趣以及让更多的人帮助你做最有效的开发。这个时候一个有效的数据共享平台,数据开放平台就成为必不可少的途径了,而在开放的接口的情况保证数据的安全性和性能,又是一个我们必须要认真思考的问题了。

Tags:

程序开发

在线翻译和人民币汇率--WebServices(免费)

by 章玖 5. December 2011 17:57
//在线翻译和人民币汇率--WebServices(免费) 

//http://www.webxml.com.cn/WebServices/ForexRmbRateWebService.asmx 

//http://www.webxml.com.cn/WebServices/TranslatorWebService.asmx  
//  ---------------------案例
using System; 
using System.Configuration; 
using System.Data; 
using System.Web; 
using System.Web.Security; 
using System.Web.UI; 
using System.Web.UI.HtmlControls; 
using System.Web.UI.WebControls; 
using System.Web.UI.WebControls.WebParts; 
using cn.com.webxml.www; 

public partial class _Default : System.Web.UI.Page  
{ 
    
    protected void Page_Load(object sender, EventArgs e) 
    { 
        DataSet dsss = shuju(); 
        this.GridView1.DataSource = dsss.Tables[0].DefaultView; 
        this.GridView1.DataBind(); 
    } 
    public DataSet shuju() 
    { 
        ForexRmbRateWebService wh = new ForexRmbRateWebService(); 
        DataSet ds = wh.getForexRmbRate(); 
        return ds; 
    } 
    protected void Button1_Click(object sender, EventArgs e) 
    { 
        this.Label1.Text = ""; 
        TranslatorWebService fy = new TranslatorWebService(); 
        string text = this.TextBox1.Text.ToString(); 
        string[] st = fy.getEnCnTwoWayTranslator(text); 
       
        this.Label2.Text = text; 
        string sss = st[1].ToString(); 
        string[] fg = sss.ToString().Split('|'); 
        for (int c = 0; c < fg.Length;c++ ) 
        { 
            this.Label1.Text += fg[c].ToString() + "<br>"; 
        } 

    } 
    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) 
    { 
        GridView1.PageIndex = e.NewPageIndex; 
        DataSet dsss = shuju(); 
        GridView1.DataSource = dsss; 
        GridView1.DataBind(); 
    } 
}

Tags:

Ado.net中DataTable更新数据库应用

by 章玖 5. December 2011 16:48

功能描述:

在更新数据库的时候,我们常常编写SQL来实现,其实ADO.NET中就通过了对DataTable对象更新的方法,我们可以利用此特性来简化对数据的添加,删除,修改操作.DataTable自动更新的实现很好的封装了SQL的操作细节,尤其是在异格数据库之间两个表之间峰值时对字段是对象赋值,稳定性及佳,而且支持事务.

几大特点:

1、 封装SQL的操作,ado.net自动生成所需的insert、update、delete语句;

2、 对多记录操作可使用事务;

3、 记录及字段可使用对象赋值,这在异构数据交换时简单方便,稳定性好;

4、 安全性好,不存在输入安全和sql注入。

5、 需要业务逻辑处理时需要自行扩展功能;

当然在实际开发中可以扩展很多功能,比如1、对多个DataTable通过事务同时更新;2、通过使用SQL的混合方式,对datatable更新后可执行此sql以达到特殊功能需求。

应用背景:

此功能在做金山区社保卡数据实时更新是被使用,社保卡使用Oracel数据库,Oracle中的数据由市里不断的更新,我所做的也是不断的将数据更新到我们的社保卡数据库中(使用的数据是MS Server2005)。下面介绍功能实现和使用实例。

1. 源表结构

表名:YTable

LOGID varchar(16)

REGCODE varchar(18)

CREATETIME date

2. 目标表结构

表名:CTRL_CENTER_UPDT

LOGID varchar(16) –主键,操作的目标表必须要有一个主键

REGCODE varchar(18)

CREATETIME date

3.实现函数:

/// <summary>

/// 通过DataTable修改的记录进行事务批量更新

/// </summary>

/// <param name="dt">DataTable对象</param>

/// <param name="mySelectQuery">要更新的表的select语句,主要用来获取与datatable对应的数据表结构信息</param>

/// <param name="errstr">返回的错误信息</param>

/// <returns></returns>

public bool DataTableUpdate(DataTable dt, string mySelectQuery, ref string errstr)

{

errstr = "";

using (SqlConnection MyConn = new SqlConnection(‘server=192.168.1.2;database=db;uid=sa;pwd=123;’))

{

MyConn.Open();

SqlTransaction trn = MyConn.BeginTransaction();//开始事务

try

{

SqlDataAdapter myDataAdapter = new SqlDataAdapter();

SqlCommandBuilder sCommandBuilder = new SqlCommandBuilder(myDataAdapter);

myDataAdapter.SelectCommand = new SqlCommand(mySelectQuery, MyConn);

myDataAdapter.SelectCommand.Transaction = trn; //执行select 时使用事务

myDataAdapter.UpdateCommand = sCommandBuilder.GetUpdateCommand();

myDataAdapter.UpdateCommand.Transaction = trn; //执行Update 时使用事务

myDataAdapter.InsertCommand = sCommandBuilder.GetInsertCommand();

myDataAdapter.InsertCommand.Transaction = trn; //执行插入数据时使用事务

myDataAdapter.Update(dt);

trn.Commit();//提交事务

return true;

}

catch(Exception ex)

{

trn.Rollback();//撤销事务

errstr = ex.Message; //给要返回错误信息的变量赋值

return false;

}

finally

{

MyConn.Close();

}

}

调用实例

string errstr = "";

//其中Server.db.OracleConn.ExecuteSqlForDataSet是执行SQL返回DataSet,这个自己实现

DataTable ydt = Server.db. OracleConn.ExecuteSqlForDataSet("select top 1* from YTable").Tables[0];//获取源记录同时获取表结构信息

If(ydt.Rows.Count<=0) return;

//其中Server.db.SQLConn.ExecuteSqlForDataSet是执行SQL返回DataSet,这个自己实现

DataTable upt = Server.db.SQLConn.ExecuteSqlForDataSet("select * from CTRL_CENTER_UPDT where LOGID='1'").Tables[0];//获取目录记录同时获取表结构信息

if (upt.Rows.Count > 0)

{//有记录在更新

upt.Rows[0]["LOGID"] = ydt.Rows[0]["LOGID"];

upt.Rows[0]["REGCODE"] = ydt.Rows[0]["REGCODE "];

upt.Rows[0]["CREATETIME"] = System.DateTime.Now;

}

else

{//记录不存在在添加

DataRow dr = upt.NewRow();

dr["LOGID"] = ydt.Rows[0]["LOGID"];

dr["REGCODE"] = ydt.Rows[0]["REGCODE "];

dr["CREATETIME"] = System.DateTime.Now;

upt.Rows.Add(dr);

}

if (!DataTableUpdate(upt, "select * from CTRL_CENTER_UPDT where 1<>1", ref errstr))

{

MessageBox.Show(“操作失败”+ errstr);

}

Else

{

MessageBox.Show(“操作成功”+ errstr);

}

Tags: ,

asp.net

调用ICSharpCode.SharpZipLib对文件进行压缩

by 章玖 4. December 2011 13:31
PackUtility pack = new PackUtility(); 
            try{

                //文件压缩存放的地址
                pack.FileNameZipped = "C:TestMyZipFile.ZIP"; 

                //需要打包文件列表
                ArrayList arrayList=  new ArrayList();
                arrayList.Add("F:\\周一清晨的领导课.pdf");
                arrayList.Add("F:\\设计模式迷你手册.chm");

                pack.FileNamesToZIP = arrayList; 

                //压缩文件;
                pack.ZipFiles();

                //压缩文件夹
                pack.FileNameZipped = "C:TestMyZipFile222.ZIP";
                pack.FolderToZIP = "C:TEST";
                pack.ZipFolder(); 

                //发送邮件成功后删除当前文件
                pack.DeleteZipFile(pack.FileNameZipped);

            }
            catch(Exception ex)
            {
                pack.Dispose();
                Response.Write(ex.Message);
                Response.End();
            }
            finally{
                pack.Dispose();
            }

调用ICSharpCode.SharpZipLib对文件进行压缩.rar (97.29 kb)

Tags:

asp.net

ASP.NET常用代码

by 章玖 4. December 2011 06:44

Abs(number) 取得数值的绝对值。 

Asc(String) 取得字符串表达式的第一个字符ASCII 码。 

Atn(number) 取得一个角度的反正切值。 

CallByName (object, procname, usecalltype,[args()]) 执行一个对象的方法、设定或传回对象的属性。 

CBool(expression) 转换表达式为Boolean 型态。 

CByte(expression) 转换表达式为Byte 型态。 

CChar(expression) 转换表达式为字符型态。 

CDate(expression) 转换表达式为Date 型态。 

CDbl(expression) 转换表达式为Double 型态。 

CDec(expression) 转换表达式为Decimal 型态。 

CInt(expression) 转换表达式为Integer 型态。 

CLng(expression) 转换表达式为Long 型态。 

 

CObj(expression) 转换表达式为Object 型态。 

CShort(expression) 转换表达式为Short 型态。 

CSng(expression) 转换表达式为Single 型态。 

CStr(expression) 转换表达式为String 型态。 

Choose (index, choice-1[, choice-2, ... [, choice-n]]) 以索引值来选择并传回所设定的参数。 

Chr(charcode) 以ASCII 码来取得字符内容。 

Close(filenumberlist) 结束使用Open 开启的档案。 

Cos(number) 取得一个角度的余弦值。 

Ctype(expression, typename) 转换表达式的型态。 

DateAdd(dateinterval, number, datetime) 对日期或时间作加减。 

DateDiff(dateinterval, date1, date2) 计算两个日期或时间间的差值。 

DatePart (dateinterval, date) 依接收的日期或时间参数传回年、月、日或时间。 

DateSerial(year, month, day) 将接收的参数合并为一个只有日期的Date 型态的数据。 

DateValue(datetime) 取得符合国别设定样式的日期值,并包含时间。

 

Day(datetime) 依接收的日期参数传回日。 

Eof(filenumber) 当抵达一个被开启的档案结尾时会传回True。 

Exp(number) 依接收的参数传回e 的次方值。 

FileDateTime(pathname) 传回档案建立时的日期、时间。 

FileLen(pathname) 传回档案的长度,单位是Byte。 

Filter(sourcearray, match[, include[, compare]]) 搜寻字符串数组中的指定字符串,凡是数组元素中含有指定字符串,会将它们结合成新的字符串数组并传回。若是要传回不含指定字符串的数组元素,则include 参数设为False。compare 参数则是设定搜寻时是否区分大小写,此时只要给TextCompare 常数或1 即可。 

Fix(number) 去掉参数的小数部分并传回。 

Format(expression[, style[, firstdayofweek[, firstweekofyear]]]) 将日期、时间和数值资料转为每个国家都可以接受的格式。 

FormatCurrency(expression[,numdigitsafterdecimal [,includeleadingdigit]]) 将数值输出为金额型态。 

numdigitsafterdecimal 参数为小数字数,includeleadingdigit 参数为当整数为0 时是否补至整数字数。 

 

FormatDateTime(date[,namedformat]) 传回格式化的日期或时间数据。 

FormatNumber(expression[,numdigitsafterdecimal [,includeleadingdigit]]) 传回格式化 

的数值数据。Numdigitsafterdecimal 参数为小数字数,includeleadingdigit 参数为当整数为0 时是否补至整数字数。 

FormatPercent(expression[,numdigitsafterdecimal [,includeleadingdigit]]) 传回转换为百分比格式的数值数据。numdigitsafterdecimal 参数为小数字数,includeleadingdigit 参数为当整数为0 时是否补至整数字数。 

GetAttr(filename) 传回档案或目录的属性值。 

Hex(number) 将数值参数转换为16 进制值。 

Hour(time) 传回时间的小时字段,型态是Integer。 

Iif(expression, truepart, falsepart) 当表达式的传回值为True 时执行truepart 字段的程序,反之则执行falsepart 字段。 

InStr([start, ]string1, string2) 搜寻string2 参数设定的字符出现在字符串的第几个字符,start 为由第几个字符开始寻找,string1 为欲搜寻的字符串,string2 为欲搜寻的字符。 

Int(number) 传回小于或等于接收参数的最大整数值。 

IsArray(varname) 判断一个变量是否为数组型态,若为数组则传回True,反之则为False。

 

IsDate(expression) 判断表达式内容是否为DateTime 型态,若是则传回True,反之则为False。 

IsDbNull(expression) 判断表达式内容是否为Null,若是则传回True,反之则为False。 

IsNumeric(expression) 判断表达式内容是否为数值型态,若是则传回True,反之则为False。 

Join(sourcearray[, delimiter]) 将字符串数组合并唯一个字符串,delimiter 参数是设定在各个元素间加入新的字符串。 

Lcase(string) 将字符串转换为小写字体。 

Left(string, length) 由字符串左边开始取得length 参数设定长度的字符。 

Len(string) 取得字符串的长度。 

Log(number) 取得数值的自然对数。 

Ltrim(string) 去掉字符串的左边空白部分。 

Mid(string, start[, length]) 取出字符串中strat 参数设定的字符后length 长度的字符串,若length 参数没有设定,则取回start 以后全部的字符。 

Minute(time) 取得时间内容的分部分,型态为Integer。 

MkDir(path) 建立一个新的目录。 

Month(date) 取得日期的月部分,型态为Integer。

 

MonthName(month) 依接收的月份数值取得该月份的完整写法。 

Now() 取得目前的日期和时间。 

Oct(number) 将数值参数转换为8 进制值。 

Replace(expression, find, replace) 将字符串中find 参数指定的字符串转换为replace 参数指定的字符串。 

Right(string,length) 由字符串右边开始取得length 参数设定长度的字符。 

RmDir(path) 移除一个空的目录。 

Rnd() 取得介于0 到1 之间的小数,如果每次都要取得不同的值,使用前需加上Randomize 叙述。 

Rtrim(string) 去掉字符串的右边空白部分。 

Second(time) 取得时间内容的秒部分,型态为Integer。 

Sign(number) 取得数值内容是正数或负数,正数传回1,负数传回-1,0 传回0。 

Sin(number) 取得一个角度的正弦值。 

Space(number) 取得number 参数设定的空白字符串。

 

Split(expression[, delimiter]) 以delimiter 参数设定的条件字符串来将字符串分割为字符串数组。 

Sqrt(number) 取得一数值得平方根。 

Str(number) 将数字转为字符串后传回。 

StrReverse(expression) 取得字符串内容反转后的结果。 

Tan(number) 取得某个角度的正切值。 

TimeOfDay() 取得目前不包含日期的时间。 

Timer() 取得由0:00 到目前时间的秒数,型态为Double。 

TimeSerial(hour, minute, second) 将接收的参数合并为一个只有时间Date 型态的数据。 

TimaValue(time) 取得符合国别设定样式的时间值。 

Today() 取得今天不包含时间的日期。 

Trim(string) 去掉字符串开头和结尾的空白。 

TypeName(varname) 取得变量或对象的型态。 

Ubound(arrayname[, dimension]) 取得数组的最终索引值,dimension 参数是指定取得第几维度的最终索引值。 

 

Ucase(string) 将字符串转换为大写。 

Val(string) 将代表数字的字符串转换为数值型态,若字符串中含有非数字的内容则会将其去除后,合并为一数字。 

Weekday(date) 取的参数中的日期是一个星期的第几天,星期天为1、星期一为2、星期二为3 依此类推。 

WeekDayName(number) 依接收的参数取得星期的名称,可接收的参数为1 到7,星期天为1、星期一为2、星期二为3 依此类推。 

 

Tags:

asp.net

一图

by 章玖 3. December 2011 18:24

Tags:

音乐视频