自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 3143

原创 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 587

原创 tomcat系统架构设计

11.1 tomcat的总体结构 tomcat核心组件是Connector和 Container,其中Connector组件可以被替换,多个Connector和一个Container组成组成一个Service。Server统一管理多个Service的生命周期。所有组件的生命周期都是LifeCycle(观察者模式)的接口空控制。server主要完成一个让其他程序能够访问到对应se

2015-04-22 10:18:44 600

原创 9 Servlet工作原理解析

以Tomcat为例解释:在Tomcat容器等级中,Context容器直接管理Servlet在容器中的包装类wrapper,故Context运行方式直接影响servlet 一个Context应用对应一个web工程 在添加一个web应用的时候,会创建一个StandardContext容器,并给这个容器必要的参数,url和path对应的是Tomcat中的访问路径和应用的物理路径。

2015-04-22 10:18:17 830

原创 深入理解session和Cookie

Session和Cookie的作用都是为了保持访问用户与后端服务器的交互状态。10.1 深入理解CookieCookie是一个用户通过HTTP访问一个服务器这个服务器会将一些key/value键值对返回给客户端浏览器,并加上一些限制条件,当条件符合时用户下次访问服务器时,数据又被完整待会服务器。为了解决http是无状态的协议的问题,让服务器识别两次访问是同一个用户。如果设置了ver

2015-04-22 10:17:52 526

原创 1 深入web请求过程

B/S架构的好处客户端使用统一的浏览器,没有平台限制 服务端基于统一的HTTP协议 B/S网络架构概述当在浏览器中输入一个www.taobao.com这个URL时:请求DNS将域名解析成对应的IP地址 根据这个IP地址找到对应的服务器发起一个get请求,服务器决定返回默认的数据资源给访问的用户 服务端更复杂的业务逻辑:多台服务器需要做负载均衡来平均分配用户的请求

2015-04-22 10:17:05 819

原创 22 桥接模式

22 桥接模式概念:    将抽象部分与实现部分分离,使它们都可以独立的变化。    理解桥接模式,重点需要理解如何将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化。    抽象化:就是把不同的实体当做同样的实体对待。把类的共同性质抽取出来形成类的过程即为抽象化    实现化:针对抽象化给出的具体实现    脱耦:将抽象

2015-03-19 20:30:51 602

原创 21 单例模式

21 单例模式21.1 概念    单例模式保证一个类仅有一个实例,并提供一个它的全局访问点。    通常我们可以让一个全局变量使得一个对象被访问,但它不能防止实例化多个对象,一个最好的方法是,让类自身负责保存他的唯一实例。这个类可以保证没有其他实例被创建,并且他可以提供一个访问该实例的方法。    Singleton类提供一个getInstance方法允许客户访问他的

2015-03-19 20:29:32 344

原创 20 迭代器模式

20 迭代器模式概念:提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示适用场景    一个聚集对象不管是什么都需要遍历的时候    或者对聚集有多种方式遍历时作用    迭代器模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露集合的内部结构,又可让外部代码透明的访问集合内部的数据。

2015-03-19 20:26:33 270

原创 17 适配器模式

1. 概述    将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。2. 解决的问题    即Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。3. 角色    3.1 目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接

2015-03-19 20:25:32 363

原创 14 观察者模式

14 观察者模式14.1 概念:观察者模式又称发布-订阅模式。观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己。14.2 模式中的角色     抽象主题(Subject):它把所有观察者对象的引用保存到一个聚集里,每个主题都可以有任何数量的观察者。抽象主题提供一个接口,可

2015-03-19 20:23:33 318

原创 设计模式六大原则

1. 单一职责原则:对于一个类,应该仅有一个引起它变化的原因。问题由来:一个类有两个不同的职责P1 P2.当由于P1需求改变发生变化时,可能导致P2出现功能故障。解决方案,分别建立两个类T1 T2实现P1 P2 的职责所谓职责扩散,就是因为某种原因,职责P被分化为粒度更细的职责P1和P2。优点:    1. 降低类的复杂度    2. 提高类的可读性,提高系统的可维护性

2015-03-19 16:32:05 334

原创 2 策略模式

策略模式:他定义了算法家族,分别封装亲爱,让他们之间可以互相替换,次模式让算法的变化,不会影响到使用算法的客户。    Strategy类:定义定义所有支持的算法的公共接口ConcreteA(BC):具体的策略类,封装了具体的算法或行为Context:上下文用一个ConcreteStrategy来维护一个Strategy对象的引用public cla

2015-03-19 15:38:44 392

原创 6 HTTP首部

HTTP首部字段结构HTTP首部是由字段名:字段值构成,中间用冒号分隔单个字段名可以对应多个值,例如Keep-Alive:timeount=15,max=1004种HTTP首部字段类型    1. 通用首部字段:请求和响应都会使用的首部    2. 请求首部字段:客户端发送请求报文时的字段    3. 响应首部字段:服务端向客户端响应报文时的字段    4.

2015-03-19 14:26:51 1165

原创 4 HTTP状态码

状态码告知从服务器端返回的请求结果借助状态码,用户可以知道服务端是否正常处理了请求,还是出现了错误。状态码类别类别原因短语1XX信息性状态码接收的请求正在被处理2XX成功状态码请求正常处理完毕3XX重定向状态码

2015-03-19 14:25:16 1142

原创 5 与HTTP协作的web服务器

代理    一种有转发功能的应用程序,它接收客户端的请求并转发给服务器,同时也接收服务器返回的相应并转发给客户端。    代理不改变请求URI,每次经过一个代理服务器会加入Via:代理服务器名首部信息    使用代理服务器的理由:    1. 使用缓存技术减少网络带宽    2. 针对特定网站的访问控制    代理使用方法:    1. 缓存代理:转发相应时,预

2015-03-19 14:25:11 484

原创 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 395

原创 1. 了解Web及网络基础

TCP/IP 协议簇的分层:应用层、传输层TCP UDP、网络层 IP、数据链路层分层的好处:    1. 便于维护,各层接口定义好之后,各层功能修改起来不会影响其他层    2. 层次化使得设计变得简单,应用层就不不需考虑传输层具体的对方的地址等等。。。应用层:决定了向用户提供应用服务时通信的活动。    例如FTP,DNS,HTTP传输层:提供处于网络连接中的两

2015-03-19 14:23:09 308

原创 3 HTTP报文

3.1 http报文    http报文是字符串文本    http报文大致可分为报文首部和报文主体。   请求报文结构    报文首部{        请求行        请求首部字段           通用首部字段        实体首部字段        其他    }    空行    报文实体响应报文结构    报文

2015-03-19 14:22:58 368

原创 Java并发合集

22.1 可重入内置锁    每个Java对象都可以用做一个实现同步的锁,这些锁被称为内置锁或监视器锁。线程在进入同步代码块之前会自动获取锁,并且在退出同步代码块时会自动释放锁。获得内置锁的唯一途径就是进入由这个锁保护的同步代码块或方法。    重入的概念:当某个线程请求一个由其他线程持有的锁时,发出请求的线程就会阻塞。然而,由于内置锁是可重入的,因此如果某个线程试图获得一个已经由它自己持

2015-03-18 14:53:06 582

原创 20 迭代器模式

20 迭代器模式概念:提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露该对象的内部表示适用场景    一个聚集对象不管是什么都需要遍历的时候    或者对聚集有多种方式遍历时作用    迭代器模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露集合的内部结构,又可让外部代码透明的访问集合内部的数据。

2015-03-11 21:01:04 492

原创 观察者模式

14 观察者模式14.1 概念:观察者模式又称发布-订阅模式。观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己。14.2 模式中的角色     抽象主题(Subject):它把所有观察者对象的引用保存到一个聚集里,每个主题都可以有任何数量的观察者。抽象主题提供一个接口,可

2015-03-10 20:08:07 306

原创 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 399

原创 3 线性表

1. 线性表概念:零个或多个数据元素的有限序列2. 线性表的顺序存储结构2.1 线性表顺序存储结构的概念:用一段地址连续的存储单元一次存储线性表的数据元素。2.2 线性表顺序存储结构的优缺点    优点:        (1)无须为表示表中元素之间的逻辑关系而增加额外的存储空间        (2)可以快速存取表中任意位置的元素    缺点:        (1

2015-03-10 19:41:22 438

原创 Palindrome Number leetcode 判断一个整数是否是回文

Determine whether an integer is a palindrome. Do this without extra space.判断一个数是否是回文,首先的想法是将这个数字转变成string建立首尾指针进行求解,但考虑到题目要求不能有其他空间的要求我们对算法做进一步优化。给定一个数如果是负数绝对不是回文,如果是正整数,判断这个数是几位数,判断出这个数的位数之后通过除法和取余

2015-01-19 16:08:37 399

原创 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 511

原创 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 331

原创 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 332

原创 LeetCode TwoSum 找到两个数字之和

这题是说存在一个整数数组,要求找到两个数字相加之后可以和目标整数相等。题目里面存在一个问题就是这个数组是无序的,另外就是这个数组中可能存在两个相等的数字,要求我们返回这个数在数组中对应的位置,提示这个就是说要对index加1之后才是位置。解法1:将这个数组排序,由于题目收欧诺个说过each input would have exactly one solution.也就是说有的话就只可能有

2015-01-04 20:26:38 548

转载 电商平台订单号生成策略

订单是整个电子商务的核心。整个电子商务的流程也是围绕订单的状态执行的。这篇博客主要向大家介绍订单号的生成方式。现在大型电商网站大多都有好几种下单途径。比如:通过Web网站下单,通过打电话到呼叫中心下单(CallCenter),使用手机Wap下单。如果只采用单数据库来存储订单信息的话,其随着订单量的增加,单数据库写压力必然增大,数据库服务器就会不堪重负,所以大都会根据业务采用分库做法。如下:

2014-12-10 10:00:22 8645 2

原创 LeetCode 找到一个字符串数组的最长公共前缀

Write a function to find the longest common prefix string amongst an array of strings.

2014-12-03 18:48:56 5450

原创 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 530

mina UDP 数据库连接池

基于MINA架构实现的UDP接收服务器,支持对mysql数据库的连接池插入查找操作。数据接收采用MINA,处理使用线程池并结合数据库连接池实现对发送数据的储存。

2014-03-06

TCP UDP客户端

这是TCP UDP客户端程序 可实时接收TCP或者UDP协议传来的数据并自定义接收解码内容

2012-12-12

基于FPGA的计算器设计

基于FPGA的计算器设计,实现简易加减乘除计算器设计采用VHDL语言设计

2012-03-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除