博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

03 2012 档案

摘要:在我的随笔《Page,你是怎样处理回发事件的?》 中曾提出一个疑问,如何得到引起页面PostBack的控件?通过阅读Page类的源码,误打误撞,无意中看到了__EVENTTARGET和 __EVENTARGUMENT这两个常量的定义,并通过调试分析页面,知道了通过Request.Form[“__EVENTTARGET”]可以获取 到触发页面PostBack的事件源(控件的ID)。对于一般的控件,这样就可以了,唯有Button和ImageButton触发的PostBack无 法通过这种方式获取到它们的ID,起初还以为是它们实现的接口的不同而产生PostBack方式的不同。刚刚在AspAllian 阅读全文

posted @ 2012-03-30 13:15 qianyz 阅读(141) 评论(0) 推荐(0) 编辑

摘要:__VIEWSTATE:页面状态信息在客户端的存储(ViewState中存储的信息, EnableViewState="true"的控件状态信息).__EVENTTARGET:页面回传触发事件 页面回传触发事件:__doPostBack('Button2','')表示调用按钮Button2在后端的所对应的单击事件 控件回传触发事件:__doPostBack('TEST1$Button1','')表示调用TEST1控件中的Button1按钮的Click方法__EVENTARGUMENT:页面回传触发事件时所带的参 阅读全文

posted @ 2012-03-30 12:26 qianyz 阅读(415) 评论(0) 推荐(0) 编辑

摘要:用户在ASP.NET应用程序显示的页面上面点击一个Button、LinkButton、或者改变某个TextBox的Value时(启用AotuPostBack),就会导致页面提交,并且在服务器端引发对应的PostBack事件,大家可以想象客户端浏览器显示的是html,而html是不存在引发PostBack事件这一说的,这样就说明ASP.NET应用程序肯定提供一种方法,能够知道用户在客户端做了什么动作导致页面被提交的,然后服务器端根据这个信息引发相应的服务器端控件的PostBack事件,那么这篇文章,我们一起来讨论下ASP.NET应用程序是如何来引发PostBack事件.首先我们通过最直接的方式来 阅读全文

posted @ 2012-03-30 09:42 qianyz 阅读(140) 评论(0) 推荐(0) 编辑

摘要:Asp.net中服务端控件事件是如何触发的Asp.net 中在客户端触发服务器端事件分为两种情况:一. WebControls中的Button 和HtmlControls中的Type为submit的HtmlInputButton这两种按钮最终到客户端的表现形式为:<input type="submit" value="Submit">,这是Form表单的提交按钮,点击以后会作为参数发送到服务端,参数是这样的:控件的name属性=控件的value值,对应上面的例子就是:Submit1= Submit。服务器端会根据接收到的控件的name属性的这 阅读全文

posted @ 2012-03-30 09:34 qianyz 阅读(146) 评论(0) 推荐(0) 编辑

摘要:前一篇提到了通过改变委托中的指针来改变实际的调用目标。修改委托实例中的_target、_methodPtr、_methodPtrAux这三个成员,都能够改变跳转目标;特别是后两个,它们的类型是IntPtr,可以构造出任意数值的指针设置进去,那样就可以跳转到任意目标了。 但只能指定目标地址,却不能随意控制目标里的代码,显然还不够好玩。如果要跳转的目标是托管方法,那构造一个正常的委托就够了。如果能在不使用P/Invoke也不使用unsafe code的条件下在C#程序里执行一小块自定义的native code就好玩多了。先前的两篇日志(这里和这里)我提到在内存里生成native code并执行并不 阅读全文

posted @ 2012-03-20 13:19 qianyz 阅读(387) 评论(0) 推荐(0) 编辑

摘要:对应到.NET上的话, 第一点基本上就映射到P/Invoke的使用了。如果被P/Invoke的native code里有非常糟糕的错误而且不使用SEH,那CLR什么办法也没有,只能让程序crash了。 第二点是关于操纵VM内部实现用到的指针。各种JVM实现里在不同位置暴露了一些指针(即便是Compressed Oops那也是指针),改变它们的值确实能达到crash的效果,虽然如果更进一步能它它们改成“有意义”的值的话就能更有效的操纵破坏的具体行为。 CLR里也有许多看起来很无辜的东西实际上是指针来的(注意我是说CLR不是CLI)。一个典型的例子是Type.TypeHandle属性,在CLR里它 阅读全文

posted @ 2012-03-20 13:17 qianyz 阅读(264) 评论(0) 推荐(0) 编辑

摘要:调用GetQueuedCompletionStatus函数,某个线程就会等待一个完成包进入到完成端口的队列中,而不是直接等待异步I/O请求完成。线程(们)就会阻塞于它们的运行在完成端口(按照后进先出队列顺序的被释放)。这就意味着当一个完成包进入到完成端口的队列中时,系统会释放最近被阻塞在该完成端口的线程。(自己用线程池来模拟完成端口的话,主要的性能问题会在这里出现,操作系统调度线程的算法和完成端口调度线程的算法相反。) 最有效的假想是发生在有完成包在队列中等待,而没有等待被满足,因为此时完成端口达到了其并发量的极限。此时,一个正在运行中的线程调用GetQueuedCompletionSt... 阅读全文

posted @ 2012-03-18 17:56 qianyz 阅读(212) 评论(0) 推荐(0) 编辑

摘要:微软声称.NET是一种革命性的编程技术。许多要素使它成为大多数开发人员的首选。本文我们将要讨论一下.NET Framework中一个很主要的优势——内存和资源管理的便捷性。关于垃圾回收器 每个程序都会使用一定次序的资源,或内存缓冲区,或网络连接,或数据库资源等等。实际上,在面向对象环境中,每种类型都被看作是程序的某些有效资源。为了使用这些资源,必须分配部分内存来描述这种类型。 资源访问按一下步骤进行:1. 为类型分配内存来描述资源。2. 初始化资源,把资源设置成初始化状态,使资源可用。3. 通过访问类型实例的成员来使用资源(按需求重复)。4. 销毁资源状态以清除资源。5. 释放内存。.NET中 阅读全文

posted @ 2012-03-13 10:01 qianyz 阅读(278) 评论(0) 推荐(0) 编辑

摘要:上一篇文章介绍了.Net 垃圾回收的基本原理和垃圾回收执行Finalize方法的内部机制;这一篇我们看下弱引用对象,代,多线程垃圾回收,大对象处理以及和垃圾回收相关的性能计数器。让我们从弱引用对象说起,弱引用对象可以减轻大对象带来的内存压力。弱引用(Weak References)当程序的根对象指向一个对象时,这个对象是可达的,垃圾回收器不能回收它,这称为对对象的强引用。和强引用相对的是弱引用,当一个对象上存在弱引用时,垃圾回收器可以回收此对象,但是也允许程序访问这个对象。这是怎么回事儿呢?请往下看。如果一个对象上仅存在弱引用,并且垃圾回收器在运行,这个对象就会被回收,之后如果程序中要访问这个 阅读全文

posted @ 2012-03-13 09:54 qianyz 阅读(293) 评论(0) 推荐(0) 编辑

摘要:【译】.Net 垃圾回收机制原理(一)转载:yukaizhao有了Microsoft.Net clr中的垃圾回收机制程序员不需要再关注什么时候释放内存,释放内存这件事儿完全由GC做了,对程序员来说是透明的。尽管如此,作为一个.Net程序员很有必要理解垃圾回收是如何工作的。这篇文章我们就来看下.Net是如何分配和管理托管内存的,之后再一步一步描述垃圾回收器工作的算法机制。为程序设计一个适当的内存管理策略是困难的也是乏味的,这个工作还会影响你专注于解决程序本身要解决的问题。有没有一种内置的方法可以帮助开发人员解决内存管理的问题呢?当然有了,在.Net中就是GC,垃圾回收。让我们想一下,每一个程序都 阅读全文

posted @ 2012-03-13 09:52 qianyz 阅读(199) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示