可以看一下LinkedIn网站的基本情况:
1. 2千2百万用户2. 每个月4百万独立用户访问3. 每天4千万Page View4. 每天2百万搜索流量5. 每天25万邀请发送6. 每天1百万的回答提交7. 每天2百万的Email消息发送
这是一个世界顶尖级别流量的网站了,看看LinkedIn的系统架构:
操作系统:Solaris (running on Sun x86 platform and Sparc)
应用服务器:Tomcat and Jetty as application servers
数据库:Oracle and MySQL as DBs
没有ORM,直接用JDBC No ORM (such as Hibernate); th** use straight JDBC
用ActiveMQ在发送JMS. (It”s partitioned by type of messages. Backed by MySQL.)
用lucene做搜索Lucene as a foundation for search
Spring做逻辑架构Spring as glue
下面 ...
ORM框架最重要功能是将面向对象方法中的对象和关系型数据库中的表关联了起来,在关联过程中就必然涉及到对象中的数据类型和数据库中的表字段类型的转换,Mybatis中的org.apache.ibatis.type包主要就是实现这个功能。
一、org.apache.ibatis.type的基础类在mybatis的官网中(http://mybatis.github.io/mybatis-3/configuration.html#typeHandlers)关于类型转换有如下的描述
Whenever MyBatis sets a parameter on a PreparedStatement or retrieves a value from a ResultSet, a TypeHandler is used to retrieve the value in a means appropriate to the Java type.
当MyBatis为PreparedStatement 设置参数时或者从ResultSet中获取数据时,会根据Java类型使用TypeHandler 去获取相应的值 ...
原文 http://www.aptusource.org/2014/06/searching-is-what-its-all-about/
Solr 的主要功能就是强大的查询处理。在本文中,你将会看到 Solr 的查询处理,这将会帮助你了解为什么说 Solr 是强大的搜索技术。
在本文中,请注意每个查询和 Solr 返回的文档之间的链接,以及返回的结果文档中的排序。这将有助于你像搜索引擎那样去思考问题,以后我们会逐渐覆盖核心的搜索概念。
探索 Solr 的查询表单你可能已经使用过 Solr 的查询表单来执行查找所有文档的查询。现在,我们来快速看看这个表单的其它特性,这样可以让你对 Solr 支持的查询类型有个直观的了解。下图对这个表单的重点部分进行了注释。请花点时间来逐个了解这些注释:
在上图中,我们编写了一个查询,并且如果使用《[Solr] 快速入门》中添加的文档的话,那么结果中将会返回两个示例文档。像上图中的表单那样填写,并在你自己的环境中执行一次,看看是否真的返回了两个示例文档?
所有和 Solr 核心服务的交互过程都是使用 HTTP 请求。当你填写了查询表单并点击查询后,将 ...
前言基于 Swing 的富客户端开发在企业级应用开发中占据了重要的地位,而可视化开发工具尽管提高了 Swing 的开发效率,却降低了程序的可维护性。在此情况下,诸多 Swing 开发框架应运而生,Spring Richclient 便是其中一个。作为 Spring 的子项目,Spring Richclient 承袭了 Spring 对企业级应用的支持。通过 Spring 容器,Spring Richclient 将各种客户端组件以松耦合的方式组织到一起,大大增加了应用程序的灵活性。同时,Spring Richclient 对 Swing 控件进行了优雅的封装,大大提高了 Swing UI 的开发效率。在本系列的第 1 部分中,我将向您介绍如何使用 Spring Richclient 快速搭建 Swing 富客户端应用。
环境搭建首先您需要下载 Spring Richclient 相关发布包以及依赖库(查看参考资料),Spring Richclient 的最新版本为 1.1.0,由于 Spring Richclient 从 1.0 开始接口变化较大,建议您下载最新版本进行开发。
解压后, ...
常见的数据结构有数组、链表,还有一种结构也很常见,那就是树。前面介绍的集合类有基于数组的ArrayList,有基于链表的LinkedList,还有链表和数组结合的HashMap,今天介绍基于树的TreeMap。 TreeMap基于红黑树(点击查看树、红黑树相关内容)实现。查看“键”或“键值对”时,它们会被排序(次序由Comparable或Comparator决定)。TreeMap的特点在于,所得到的结果是经过排序的。TreeMap是唯一的带有subMap()方法的Map,它可以返回一个子树。
常见的数据结构有数组、链表,还有一种结构也很常见,那就是树。前面介绍的集合类有基于数组的ArrayList,有基于链表的LinkedList,还有链表和数组结合的HashMap,今天介绍基于树的TreeMap。
TreeMap基于红黑树(点击查看树、红黑树相关内容)实现。查看“键”或“键值对”时,它们会被排序(次序由Comparable或Comparator决定)。TreeMap的特点在于,所得到的结果是经过排序的。TreeMap是唯一的带有subMap()方法的Map,它可 ...
内核专家 Bryan Cantrill 和 Jeff Bonwick 在 2008 年 9 月的《ACM Queue》上发表了《Real-world Concurrency》 一文,提出了 15 条并发编程的建议。
内核专家 Bryan Cantrill 和 Jeff Bonwick 在 2008 年 9 月的《ACM Queue》上发表了《Real-world Concurrency》 一文,提出了 15 条并发编程的建议,这里简单摘录如下。
1. Know your cold paths from your hot paths. 弄清楚代码里的热门执行路径和冷门执行路径。
对冷门路径,用粗粒度的锁即可。对热门路径——也就是那些必须高度并发才能实现所期望的高吞吐量的代码,应该更加小心,加锁的策略必须简单明了且细粒度。
2. Intuition is frequently wrong—be data intensive. 直觉常常是错的,要靠数据说话。
【陈硕】比如线程切换到底有多大开销,普通 mutex 加锁到底有多大代价,系统调用的开销如何,gettimeofday() 在 x86 ...
java
未读以下是Java应用在运行时常见的一些问题,总结了运行时黑盒方式的一些排查方法,也希望看到的同学能给予补充,无论是补充碰到的问题,还是补充解决方法。
类装载的相关问题写过Java代码的同学估计都碰到过ClassNotFoundException/NoClassDefFoundError/NoSuchMethodException(还有一个常见的ClassCastException就不在这里说了)。
当碰到ClassNotFoundException/NoClassDefFound时,如果很确定这个class应该是从哪个路径装载的,则可以去相应的路径找下是否有对应的class文件存在,例如web应用通常会在*.war(ear)/WEB-INF/lib或classes目录下,对于lib下的jar包,可通过写个小脚本jar -tvf的方式找找;如不确定class是从哪装载的,则可以先看看日志里是否有堆栈信息,如果有的话则可以看到具体是哪个ClassLoader实现在装载class,之后则可以通过www.grepcode.com或jar包反编译( ...
摘要: 不同的公司环境会培养出不同的员工,程序员也不例外,由于大公司的开发框架十分成熟,稳定,而且充满盈利能力,所以开发者容易陷入拿来主义思维,而底层代码的编写能力正在逐渐退化。
前段时间,@developerworks在微博上向大家推荐了一篇引人深思的文章《程序员困境》,这篇文章的作者描述了在招聘内核程序员时所遇到的一个现象,一些来自大公司的“高级”程序员,却连最简单最基本的问题都无法回答,这不禁引发了作者的思考,下面是笔者的简译:
最近,我为招聘内核程序员而面试了数万个应聘者,有一些是来自有名的大公司,比如非常有名的芯片/嵌入式系统开发公司。许多人的简历制作的非常完美——涉及的各种项目、获得的各种奖项等,并有一些人声称,他们在内核研发上有10多年的工作经验,然而,令人惊奇地是,他们却无法回答一些基本的问题:当调用标准的malloc函数时,内核发生了什么?
别吃惊,当我让一个应聘者编写一个基于glib哈希函数的LRU缓存框架时,他首先声称自己从未使用过glib,于是我向他演示glib哈希API页面,并且详细地解释,然而一个小时后,他只写了几行凌乱的代码。我不知道在其它国家 ...
每当我们想连续两次做同样的事情时—我们会尝试想一个方法来自动完成此过程。每当你写的代码是完成同样的一件事时,你会开始寻找一个库;每当你启动一个类似的项目时,你会去寻找一个模板。
可能除了哲学家以外,我认为程 序员是最懒的一群人。他们的职业看起来又似乎有一定的劳动强度。
想想看,生物学家要亲自做所有的实验…给数百只小白鼠注射药物不可能自动完成。医生必须给病人进行身体检查;教授每年都要教授同样的课程;建筑师从各个角度制定方案,并手工地将方案一笔一划绘制出来。
让我们再来看看更为辛苦的一些职业,情况更糟。
营销人员要不断重复地进行同样的产品宣传;理发师日复一日地做着同样的事情;收营员每天都以相同的方式对货物进行结算…工厂工人…
你面前呈现出了一幅图片,世界上有很多这样的人,他们每一小时,每一天,每一年,有些甚至一辈子都在重复做着几乎相同的事情。
来看看程 序员
每当我们想连续两次做同样的事情时—我们会尝试想一个方法来自动完成此过程。每当你写的代码是完成同样的一件事时,你会开始寻找一个库;每当你启动一个类似的项目时,你会去寻找一个模板。
程序员的生活就是致力于消除重复的工作。
将琐碎地任务从 ...
StackOverflow 上有位网友(xenoterracide)提问:
我正试着搜集整理一个可在网上免费阅读的计算机编程书籍列表。这些书可以是某种特定编程语言,也可以计算机方面通用书籍。网上有哪些免费可用的书籍呢?
下面是一些网友在回复中的推荐资源,其中有视频、大学课程、编程语言教程网站,由伯乐在线整理编译。
一、George Stocker 提供了一大串,分类如下:
How to Design Programs: An Introduction to Computing and Programming
25 Free Computer Science Ebooks
Free Tech Books
MindView Inc
Wikibooks: Programming
Cheat Sheets (Free)
CodePlex List of Free E-Books
Book Training – On Video!
Sofware Program Managers Network – Free EBooks
EBook Share @ linbai.info
FreeB ...
