知识点回顾

准备好好开始,回顾自己所学的东西了,学的好多都忘记了,或许是看的东西太多了吧,现在要找回遗忘的知识点。

1.0 java的集合 集合分为值value[collection],key-value[map]. 存储值的分为list,和set。list是线性表,包括循序表和链表,所以有序,可以重复。 set是集合,是无序的,不能重复。重复性质根据,equals和hashcode,如果对象要存储在set中,必须重写equals和hashcode.

list有分为ArrayList和LinkedList. ArrayList底层使用的是数组,LinkedList使用的是链表。对于ArrayList查询速度快,因为有索引,但是增删比较慢。LinkedList是链表增删比较快,查找比较慢。

HashMap和HashTable都是key-value形,HashMap可以key,value为NULL,线程不安全,效率更高.而HashTable是不行的,线程安全,效率低。 想线程安全,有效率高ConcurrentHashMap<K,V>,理解为大的HashMap分成多个HashTable

拷贝文件使用字节流,还是字符流? 我们拷贝的文件不仅仅包含字符流,有可能有字节流(图片,声音,图像),为考虑通用性使用字节流。

线程池 通过4种静态方法,创建4种线程池

image.png

线程池的作用? 1.0 限定线程的个数,不会导致线程过多,导致系统运行缓慢或者崩溃。 2.0 线程池不需要每次都创建和销毁,节约了资源,响应时间更快。 连接池也是一样。

设计模式 经过无数前人,无数次实践总结出的,在设计过程中可以反复使用的设计方法。 单列设计模式,工厂模式,代理模式,包装模式。 spring的ioc就是使用了工厂模式,对象的创建交给一个工厂去创建。 aop就是使用了动态代理模式。jdk,cglib二种。

单列模式,分为饱汉模式(一出来就创建),饥汉模式(需要的时候才创建)。 1.0 构造方法私有法,让处自己的类可以创建,其它地方都不行。 2.0 提供一个方法,获取实列对象(饥汉模式创建需要方法同步)。

//饱汉模式
public class PersonFaction{
private PersonFaction() //私有构造函数
{
}

private PersonFaction instance=new PersonFaction()

public static PersonFaction getPersonInstance()
{
return instance;
}

}

饥汉模式

public class PersonFaction{
private PersonFaction() //私有构造函数
{
}

private PersonFaction instance;

public synchronized static PersonFaction getPersonInstance()
{
if(instance==null)
{
instance=new PersonFaction()
}
return instance;
}

}

范式,范式就是规范。 第一范式:数据库中的 每一列都不可分割的基本数据项。即实体某个属性不能有多个值,或不能有重复的值。 第二范式:表中每一行都可被唯一区分,为实现区分通常需要表中加一列,以存储实列的唯一标识(主键) 第三范式:一个数据库中不包含已在其它表中已包含的非主关键字(外键) 反3范式,有的时候,需要效率,可以设置重复的字段。订单(总价)和订单项(单价)

事务:并发控制的单位,是用户定义的一个操作序列。这些操作,要么都做,要么都不做,是一个不可分割的工作单位。 比如转账,必须A账号扣钱成功,B账号加钱成功,才是真正的转账。 ACDI 原子性:表示操作事务内操作不可分割,要么都成功,要么都失败。 一致性:要么都成功,要么都失败,后面的失败了,要对前面的操作进行回滚。 隔离性:一个事务开始后,不能受其它事务干扰。 持久性:事务开始了,就不可终止。

mysql 为什么需要分页,很多数据时,不可能完全显示数据,需要进行分段显示。mysql使用limit进行分页的limit offset,size表示从多少索引去多少位。 select * from student order by id limit " + pageSize*(pageNum-1)+","+pageSize;

触发器,需要有触发条件,当满足条件以后做什么操作。有after,instead of 2中触发器。

存储过程,自在创建时编译,以后每次执行都不需要重新编译。不许每执行一次就编译,大大的提高了数据库的效率。创建一次重复执行,安全性高。 jdbc调用存储过程。 加载驱动,获取链接,设置参数,执行,释放链接。

PreparedStatement相比Statement的好处 1.0 PreparedStatement是预编译的,比Statement速度快。 2.0 代码可读性,和可维护性,PreparedStatement比Statement高许多档次。 3.0 安全性PreparedStatement比Statement好,PreparedStatement高许多档次。

ajax,是异步加载的JavaScript和xml,作用通过ajax与服务器进行数据交换,ajax可以实现局部更新。通过XmlHttpRequest对象。

jquery选择器 1.0 id选择器 2.0 class选择器 3.0 标签选择器 4.0 通用选择器(*),获取所有元素 5.0 层次选择器。儿子选择器[>], 后代选择器,空格,获取下面的后代。 6.0 属性选择器 ,Tag[attrName="test"],<input type="checkbox" name="body"/> 使用 input[name="body"],获取属性名为name,并且name属性值为body的所有input元素。

spring 是j2ee应用程序框架,是轻量级的ioc和AOP的容器框架,主要针对javabean的生命周期进行管理的轻量级容器。 ioc控制反转, 原来:我的service需要调用Dao,service就需要创建dao。 现在:spring发现你的service依赖dao,就给你注入。 核心原理:配置文件+反射(工厂)+容器。 AOP:面向切面编程 核心原理:在使用动态代理的设计模式在执行方法前后或出现异常做出相关的逻辑。 主要使用aop来做: 事务处理,执行方法前开启事务,执行完成后关闭事务, 出现异常时后滚事务。 权限判断,在执行方法前,判断是否具有权限 日志处理,在执行前进行日志。

spring事务的传播特性 propagation_required,如果存在一个事务,就支持当前事务,如果没有事务则开启。 propagation_supports:如果存在一个事务,就支持当前事务,如果没有事务,则非事务执行。 propagation_mandatory:如果存在一个事务,就支持当前事务,如果没有事务,则抛出异常。

ORM(object Relational Mapping)对象关系映射模式,是一种为了解决面向对象与数据库存在的互不匹配的技术。

Hibernate映射对象状态 临时状态/瞬时状态:刚刚new语句创建,没有被持久化。不处于session中(没有使用session的方法去操作临时状态)

持久化状态/托管状态:已经被持久化,加入到session的缓存中,session是没有关闭该状态的对象为持久化对象。 游离状态/托管准态:已经被持久化,但是不处于session中。

删除状态:对象有关联id,并且在session管理下,但是已经计划删除。

Hibernate为什么需要缓存? 提高访问速度,把磁盘或者数据库的访问变成内存的访问 一级缓存:session的缓存,session缓存内置不能被卸载,session的缓存是事务范围的缓存(session对象的生命周期通常对应一个数据库的事务或者一个应用事务。) 二级缓存:SessionFactory的缓存,由于SessionFactory对象的生命周期和应用程序的整个过程对应,因此hibernate的二级缓存是进程范围或者集群范围的缓存,有可能出现并发问题。因此需要采用适当的并发策略。该缓存策略为被缓存的数据提供了事务的隔离级别。

第2级缓存是可以选择的,是一个可以配置的插件,默认下SessionFactory不会启动这个插件 面试 Hibernate中的缓存分为一级缓存和二级缓存 一级缓存就是Session级别的缓存,在事务的范围内是有效的不能被卸载。二级缓存是SesionFactory级别的缓存,从应用启动到应用介绍有效果。是可以选择的,默认没有2级缓存,需要手动开启。

什么样的数据适合放到2级缓存中? 1.0 很少被修改的数据。帖子回复的时间 2.0 经常被查询的数据。电商的地址 3.0 不会被并发访问的数据。 hibernate的二级缓存默认是不支持分布式的,使用memcahe,redis等中央缓存代替2级缓存。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小狼的世界

Python3.6学习笔记(五)

网络程序出现的比互联网要早很多,实现方式主要依靠网络上不同主机间进程的通信,通信协议最重要的是TCP/IP协议。在这两个协议基础上还有很多更高级的协议,包括HT...

14620
来自专栏pangguoming

Redis快速入门

Redis是一个开源,先进的key-value存储,并用于构建高性能,可扩展的Web应用程序的完美解决方案。 Redis从它的许多竞争继承来的三个主要特点: ...

34550
来自专栏黑泽君的专栏

Java程序的运行原理及JVM的启动是多线程的吗?

A:Java程序的运行原理     Java通过java命令会启动java虚拟机。启动JVM,等于启动了一个应用程序,也就是启动了一个进程。   ...

38520
来自专栏北京马哥教育

面试分享系列 | 17道Python面试题,让你在求职中无往不利

今天给大家分享的是Python面试题系列的第一篇文章,后续我也会陆续整理Python相关的问题给大家,无论是求职者还是新人都可以通过面试题来考察自己的能力缺陷。...

37640
来自专栏拂晓风起

Unity 添加自定义菜单(插件),添加功能

12840
来自专栏小二的折腾日记

Linux的fork使用

功能:fork函数是从一个已经存在的进程中创建一个新的进程,新的进程称为子进程,原来的进程称为父进程。 参数:无 返回值: 成功:子进程中返回 0,父进程中返回...

22030
来自专栏13blog.site

Spring+SpringMVC+MyBatis+easyUI整合基础篇(八)mysql中文查询bug修复

前言   在测试搜索时出现的问题,mysql通过中文查询条件搜索不出数据,但是英文和数字可以搜索到记录,中文无返回记录。本文就是写一下发现问题的过程及解决方法...

34350
来自专栏炸天帮5

win32进程概念之句柄表,以及内核对象.

我们知道.我们使用CreateProcess 的时候会返回一个进程句柄.以及线程句柄. 其实在调用CreateProcess的时候.内核中会新建一个EPROCE...

9510
来自专栏大内老A

WCF技术剖析之二十三:服务实例(Service Instance)生命周期如何控制[上篇]

服务调用的目的体现在对某项服务功能的消费上,而功能的实现又定义在相应的服务类型中。不论WCF服务端框架处理服务调用请求的流程有多么复杂,最终都落实在服务实例的激...

24880
来自专栏数据库

详解Redis内部运作机制

纯手工打造每一篇开源资讯与技术干货,数十万程序员和Linuxer已经关注。 Linux技术交流QQ群:2659793(十二月最新!!) Redis数据库(Red...

22270

扫码关注云+社区

领取腾讯云代金券