- 博客(32)
- 资源 (3)
- 收藏
- 关注
原创 14 Spring MVC的工作机制与设计模式
14.1 Spring MVC总体设计使用Spring MVC只需 在web.xml中配置一个DispatcherServlet在定义一个dispatcherServlet-servlet.xml文件其中DispatcherServlet继承了HttpServlet,在Servlet的init方法调用的时候做以下操作: 1. initMultipartResovler:初
2015-04-22 10:20:15 3176
原创 13 Spring框架的设计理念和设计模式分析
13.1 Spring的骨骼架构Spring的核心组件有3个:Core、Context、BeanBean包装的是ObjectContext是一个Bean的关系集合(又叫IoC容器)Core是发现、建立和维护每个Bean之间的关系所需要的一系列工具 13.2 核心组件详解13.2.1 Bean组件Spring Bean组件在org.springframework.be
2015-04-22 10:19:20 612
原创 tomcat系统架构设计
11.1 tomcat的总体结构 tomcat核心组件是Connector和 Container,其中Connector组件可以被替换,多个Connector和一个Container组成组成一个Service。Server统一管理多个Service的生命周期。所有组件的生命周期都是LifeCycle(观察者模式)的接口空控制。server主要完成一个让其他程序能够访问到对应se
2015-04-22 10:18:44 618
原创 9 Servlet工作原理解析
以Tomcat为例解释:在Tomcat容器等级中,Context容器直接管理Servlet在容器中的包装类wrapper,故Context运行方式直接影响servlet 一个Context应用对应一个web工程 在添加一个web应用的时候,会创建一个StandardContext容器,并给这个容器必要的参数,url和path对应的是Tomcat中的访问路径和应用的物理路径。
2015-04-22 10:18:17 850
原创 深入理解session和Cookie
Session和Cookie的作用都是为了保持访问用户与后端服务器的交互状态。10.1 深入理解CookieCookie是一个用户通过HTTP访问一个服务器这个服务器会将一些key/value键值对返回给客户端浏览器,并加上一些限制条件,当条件符合时用户下次访问服务器时,数据又被完整待会服务器。为了解决http是无状态的协议的问题,让服务器识别两次访问是同一个用户。如果设置了ver
2015-04-22 10:17:52 552
原创 1 深入web请求过程
B/S架构的好处客户端使用统一的浏览器,没有平台限制 服务端基于统一的HTTP协议 B/S网络架构概述当在浏览器中输入一个www.taobao.com这个URL时:请求DNS将域名解析成对应的IP地址 根据这个IP地址找到对应的服务器发起一个get请求,服务器决定返回默认的数据资源给访问的用户 服务端更复杂的业务逻辑:多台服务器需要做负载均衡来平均分配用户的请求
2015-04-22 10:17:05 841
原创 22 桥接模式
22 桥接模式概念: 将抽象部分与实现部分分离,使它们都可以独立的变化。 理解桥接模式,重点需要理解如何将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化。 抽象化:就是把不同的实体当做同样的实体对待。把类的共同性质抽取出来形成类的过程即为抽象化 实现化:针对抽象化给出的具体实现 脱耦:将抽象
2015-03-19 20:30:51 626
原创 21 单例模式
21 单例模式21.1 概念 单例模式保证一个类仅有一个实例,并提供一个它的全局访问点。 通常我们可以让一个全局变量使得一个对象被访问,但它不能防止实例化多个对象,一个最好的方法是,让类自身负责保存他的唯一实例。这个类可以保证没有其他实例被创建,并且他可以提供一个访问该实例的方法。 Singleton类提供一个getInstance方法允许客户访问他的
2015-03-19 20:29:32 367
原创 20 迭代器模式
20 迭代器模式概念:提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示适用场景 一个聚集对象不管是什么都需要遍历的时候 或者对聚集有多种方式遍历时作用 迭代器模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露集合的内部结构,又可让外部代码透明的访问集合内部的数据。
2015-03-19 20:26:33 289
原创 17 适配器模式
1. 概述 将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。2. 解决的问题 即Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。3. 角色 3.1 目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接
2015-03-19 20:25:32 379
原创 14 观察者模式
14 观察者模式14.1 概念:观察者模式又称发布-订阅模式。观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己。14.2 模式中的角色 抽象主题(Subject):它把所有观察者对象的引用保存到一个聚集里,每个主题都可以有任何数量的观察者。抽象主题提供一个接口,可
2015-03-19 20:23:33 339
原创 设计模式六大原则
1. 单一职责原则:对于一个类,应该仅有一个引起它变化的原因。问题由来:一个类有两个不同的职责P1 P2.当由于P1需求改变发生变化时,可能导致P2出现功能故障。解决方案,分别建立两个类T1 T2实现P1 P2 的职责所谓职责扩散,就是因为某种原因,职责P被分化为粒度更细的职责P1和P2。优点: 1. 降低类的复杂度 2. 提高类的可读性,提高系统的可维护性
2015-03-19 16:32:05 352
原创 2 策略模式
策略模式:他定义了算法家族,分别封装亲爱,让他们之间可以互相替换,次模式让算法的变化,不会影响到使用算法的客户。 Strategy类:定义定义所有支持的算法的公共接口ConcreteA(BC):具体的策略类,封装了具体的算法或行为Context:上下文用一个ConcreteStrategy来维护一个Strategy对象的引用public cla
2015-03-19 15:38:44 414
原创 6 HTTP首部
HTTP首部字段结构HTTP首部是由字段名:字段值构成,中间用冒号分隔单个字段名可以对应多个值,例如Keep-Alive:timeount=15,max=1004种HTTP首部字段类型 1. 通用首部字段:请求和响应都会使用的首部 2. 请求首部字段:客户端发送请求报文时的字段 3. 响应首部字段:服务端向客户端响应报文时的字段 4.
2015-03-19 14:26:51 1198
原创 4 HTTP状态码
状态码告知从服务器端返回的请求结果借助状态码,用户可以知道服务端是否正常处理了请求,还是出现了错误。状态码类别类别原因短语1XX信息性状态码接收的请求正在被处理2XX成功状态码请求正常处理完毕3XX重定向状态码
2015-03-19 14:25:16 1196
原创 5 与HTTP协作的web服务器
代理 一种有转发功能的应用程序,它接收客户端的请求并转发给服务器,同时也接收服务器返回的相应并转发给客户端。 代理不改变请求URI,每次经过一个代理服务器会加入Via:代理服务器名首部信息 使用代理服务器的理由: 1. 使用缓存技术减少网络带宽 2. 针对特定网站的访问控制 代理使用方法: 1. 缓存代理:转发相应时,预
2015-03-19 14:25:11 505
原创 2. 简单的HTTP协议
http请求报文构成方法 URI 协议版本POST /from/entry HTTP/1.1请求首部字段Host: hackr.jpConnection: keep-aliveContent-Type:application/x-www-form-urlencodedContent-Lengt:16内容实体name=ueno&
2015-03-19 14:23:49 416
原创 1. 了解Web及网络基础
TCP/IP 协议簇的分层:应用层、传输层TCP UDP、网络层 IP、数据链路层分层的好处: 1. 便于维护,各层接口定义好之后,各层功能修改起来不会影响其他层 2. 层次化使得设计变得简单,应用层就不不需考虑传输层具体的对方的地址等等。。。应用层:决定了向用户提供应用服务时通信的活动。 例如FTP,DNS,HTTP传输层:提供处于网络连接中的两
2015-03-19 14:23:09 327
原创 3 HTTP报文
3.1 http报文 http报文是字符串文本 http报文大致可分为报文首部和报文主体。 请求报文结构 报文首部{ 请求行 请求首部字段 通用首部字段 实体首部字段 其他 } 空行 报文实体响应报文结构 报文
2015-03-19 14:22:58 395
原创 Java并发合集
22.1 可重入内置锁 每个Java对象都可以用做一个实现同步的锁,这些锁被称为内置锁或监视器锁。线程在进入同步代码块之前会自动获取锁,并且在退出同步代码块时会自动释放锁。获得内置锁的唯一途径就是进入由这个锁保护的同步代码块或方法。 重入的概念:当某个线程请求一个由其他线程持有的锁时,发出请求的线程就会阻塞。然而,由于内置锁是可重入的,因此如果某个线程试图获得一个已经由它自己持
2015-03-18 14:53:06 603
原创 20 迭代器模式
20 迭代器模式概念:提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示适用场景 一个聚集对象不管是什么都需要遍历的时候 或者对聚集有多种方式遍历时作用 迭代器模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露集合的内部结构,又可让外部代码透明的访问集合内部的数据。
2015-03-11 21:01:04 535
原创 观察者模式
14 观察者模式14.1 概念:观察者模式又称发布-订阅模式。观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己。14.2 模式中的角色 抽象主题(Subject):它把所有观察者对象的引用保存到一个聚集里,每个主题都可以有任何数量的观察者。抽象主题提供一个接口,可
2015-03-10 20:08:07 320
原创 4 栈与队列
4 栈与队列4.1 栈 定义:栈是限定仅在表尾进行插入和删除操作的线性表。 后进先出 LIFO 栈顶:允许插入、删除的一端 栈底:不允许插入、删除4.2 栈的应用4.2.1 递归 菲博拉切数列 int fbi(int i){ if(i return i==0?0:1;
2015-03-10 19:42:18 413
原创 3 线性表
1. 线性表概念:零个或多个数据元素的有限序列2. 线性表的顺序存储结构2.1 线性表顺序存储结构的概念:用一段地址连续的存储单元一次存储线性表的数据元素。2.2 线性表顺序存储结构的优缺点 优点: (1)无须为表示表中元素之间的逻辑关系而增加额外的存储空间 (2)可以快速存取表中任意位置的元素 缺点: (1
2015-03-10 19:41:22 457
原创 Palindrome Number leetcode 判断一个整数是否是回文
Determine whether an integer is a palindrome. Do this without extra space.判断一个数是否是回文,首先的想法是将这个数字转变成string建立首尾指针进行求解,但考虑到题目要求不能有其他空间的要求我们对算法做进一步优化。给定一个数如果是负数绝对不是回文,如果是正整数,判断这个数是几位数,判断出这个数的位数之后通过除法和取余
2015-01-19 16:08:37 426
原创 leetcode Median of Two Sorted Arrays java 两个排序数组的中位数
There are two sorted arrays A and B of size m and n respectively. Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).存在两个已排序数组AB,要求找到这两个数组的中位数,要求时间复杂度O
2015-01-07 11:31:18 529
原创 Add Two Numbers Leetcode 链表相加
import java.util.List;/** * Created by Cookies on 2015-01-04. * You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes
2015-01-06 19:53:14 347
原创 LeetCode Longest Substring Without Repeating Characters 找到最长不重复字符串
解题思路是遍历字符串,并将每一个字符存入hashmap中,以便判断是否已经存在。用一个计数器计数即可。/** * Created by Cookies on 2015-01-06. * Given a string, find the length of the longest substring without repeating characters. * For example, t
2015-01-06 19:50:50 350
原创 LeetCode TwoSum 找到两个数字之和
这题是说存在一个整数数组,要求找到两个数字相加之后可以和目标整数相等。题目里面存在一个问题就是这个数组是无序的,另外就是这个数组中可能存在两个相等的数字,要求我们返回这个数在数组中对应的位置,提示这个就是说要对index加1之后才是位置。解法1:将这个数组排序,由于题目收欧诺个说过each input would have exactly one solution.也就是说有的话就只可能有
2015-01-04 20:26:38 565
转载 电商平台订单号生成策略
订单是整个电子商务的核心。整个电子商务的流程也是围绕订单的状态执行的。这篇博客主要向大家介绍订单号的生成方式。现在大型电商网站大多都有好几种下单途径。比如:通过Web网站下单,通过打电话到呼叫中心下单(CallCenter),使用手机Wap下单。如果只采用单数据库来存储订单信息的话,其随着订单量的增加,单数据库写压力必然增大,数据库服务器就会不堪重负,所以大都会根据业务采用分库做法。如下:
2014-12-10 10:00:22 8821 2
原创 LeetCode 找到一个字符串数组的最长公共前缀
Write a function to find the longest common prefix string amongst an array of strings.
2014-12-03 18:48:56 5485
原创 LeetCode 罗马数字转整数
Given a roman numeral, convert it to an integer.Input is guaranteed to be within the range from 1 to 3999.要求输入一个罗马数字,将其转化为整数,其范围在1到3999之间。要弄清楚这个题目首先需要搞清楚罗马数字的工作流程。不谈别的我就直接上例子了:I 1
2014-12-01 20:16:13 550
mina UDP 数据库连接池
2014-03-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人