上一页 1 2 3 4 5 6 7 8 9 ··· 27 下一页
  2014年4月4日
摘要: 一、JITCompiler如你所知,JIT(just-in-time或“即时”)编译器是CLR的重要组件,它的职责是将IL转换成本地cpu指令。>一书中在CLR的执行模型章节里有一副图形象介绍了一个方法(WriteLine)首次调用时发生的事情:JITCompiler函数被调用时,它知道要调用的是哪... 阅读全文
posted @ 2014-04-04 22:03 JeffWong 阅读(3180) 评论(2) 推荐(5) 编辑
  2014年3月10日
摘要: 最近看并行编程书本的一些心得,简单记录下多线程和并行编程必知必会的几个概念,再次加深自己的理解。.NET Framework4提供了一个新的命名空间System.Collections.Concurrent用于解决常用集合在并发情况下的线程安全问题(ps:通过这个命名空间还可以访问用于并行化循环和PLINQ的自定义分区器Partitioner)。这个命名空间下的所有线程安全集合都在某种程度上使用了无锁技术。也就是说,这些集合通过使用比较并交换(Compare And Swap,CAS)指令和内存屏障(Memory Barrier),避免了使用典型的互斥的重量级的锁,虽然实际开发中对性能要求不高 阅读全文
posted @ 2014-03-10 20:16 JeffWong 阅读(1807) 评论(2) 推荐(4) 编辑
  2014年2月9日
摘要: 一、SOA定义 SOA即面向服务架构(Service-Oriented Architecture)。在SOA中,一切皆服务。一个服务是通过消息交换来调用的程序,一个信息系统是共同完成一个特定任务的一组服务,SOA可以概述为一种由一组自治服务创建信息系统的方法。当然具体定义SOA真不好说,反正不能简单 阅读全文
posted @ 2014-02-09 21:57 JeffWong 阅读(3094) 评论(2) 推荐(2) 编辑
  2014年1月13日
摘要: 不久之前团队有个新人问我一个很重要的web服务接口如何保证事务的问题。因为涉及到跨库事务,当时我只是回答目前我们的SOA框架都不支持跨库事务。然后就问到了数据库跨库事务是如何实现的,我只能凭印象含糊回答多数是基于数据库日志(后来知道就是所谓的预写日志Write-Ahead Logging),具体数据库内部如何控制数据一致性则真的说不清楚。后来一起查了一下事务的资料,原来DB的事务控制除了基于预写日志还要实现两阶段提交协议(2PC),参考MSDN摘抄两段加深印象。一、2PC的两个阶段1、准备阶段(Prepare Phase)When the transaction manager receive 阅读全文
posted @ 2014-01-13 23:26 JeffWong 阅读(4011) 评论(1) 推荐(1) 编辑
  2013年12月21日
摘要: ThreadPool(线程池)大概的工作原理是,初始时线程池中创建了一些线程,当应用程序需要使用线程池中的线程进行工作,线程池将会分配一个线程,之后到来的请求,线程池都会尽量使用池中已有的这个线程进行响应,如果请求过多的话,线程池将会按照策略等待或者创建新的线程进行响应直到达到上限。当线程池中的线程处于空闲状态一定时间后(具体多少看环境)线程池池内的空闲线程将会进行自我终结。1、CLR的一个进程内会维护一个线程池,线程池被该进程内所有应用程序域共享。托管线程池中的线程为后台线程, 即线程的IsBackground属性为true。这意味着在所有的前台线程都已退出后,ThreadPool 线程不会 阅读全文
posted @ 2013-12-21 19:21 JeffWong 阅读(1170) 评论(0) 推荐(2) 编辑
  2013年11月28日
摘要: 实现一个很简单的功能,两个动态页面A和B,从A页面导航至B页面,导航通过JS函数控制,具体写法就是window.location.href=xxx,然后点击浏览器上的回退箭头,可以从B页面回退到A页面。各主流浏览器工作得非常好,IE6也很配合,好,很好,非常好。但是,可是,可但是,在某些点击顺序变化的情况下,点击回退箭头,安全站点下的Safari总是强制弹出对话框。当然鉴于情况较为罕见,测试也没有计较,至少不能算不兼容。到这里这个功能就算完成了?可能,也许,maybe…先上生产经受一下用户考验再说。果然,在天朝总有些例外的情况会发生,别忘了我们有一堆中国特色的国产奇葩浏览器,而这次例外的是36 阅读全文
posted @ 2013-11-28 23:24 JeffWong 阅读(3736) 评论(2) 推荐(1) 编辑
  2013年10月24日
摘要: 对象池,最简单直接的作用当然是通过池来减少创建和销毁对象次数,实现对象的缓存和复用。我们熟知的线程池、数据库连接池、TCP连接池等等都是非常典型的对象池。一个基本的简易对象池的主要功能实现我认为应该至少包括以下三点:1、对象的分配、销毁等管理策略2、线程安全3、性能按照主要的常用功能,我们大致可以抽象出以下泛型接口IObjectPool:IObjectPoolusing System;/// /// Simple ObjectPool Interface/// /// public interface IObjectPool : IDisposable{ #region Properti... 阅读全文
posted @ 2013-10-24 21:54 JeffWong 阅读(1670) 评论(0) 推荐(2) 编辑
  2013年9月21日
摘要: 在这个cache everywhere的时代,在这个人人都会说分布式缓存的时代,Memcached几乎已成为网站开发中的标配。作为一名普通的coder,我们在编写缓存代码的时候,很多情况下可能都只是了解其基本原理,知道如何调用API,知道大概怎么work around,然后测试通过上线,通常这样做还真不会出事。然而看到这几天评论猛烈的雄文因为所谓的代码性能不高而被离职的程序员及其回帖,以及之前公司内部培训发现竟然有很多人不知道framework的缓存是天生的Thread Safe,实在忍不住,抛开非技术话题,也不讨论代码可读性,就说说Memcached缓存的使用,用好用对其实并不容易,而且说不 阅读全文
posted @ 2013-09-21 22:39 JeffWong 阅读(7302) 评论(5) 推荐(10) 编辑
  2013年8月3日
摘要: 一、MySql的Query Cache1、Query CacheMySQL Query Cache是用来缓存我们所执行的SELECT语句以及该语句的结果集。MySql在实现Query Cache的具体技术细节上类似典型的KV存储,就是将SELECT语句和该查询语句的结果集做了一个HASH映射并保存在一定的内存区域中。当客户端发起SQL查询时,Query Cache的查找逻辑是,先对SQL进行相应的权限验证,接着就通过Query Cache来查找结果。它不需要经过Optimizer模块进行执行计划的分析优化,更不需要发生同任何存储引擎的交互,减少了大量的磁盘IO和CPU运算,所以有时候效率非常高 阅读全文
posted @ 2013-08-03 21:21 JeffWong 阅读(3622) 评论(0) 推荐(4) 编辑
  2013年7月20日
摘要: 先看一段很简单的java代码: 运行后,我们看到了一串异常信息,StackOverflow了: 爆栈的原因通常是因为递归或者无限循环,上面的代码造成堆栈溢出的直接原因是递归,下面来分析一下造成递归的原因: 定义类InfiniteRecursion,本来希望通过toString方法打印出当前对象的内存 阅读全文
posted @ 2013-07-20 15:27 JeffWong 阅读(2165) 评论(3) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 9 ··· 27 下一页