- 博客(35)
- 收藏
- 关注
原创 内存泄露与内存溢出
一、概念与区别 内存溢出 out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。 内存泄露 memory leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但 内存泄露堆积后果很严重,无论多少内存,迟早会被占光。memory
2017-09-28 09:39:06 533
原创 数据库连接池
一、什么是数据库连接池?官方:数据库连接池(Connection pooling)是程序启动时建立足够的数据库连接,并将这些连接组成一个连接池,由程序动态地对池中的连接进行申请,使用,释放。个人理解:创建数据库连接是一个很耗时的操作,也容易对数据库造成安全隐患。所以,在程序初始化的时候,集中创建多个数据库连接,并把他们集中管理,供程序使用,可以保证较快的数据库读写速度,还更加安全可
2017-09-27 19:53:16 729
原创 mysql的锁
1. 锁的基本概念当并发事务同时访问一个资源时,有可能导致数据不一致,因此需要一种机制来将数据访问顺序化,以保证数据库数据的一致性。锁就是其中的一种机制。我们可以用商场的试衣间来做个比喻。商场里得每个试衣间都可供多个消费者使用,因此可能出现多个消费者同时试衣服需要使用试衣间。为了避免冲突,试衣间装了锁,某一个试衣服的人在试衣间里把锁锁住了,其他顾客就不能再从外面打开了,只能
2017-09-27 18:59:50 309
转载 mysql存储引擎
那么什么是存储引擎呢? 存储引擎说白了就是如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。因为在关系数据库中数据的存储是以表的形式存储的,所以存储引擎也可以称为表类型(即存储和操作此表的类型)。 在Oracle 和SQL Server等数据库中只有一种存储引擎,所有数据存储管理机制都是一样的。而MySql数据库提供了多种存储引擎。用户可以根据不同的需
2017-09-27 18:36:15 274
原创 MYsql数据冗余
数据冗余:在设计数据库时,某一字段属于一个表,但它又同时出现在另一个或多个表,且完全等同于它在其本来所属表的意义表示,那么这个字段就是一个冗余字段。——以上是我自己给出的定义有两张表 文献和分类关系表:t_literature_category_relation(700w条数据) 文献和分类是n对n关系 文献表:t_literature(200w条) 业务场
2017-09-27 18:31:43 2031
原创 MYSQL的三大范式
我把两个博客结合了一下:第一范式:确保每列的原子性. 如果每列(或者每个属性)都是不可再分的最小数据单元(也称为最小的原子单元),则满足第一范式. 例如:顾客表(姓名、编号、地址、……)其中"地址"列还可以细分为国家、省、市、区等。 第二范式:在第一范式的基础上更进一层,目标是确保表中的每列都和主键相关. 如果一个关系满足
2017-09-27 17:23:39 700
原创 数据库----索引
首先:先假设有一张表,表的数据有10W条数据,其中有一条数据是nickname='css',如果要拿这条数据的话需要些的sql是 SELECT * FROM award WHERE nickname = 'css'一般情况下,在没有建立索引的时候,mysql需要扫描全表及扫描10W条数据找这条数据,如果我在nickname上建立索引,那么mysql只需要扫描一行数据及为我们找到这条nick
2017-09-27 16:48:03 271
转载 数据库事务的四大特性和隔离级别
如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性:(ACID)⑴ 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。⑵ 一致性(Consistency) 一致性是指事务必须使数据库从一个一致性状态变换到另一个一
2017-09-27 16:08:10 320
原创 java io流
Java流操作有关的类或接口:流的概念和作用流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输特性将流抽象为各种类,方便更直观的进行数据操作。 IO流的分类根据处理数据类型的不同分为:字符流和字节流根据数据流向不同分为:输入流和输出流字符流和字节流
2017-09-27 15:30:12 227
转载 深拷贝和浅拷贝
浅复制与深复制概念 :⑴浅复制(浅克隆) 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象。换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象。 ⑵深复制(深克隆) 被复制对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量。那些引用其他对象的变量将指向被复制过的新对象,而不再是原有的
2017-09-27 14:34:46 741
转载 spring的IOC详解
一.IoC的基础知识以及原理:1.IoC理论的背景:在采用面向对象方法设计的软件系统中,底层实现都是由N个对象组成的,所有的对象通过彼此的合作,最终实现系统的业务逻辑。即软件系统中对象之间的耦合,对象A和对象B之间有关联,对象B又和对象C有依赖关系,这样对象和对象之间有着复杂的依赖关系,所以才有了控制反转这个理论。2.什么是控制反转(IoC):(1).IoC是I
2017-09-27 12:47:11 326
转载 MVC模式
在网页当中:V即View视图是指用户看到并与之交互的界面。比如由html元素组成的网页界面,或者软件的客户端界面。MVC的好处之一在于它能为应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,它只是作为一种输出数据并允许用户操纵的方式。M即model模型是指模型表示业务规则。在MVC的三个部件中,模型拥有最多的处理任务。被模型返回的数据是中立的,模型与数据格式无关,这样一个
2017-09-27 12:24:01 1662
原创 http请求状态码
1xx - 信息提示这些状态代码表示临时的响应。客户端在收到常规响应之前,应准备接收一个或多个 1xx 响应。· 100 - Continue 初始的请求已经接受,客户应当继续发送请求的其余部分。(HTTP 1.1新)· 101 - Switching Protocols 服务器将遵从客户的请求转换到另外一种协议(HTTP 1.1新)2xx - 成功这类状态代码表明
2017-09-27 12:05:40 407
原创 过滤器和拦截器的区别
1.过滤器Servlet中的过滤器Filter是实现了javax.servlet.Filter接口的服务器端程序,主要的用途是过滤字符编码、做一些业务逻辑判断等。其工作原理是,只要你在web.xml文件配置好要拦截的客户端请求,它都会帮你拦截到请求,此时你就可以对请求或响应(Request、Response)统一设置编码,简化操作;同时还可进行逻辑判断,如用户是否已经登陆、有没有权限访问该页面
2017-09-27 11:54:24 372
原创 jvm判断对象的死活
堆中存放着几乎所有的对象实例,垃圾收集器在堆堆进行回收前,首先要确定这些对象哪些还“活着”,哪些已经“死去”。方法有如下两种:1. 引用计数法 算法思想:为对象添加一个引用计数器,每当有一个地方引用该对象时,则该引用计数器值加1,;当引用失效时,则该引用计数器值减1;最后,计数器为0的对象就是不可能再被使用的,也即所谓的“死去”的对象。 Java中并没有使用这
2017-09-21 18:44:52 276
原创 jvm垃圾收集器 以及 垃圾收集算法
一.垃圾收集器:1.串行回收器1.1, 新生代串行回收器(1)特点: –它仅仅使用单线程进行垃圾回收 –它是独占式的垃圾回收 –进行垃圾回收时, Java应用程序中的线程都需要暂停(Stop-The-World) –使用复制算法 –适合CPU等硬件不是很好的场合 (2)设置参数: -XX:+UseSerialGC 指定
2017-09-21 18:33:03 396
原创 分布式和集群的区别 以及负载均衡
一句话:分布式是并联工作的,集群是串联工作的。>一.下面我来总结一下redis集群面试知识点:1. 什么是redis? Redis 是一个基于内存的高性能key-value数据库。 2. Reids的特点Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保
2017-09-21 12:43:33 3264 1
原创 springMvc简要总结
1.SpringMvc的工作流程:1.用户发送请求至前端控制器DispatcherSevvlet.2.DispatcherSerlet收到请求调用HanderMapping处理器映射器。3.处理器映射器找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet.4.DispatcherServlet调用HandlerAdapter
2017-09-21 11:38:13 270
原创 spring 简要总结
1. 什么是spring?Spring 是个java企业级应用的开源开发框架。Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用。Spring 框架目标是简化Java企业级应用开发,并通过POJO为基础的编程模型促进良好的编程习惯。2. 使用Spring框架的好处是什么?轻量:Spring 是轻量的,基本的版本大约2MB。
2017-09-21 09:40:24 287
原创 struts2 简要总结
1.struts2的简要流程:1)客户端初始化一个指向Servlet容器的请求;2)这个请求经过一系列的过滤器(Filter) (这些过滤器中有一个叫做ActionContextCleanUp的可选过滤器,这个过滤器对于Struts2和其他框架的集成很有帮助,例如:SiteMesh Plugin)3)接着FilterDispatcher被调用, FilterDispat
2017-09-21 02:21:31 300
原创 死锁
1. 产生死锁的原因主要是: (1) 因为系统资源不足。 (2) 进程运行推进的顺序不合适。 (3) 资源分配不当等。 如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序与速度不同,也可能产生死锁。2. 产生死锁的四个必要条件:(1) 互斥条件:一个资源每次只能被一个进程使用。
2017-09-21 01:53:56 231
原创 Mysql数据库优化
1、选取最适用的字段属性 MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快。因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽可能小。例如,在定义邮政编码这个字段时,如果将其设置为CHAR(255),显然给数据库增加了不必要的空间,甚至使用VARCHAR这种类型也是多余的,因为CHAR(6)就可
2017-09-21 00:32:14 226
原创 反射机制
1. JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。2. Java反射机制主要提供了以下功能:在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生
2017-09-20 22:57:53 490
原创 链家一面面经
1.#{}与${}的区别:①.#{}实现向prepareStatement中的预处理语句中设置参数值,sql语句中#{}表示一个占位符。 123select id="findUserById" parameterType="int" resultType="User"> SELECT * FROM US
2017-09-19 22:44:17 1030
原创 mysql和oracle的区别
1.并发性:mysql: mysql以表级锁为主,对资源锁定的粒度很大,如果一个session对一个表加锁时间过长,会让其他session无法更新此表中的数据。虽然InnoDB引擎的表可以用行级锁,但这个行级锁的机制依赖于表的索引,如果表没有索引,或者sql语句没有使用索引,那么仍然使用表级锁。oracle: oracle使用行级锁,对资源锁定的粒度要小很多,只是锁定sql需要的资源
2017-09-19 01:56:20 480
原创 多线程与线程池总结
1.线程:进程中负责程序执行的执行单元。一个进程中至少有一个线程。2.多线程:解决多任务同时执行的需求,合理使用CPU资源。多线程的运行是根据CPU切换完成,如何切换由CPU决定,因此多线程运行具有不确定性。3.线程池:基本思想还是一种对象池的思想,开辟一块内存空间,里面存放了众多(未死亡)的线程,池中线程执行调度由池管理器来处理。当有线程任务时,从池中取一个,执行完成后线程对
2017-09-19 01:19:14 532
原创 排序----4种排序
1.冒泡排序:(稳定)O(n*n)①.比较相邻的元素,如果前一个比后一个大,就把她们两个调换位置①.对每一对相邻的元素作同样处理,从开始到最后一对,这步做完后,最后的元素会是最大的数。//冒泡排序//从小到大排序,从第一个元素开始,相邻元素比较,j比j+1大的,交换位置。public class BubbleSort {public static void swap(in
2017-09-19 00:43:54 625
原创 jvm 之 对象的创建
1. 虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、加载和初始化过。如果没有,那必须先执行相应的类加载过程。 2.在类加载检查通过后,接下来虚拟机将为新生对象分配内存。对象所需内存的大小在类加载完成后便可以完全确定,为对象分配空间的任务等同于把一块确定大小的内存从java堆中划分出来。假设ja
2017-07-25 10:34:40 235
原创 jvm自动内存管理机制 之 java内存区域
1.程序计数器: 是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时就是通过改变这个计数器的值来选取下一条所需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。 由于java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,在任何一个确定的时刻,一个处理器都只会执
2017-07-22 11:26:04 318
原创 集合 详解
1.List:是有序的Collection。使用此接口能够精确地控制每一个元素插入的位置。用户能够使用索引(元素在list中的位置,类似于数组下标)来访问list中的元素。和Set不同,List允许有相同的元素。常见的List的实现类:①.LinkedList:是以元素列表的形式存储它的数据,每一个元素都和它的前一个元素和后一个元素链接在一起,在这种情况下,查找某个元素的时间复杂度是O(N)。
2017-07-16 15:00:52 371
原创 OSI七层协议
OSI是Open System Interconnection的缩写,意为开放式系统互联。国际标准化组织(ISO)制定了OSI模型,该模型定义了不同计算机互联的标准,是设计和描述计算机网络通信的基本框架。第七层 应用层:主要是一些终端设备的应用,如FTP、web、QQ。 六 表示层:主要是对接受的数据进行解释,加密和解密,压缩和解压缩,也就是把计算机能够识别的东西转换成人眼能
2017-07-16 10:50:33 359
原创 ARP与RARP的工作原理
ARP是地址解析协议,其工作原理是: ① 首先,每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系。 ②当源主机要发送数据时,首先检查ARP列表中是否有对应的IP地址的目的地址的主机的MAC地址,如果有,则直接发送数据。如果没有,就向本网段的所有主机发送ARP数据包,该数据包包括的内容有:源主机IP地址,源主机MAC地址,目的主机的IP地址。
2017-07-05 20:10:15 2580
原创 在浏览器中输入www.baidu.com后执行的全过程
在浏览器中输入www.baidu.com后执行的全部过程: 客户浏览器通过DNS解析到www.baidu.com的IP地址220.181.27.48,通过这个IP地址找到客户端到服务器的路径。客户端浏览发起一个HTTP会话到220.161.27.48,然后通过TCP进行封装数据包,输入到网络层。 在客户端的传输层,把HTTP会话请求分为报文段,添加源和目的端口,如服务器使用80端口监
2017-06-12 23:33:49 2028
原创 tcp三次握手与四次挥手
一.TCP三次握手:(简述:A发送一个请求给B,B发回确认,然后A再加以确认,来回共3次) (1)第一次握手:客户端发送SYN包(syn=x)到服务器,并进入SYN_SEND状态,等待服务器确认。 (2)第二次握手:服务器收到SYN包之后,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN(syn=y)包,即发送SYN+ACK包,此时服务器进入SYN_RE
2017-04-21 00:41:31 308
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人