
Java
duanduan_l
这个作者很懒,什么都没留下…
展开
-
排序算法(一)(Java实现)
本文主要介绍七种基本的排序算法:冒泡排序,快速排序,插入排序,希尔排序,选择排序,堆排序和归并排序。其中,快速排序是冒泡排序的增强,希尔排序是插入排序的增强,堆排序是选择排序的增强。1、冒泡排序原理:第一轮比较,将序列中的每个元素两两进行比较,小于则交换,直到比较到最后一个位置,相当于将第一轮将序列中最大的数放在了最后一个位置;第二轮,将序列中的每个元素(最后一个除外)两两比较,小于则...原创 2018-10-24 17:46:38 · 140 阅读 · 0 评论 -
框架面试总结1
谈谈对Spring IOC和DI的理解IOC是一种叫做“控制反转”的设计思想。1、较浅的层次——从名字上解析“控制”就是指对 对象的创建、维护、销毁等生命周期的控制,这个过程一般是由我们的程序去主动控制的,如使用new关键字去创建一个对象(创建),在使用过程中保持引用(维护),在失去全部引用后由GC去回收对象(销毁)。“反转”就是指对 对象的创建、维护、销毁等生命周期的控制由程序控...原创 2019-09-25 20:27:30 · 239 阅读 · 0 评论 -
Mysql执行计划
写在最前面本文主要介绍mysql执行计划各个字段的作用,以及如何利用Mysql执行计划优化我们的Sql,本文主要面向后端开发程序员,以及需要和数据库打交道的同学们。1、什么是Mysql执行计划所谓的执行计划就是Mysql如何执行一条Sql语句,包括Sql查询的顺序、是否使用索引、以及使用的索引信息等内容。一个例子:基本语法explain select ...复制代...转载 2019-09-22 21:39:42 · 248 阅读 · 0 评论 -
造成类在多线程时不安全的原因
线程安全的类定义: 不存在竞态条件(类中不存在被修改的成员变量),或存在时进行了同步控制。多线程不安全的原因-竞态条件/临界区同一个程序运行在多个线程中本身不会有线程安全问题,问题在于多个线程访问共享资源时存在,如:类成员变量(普通或静态变量),系统共享资源(文件,数据库)等。同时只有多个线程同时对这些资源进行了写的操作时才会发生线程安全问题,不对资源的进行修改时就不会存在问题。...转载 2019-09-22 20:05:24 · 513 阅读 · 0 评论 -
TCP通信粘包问题分析和解决(全)
在socket网络程序中,TCP和UDP分别是面向连接和非面向连接的。因此TCP的socket编程,收发两端(客户端和服务器端)都要有成对的socket,因此,发送端为了将多个发往接收端的包,更有效的发到对方,使用了优化方法( Nagle算法),将多次间隔较小、数据量小的数据,合并成一个大的数据块,然后进行封包。这样,接收端,就难于分辨出来了,必须提供科学的拆包机制。对于UDP,不会...转载 2019-09-10 18:46:55 · 205 阅读 · 0 评论 -
访问一个网页的全过程
引言打开浏览器,在地址栏输入URL,回车,出现网页内容。整个过程发生了什么?其中的原理是什么?以下进行整理和总结。整个过程可以概括为几下几个部分:域名解析成IP地址;与目的主机进行TCP连接(三次握手);发送与收取数据(浏览器与目的主机开始HTTP访问过程);与目的主机断开TCP连接(四次挥手);正文下面详细介绍其中的原理:1. 域名解析成IP地址访问目标地址有两种方式:①使用目标...转载 2019-09-09 21:58:13 · 963 阅读 · 0 评论 -
Java复习(二)
什么是值传递和引用传递?值传递是对基本变量而言,传递的是变量的副本,改变副本不会影响本身;引用传递一般是对对象型变量而言,传递的是该对象地址的副本,而不是对象本身,一般来说,Java中的基本类型传递是值传递,实例对象传递是引用传递。数组(Array)和列表(ArrayList)有什么区别?什么时候应该使用Array而不是ArrayList? 数组初始化时必须指定大小,而Array...原创 2019-09-09 21:55:37 · 138 阅读 · 0 评论 -
Java复习(一)
多线程线程同步有哪些方式?答:首先说一下,多线程为什么要线程同步?当多个线程同时访问一个变量或对象,如果这些线程既有读操作又有写操作时,会造成变量值或对象的状态造成混乱,导致程序出现异常。如,银行存取钱问题,一个线程负责取钱100元,另一个线程负责存钱100元,当前账户余额为0元,取钱不成功,银行余额为100元,取钱成功了,余额为0元,到底是什么操作造成的,说不清楚,需要线程同步来解决。(...原创 2019-09-04 16:17:54 · 463 阅读 · 0 评论 -
JavaSE考试知识点分析
1、final、 finally、 finalize 三个关键字的区别是(ABC)A)final 是修饰符(关键字)可以修饰类、方法、变量B)finally在异常处理的时候,提供finally块执行任何清除操作C)finalize是方法名,在垃圾收集器将对象从内存中清除出去之前做D)finally 和 finalize 一样都是用异常处理的方法分析:本题主要考察final,fin...原创 2019-05-13 20:41:39 · 582 阅读 · 0 评论 -
浅析Java虚拟机体系结构
1、什么是Java虚拟机 大家都知道Java语言被称为是跨平台语言,那么它为什么具有跨平台性,而什么叫做跨平台性呢?跨平台性的意思就是:Java程序的执行与底层操作系统无关,一次编译,到处执行,这种跨平台就得益于JVM(Java虚拟机)。在了解Java虚拟机前,我们先了解Java技术体系:JRE,JDK,JVM JRE(Java Runtime Entert...原创 2019-04-25 21:41:07 · 235 阅读 · 0 评论 -
二叉树的前序,中序,后序遍历方法总结
二叉树的前序遍历,中序遍历,后序遍历是面试中常常考察的基本算法,关于它的概念这里不再赘述了,还不了解的同学可以去翻翻LeetCode的解释。这里,我个人对这三个遍历顺序理解是:前中后这三个词是针对根节点的访问顺序而言的,即前序就是根节点在最前根->左->右,中序是根节点在中间左->根->右,后序是根节点在最后左->右->根。无论哪种遍历顺序,用递归...转载 2019-03-27 17:47:38 · 819 阅读 · 0 评论 -
Java 中的 ==, equals 与 hashCode 的区别与联系
一、概述1、概念== : 该操作符生成的是一个boolean结果,它计算的是操作数的值之间的关系equals : Object 的 实例方法,比较两个对象的content是否相同hashCode : Object 的 native方法 , 获取对象的哈希值,用于确定该对象在哈希表中的索引位置,它实际上是一个int型整数二、关系操作符 ==1、操作数的值基本数据类型变量在J...转载 2019-03-30 15:36:46 · 180 阅读 · 0 评论 -
JVM垃圾回收相关问题整理
哪些引用对象可以作为GC ROOT?JVM垃圾回收的根对象的范围有以下几种:虚拟机栈中的引用对象 方法区中的类静态属性引用对象 方法区中常量引用的对象(final的常量值) 本地方法栈JNI(Java本地接口/Java Native Interface)的引用对象JVM垃圾回收过程关于堆内存的结构划分?在JVM中堆空间划分如下图所示上图中,刻画了Java程序运行时的堆空...原创 2019-09-28 11:18:45 · 429 阅读 · 0 评论