java

Java序列化

先看一段代码:

Tags: 

一个 Servlet 的小例子

Servlet 在 Java Web 的 MVC 模型中主要担当控制器的角色,然而 Servlet 却不仅仅只能做控制器。最初动态页面技术是 CGI,每过来一个 url 请求,调用一个对应的 cgi 程序,也就是创建一个子进程;该子进程负责生成 html 文档然后传送给浏览器等客户端。cgi 程序的缺点就是每一个请求都要创建进程,占用资源比较多,响应效率也比较低,后来 Java 就有了 Servlet 的技术。Servlet 可以说和 CGI 类似,是将 url 请求交给对应的 Java class 处理,在第一次使用的时候加载内存和初始化,后面相同的请求则复用该 class 。

担当 View 角色的 JSP,实际上也是在 web 容器中生成了相应的 servlet,客户端接收到的 html 文档就是对应的 servlet 输出出来的。在 MVC 中担当视图的 JSP 应该将业务逻辑(比如将用户名和密码插入数据库和判断等)交给 Model 层,而自己完全负责显示数据。Servlet 可以担当 Model 的作用,虽然在 MVC 中其不需要那么做。

Tags: 

java并发编程

不堪回首的面试中,几乎都有问 Java,或是几乎都在问 Java,O__O"… Java 在企业中使用的太多,更重要的也许是因为它 open source 勒。相对来说,c++ 就不大成功,语言极其复杂;而 c# 的可移植性则是它的最大问题,虽然 linux 或是 mac 下也有移植的项目 Mono 。本篇就是关于 Java 并发多线程的部分,因为 me 最初面试的时候,人家问的就是多线程,而且 me 回答的很不好,O__O"…

  1. 创建线程
  2. 线程池
  3. 线程本地存储

A. 创建线程

Java 中创建线程有三种方式,一种是继承 java.lang.Thread 类,重写其中的 public void run() 方法;另一种是实现 java.lang.Runnable 接口,同样重写 public void run() 方法。这两种线程执行方法是不带返回值的,所以 java 另外提供了一种 Callable 的创建方法。

Tags: 

Centos上安装Hadoop

Hadoop

hadoop 是使用 java 实现的分布式系统,hadoop core 包括 MapReduce 和 HDFS 两个主要的部分,前者提供了一个编程模型,后者提供了一个存储模型。想起多年前(应该是半年前)腾讯实习生招聘的一个题目,如何统计每天 qq 登陆用户数。那个时候 me 们的思路还停留在比较简单的阶段 : 首先将所有的数据读入内存,然后根据位数或是其他方式分割数据,其次排序过滤掉重复用户,最后计数求和。如果是现在的话,me 应该会说,将数据存到 HDFS 中,写个 MapReduce Job 去做,me 已经不会期望三五秒钟就能看到结果了,O__O"… 或是使用 Hive 存储数据,然后写一个简单的 HiveQL 语句:select count(distinct userid) from user_login_log where dt = $YESTERDAY 。 很多复杂的问题,怎么部署 JOB、分割数据、组合数据等等乱七八糟的,me 都不去管了,O__O"…

Tags: 

hadoop的统计单词程序WordCount

hadoop 是用 java 的实现的一个分布式系统框架,最主要的两个部分可能就是 MapReduce 和 HDFS 了,前者是个编程模型,后者是存储模型。算了,不多说了,拣重点。WordCount 是 MapReduce 的经典程序, Hadoop 官网有这个程序,现在 me 们就是要跑通这个程序。当然首先的第一步就是安装 Hadoop,这一点,本篇不多做介绍。其次,就是按照指定的步骤去执行就好,不过中途会出一些问题,这是本篇要介绍的重点。

假定 hadoop 已经安装了,of course JAVA 也安装了,然后按照下面的执行,应该就可以跑通程序了。

Tags: 

struts2+hibernate4+spring4整合开发

前话

首先说的一点是,me 是个菜鸟;其次要说的一点是,hibernate 和 spring 这些框架可能不会向前兼容,所以很多各种书籍上说的例子,使用同样的版本就算了,使用最新的版本它可能就跑不通,当然使用的 jar 包甚至 u 发现“肿么没有” !最后的一点是,me 只是按 me 的想法跑通了一个最新版本的 struts 2.3.15 + hibernate 4.2.3 + spring 4.0.0,而且只是一个简单的 demo,所以并不涉及很高级的操作和框架详细的用法,比如事务、日志、包的依赖管理等等。me 使用的设计,也是按照 me 以前的想法(当然这种想法来自于各种书籍和以前的项目经验)来实现的,可能不是“标准的”用法。

Java创建web services

web service,从名字上看,就是 web 服务。那神马是 web 服务呢?~~~~(>_<)~~~~ 网络上的程序大多采用 c/s 模型,也就是客户端和服务器分离,客户端不直接操纵数据,而数据的来源以及增删改查都是服务器完成的。手机或是 pad 上的 app 实际上是个 client,它通常要获取数据,从服务器端,那肿么获取呢?HTTP 协议,很好,很不错。不过 app 获取的数据和 web 页面获取的数据还有点不一样,me 们希望 app 获取到的是一种“纯”数据,而 html 文档则不是。还有些时候,me 们希望给其他人提供接口服务,或是使用其他人的数据,这是比较常见的,为此,在 web 应用之上出现了 web service 这个东西。

简单滴说,web service 就是一系列接口,使用应用层协议 HTTP, xml 或是 json 的格式传递数据。

Java 语言本身提供对 web service 的支持,可以说甚至方便。web service 的一般使用方式是配置在 web server 上的,不过也可以使用一个普通的 java 程序 publish 它。

Tags: 

大众点评面试

五一假期已经过去了,想想就伤感,今年五一神马都么干是一方面,再者想到前年五一和去年五一,赶脚岁月蹉跎,O__O"…;然后想想多年以前的五一,最少有一周的假期有木有,~~~~(>_<)~~~~ 二月底开学,三月、四月就这么过去了,三月干过什么神马也记不得了,四月貌似也没有干神马事,主要就是参加了几家笔试和面试而已。

Tags: 

网易腾讯阿里云大众点评面试

生活中充满了种种不顺心的事,即使如此,该如何呢?顺从天意?——随遇而安吧。今天周四,上周五是腾讯的面试,面试的过程赶脚灰常良好丫,但是晚上也没有通知二面,有些失落,后来得知还是被刷了。同样的上周五,下午阿里云通知周二下午面试,接着大众点评通知周二上午电面。悲喜交加。网易开始的时间很早,网易游戏 me 也没有报,网易互联网也是悲剧收场,O__O"…。这周二,就是前天了,上午没有等来大众点评的电面,中午去了阿里云,表现一般般,甚至 me 感觉有点不良好,具体的后面会说;下午五点左右(me还在床上)大众点评电面。基本就是这些情况了。

Tags: 

网易面试被刷教训总结

面试被刷,心情固然有些不好受,不过想想,也就仅此而已吧,难道 me 晚饭不吃勒?晚饭不吃,明天早饭吃不吃?明天早饭不吃,明天晚饭吃不吃?相比起低落,me 感慨倒是更多。

早上七点出发,九点到网易,在外面晃悠了半个小时,十点开始面试。主要是杭州滴童鞋,也有南京和宁波赶过来的。过程分三面,两轮专业面试,最后一个 hr 面试,某一轮结束可能会告诉 "u can leave",应该就是被刷了。一对一面试,面试快的听说只要 10 分钟 (O__O"…),慢的一个小时(应该只有四五十分钟的样纸),面试完一次,等一下消息通知,然后下一轮,或是 leave。me 经过两轮面试,第一轮还好,第二轮赶脚忒差。中午消息迟迟不通知,后来说 hr 吃饭去了,me 们等丫等丫,等到通知的时候,已经下午一点半了,O__O"…。

Tags: 

Pages