自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(37)
  • 收藏
  • 关注

原创 项目模块

用户模块:id  user_id uniqu keypsw   md5非对称加密emailquestionanswerrolecreateTimeupdateTime功能介绍前台登录 1、注册    :传username psw email question answer 转22、用户名有效性验证: 传string usernane3、忘记密码 :传username 返回question 转44、...

2018-03-26 12:35:38 506

原创 nginx

Nginx首先要明白,Nginx 采用的是多进程(单线程) & 多路IO复用模型。使用了 I/O 多路复用技术的 Nginx,就成了”并发事件驱动“的服务器。 1、概念:       NGINX采用了异步、事件驱动的方法来处理连接。这种处理方式无需(像使用传统架构的服务器一样)为每个请求创建额外的专用进程或者线程,而是在一个工作进程中处理多个连接和请求。为此,NGINX工作在非阻塞的soc...

2018-03-26 12:35:32 272

原创 java线程与进程

线程:1)进程中负责程序执行的执行单元2)依靠程序执行的顺序控制流,只能使用程序的资源和环境,共享进程的全部资源3)有自己的堆栈和局部变量,没有单独的地址空间4)CPU调度和分派的基本单位,持有程序计数器,寄存器,堆栈进程:1)系统资源分配和调度的独立单位2)至少包含一个线程3)拥有自己的资源创建线程的方式:1)继承Thread类,实现run方法2)实现Runnable接口,实现run方法,用实现...

2018-03-26 12:35:07 5467

原创 JAVA之Semaphore信号量

信号量-SemaphoreSemaphore共享锁的使用信号量(Semaphore),又被称为信号灯,在多线程环境下用于协调各个线程, 以保证它们能够正确、合理的使用公共资源。信号量维护了一个许可集,我们在初始化Semaphore时需要为这个许可集传入一个数量值,该数量值代表同一时间能访问共享资源的线程数量。线程可以通过acquire()方法获取到一个许可,然后对共享资源进行操作,注意如果许可集已...

2018-03-26 12:35:01 329

原创 java之ReentrantLock

Lock接口Synchronized属于隐式锁,即锁的释放和获取都是隐式的。而我们接下来介绍的是显示锁Lock。JDK1.5中,在JAVA JUC包中添加了Lock接口,该接口提供了lock()方法和unlock()方法,以支持显示的加锁和解锁。需要注意的是unlock方法需要在finally中实现,不然会因为异常的出现导致各种并发问题。public interface Lock { //...

2018-03-26 12:34:52 228

原创 JAVA之Synchronized原理总结

Synchorinzed底层语义      Java 虚拟机中的同步(Synchronization)基于进入和退出管程(Monitor)对象实现, 无论是显式同步(有明确的 monitorenter 和 monitorexit 指令,即同步代码块)还是隐式同步都是如此。在 Java 语言中,同步用的最多的地方可能是被 synchronized 修饰的同步方法。同步方法 并不是由 monitore...

2018-03-26 12:34:42 1070

原创 spring

spring开发框架:1)轻量级容器2)提供了IOC来达到松耦合的目的3)提供了AOP的丰富支持,也是对DI的完善4)非侵入式,代码污染低让java开发模块化,并且全面。贯穿逻辑层,表现层,持久层。让每一个功能模块都可以独立分开,降低耦合,提高代码复用率!spring通过控制反转降低耦合性,一个对象的依赖和构造通过被动注入的方式而非主动new还包括aop, mvc的整合等等,spring正如其字面...

2018-03-26 12:34:32 169

原创 项目模块

用户模块:id  user_id uniqu keypsw   md5非对称加密emailquestionanswerrolecreateTimeupdateTime功能介绍前台登录 1、注册    :传username psw email question answer 转22、用户名有效性验证: 传string usernane3、忘记密码 :传username 返回question 转44、...

2018-03-26 12:34:05 237

原创 JAVA类加载机制和类加载器

当虚拟机遇到一条new指令时,1)检查符号引用即检查这个指令的参数能否在常量池中定位到一个类的符号引用,并检查该引用是否被加载、解析和初始化过。若没有则必须先执行相应的类加载过程。2)在检查通过后,虚拟机将为新生的对象分配内存。*为对象分配空间的任务相当于从JAVA堆中划出一片内存,假设JAVA堆是规整的,那么就是移动相应指针划出与对象大小相等的内存,这种分配方式称为指针碰撞。如果JAVA堆不是规...

2018-03-01 21:37:26 248

转载 JAVA之Executor线程池

无论是在java还是在android中其实使用到的线程池都基本是一样的,因此本篇我们将来认识一下线程池Executor框架(相关知识点结合了并发编程艺术书以及Android开发艺术探索而总结),下面是本篇的主要知识点:1.Executor框架浅析 首先我们得明白一个 问题,为什么需要线程池?在java中,使用线程来执行异步任务时,线程的创建和销毁需要一定的开销,如果我们为每一个任务创建一个新的线程...

2018-03-01 13:01:24 251

原创 浅谈JAVA之读写锁ReentrantReadWriteLock

ReentrantReadWriteLock的锁策略有两种,分为公平策略和非公平策略,两者有些小区别,为便于理解,本小节将以示例的形式来说明多线程下,使用公平策略的读写锁是如何处理的。其中读锁是共享锁,写锁是排他锁。只要存在写锁,临界区资源互斥。锁降级:写锁换读锁。可以看出ReentrantReadWriteLock拥有写锁WriteLock和ReadLock内部类,同时也拥有Sync内部类,实现...

2018-02-28 21:46:11 213

原创 Servlet和JSP

servlet生命周期一、初始化阶段1)servlet容器装载servlet,在web.xml中<servlet/>标签中启动。*<load-on-startup>参数若为0或负数则是不默认加载,若为大于0正数则是数字越小优先级越高2)容器启动后,客户首次向Servlet发起请求则装载3)Servlet被更新后重新装载。*当servlet被装载后,servlet容器(tom...

2018-02-27 18:27:52 146

原创 springMVC

springMVC运行机制:1)客户端发送一个Http请求给web服务器,web服务器对http请求进行解析,如果匹配DispatcherServlet的请求映射路径(web.xml)中指定,web容器将请求转交给DIspatcherServlet。2)DIspatcherServlet接受到这个请求后根据请求的信息(包括url,http方法,请求报头,参数等)以及HandlerMapping(处...

2018-02-27 17:26:30 169

原创 java设计模式

设计原则:1、开闭原则:对扩展开放,对修改关闭。为了使程序的扩展性好,易于维护和升级,想要达到就使用接口和抽象类,即抽象化   开闭原则是最基础的设计原则,其他的五个设计原则都是开闭原则的具体形态。2、里氏替换原则:开闭原则的补充,任何基类可以出现的地方,子类一定可以出现,LSP是继承复用的基石,对开闭原则的补充,是对实现抽象化的具体步骤的规范。     例:类B继承类A时,除了添加新的方法来实现...

2018-02-24 21:44:23 211

原创 springMVC拦截器

一、     SpringMVC拦截器实现原理用户请求到DispatherServlet中,DispatherServlet调用HandlerMapping查找Handler,HandlerMapping返回一个拦截器链(HandlerExecutionChain),springmvc中的拦截器是通过HandlerMapping发起的。         在企业开发,使用拦截器实现用户认证(用户登陆...

2018-02-17 16:12:27 200

原创 DBCP连接池

前言对于数据库连接池, 想必大家都已经不再陌生, 这里仅仅设计Java中的两个常用数据库连接池: DBCP和C3P0(后续会更新). 一. 为何要使用数据库连接池假设网站一天有很大的访问量,数据库服务器就需要为每次连接创建一次数据库连接,极大的浪费数据库的资源,并且极易造成数据库服务器内存溢出、拓机。数据库连接是一种关键的有限的昂贵的资源,这一点在多用户的网页应用程序中体现的尤为突出.对数据库连接...

2018-02-09 15:44:52 202

原创 JAVA版排序算法

概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。这里介绍的八个排序算法都属于内排序。        当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。   快速排序:是目前基于比较的内部排序中被认为是最好的方法,当待排

2018-02-05 23:42:07 200

原创 浅谈Mysql之InnoDB引擎

mysql数据库实例在系统上的表现就是一个进程。mysql组成部分:1)Connectors:指的是不同语言中与SQL的交互 2)Management Serveices & Utilities: 系统管理和控制工具,例如备份恢复、Mysql复制、集群等 3)Connection Pool(连接池) :管理缓冲用户连接、用户名、密码、权限校验、线程处理等需要缓存的需求 4)SQL Inte...

2018-01-30 17:24:29 542

原创 Ajax的快速简单认识

Ajax是2005年2月才诞生但是现在已经炙手可热的一项全新技术.这项新技术能够极大地改善网站的用户体验.  什么是Ajax    Ajax是异步Javascript和XML(Asynchronous JavaScript and XML)的英文缩写.    Ajax的核心理念在于使用XMLHttpRequest对象发送异步请求.Ajax并不是一门新的语言或技术,它实际上是

2018-01-28 13:28:12 231

原创 浅谈JAVA语法糖

语法糖(Syntactic Sugar),也叫糖衣语法,是英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语。指的是,在计算机语言中添加某种语法,这种语法能使程序员更方便的使用语言开发程序,同时增强程序代码的可读性,避免出错的机会。 几乎每种语言都提供语法糖,它只是编译器实现的一些小把戏罢了,编译期间以特定的字节码或者特定的方式对这些语法做一些处理,开发者

2018-01-27 23:05:59 221

转载 浅谈JAVA反射

JAVA反射原理什么是反射?反射,一种计算机处理方式。是程序可以访问、检测和修改它本身状态或行为的一种能力。java反射使得我们可以在程序运行时动态加载一个类,动态获取类的基本信息和定义的方法,构造函数,域等。除了检阅类信息外,还可以动态创建类的实例,执行类实例的方法,获取类实例的域值。反射使java这种静态语言有了动态的特性。类的加载java反射机制是围绕

2018-01-26 16:43:54 678

原创 JDK1.8之ConcurrentHashMap

主要参考:http://www.cnblogs.com/leesf456/p/5453341.html                http://blog.csdn.net/sunyangwei1993/article/details/77001597一、前言  最近几天忙着做点别的东西,今天终于有时间分析源码了,看源码感觉很爽,并且发现ConcurrentHas

2018-01-25 23:24:29 1827

原创 快速失败fail-fast机制

-----原文出自:http://cmsblogs.com/?p=1220,请尊重作者辛勤劳动成果,转载说明出处.在JDK的Collection中我们时常会看到类似于这样的话:        例如,ArrayList:注意,迭代器的快速失败行为无法得到保证,因为一般来说,不可能对是否出现不同步并发修改做出任何硬性保证。快速失败迭代器会尽最大努力抛出 Conc

2018-01-25 15:40:14 375

转载 JDK1.8之HashMap & LinkedHashMap迭代器

一、前言  在遍历HashMap与LinkedHashMap时,我们通常都会使用到迭代器,而HashMap的迭代器与LinkedHashMap迭代器是如何工作的呢?下面我们来一起分析分析。二、迭代器继承图    三、HashMap迭代器  3.1 HashIterator  HashIterator是一个抽象类,封装了迭代器内部工作的一些操作

2018-01-25 15:35:41 1123

转载 JDK1.8之LinkedHashMap简单了解

一、前言  前面我们已经分析了HashMap的源码,已经知道了HashMap可以用在哪种场合,如果这样一种情形,我们需要按照元素插入的顺序来访问元素,此时,LinkedHashMap就派上用场了,它保存着元素插入的顺序,并且可以按照我们插入的顺序进行访问。二、LinkedHashMap用法import java.util.Map;import java.uti

2018-01-25 15:22:12 356

转载 JDK1.8之HashMap

一、认识MapJava为数据结构中的映射定义了一个接口java.util.Map,此接口主要有四个常用的实现类,分别是HashMap、Hashtable、LinkedHashMap和TreeMap,类继承关系如下图所示:下面针对各个实现类的特点做一些说明:(1) HashMap:它根据键的hashCode值存储数据,大多数情况下可以直接定位到它的值,因而具有很快的访问速度,但遍历顺序却是不确定的。...

2018-01-25 12:48:24 224

原创 JDK1.8之LinkeList以及与ArrayList的区别

二、LinkedList数据结构  还是老规矩,先抓住LinkedList的核心部分:数据结构,其数据结构如下  说明:如上图所示,LinkedList底层使用的双向链表结构,有一个头结点和一个尾结点,双向链表意味着我们可以从头开始正向遍历,或者是从尾开始逆向遍历,并且可以针对头部和尾部进行相应的操作。三、LinkedList源码分析  3.1 类的

2018-01-24 16:29:58 1040

原创 JDK1.8之ArrayList

转载总结ArrayList数据结构一、ArrayList的数据结构如下:    说明:底层的数据结构就是数组,数组元素类型为Object类型,即可以存放所有类型数据。我们对ArrayList类的实例的所有的操作底层都是基于数组的。下面我们来分析通过数组是如何保证库函数的正确实现的。二、三、ArrayList源码分析  3.1 类的继承关系

2018-01-24 15:52:19 1046

原创 封装和继承梳理

使用封装有三大好处:         1、良好的封装能够减少耦合。         2、类内部的结构可以自由修改。         3、可以对成员进行更精确的控制。         4、隐藏信息,实现细节。封装确实可以使我们容易地修改类的内部实现,而无需修改使用了该类的客户代码继承是使用已存在的类的定义作为基础建立新类的技术,新类的定

2018-01-24 14:28:42 283

原创 多态的实现

面向对象编程有三大特性:封装、继承、多态。    封装隐藏了类的内部实现机制,可以在不影响使用的情况下改变类的内部结构,同时也保护了数据。对外界而已它的内部细节是 隐藏的,暴露给外界的只是它的访问方法。    继承是为了重用父类代码。两个类若存在IS-A的关系就可以使用继承。,同时继承也为实现多态做了铺垫。    多态就是指程序中定义的引用变量所指向的具体类型和通过

2018-01-24 14:17:00 608

转载 UML类图画法

详见http://www.cnblogs.com/xrq730/p/5527115.html属性的表示方式为:【可见性】【属性名称】:【类型】={缺省值,可选}方法的表示方式为:【可见性】【方法名称】(【参数名称:参数类型】):【返回类型】 可见性都是一样的,"-"表示private、"+"表示public、"#"表示protected。。在UML中,继承关系用带空

2018-01-24 11:56:07 389

原创 Maven生命周期简单概述

Mavan最主要的命令:mvn clean compile、mvn clean test、mvn clean package、mvn clean install。执行test之前,先执行compile、执行package之前先执行test、执行install之前先执行package,这就涉及到一个概念:Maven生命周期。compile-test-package-install编译、测

2018-01-24 11:29:30 172

转载 JAVA中常见问题

面向对象编程(OOP)Java是一个支持并发、基于类和面向对象的计算机编程语言。下面列出了面向对象软件开发的优点:代码开发模块化,更易维护和修改。代码复用。增强代码的可靠性和灵活性。增加代码的可理解性。面向对象编程有很多重要的特性,比如:封装,继承,多态和抽象。下面的章节我们会逐个分析这些特性。封装封装给对象提

2018-01-23 22:12:29 223

转载 Git常用命令

git clone    将远程仓库中的项目下载到本地仓库  用法: 进入到git工作目录,输入git clone https://github.com/rodickmini/taptempo.git 进行克隆将远程仓库中的项目下载到本地仓库git checkout切换分支或将修改的文件恢复用法:clone下代码后

2018-01-23 21:56:32 180

转载 JAVA NIO个人学习笔记

NIO即New IO,这个库是在JDK1.4中才引入的。NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多。在Java API中提供了两套NIO,一套是针对标准输入输出NIO,另一套就是网络编程NIO。     为了提高IO速度,在JDK 1.4 中新加入了NIO(New Input/Output)类,引入了一种基于通道(Channel)与缓冲

2018-01-23 20:51:22 135

转载 JAVA IO学习记录

IO流的分类·        根据处理数据类型的不同分为:字符流和字节流·        根据数据流向不同分为:输入流和输出流·        按数据来源(去向)分类:         1、File(文件): FileInputStream, FileOutputStream, FileReader, FileWriter          2、byte[]:Byt

2018-01-23 16:20:46 116

原创 JVM个人看书记录

部分转载至其他博客,但当时为总结笔记在云笔记中,找不到原文地址,见谅。JVM运行时数据区域分为 方法区、堆、虚拟机栈、本地方法栈、程序计数器其中方法区和堆为所有线程共享的数据区,其余的虚拟机栈、本地方法栈、程序计数器为线程隔离的数据区即每个线程有单独的虚拟机栈、本地方法栈、程序计数器。关于他们的作用如下:程序计数器:一块很小的内存空间,当前线程所执行的字节码的行号指示器

2018-01-23 13:20:06 226

空空如也

空空如也

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

TA关注的人

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