自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Smile2you的博客

选择比努力总要,机遇比能力重要

  • 博客(90)
  • 资源 (7)
  • 收藏
  • 关注

原创 23种设计模式

目录创建型1. Factory Method(工厂方法)2. Abstract Factory(抽象工厂)3. Builder(建造者)4. Prototype(原型)5. Singleton(单例)结构型6. Adapter Class/Object(适配器)7. Bridge(桥接)8. Composite(组合)9. Decorator(装饰)

2016-08-11 23:03:02 444

原创 vue学习

01.体验Vue并了解MVVM<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <t.

2021-08-21 15:43:55 87

转载 Spring的AOP面向切面编程

什么是AOP?1.AOP概念介绍  所谓AOP,即Aspect orientied program,就是面向方面(切面)的编程。   功能: 让关注点代码与业务代码分离!关注点:          重复代码就叫做关注点;业务代码:    核心业务的代码业务代码与关注点代码分离,好处?               --&gt; 关注点代码写一次即可;     ...

2018-08-09 19:39:30 181

原创 Java NIO原理图文分析及代码实现

前言: 最近在分析hadoop的RPC(Remote Procedure Call Protocol ,远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。可以参考:http://baike.baidu.com/view/32726.htm )机制时,发现hadoop的RPC机制的实现主要用到了两个技术:动态代理(动态代理可以参考博客:http://wei...

2018-04-16 09:19:20 403

原创 java多线程--condition条件

简介Condition中的await()方法相当于Object的wait()方法,Condition中的signal()方法相当于Object的notify()方法,Condition中的signalAll()相当于Object的notifyAll()方法。不同的是,Object中的wait(),notify(),notifyAll()方法是和"同步锁"(synchronized关

2018-04-11 10:08:59 215

转载 Java数据结构与算法解析(十二)——散列表

散列表概述散列表就是一种以 键-值(key-indexed) 存储数据的结构,我们只要输入待查找的值即key,即可查找到其对应的值。散列表的思路很简单,如果所有的键都是整数,那么就可以使用一个简单的无序数组来实现:将键作为索引,值即为其对应的值,这样就可以快速访问任意键的值。这是对于简单的键的情况,我们将其扩展到可以处理更加复杂的类型的键。散列的查找算法有两个步骤: 1

2017-11-02 09:15:25 462

转载 Java数据结构与算法解析(十三)——优先级队列

在很多应用中,我们通常需要按照优先级情况对待处理对象进行处理,比如首先处理优先级最高的对象,然后处理次高的对象。最简单的一个例子就是,在手机上玩游戏的时候,如果有来电,那么系统应该优先处理打进来的电话。在这种情况下,我们的数据结构应该提供两个最基本的操作,一个是返回最高优先级对象,一个是添加新的对象。这种数据结构就是优先级队列(Priority Queue) 。定义优先级队

2017-11-02 09:14:45 243

转载 Java数据结构与算法解析(十四)——二叉堆

二叉堆概述二叉堆是完全二元树或者是近似完全二元树,按照数据的排列方式可以分为两种:最大堆和最小堆。 最大堆:父结点的键值总是大于或等于任何一个子节点的键值;最小堆:父结点的键值总是小于或等于任何一个子节点的键值。二叉堆一般都通过”数组”来实现,下面是数组实现的最大堆和最小堆的示意图: 二叉堆的实现本实现以”最大堆”为例子来进行介绍。1. 添加

2017-11-02 09:14:13 263

转载 Java数据结构与算法解析(十一)——红黑树

前面一篇文章介绍了2-3查找树,2-3查找树能保证在插入元素之后能保持树的平衡状态,最坏情况下即所有的子节点都是2-node,树的高度为lgN,从而保证了最坏情况下的时间复杂度。但是2-3树实现起来比较复杂,本文介绍一种简单实现2-3树的数据结构,即红黑树(Red-Black Tree)红黑树的介绍红黑树(Red-Black Tree,简称R-B Tree),它一种特殊的二叉查找树

2017-11-01 18:18:55 398

转载 Java数据结构与算法解析(十)——2-3树

二叉查找树对于大多数情况下的查找和插入在效率上来说是没有问题的,但是他在最差的情况下效率比较低。平衡查找树的数据结构能够保证在最差的情况下也能达到lgN的效率,要实现这一目标我们需要保证树在插入完成之后始终保持平衡状态,这就是平衡查找树(Balanced Search Tree)。在一棵具有N 个节点的树中,我们希望该树的高度能够维持在lgN左右,这样我们就能保证只需要lgN次比较操作就可以查找到

2017-11-01 18:18:04 283

转载 Java数据结构与算法解析(九)——B树

B树简介定义在计算机科学中,B树(英语:B-tree)是一种自平衡的树,能够保持数据有序。这种数据结构能够让查找数据、顺序访问、插入数据及删除的动作,都在对数时间内完成。特点阶为M的B树是一颗具有以下特点的树: 1.数据项存储在树叶上 2.非叶子节点直到M-1个关键字以指示搜索的方向:关键字i代表子树i+1中最小的关键字 3.树的根或者是一片树叶,或者其

2017-11-01 18:17:05 237

转载 Java数据结构与算法解析(八)——伸展树

伸展树简介伸展树(Splay Tree)是特殊的二叉查找树。 它的特殊是指,它除了本身是棵二叉查找树之外,它还具备一个特点: 当某个节点被访问时,伸展树会通过旋转使该节点成为树根。这样做的好处是,下次要访问该节点时,能够迅速的访问到该节点。特性1.和普通的二叉查找树相比,具有任何情况下、任何操作的平摊O(log2n)的复杂度,时间性能上更好 2.和一般的平衡二叉树比

2017-11-01 18:16:11 182

转载 Java数据结构与算法解析(六)——AVL树

之前我们说过普通二叉查找树的删除算法会使得左子树比右子树深,因为我们总是用右子树的一个来代替删除的节点。会造成二叉查找树,严重的不平衡。AVL树简介而AVL树就是解决普通二叉查找树弊端的方法,他是带有平衡条件的二叉查找树,这个平衡条件必须容易保持,而且它保证树的深度必须是O(logN).AVL树是高度平衡的而二叉树。它的特点是:AVL树中任何节点的两个子树的高度最大差别为1

2017-11-01 18:14:38 267

转载 Java数据结构与算法解析(五)——二叉查找树

二叉查找树简介二叉查找树(Binary Search Tree),又被称为二叉搜索树。 它是特殊的二叉树:对于二叉树,假设x为二叉树中的任意一个结点,x节点包含关键字key,节点x的key值记为key[x]。如果y是x的左子树中的一个结点,则key[y] = key[x]。那么,这棵树就是二叉查找树。如下图所示: 在二叉查找树中: (1) 若任意节点的左子树不空,则左子

2017-11-01 18:13:18 220

转载 Java数据结构与算法解析(四)——树的概述

树的基本概念树具有以下的特点: (01) 每个节点有零个或多个子节点; (02) 没有父节点的节点称为根节点; (03) 每一个非根节点有且只有一个父节点; (04) 除了根节点外,每个子节点可以分为多个不相交的子树。树的基本术语1.结点的度 结点拥有的子树数称为结点的度。度为0的结点称为叶子结点或终端结点,度不为0的结点称为非终端结点或

2017-11-01 18:12:37 210

转载 Java数据结构与算法解析(三)——队列与背包

队列基本概念像栈一样,队列也是表。然而,使用队列时插入在一端进行,而删除则在另一端进行。插入的一端称为队尾,删除的一端称为队头 。其插入和删除的操作分别在表的两端进行,队列的特点就是先进先出(First In First Out)。队列的数组实现队列的顺序储存缺点:出队复杂度高0(n),容易假溢出 Front为队头指针,rear为

2017-11-01 18:11:48 206

转载 Java数据结构与算法解析(二)——栈

栈是限制插入和删除只能在一个位置上进行的表,该位置是表的末端,叫做栈顶。对栈的基本操作有push(进栈)和pop(出栈),对空栈进行push和pop,一般被认为栈ADT的一个错误。当push时空间用尽是一个实现限制,而不是ADT错误。栈有时又叫做LIFO(后进先出)表。基本概念允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom),不含任何数据元素的栈称为空栈。栈又

2017-11-01 18:10:49 451

转载 Java数据结构与算法解析(一)——表

本节我们讨论常见常用的数据结构——表。 如果要通俗简单的说什么是表,那我们可以这样说:按顺序排好的元素集合就是表。表的概述抽象数据类型是带有一组操作的一些对象的结合1、定义: 线性表是一个线性结构,它是一个含有n≥0个结点的有限序列,对于其中的结点,有且仅有一个开始结点没有前驱但有一个后继结点,有且仅有一个终端结点没有后继但有一个前驱结点,其它的结点都有且仅有一个前

2017-11-01 18:07:58 167

原创 阿里数据库专家:写给我们这些浮躁的程序员

再次写给我们这些刚入行浮躁的程序员,如何成长,以下是列出了一些成长的心得,我们不必每条都去实践,但是优秀的程序员成长过程中总会实践里面的几条。 多做项目,多思考不要害怕做事,刚毕业的同学最缺的就是工作经验,乱七八糟的项目能让你很快就了解了一个公司的业务与使用的技术,并且可以多接触同事与客户。当你毕业后刚进一家公司时,如果主管没有把你安排到项目组工作,那真的很杯具,因

2017-06-19 15:23:58 316

原创 Http和Socket连接区别

1、TCP连接  要想明白Socket连接,先要明白TCP连接。手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接。TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上。  建立起一个TCP连接需要经过“三次握手”:第一次握手:客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认

2017-05-27 11:02:58 8664 4

转载 详细说明JDK环境变量中dt.jar、tools.jar等变量值的作用(结合ClassLoader)

学习Java的人都要经历配置JDK环境变量这一步,安装好JDK后,我们一般会做如下配置:1.打开我的电脑--属性--高级--环境变量 2.新建环境变量JAVA_HOME 和CLASSPATH 变量名:JAVA_HOME 变量值:C:\Program Files\Java\jdk1.7.0变量名:CLASSPATH 变量值:.;%JAVA_HOME%\lib\dt.jar;%

2017-05-08 18:00:30 288

转载 【深入Java虚拟机】之八:Java垃圾收集机制

对象引用    Java中的垃圾回收一般是在Java堆中进行,因为堆中几乎存放了Java中所有的对象实例。谈到Java堆中的垃圾回收,自然要谈到引用。在JDK1.2之前,Java中的引用定义很很纯粹:如果reference类型的数据中存储的数值代表的是另外一块内存的起始地址,就称这块内存代表着一个引用。但在JDK1.2之后,Java对引用的概念进行了扩充,将其分为强引用(Stron

2017-05-08 17:59:32 217

转载 【深入Java虚拟机】之七:Javac编译与JIT编译

编译过程    不论是物理机还是虚拟机,大部分的程序代码从开始编译到最终转化成物理机的目标代码或虚拟机能执行的指令集之前,都会按照如下图所示的各个步骤进行:        其中绿色的模块可以选择性实现。很容易看出,上图中间的那条分支是解释执行的过程(即一条字节码一条字节码地解释执行,如JavaScript),而下面的那条分支就是传统编译原理中从源代码到目

2017-05-08 17:58:10 275

转载 【深入Java虚拟机】之六:Java语法糖

语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机学家Peter.J.Landin发明的一个术语,指在计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。Java中最常用的语法糖主要有泛型、变长参数、条件编译、自动拆装箱、内部类等。虚拟机并不支持这些语法,它们在编译阶段就被还原回了简单的基础语法结构,这个过程成为解语法糖。    泛

2017-05-08 17:57:23 194

转载 【深入Java虚拟机】之五:多态性实现机制——静态分派与动态分派

方法解析    Class文件的编译过程中不包含传统编译中的连接步骤,一切方法调用在Class文件里面存储的都只是符号引用,而不是方法在实际运行时内存布局中的入口地址。这个特性给Java带来了更强大的动态扩展能力,使得可以在类运行期间才能确定某些目标方法的直接引用,称为动态连接,也有一部分方法的符号引用在类加载阶段或第一次使用时转化为直接引用,这种转化称为静态解析。这在前面的“Java内存

2017-05-08 17:56:27 255

转载 【深入Java虚拟机】之四:类加载机制

类加载过程    类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段。它们开始的顺序如下图所示:    其中类加载的过程包括了加载、验证、准备、解析、初始化五个阶段。在这五个阶段中,加载、验证、准备和初始化这四个阶段发生的顺序是确定的,而解析阶段则不一定,它在某些情况下可以在初始化阶段之后开始,这是为

2017-05-08 17:55:14 230

转载 【深入Java虚拟机】之三:类初始化

类初始化是类加载过程的最后一个阶段,到初始化阶段,才真正开始执行类中的Java程序代码。虚拟机规范严格规定了有且只有四种情况必须立即对类进行初始化:遇到new、getstatic、putstatic、invokestatic这四条字节码指令时,如果类还没有进行过初始化,则需要先触发其初始化。生成这四条指令最常见的Java代码场景是:使用new关键字实例化对象时、读取或设置一个类的静

2017-05-08 17:54:31 248

转载 【深入Java虚拟机】之二:Class类文件结构

版权声明:本文为博主原创文章,未经博主允许不得转载。目录(?)[-]平台无关性类文件结构   magic与version   constant_pool    access_flag   this_classsuper_classinterfaces    fields    methods    attributes转载请注明出处:ht

2017-05-08 17:52:54 318

转载 【深入Java虚拟机】之一:Java内存区域与内存溢出

目录(?)[-]内存区域   程序计数器Program Counter Register   Java虚拟机栈Java Virtual Machine Stacks   本地方法栈Native Method Stacks   Java堆Java Heap   方法区Method Area    直接内存Direct Memory内存溢出对象实例化分析转载

2017-05-08 17:51:23 237

原创 订单分库分表实践总结以及关键步骤

随着唯品会业务的快速发展,订单量的不断增长,原有的订单存储架构已经不能满足公司的发展了,特别是在大促高峰期,原订单库已经成为抢购瓶颈,已经严重制约公司的发展。唯品会旧订单库包含几十张订单相关表,旧订单库是典型的一主多从架构;主库容量已接近服务器物理空间上限,同时也已经达到MySQL的处理上限,很快将无法再处理新增订单。旧订单库面临的问题有:1、超大容量问题订

2017-05-02 09:59:49 403

原创 Mysql 千万级数据分页优化

在使用mysql数据库查询分页时,常用查询分页 limit 在小数据量查询ok熟读非常快 ,但是在大表数据查询时候性能非常有限这和limit本身设计相关好了下面介绍几种常用limit分页查询优化方案。    首先使用储存过程向数据库中插入1000w数据,脚本如下    Java代码  DROP PROCEDURE if exists in

2017-05-02 09:57:58 513 1

原创 SQL 大数据查询如何进行优化?

1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索  2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描 select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查

2017-05-02 09:56:31 322

转载 Java 并发工具包 java.util.concurrent 用户指南

译序本指南根据 Jakob Jenkov 最新博客翻译,请随时关注博客更新:http://tutorials.jenkov.com/java-util-concurrent/index.html。本指南已做成中英文对照阅读版的 pdf 文档,有兴趣的朋友可以去 Java并发工具包java.util.concurrent用户指南中英文对照阅读版.pdf[带书签] 进行下载。

2017-03-22 15:41:10 486

转载 class.getResource()和getResourceAsStream用法

用JAVA获取文件,听似简单,但对于很多像我这样的新人来说,还是掌握颇浅,用起来感觉颇深,大常最经常用的,就是用JAVA的File类,如要取得c:/test.txt文件,就会这样用File file = newFile("c:/test.txt");这样用有什么问题,相信大家都知道,就是路径硬编码,对于JAVA精神来说,应用应该一次成型,到处可用,并且从现实应用来讲,最终生成的应用也会部署到Win

2017-03-16 14:28:13 926

原创 为什么加载数据库驱动只用Class.forName()

在Java开发特别是数据库开发中,经常会用到Class.forName( )这个方法。通过查询Java Documentation我们会发现使用Class.forName( )静态方法的目的是为了动态加载类。在加载完成后,一般还要调用Class下的newInstance( )静态方法来实例化对象以便操作。因此,单单使用Class.forName( )是动态加载类是没有用的,其最终目的是为了实例

2017-01-07 14:46:38 2595 2

原创 深入理解java异常处理机制

1. 引子       try…catch…finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解。不过,我亲自体验的“教训”告诉我,这个东西可不是想象中的那么简单、听话。不信?那你看看下面的代码,“猜猜”它执行后的结果会是什么?不要往后看答案、也不许执行代码看真正答案哦。如果你的答案是正确,那么这篇文章你就不用浪费时间看啦。

2017-01-06 15:16:02 72

原创 FileUtils工具类的使用

package cn.xingoo.learn.commons;import org.apache.commons.io.FileUtils;import org.apache.commons.io.filefilter.DirectoryFileFilter;import org.apache.commons.io.filefilter.FileFileFilter;import or

2016-12-27 14:32:29 18614 3

原创 MySQL读书笔记-逻辑架构

MySQL逻辑架构第一层连接处理,授权认证,安全管理等。连接管理每个客户端连接都会在服务器进程中拥有一个线程,这个连接的查询只会在这个单独的线程中执行,该线程只能轮流在某个CPU中运行,服务器会负责缓存线程(例如,使用线程池,可以使用线程池中少量的线程来服务大量的连接),因此,不需要为每一个新建的连接创建和销毁线程。安全性当客户端连接到MyS

2016-12-14 18:16:50 291

原创 MySQL读书笔记-并发控制

MySQL在两个层面的并发控制。服务器层存储引擎层无论何时,只要有多个查询需要在同一时刻修改数据,都会产生并发控制的问题。MySQL是如何控制并发读写的呢?在处理并发读或者写时,可以通过实现一个由两种类型的锁组成的锁系统来解决问题。这两种类型的锁,通常被称为共享锁(shared lock)和排他锁(exclusive lock),或者读锁(read lock)和写锁(write l

2016-12-14 18:16:07 258

原创 MySQL读书笔记-事务,隔离级别,死锁

事务事务,就是一组原子性的SQL查询。如果数据库引擎能够成功地对数据库应用该组查询的全部语句,那么就执行该组查询;如果其中有任何一条语句因为崩溃或其他原因无法执行,那么所有的语句都不会执行。即,事务内的语句,要么全部执行成功,要么全部执行失败。可以用START TRANSACTION语句开始一个事务,然后要么使用COMMIT提交事务将修改的数据持久保留,要么使用ROLLBACK撤销

2016-12-14 18:14:19 332

传智播客张孝祥老师的经典

传至博客张孝祥老师的经典,适合有基础的初学者学习,高清版本

2018-04-11

黑马28期淘淘商城数据库脚本

黑马28期,淘淘商城sql文件。包括数据库脚本和初始化数据等等

2018-04-01

resids 客户端

MySQL优化笔记 MySQL优化笔记 MySQL优化笔记 MySQL优化笔记 MySQL优化笔记 MySQL优化笔记

2018-01-24

MySQL优化笔记

mysql 优化指南,索引 聚簇索引 innodb引擎,索引优化指南

2018-01-24

Spring+SpringMVC+Mybatis CXF

学习spring 框架 和 cxf webservice接口等必备,接口 restful webservice

2018-01-24

python学些资料

最新的python新特性,淘汰python2.7 最新的python新特性,淘汰python2.7 最新的python新特性,淘汰python2.7

2018-01-23

SSM框架与CXF整合

本代码事例是SSM框架和CXF整合,仅供大家学习,本代码事例是SSM框架和CXF整合,仅供大家学习

2018-01-23

空空如也

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

TA关注的人

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