Monthly Archives: February 2018

Java sort algorithms

insertion sort:

algorithm: given an int array arr with length=n, define key=arr[i: i= 1~n-1], and need to put each key in the correct position, how? first save the key=arr[i], and compare the key with arr[j: j=0~i-1], if arr[j] is larger then move arr[j] to arr[j+1].

how it works: each time we define a key, we’ll need to compare the key with all its preceding elements, and the key’s preceding subarray is always in a increasing order.

code:


 

JAVA Web light development

database

reference: http://blog.csdn.net/qingking520/article/details/52937728

第一范式(1NF):强调的是列的原子性,即列不能够再分成其他几列。
考虑这样一个表:【联系人】(姓名,性别,电话)
如果在实际场景中,一个联系人有家庭电话和公司电话,那么这种表结构设计就没有达到 1NF。要符合 1NF 我们只需把列(电话)拆分,即:【联系人】(姓名,性别,家庭电话,公司电话)。1NF 很好辨别,但是 2NF 和 3NF 就容易搞混淆。
第二范式(2NF):首先是 1NF,另外包含两部分内容,一是表必须有一个主键;二是没有包含在主键中的列必须完全依赖于主键,而不能只依赖于主键的一部分。
考虑一个订单明细表:【OrderDetail】(OrderID,ProductID,UnitPrice,Discount,Quantity,ProductName)。
因为我们知道在一个订单中可以订购多种产品,所以单单一个 OrderID 是不足以成为主键的,主键应该是(OrderID,ProductID)。显而易见 Discount(折扣),Quantity(数量)完全依赖(取决)于主键(OderID,ProductID),而 UnitPrice,ProductName 只依赖于 ProductID。所以 OrderDetail 表不符合 2NF。不符合 2NF 的设计容易产生冗余数据。
可以把【OrderDetail】表拆分为【OrderDetail】(OrderID,ProductID,Discount,Quantity)和【Product】(ProductID,UnitPrice,ProductName)来消除原订单表中UnitPrice,ProductName多次重复的情况。
第三范式(3NF):首先是 2NF,另外非主键列必须直接依赖于主键,不能存在传递依赖。即不能存在:非主键列 A 依赖于非主键列 B,非主键列 B 依赖于主键的情况。
考虑一个订单表【Order】(OrderID,OrderDate,CustomerID,CustomerName,CustomerAddr,CustomerCity)主键是(OrderID)。
其中 OrderDate,CustomerID,CustomerName,CustomerAddr,CustomerCity 等非主键列都完全依赖于主键(OrderID),所以符合 2NF。不过问题是 CustomerName,CustomerAddr,CustomerCity 直接依赖的是 CustomerID(非主键列),而不是直接依赖于主键,它是通过传递才依赖于主键,所以不符合 3NF。
通过拆分【Order】为【Order】(OrderID,OrderDate,CustomerID)和【Customer】(CustomerID,CustomerName,CustomerAddr,CustomerCity)从而达到 3NF。

 

web container, servlet container

reference:

http://blog.csdn.net/yalishadaa/article/details/70544492

 

container: 所谓容器(服务器、中间件等,就是提供一些底层的、业务无关的基本功能,为真正的Servlet提供服务。简单来说:容器负责根据请求的信息找到对应的Servlet,传递Request和Response参数,调用Servlet的service方法,完成请求的响应。

web container: web容器更准确的说应该叫web服务器,它是来管理和部署web应用的. web容器最典型的就是tomcat了,Tomcat是web容 器也是servlet容器.

servlet container

servlet: Servlet是服务器端运行的一个程序,是一个被编译好的java类。它不是框架等; Web容器的启动,需要依赖Servlet。当web服务器开始执行时,servlet类就被初始化; 当用户通过浏览器访问的时候,会输入URI,这个时候,web服务器就通过Servlet来分发请求执行不同的内容.

in spring

我的心又一次火热燃烧

俄罗斯老牌乐队lube,一曲白桦林,让我几度哽咽,眼眶湿润,我的心在寂静的深夜里火热燃烧,在喧闹的车流中却又平静如水。它就是这样,像在浅吟低唱,在静静诉说,在娓娓道来,可是,那种悲伤,惆怅,一次又一次的,看似平和的揉入我的身体,却激荡起情绪的波浪,让我不能平静。

像白桦树叶掉落一样,我离开了家乡,心爱的姑娘你不必悲伤,我会回来,年迈的母亲请停下你颤抖的步伐,我会归来,在你身旁,就像儿时一样。为何树叶会忧郁的飘落?我知道,我和它一样,叶子在你奋不顾身投入到大地的怀抱时,是不是也和我一样,那颗火热的心燃烧着,期盼着,融入泥土中,以另外一种方式回到了你生长的地方。可是我呢?我走在着宽广的道路上,这也许是我唯一的欢乐吧,因为我不知道前路是否宽广,我不知道是否有胜利的曙光,我不知道安宁平和会不会真的到来,我不知道,我心爱的姑娘,亲爱的母亲,能否等到我的归来?我身处什么地方,我又该去何处,我的身体四处漂泊,心却又一直停留在那个地方,可是我的愿望,久久得不到回响。。

诗一般的白桦林,没有一句提到战争,却句句让人想到战争,这样细腻的情感,这样的铁汉柔情,让我动容。它没有告诉你善与恶,对与错,只是一个普通的战士的静静诉说。那些爱的死去活来的,都比不上“与心爱的你坐在小路旁,要知道我会回来,这不值得悲伤”;那些感伤与父母离别的,也许不及这一句“老妈妈向我挥手道别,篱笆门在我身后缓缓关上”。

我知道,很多时候我会不相信一些人,一些情感,觉得这个世界浮躁。可是在音乐里,当我遇到了那个它,我的心会火热燃烧,不为任何目的,就是这不能释怀的感动,这一刻的眼眶湿润。我如死灰的心重新点燃,原本我的灵魂如一潭死水,但是终究会被挚爱的东西激起浪花,让我的内心重新变得柔软温润,哪怕只是这短短的一刻,这一刻,与它的心意相通,让我不再孤单,哪怕我明白,也许不能寻得那个陪你走过一生的人,也许深爱你的人终会离去,可是,我拥有着,这短暂的永恒。

白桦林

为何白桦在俄罗斯大地沙沙作响?

为何雪白的树身无所不晓?

沿着风的方向立在小路旁

叶子掉落满地忧伤,

沿着道路走向宽广,我心情欢畅,

这欢乐许是生活赋予我的唯一也是所有。

为何树叶忧郁地飘落

抚慰灵魂深处的心伤。

我的心一次又一次火热燃烧,

却总是得不到回响。

白桦树叶掉落肩头,

像我一样,离开了生长的地方。

与心爱的你坐在小路旁,

要知道我会回来,这不值得悲伤。

老妈妈向我挥手道别,

篱笆门在我身后缓缓关上。

为何白桦在俄罗斯大地沙沙作响?

为何手风琴演奏的如此美妙?

风儿的指尖掠过之处,树叶儿漫天飞舞,

而最后的一片啊,也飘落在地上。。。

我的心一次又一次火热燃烧,

却总是得不到回响。

白桦树叶掉落肩头,

像我一样,离开了生长的地方。。。

spring on the web

a client’s request passing spring mvc: a request (user request a web page) first sent to front controller/DispatcherServlet (a servlet which is responsible to designates tasks to different mvc components), front controller consult handler mappings to pass the request to the correct controller; then controller send the request to its service objects & wait for response; the response is some database raw data and view name (model&view name) and is not user-readable; then controller pass the model&view name back to front controller & front controller consult view resolver where to render the view, finally implement the view and send response back to the client.

set up java-based spring mvc: define a webAppInitializer app (create/register/map the DispatcherServlet); define a spring mvc config file (enables component scan for controllers, configure a JSP view resolver..); define a model class & a jsp page. see: https://samerabdelkafi.wordpress.com/2014/08/03/spring-mvc-full-java-based-config/ for a detailed full java based spring mvc example.

write a simple controller: annotate the controller class with @Controller (such that the component scanner in the spring mvc config file can automatically declare it as a bean, @Component also works);  create a method inside the controller class & annotate the method with @RequestMapping, the method will then return the view name to DispatcherServlet (@RequestMapping handles HTTP requests for a certain request path)