`
文章列表

Groovy学习2

  JAVA中要像闭包式的处理,匿名内部类有类似的功能,但代码实现很难看,而且如果要访问本地变量,本地变量还必须是final的。比较:java:inteface ResourceUser{  void use(Resource resource);}resourceHandler.handler(new ResourceUser(){   public void use(Resource resource){      resource.doSomething();   }});而groovy(闭包实现)则只要:resourceHandler.handle{ resource -> r ...

Groovy学习1

groovy的执行有两种方式1.先将groovy文件编译(用groovyc编译器)为class类,之后交由JVM加载执行(这种方式跟JAVA没什么太大的区别)2.在运行时生成groovy类,直接通过groovy Myscript.groovy来运行这个脚本,那么其执行的步骤具体来说有:  (1)Myscript.groovy被传递给groovy的转换器  (2)转换器产生了一个抽象语法树(AST)来表达在Myscript.groovy中的所有代码。  (3)groovy类生成器根据AST产生JAVA字节码,根据脚本的内容,结果可能是多个类,现在类通过groovy类加载器是可以使用的了。  (4 ...
  HSF提供的是分布式服务开发框架,taobao内部使用较多,总体来说其提供的功能及一些实现基础:1.标准Service方式的RPC  1)、Service定义:基于OSGI的Service定义方式  2)、TCP/IP通信:   IO方式:nio,采用mina框架   连接方式:长连接   服务器端有限定大小的连接池   WebService方式  3)、序列化:Hessian序列化机制2.软件负载体系3.模块化、动态化4.服务治理   这里简单介绍下其使用:首先要将HSF功能加进工程,是maven的话,在pom.xml里要依赖HSF: <dependency> ...

maven学习

刚从ANT转到MAVEN,使用了一小段时间,现在有时间多做些了解,拿起《maven in action》书读了一遍,比较基础,不过对maven也有了更多的一些了解,总结一些maven的小知识备用吧!不过要熟悉还是得多用,呵呵!   maven用户可以选择配置$M2_HOME/conf/setting.xml或者~/.m2/setting.xml.前者是全局范围的,整台机器上的所有用户都会直接受到该配置的影响,而后者是用户范围的,只有当前用户才会受到该配置的影响。推荐使用用户范围的setting.xml,主要原因是为了避免无意识地影响到系统中的其他用户。除此以外,还有个原因是便于maven ...
  1:“Hadoop是一个框架,不是一个解决方案”——在解决大数据分析的问题上人们误认为Hadoop可以立即有效工作,而实际上“对于简单的查询,它是可以的。但对于难一些的分析问题,Hadoop会迅速败下阵来,因为需要你直接开 ...

Guava学习2

PART3. Concurrency   加了个ListenableFuture接口: ListenableFuture extends Future{ void addListener(Runnable paramRunnable, Executor paramExecutor); }   代码实例: ListeningExecutorService service = MoreExecutors.listeningDecorator(Executors.newFixedThreadPool(10)); ListenableFuture ex ...

Guava学习1

 
Guava项目涵括了好几个Google开发的JAVA项目所依赖的核心库,像: collections, caching, primitives support, concurrency libraries, common annotations, string processing, I/O等. 项目开发需要,所以学习一下。   PART1. Basic Utilities      第一.  对于null ...

Spring MVC学习

DispatcherServlet主要用作职责调度工作,本身主要用于控制流程,主要职责如下:1、文件上传解析,如果请求类型是multipart将通过MultipartResolver 进行文件上传解析;2、通过HandlerMapping,将请求映射到处理器(返回一个HandlerExecutionC ...
B-树(也就是B树)        是一种多路搜索树(并不是二叉的):        1.定义任意非叶子结点最多只有M个儿子;且M>2;        2.根结点的儿子数为[2, M];        3.除根结点以外的非叶子结点的儿子数为[M/2, M];        4.每个结点存放至少M/2-1(取上整)和至多M-1个关键字;(至少2个关键字)        5.非叶子结点的关键字个数=指向儿子的指针个数-1;        6.非叶子结点的关键字:K[1], K[2], …, K[M-1];且K[i] < K[i+1];        7.非叶子结点的指 ...
《欺骗的艺术》是著名的黑客凯文.米特尼克写的一本关于社会工程学的书籍,书里讲的不是黑客编程技术,而主要是从攻击人性角度的漏洞,一步一步地来达到最终的目的。 在现实,大多数公司配置的安全产品如认证设备(身 ...
        这是一篇知识性的文档,主要目的是为了让Web缓存相关概念更容易被开发者理解并应用于实际的应用环境中。为了简要起见,某些实现方面的细节被简化或省略了。如果你更关心细节实现则完全不必耐心看完本文,后面参考文档和更多深入阅读部分可能是你更需要的内容。 什么是Web缓存,为什么要使用它? 缓存的类型: 浏览器缓存; 代理服务器缓存; Web缓存无害吗?为什么要鼓励缓存? Web缓存如何工作: 如何控制(控制不)缓存: HTML Meta标签 vs. HTTP头信息; Pragma HTTP头信息(为什么不起作用); 使用Expires(过期时间)HTTP头信息 ...

JUC AQS

               一个基于AQS的Synchronizer所执行的基本操作,是一些不同形式的获取(acquire)和释放(release).获取操作是状态依赖的操作,总能够阻塞。借助锁和信号量,“获取”的含义变得相当直观--获取锁或者许可--并且调用者可能不得不去等待,直到Synchronizer处于可发生的状态。CountDownLatch的请求意味着“等待,直到闭锁到达它的终止态”,FutureTask则意味着“等待,直到任务已经完成”。“释放”不是一个可阻塞的操作:“释放”可以允许线程在请求执行前阻塞。             为了让一个类具有状态依赖性,它必须拥有一些 ...
  这是个有意思的小故事:假如您是位伐木工人,如果您拥有最好的斧子,那您将会是林场中最能干的伐木工人。忽然有一天,有人向您展示并推荐一个新型伐木工具,电锯。这个销售人员很善于推销,于是您购买了电锯,但不 ...
要处理的情况:一次用户请求,后台要处理业务: step1,查询并大数据且复杂的业务处理,得到结果集A;step2,基于结果集A,调用web service查询结果集Bstep3,将A和B显示在页面上   之前的方案就是在step1完成后就直接进入step3显示 ...
2012年在忙碌中过去了,新得一年的第一天,我觉得还是相当由必要做个2012的自我回顾,以及2013的计划与展望。   2012年 首先在工作上,迟来得升职并没有给我带来太大得欣喜,倒是在项目中更多的参与解决核心难题:性能,我倒是更觉得开心,马力十足(当然,比起淘宝之类的互联网应用中的问题那当然还是小儿科了)!此前书上,博客上看到的数据库表拆分,服务分离等手段,项目上不得不去采用。在具体的实现上,由于业务上要处理比较大的数据量,对NIO,多线程,JVM的内存模型,垃圾回收等方面有了更多的研究,学习及少许的应用。当然,还有其他方面的因为项目需要的一些研究,象
Global site tag (gtag.js) - Google Analytics