Java
文章平均质量分 65
ZQ_313
这个作者很懒,什么都没留下…
展开
-
MYSQL索引以及索引的底层原理
1、索引分类索引:索引是创建在表上,是对数据库中的一列或者多列的值进行排序的一种结果。优点:提高查询的效率缺点:索引并非是越多越好,过多的索引会导致CPU使用居高不下,由于数据的改动引起索引文件的改动,过多的磁盘IO造成CPU负载过高。普通索引:没有任何的限制条件,可以给任何类型的字段创建普通索引唯一性索引:使用unqiue修饰的字段,值不会重复,主键索引隶属唯一性索引主键...原创 2019-04-04 16:48:18 · 515 阅读 · 0 评论 -
HashTable的源码解读以及HashMap与HashTable的异同点
我们首先说一下有关HashTable的相关内容,HashMap的相关内容可以在上一篇博客中找到。。。1、HashTable的特点1)是以键值对的形式存在的2)底层数据结构是数组+链表3)key与value均不能为null4)key 不可以重复,value可以重复5)不能保证插入的顺序6)线程安全2、HashTable源码解读1)继承关系public cla...原创 2018-11-23 17:41:10 · 195 阅读 · 0 评论 -
Java集合框架——HashMap
Map接口下常见的实现类有:HashMap、LinkedHashMap、HashTable、TreeMap,今天我们主要看一下HashMap的内容。一、HashMap的特点1)数据是以键值对的形式存储2)key不能重复,value可以重复3)key只能有一个为null,value可以有多个为null4)存储数据不能保证有序5)底层是由数组和链表实现的二、HashMap的...原创 2018-11-22 15:11:52 · 228 阅读 · 0 评论 -
Java集合框架——LinkedList
LinkedList表示的是一个链表的操作类。1、特点1)底层实现是双向链表2)数据可以重复3)可以存储多个null值4)插入数据有序5)增加、删除效率高2、LinkedList源码解读1)继承关系public class LinkedList<E> extends AbstractSequentialList<E> implem...翻译 2018-11-20 16:06:48 · 166 阅读 · 0 评论 -
ArrayList与LinkedList的区别
ArrayList适应于查询量大,修改频率较低的场景LinkedList适应于增删改量较大的场景代码展示: ArrayList list1 = new ArrayList(); long l = System.currentTimeMillis();//起始时间 Random random = new Random(); ...翻译 2018-11-20 16:07:12 · 131 阅读 · 0 评论 -
Java集合框架——ArrayList
List接口下常用的实现类——ArrayList1、特点1)底层实现是数组2)数据可重复3)可以有多个null4)存储的是单个值5)保证插入的数据有序6)查询、修改效率高;删除、增加效率低2、常用实现方法int size();//获取存储数据的个数boolean isEmpty();//判断集合是否为空boolean contains(Object o)...翻译 2018-11-14 13:20:00 · 213 阅读 · 0 评论 -
java集合框架(一)
Java集合框架的简单介绍 Java集合框架是java.util中的集合类。接口、接口的实现和集合算法是Java集合框架主要的三个组成部分。在Java中,集合类用来存放对象,在使用时通过实例化集合类得到集合对象,而集合对象则代表某种方式组合到一起的一组对象,这组对象是通过引用集合对象来进行操作的。Java集合相当于一个容器,里面包含着一组对象。Java集合框架除了提供可变容器特性之...翻译 2018-11-14 10:49:18 · 206 阅读 · 0 评论 -
java的重写与重载
1、重载(Overloading) 方法的重载一定只是参数的类型或个数不同,而方法的返回值相同 可以用相同的方法名但不同的参数列表来定义方法(参数表中参数的数量、类型或次序有差异)的重载。两个规则适用于重载方法:1)调用语句的参数表必须有足够的不同,以至于允许区分出正确的方法被调用。正常的拓展晋升(如单精度类型float到双精度类型double)可能被应用,但是这样会导...翻译 2018-09-30 19:13:05 · 255 阅读 · 0 评论 -
java异常
一、异常的分类Throwable类有两个重要的子类:Error和Exception,Exception又分为编译期异常和运行期异常。所有的异常都是Exception的子类,所有的异常都可以使用Exception来接收。java中有两种异常处理机制:捕获处理异常和声明抛出异常。与异常有关的关键字有try,catch,throw,throws,finally。通过try,catch,fin...翻译 2018-09-22 19:57:51 · 557 阅读 · 0 评论 -
Java集合框架——大量数据处理操作练习题
1、用HashTable和HashMap测试插入是10万个数据的速度Hashtable<Integer,Object> hashtable=new Hashtable<>();long l = System.currentTimeMillis();//起始时间Object o=new Object();Random random=new Random(); ...原创 2018-12-04 19:49:52 · 726 阅读 · 0 评论 -
LinkedHashMap源码解读
1、继承关系public class LinkedHashMap<K,V>extends HashMap<K,V>implements Map<K,V>继承了HashMap类,实现了Map接口,即LinkedHashMap具有HashMap的特点。2、基本属性private static final long serialVersionU...原创 2018-12-04 21:40:52 · 303 阅读 · 0 评论 -
MYSQL的基本操作
1、创建表 在创建表之前要先选择数据库,在选择的数据库下创建表。选择数据库在上一篇博文中已经提及到(use 数据库名)。create table table_name(属性名 属性类型[完整性约束], 属性名 属性类型[完整性约束], ...原创 2019-03-30 14:48:08 · 410 阅读 · 0 评论 -
MYSQL基本介绍
MYSQL了解:MYSQL采用C/S的客户端服务器模型,客户端通过连接服务器进行数据的增删改查操作;MYSQL服务段模型采用IO复用+线程池来定义。SQL语句划分:DDL(data definition language):数据定义语言,定义了数据库、表、列、索引等数据库对象的定义。常用的关键字:create、drop、alter等。DML(data manipulation lang...原创 2019-03-30 14:02:39 · 367 阅读 · 0 评论 -
NIO模型(二)
一、NIO中的BufferBuffer初始化的方式:ByteBuffer.allocate(int size) //开辟指定大小ByteBuffer.warp(byte[]) //通过数组初始化存取元素:(1)put:添加元素 先判断position是否超过了limit,否则指针position向前移一位,将要添加的字节存入position所指的数组的...原创 2019-03-19 16:29:27 · 171 阅读 · 0 评论 -
TCP的三次握手与四次挥手
三次握手与四次挥手TCP三次握手的流程:第一次握手:客户端将标志位SYN置为1,随机产生一个值seq=x,并将数据包发送给服务端,客户端进入SYN_SENT状态,等待服务器端确认第二次握手:服务器端收到数据包后由标志位SYN=1知道客户端请求建立连接,服务器端将标志位SYN和ACK都置为1,ack=x+1,随机产生一个值seq=y,并将该数据包发送给客户端以确认连接请求,服务器端进...原创 2019-02-26 17:32:04 · 254 阅读 · 0 评论 -
UDP与TCP
一、TCP/IP的结构体系从上往下依次是:应用层、传输层、网际层、网络接口层应用层:为网络中的各种网络应用提供服务,在这一层的协议主要有FTP(文件传输协议,端口号为21,用来传输文件)、SMTP(简单邮件传输协议,端口号为25,用来发送邮件)、HTTP(超文本传输协议,端口号为80)、Telent...传输层:在应用程序的端到端的连接和可靠传输,在这一层的协议主要有TCP、UDP...原创 2019-02-26 17:13:16 · 258 阅读 · 0 评论 -
NIO模型(一)
NIO:同步非阻塞IO,它是基于IO复用实现的,在JDK1.4后提供。在NIO中有以下几个核心的组成部分:缓存区(Buffer)、通道(Channel)、选择器(Selector)。一、缓冲区(Buffer) 缓冲区是包在一个对象内的基本数据数组。所有的缓冲区都具有四个属性来提供关于其包含的数据元素的信息。分别是:容量、上界、位置和标记。在NIO中,所有的缓冲区类型均继承于抽象...原创 2019-03-02 14:59:09 · 219 阅读 · 0 评论 -
BIO+多线程实现BIO模型
BIO+多线程实现BIO模型服务端public class BIOServer{ //默认的端口号 private static int DEFAULT_PORT = 12345; //单例的ServerSocket private static ServerSocket server; //根据传入参数设置监听端口,如果没有参数调用以下方法并使用...原创 2019-03-01 17:24:58 · 1020 阅读 · 0 评论 -
Java中的IO模型
一、同步、异步、阻塞与非阻塞 从内核角度看I/O操作分为两步:用户层API调用;内核层完成系统调用(发起I/O请求)。所以同步、异步针对的是用户的API的调用;阻塞、非阻塞针对的是IO请求。 同步指的是函数完成之前会一直等待;阻塞指的是系统调用的时候进程会被设置为sleep状态,直到等待的数据发生 同步与异步: 实际上同步...翻译 2019-03-01 16:16:27 · 662 阅读 · 0 评论 -
IDEA常用快捷键说明
IntelliJ Idea 常用快捷键列表Ctrl+Shift + Enter,语句完成“!”,否定完成,输入表达式时按 “!”键Ctrl+E,最近的文件Ctrl+Shift+E,最近更改的文件Shift+Click,可以关闭文件Ctrl+[ OR ],可以跑到大括号的开头与结尾Ctrl+F12,可以显示当前文件的结构Ctrl+F7,可以查询当前元素在当前文件中的引用,然后按 F...转载 2019-01-18 21:14:29 · 182 阅读 · 0 评论 -
volatile关键字
volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java的内存模型有关的,因此在讲述volatile关键...转载 2019-01-16 10:55:04 · 164 阅读 · 0 评论 -
多线程基础
一、什么叫做线程与进程进程:进程是操作系统进行资源分配的最小单位。例如:IO资源、内存资源线程:线程是操作系统进行资源调度的单位。线程存在于进程中,一个进程可以对应多个线程;进程与线程之间相互隔离;一个进程的崩溃不会影响其他进程的崩溃,但是一个线程的崩溃可能引起其他线程的崩溃,因此,进程的健壮性要比线程好内存资源占比:创建进程意味着开辟内存空间、同一个进程下的线程共享部分空间,开辟...原创 2019-01-16 09:49:46 · 186 阅读 · 0 评论 -
成员变量和静态变量
成员分两种: 1、成员变量。(数据共享时静态化) 该成员变量的数据是否是所有对象都一样: 如果是,那么该变量需要被静态修饰,因为是共享的数据。 如果不是,那么就说这是对象的特有数据,要存储到对象中。 2、成员函数。(方法中没有调用特有数据时就定义成静态) 如果判断成员函数是否需要被静态修饰呢? 只要参考...翻译 2018-10-08 20:22:58 · 608 阅读 · 0 评论 -
给出一组数组,将奇数放在前面,偶数放在后面;二分查找;输出100到200间的素数;用递归去实现1+2+...+100;斐波那契数列java
1、给出一组数组,将奇数放在前面,偶数放在后面public class Exerse1{ public static int[] toChang(int[] arr){ int left=0; int temp=0; int right=arr.length-1; while(left<right){ ...原创 2018-08-26 20:01:04 · 627 阅读 · 0 评论 -
求次幂 2^10
求次幂2^10法一(循环)public class Exerse1{public static int power(int val,int n){ int a=1; for(int i=0;i<=n;i++){ a=val*a; } return a;}public static void main(String[] args){...原创 2018-08-03 09:46:20 · 542 阅读 · 0 评论 -
斐波那契数列
斐波那契数列 1 1 2 3 5 8 13 21(法一:循环)public class Exerse1{ public static int[] fiBoNacci(int[] arr){ for(int i=2;i<arr.length;i++){ arr[i]=arr[i-1]+arr[i-2]; } re...原创 2018-08-03 09:44:58 · 173 阅读 · 0 评论 -
用递归去实现1+2+...+100 java
用递归去实现1+2+...+100public class Exerse1{ public static int sum(int n){//n是规模 if(n==0) return 0; if(n==1) return 1;//1是最底层,底层返回上一层 else{ int n...原创 2018-08-03 09:43:34 · 1318 阅读 · 0 评论 -
打印一个倒三角 java
11 1 1 2 11 3 2 11 4 3 2 11 5 4 3 2 1public class Exerse3{public static void main(String[] args){ int[][] arr=new int[6][6]; for(int ...原创 2018-08-03 09:42:11 · 513 阅读 · 0 评论 -
打印一个菱形 java
public class Exerse3{public static void main(String[] args){ int n=9; //上半部分(5行) char[][] arr=new char[n][n]; for(int i=0;i<(n+1)/2;i++){ for(int j=0;j<n/2-i;j++){ ...原创 2018-08-03 09:38:07 · 183 阅读 · 0 评论 -
在数组空格插入字符 java
在空格处插入两个#号方法1public class Exerse1{ public static char[] toInsert(char[] arr) { int count=0; int len=arr.length; for(int i=0;i<len;i++){//统计空格数 if(arr[i]==' '){ ...原创 2018-08-03 09:36:49 · 795 阅读 · 0 评论 -
二分查找java
public class Exerse1{ public static boolean binarySearch(int[] arr,int a){ int first=0; int end=arr.length-1; int mid1; while(first<=end){ mid1=(firs...原创 2018-08-03 09:32:12 · 584 阅读 · 0 评论 -
求阶乘之和
public class Exerse1{public static void main(String[] args){ int i=1;int num=0;do{ int j=1; int jc=1; while(j<=i){ jc*=j; j++; } num+=jc;i++;}whi...原创 2018-08-04 16:32:49 · 361 阅读 · 0 评论 -
三角形
* *** ***** ****************public class Exerse1{ public static void main(String[] args){ for(int i=1;i<=5;i++){ for(int j=i;j<5;j++){ System...原创 2018-08-03 17:06:02 · 266 阅读 · 0 评论 -
打印三角
// *// **// ***// ****// *****public class Exerse1{ public static void main(String[] args){ for(int i=1;i<=5;i++){ for(int j=5;j>0;j--){ i...原创 2018-08-03 16:52:28 · 174 阅读 · 0 评论 -
循环报数游戏,有n个人,每个人编号从1开始,因此得到编号到n。从1到3报数,报3的退出游戏,得到最后获胜人的编号;移除数组中重复的数据java
1、循环报数游戏,有n个人,每个人编号从1开始,因此得到编号到n。从1到3报数,报3的退出游戏,得到最后获胜人的编号public class Exerse1{ public static int circleDelNum(int[] arr,int n){ int size=arr.length;//保存当前的有效数字个数 int count=0;//报...原创 2018-08-27 15:09:23 · 1590 阅读 · 0 评论 -
给定一个数字字符串,将字符串中的数字转化为整型;数组中的有效个数(递归) java
1、给定一个数字字符串,将字符串中的数字转化为整型public class Exerse1{ public static int stringToInt(String str){ char[] arr=str.toCharArray();//将字符串转化为数组 int i=0; for(;i<arr.length;i++){ ...原创 2018-08-28 09:08:49 · 1708 阅读 · 0 评论 -
有关Object类的方法
在java中,如果不用关键字extends显式地指出类的父类,那么父类就是Object类。所有的类都有一个公共的父类Object。Object类是java中唯一一个没有父类的类,是java最顶层的父类。(1)equals()方法 Object类提供的equals()方法默认是比较地址的,并不能对内容进行比较,所以自定义的类如果要比较内容需要覆盖Object类的equals...翻译 2018-09-12 17:35:04 · 141 阅读 · 0 评论 -
直接插入排序算法(从后往前找到合适的位置后插入)
基本思想:每一步将一个待排序的记录,按其顺序码大小插入到前面已经排序的子序列的合适位置(从后向前找到合适的位置后),直到全部插入顺序完为止。分析:34 4 56 17 90 65以第一个数34为基准(i是下标)第一轮i=1:34和4比较,4比34小,将34往后移,4(称作操作数)存在另一个变量temp中34 34 56 17 90 654 34 56...翻译 2018-09-03 20:20:14 · 9723 阅读 · 0 评论 -
选择排序算法
每一趟从待排序的数据元素中选出最小(或最大的)一个元素,顺序放在已排好序的数列的最后,直到全部待排序的数据元素排完,选择排序是最不稳定的排序算法。分析:34,4,56,17,90,65每次置换一个位置 34和4比较,4小,4再和后面的数比较,4最小放在最前面,都比完之后再4,34,56,17,90,65 第一轮 5次再设置34是最小的4,17,56,34,90,65 ...翻译 2018-09-03 20:18:47 · 146 阅读 · 0 评论 -
顺时针打印矩阵;定义一个二维数组,输入一个数字num,在该数组中查找是否包含这个数字num,数组要求从上到下递增有序,从左向右递增有序)
1、顺时针打印矩阵public class Exerse3{public static void printMatrixIncircle(int[][] nArr,int rows,int columns,int nStart){ // nEndX是最右一列列号 int nEndX = columns - 1 - nStart; ...翻译 2018-09-03 11:04:53 · 537 阅读 · 0 评论