08 2012 档案
摘要:今天整理“信号量”的相关知识,其实想想也蛮有趣的,锁,互斥,信号量都可以实现线程同步,在framework里面主要有三种。<1>:ManualResetEvent<2>:AutoResetEvent<3>:Semaphore好,下面就具体看看这些玩意的使用。一:ManualResetEvent 该对象有两种信号量状态True和False,好奇的我们肯定想知道True和False有什么区别,稍后的例子见分晓,有三个方法值得学习一下。1:WaitOne 该方法用于阻塞线程,默认是无限期的阻塞,有时我们并不想这样,而是采取超时阻塞的方法,如果超时就放弃阻塞,这样也
阅读全文
摘要:【服务组织】功能按钮:刷新;查看、新增、修改主列表:ID、服务组织名称、类型、联系人、电话【维修工场】查询条件:服务组织(下拉选择);维修工场类型(下拉选择);工位类型(下拉选择)维修工场代码(文本模糊匹配);维修工场名称(文本模糊匹配);工位编号(文本模糊匹配);工位名称(文本模糊匹配);工位是否可用(下拉选择,可置空,表示不限制);备注(文本模糊匹配工场或者工位的备注);功能按钮:查询;刷新;查看工场、新增工场、修改工场;查看工位、新增工位、修改工位、删除工位;添加工位对应班组;主列表:服务组织,工场编号,工场名称,工场类型,联系人,电话工位列表:工位编号,工位名称,工位类型,是否可用(勾
阅读全文
摘要:一:Mutex首先看下MSDN对它的解释: 不错,出现了一个亮点,可用于“进程间同步“,既然进程间都可以同步,那线程同步对它来说不是小菜一碟吗?好的,还是看下Mutex在线程中发挥的神奇功效。1: 线程间同步 Metux中提供了WatiOne和ReleaseMutex来确保只有一个线程来访问共享资源,是不是跟Monitor很类似,下面我还是举个简单的例子,注意我并没有给Metux取名字。 1 class Program 2 { 3 static void Main(string[] args) 4 { 5 for (int i...
阅读全文
摘要:当多个线程在并发的时候,难免会碰到相互冲突的事情,比如最经典的ATM机的问题,并发不可怕,可怕的是我们没有能力控制。线程以我的理解可以分为三种① 锁。② 互斥。③ 信号。C#提供了2种手工控制的锁一: Monitor类 这个算是实现锁机制的纯正类,在锁定的临界区中只允许让一个线程访问,其他线程排队等待。主要整理为2组方法。1:Monitor.Enter和Monitor.Exit 微软很照护我们,给了我们语法糖Lock,对的,语言糖确实减少了我们不必要的劳动并且让代码更可观,但是如果我们要精细的 控制,则必须使用原生类,这里要注意一个问题就是“锁住什么”的问题,一般情况下我们锁住的都是...
阅读全文
摘要:最近用DB2,数据库之间的差异还是很大的,好多函数都不一样1.去空格*DB2中:Ltrim()是去左边空格,rtrim()是去右边空格。*informix中:trim()就是去空格。用法:例:string a=" abc "; *DB2中:Ltrim(a)="abc ";rtrim(a)=" abc",rtrim(ltrim(a))="abc"; *informix中:trim(a)="abc".注意:DB2中无trim()函数,所以要去空格要执行左右去空格。2.取值若为空值,用另外一个值代替
阅读全文
摘要:今天和大家来聊一聊关于反射的话题,对于反射的基础知识我在这里就不再从头来过一遍了,园子里的文章大把。那聊什么呢?我们就聊聊反射的应用场景,或许大家会更感兴趣。反射在应用中大多会与配置文件、特性等元素联系起来,接下来我们来看一些配置节点片段代码。配置节点一<httpModules> <add name="test" type="MyModule.MyHttpModule,MyHttpModule"/> </httpModules>配置节点二<handlers> <add name="AjaxP
阅读全文
摘要:这几天用到多线程时才发现自己对多线程的了解少之又少,仅仅停留在lock上面,故这几天看了下线程参考手册结合自己的心得整理一下放在博客上作为自己的学习笔记。 好了,我们知道“负载”是一个很时尚,很牛X的玩意,往大处说,网站需要负载,数据库需要负载。往小处说,线程也需要负载,面对海量的用户请求,我们的单线程肯定扛不住,那么怎么办,一定要负载,所以说多线程是我们码农必须要熟练掌握的一门技术。 在framework中给我们提供了一个Threading命名空间,下面是一个msdn上不完整的截图:在后面的系列中我也是主要整理这几个类的使用方法和应用场景。一:Thread的使用 我们知道这个类代表处...
阅读全文
摘要:WCF中托管服务一般有一下四种:Console寄宿: 利于开发调试,但不是生产环境中的最佳实践。winform寄宿: 方便与用户进行交互,用户想开就开,想关就关,但如果机器重启了,不得不自己手动开一下,危险+麻烦。IIS寄宿: 此寄宿在实战项目中得到了广泛的应用。 好处有:随系统启动和停止。 IIS有大量的管理策略对其进行管理。 即想利用WCF的功能,还想访问asp.net的功能。Window Service 寄宿: 这个寄宿在实战中也是...
阅读全文
摘要:现在的大型架构,nginx集群,iis集群,wcf集群,DB集群,由一个人作战变成了群殴.......今天我就分享下WCF集群,高性能架构中一种常用的手法就是在内存中维护一个叫做“索引”的内存数据库,在实战中利用“索引”这个概念做出"海量数据“的秒杀。如图:
阅读全文
摘要:众所周知,放了防止订单丢失,我们都是采用Order过一下MSMQ。 MSMQ的优点个人认为是:先天的异步消息发送和天生的自动负载均衡。即使WCF服务OFF LINE,也可以保证订单不丢失(将订单信息存入消息队列中),在WCF服务 ON LINE的时候,继续执行订单
阅读全文
摘要:学习wcf,还是对其中的几个术语要了解一下。wcf中有一个ABC的概念,就是第一: "A" 是地址,就是告诉别人我wcf在何处。 第二: "B"是绑定,就是告诉别人应该走什么路才能过来。 第三: "C"是契约:就是告诉别人我wcf这里有哪些东西。项目开发中常用到的三种绑定: 第一:wsHttpBinding, 这个binding可以认为是webservice的加强版WSE,设计的目的就是用于异构系统的交互(比如java)。 第二:netTcpBinding, 这个binding可以认为是remoting的加强版,设计的目的就是用于不同
阅读全文
摘要:回溯思想,也可称为试探思想。一: 思想 有时我们要得到问题的解,先从其中某一种情况进行试探,在试探过程中,一旦发现原来的选择是错误的,那么就退回一步重新选择, 然后继续向前试探,反复这样的过程直到求出问题的解。二:场景 回溯思想是一个非常重要的思想,应用场景也是非常广泛。 ① “下棋”: 每一次走棋的位置都要考虑到是否是损人利己,如果是害人害己的走法就要回撤,找下一步损人利己的走法。 ② “迷宫”: 这种问题用试探法来解决相信我也不用向大家介绍了,其实迷宫问题抽象起来就是“对图的遍历问题“,当然对 图的遍历我先前的文章是有的,有兴趣的可以自己看一看。
阅读全文
摘要:一、位运算应用口诀 清零取位要用与,某位置一可用或 若要取反和交换,轻轻松松用异或二、移位运算 1、它们都是双目运算符,两个运算分量都是整形,结果也是整形。 2、"<<" 左移:右边空出的位上补0,左边的位将从字头挤掉,其值相当于乘2。 3、">>"右移:右边的位被挤掉。对于左边移出的空位,如果是正数则空位补0,若为负数,可能补0或补1,这取决于所用的计算机系统,其值相当于除以2。 4、">>>"运算符,右边的位被挤掉,对于左边移出的空位一概补上0。三、位运算符的应用 (源操作数s 掩码mas
阅读全文
摘要:/// <summary> /* * 枚举思想,这种思想也常是码畜,码奴常用的手段,经常遭到码农以上级别的鄙视,枚举思想可以说是在被逼无奈时最后的狂吼。 一: 思想 有时我们解决某个问题时找不到一点规律,此时我们很迷茫,很痛苦,很蛋疼,突然我们灵光一现,发现候选答案的问题规模在百万之内, 此时我们就想到了从候选答案中逐一比较,一直找到正确解为止。 二: 条件 前面也说了,枚举是我们在无奈之后的最后一击,那么使用枚举时我们应该尽量遵守下面的两个条件。 ① 地球人都不能给我找出此问题的潜在规律。 ② ...
阅读全文
摘要:一: 概念 递归,说白了就是直接或者间接的调用自己的一种算法。它是把求解问题转化为规模较小的子问题,然后通过多次递归一直到可以得出结果 的最小解,然后通过最小解逐层向上返回调用,最终得到整个问题的解。总之递归可以概括为一句话就是:“能进则进,不进则退”。 二:三要素 <1> 递归中每次循环都必须使问题规模有所缩小。 <2> 递归操作的每两步都是有紧密的联系,如在“递归”的“归操作时”,前一次的输出就是后一次的输入。 <3> 当子问题的规模足够小时,必须能够直接求出该规模问题的解,其实也就是必须要有结束递归的条件。...
阅读全文
摘要:--不是说的In,Not IN分页方式,也不是通常的双OrderBy方式,这是使用于千万级别数据分页的SQL语句:--orderid 1:1028 10:10257 20:10267 30:10277--查询第20-30条select top 10 * from Orders where OrderID> (select max(OrderID) from (select top 20 OrderID from Orders order by OrderID ASC ) t0)order by OrderID ASC
阅读全文
摘要:USE [mydb]GO/****** Object: StoredProcedure [dbo].[OutputData] Script Date: 03/12/2012 11:44:00 ******/SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGOALTER PROCEDURE [dbo].[OutputData] @tablename sysname AS declare @column varchar(1000) declare @columndata varchar(1000) declare @sql varchar(4000) ...
阅读全文
摘要:【客户信息功能的要求】查询条件: 1.客户类型(必填,默认值为个人客户,可选个人客户、企业客户) 2.客户名称(模糊检索客户全称、简称、英文全称、英文简称), 3.客户编号(精确匹配); 4.电话(模糊匹配企业或者个人扩展信息中的多个电话相关的字段) 5.证件号码(文本精确匹配,仅当客户类型为个人时可用,否则自动清空;匹配身份证和其他证件号码) 6.备注(模糊匹配个人信息、企业信息中的备注文本) 7.车款(下拉选择,树图显示,选取后,以“主机厂/车系/车型/车款”唯一路径方式显示为只读文本) 8.车牌号(模糊匹配,关联车辆信息查找) 9.车架号(精确匹配,关联车辆信息查找) 10.性别(仅显示
阅读全文
摘要:重构代码可以从如下几个方面着手:1)已经废弃不用的注释,方法,属性,变量去掉他们;2)方法名称在各个模块雷同,但又不一致的,请修改为一致的命名;3)对相关的方法应该放在一起,便于查看;4)一些不应该作为public公开出去的属性和方法,考虑将其修改为private或者internal,增强封装的效果,避免误用;5)优化一些效率不高的,反复遍历查找的算法;
阅读全文