自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 资源 (4)
  • 收藏
  • 关注

原创 设计模式之单例模式

一、描述:    Singleton(单例)是设计模式的一种,为了保证一个类仅有一个实例,并提供一个访问它的全局访问点。二、主要特点:         1)单例类确保自己只有一个实例(构造函数私有:不被外部实例化,也不被继承)。    2)单例类必须自己创建自己的实例。    3)单例类必须为其他对象提供唯一的实例。三、单例模式的应用:

2016-12-30 10:57:50 220

原创 Spring 核心框架体系结构

很多人都在用spring开发java项目,但是配置maven依赖的时候并不能明确要配置哪些spring的jar,经常是胡乱添加一堆,编译或运行报错就继续配置jar依赖,导致spring依赖混乱,甚至下一次创建相同类型的工程时也不知道要配置哪些spring的依赖,只有拷贝,其实,当初我就是这么干的!  spring的jar包只有20个左右,每个都有相应的功能,一个jar还可能依赖了若干其他j

2016-12-29 09:40:02 393 1

原创 几种简单的负载均衡算法及其Java代码实现

什么是负载均衡负载均衡,英文名称为Load Balance,指由多台服务器以对称的方式组成一个服务器集合,每台服务器都具有等价的地位,都可以单独对外提供服务而无须其他服务器的辅助。通过某种负载分担技术,将外部发送来的请求均匀分配到对称结构中的某一台服务器上,而接收到请求的服务器独立地回应客户的请求。负载均衡能够平均分配客户请求到服务器阵列,借此提供快速获取重要数据,解决大量并发访问服务问题

2016-12-29 09:39:12 1109 1

原创 MyBatis(6):MyBatis 集成 Spring 事务管理(下)

本文主要介绍:多数据的事物处理。文章内容主要包含两方面:1、单表多数据的事物处理2、多库/多表多数据的事物处理这两种都是企业级开发中常见的需求,有一定的类似,在处理的方法与技巧上又各有不同,在进入文章前,先做一些准备工作,因为后面会用到多表的插入事物管理,前面的文章建立了一个Student相关表及类,这里再建立一个Teacher相关的表及类。第一步是建立一张Teacher表

2016-12-29 09:38:35 319

原创 MyBatis(5):MyBatis 集成 Spring 事务管理(上)

单独使用MyBatis对事物进行管理前面MyBatis的文章有写过相关内容,这里继续写一个最简单的Demo,算是复习一下之前MyBatis的内容吧,先是建表,建立一个简单的Student表:create table student( student_id int auto_increment, student_name varchar

2016-12-29 09:36:26 335

原创 八大排序算法的 Python 实现

本文用Python实现了插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序、基数排序。1、插入排序描述插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法。插入算法把要排序的数组分成两部分:第一部分包含了这个数组的所有元素,但将最后一个元素

2016-12-23 11:16:03 303

原创 排序算法总结

前言  查找和排序算法是算法的入门知识,其经典思想可以用于很多算法当中。因为其实现代码较短,应用较常见。所以在面试中经常会问到排序算法及其相关的问题。但万变不离其宗,只要熟悉了思想,灵活运用也不是难事。一般在面试中最常考的是快速排序和归并排序,并且经常有面试官要求现场写出这两种排序的代码。对这两种排序的代码一定要信手拈来才行。还有插入排序、冒泡排序、堆排序、基数排序、桶排序等。面试官对于这

2016-12-23 10:50:59 276

原创 排序算法性能比较

所谓排序,即将原来无序的一个序列重新排列成有序的序列。排序方法中涉及到稳定性,所谓稳定性,是指待排序的序列中有两个或两个以上相同的项,在排序前和排序后看这些相同项的相对位置有没有发生变化,如果没有发生变化,即该排序方法是稳定的,如果发生变化,则说明该排序方法是不稳定的。如果记录中关键字不能重复,则排序结果是唯一的,那么选择的排序方法稳定与否就无关紧要了;如果关键字可以重复,则在选择

2016-12-23 10:48:03 336

原创 MyBatis(4):动态SQL

什么是动态SQLMyBatis的一个强大特性之一通常是它的动态SQL能力。如果你有使用JDBC或其他相似框架的经验,你就明白条件串联SQL字符串在一起是多么地痛苦,确保不能忘了空格或者在列表的最后的省略逗号,动态SQL可以彻底处理这种痛苦。通常使用动态SQL不可能是独立的一部分,MyBatis当然使用一种强大的动态SQL语言来改进这种情形,这种语言可以被用在任意映射的SQL语句中。

2016-12-23 10:38:41 293

原创 java二叉树实现及遍历

1、构建二叉树public class BinaryTree { int data; //根节点数据 BinaryTree left; //左子树 BinaryTree right; //右子树 public BinaryTree(int data) //实例化二叉树类 { this.data = data; left = null; r

2016-12-22 17:04:49 264

原创 MyBatis(3):SQL映射

前言前面学习了config.xml,下面就要进入MyBatis的核心SQL映射了,第一篇文章的时候,student.xml里面是这么写的:<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd">

2016-12-22 10:01:54 670

原创 MyBatis(2):config.xml文件

前言前一篇文章,讲了MyBatis入门,讲到了MyBatis有两个基本的配置文件,一个用来配置环境信息,一个用来写SQL语句。前者我把它命名为config.xml,config.xml的内容是:<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/my

2016-12-22 09:58:12 328

原创 算法总结

package sort;/** * 排序算法实现 * @author tangxing * */public class Sort { /** * 冒泡排序 * @param a */ public static void bubbleSort(int[] a){ for(int i=0;i<a.length-1;i++){ for(int j=0;j<

2016-12-21 16:58:17 343

原创 大型分布式网站架构技术总结

本文是学习大型分布式网站架构的技术总结。对架构一个高性能,高可用,可伸缩,可扩展的分布式网站进行了概要性描述,并给出一个架构参考。一部分为读书笔记,一部分是个人经验总结。对大型分布式网站架构有很好的参考价值。一、大型网站的特点用户多,分布广泛大流量,高并发海量数据,服务高可用安全环境恶劣,易受网络攻击功能多,变更快,频繁发布

2016-12-21 10:24:29 323

原创 中小型网站架构分析及优化

先看网站架构图:以上网站架构广泛运用中大型网站中,本文从架构每一层分析所用主流技术和解决手段,有助于初入网站运维朋友们,进一步对网站架构认识,从而自己形成一套架构概念。第一层:CDN国内网络分布主要南电信北联通,造成跨地区访问延迟大问题,对于有一定访问量网站来说,增加CDN(内容分发网络)层可有效改善此现象,也是网站加速的最好选择。CDN把网站页面缓存到全国分布

2016-12-21 10:20:37 390

原创 系统负载能力浅析

一. 衡量指标用什么来衡量一个系统的负载能力呢?有一个概念叫做每秒请求数(Requests per second),指的是每秒能够成功处理请求的数目。比如说,你可以配置tomcat服务器的maxConnection为无限大,但是受限于服务器系统或者硬件限制,很多请求是不会在一定的时间内得到响应的,这并不作为一个成功的请求,其中成功得到响应的请求数即为每秒请求数,反应出系统的负载能力。

2016-12-21 10:17:56 442

原创 MyBatis(1):MyBatis入门

MyBatis是什么MyBatis是什么,MyBatis的jar包中有它的官方文档,文档是这么描述MyBatis的:MyBatis is a first class persistence framework with support for custom SQL, stored procedures and advanced mappings. MyBatis eliminate

2016-12-21 09:50:12 429

原创 强大的Spring缓存技术(下)

基本原理一句话介绍就是Spring AOP的动态代理技术。 如果读者对Spring AOP不熟悉的话,可以去看看官方文档扩展性直到现在,我们已经学会了如何使用开箱即用的 spring cache,这基本能够满足一般应用对缓存的需求。但现实总是很复杂,当你的用户量上去或者性能跟不上,总需要进行扩展,这个时候你或许对其提供的内存缓存不满意了,因为其不支持高可用性,也不具

2016-12-21 09:46:48 6844 1

原创 强大的Spring缓存技术(中)

如何清空缓存好,到目前为止,我们的 spring cache 缓存程序已经运行成功了,但是还不完美,因为还缺少一个重要的缓存管理逻辑:清空缓存.当账号数据发生变更,那么必须要清空某个缓存,另外还需要定期的清空所有缓存,以保证缓存数据的可靠性。为了加入清空缓存的逻辑,我们只要对 AccountService2.java 进行修改,从业务逻辑的角度上看,它有两个需要清空缓存的地

2016-12-21 09:43:27 2272

原创 强大的Spring缓存技术(上)

缓存是实际工作中非常常用的一种提高性能的方法, 我们会在许多场景下来使用缓存。本文通过一个简单的例子进行展开,通过对比我们原来的自定义缓存和 spring 的基于注释的 cache 配置方法,展现了 spring cache 的强大之处,然后介绍了其基本的原理,扩展点和使用场景的限制。通过阅读本文,你应该可以短时间内掌握 spring 带来的强大缓存技术,在很少的配置下即可给既有代码提供缓

2016-12-21 09:37:56 22358 8

原创 哪个更快:Java堆还是本地内存

使用Java的一个好处就是你可以不用亲自来管理内存的分配和释放。当你用new关键字来实例化一个对象时,它所需的内存会自动的在Java堆中分配。堆会被垃圾回收器进行管理,并且它会在对象超出作用域时进行内存回收。但是在JVM中有一个‘后门’可以让你访问不在堆中的本地内存(native memory)。在这篇文章中,我会给你演示一个对象是怎样以连续的字节码的方式在内存中进行存储,并且告诉你是应该怎样存储

2016-12-20 10:55:00 698

原创 keepalived实现Tomcat服务双机热备

1. 规划1.1服务器环境规划负载服务器master及WEB服务器1真实IP:10.10.195.53负载服务器backup及WEB服务器2真实IP:10.10.195.190负载服务器虚拟ip:10.10.195.2121.2 软件环境规划操作系统:Red Hat Enterprise Linux Server release 5.6 (Tikan

2016-12-20 10:28:09 695

原创 谈谈互联网后端基础设施

对于一个互联网企业,后端服务是必不可少的一个组成部分。抛开业务应用来说,往下的基础服务设施做到哪些才能够保证业务的稳定可靠、易维护、高可用呢?纵观整个互联网技术体系再结合公司的目前状况,个人认为必不可少或者非常关键的后端基础技术/设施如下图所示:这里的后端基础设施主要指的是应用在线上稳定运行需要依赖的关键组件/服务等。开发或者搭建好以上的后端基础设施,一般情况下是能够支撑很长一

2016-12-20 10:25:12 790

原创 MemCache超详细解读

MemCache是什么MemCache是一个自由、源码开放、高性能、分布式的分布式内存对象缓存系统,用于动态Web应用以减轻数据库的负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高了网站访问的速度。MemCaChe是一个存储键值对的HashMap,在内存中对任意的数据(比如字符串、对象等)所使用的key-value存储,数据可以来自数据库调用、API调用,或者页面渲染的结

2016-12-20 10:20:38 608

原创 JavaEE – JPA(7):ORM的核心注解 – 关系类型

关系映射的处理绝对是一个JPA应用最为重要的部分之一。关系映射处理的好,不仅仅是建模上的成功,而且在程序性能上也会更胜一筹。关系映射处理的不好很容易造成程序性能底下,各种Bug频繁出现,而且这些Bug通常还会比较隐蔽,总是在关键时刻掉链子。我想这也是为什么很多开发人员说JPA入门容易,精通难得原因之一。因为关系确实不是那么好处理的,不仅需要对业务有相当深刻的见解,更需要对JPA提供的各种关系映射类

2016-12-20 10:16:52 329

原创 JavaEE – JPA(6):ORM的核心注解 – 基础类型以及嵌套类型

基础类型映射所谓的基础类型映射,实际上就是Java中定义的数据类型应该如何被JDBC转换成数据库所支持的数据类型。而这些基础类型,主要包括了以下9种:简单类型:byte,int,short,long,boolean,char,float以及double简单类型对应的包装类型:Byte,Integer,Short,Long,Boolean,Character,Fl

2016-12-20 10:13:56 416

原创 JavaEE – JPA(5):ORM的核心注解 – 访问方式,表映射以及主键生成

注解种类在探讨实现JPA中各种映射的方式之前,可以先看看JPA中的注解类型。由于ORM这一机制涉及到了两个方面:对象(内存模型)以关系数据(关系型数据库)。而显然我们在配置ORM的各种规则时,只能在Java程序中完成。数据库是不知道有JPA这种机制存在的,数据库只是单纯的执行输入的各种SQL语句而已。因此,我们可以将JPA中的注解笼统地分为两种类型:逻辑关系

2016-12-20 10:11:19 419

原创 单点登录原理与简单实现

一、单系统登录机制1、http无状态协议web应用采用browser/server架构,http作为通信协议。http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关联,这个过程用下图说明,三次请求/响应对之间没有任何联系但这也同时意味着,任何用户都能通过浏览器访问服务器资源,如果想保护服务器的某些资源,必须限制浏览器请求;要限制浏览器

2016-12-16 17:27:18 418

原创 JavaEE – JPA(4):EntityManager相关核心概念

前三篇文章花了一些笔墨介绍了事务的概念以及在EJB和spring Framework中分别是如何完成事务管理的。之所谓花了比较大的代价来介绍事务主要也是因为不管在什么类型的持久化应用中,都包含下面两个关键点:事务管理对象关系映射(ORM)而JPA主要定义的就是和对象关系映射(ORM)相关的内容。从本篇文章开始,会系统性地介绍JPA的方方面面。核心概念

2016-12-16 17:23:00 467

原创 JavaEE – JPA(3):Spring Framework中的事务管理

前文讨论了事务划分(Transaction Demarcation)在EJB中是如何实现的,本文继续介绍在spring Framework中是如何完成事务划分的。我们已经知道了当采用Container事务类型的时候,事务划分主要有以下两种方案(参考这里):使用JTA接口在应用中编码完成显式划分在容器的帮助下完成自动划分在使用JavaEE的EJB规范时

2016-12-16 17:20:50 528

原创 JavaEE – JPA(2):EJB中的事务管理

对于任何一个需要持久化数据的应用而言,事务划分(Transaction Demarcation)的规划都是非常重要的一环。如果规划的不好,轻则影响性能,重则会导致在某些情况下数据发生不一致,从而严重影响业务逻辑的顺利进行。本文继续介绍事务划分在当前JavaEE技术体系下基于EJB的实现方案。虽然EJB算是JavaEE的亲儿子,但是它的境遇却不怎么好,主要是被EJB 2.x给坑过的开发人员都

2016-12-16 17:17:46 402

原创 JavaEE – JPA(1):事务的基础概念

现在任何应用都需要数据持久化。否则就不算是一个完整的应用。那么对于一个数据持久化而言,最重要的无外乎两方面:事务管理(Transaction Management)对象关系映射(Object Relational Mapping)本文作为JPA(Java Persistence API)这一系列文章的首篇,就来先谈谈事物管理相关的一些概念和基础。事务(Transac

2016-12-16 17:14:53 349

原创 程序猿眼里的高并发(下)

前言高并发经常会发生在有大活跃用户量,用户高聚集的业务场景中,如:秒杀活动,定时领取红包等。为了让业务可以流畅的运行并且给用户一个好的交互体验,我们需要根据业务场景预估达到的并发量等因素,来设计适合自己业务场景的高并发处理方案。在电商相关产品开发的这些年,我有幸的遇到了并发下的各种坑,这一路摸爬滚打过来有着不少的血泪史,这里进行的总结,作为自己的归档记录,同时分享给大家。

2016-12-13 14:37:50 499

原创 程序猿眼里的高并发(上)

高并发是指在同一个时间点,有很多用户同时的访问URL地址,比如:淘宝的双11,双12,就会产生高并发,如贴吧的爆吧,就是恶意的高并发请求,也就是DDOS攻击,再屌丝点的说法就像玩撸啊撸被ADC暴击了一样,那伤害你懂得(如果你看懂了,这个说法说明是正在奔向人生巅峰的屌丝。高并发会来带的后果服务端:导致站点服务器/DB服务器资源被占满崩溃,数据的存储和更新结果和理想

2016-12-13 14:35:30 404

原创 Java 8 新特性概述

Oracle 在 2014 年 3 月发布了 Java 8 正式版,该版本是一个有重大改变的版本,对 JAVA 带来了诸多新特性。其中主要的新特性涵盖:函数式接口、Lambda 表达式、集合的流式操作、注解的更新、安全性的增强、IO\NIO 的改进、完善的全球化功能等。本文将对 Java 8 中几个重要新特性进行介绍。函数式接口Java 8 引入的一个核心概念是函数式接

2016-12-09 17:39:00 2826 1

原创 JDK自带工具概览

在我们平常对java程序进行问题排查、性能调优时,如果没有合适的工具,很多时候会事倍功半,甚至无法继续进行下去。其实,jdk自身已经提供了很多强大的工具供我们使用。本文就对这些工具做一个概览性的描述。笔者的开发环境是:OS X EI Captian 10.11.6JDK版本:java version "1.8.0_92"Java(TM) SE Runtime

2016-12-09 17:24:41 1978

转载 面试心得与总结—BAT、网易、蘑菇街

先说一下LZ的基本情况,LZ是四川某985学校通信专业的研究生(非计算机),大学阶段也就学了C语言,根本没想过最后要成为码农。大四才开始学Java,研一下开始学Android,所以LZ觉得自己开始就是一个小白,慢慢成长起来的。一、心态心态很重要!心态很重要!心态很重要!重要的事情说三遍,这一点我觉得是必须放到前面来讲。找工作之前,有一点你必须清楚,就

2016-12-09 17:22:42 882

原创 Java中的4种引用类型

对象的强、软、弱和虚引用在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期。这4种级别由高到低依次为:强引用、软引用、弱引用和虚引用。1、强引用(StrongReference)强引用是

2016-12-09 14:56:21 576

原创 关于Java并发编程的总结和思考

编写优质的并发代码是一件难度极高的事情。Java语言从第一版本开始内置了对多线程的支持,这一点在当年是非常了不起的,但是当我们对并发编程有了更深刻的认识和更多的实践后,实现并发编程就有了更多的方案和更好的选择。本文是对并发编程的一点总结和思考,同时也分享了Java 5以后的版本中如何编写并发代码的一点点经验。为什么需要并发  并发其实是一种解耦合的策略,它帮助我们把做什么(目标)和

2016-12-08 12:57:49 4247 5

原创 Web项目中使用Spring 3.x + Quartz 2.x实现作业调度详解

Quartz是一个基于Java的作业调度管理的轻量级框架,目前在很多企业应用中被使用,它的作用类似于java.util中的Timer和TimeTask、数据库中的job等,但Quartz的功能更强大、更灵活。从Quartz2开始,你可以使用POJO作为一个任务(Job),这种开发方式进一步降低了代码的耦合度,如果跟spring进行整合,使用起来将更加方便简单。整合开发需要使用的jar如下所

2016-12-02 16:10:57 590

Effective Java(高清中文版)pdf

Effective Java(高清中文版)pdf

2016-10-28

Java并发编程实战(高清中文版)pdf

Java并发编程实战(高清中文版)pdf

2016-10-28

Struts2+hibernate+spring in action(3本最新英文完整版)

包括struts2、hibernate、spring三本in action系列,业界经典之作

2014-11-19

空空如也

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

TA关注的人

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