3月 18

深入理解Java之泛型

1. Why ——引入泛型机制的原因

假如我们想要实现一个String数组,并且要求它可以动态改变大小,这时我们都会想到用ArrayList来聚合String对象。然而,过了一阵,我们想要实现一个大小可以改变的Date对象数组,这时我们当然希望能够重用之前写过的那个针对String对象的ArrayList实现。

在Java 5之前,ArrayList的实现大致如下:

1 public class ArrayList {
2     public Object get(int i) { ... }
3     public void add(Object o) { ... }
4     ...
5     private Object elementData;
6 }

从以上代码我们可以看到,用于向ArrayList中添加元素的add函数接收一个Object型的参数,从ArrayList获取指定元素的get方法也返回一个Object类型的对象,Object对象数组elementData存放这ArrayList中的对象, 也就是说,无论你向ArrayList中放入什么类型的类型,到了它的内部,都是一个Object对象。

基于继承的泛型实现会带来两个问题:第一个问题是有关get方法的,我们每次调用get方法都会返回一个Object对象,每一次都要强制类型转换为我们需要的类型,这样会显得很麻烦;第二个问题是有关add方法的,假如我们往聚合了String对象的ArrayList中加入一个File对象,编译器不会产生任何错误提示,而这不是我们想要的。

Continue reading

3月 31

阿里恒生:令人不安的婚礼

  • 阿里的胃口不仅是恒生的金融电子平台,或许还包括恒生的后台数据资料,据此分析金融客户的交易行为,成就阿里金融大数据梦想。

0

观察者言:阿里的胃口不仅是恒生的金融电子平台,或许还包括恒生的后台数据资料,据此分析金融客户的交易行为,成就阿里金融大数据梦想。但这令业界不寒而栗 Continue reading

2月 24

谈谈数据库的字段设计的几个心得

数据库的字段设计有很多细节性的技巧,下面将过去在开发中体会到经验整理出来,做个备忘。
  tinyint 是-128到128 。当属性设置为unsigned的时候。最大值就是255了。现在知道为什么需要设置为unsigned属性了。原来是为了最大限度的使用给予的存储空间。如果不设置。那么假如你的值都是正数的。那么-128这一百多个数字就相当于是浪费了。
  tinyint会自动设置为tinyint(3)。
  smallint 不设置unsigned的时候,也有3万多的样子。
  tinytext 就是255个字节。大概就是存储127个中文的样子 tinytext就相当于varchar类型。把它看成这样的该类型就容易理解了。
  int 类型phpmyadmin默认会设置int(10)。
  概念纠正:原来一直以为这里的10表示位数。直到有次想保存1101061021496,结果在字段中的值都变成了:4294967295。 看MySQL手册上说: Continue reading
10月 29

Android新浪客户端开发教程(完整版)转载收藏

android开发我的新浪微博客户端-开篇
http://www.apkbus.com/android-166-1-1.html
android开发我的新浪微博客户端-载入页面UI篇(1.1)
http://www.apkbus.com/android-167-1-1.html
android开发我的新浪微博客户端-载入页面sqlite篇(1.2)
http://www.apkbus.com/android-168-1-1.html Continue reading

7月 28

教你如何迅速秒杀掉:99%的海量数据处理面试题

教你如何迅速秒杀掉:99%的海量数据处理面试题

作者:July
出处:结构之法算法之道blog    原文地址: http://blog.csdn.net/v_july_v/article/details/7382693

相关文章:http://blog.csdn.net/v_july_v/article/category/1106578

前言

一般而言,标题含有“秒杀”,“99%”,“史上最全/最强”等词汇的往往都脱不了哗众取宠之嫌,但进一步来讲,如果读者读罢此文,却无任何收获,那么,我也甘愿背负这样的罪名,:-),同时,此文可以看做是对这篇文章:十道海量数据处理面试题与十个方法大总结的一般抽象性总结。

毕竟受文章和理论之限,本文将摒弃绝大部分的细节,只谈方法/模式论,且注重用最通俗最直白的语言阐述相关问题。最后,有一点必须强调的是,全文行文是基于面试题的分析基础之上的,具体实践过程中,还是得具体情况具体分析,且场景也远比本文所述的任何一种情况复杂得多。

OK,若有任何问题,欢迎随时不吝赐教。谢谢。

何谓海量数据处理?

所谓海量数据处理,无非就是基于海量数据上的存储、处理、操作。何谓海量,就是数据量太大,所以导致要么是无法在较短时间内迅速解决,要么是数据太大,导致无法一次性装入内存。

那解决办法呢?针对时间,我们可以采用巧妙的算法搭配合适的数据结构,如Bloom filter/Hash/bit-map/堆/数据库或倒排索引/trie树,针对空间,无非就一个办法:大而化小:分而治之/hash映射,你不是说规模太大嘛,那简单啊,就把规模大化为规模小的,各个击破不就完了嘛。

至于所谓的单机及集群问题,通俗点来讲,单机就是处理装载数据的机器有限(只要考虑cpu,内存,硬盘的数据交互),而集群,机器有多辆,适合分布式处理,并行计算(更多考虑节点和节点间的数据交互)。

再者,通过本blog内的有关海量数据处理的文章:Big Data Processing,我们已经大致知道,处理海量数据问题,无非就是:

  1. 分而治之/hash映射 + hash统计 + 堆/快速/归并排序;
  2. 双层桶划分
  3. Bloom filter/Bitmap;
  4. Trie树/数据库/倒排索引;
  5. 外排序;
  6. 分布式处理之Hadoop/Mapreduce。

下面,本文第一部分、从set/map谈到hashtable/hash_map/hash_set,简要介绍下set/map/multiset/multimap,及hash_set/hash_map/hash_multiset/hash_multimap之区别(万丈高楼平地起,基础最重要),而本文第二部分,则针对上述那6种方法模式结合对应的海量数据处理面试题分别具体阐述。 Continue reading

毫无意义的出差2013-06-28

Aside

原本计划,在个人博客中不要分这种毫无意义的抱怨日志,因为,这种抱怨,对任何事情,不管甲方乙方,都是于事无补的,而且只会带来更坏的心情,更坏的结果。

很多事情,就在这事的原则下,忍忍,就这么一点一点的过去了。人,也随着这样,一点一点,变得没有了执着,没有了追求,没有了激情。

这不是当初想要的效果。放开自己,心是如何想的,就如何去做吧,心里不爽时,大大方方的吼出来,这里(个人博客)注定不会成为什么热闹的集市,没有人会在意有人在这里哭泣或无聊的抱怨。

由于公司新规,在一定范围内,如北京,武汉等,5折以上机票不能报销,所以,而又没能临时买到去武汉的车票(杭州到武汉的火车票实在太少了,没有动车,出发时间不合理,路途时间太长),结果只好从杭州坐高铁到上海,再坐动车去武汉了。
Continue reading

6月 01

UML中数据流图,用例图,类图,对象图,角色图,活动图,序列图详细讲述保存供参考 – ITeye技术网站

UML中数据流图,用例图,类图,对象图,角色图,活动图,序列图详细讲述保存供参考

类图,对象图,角色图:

一、UML中基本的图范畴:

在 UML 2 中有二种基本的图范畴:结构图和行为图。每个 UML 图都属于这二个图范畴。结构图的目的是显示建模系统的静态结构。它们包括类,组件和(或)对象图。另一方面,行为图显示系统中的对象的动态行为,包括如对象的方法,协作和活动之类的内容。行为图的实例是活动图,用例图和序列图。

 

 

二、UML中的类图:


1.类图的表示:

类的 UML 表示是一个长方形,垂直地分为三个区,如图 1 所示。顶部区域显示类的名字。中间的区域列出类的属性。底部的区域列出类的操作。在一个类图上画一个类元素时,你必须要有顶端的区域,下面的二个区域是可选择的(当图描述仅仅用于显示分类器间关系的高层细节时,下面的两个区域是不必要的)。

描述:

顶部区域显示类的名字。中间的区域列出类的属性。底部的区域列出类的操作。当在一个类图上画一个类元素时,你必须要有顶端的区域,下面的二个区域是可选择的(当图描述仅仅用于显示分类器间关系的高层细节时,下面的两个区域是不必要的)。 Continue reading

6月 01

收集多年的开发资料和开发工具 – ITeye技术网站

 做了五六年的软件开发,也收集了不少资料还有一些学习型的项目(带源码)分享给大家。愿我的分享能为你的技术提升成为可能,欢迎学习。

 

1.本工程内容较多,可能需要设计编译目录:                  http://zz563143188.iteye.com/blog/1826517
2.调试网页建议页面调试工具firebug                               http://zz563143188.iteye.com/blog/1825978
3.可以使用Spring mvc 单元测试                                      http://zz563143188.iteye.com/blog/1827454
4.Spring mvc整合hibernate                                             http://zz563143188.iteye.com/blog/1831561
5.日志log4j配置springMvc例子                                        http://zz563143188.iteye.com/blog/1825387  
6.由于webroot下面的内容很多,设置不编译和验证         http://zz563143188.iteye.com/blog/1826517

7. 根据jar生成源码工具                                                    http://zz563143188.iteye.com/blog/1826988 
8.java常用环境变量设置                                                   http://zz563143188.iteye.com/blog/1827884

9.比较全的OA系统功能模块列表                                      http://zz563143188.iteye.com/blog/1860248

10.需求文档管理工具                                                        http://zz563143188.iteye.com/blog/1830393
11.PowerDesinger逆向数据库物理模型及关系图               http://zz563143188.iteye.com/blog/1829068
12.发散性思维工具(思维导图)推荐                                    http://zz563143188.iteye.com/blog/1831562
13.推荐一款好用的笔记管理软件(Evernote)                      http://zz563143188.iteye.com/blog/1830965
14.数据库生成数据字典工具(PDMREAD)图解                    http://zz563143188.iteye.com/blog/1828557

15.代码生动生成工具(POJO,DAO,Service,action)等层代码http://zz563143188.iteye.com/blog/1819765

16.spring3,struts2,hibernate,junit,设计模式视频教程下载 http://zz563143188.iteye.com/blog/1839517

17.UML 的九种模型图                                                       http://zz563143188.iteye.com/blog/1841234

                                                                                         http://zz563143188.iteye.com/blog/1841225

18.Oracle笔记 五、创建表、约束、视图、索引、序列、同义词、表空间

                                                                                        http://zz563143188.iteye.com/blog/1841239

19.Java面试宝典2013版                                                  http://zz563143188.iteye.com/blog/1843725

20.Java技术体系图(从程序员到CTO各阶段技                http://zz563143188.iteye.com/blog/1877266

Continue reading

6月 01

Java开发中的23种设计模式详解

设计模式(Design Patterns)

                                  ——可复用面向对象软件的基础

设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因。本章系Java之美[从菜鸟到高手演变]系列之设计模式,我们会以理论与实践相结合的方式来进行本章的学习,希望广大程序爱好者,学好设计模式,做一个优秀的软件工程师!

Continue reading

5月 08

wdcp安装可选组件的快捷命令(转)

wdCP是WDlinux Control Panel的简称,是一套通过WEB控制和管理服务器的Linux服务器管理系统以及虚拟主机管理系统,旨在易于使用Linux系统做为我们的网站服务器系统,以及平时对Linux服务器的常用管理操作,均可在wdCP的后台里操作完成.
使用wdCP,通过WEB方式就可以查看服务器情况,资源利用率,系统负载,内存使用率,带宽使用率等等.
使用wdCP,通过WEB方式就可以轻松创建网站,开站点,发布网站,创建FTP,创建mysql数据库等.
使用wdCP,通过WEB方式,就可以管理服务器上的站点,站点文件,站点配置等等.
简单,方便,易操作.让你方便地使用和管理Linux服务器和网站,使用Linux系统做网站服务器,也同样可以很简单

Linux服务器管理系统,虚拟主机管理系统/管理面板,网站服务器管理系统,主机管理系统,管理Linux更方便

Linux服务器管理系统,虚拟主机管理系统/管理面板,网站服务器管理系统,主机管理系统,管理Linux更方便

Continue reading