1 Linux 调 参数,和非root
2 数据库和程序在一个机架
3 tomcat,jvm 用 7 最新。调优
4 一台多tomcat, 1台tengine 单独一台机器
5 mysql 主从 非集群
6 数据库缓存 memcached
7 sql 优化
8 mybatis 或者jpa jdbc 而不是hibernate
9 mybatis 不查多表,用程序控制(n+1 问题,因为有缓存,不存在n的问题,但是程序要查询n+1次,不过程序是集群的,多台机器。不够就加机器。而且前端有tengine 反向代理。应用服务器的机器,比数据库服务器机器廉价)
10 session,集群session。memcached。 最好不用session,而是用oauth2 token这种。方便横向拓展。单台服务器里,也要用缓存timecachemap(RotatingMap)。
11 数据不要做外键约束,要做索引
12 分表,分库 ,水平分隔,垂直分隔,对无用的历史数据进行清理备份
13 不要全文搜索
14 资源文件 做cdn
15 使用restful 风格api,所有get请求都是资源
16 前端和后端分离,用json。最好前端封装成 application。
17 程序技术选型时,选用比较稳定,快速的组件,比如用fastjson,而不是gson等。
18 程序可以使用分布式,比如dubbo甚至yarn等。
————
19 数据库换成redis,Cassandra ,hbase等
20 使用 mapreduce,storm等。
科学的使用Google
《getting start with storm》中文版下载地址
安装strom
ORACLE+SQL性能优化
ORACLE SQL性能优化系列
- 访问Table的方式
ORACLE 采用两种访问表中记录的方式:
- 全表扫描
全表扫描就是顺序地访问表中每条记录. ORACLE采用一次读入多个数据块(database block)的方式优化全表扫描.
- 通过ROWID访问表
你可以采用基于ROWID的访问方式情况,提高访问表的效率, ROWID包含了表中记录的物理位置信息..ORACLE采用索引(INDEX)实现了数据和存放数据的物理位置(ROWID)之间的联系. 通常索引提供了快速访问ROWID的方法,因此那些基于索引列的查询就可以得到性能上的提高.
伪分布式安装部署CDH4.2.1与Impala
http://www.cloudera.com/content/cloudera-content/cloudera-docs/CDH4/latest/CDH4-Quick-Start/cdh4qs_topic_3_3.html
http://www.cloudera.com/content/cloudera-content/cloudera-docs/Impala/latest/Installing-and-Using-Impala/Installing-and-Using-Impala.html
什么是Impala?
Cloudera发布了实时查询开源项目Impala,根据多款产品实测表明,它比原来基于MapReduce的Hive SQL查询速度提升3~90倍。Impala是Google Dremel的模仿,但在SQL功能上青出于蓝胜于蓝。
1. 安装JDK
$ sudo yum install jdk-6u41-linux-amd64.rpm
googlezon
原版地址:http://www.robinsloan.com/epic/本片作者非常大胆的预言Google将与Amazon合并、传统新闻媒体将衰败式微、Googlezon将击败微软Newsbotster,然后推出 EPIC独霸天下,非常的有趣!让人感到这世界运转越来越快,媒体生态变化迅速,没有高瞻远瞩和创新思维与灵活反应,大概就没有机会长存了。
一个真实的推荐系统
今天我没加班,回家去超市买点点心。
一起我在上一个公司,就不加班,没晚上我都去买点心。
今天那个妹子问我,怎么好久没来了?
我说加班!!
然后要了枣泥的点心2块。
她说,这边有豆沙的,要不要来两个?
我果断要2个。
因为天天买,所以在她的大脑里产生了大量数据,
根据我喜欢的口味,比如枣泥馅,推荐给我豆沙馅的(新品)。
get/set 注入取值的时候会出现问题
get/set 注入取值的时候会出现问题。
set、get注入spring,struct2 根据对象注入而不是类。
例如 一下是正确
例子1 eclipse会正确生成
private User user;
public User getUser(){
return this.user;
}
public User setUser(User user){
this.user=user;
}
例子2 eclipse会正确生成
private User aaa;
public User getAaa(){
return this.user;
}
public User setAaa(User user){
this.user=user;
}
以下是错误的 eclipse不会这样生成,下面是我手写的
private User aaa;
public User getUser(){
return this.aaa;
}
public User setUser(User user){
this.aaa=user;
}
问题所在,如果不注意,
private TPuser tPuser;
public TPuser gettPuser() {
return tPuser;
}
public void settPuser(TPuser tPuser) {
this.tPuser = tPuser;
}
注意get,set后面不是大写,struct2,和spring 只认 对象(private Aaa bbb)中间的bbb把首字母大写然后加上get,set既getBbb(),setBbbb();
在强调一遍get,set是对象,不是类!!
探索Java语言与JVM中的Lambda表达式
头(->)将前两者分隔开。
注意:Lambda表达式的语法仍可能会面临改变,但在撰写本文的时候,下面示例中所展示的语法是能够正常工作的。
Lambda表达式非常倚重类型推导,与Java的其它语法相比,这显得极其不同寻常。
让我们进一步考虑之前已经看过的一个示例(请见清单11)。如果看看ActionListener的定义,可以发现它只有一个方法(请见清单12)。 阅读全文 ……