随笔分类 -  [02] 学习的那些事

在学习中深入,在实践中提高
摘要:来到了新公司,一开始就要做个程序去获取另外一个程序里的数据,哇,挑战性很大。经过两周的学习,终于搞定,主要还是对Windows API有了更多的了解。文中所有的消息常量,API,结构体都整理出来了(还不是很全):Windows.zip目录:获取控件句柄模拟键盘和鼠标文本框赋值操作DateTimePicker控件操作TreeView控件识别简单验证码判断按钮状态正文:一丶怎么获取每个控件的句柄 第一种是使用FindWindow和FindWindowEx两个API结合使用,但太累太繁琐,不爽。 说实话第一次我是通过Spy++看我所需要的控件的顺序,然后循环几次获取这个控件的句柄,显然这种方式很.. 阅读全文
posted @ 2014-03-09 10:30 TimYang 阅读(5648) 评论(7) 推荐(5) 编辑
摘要:好久没有写文章了,今天把前不久项目用到的SQL知识总结一下。一丶字符串分割 SQL内置函数中是没有Split分割函数的,所以需要自己去实现,不多说,上代码:CREATE FUNCTION Split(@source VARCHAR(MAX),@separator VARCHAR(10))RETURNS @result TABLE(strValue VARCHAR(MAX))ASBEGIN DECLARE @index INT SET @source = RTRIM(LTRIM(@source)) SET @index = CHARINDEX(@separator, @sou... 阅读全文
posted @ 2013-09-25 23:07 TimYang 阅读(680) 评论(1) 推荐(0) 编辑
摘要:距离上一篇:“学习之路十九:模仿ASP.NET的缓存依赖自定义缓存机制” 已经有很长时间了,这段时间正好在做项目优化,所以对缓存这块做了重构。重构的内容包括:轮询+XML+特性,通过这三种方式来使得缓存变的简单。一丶XML管理SQL 项目中DAL层可以看到到处分散的SQL语句,所以这次我统一通过XML来集中管理SQL语句,然后读取XML获取相应的SQL。 当然如果你不想每次读取,也可以把这些SQL都缓存起来,也是一个不错的选择。 示例: 1 2 5 3. & == & 6 4. ' == ' 7 5. " ... 阅读全文
posted @ 2013-08-17 14:33 TimYang 阅读(467) 评论(0) 推荐(0) 编辑
摘要:最近一直在优化项目的性能,就在前几天找到了一些资料,终于有方案了,那就是压缩数据。一丶前端和后端的压缩和解压缩流程 二丶优点和缺点 优点:①字符串的压缩率能够达到70%-80%左右 ②字符串数量更少了 缺点:①CPU的开销会大一点,不过在可承受范围之内三丶通过标记来说明数据是否压缩过 这个一开始是没有想到,是经理提醒我的,通过在数据(字符串)的最前端添加一个标记来说明数据是否压缩过。 因为只有当数据大于一定数量的时候才进行压缩操作。四丶测试(简单的测试) 环境:1.启动500线程 (相当于500个客户端) 2.500个线程同时调用 3.服务端和客户端在同一个局域... 阅读全文
posted @ 2013-08-11 16:21 TimYang 阅读(1738) 评论(6) 推荐(2) 编辑
摘要:首先这篇烂文应该在去年十月份就要写好了,拖到现在一直放在草稿箱里面,今天把它写完。十二月份的上半个月经历了一个小型项目的开发过程,中间遇到了一些技术问题,在这边做个小小的总结!项目是:安卓和C#Winform之间的通信!1. DataGridView 重绘技术 以前只是使用GridView显示数据用的,一直缺少对GridView更深层次的了解,不过这次项目中有些功能需要了解GridView的重绘技术:①某一行背景色显示黄色,②自动显示行号等等! 其实上面两个需求如果你了解GridView的重绘技术,一会会就能做出来了,GridView的重绘分三个步骤: A. 首先创建一个空白区,也就是你... 阅读全文
posted @ 2013-07-28 12:49 TimYang 阅读(388) 评论(0) 推荐(1) 编辑
摘要:最近看了圣殿骑士大哥的重构文章,其中有几个重构技巧让我颇有感触,特此记录下。文章地址:31天重构学习笔记重新整理下载1.封装集合,返回集合接口类型 这个技巧让我想起了项目中的代码,比如: 1 public class Check 2 { 3 private List _details = new List(); 4 5 public IList GetDetails() 6 { 7 return _details; 8 } 9 }10 11 public class De... 阅读全文
posted @ 2013-07-21 23:02 TimYang 阅读(612) 评论(11) 推荐(0) 编辑
摘要:这段时间园子里讲了一些关于VS的快捷键以及一些配置技巧,挺好的,大家一起学习,一起进步。这段时间重点看了一下关于VS调试技巧方面的书,在此记录一下学习的内容吧,主要还是一些比较浅显的知识。1. 调试窗口 当调试的时候我们需要清晰的看到变量的值,可以使用调试窗口显示变量的值。 快捷键:ctrl + Alt + W,1(先同时按ctrl + Alt +W,然后在按1) 好处:可以很清晰的把变量的值显示出来,当我们要查看实例里面某一个属性的值就需要这样做了, 你也可以移动鼠标到实例然后点+展开查看,不过那个看的太累。2. 附加进程 当程序已经发布了,那么本机又有源代码,那么就可以直接... 阅读全文
posted @ 2013-07-07 22:17 TimYang 阅读(10977) 评论(10) 推荐(18) 编辑
摘要:前段时间在测试的时候发现了一个问题,看过Log之后发现在插入数据到数据库的时候发生异常了!原因是由于插入的字符串太长,项目中的用到的类型是NVARCHAR,下面就是对它们的理解:1.VARCHAR -- 字节数 示例:VARCHAR(10) - [中文代表两个字节数] 上面的定义表示我存储的字节数为10个,那么英文就能存10个,中文只能存5个!2.NVARCHAR -- 字符数 示例:NVARCHAR(10) - [中文代表两个字节] 上面的定义为我存储的字符数为10个,那么英文就能存10个,那么中文也能存10个! 如果把NVARCHAR理解为存储的是字符数,那么就很容易理解在存储中... 阅读全文
posted @ 2013-06-03 08:04 TimYang 阅读(620) 评论(3) 推荐(0) 编辑
摘要:前段时间看到了几篇关于Attribute相关的文章,里面讲的很详细,参考:Attribute在.NET编程中的应用(五)不过让我收获最多的关于“.NET Framework拦截机制的内容”,而且这也让我解决了一年前提出的问题!地址:急丶急丶急 → 关于特性和IOC或者AOP的结合,其实跟IOC和AOP一点关于都没有,只是当时知识积累还不够,对解决问题的能力还不足!下面我就结合一些理论知识以及对上面提出的案例进行改装,使它能够运用一般的方法之中(自定义一个数据库回滚特性)!1.定义一个RollBack的特性 1 [AttributeUsage(AttributeTargets.Metho... 阅读全文
posted @ 2013-05-18 16:24 TimYang 阅读(1461) 评论(5) 推荐(0) 编辑
摘要:最近在对项目中的代码进行重构,在重构的过程中发现了一些很有趣的东西,就是泛型和委托!泛型和委托给我的重构带来了很大的便利,我也对它们在重构的技术上有了一些新的认识!如果小菜说的不对,还请园友们帮我指出,我会虚心接受的,谢谢~!下面我只是说泛型和委托在重构时的一些观点,不包含泛型和委托的所有知识点!一丶泛型重构前代码: 1 public class Test 2 { 3 public object TestOne(int number) 4 { 5 switch (number) //根据传过来的number来选择对象 6 ... 阅读全文
posted @ 2013-04-19 00:47 TimYang 阅读(1910) 评论(9) 推荐(2) 编辑
摘要:其实安装步骤挺简单的,只要保持网络畅通,安装就会顺利完成!下面是安装步骤以及下载安装包的工具:VS2010环境安装Windows Phone(一定要可以上网):1. 首先安装 [VS10sp1-KB983509] VS2010 Service Package2. 然后再安装Windows Phone [vm_web.exe]按照上面步骤就可以完成!下载安装包地址:DownLoad已同步至:个人文章目录索引 阅读全文
posted @ 2013-04-14 18:48 TimYang 阅读(312) 评论(1) 推荐(0) 编辑
摘要:前段时间项目中有一个这样的需求:需要在Service挂掉的情况下保存内存中的数据!因为我们的内存其实是一个结构比较复杂的对象,嵌套的比较复杂,在没有编码之前把任务计划都安排好了,方案是对内存对象进行JSON序列化之后保存到本地文件中去,其实想想挺简单的,可是在实际编码的时候还是遇到了很多关于序列化方面的问题,最大的原因就是我们对每一种序列化方式还理解的不够!下面就说说一些常用的序列化方式,文中可能会代码比较少,主要说一些注意点!1.二进制序列化 优点:只要是标记了[Serializable]序列化特性,那么这个对象里面的任何东西(私有的,公共的)都会被序列化成二进制! 限制点:这种序列化方.. 阅读全文
posted @ 2013-04-13 14:09 TimYang 阅读(600) 评论(0) 推荐(0) 编辑
摘要:上一周在解决一个Bug的时候,需要在SQL Server获取星期几的需求,在网上搜索了下,发现一篇好的文章,特转载下!今天是星期几,例子 1:1 SET LANGUAGE N'English' --设置语言,这个很重要,会导致不同的返回结果2 3 SELECT DATENAME(weekday,GETDATE())4 5 --Result: Sunday今天是星期几,例子 2:1 SET LANGUAGE N'Simplified Chinese' --简体中文2 3 SELECT DATENAME(weekday,GETDATE())4 5 --result: 阅读全文
posted @ 2013-03-10 23:34 TimYang 阅读(8409) 评论(2) 推荐(1) 编辑
摘要:这是春节前的最后一篇文章了,今天公司没事,想对2012的工作做个详细的梳理,让我知道这一年我有什么样的收获,好了,先来张图:Contents:WCF入门ADO.NET的封装缓存的使用简单重构项目代码JSONSocket性能优化工作方式沟通思维方式和高度一丶WCF的入门 (2012年5月至今一直断断续续的学习) 本来今年没有打算学习WCF的,不过来到新的公司却发现项目是基于WCF基础上进行开发,无奈我需要了解下关于WCF知识的。 一开始是看得“<<WCF服务编程中文版>>”这本书,可是有的知识点讲的很难懂(我是新手),于是在开始在园子里面收集WCF系列文章,看的蛮多的,算 阅读全文
posted @ 2013-02-07 20:41 TimYang 阅读(1551) 评论(9) 推荐(4) 编辑
摘要:前段时间利用了一点空闲时间优化了项目中的代码,其中减少Try/Catch是这次优化的重点。主要是参考了老A的大作:如何编写没有Try/Catch的程序,看了一下,老A主要介绍了怎么减少按钮事件中的Try/Catch,不过我们项目是WCF,基本上就没有按钮事件,不过老A也提供了一个很好的思路,那就是利用委托动态的为每个方法加上Try/Catch,有了这个思路之后就很好做了。核心代码: 1 private T InvokeHandler<T>(string clientName, string methodName, Delegate delegateWarpper, object.. 阅读全文
posted @ 2013-02-03 15:37 TimYang 阅读(4727) 评论(31) 推荐(5) 编辑
摘要:这个问题折腾很久了,网上找了半天了,结果问一个同事,同事给了一个地址让我看看,最后根据上面的介绍做好了,再次记录一下,o(∩_∩)o 哈哈地址如下:http://msdn.microsoft.com/en-us/library/ms171619.aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1代码如下: 1 public class DataGridViewDisableButtonColumn : DataGridViewButtonColumn 2 { 3 public DataGridViewDisable... 阅读全文
posted @ 2013-01-09 20:16 TimYang 阅读(1558) 评论(0) 推荐(0) 编辑
摘要:项目的性能一直处于中下等的水平,也一直在摸索着,自从前几周优化了WCF那一块之后,速度明显提高了,可是程序还不是理想中的要求,所以还要继续努力!一丶情境前一段时间发现多个客户端在第一次连接Server的时候会频繁获取同样的数据,也就说每个客户端获取数据都要去数据库查找一次,同一时刻多次的去数据库获取数据也是一件很费时间的事!想来想去,决定把那些基本不变的数据缓存在Server,最后客户端获取数据的时候就不需要直接查找数据库了!上网查了一下关于设计缓存机制的资料,大部分都是ASP.NET Cache的文章!虽然Winform也可以使用ASP.NET Cache,不过在我逐步研究的时候,发现它并不 阅读全文
posted @ 2012-11-24 16:07 TimYang 阅读(1874) 评论(15) 推荐(1) 编辑
摘要:多线程学习将近一个月了,主要资料是来源于园子里面的文章,这里算是一个简单的梳理,整理一下在学习多线程的过程中需要注意哪些方面的问题,本来国庆就应该写好了,可是由于一些原因一直拖着,哈哈,不能拖了,果断写了...个人学习笔记下载:多线程学习笔记.zip下面是我学习多线程看的文章,希望大家看了能有收获....[.Net 线程处理系列]专题一:线程基础[.Net线程处理系列]专题二:线程池中的工作者线程[.Net线程处理系列]专题三:线程池中的I/O线程[.Net线程处理系列]专题四:线程同步[.Net线程处理系列]专题五:线程同步——事件构造[.Net线程处理系列]专题六:线程同步——信号量和互斥 阅读全文
posted @ 2012-10-12 19:23 TimYang 阅读(680) 评论(1) 推荐(2) 编辑
摘要:这段时间参考了公司封装的数据库类库,感觉挺新奇了,从中学到了一些新的知识,有配置文件,有通过反射获得实例名,单例模式等等,这篇算是一个总结把,分享一些我的感受~~一丶主要关系图二丶自定义配置文件节点 通过这种方式可以自定义节点,而不需要系统提供的key和value来存储数据库连接字符串! 而且自定义节点算是比较简单的,主要弄懂一些继承关系就OK了... Note:在定义节点的时候要注意一些主从关系,也就是Section,Element,ElementCollection之间的关系! 一个Section下面可能有很多的Element,一个Element下面可能有很多的Element集合,... 阅读全文
posted @ 2012-08-19 17:42 TimYang 阅读(1904) 评论(4) 推荐(1) 编辑
摘要:本文是一个菜鸟所写,本文面向的人群就是像我这样的小菜鸟,工作一年也辛辛苦苦学习了一年,一直没有机会梳理一下自己的知识,最近花了一些时间整理了一些C#基础知识,也算是对过去的一年做个回顾把~文章有点长,请自带瓜子和茶吧,请看下面C#基础知识简单架构图,不可能100%的全面,请见谅啊...1.值类型和引用类型 1.1堆和栈 简单的说值类型存放在堆栈上面,引用类型的数据存放在托管堆上面(它的引用地址却存放在堆栈上面)! 栈:它是一个内存数组,是一个先进后出的数据结构! 栈的特征:数据只能从栈顶进,从栈顶出! 堆:它是一个内存区域,可以分配大块区域存储某类型的数据,与栈不同的是它里面的数据可... 阅读全文
posted @ 2012-07-14 15:56 TimYang 阅读(4799) 评论(13) 推荐(5) 编辑