博客园 - zhanglong0426
uuid:24b78886-0ed1-41c2-8670-e3f31dcf42c4;id=29876
2017-09-18T22:07:26Z
zhanglong0426
https://www.cnblogs.com/zhanglong0426/
feed.cnblogs.com
https://www.cnblogs.com/zhanglong0426/archive/2012/02/28/time.html
后台管理系统开发—小技术 - zhanglong0426
1. 开发过程中经常需要根据Status设置服务器控件,或者Html标签的可见性: 要结合三元表达式或者在后写一个具有返回值的公共方法 (1)服务器控件:visible = '<%# Convert.ToInt16(Eval("Stauts")) == 1 ? ture : false %>' 或者 visible ='<%# getStatus(Convert.ToInt32(Eval("ID"))) %>' ps:A. 必须要使用单引号' ' B.true,false 要小写 (
2012-02-28T10:34:00Z
2012-02-28T10:34:00Z
zhanglong0426
https://www.cnblogs.com/zhanglong0426/
【摘要】1. 开发过程中经常需要根据Status设置服务器控件,或者Html标签的可见性: 要结合三元表达式或者在后写一个具有返回值的公共方法 (1)服务器控件:visible = '<%# Convert.ToInt16(Eval("Stauts")) == 1 ? ture : false %>' 或者 visible ='<%# getStatus(Convert.ToInt32(Eval("ID"))) %>' ps:A. 必须要使用单引号' ' B.true,false 要小写 ( <a href="https://www.cnblogs.com/zhanglong0426/archive/2012/02/28/time.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zhanglong0426/archive/2012/02/10/2345063.html
C#时间日期格式转换(转) - zhanglong0426
有时候我们要对时间进行转换,达到不同的显示效果 默认格式为:2005-6-6 14:33:34 如果要换成成200506,06-2005,2005-6-6或更多的该怎么办呢 我们要用到:DateTime.ToString的方法(String, IFormatProvider) using System; using System.Globalization; String format="D"; DateTime date=DataTime,Now; Response.Write(date.ToString(format, DateTimeFormatInfo.Invari
2012-02-10T03:29:00Z
2012-02-10T03:29:00Z
zhanglong0426
https://www.cnblogs.com/zhanglong0426/
【摘要】有时候我们要对时间进行转换,达到不同的显示效果 默认格式为:2005-6-6 14:33:34 如果要换成成200506,06-2005,2005-6-6或更多的该怎么办呢 我们要用到:DateTime.ToString的方法(String, IFormatProvider) using System; using System.Globalization; String format="D"; DateTime date=DataTime,Now; Response.Write(date.ToString(format, DateTimeFormatInfo.Invari <a href="https://www.cnblogs.com/zhanglong0426/archive/2012/02/10/2345063.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zhanglong0426/archive/2012/02/05/2339065.html
CMS 进度小结 - zhanglong0426
年前开始一个星期做公司一个后台管理项目,到年后一个星期,我负责的模块基本完成。目录:数据库设计上传控件使用JavaScript验证(非空、格式)审批流程群组创建返回目录数据库设计在数据设计过程中,留下深刻印象的是,一对多,多对多的关系怎么设计数据表。一对多:两张表,其中一张表里的外键是另一张表的主键:例如一个product对应多个task,那么就是一张product表,一个task表,在task表里设置一个外键为fk-produtID。多对多:三张表,两张主表,一个中间表,中间表保存着另外两张表的主键。例如:一个order表,一个card表,一个orderTocard表,一个order对应多个
2012-02-05T07:47:00Z
2012-02-05T07:47:00Z
zhanglong0426
https://www.cnblogs.com/zhanglong0426/
【摘要】年前开始一个星期做公司一个后台管理项目,到年后一个星期,我负责的模块基本完成。目录:数据库设计上传控件使用JavaScript验证(非空、格式)审批流程群组创建返回目录数据库设计在数据设计过程中,留下深刻印象的是,一对多,多对多的关系怎么设计数据表。一对多:两张表,其中一张表里的外键是另一张表的主键:例如一个product对应多个task,那么就是一张product表,一个task表,在task表里设置一个外键为fk-produtID。多对多:三张表,两张主表,一个中间表,中间表保存着另外两张表的主键。例如:一个order表,一个card表,一个orderTocard表,一个order对应多个 <a href="https://www.cnblogs.com/zhanglong0426/archive/2012/02/05/2339065.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zhanglong0426/archive/2011/11/07/2239630.html
DropDownList的SelectValue和SelectedItem.Text属性 使用注意点 - zhanglong0426
DropDownList 的 SelectValue 和 SelectedItem.Text 的使用, 从数据库取出的值赋给两者时,值可能存在的情况,要考虑周全:希望值,错误值 (NULL,“”), 当取出的值,赋给SelectValue,但SelectValue不存在时,DropDownList下拉框默认显示第一栏的值; 当取出的值,赋给SelectedItem.Text ,但Select...
2011-11-07T10:30:00Z
2011-11-07T10:30:00Z
zhanglong0426
https://www.cnblogs.com/zhanglong0426/
【摘要】DropDownList 的 SelectValue 和 SelectedItem.Text 的使用, 从数据库取出的值赋给两者时,值可能存在的情况,要考虑周全:希望值,错误值 (NULL,“”), 当取出的值,赋给SelectValue,但SelectValue不存在时,DropDownList下拉框默认显示第一栏的值; 当取出的值,赋给SelectedItem.Text ,但Select... <a href="https://www.cnblogs.com/zhanglong0426/archive/2011/11/07/2239630.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zhanglong0426/archive/2011/10/26/2225621.html
Repeater使用小结 - zhanglong0426
自己很长时间没写博客了,做的东西不及时总结很容易就忘了。 通过调试出现,页面绑定数据了两次,第一次很正常,是因为控件事件触发的,第二次就莫名其妙了,而且还是页面首次登陆,进入了if(!isPostBack){}方法里面,google之后发现了<img src=””/>的问题,很是蹊跷! 详见:http://www.cnblogs.com/yjmyzz/archive/2009/06/11/15...
2011-10-26T12:01:00Z
2011-10-26T12:01:00Z
zhanglong0426
https://www.cnblogs.com/zhanglong0426/
【摘要】自己很长时间没写博客了,做的东西不及时总结很容易就忘了。 通过调试出现,页面绑定数据了两次,第一次很正常,是因为控件事件触发的,第二次就莫名其妙了,而且还是页面首次登陆,进入了if(!isPostBack){}方法里面,google之后发现了<img src=””/>的问题,很是蹊跷! 详见:http://www.cnblogs.com/yjmyzz/archive/2009/06/11/15... <a href="https://www.cnblogs.com/zhanglong0426/archive/2011/10/26/2225621.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zhanglong0426/archive/2011/10/24/2222349.html
提升(1) - zhanglong0426
Micosoft Visuals http://www.microsoftstudios.com/ (We develop original media experiences using a unique balance of emerging technologies and artistic innovation in a world-class production environment...
2011-10-24T02:17:00Z
2011-10-24T02:17:00Z
zhanglong0426
https://www.cnblogs.com/zhanglong0426/
【摘要】Micosoft Visuals http://www.microsoftstudios.com/ (We develop original media experiences using a unique balance of emerging technologies and artistic innovation in a world-class production environment... <a href="https://www.cnblogs.com/zhanglong0426/archive/2011/10/24/2222349.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zhanglong0426/archive/2011/10/17/2215732.html
英式时间格式 - zhanglong0426
Fri, 14 Oct 2011 10:49:46 GMT Friday, 14 October 2011 Fri,14 October 2011DateTime dt = DateTime.Now;Response.Write(string.Format("{0:R}", dt)); Response.Write("<br/>"); Response.Write(dt.ToString("D", DateTimeFormatInfo.InvariantInfo)); Response.Write("<br
2011-10-17T10:44:00Z
2011-10-17T10:44:00Z
zhanglong0426
https://www.cnblogs.com/zhanglong0426/
【摘要】Fri, 14 Oct 2011 10:49:46 GMT Friday, 14 October 2011 Fri,14 October 2011DateTime dt = DateTime.Now;Response.Write(string.Format("{0:R}", dt)); Response.Write("<br/>"); Response.Write(dt.ToString("D", DateTimeFormatInfo.InvariantInfo)); Response.Write("<br <a href="https://www.cnblogs.com/zhanglong0426/archive/2011/10/17/2215732.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zhanglong0426/archive/2011/10/13/2210596.html
前台JS事件与服务器事件的执行顺序 - zhanglong0426
(1)页面加载:服务器端Page_Load------>前台js的onload事件(2)服务器端控件(假如是按钮控件)前台的js事件----->服务器端Page_Load----->服务器端按钮事件-------->前台onload事件既:开始加载页面时,先执行服务器端onload事件,再执行客户端js的onload事件。 单击某个控件时,先执行该控件的客户端js单击事件,再执行服务器端的onload事件,然后执行该控件服务器端的单击事件,最后执行客户端js的onload事件。情景:RegularExpressionValidator, RequiredFieldVal
2011-10-13T11:05:00Z
2011-10-13T11:05:00Z
zhanglong0426
https://www.cnblogs.com/zhanglong0426/
【摘要】(1)页面加载:服务器端Page_Load------>前台js的onload事件(2)服务器端控件(假如是按钮控件)前台的js事件----->服务器端Page_Load----->服务器端按钮事件-------->前台onload事件既:开始加载页面时,先执行服务器端onload事件,再执行客户端js的onload事件。 单击某个控件时,先执行该控件的客户端js单击事件,再执行服务器端的onload事件,然后执行该控件服务器端的单击事件,最后执行客户端js的onload事件。情景:RegularExpressionValidator, RequiredFieldVal <a href="https://www.cnblogs.com/zhanglong0426/archive/2011/10/13/2210596.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zhanglong0426/archive/2011/10/12/2208994.html
Hi Windows Live Writer - zhanglong0426
Hi Windows Live Writer. I am coming…
2011-10-12T11:35:00Z
2011-10-12T11:35:00Z
zhanglong0426
https://www.cnblogs.com/zhanglong0426/
【摘要】Hi Windows Live Writer. I am coming… <a href="https://www.cnblogs.com/zhanglong0426/archive/2011/10/12/2208994.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zhanglong0426/archive/2011/10/09/2204045.html
邮件Template各种不给力 - zhanglong0426
今天一到就接着解决昨晚未解决的稀奇古怪的问题: 1、在firefox下面邮件模板图片之间依旧有空隙 很是无奈,将原来<td><img/></td>的结构改成了<td style="background-image:url()"></td>的结构,style="background-image:url()"着实让我打开眼见,悲催的发现改成style样式后,所有的浏览器下面都不显示图片了, 然后仿照之前的同事写法:<td background=""></td&g
2011-10-09T10:23:00Z
2011-10-09T10:23:00Z
zhanglong0426
https://www.cnblogs.com/zhanglong0426/
【摘要】今天一到就接着解决昨晚未解决的稀奇古怪的问题: 1、在firefox下面邮件模板图片之间依旧有空隙 很是无奈,将原来<td><img/></td>的结构改成了<td style="background-image:url()"></td>的结构,style="background-image:url()"着实让我打开眼见,悲催的发现改成style样式后,所有的浏览器下面都不显示图片了, 然后仿照之前的同事写法:<td background=""></td&g <a href="https://www.cnblogs.com/zhanglong0426/archive/2011/10/09/2204045.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zhanglong0426/archive/2011/10/08/2202986.html
邮件模板,Datatable - zhanglong0426
今天大部分时间都在纠结邮件模板的问题,问题一大推,烦人~直接用Response.Write()写在页面上是没有问题,发到邮箱里td与img之间就有空隙,最后将图片的高度设置成了100%,就好使了,原先是将图片设置成固定高度的,不好使,设置成100%好使了,奇怪,同事说是邮件系统自己设置了CSS样式冲突了,邮件系统到今天还没研究。本来在拼接邮箱时,是直接用的美工截的图,刚拿到手时,心里暗喜,想这下省事了,没想到麻烦一大推,今天至少让自己弄懂了td下面colspan的用法了,colspan是用来表示当前行占先前已经分好列的几列的,以前没搞懂,被他害死了;然后改换table,每个tr下面分列的都用t
2011-10-08T12:56:00Z
2011-10-08T12:56:00Z
zhanglong0426
https://www.cnblogs.com/zhanglong0426/
【摘要】今天大部分时间都在纠结邮件模板的问题,问题一大推,烦人~直接用Response.Write()写在页面上是没有问题,发到邮箱里td与img之间就有空隙,最后将图片的高度设置成了100%,就好使了,原先是将图片设置成固定高度的,不好使,设置成100%好使了,奇怪,同事说是邮件系统自己设置了CSS样式冲突了,邮件系统到今天还没研究。本来在拼接邮箱时,是直接用的美工截的图,刚拿到手时,心里暗喜,想这下省事了,没想到麻烦一大推,今天至少让自己弄懂了td下面colspan的用法了,colspan是用来表示当前行占先前已经分好列的几列的,以前没搞懂,被他害死了;然后改换table,每个tr下面分列的都用t <a href="https://www.cnblogs.com/zhanglong0426/archive/2011/10/08/2202986.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zhanglong0426/archive/2011/09/24/2189540.html
c# 如何生成随机数包括英文字母 - zhanglong0426
private static char[] constant = { '0','1','2','3','4','5','6','7','8','9', 'a','b','c','d','e','f','g','h','i','j','k','l',
2011-09-24T08:41:00Z
2011-09-24T08:41:00Z
zhanglong0426
https://www.cnblogs.com/zhanglong0426/
【摘要】private static char[] constant = { '0','1','2','3','4','5','6','7','8','9', 'a','b','c','d','e','f','g','h','i','j','k','l', <a href="https://www.cnblogs.com/zhanglong0426/archive/2011/09/24/2189540.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zhanglong0426/archive/2010/12/27/1918357.html
DataBinder绑绑绑,三元表达式判判判~ - zhanglong0426
为了显示checkbox 的可见性,用的是在前台绑定数据的方法:Enabled='%#(((DataBinder.Eval(Container,"DataItem.apply_status").ToString()=="Sumbit"?true:false || DataBinder.Eval(Container,"DataItem.apply_status").ToString()=="Approved"?true:false) && GetConditon()=="ApprovedSubmit"?true:false)||(DataBinder.Eval(Container,"DataI
2010-12-27T14:34:00Z
2010-12-27T14:34:00Z
zhanglong0426
https://www.cnblogs.com/zhanglong0426/
【摘要】为了显示checkbox 的可见性,用的是在前台绑定数据的方法:Enabled='%#(((DataBinder.Eval(Container,"DataItem.apply_status").ToString()=="Sumbit"?true:false || DataBinder.Eval(Container,"DataItem.apply_status").ToString()=="Approved"?true:false) && GetConditon()=="ApprovedSubmit"?true:false)||(DataBinder.Eval(Container,"DataI <a href="https://www.cnblogs.com/zhanglong0426/archive/2010/12/27/1918357.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zhanglong0426/archive/2010/10/09/1846336.html
Android界面设计简单讲解 - zhanglong0426
上一个教程我们已经讲了,怎么在Eclipse上搭建好编译Android应用软件的环境了,接下来我们这个教程,将简单讲解一下应用程序的界面设计!在Android平台上,用户界面(屏幕上的界面组件)都是通过“ViewGroup”或“View”类来显示。“ViewGroup”和“View”是Android平台上最基本的用户界面表达单元。我们可以通过程序直接调用的方法调用描绘用户界面。将屏幕上显示的界面元素,与构成应用程序主体的程序逻辑混合在一起编写。或是,也可以将界面显示与程序逻辑分离,照着Android平台所提供的这种优雅方式,即使用XML说明文档,来描述界面组件的组织与排列格式。这也是目前比较流
2010-10-09T01:50:00Z
2010-10-09T01:50:00Z
zhanglong0426
https://www.cnblogs.com/zhanglong0426/
【摘要】上一个教程我们已经讲了,怎么在Eclipse上搭建好编译Android应用软件的环境了,接下来我们这个教程,将简单讲解一下应用程序的界面设计!在Android平台上,用户界面(屏幕上的界面组件)都是通过“ViewGroup”或“View”类来显示。“ViewGroup”和“View”是Android平台上最基本的用户界面表达单元。我们可以通过程序直接调用的方法调用描绘用户界面。将屏幕上显示的界面元素,与构成应用程序主体的程序逻辑混合在一起编写。或是,也可以将界面显示与程序逻辑分离,照着Android平台所提供的这种优雅方式,即使用XML说明文档,来描述界面组件的组织与排列格式。这也是目前比较流 <a href="https://www.cnblogs.com/zhanglong0426/archive/2010/10/09/1846336.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zhanglong0426/archive/2010/10/07/1845268.html
linux下vim命令详解 - zhanglong0426
高级一些的编辑器,都会包含宏功能,vim当然不能缺少了,在vim中使用宏是非常方便的::qx 开始记录宏,并将结果存入寄存器xq 退出记录模式@x 播放记录在x寄存器中的宏命令稍微解释一下,当在normal模式下输入:qx后,你对文本的所有编辑动作将会被记录下来,再次输入q即退出了记录模式,然后输入@x对刚才记录下来的命令进行重复,此命令后可跟数字,表示要重复多少次,比如@x20,可以重复20次。...
2010-10-07T13:18:00Z
2010-10-07T13:18:00Z
zhanglong0426
https://www.cnblogs.com/zhanglong0426/
【摘要】高级一些的编辑器,都会包含宏功能,vim当然不能缺少了,在vim中使用宏是非常方便的::qx 开始记录宏,并将结果存入寄存器xq 退出记录模式@x 播放记录在x寄存器中的宏命令稍微解释一下,当在normal模式下输入:qx后,你对文本的所有编辑动作将会被记录下来,再次输入q即退出了记录模式,然后输入@x对刚才记录下来的命令进行重复,此命令后可跟数字,表示要重复多少次,比如@x20,可以重复20次。... <a href="https://www.cnblogs.com/zhanglong0426/archive/2010/10/07/1845268.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zhanglong0426/archive/2010/10/07/1845267.html
如何使用gcc编译器? - zhanglong0426
目录:GCC rules开始...预编译编译汇编连接另外两个重要选项调试小结站点链接摘要:要想读懂本文,你需要对C语言有基本的了解,本文将介绍如何使用gcc编译器。 首先,我们介绍如何在命令行方式下使用编译器编译简单的C源代码。 然后,我们简要介绍一下编译器究竟作了那些工作,以及如何控制编译过程。 我们也简要介绍了调试器的使用方法。GCC rules你能想象使用封闭源代码的私有编译器编译自由软件吗...
2010-10-07T13:17:00Z
2010-10-07T13:17:00Z
zhanglong0426
https://www.cnblogs.com/zhanglong0426/
【摘要】目录:GCC rules开始...预编译编译汇编连接另外两个重要选项调试小结站点链接摘要:要想读懂本文,你需要对C语言有基本的了解,本文将介绍如何使用gcc编译器。 首先,我们介绍如何在命令行方式下使用编译器编译简单的C源代码。 然后,我们简要介绍一下编译器究竟作了那些工作,以及如何控制编译过程。 我们也简要介绍了调试器的使用方法。GCC rules你能想象使用封闭源代码的私有编译器编译自由软件吗... <a href="https://www.cnblogs.com/zhanglong0426/archive/2010/10/07/1845267.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zhanglong0426/archive/2010/10/07/1845265.html
Linux 如何写makefile文件 - zhanglong0426
关于程序的编译和链接——————————在此,我想多说关于程序编译的一些规范和方法,一般来说,无论是C、C++、还是pas,首先要把源文件编译成中间代码文件,在Windows下也就是 .obj 文件,UNIX下是 .o 文件,即 Object File,这个动作叫做编译(comp...
2010-10-07T13:14:00Z
2010-10-07T13:14:00Z
zhanglong0426
https://www.cnblogs.com/zhanglong0426/
【摘要】关于程序的编译和链接——————————在此,我想多说关于程序编译的一些规范和方法,一般来说,无论是C、C++、还是pas,首先要把源文件编译成中间代码文件,在Windows下也就是 .obj 文件,UNIX下是 .o 文件,即 Object File,这个动作叫做编译(comp... <a href="https://www.cnblogs.com/zhanglong0426/archive/2010/10/07/1845265.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zhanglong0426/archive/2010/10/07/1845140.html
进程和线程有什么区别 - zhanglong0426
说法一:进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.一个线程可以创建和撤销另一个线程;同一个...
2010-10-07T07:49:00Z
2010-10-07T07:49:00Z
zhanglong0426
https://www.cnblogs.com/zhanglong0426/
【摘要】说法一:进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.一个线程可以创建和撤销另一个线程;同一个... <a href="https://www.cnblogs.com/zhanglong0426/archive/2010/10/07/1845140.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zhanglong0426/archive/2010/10/06/1844700.html
C语言运算符优先级和口诀 - zhanglong0426
一共有十五个优先级:1 () [] . ->2 ! ~ -(负号) ++ -- &(取变量地址)* (type)(强制类型) sizeof3 * / %4 + -5 >> << 6 > >= < <=7 == != 8 & 9 ^ 10 | 11 &&12 ||13 ?:14 = +=...
2010-10-06T08:18:00Z
2010-10-06T08:18:00Z
zhanglong0426
https://www.cnblogs.com/zhanglong0426/
【摘要】一共有十五个优先级:1 () [] . ->2 ! ~ -(负号) ++ -- &(取变量地址)* (type)(强制类型) sizeof3 * / %4 + -5 >> << 6 > >= < <=7 == != 8 & 9 ^ 10 | 11 &&12 ||13 ?:14 = +=... <a href="https://www.cnblogs.com/zhanglong0426/archive/2010/10/06/1844700.html" target="_blank">阅读全文</a>
https://www.cnblogs.com/zhanglong0426/archive/2010/10/06/1844629.html
WEB标准 - zhanglong0426
WEB标准不是某一个标准,而是一系列标准的集合。网页主要由三部分组成:结构(Structure)、表现(Presentation)和行为(Behavior)。对应的标准也分三方面:结构化标准语言主要包括XHTML和XML,表现标准语言主要包括CSS,行为标准主要包括对象模型(如W3C DOM)、ECMAScript等。这些标准大部分由W3C起草和发布,也有一些是其他标准组织制订的标准,比如ECMA...
2010-10-06T05:44:00Z
2010-10-06T05:44:00Z
zhanglong0426
https://www.cnblogs.com/zhanglong0426/
【摘要】WEB标准不是某一个标准,而是一系列标准的集合。网页主要由三部分组成:结构(Structure)、表现(Presentation)和行为(Behavior)。对应的标准也分三方面:结构化标准语言主要包括XHTML和XML,表现标准语言主要包括CSS,行为标准主要包括对象模型(如W3C DOM)、ECMAScript等。这些标准大部分由W3C起草和发布,也有一些是其他标准组织制订的标准,比如ECMA... <a href="https://www.cnblogs.com/zhanglong0426/archive/2010/10/06/1844629.html" target="_blank">阅读全文</a>