摘要:
一、CSS兼容代码 .transparent { filter:alpha(opacity=50); /* IE */ -moz-opacity:0.5; /* FireFox old version*/ -khtml-opacity: 0.5; /* Sarfari old version */ opacity: 0.5; /* FireFox */ } 二、Javascript兼容代码 if (!window.jasen.core.Util) { window.j... 阅读全文
摘要:
一、前言 1 function ConvertEvent(e, element) { 2 var event = e || window.event; 3 var resultEvent = { 4 event: event, 5 type: event.type, 6 target: event.target || event.srcElement, 7 relatedTarget: event.relatedTarget || event.fromElem... 阅读全文
摘要:
一、前言(function (window) { if (!window.jasen) { window.jasen = {}; } if (!window.jasen.core) { window.jasen.core = {}; } //------------------------------------------------ // XML operation below. //------------------------------------------------ if (!window.jasen... 阅读全文
摘要:
一、前言1、element.addEventListener(eventType, handler, capture);(1)参数eventType是要注册句柄的事件类型名。 (2)参数handler是句柄函数,在指定类型事件发生时调用该函数。 (3)参数capture用于在事件传播的捕获阶段事件句柄是否用于捕捉事件。2、element.attachEvent("on" + eventType, handler); 该方法作为全局函数调用,而不是作为事件句柄所注册的元素的方法来调用的。允许同一个事件句柄函数多次注册。3、相关自定义类Binder代码如下: 1 (functi 阅读全文
摘要:
一、前言在通常的表达式中,二元运算符总是置于与之相关的两个运算对象之间,所以,这种表示法也称为中缀表示。每一运算符都置于其运算对象之后,称为后缀表达式,后缀表达式又叫做逆波兰表达式。它的优势在于只用两种简单操作,入栈和出栈就可以搞定任何普通表达式的运算。其运算方式如下:如果当前字符为变量或者为数字,则压栈,如果是运算符,则将栈顶两个元素弹出作相应运算,结果再入栈,最后当表达式扫描完后,栈里的就是结果。二、一般算法将一个普通的中序表达式转换为逆波兰表达式的一般算法是:(1)首先构造一个运算符栈,此运算符在栈内遵循越往栈顶优先级越高的原则。(2)读入一个用中缀表示的简单算术表达式,为方便起见,设该 阅读全文
摘要:
最近一年多来,一直比较忙,最近一段时间终于空闲了,把以前没写的都补上.....这边随笔主要是计算一系列数据的间隔数据。从一堆数据中查询出每个区间的起始数据,结束数据以及数据个数,同时可以设置相应精度(小数位数)。区间数据数据结构1、区间数据主要包括当前区间的起始数据,结束数据以及数据个数。结构如下: public struct IntervalData { private TKey _startValue; private TKey _endValue; private TValue _count; public Interv... 阅读全文
摘要:
一、前言对于枚举Enum,大家都非常熟悉,但枚举出现的场景非常多的时候,是不是可以抽象出一个通用的解决方式。代码大家都会写,但并不是所有人都喜欢写重复的代码,老是用Ctrl+C和Ctrl+V累不累啊?很多人和我一样,非常不喜欢写重复的代码,代码写多了,BUG就多。对于常见的场景,大部分人都喜欢抽象出来,写一套通用的,每个地方都可以用,而且不易出错。当然,你喜欢Ctrl+C和Ctrl+V,本人也没有办法....二、int值,string值转换成Enum如下,一个简单枚举: public enum ExchangeType { [EnumFieldAttribute("不... 阅读全文
摘要:
一、前言类似如下字符串"ID", "NameValue", "CodeValue", "ExchangeTypeValue", 6, "invalid""ID2", "NameValue2", "CodeValue2", "ExchangeTypeValue2", 6, "invalid".......有可能是文件中存在的,或者调用其他程序返回的结构化数据,那么该如何解析?当其他场景中,只是返回顺 阅读全文
摘要:
一、前言(1)对于Thread的Abort方法,如果线程当前正在执行的是一段非托管代码,那么CLR就不会抛出ThreadAbortException,只有当代码继续回到CLR中时,才会引发ThreadAbortException。当然,即便是在CLR环境中ThreadAbortException也不会立即引发。(2)对于BackgroundWorker的CancelAsync方法,需要设置WorkerSupportsCancellation属性为True,在执行方法内部检测CancellationPending标识,用户负责退出。(3)对于CancellationTokenSource,场景主 阅读全文
摘要:
一、前言上一篇绘制矩形圆角的方式不够完善,感觉写的太过于复杂,将简单的问题复杂化了,本文对此进行了相应的改进,增强对各个圆角的半径的控制。绘制后的圆角效果图如下: 二、圆角半径设计 对于矩行而言,圆角分为左上角、右上角、左下角和右下角。每一个角都会存在相应的半径,用于控制每一个圆角的绘制。设计如下:1publicstructArcRadius2{3privateint_rightBottom;4privateint_rightTop;5privateint_leftBottom;6privateint_leftTop;78publicstaticreadonlyArcRadiusEmpty=. 阅读全文
摘要:
一、前言 本文主要介绍C# GDI+如何绘制矩行的圆角,其中涉及到如何使用位操作来处理组合的技巧。GDI+的本质在于,它能够替代开发人员实现与显示器及其它外部设备的交互。对于控件美化而言,需要达到自己期望的效果,GDI+必不可少。绘制后的圆角效果图如下:二、圆角枚举与相应组合处理设计对于矩行而言,圆角分为左上角、右上角、左下角和右下角。组合情况就分为无圆角、一个圆角、二个圆角、三个圆角以及四个圆角。枚举需要满足该组合情况,没必要在枚举中将 全部组合列出,只需要通过位操作就能计算出属于哪种组合。枚举类设计如下:1[Flags]2publicenumRoundStyle3{4None=0,5Top 阅读全文
摘要:
前段时间看了《【面试】——反应迟钝的递归》中的三个递归算法,斐波那契数列优化后的算法思路确实不错,但是后面2个数列用递归的话,个人感觉有点得不偿失。能不用递归的话,尽量不用,因为有些算法完全可以用数学来解决。因此,本文中将这三个数列的最终算法总结如下。1、计算数组1,1,2,3,5,8,13...第30位的值递归算法如下:publicstaticintCalculateFibonacciSequence(intindex){if(index<=0){return0;}if(index==1||index==2){return1;}returnCalculateFibonacciSeque 阅读全文
摘要:
一、前言上一篇随笔主要将实体转换成相应的Xml或者Xml对象,未考虑到属性的Attribute特性,以后有时间再整理一下。本文中的Xml匹配涉及到类的特性和属性的特性,并且对该类的匹配进行了相应的优化,尽量将反射引起的性能问题降低最低(其实,对于对象数量不是很多的Xml匹配,性能是可以忽略不计的)。 二、类图设计主要思路为:通过反射将与类名的节点匹配,然后匹配属性(属性特性名称或者属性名称)值,设计图如下所示: 类图中各个类的作用如下: PropertyAttribute、ClassAttribute、StringExtension、FuncDictionary的作用详见XmlAttri... 阅读全文
摘要:
一、前言 上篇随笔主要是针对于Xml的特性Attribute与实体之间的匹配与转换。该篇随笔主要内容为将对象转换成相应的Xml以及XElement。这2篇随笔以不同的方式对Xml进行转换与匹配,每种匹配都采用不同的角度进行操作。本文主要为对象实体的转换,下篇侧重于Xml的匹配。 二、Xml转换 2.1 实体集合转换Xml实体集合转换Xml的方法为:public static string ToXml<T>(IList<T> entities, string rootName = "") where T : new(),通过传入的实体集合对象和Xml根 阅读全文
摘要:
一、前言 可扩展标记语言 (XML) 是具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML是用来存储数据的,重在数据本身。本文中的代码是几个月前整理的,最近几个月的时间很少写随笔,除了工作以外,主要还是忙于整理自己的框架。这篇随笔主要是针对于XML的特性Attribute与实体之间的匹配与转换,其中的内容包括反射、XML以及LinqToXml,代码的内容也是想到什么就写什么,纯属练习下手感,仅供参考。下一篇随笔将以另外的形式来转换Xml为对象实体,当然,也是以反射为主,和本随笔中的思路差不多,主要是XML的格式和解决方案不同而已。对于. 阅读全文
摘要:
一、前言IronRuby是.NET下的一个Ruby实现,此外还有Ruby.net这一开源项目,二者的主要区别是IronRuby利用了Microsoft最新推出的DLR,而Ruby.net则是完全利用原有的CLR实现的。IronRuby入门可参阅http://msdn.microsoft.com/zh-cn/magazine/dd434651.aspx。关于IronRuby的一些基本操作,本文不会涉及,本文仅仅是IronRuby对Ruby操作的一个具体实例。其中包括对所有Ruby类的类名,方法名以及参数列表的获取与显示相关的树结构。究其原因采用IronRuby来进行操作,主要是因为通过Ruby的 阅读全文
摘要:
/Files/jasenkin/AntlrProject.rar 阅读全文
摘要:
一、前言虚拟模式在许多情况下都很有用。 如果必须从已存在于内存中的非常大的集合填充一个 ListView 对象,则为每项创建一个 ListViewItem 对象会很浪费。 在虚拟模式下,从缓冲之中获取所需的数据进行加载,性能会有很大提高。 在其他情况下,可能需要经常重新计算 ListViewItem 对象的值,对整个集合进行此操作将产生不可接受的性能。如下为虚拟模式的一个应用示例(仿VS2010错误列表),截图如下:二、虚拟模式相关注意点1、设置一个缓存属性,来保存需要加载的数据: protected List<ListViewItem> CurrentCacheItemsSour 阅读全文
摘要:
一、前言 插件模型指应用程序由一些动态的独立模块构成,每个模块均具有一个或多个服务,并满足一定的插件协议,能够借助主程序实现主程序-插件,插件-插件之间的通讯。它定义了一套公共的接口,通过接口与插件进行通信,主要是通过反射来获取相关的属性和方法,然后再执行指定的操作。其实,它也可以理解为定义一套通用的解决方案,通过反射来获取相应的程序集的相关类型,然后执行这些指定类型的相关操作。它是一种即插即用的方案,更新及维护简便。本文仅仅是描述插件开发的大体模型,设计比较简单,主要的步骤如下:(1)、定义公共的接口以及抽象类。(2)、定义和实现相关组件。(3)、实现通用程序集反射操作类。其中,公共的接口和 阅读全文
摘要:
一、前言 紧跟着上一篇随笔,本文主要涉及到如何将xml与xsl动态转换成html,这个才是最关键的地方,所有的内容都是围绕这个主题来进行开展的。根据指定的xsl样式将List<T>转换相应的Html,相关的随笔如下:(一)、将List<T>转换成DataTable。(二)、将Xml与Xsl动态转换成Html。(三)、设置以及控制Xsl的内容样式。二、XslTransform的具体实现XslTransform主要的职责为:将xml与xsl动态转换成html。其中,XslCompiledTransform提供了很多方法可以进行相关的转换,但使用起来并不是十分方便,因此必须在 阅读全文
摘要:
一、Javascript源码 if (!window.jasen.core.Position) { window.jasen.core.Position = {}; } function Size(width, height) { this.width = parseFloat(width); this.height = parseFloat(height); } Size.prototype.toString = function () { return "width=" + this.width + ";... 阅读全文
摘要:
(function(){ ...... }())或(function(){ ...... })()匿名函数自调用,也就是说,定义一个匿名函数,然后马上调用它。 因为这个匿名函数的函数体相当于提供一个匿名的名字空间,这样就不会与用户自定义的JS函数、变量、对象发生冲突了,不失为是一种很好的解决命名空间问题的方法。例如json2.js(function () { function f(n) { // Format integers to have at least two digits. return n < 10 ? '0' + n : n; } i... 阅读全文
摘要:
XMLHttpRequest 对象用于和服务器交换数据。我们使用 XMLHttpRequest 对象的 open() 和 send() 方法:open(method,url,async)method:请求的类型;GET 或 POSTurl:文件在服务器上的位置async:true(异步)或 false(同步)send(string)string:仅用于 POST 请求注:如果需要像 HTML 表单那样 POST 数据,需设置 setRequestHeader() 来添加 HTTP 头,然后在 send() 方法中规定您希望发送的数据:XMLHttpRequest.setRequestHeade 阅读全文
摘要:
一、创建包CREATE OR REPLACE PACKAGE PKG_JK_LAB_BASICIS TYPE CURSOR_TYPE IS REF CURSOR; PROCEDURE SP_GET_PAGINATION ( pi_tableName in varchar2, --表名 pi_where in varchar2, --查询条件 pi_columns in varchar2, --查询列集合 pi_orderColumn i... 阅读全文
摘要:
创建基础表空间,创建用户,授权。 -- CREATE TABLESPACE CREATE TABLESPACE TS_JK_LAB_BASIC DATAFILE 'D:\TOOLS\ORACLE\PRODUCT\10.2.0\ORADATA\JK_LAB\TS_JK_LAB_BASIC01.DBF' SIZE 3000M , 'D:\TOOLS\ORACLE\PRODUCT\10.2.0\ORADATA\JK_LAB\TS_JK_LAB_BASIC02.DBF' SIZE 3000M , 'D:\TOOLS\ORACLE\PRODUCT\10.2.... 阅读全文
摘要:
在家里自己电脑上又重新安装了Oracle 10g和PLSQL Developer,装完后启动PLSQL Developer,弹出如下错误信息:解决方案:在Windows运行命令行中输入regedit命令,进入注册表编辑器中,找到上文中提示的路径,如下所示:双击NLS_LANG节点(见上图右侧列表),弹出“编辑字符集”窗口:将数值数据修改为:SIMPLIFIED CHINESE_CHINA.AL32UTF8,如下所示:点击“确定”按钮即可,登陆后不再显示相关错误信息。 阅读全文