自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JDK中所使用到的设计模式

在JDK类库中,开发人员使用了大量设计模式,正因为如此,可以在不修改JDK源码的前提下开发出自己的应用软件。1.1创建型模式:(1)抽象工厂模式(通过创造性的方法来识别工厂本身,这又可以用于创建另一个抽象/接口类型)抽象工厂模式提供了一个协议来生成一系列的相关或者独立的对象,而不用指定具体对象的类型。它使得应用程序能够和使用的框架的具体实现进行解耦。任何用于创建对象但返回接口或抽象类的,...

2019-07-19 16:10:17 1036

原创 高级数据结构之BST(二)

1、求BST树的镜像 /* 求BST树的镜像 */ public void mirror(){ mirror(this.root); } private void mirror(BinNode<T> root){ if(root==null){ return; ...

2019-07-19 15:34:38 295

原创 Spring+Spring MVC+Mybatis整合

整合思路:第一步:整合dao层:mybatis和spring整合,通过spring管理mapper借口,使用mapper接口扫描自动扫描mapper接口在spring中注册;第二步:整合service层:通过spring管理service层接口,使用配置方法将service 接口配置在spring的文件中;第三步:整合springMVC:由于SpringMVC是spring的一个...

2019-07-07 16:39:19 961

原创 高级数据结构之BST(一)

1、树的节点包含一个数据元素,以及若干指向其子树的分支。节点拥有的子树的数量称为节点的度。节点的最大层次称为树的深度或高度。2、二叉树是一种树形结构,其特点是每个节点至多有两棵子树,且子树有左右之分,次序不能随意颠倒。3、满二叉树:一棵深度为k且有2^k - 1个节点的二叉树,称之为满二叉树。4、完全二叉树:对一个深度为k,节点个数为n的二叉树,当且仅当每个节点都与深度为k的满二叉树中...

2019-07-05 18:23:32 1752

原创 SpringMVC运行原理

SpringMVC介绍SpringMVC是Spring中的一部分,该框架是以请求为驱动,围绕Servlet设计,将请求发给控制器,然后通过模型对象,分派器来展示请求结果视图。其中核心类是DispatcherServlet,它是一个Servlet,顶层是实现的Servlet接口。SpringMVC运行原理如图所示:步骤详解:1、用户发起请求(Request),请求前端控制器;...

2019-07-03 14:42:34 785

原创 设计模式之适配器模式

什么是适配器模式?适配器模式将一个类的接口,转换为客户期望的另一个接口。适配器让原本不兼容的类可以合作无间成员角色客户(Client):只能调用目标接口功能,不能直接使用被适配器,但可以通过适配器的接口转换间接使用被适配器。目标接口(Target):客户看到的接口,适配器必须实现该接口才能被客户使用。适配器(Adapter):适配器把被适配者接口转换为目标接口,提供给客户使用。...

2019-07-02 10:19:25 285

原创 设计模式之单例模式

什么是单例模式?保证一个类仅有一个实例,并提供一个访问它的全局访问点。单例模式的实现1、饿汉式单例模式(立即加载)public class Singleton1 { // 私有构造 private Singleton1() {} private static Singleton1 single = new Singleton1(); // 静态...

2019-07-01 21:21:48 141

原创 设计模式之工厂模式

工厂模式(Factory Pattern)属于创建型模式(简单理解就是创建对象的模式),工厂模式可以分为三种,分别是简单工厂模式、工厂方法模式以及抽象工厂模式(后面的两种模式都是基于第一种模式进行的)什么是工厂模式?创建对象时不会对客户端直接暴露创建逻辑,而是通过使用一个共同的接口根据不同的条件来指向具体想要创建的对象。优点:解耦:调用方不用负责对象的创建,只需要使用,明确各自的...

2019-07-01 09:36:39 125

原创 设计模式之代理模式

代理模式包含如下角色:ISubject:抽象主题角色,是一个接口。该接口是对象和它的代理共用的接口。RealSubject:真实主题角色,是实现抽象主题接口的类。Proxy:代理角色,内部含有对真实对象RealSubject的引用,从而可以操作真实对象。代理对象提供与真实对象相同的接口,以便在任何时刻都能代替真实对象。同时,代理对象可以在执行真实对象操作时,附加其他的操作,相当于对真...

2019-06-29 16:42:57 162

原创 Spring之AOP技术

AOP技术背景AOP(Aspect-OrientedProgramming)其实是OOP(Object-OrientedPrograming)思想的补充和完善。OOP引进"抽象"、"封装"、"继承"、"多态"等概念,对万事万物进行抽象和封装,来建立一种对象的层次结构,它强调了一种完整事物的自上而下的关系。但是具体细粒度到每个事物内部的情况,OOP就显得无能为力了。比如日志功能。日志代码往...

2019-06-21 21:15:31 276

原创 Spring之IOC技术

spring 的优点?1.降低了组件之间的耦合性 ,实现了软件各层之间的解耦2.可以使用容易提供的众多服务,如事务管理,消息服务等3.容器提供单例模式支持4.容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能5.容器提供了众多的辅助类,能加快应用的开发6.spring对于主流的应用框架提供了集成支持,如hibernate,JPA,Struts等7.spri...

2019-06-19 17:04:50 471

原创 cookie与session

为什么会有cookie和sessionhttp是无状态的协议,客户每次读取web页面时,服务器都打开新的会话,而且服务器也不会自动维护客户的上下文信息,那么要怎么才能实现网上商店中的购物车呢,session和cookie就是一种保存上下文信息的机制。Cookiecookie 在web开发中是用来维系状态的一种技术,可以实现记住用户名、密码这些参数的操作,就如每次登陆页面,跳转到其他页面...

2019-06-11 19:48:10 224

原创 MyBatis框架

1、JDBC编程步骤1>.加载数据库驱动.通常使用Class.forClass(String driverName);加载2>.通过DriverManger获取数据库连接:3>.通过Connection对象创建Statement对象:有3种:PreparedStatement和CallableStatement是Statement的实现类4>.通过State...

2019-06-04 16:51:37 287

原创 缓存技术~

平常使用的关系型数据库有Mysql、Oracle以及SqlServer等,在开发的过程中,数据通常都是通过Web提供的数据库驱动来链接数据库进行增删改查。那么,日常使用的数据库的数据都储存在哪里呢?以Mysql为例。打开Mysql所在的文件夹目录下的data文件夹可以发现,里面都是创建的数据库,打开其中一个,可以看到创建的表,他们以文件(格式frm和ibd)的形式存在。也就是说,日常使用的...

2019-06-04 11:22:15 2307

转载 海量数据解决方案~

题目问题一:现有海量日志数据,要提取出某日访问百度次数最多的那个IP(可以将题干简化,假设日志中仅包含IP数据,也就是说待处理的文件中包含且仅包含全部的访问IP,但内存空间有限,不能全部加载,假设只有512MB)解决方案:这是一道典型的分治思想的题目,这种问题处理起来套路比较固定,对于大部分的数据量比较大的前提的问题而言,分治都是一个可选的解决方案,但不一定是最优的,解决方法基本划分为三步...

2019-05-27 09:38:15 509

原创 HTTP协议与HTTPS协议~

一、HTTP请求方法最基本的有4种,分别是GET、POST、PUT、DELETE.1、GET--------最常见的一种请求方式当客户端要从服务器中读取文档时,当点击网页上的链接或者通过在浏览器的地址栏输入网址来浏览网页的,使用的都是GET方式。GET方法要求服务器将URL定位的资源放在响应报文的数据部分,回送给客户端。GET方式的请求一般不包含”请求内容”部分,请求数据以地址的...

2019-05-24 21:13:11 298

原创 TCP相关问题解析~

首先来看看数据包的分片机制。分段特指发生在使用TCP协议的传输层中的数据切分行为分片特指发生在使用IPv4协议的网络IP层中的数据切分行为IP分片在以太网上,由于电气限制,一帧不能超过1518字节,除去以太网帧头14字节(mac地址等)和帧尾4字节校验,还剩1500字节,这个大小称为MTU(最大传输单元)。 如果你的IP包大于1500字节,IP层就会分片了。分片重组是IP层一个最重...

2019-05-24 17:35:26 853

原创 操作系统之内存模型

一、内存管理方案1、分区:固定分区、可变分区固定分区--->内存分为若干分区,每个分区大小可不同但固定不变,而且只能装载一个进程,容易产生内部碎片可变分区--->根据进程需要分割内存并分配,剩余部分成为新的空闲区,容易产生外部碎片【只有外部碎片才可以碎片整理】碎片问题:碎片:很小的,不易利用的空闲区,导致内存利用率下降解决方案:紧缩技术(memory compactio...

2019-05-14 19:31:41 2118

原创 操作系统之进程间通信+线程同步

进程间通信,指的是进程之间信息交换,所交换的信息量少则是一个状态或树枝,多则成千上万个字节。每个进程中访问临界资源的那段程序称为临界区(临界资源是一次仅允许一个进程使用的共享资源)。共分为4种1、共享内存:共享内存就是映射一段能被其他进程所访问的内存。这段内存由一个进程创建,但多个进程可以访问。共享内存是最快放的IPC方式,它是针对其他进程间通信方式效率低锁创建的。它往往与其他的通信机...

2019-05-13 19:30:57 296

原创 三个线程循环按顺序进行打印

一、三个线程顺序打印ABC10次解决方案一:适用三个标志来标识哪个线程应该等待,分别在三个线程中使用同步代码块。public class solution{ private static boolean flag1=true; private static boolean flag2=false; private static boolean flag3=false; pub...

2019-05-11 20:39:22 2979 1

原创 解析二叉树~

一、二叉树的定义二叉树是n(n≥0)个节点的有限集合,它或者是空树(n=0),或者是有一个根节点及两颗不相交的且分别称为左、右子树的二叉树所组成。可见,二叉树同样具有递归性质。特别需要注意的是,尽管树和二叉树的概念之间有许多联系,但它们是两个不同的概念,树和二叉树之间最主要的区别是:二叉树结点的子树要区分左子树和右子树,即使在节点只有一个子树的情况下,也要明确指出该子树是左子树还是右子树。...

2019-05-08 20:59:14 249

原创 MYSQL事务特性及其隔离级别~

一、什么是事务一个事务是有一个或者多个SQL语句组成的一个不可分割的单元。二、事务ACID四大属性1、原子性(Atomicity)原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。2、一致性(Consistency)一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态...

2019-05-07 21:00:02 214

原创 操作系统之线程、进程模型

进程可以说是操作系统最为核心的一个抽象,而线程可以认为是一种轻量级的进程。一、进程的模型进程(process):进程是一个正在运行的程序的实例,是系统进行资源分配和CPU调度的独立单位。从概念上说,每个进程拥有自己的虚拟CPU,好像它独占了CPU的使用权一样,虽然实际的CPU是不断切换的。进程的另外一大特性,是独立的虚拟地址空间。进程的创建,有四种事件导致进程的创建:(1)系统初...

2019-05-07 20:59:18 373

原创 JVM~垃圾回收算法以及垃圾回收器

一、什么样的对象可以被标记为垃圾?1、Java中的四种引用:强引用、软引用、弱引用、虚引用强引用:new出来的对象软引用:发生GC后,内存够用,不会回收软引用弱引用:不管内存够不够用,都会回收虚引用:只是提醒发生过GC操作2、JVM如何检测对象是否可以回收(检测对象为垃圾)1)、引用计数法给对象添加一个引用计数器,每当一个地方引用一个对象,引用计数器+1;每当一个引用无效时,引...

2019-04-25 19:33:01 579

原创 JVM~class文件加载机制及其JVM内存模型

一、首先简单说说类加载的时机,编译所生成的.class文件都会直接加载到JVM当中的吗?只有在以下6种情况下,才会对类立即进行初始化操作:(.class文件加载到JVM当中)主动初始化的6种方式>创建对象实例:new 对象的时候,会依法类的初始化,前提这个类没有被初始化 >调用类的静态属性或为静态属性赋值 >调用类的静态方法 >通过class 文件反射创建对象...

2019-04-25 19:12:14 681

原创 数据库连接池~

对于访问数据库来说,建立连接的代价比较昂贵,因此,建立“连接池”来提高访问的性能。从名字上来理解,“连接池”是一个存放“连接”的“池子”,把连接当做对象或者设备,统一放在一个“池子”里面,以前需要直接访问数据库的地方,现在都改为从这个“池子”里面获取连接来使用。因为“池子”中的连接都是已经预先创建好,可以直接分配给应用使用,因此大大减少了创建新连接所耗费的资源。连接返回后,本次访问将连接交还给“连...

2019-04-11 17:05:11 180

原创 JDBC编程~

JDBC编程(Java Data Base Connection)指数据库编程,是一种标准的Java应用编程接口(Java API)用来连接Java编程语言和数据库。JDBC编程步骤1、事前准备下载JDBC驱动2、编码过程2.1 加载数据库驱动2.2 获取数据库的连接2.3 创建statement对象2.4 执行SQL语句2.5 执行结果处理2.6 关闭...

2019-04-08 16:35:54 140

原创 MYSQL索引优化及其存储引擎~

如何定位SQL的操作效率低?1、慢查询日志MySQL可以设置慢查询日志,当SQL执行的时间超过我们设定的时间,那么这些SQL就会被记录在慢查询日志当中,然后可以通过查看日志,用explain分析这些SQL的执行计划,来判定为什么效率低下,是没有使用到索引?还是索引本身创建的有问题?或者是索引使用到了,但是由于表的数据量太大,花费的时间就是很长,那么对此我们可以把表分成n个小表,比如订单表按...

2019-04-02 15:45:07 153

原创 旷视科技笔试总结~

原本以为自己应聘的是Java岗位,笔试的内容跟别的研发岗位会有所区别,然而,却不是这样的,旷视科技对于研发岗位的笔试都是同一份笔试题,但是相比较来看,还是偏向c++方面,我简单总结这份笔试的卷子,在这里只给出部分题目及解析。一、填空题1、考虑下面的递归表达式:,那么2、对于一个含有n个元素的无序数组,构建一个大顶堆,该操作的时间复杂度为?3、在32位的机器中,假设在地址0x100位...

2019-03-30 18:04:31 5862 11

原创 解析MYSQL索引的底层原理~

在介绍MYSQL所索引的底层原理之前,首先简单说说为什么MYSQL需要一个主键主键:表中每一行都应该有可以唯一标识自己的一列(或一组列)。一个顾客可以使用顾客编号列,而订单可以使用订单ID,雇员可以使用雇员ID 或 雇员社会保险号。主键(primary key) 一列(或一组列),其值能够唯一区分表中的每个行。 唯一标识表中每行的这个列(或这组列)称为主键。没有主键,更新或删除表中特定行很...

2019-03-30 16:18:27 515

原创 MYSQL索引~

一、什么是索引索引是创建在表上,是对数据库表中的一列或者多列的值进行排序的一种结果。优点在于可以提高查询的速度;缺点在于并不是索引越多越好,过多的索引会引起CPU的使用高居不下(因为由于数据的改动引起索引文件的改动,过多的磁盘IO造成CPU负载过高)二、索引的分类普通索引:没有任何的限制条件,可以给任何类型的字段创建普通索引。唯一性索引:使用unique修饰的字段,值不会重...

2019-03-30 11:00:48 101

原创 MYSQL基本操作命令

在介绍基本操作命令之前,首先简单说说范式的相关概念。范式是什么?简而言之就是,数据库设计对数据的存储性能,还有开发人员对数据操作都有莫大的关系。所以,建立科学,规范的数据库需要满足一些规范来优化数据库的数据存储方式。在关系型数据库中,这些规范称之为范式!第一范式(1NF)要求:数据表中的每一列或者每一个字段必须是不可拆分的最小单元,确保了每一列的原子性。特点:1>有主键,且主...

2019-03-28 14:44:38 3052

原创 完美世界笔试总结~

昨天下午参加了完美世界的宣讲会,现场进行了笔试,我选择了游戏Java工程师这个职业,今天空了,把昨天的笔试题搜一搜看看自己答错在何处。1、考察wait()方法在哪些代码块中被调用?wait()方法在同步化代码块中被使用。扩展一下,wait()方法为什么一定要在同步代码块中被调用,是因为wait()方法就是释放锁,那么在释放锁的前提下,必须先获得锁,只有先获得锁,才能释放锁。2、关于s...

2019-03-25 11:28:54 4109

原创 简单解析Netty模型的执行流程

首先解释一下Netty的零拷贝体现在何处?Netty的零拷贝主要体现在三个方面:第一种实现:DirectByteBuf 直接内存缓冲区就如上所说,ByteBuf可以分为HeapByteBuf和DirectByteBuf,当使用DirectByteBuf可以实现零拷贝第二种实现:CompositeByteBuf 复合缓冲区CompositeByteBuf将多个ByteBuf封...

2019-03-22 10:56:14 1706

转载 ByteBuf和ByteBuffer区别比较

当我们进行数据传输的时候,往往需要使用到缓冲区,常用的缓冲区就是JDK NIO类库提供的java.nio.Buffer。7种基础类型(Boolean除外)都有自己的缓冲区实现,对于NIO编程而言,我们主要使用的是ByteBuffer。从功能角度而言,ByteBuffer完全可以满足NIO编程的需要,但是由于NIO编程的复杂性,ByteBuffer也有其局限性,它的主要缺点如下。(1)Byt...

2019-03-19 17:56:39 5354

原创 Netty模型架构

Netty是 一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。Netty做了什么?1.Netty实现了对Java NIO的封装,提供了更方便使用的接口;2.Netty利用责任链模式实现了ChannelPipeline这一概念,基于ChannelPipeline,可以优雅的实现网络消息的处理(可插拔,解耦);3.Netty的Reactor线程模型,利...

2019-03-19 17:26:29 1132

原创 唠唠~NIO中的Selector选择器

在前面的博客中介绍了NIO中的Buffer、Channel、Selector以及NIO模型的简单演示。我认为在NIO中最难理解的、东西比较多的当属于Selector选择器莫属,今天想再说说Selector选择器。Selector的优点:可以使用更少线程来管理channel(线程会占用内存资源,线程的切换对系统的开销也很大,一般线程越少越好,但随着现在机器性能提高,多核计算使用单线程反而浪费资源...

2019-03-19 14:58:09 226

原创 Java如何处理高并发的情况

为了更好的理解并发和同步,需要先明白两个重要的概念:同步和异步所谓同步,可以理解为在执行完一个函数或方法之后,一直等待系统返回值或消息,这时程序是出于阻塞的,只有接收到返回的值或消息后才往下执行其它的命令。同步就是一件事,一件事情一件事的做。异步,执行完函数或方法后,不必阻塞性地等待返回值或消息,只需要向系统委托一个异步过程,那么当系统接收到返回值或消息时,系统会自动触发委托的异步过程,...

2019-03-14 10:51:17 1095

原创 初次面试~蚂蚁金服

1、Java面向对象具有哪些特点四大特征:抽象、封装、继承、多态2、用伪代码描述多态的具体过程,为什么要有不同的行为描述,这种不同的行为状态有什么好处【我感觉面试官在问这个问题的时候,意思就是多态的优势。】多态是指允许不同类的对象对同一消息作出响应,使用多态的语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题。多态有两种表现形式:重载和重写。3、大概...

2019-03-14 09:42:43 438

原创 线程池原理剖析

利用线程池能够带来三个好处:第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。但是要做到合理的利用线程池。一、ThreadPoolExecut...

2019-03-11 20:48:54 101

空空如也

空空如也

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

TA关注的人

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