转载:http://netgodfather.blog.sohu.com/74926448.html
Facebook 成功了,而且不是小成。
当初 Facebook 以校园为基础,掀起真人社交网络的时候,就引来了大量的跟风者。这个跟风还不是中国人民的专利,是全世界都在跟风。记得前段时间就有人列出了各种语言的Facebook 跟风网站。
后来,Facebook 开始开放了API,引来了大量的第三方应用在Facebook上驻扎。这甚至引起了Google这个互联网老“新秀”的警惕。开放API似乎也会开始逐步成为一种风潮。
但是,谁想做平台?谁能做平台?谁想做内容?谁能做内容?
Faceb ...
一、 一个文本文件有多行,每行为一个URL。请编写代码,统计出URL中的文件名及出现次数。
a) 文件名不包括域名、路径和URL参数,例如http://www.ourday.cn/bbs/forumdisplay.php?fid=18中的文件名是forumdisplay。
b) 部分URL可能没有文件名,例如http://www.ourday.cn/,这类统计为“空文件名”。
c) 出现在不同URL中的相同文件名视为同一文件名,例如http://www.ourday.cn/index.php和ftp://ftp.ourday.cn/index.php为同一文件名
文件内 ...
写模型
读写模型是一个稍微复杂一些的模型。
一份共享资源允许多个读者同时读取。但是只要有一个写者在写这份共享资源,任何其他的读者和写者都不能访问这份共享资源。
读写模型实现起来,不仅需要信号量机制,还需要额外的读者计数和写者计数。
public static final Object signal = new Object();
public static int readers = 0;
public static int writers = 0;
// 读者代码
… read() {
for(… ) { // 循环执行
synchronized(signal){ ...
转载:http://xiecc.blog.163.com/blog/static/14032200791635949331/
全球第二大社交网站的facebook推出的开发平台在几个月之内迅速走红。在拒绝了 yahoo,google等的收购后,它的狼子野心也暴露无遗,它要做基于web的OS,在它的开放发台上可以搭建集成任何应用。游戏、工作、理财一切都在facebook中了,浏览器+facebook,会成为以后人们的生活方式吗?
然而不得不说facebook的官方文档既乱且差, 很多刚开发facebook应用的人可能都会丈二和尚摸不着头脑。这篇日志算是八卦+tutorial吧。
一、 ...
TCP、UDP是传输层协议。
HTTP是应用层协议,其传输都是被包装成TCP协议传输。
SOCKET是实现传输层协议的一种编程API。
TreeCache是一种结构化的、基于复制的事务缓存。TreeCache是JBoss应用服务器中集群服务—包括JNDI集群、HTTP和EJB的Sesssion集群、JMS集群—的基础框架。其可以单独使用,可以集成到JBossAS应用,也可以集成到其他的应用服务器上。TreeCache是一种树状结构,每个节点拥有一个名字和多个或者没有子节点,除跟节点没有子节点其他节点有且只有一个父母节点,可以通过路径名来访问子节点(FQN:Full Qualified Name),在一个TreeCache中可以存在多棵树,,即可以有多个根节点。当应用于分布式环境时,由于TreeCache是基于复制的,每个子节点 ...
Hibernate 中实现了良好的Cache 机制,我们可以借助Hibernate 内部的Cache迅速提高系统数据读取性能。
需要注意的是:Hibernate做为一个应用级的数据访问层封装,只能在其作用范围内保持Cache中数据的的有效性,也就是说,在我们的系统与第三方系统共享数据库的情况下,Hibernate的Cache机制可能失效。一个很简单的例子,如果你用access修改了库中的值,那么这就不会更新JVM中的缓冲池,这就导致了赃数据的产生。
Hibernate 在本地JVM 中维护了一个缓冲池,并将从数据库获得的数据保存到池中以供下次重复使用(如果在Hibernate中数据发生了变 ...
B树(二叉搜索树)定义:
1)、每个非叶子节点至多有两个子节点。
2)、每个节点都存储关键字值。
3)、其左子节点的关键字值小于该节点,且右子节点的关键字值大于或等于该节点。
简略代码实现:
/**
* 节点类
*/
class Node{
public int key;
public int data;
public Node leftChild;
public Node rightChild;
public Node(int key, int data){
this.key = key;
this.data = data;
this.leftChild = ...
package com.study.doublelink;
/**
* 节点类
*/
class Link{
public int data;
public Link next;
public Link previous;
public Link(int data){
this.data = data;
this.next = null;
this.previous = null;
}
public void display(){
System.out.println(this.data);
}
}
/**
* 双向双端链表类
*/
cla ...
哈希表分为两大类,一是开放地址法,二是链地址法。
1)、开放地址法中,通过在哈希表中再找一个空位解决冲突问题。
2)、链地址法中,某个数据项的关键字值还是像通常一样映射到哈希表的单元,而数据项本身插入到这个单元的链表中,其他同样映射到该位置的数据项只需要加入到链表中。
链地址法Java简缩代码:
/**
* 节点类
*/
class Link{
private int data;
public Link next;
public Link(int data){
this.data = data;
this.next = null;
}
public int get ...
现有个项目,运行于Linux平台下的tomcat服务中,在页面中查看传递的中文参数值,是乱码。解决方案如下,
第一种方法:在tomcat的server.xml中,对connector添加 URIEncoding="GBK"。
第二种方案:在接受参数程序中,设置语言编码。
对象的传递与返回
1、Java对象以引用的方式传递,但就传递来说,是引用值的传递。
2、尽量避免以参数形式返回值。
3、不能以final来限制对象值的修改,因为final修饰的是引用,只能是其不能指向其他对象。
4、方法内没有局部对象,只有局部引用。
5、引用有作用域,而对象没有。
6、希望一个类可以被克隆:
1)、实现Cloneable接口。
2)、重载clone()。
3)、在你的clone()方法中调用super.clone()。
4)、在你的clone()方法中捕获异常。
7、为什么拷贝构造函数能在C++中可行,在Java中不行:
因为在c++中,可以以对象的局部拷贝来实现, ...
很多人对二级缓存都不太了解,或者是有错误的认识,我一直想写一篇文章介绍一下hibernate的二级缓存的,今天终于忍不住了。
我的经验主要来自hibernate2.1版本,基本原理和3.0、3.1是一样的,请原谅我的顽固不化。
hibernate的session提供了一级缓存,每个session,对同一个id进行两次load,不会发送两条sql给数据库,但是session关闭的时候,一级缓存就失效了。
二级缓存是SessionFactory级别的全局缓存,它底下可以使用不同的缓存类库,比如ehcache、oscache等,需要设置hibernate.cache.provider_class ...
大家都清楚Spring的AOP方面工作是很优秀,但是其内在的基础的东西,还是有一大部分不太了解的,其AOP大量用了ThreadLocal,这一个在前面已做了介绍了,还有一个比较重要的怎样用动态代理组装成AOP.
说到动态代理,有两种情况,第一种是有接口的情况下,你可以选择为jdk自带的动态代理的方式来编写程序,但你想要为一个实在的类编写动态代理的方式的话,这时候就必须选择一些开源的lib包啦.spring和hibernate选择了同样的CGlib包,具体表现在:Hibernate主要是利用cglib生成pojo的子类并override get方法来实现lazy loading机制,Spri ...
Java中对象的串行化(Serialization)和transient关键字:
对象的串行化(Serialization) 一、串行化的概念和目的
1.什么是串行化
对象的寿命通常随着生成该对象的程序的终止而终止。有时候,可能需要将对象的状态保存下来,在需要时再将对象恢复。我们把对象的这种能记录自己的状态以便将来再生的能力。叫作对象的持续性(persistence)。对象通过写出描述自己状态的数值来记录自己 ,这个过程叫对象的串行化(Serialization) 。串行化的主要任务是写出对象实例变量的数值。如果交量是另一对象的引用,则引用的对象也要串行化。这个过程是递归的,串行化可能要 ...
在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现远程通讯的技术,例如:RMI、MINA、ESB、Burlap、Hessian、SOAP、EJB和JMS等,这些名词之间到底是些什么关系呢,它们背后到底是基于什么原理实现的呢,了解这些是实现分布式服务框架的基础知识,而如果在性能上有高的要求的话,那深入了解这些技术背后的机制就是必须的了,在这篇blog中我们将来一探究竟,抛砖引玉,欢迎大家提供更多的实现远程通讯的技术和原理的介绍。
基本原理
要实现网络机器间的通讯,首先得来看看计算机系统网络通信的基本原理,在底层层面去看,网络通信需要做的就是将流从一台计 ...
RMI-IIOP出现以前,只有RMI和CORBA两种选择来进行分布式程序设计。RMI-IIOP综合了RMI
和CORBA的优点,克服了他们的缺点,使得程序员能更方便的编写分布式程序设计,实现分布式计算。
首先,RMI-IIOP综合了RMI的简单性和CORBA的多语言性(兼容性),其次RMI-IIOP克服了RMI只能
用于Java的缺点和CORBA的复杂性(可以不用掌握IDL).
下面给出了一个非常的简单的RMI-IIOP程序,该程序是在上一个例子(Java2 RMI入门的基础)
上修改完成的,可以对比两个程序的区别。
1. 实现远程接口,生成远程对象,存根(Stub)和框架(Skeleton ...
消息中间件原理及JMS简介之一 作者:orangelizq摘要: 现今,越来越多的企业面临着各种各样的数据集成和系统整合,CORBA、DCOM、RMI等RPC中间件技术也应运而生,但由于采用RPC同步处理技术,在性能、健壮性、可扩展性上都存在着诸多缺点。而基于消息的异步处理模型采用非阻塞的调用特性,发送者将消息发送给消息服务器,消息服务器在合适的时候再将消息转发给接收者;发送和接收是异步的,发送者无需等待,二者的生命周期也可以不必相同,而且发送者可以将消息间接传给多个接收者,大大提高了程序的性能、可 ...
1、构架师胚胎(程序员)
学习的知识是语言基础、设计基础、通信基础等,应该在大学完成,内容包括java、c、c++、uml、RUP、XML、socket通信(通信协议)——学习搭建应用系统所必须的原材料。
2、构架师萌芽(高级程序员)
学习分布式系统、组建等内容,可以在大学或第一年工作时间接触,包括分布式系统原理、ejb、corba、com/com+、webservice(研究生可以研究网络计算机、高性能并发处理等内容)
3、构架师幼苗(设计师)
应该在掌握上述基础之上,结合实际项目经验,透彻领会应用设计模式,内容包括设计 ...
架构师核心技能养成计划
作者:江南白衣,原文出处: http://blog.csdn.net/calvinxiu/archive/2007/02/18/1511545.aspx.
引子:
"这个项目的架构是什么?"
对方爽快的回答:"Spring+Struts+Hibernate。"
嗯,这位很可能不是架构师......
一、核心竞争力
架构设计的原理、模式与技术
未经培训的架构师们从试验与挫折中获得架构设计的技能,但其中大量的原理、知识、模式和技巧,都经历了一个重复发现的过程。
其实,各路神仙在这个领域虽则没有捣鼓出大热的畅销书来,但前篇的 ...
Oracle分区技术
ORACLE的分区(Partitioning Option)是一种处理超大型表的技术。分区是一种“分而治之”的技术,通过将大表和索引分成可以管理的小块,从而避免了对每个表作为一个大的、单独的对象进行管理,为大量数据提供了可伸缩的性能。分区通过将操作分配给更小的存储单元,减少了需要进行管理操作的时间,并通过增强的并行处理提高了性能,通过屏蔽故障数据的分区,还增加了可用性。
ORACLE的分区表的划分方法包括:按字段值进行划分的范围分区;按字段的HASH函数值进行的划分HASH分区;先按范围划分,再按HASH划分的复合分区;在ORACLE9i中又增强了按字段值列表进行划分 ...
数据库大表的优化:采用蔟表(clustered tables)及蔟索引(Clustered Index)
蔟表和蔟索引是oracle所提供的一种技术,其基本思想是将几张具有相同数据项、并且经常性一起使用的表通过共享数据块(data block)的模式存放在一起。各表间的共同字段作为蔟键值(cluster key),数据库在访问数据时,首先找到蔟键值,以此同时获得若干张表的相关数据。蔟表所能带来的好处是可以减少I/O和减少存储空间,其中我更看重前者。采用表分区(partition)
表分区技术是在超大型数据库(VLDB)中将大表及其索引通过分区(patition)的形式分割为若干较小 ...
大数据量的数据库设计准则:
1、分区 (list、range、hash)。
2、根据where条件来决定分区策略。
1.是否使用联合主键?个人倾向于少采用联合主键。因为这样会降低索引的效率,联合主键一般都要用到至少一个业务字段,往往是字符串型的,而且理论上多字段的索引比单字段的索引要慢些。看上去似乎也不那么清爽。
在实际的设计中,我尽量避免使用联合主键,有些时候“不得不”使用联合主键。
2.PK采用无意义的字段(逻辑主键)还是有意义的字段(业务主键)?个人倾向于“逻辑主键”,理由是这样设计出的数据库模型结构清晰、关系脉络清楚,往往更符合“第三范式”(虽然不是故意的,呵呵)。而且更容易避开“联合主键”,而且可以使用索引效率高的字段类型,比如int、long、number。缺点是用无意义的字段建立表间的关系, ...
1、把你表中经常查询的和不常用的分开几个表,也就是横向切分
2、把不同类型的分成几个表,纵向切分
3、常用联接的建索引
4、服务器放几个硬盘,把数据、日志、索引分盘存放,这样可以提高IO吞吐率
5、用优化器,优化你的查询
6、考虑冗余,这样可以减少连接
7、可以考虑建立统计表,就是实时生成总计表,这样可以避免每次查询都统计一次
8、用极量数据测试一下
数据仓库解决的是数据挖掘,共享,和大数据量存储有什么根本关系?
mrzxc 等说的好,考虑你的系统,注意负载平衡,查询优化,25 万并不大,可以建一个表, ...
wincvs的简单使用指南:
第一步:设置CVS
在菜单“管理”〉设置〉
认证方式:pserver
路径:/cvs/cvsroot(视个人情况而定)
主机地址:192.168.13.88(视个人情况而定)
用户:liwc
第二步:登陆
第三步:检出项目
在菜单“远程”〉检出项目|模块〉检出设置中:
服务器上的模块名和路径:document/工期/08版本发布计划(视个人情况而定)
检出到本地文件夹:D:\work\cvs-doc\document\工期\08版本发布计划\(视个人情况而定)。
myeclipse的使用技巧:
1、在编译工程时,经常因为html格式原因,整个工程标志为编译错误。为了忽略这种错误,可以使用,工程名上使用右键-〉properties->MyEclipse->Validation->勾选override validation preferences->HTML syntax Validator.
apache modules开发注意事项:
1、apache是以多进程、一个进程多线程的方式运行的,所以对于全局动态内存变量的修改(如:删除、释放空间、重新分配空间),需要使用互斥或写锁进行数据的同步。
2、module开发中,尽量使用apache提供的api,如strdup环境apr-strdup等。
3、modules在apache执行链的顺序默认是以httpd.conf中的load顺序执行的,但最好在注册钩子函数时,明确指明module执行顺序。
4、在读取文件更新数据时,先判定文件的修改时间,如果没有变化,则不进行修改。
- 浏览: 6084 次

- 详细资料
搜索本博客
我的相册
axis2-codegen-javatowsdl
共 4 张
共 4 张
最近加入圈子
最新评论
-
大数据量的系统的数据库结 ...
liwanchun_xd 写道1、把你表中经常查询的和不常用的分开几个表,也就是 ...
-- by petitlen -
axis2-eclipse-codegen-wi ...
能上传一下 axis2-eclipse-codegen-wizard-1.4.p ...
-- by likai22 -
axis2-eclipse-codegen-wi ...
怎么还要PART5?
-- by logl -
Hibernate之Cache学习笔 ...
为什么没有提到memcached呢
-- by Joo -
hibernate二级缓存讲解
这个帖子和 http://www.javaeye.com/topic/18904 ...
-- by livefree






评论排行榜