04 2019 档案

摘要:一、红黑树介绍 红黑树,一种二叉查找树,但在每个节点上增加一位存储位表示节点的颜色,可以时RED或BLACK。通过对任何一条从根到叶子的路径上各个节点的着色方式的限制,红黑树确保没有一条路径会比其他路径长处两倍,因而使接近平衡的。 1)二叉查找树 二叉查找树,也称有序二叉树(ordered bina 阅读全文
posted @ 2019-04-30 17:03 Uarealoser 阅读(592) 评论(0) 推荐(0)
摘要:一、源码分析 全文可参考知乎上美团官方写的:https://zhuanlan.zhihu.com/p/21673805 定义数组的初始容量。 定义数组最大容量 定义负载因子默认值 定义阈值默认值 HashMap#hash(),即上面的函数。 参考:https://blog.csdn.net/fan2 阅读全文
posted @ 2019-04-30 16:22 Uarealoser 阅读(128) 评论(0) 推荐(0)
摘要:最近刷笔试题遇到的问题,记录下来。 在这里看到了try >但有一点是可以肯定的,finally块中的内容会先于try中的return语句执行,如果finall语句块中也有return语句的话,那么直接从finally中返回了,这也是不建议在finally中return的原因。下面来看这几种情况。 情 阅读全文
posted @ 2019-04-30 10:26 Uarealoser 阅读(316) 评论(0) 推荐(0)
摘要:一、Maven 生命周期 1.编译:compile(生成.class文件) 2.清理:clean 清除编译好的class文件(即清除target目录中的文件) 3.测试:test 该命令将test目录中的源码进行编译 4.安装:install(含部署) 打包并部署到本地仓库,注意:关联本地安装的JD 阅读全文
posted @ 2019-04-29 18:26 Uarealoser 阅读(264) 评论(0) 推荐(0)
摘要:最近在准备java的笔试,在这里记录一下遇到的笔试题中的知识点 1.关于java classloader A java默认提供的三个ClassLoader 是 BootStrap ClassLoader,Extension ClassLoader,App ClassLoader B ClassLoa 阅读全文
posted @ 2019-04-29 16:56 Uarealoser 阅读(161) 评论(0) 推荐(0)
摘要:生一、什么是JSON 1).JSON是一种与开发语言无关的,轻量级的数据格式。全称:Javascript Object Notation 优点:易于人的阅读和编写,易于程序解析和产生 2)标准的JSON数据表示 数据结构:Object Array 基本类型:string number true fa 阅读全文
posted @ 2019-04-26 20:47 Uarealoser 阅读(779) 评论(0) 推荐(0)
摘要:一、视图解析流程 springMVC中视图解析器 1.视图最终的页面渲染。view视图来做,render 2.跳转到目标视图,请求转发。 3.遍历视图解析器,逻辑视图转换为物理视图。 1)视图 视图的作用是渲染模型数据,将模型里的数据以某种形式呈现给客户,为了实现视图模型和具体实现技术的解耦,Spr 阅读全文
posted @ 2019-04-22 23:27 Uarealoser 阅读(149) 评论(0) 推荐(0)
摘要:一、SpringMVC概述 SpringMVC通过一套MVC注解,让POJO成为处理请求的控制器,而无需实现任何接口。 支持REST风格的URL请求 采用了松耦合可插拔组件结构,比其他MVC框架更加具有扩展性和灵活性 二、入门步骤 1)引入jar包 2)配置springmvc.xml 3)配置web 阅读全文
posted @ 2019-04-20 17:45 Uarealoser 阅读(284) 评论(0) 推荐(0)
摘要:一、一对一 1.1、提出需求 根据班级id查询班级信息(带老师的信息) 1.2、创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关系。 表之间的关系如下: 1.3、定义实体类 1、Teacher类,Teacher类是teacher表对 阅读全文
posted @ 2019-04-20 17:03 Uarealoser 阅读(1660) 评论(0) 推荐(0)
摘要:一、连接数据库的配置单独放在一个properties文件中 之前,我们是直接将数据库的连接配置信息写在了MyBatis的conf.xml文件中,如下: 其实我们完全可以将数据库的连接配置信息写在一个properties文件中,然后在conf.xml文件中引用properties文件,具体做法如下 创 阅读全文
posted @ 2019-04-20 16:05 Uarealoser 阅读(253) 评论(0) 推荐(0)
摘要:一、实现单一查询 1)核心配置文件:Configuration.xml 2)定义表所对应的实体类 3)定义操作users表的sql映射文件userMapper.xml 4)在conf.xml文件中注册userMapper.xml文件 5)编写测试代码:执行定义的select语句 二、使用MyBati 阅读全文
posted @ 2019-04-20 15:49 Uarealoser 阅读(168) 评论(0) 推荐(0)
摘要:一、基础 1.jar包下载https://github.com/mybatis/mybatis-3/releases 2.找到配置文件:E:\2019.2\MyBatis\mybatis-3-mybatis-3.5.1\src\test\java\org\apache\ibatis\submitte 阅读全文
posted @ 2019-04-19 23:07 Uarealoser 阅读(160) 评论(0) 推荐(0)
摘要:一、Spring与Web项目整合 1)在Servlet中直接加载配置文件,获取对象。 这样做不好,每次请求都会创建一个Spring工厂,这样浪费服务器资源,应该一个项目只有一个工厂。在服务器启动时,创建一个Spring工厂,创建完工厂,将这个工厂类保存到ServletContext里面。每次从Ser 阅读全文
posted @ 2019-04-15 00:48 Uarealoser 阅读(169) 评论(0) 推荐(0)
摘要:在前面一篇文章中提到,对Vector、ArrayList在迭代的时候如果同时对其进行修改就会抛出java.util.ConcurrentModificationException异常。下面我们就来讨论以下这个异常出现的原因以及解决办法。 一、ConcurrentModificationExcepti 阅读全文
posted @ 2019-04-14 10:45 Uarealoser 阅读(320) 评论(0) 推荐(0)
摘要:一、为什么会出现同步容器 Java的集合框架中,主要有四大类别:List,Set,Queue,Map List,Set,Queue接口分别继承了Collection接口,Map本身是一个接口。 注意Collection,Map是一个顶层接口,而List,Set,Queue则继承了Collection 阅读全文
posted @ 2019-04-13 15:49 Uarealoser 阅读(532) 评论(0) 推荐(0)
摘要:一、对ThreadLocal的理解 ThreadLocal 线程本地变量,ThreadLocal为变量在每个线程都创建了一个副本,那么这个线程可以访问自己内部的副本变量。这句话其实不那么容易理解。 假设有这样一个数据库链接管理类,这段代码在单线程中使用是没有任何问题的,但是如果在多线程中使用呢?很显 阅读全文
posted @ 2019-04-13 14:58 Uarealoser 阅读(194) 评论(0) 推荐(0)
摘要:一、内存模型的相关概念 大家都知道,计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入。由于程序运行过程中的临时数据是存放在主存(物理内存)当中的,这时就存在一个问题,由于CPU执行速度很快,而从内存读取数据和向内存写入数据的过程跟CPU执行指令的速度比起 阅读全文
posted @ 2019-04-12 21:12 Uarealoser 阅读(113) 评论(0) 推荐(0)
摘要:一.synchronized的缺陷 synchronized是java中的一个关键字,也就是说是Java语言内置的特性。那么为什么会出现Lock呢? 在上面一篇文章中,我们了解到如果一个代码块被synchronized修饰了,当一个线程获取了对应的锁,并执行该代码块时,其他线程便只能一直等待,等待获 阅读全文
posted @ 2019-04-12 20:44 Uarealoser 阅读(284) 评论(0) 推荐(0)
摘要:一、什么时候出现线程安全问题 在单线程中不会出现线程安全问题,而在多线程编程中,有可能会出现同时访问同一个资源的情况,这种资源可以是各种类型的的资源:一个变量、一个对象、一个文件、一个数据库表等,而当多个线程同时访问同一个资源的时候,就会存在一个问题: 由于每个线程执行的过程是不可控的,所以很可能导 阅读全文
posted @ 2019-04-12 19:49 Uarealoser 阅读(109) 评论(0) 推荐(0)
摘要:一、线程的几种状态 线程从创建到最终的消亡,要经历若干个状态。一般来说,线程包括以下这几个状态:创建(new)、就绪(runnable)、运行(running)、阻塞(blocked)、time waiting、waiting、消亡(dead)。 当需要新起一个线程来执行某个子任务时,就创建了一个线 阅读全文
posted @ 2019-04-12 19:39 Uarealoser 阅读(246) 评论(0) 推荐(0)
摘要:一、查找和排序 如果面试的时候要求在排序的数组(或者部分排序的数组)中查找一个数字或者统计某个数字出现的次数,可以尝试用二分查找。 二、动态规划和贪婪算法 如果面试题是求一个问题的最优解,如果把小问题的最优解组合起来能够得到整个问题的最优解,那么我们可以应用动态规划解决这个问题。 我们在应用动态规划 阅读全文
posted @ 2019-04-12 14:09 Uarealoser 阅读(157) 评论(0) 推荐(0)
摘要:一、OSI参考模型 自下而上:物理层(物理介质,比特流)、数据链路层(网卡、交换机)、网络层(IP协议)、传输层(TCP/UDP协议)、会话层(创建/建立/断开连接)、表示层(翻译,编码,压缩,加密)、应用层(HTTP协议)。 简化为TCP/IP模型:网络层(物理层、数据链路层、网络层)、传输层,会 阅读全文
posted @ 2019-04-10 18:41 Uarealoser 阅读(396) 评论(0) 推荐(0)
摘要:一、Spring的JDBC模板 Spring对持久层也提供了解决方案,ORM模块和JDBC模板 提高简化JDBC或Hibernate的模板 二、JDBC模板使用入门 1)引入jar包:Spring开发包,数据库驱动包,SpringJDBC模板jar包 2)建表 3)使用JDBC模板,不交给Sprin 阅读全文
posted @ 2019-04-09 17:33 Uarealoser 阅读(201) 评论(0) 推荐(0)
摘要:一、AOP 1)AOP简介: Aspect Oriented Programming,面向切面编程 通过预编译方式和动态代理实现程序功能的一种技术,AOP是OOP的延续,是函数式编程的一种衍生范例。利用AOP可以对业务逻辑各个部分进行隔离,从而使得业务逻辑之间的耦合度降低,提高程序的可重用性,同时提 阅读全文
posted @ 2019-04-07 01:54 Uarealoser 阅读(178) 评论(0) 推荐(0)
摘要:一、类的加载连接初始化 1)JVM和类 当我们调用java命令运行某个java程序时,该命令将会启动一个java虚拟机进程,该程序启动的多个线程,都处于该java虚拟机进程,当系统出现一下几种情况,JVM进程终止 1.程序运行到最后正常结束 2.程序运行到使用System.exit()或Runtim 阅读全文
posted @ 2019-04-06 18:00 Uarealoser 阅读(198) 评论(0) 推荐(0)
摘要:一、创建线程 1.使用Executor:java.util.concurrent包中的执行器(Execute)为你管理Thread对象,从而简化并发编程。 其中,shutdown方法的调用,是防止新任务被提交给这个Executor,当前线程(这里指main线程),将继续运行在shutdown被调用之 阅读全文
posted @ 2019-04-04 14:25 Uarealoser 阅读(127) 评论(0) 推荐(0)
摘要:一、Spring属性注入 1)构造方法属性注入 2)set方法属性注入:通过在bean对象所属类中提供相应字段的set方法,并在配置文件中配置<property.....> 3)set方法设置对象类型的属性(引用类型属性注入):类里的引用类型也需要交给Spring来管理 4)p名称空间的属性注入 使 阅读全文
posted @ 2019-04-02 18:52 Uarealoser 阅读(194) 评论(0) 推荐(0)
摘要:1)前言 和树的遍历类似,图的遍历也是从图中某点出发,然后按照某种方法对图种所有顶点进行访问,且仅访问一次。 但是图的遍历相对树的遍历更为复杂,因为图中任意顶点都能与其他顶点相邻,所以在图的遍历中必须记录已经被访问的顶点,避免重复访问。 根据搜索路径不同,我们可以将遍历图的方法分为两种:广度优先搜索 阅读全文
posted @ 2019-04-02 13:34 Uarealoser 阅读(508) 评论(0) 推荐(0)
摘要:1)作用:将一个类的接口转换成客户希望的另外一个接口,适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。 适配器是一种适配中间件,它存在于不匹配的二者之间,用于连接二者,将不匹配变得匹配,简单的理解就是转接头。 2)关键点: 1.Target(目标抽象类):目标抽象类定义客户所需要 阅读全文
posted @ 2019-04-02 00:46 Uarealoser 阅读(180) 评论(0) 推荐(0)
摘要:1)作用:用原型实例指定创建对象的种类,并且通过复制(克隆)这些原型创建的对象。 2)关键点: 1.protoType(抽象原型类):它是声明克隆方法的接口,是所有具体原型类的公共父类,可以是抽象类也可以是接口,甚至还可以是具体实现类。 2.ConcreatePrototype(具体原型类):它实现 阅读全文
posted @ 2019-04-02 00:24 Uarealoser 阅读(434) 评论(0) 推荐(0)
摘要:1)作用:将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。 2)关键点: 1.Product(具体产品):表示被构造的复杂对象。 2.Builder(抽象构建产品):为构建一个产品对象的各个部件指定抽象接口。 3.BuilderImpl(抽象构建的具体实现):实现Builder 阅读全文
posted @ 2019-04-01 20:16 Uarealoser 阅读(153) 评论(0) 推荐(0)
摘要:1)概念:它的核心结构中包含一个被称为单例的特殊类。 2)特点: 1.单例类只能有一个实例。 2.单例类必须自己创建自己的唯一实例。 3.单例类必须给所有其他对象提供一个实例。 3)实现单例 1.饿汉式单例(线程安全) 在类加载时就完成了初始化。饿汉式单例在类初始化时就创建好了一个静态对象供外部使用 阅读全文
posted @ 2019-04-01 19:08 Uarealoser 阅读(146) 评论(0) 推荐(0)
摘要:快速幂的目的是做到快速求幂,假设我们要求a^b,按照朴素算法就是把a连乘b次,这样一来时间复杂度是O(b)也即是O(n)级别,快速幂能做到O(logn),快了很多。 当b=11时,b的二进制:1011,。 &运算通常用于二进制取位操作,例如一个数 & 1 的结果就是取二进制的最末位。还可以判断奇偶x 阅读全文
posted @ 2019-04-01 15:47 Uarealoser 阅读(438) 评论(0) 推荐(1)