上篇文章详细讨论了一对多映射,在一对多映射中单向的关联映射会有很多问题,所以不建议使用如果非要采用一对多的映射的话可以考虑使用双向关联来优化之间的关系,一对多的映射其实质上是在一的一端使用标签来标明它们之间的关系,另外还需要在一的一端的对象中使用set标明集合映射。...
分类:
系统相关 时间:
2014-06-05 05:14:04
阅读次数:
419
当我开始了解《微服务架构》的时候,我发现里面的中文文章是相当的少,于是开始试着翻译一些文章,比如这一篇《微服务——不是免费的午餐》。这篇文章是在某次讨论结束后听到的,和之前类似的是这种区别有点类似于之前说的微内核与宏内核的区别。译文如下:文章是由Contino公司的CTO,Benjamin Wootton写的。Contino是一家在伦敦的咨询公司,专注于DevOps和持续支付。Microservi...
分类:
其他好文 时间:
2014-06-05 02:59:19
阅读次数:
293
实际上,不仅仅是android手机开发,所有的软件开发都要注意代码效率的问题!一般来说,实现相同的功能尽量较少地使用内存,最少的指令是一个优秀开发者需要时刻注意的!这里从两点来讨论这个问题:(一)数据类型选择;(二) 缓存...
分类:
移动开发 时间:
2014-06-05 01:07:14
阅读次数:
353
最大连续子序列(HDU1003,1231)
最大递增子序列和,sum[i]=max(sum[j])+a[i],j
最长公共子序列,LCS经典算法(HDU1159)。
题解:
实际上,我没看出hdu1003和1231的本质差别,形式上的差别就是记载的东西不一样,一个是记载下标,一个是记载元素。基本就是那么回事吧。很多算法书在讨论时效都会拿这个例子来说明,让大家看到算法的力量,从一个弱渣算法到...
分类:
其他好文 时间:
2014-06-03 04:19:10
阅读次数:
279
看了erlang的一些开源网络框架RabbitMQ、Ranch,他们都使用多个进程同时accept一个socket。这种方式在使得socket端口监听的工作分担了更多的调度机会,但是,在erlang中,socket接受一个新连接后,如果想让另一个进程处理消息,就要显式的调用gen_tcp:controlling_process(Socket, Pid)。所以问题来了,erlang多个进程同时监听一个socket安全吗?文章将会重点讨论这个问题及对这个问题做优化。...
分类:
其他好文 时间:
2014-06-03 03:52:52
阅读次数:
218
如果你对本书中的谜题和问题感兴趣,我有个好消息。这不是结束,因为Guru ofthe Week #30不是最后的GotW,我也会继续在各种编程杂志上写文章。
现在,在互联网上,新的GotW问题在comp.lang.c++.moderated新闻组中定期发布、讨论、辩论,并最终收录于GotW正式网站www.gotw.ca。在我写这篇文章时,1999年7月,我们已经进行到了条款55。为了让你领略...
分类:
编程语言 时间:
2014-06-03 01:42:40
阅读次数:
341
Singleton模式可以是很简单的,它的全部只需要一个类就可以完成(看看这章可怜的UML图)。但是如果在“对象创建的次数以及何时被创建”这两点上较真起来,Singleton模式可以相当的复杂,比头五种模式加起来还复杂,譬如涉及到DCL双锁检测(double
checked locking)的讨论、...
分类:
移动开发 时间:
2014-06-02 21:45:41
阅读次数:
483
拦截器是AOP中的概念,它本身是一段代码,可以通过定义“织入点”,来指定拦截器的代码在“织入点”的前后执行,从而起到拦截的作用。Struts2的Interceptor,其拦截的对象是Action代码,可以定义在Action代码之前或者之后执行拦截器的代码。
首先,我们将重点讨论一下Struts2中的拦截器的内部结构和执行顺序,并结合源码进行分析。
Interceptor结构
...
分类:
其他好文 时间:
2014-06-01 14:43:20
阅读次数:
355
HTTP/1.1 协议规定的 HTTP 请求方法有
OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 这几种。其中 POST 一般用来向服务端提交数据,本文主要讨论
POST 提交数据的几种方式。我们知道,HTTP 协议是以 ASCII 码传输,建立在 T...
分类:
其他好文 时间:
2014-06-01 11:35:25
阅读次数:
310
在Linux/Unix系统中,每个进程都有一个非负整型表示的唯一进程ID。虽然是唯一的,但是进程的ID可以重用。当一个进程终止后,其进程ID就可以再次使用了。大多数Linux/Unix系统采用延迟重用的算法,使得赋予新建进程ID不同于最近终止进程所使用的ID,这主要是为了防止将新进程误认为是使用同一ID的某个已终止的先前进程。本文讨论了Linux/Unix分配进程ID的方法以及源码实现。...
分类:
系统相关 时间:
2014-06-01 08:57:45
阅读次数:
387