自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

丹妮专栏

I have a dream

  • 博客(97)
  • 资源 (1)
  • 收藏
  • 关注

原创 【读书笔记】大话设计模式—代理模式

代理模式(使用频率:4颗星):      代理模式(Proxy):为其他对象提供一个代理以控制对这个对象的访问。代理模式:给某一个对象提供一个代理或占位符,并由代理对象来控制对原对象的访问。Proxy Pattern: Provide a surrogate or placeholder for another object to control acc

2016-10-25 22:18:11 674

原创 【读书笔记】大话设计模式—适配器模式

适配器模式(使用频率:4颗星): 适配器模式可以将一个类的接口和另一个类的接口匹配起来,而无须修改原来的适配者接口和抽象目标类接口。适配器模式定义如下:适配器模式(Adapter Pattern):将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作,其别名为包装器(Wrapper)。适配器模式既可以作为类结构型模式,也可以作为对象结构型模式。

2016-10-25 22:12:23 634

原创 【读书笔记】大话设计模式—六大设计原则

1、设计原则概念(1)单一职责原则:一个类只负责一个功能领域的相应职责或定义为只对外提供一种功能,即引起类变化的原因只有一个。(2)开闭原则:软件实体对扩展开放,对修改关闭。即软件实体尽量在不修改原有代码的情况下进行扩展。(3)里氏替换原则:任何使用基类的地方都可以使用其子类替换。是开闭原则的重要方式(4)依赖倒置原则:抽象不依赖于细节,细节应该依赖于抽象。即要针对接口编程,而不是

2016-10-25 21:15:52 769

原创 排序算法六 快速排序

1、快速排序基本思想快速排序时C.R.A.Hoare在1962年提出的一种划分交换排序。采用分治策略(Divide-and-ConquerMethod)该方法的基本思想是:(1)先从数列中取出一个数作为基准数(2)分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边,获得一个index位置,将数组划分为左右两部分(挖坑填数+分治法)(3)再对左右区间重复第二

2016-10-25 11:06:54 553

原创 排序算法五—归并排序

1、归并思想——分治法分治算法的基本思想是将一个规模为N的问题分解为K个规模较小的子问题,这些子问题相互独立且与原问题性质相同。求出子问题的解,就可得到原问题的解。分治算法的一般步骤:(1)分解,将要解决的问题划分成若干规模较小的同类问题;(2)求解,当子问题划分得足够小时,用较简单的方法解决;(3)合并,按原问题的要求,将子问题的解逐层合并构成原问题的

2016-10-24 18:13:47 754

原创 排序算法四 直接选择排序

直接选择排序概念:从无序区中选一个最小的元素直接放到有序区的最后。直接选择排序和直接插入排序类似,都将数据分为有序区和无序区,所不同的是直接插入排序是将无序区的第一个元素直接插入到有序区以形成一个更大的有序区,而直接选择排序是从无序区选一个最小的元素直接放到有序区的最后。简单选择排序特性:时间复杂度:O(n^2)(最好时间复杂度:O(n^2) 最坏时间复杂度O(n^2) )空间

2016-10-19 22:07:18 689 1

原创 【读书笔记】大话设计模式—UML类图

类图显示了系统的静态结构,用于描述系统中所包含类以及它们之间的相互关系,帮助人们更好的理解系统构造,是系统分析和设计阶段的重要产物,也是系统编码和测试的重要模型依据。1、类类封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性、操作、关系的对象集合的总称。在系统中,每个类都具有一定的职责,职责指的是类要完成什么样的功能,要承担什么样的义务。类包含类的属性和操作行为。在程序运行中,类

2016-10-19 21:07:57 1038 1

原创 【读书笔记】大话设计模式—UML类与类的关系

一、类与类之间的关系类与类之间的关系通常有4种,即依赖关系(Dependency)、泛化关系(Generalization)、关联关系(Association)、实现关系(Realization)1、关联关系【概念】类与类之间最常用的一种关系,表示一类对象与另一类对象之间有联系。如班级和学生、图书馆和图书等。在使用Java等编程语言实现关联关系时,通常将一个类的对象作为另一类的成员变量

2016-10-19 20:25:13 599

转载 【读书笔记】大话设计模式—UML九种图

一、UML概念 UML的全称,统一建模语言(UML是 Unified Modeling Language的缩写)是用来对软件系统进行可视化建模的一种语言。UML为面向对象开发系统的产品进行说明、可视化、和编制文档的一种标准语言。UML的七种视图:二、UML的常用图1、用例图(use case diagrams)【概念】描述用户需求,从

2016-10-19 11:16:36 506

原创 SQL语句的解析顺序

SQL语句的解析顺序1、FROM  FROM后面的表标识了这条语句要查询的数据源。和一些子句如,(1-J1)笛卡尔积,(1-J2)ON过滤,(1-J3)添加外部列,所要应用的对象。FROM过程之后会生成一个虚拟表VT1。(1-J1)笛卡尔积 这个步骤会计算两个相关联表的笛卡尔积(CROSS JOIN),生成虚拟表VT1-J1。(1-J2)ON过滤 这个步骤基于虚拟表VT1-J1这一

2016-10-19 10:09:15 437

原创 计算机网络(五)常见面试题

1、session和cookie的区别相同:都是用来跟踪浏览器用户身份的会话方式。不同:(1)session是保存在服务器端,跟踪用户状态,可保存在集群、数据库、文件等。Cookie是保存在客户端的,是session的一种实现方式。(2)Cookie不是很安全,别人可以分析存放在本地的cookie并进行cookie欺骗,如果考虑到安全应该使用session.(3)Session

2016-10-19 09:57:45 669

原创 计算机网络(四)应用层

超文本http,文件ftp和邮件smtp,域名解析服务DNS都是应用层协议有两个应用模型:C/S模型一般有Web,FTP,远程登录和邮件等,其特点是C为服务请求方,S为服务提供方,并且二者地位不平等,利于S端管理,S性能的好坏决定整个系统的性能,C与C之间不能直接通信。P2P模型使整个网络中传输内容不再存在中心服务器中,而是网络中的每个节点都具有下载和上传的功能,有点事减轻服务器压力,

2016-10-18 22:21:28 477

原创 计算机网络(三)传输层—UDP

UDPudp可以一对多,udp仅在IP之上提供复用分用和差错检测两个服务,不保证可靠交付,不需要建立连接和确认等机制,其执行速度快实时性好,如小文件传输协议TFTP,DNS等。udp的常用于一次性传输少量数据的应用,有时也会用于对可靠性要求不那么高但不允许较大的时延的多媒体应用如IP电话,实时视频会议和流媒体等,因为其木有拥塞控制,发送端可以一直发,而tcp拥塞控制会导致数据出现较大延迟。

2016-10-18 22:15:48 452

原创 计算机网络(三)传输层—TCP拥塞控制

TCP拥塞控制所谓拥塞控制,就是防止过多的数据注入到网络中,从而使网络中的路由器或链路不致过载。要注意用拥塞控制与流量控制的区别,拥塞控制是一个全局性的过程,涉及到所有的主机、路由器,以及以太网。一般有四个算法:慢开始、拥塞避免、快重传、快恢复慢开始:新建立的连接发送TCP报文时cwnd=1即一个报文段长度MSS,在收到确认报文(RTT时间嘛)时cwnd*2,以2的倍数增加,直到达

2016-10-18 22:11:42 2615

原创 计算机网络(三)传输层—TCP四种定时器

TCP四种定时器1) 重传定时器作用:保证可靠性传输解决:每发送一个报文段就会启动重传定时器,如果在定时器时间到后还没收到对该报文段的确认,就重传该报文段,并将重传定时器复位。如果在定时器时间内收到确认则撤销该报文段的重传定时器。2) 坚持定时器作用:主要用来解决零窗口大小通知可能导致的死锁问题。死锁问题:如果接收端在向发送端发送了零窗口报文段后不久,接收端的接收缓存有了一

2016-10-18 22:07:34 1863 1

原创 计算机网络(三)传输层—TCP

传输层传输单位是TCP报文段或UDP数据报,任务是负责两个进程(端口)之间的通信(端到端);复用是发送方不同的进程可以使用同一传输层协议传输数据,分用是接收方在传输层剥去报文首部可以将这些数据正确交付目的应用进程;传输层对整个报文进行差错检测。3.1端口    端口标识主机中的应用程序,进程数据通过端口向下交付给传输层,端口号长度为16bit,可以标识65536个不同的端口号,端口号只

2016-10-18 22:06:27 751

原创 计算机网络(二)网络层

网络层传输单位为数据报,任务是把网络层的协议数据单元从源点传到目的点(主机之间),协议有IP、ICMP协议,ARP和RARP等。IP层为因特网提供了选路和转发的功能。2.1路由器主要完成两个功能:2.1.1路由选择动态的改变所选择的相邻路由器,可通过静态路由算法(手工配置路由信息)或动态路由算法(通过相邻的路由器之间彼此交换信息,然后按照一定算法优化得到转发表,并不断更新以适应

2016-10-18 21:44:18 568

原创 计算机网络(一)数据链路层

数据链路层所谓链路即一个节点到相邻节点的一段物理路线,中间无其他交换节点,两个计算机之间的通信路径中包含许多段这样的链路,这是物理链路;数据链路则是在物理线路中控制数据传输的通信协议传输单位为帧(将网络层的数据报封装,即添加头部和尾部),任务是将网络层传下来的ip数据报组装成帧,然后带有差错控制,流量控制,可靠传输等功能数据链路层在物理层的基础上向网络层提供服务(无确认的无连接服务,有

2016-10-18 21:27:18 726

原创 排序算法三 希尔排序

希尔排序的实质:跳着插。其中增量基本思想:将整个待排序元素分割成若干个子序列(由相隔某个“增量”的元素组成)分别进行直接插入排序,然后依次缩小增量再进行排序,待整个序列中的元素基本有序(增量足够小),再对全体元素进行一次直接插入排序。因为直接插入排序在元素基本有序的情况下(接近最好情况),效率使很高的,因此希尔排序在时间效率上比前两种方法(直接插入排序,折半插入排序)有较大的提高案例模拟:

2016-10-18 17:22:22 469

原创 排序算法二 插入排序

插入排序:每次将待排序的记录,按关键字大小,将其插入到前面已经排好序的子序列中的适当位置,直到全部记录插入完成。直接插入排序、折半插入排序实现步骤:设数组为arr[0...n-1]1、初始时,arr[0]自成1个有序区,无序区为arr[1...n-1]令i=1;2、将arr[i]并入当前的有序区arr[0...i-1]中形成arr[0...i]的有序区间。查找到arr[i]在arr

2016-10-18 16:33:53 353

原创 排序算法— 冒泡排序的三种实现

冒泡排序:比较相邻的前后两个数据,如果前面数>后面数就交换,从0到n-1遍历一次,最大的数据下“沉”。每一趟有一个记录放到最终的位置。 实现步骤:设数组长度为N1、比较相邻的前后两个数据,如果前面数据大于后面的数据,就将第二个数据交换。2、这样对数组的第0个数据到N-1个数据进行一次遍历,最后一个数据就“沉”到数组第N-1个位置。3、N=N-1如果N不为0,就重复前面两步,否则排序

2016-10-18 12:04:48 601

原创 Spring IOC初始化过程

Spring IOC初始化过程——源码解读Spring IOC的核心是BeanFactory其实SpringIOC初始化的过程就是准备好BeanFactory的过程。(1)定位并获取资源文件ClassPathResource res = new ClassPathResource("my/applicationContext.xml");因为对象和对象之间的关系存储在xml或p

2016-09-22 15:21:14 4151 2

转载 【读书笔记】大话设计模式—UML类图实例模拟

【作者:刘伟  http://blog.csdn.net/lovelion】实例分析1——登录模块      某基于C/S的即时聊天系统登录模块功能描述如下:      用户通过登录界面(LoginForm)输入账号和密码,系统将输入的账号和密码与存储在数据库(User)表中的用户信息进行比较,验证用户输入是否正确,如果输入正确则进入主界面(MainForm),否则

2016-09-22 15:13:42 1482

转载 代理模式:静态代理VS动态代理

定义       代理模式(Proxy Pattern)是对象的结构型模式,代理模式给某一个对象提供了一个代理对象,并由代理对象控制对原对象的引用。       代理模式不会改变原来的接口和行为,只是转由代理干某件事,代理可以控制原来的目标,例如:代理商,代理商只会买东西,但并不会改变行为,不会制造东西。让我们通过下面的代码好好理解一下这句话。

2016-08-20 15:32:14 359

转载 Apache、Tomcat、JBoss、WebLogic的区别与关系

Apache全球应用最广泛的http服务器,免费,出自apache基金组织 Tomcat应用也算非常广泛的web 服务器,支持部分j2ee,免费,出自 apache基金组织 JBoss开源的应用服务器,比较受人喜爱,免费(文档要收费) weblogic应该说算是业界第一的app server,全部支持j2ee1.4, 对于开发者,有免费使用一年的许可证,用起来比较舒服,出资BEA公司,

2016-08-18 15:12:28 823 1

转载 JAVA中NIO,BIO,AIO的区别

1,同步和异步是针对应用程序和内核的交互而言的。2,阻塞和非阻塞是针对于进程在访问数据的时候,根据IO操作的就绪状态来采取的不同方式,说白了是一种读取或者写入操作函数的实现方式,阻塞方式下读取或者写入函数将一直等待,而非阻塞方式下,读取或者写入函数会立即返回一个状态值。  由上描述基本可以总结一句简短的话,同步和异步是目的,阻塞和非阻塞是实现方式。同步阻塞IO(JAVA B

2016-08-15 20:49:38 6228 4

转载 JVM性能调优

一、JVM内存模型及垃圾收集算法 1.根据Java虚拟机规范,JVM将内存划分为:New(年轻代)Tenured(年老代)永久代(Perm)  其中New和Tenured属于堆内存,堆内存会从JVM启动参数(-Xmx:3G)指定的内存中分配,Perm不属于堆内存,有虚拟机直接分配,但可以通过-XX:PermSize -XX:MaxPermSize 等参数调整其大小。

2016-08-15 19:07:22 312

原创 Minor GC和Full GC区别

概念: 新生代 GC(Minor GC):指发生在新生代的垃圾收集动作,因为 Java 对象大多都具备朝生夕灭的特性,所以 Minor GC 非常频繁,一般回收速度也比较快。 老年代 GC(Major GC  / Full GC):指发生在老年代的 GC,出现了 Major GC,经常会伴随至少一次的 Minor GC(但非绝对的,在 ParallelScavenge 收集

2016-08-15 18:48:29 18761 1

转载 ThreadLocal的原理和在框架中的应用

我们知道Spring通过各种DAO模板类降低了开发者使用各种数据持久技术的难度。这些模板类都是线程安全的,也就是说,多个DAO可以复用同一个模板实例而不会发生冲突。      我们使用模板类访问底层数据,根据持久化技术的不同,模板类需要绑定数据连接或会话的资源。但这些资源本身是非线程安全的,也就是说它们不能在同一时刻被多个线程共享。      虽然模板类通过资源池获取数据连接或会话,但资源

2016-08-13 17:31:35 884

原创 计算机网络—关键字总结

应用层DNS(Domain Name System)是域名解析服务器DNS服务器在互联网的作用是:把域名转换成为网络可以识别的ip地址。首先,要知道互联网的网站都是一台一台服务器的形式存在的,但是我们怎么去到要访问的网站服务器呢?这就需要给每台服务器分配IP地址,互联网上的网站无穷多,我们不可能记住每个网站的IP地址,这就产生了方便记忆的域名管理系统DNS,他可以把我们输入的好记的域名转换

2016-08-13 10:00:51 2069

原创 优化3——数据库语句分析

人们在使用SQL时往往会陷入一个误区,即太关注于所得的结果是否正确,而忽略了不同的实现方法之间可能存在的性能差异,这种性能差异在大型的或是复杂的数据库环境中(如联机事务处理OLTP或决策支持系统DSS)中表现得尤为明显。笔者在工作实践中发现,不良的SQL往往来自于不恰当的索引设计、不充份的连接条件和不可优化的where子句。在对它们进行适当的优化后,其运行速度有了明显地提高!下面将

2016-08-12 20:24:23 477

原创 2、数据库事务

数据库事务(Database Transaction)是指作为单个逻辑工作单元执行的一系列操作,要么完整地执行,要么完全地不执行。事务由作为包执行的单个命令或一组命令组成。 通过事务可以将多个操合并为单个工作单元。 如果在事务中的某一点发生故障,则所有更新都可以回滚到其事务前状态。事务必须符合 ACID 属性(原子性、一致性、隔离和持久性)才能保证数据的一致性。利用事务维护数据库的

2016-08-12 20:10:53 471

原创 3、数据库隔离级别以及悲观锁和乐观锁

数据库隔离级别目的:保证事务并发读取数据的正确性数据库事务隔离级别(1)Read uncommitted(读未提交数据):允许事务读取未被其他事务提交的变更数据,会出现脏读、不可重复读和虚读。(2)Read committed(读已提交数据):只允许事务读取已经被其他事务提交的变更数据,可避免脏读,仍会有不可重复读和虚读(3)Repeatable read(可重复读):确保事务

2016-08-12 20:09:10 1498

原创 优化2——数据库索引

索引使用规则:(1)让限制条件更大的索引放在前面(根据“匹配索引扫描”效率更高)(2)在使用索引字段作为条件时,如果该索引是复合索引,那么必须使用到该索引中的第一个字段作为条件时才能保证系统使用该索引,否则该索引将不会被使用,并且应尽可能的让字段顺序与索引顺序相一致。(3)索引并不是越多越好,索引固然可以提高相应的select 的效率,但同时也降低了insert 及upda

2016-08-12 20:08:10 669

原创 优化1——数据库优化面试题

1.实践中如何优化mysql1) SQL语句及索引的优化2) 数据库表结构的优化3) 系统配置的优化4) 硬件优化 2.索引的底层实现原理和优化在 DB2 数据库中索引采用的是 B+树的结构,索引的叶子节点上包含索引键的值和一个指向数据地址的指针。DB2先查询索引,然后通过索引里记录的指针,直接访问表的数据页。B+树。B+树是应数据库所需而出现的一种B树

2016-08-12 20:01:58 35821 3

原创 为什么要用存储过程?

存储过程概念存储过程是一些sql语句和控制语句组成的被封装起来的过程,它驻留在数据库中,可以被客户应用程序通过存储过程名字调用,也可以从另一个存储过程或触发器调用。它的参数可以被传递和返回,与应用程序中的函数过程类似,存储过程可以通过名字来调用,具有输入参数和输出参数。存储过程分类1) 返回记录集的存储过程              ----从数据库返回符合一个或几个条件的记录

2016-08-12 19:59:31 3783

原创 数据库三范式

说到软件开发 就不能不说数据库 说到数据库 就不能不说三范式 其实数据库范式一共有六个 除了第一 二 三范式以外还有第四 第五范式和一个BC范式 为什么要用范式范式是为了消除重复数据减少冗余数据,从而让数据库内的数据更好的组织,让磁盘空间得到更有效利用的一种标准化标准,满足高等级的范式的先决条件是满足低等级范式。第一范式(1NF)第一范式是指数据库表的每一列都是不可分割的基

2016-08-12 19:58:30 317

原创 运行期优化_即时编译器

运行期优化——即时编译器—JIT编译器—Just In Time执行引擎通过类装载器装载的,被分配到JVM的运行时数据区的字节码会被执行引擎执行。执行引擎以指令为单位读取Java字节码。它就像一个CPU一样,一条一条地执行机器指令。每个字节码指令都由一个1字节的操作码和附加的操作数组成。执行引擎取得一个操作码,然后根据操作数来执行任务,完成后就继续执行下一条操作码。 不过Java字

2016-08-12 19:44:02 618

原创 异常处理Throwable

1、异常分类 Error错误--程序无法处理的错误,表示运行应用程序中较严重问题(运行时异常:StackOverFlowError、OutOfMemoryError)这些错误表示故障发生于虚拟机自身或者发生在虚拟机试图执行应用时,如Java虚拟机运行错误(Virtual MachineError)、类定义错误(NoClassDefFoundError)等。这些错误是不可查的,因为它们在

2016-08-12 19:35:31 3025

原创 Java泛型

泛型定义泛型:类型参数化。提到参数化一般想到的是定义方法时的形参,调用时传入实参。泛型指的是将原来具体的类型参数化,类似方法的形参,在定义时声明为类型参数,当调用/使用时传入具体的类型实参。泛型好处(1)类型安全:泛型的主要目标是提高java程序的类型安全。通过泛型定义的变量的类型限制,编译器可以在一个高得多的程度上验证类型假设。(2)消除强制类型转换:消除强制类型转换,减少出错机

2016-08-12 19:30:45 277

Javascript开发实例:仿FLASH的图片轮换播放器

用Javascript来开发的,实现仿FLASH的图片轮换播放器,具体包括幻灯片切换以及对联式悬浮框的实现,有详细注释以及功能讲解。

2014-10-10

空空如也

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

TA关注的人

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