自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(76)
  • 收藏
  • 关注

原创 Explain详解与索引优化实践

一、准备工作建立三张表,并插入数据。DROP TABLE IF EXISTS `actor`;CREATE TABLE `actor` ( `id` int(11) NOT NULL, `name` varchar(45) DEFAULT NULL, `update_time` datetime DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;INSERT INTO `actor` (`

2020-07-11 20:36:53 307

原创 深入理解MySQL索引底层数据结构

一、索引是什么索引是帮助MySQL高效获取数据的排好序的数据结构。二、索引结构2.1 HASH索引HASH索引是基于HASH表实现,只有精准匹配索引所有列的查询才有效。对于每一行数据,存储引擎都会对所有的索引列计算一个hash code,hash code 是一个比较小的值,并且不同键值的行计算出来的哈希码也不一样。哈希索引将所有的哈希码存储在索引中,同时在哈希表中保存指向每个数据行的指针。对于hash相同的,采用链表的方式解决冲突。类似于hashmap。因为索引的结构是十分紧凑的,所以has

2020-07-10 21:10:05 240

转载 MySQL存储引擎MyISAM和InnoDB的区别

一、区别InnoDB支持事务,MyISAM不支持。对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务。InnoDB支持外键,而MyISAM不支持。对一个包含外键的InnoDB表转为MYISAM会失败。InnoDB是聚集索引,数据文件是和索引绑在一起的,必须要有主键,通过主键索引效率很高。但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据。因此主键不应该过大,因为主键太大,其他索引也都会很大。

2020-07-07 19:06:48 219

原创 查找算法简述及基本运用

在Java学习过程中,我们经常会运用到四种查询算法:顺序查找二分/折半查找插值查找斐波那契查找现在笔者将会对这四种算法进行简单叙述。一、线性查找算法基本思路:逐一比对,发现有相同值,就返回下标。适用范围:有序数组+无序数组代码示例:public class SeqSearch { public static void main(String[] args) { int arr[] = {1,2,5,6,8,4,3}; int index =

2020-06-27 15:59:51 935

原创 Servlet概述及其基本运用

Servlet: server applet概念:运行在服务器端的小程序Servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则。将来我们自定义一个类,实现Servlet接口,复写方法。快速入门:创建JavaEE项目定义一个类,实现Servlet接口public class ServletDemo1 implements Servlet实现接口中的抽象方法配置Servlet在web.xml中配置: <servl

2020-06-14 22:30:56 142

原创 线程原子操作

什么是原子操作?如何实现原子操作?syn基于阻塞的锁的机制,1.被阻塞的锁的优先级很高。2.拿到所得线程一直不释放锁锁就GG.3.大量的竞争,消耗cpu,同时可能带来死锁或者其他的线程安全问题。CAS的原理:CAS(Compare And Swap),指令级别保证这是一个原子操作三个运算符:一个内存地址V,一个期望值A,一个新值B.基本思路:如果地址V上的值和期望的值A相等,就给地址V赋...

2020-04-21 21:39:01 211

原创 Fork/Join框架简介与基本运用

ForkJoin框架是Java 7 提供的一个分治思想的基本框架,即把一个大任务分割成若干个小任务,最终汇总每一个任务结果后得到大任务结果。通过查阅API发现,ForkJoinPool继承AbstractExecutorService,实现了Executor,ExecutorService。ForkJoinPool用来实现工作窃取 算法。一、ForkJoinTask及其子类通过查看API发现,...

2020-04-20 22:24:59 212

原创 Java面试题每日一练(4.16)

1.采用递归方式对顺序表进行快速排序。下列关于递归次数的叙述中,正确的是()。递归次数与初始数据的排列次序无关每次划分后,先处理较长的分区可以减少递归次数每次划分后,先处理较短的分区可以减少递归次数递归次数与每次划分后得到的分区的处理顺序无关解析:快速排序的递归次数与元素的初始排列有关。如果每一次划分后分区比较平衡,则递归次数少;如果划分后分区不平衡,则递归次数多。但快速排序的递归次...

2020-04-16 19:55:14 3095

原创 递归的基本运用与实践

一、递归的概念简单的说:递归就是方法自己调用自己,每次调用时传入不同的变量。递归有利于编程者解决复杂的问题,同时可以让代码变得简洁。二、递归调用机制入门案例:累加代码实现: public static int accumulation(int n){ return n > 1 ? n+accumulation(n-1):1; }阶乘代码实现:publ...

2020-04-15 20:28:47 249 1

原创 单链表面试实例运用

在之前的博客中已经通过编码实现了链表的基本结构,此处将会以面试真题进行进一步运用。面试题1查找单链表中的倒数第k个结点:思路:获取链表第H.getLength() - k + 1个节点(H为链表)判断链表是否为空判断数值是否越界通过while得到第H.getLength() - k + 1个节点代码实现:public static Object getNumber(LinkLi...

2020-04-15 19:52:16 93

原创 Java面试题 每日一练(4.14)

1.写出完成以下功能的gdb命令。gdb查看线程信息。btinfo threadset scheduler-locking offinfo break解析:backtrace bt 打印当前的函数调用栈的所有信息。info threads 显示当前可调试的所有线程,每个线程会有一个GDB为其分配的ID,后面操作线程的时候会用到这个ID。 前面有*的是当前调试的线程。set sc...

2020-04-14 23:11:13 464

原创 Java网络编程详解

第一章 网络编程入门1.1软件结构C/S结构 :全称为Client/Server结构,是指客户端和服务器结构。常见程序有QQ、迅雷等软件。B/S结构 :全称为Browser/Server结构,是指浏览器和服务器结构。常见浏览器有谷歌、火狐等。两种架构各有优势,但是无论哪种架构,都离不开网络的支持。网络编程,就是在一定的协议下,实现两台计算机的通信的程序。1.2 网络通信协议**...

2020-04-13 21:31:49 129

原创 Java面试题 每日一练(4.13)

1.指明接口所用接线器的形状和尺寸、引线数目和排列、固定和锁定装置等是物理层的_ 。机械特性电气特性功能特性规程特性解析:物理层的接口的特性 (1) 机械特性 指明接口所用的接线器的形状和尺寸、引线数目和排列、固定和锁定装置等等。 (2) 电气特性 指明在接口电缆的各条线上出现的电压的范围。 (3) 功能特性 指明某条线上出现的某一电平的电压表示何意。 (4)规程特性 指明对于不同功...

2020-04-13 18:34:13 465

原创 Java面试题 每日一练4.12

1./…/中可以嵌套//注释,也能嵌套/…/注释。正确错误解析:在Java中规定,多行注释可以嵌套单行注释,但是不能嵌套多行注释。 不太能理解原因的朋友不妨这样想,如果多行注释/A//B/完全可以将内部的A//B作为普通字符串来理解,没有所谓单行不单行之说,所以可以嵌套单行注释。 但是如果是嵌套多行注释呢可以看看/A/B/C/,到编译器遇到多行注释的时候会以’/A/B/’来作为匹配的字符...

2020-04-12 23:08:18 3633

原创 Java 面试题每日一练(4.11)

1.java用()机制实现了进程之间的同步执行监视器虚拟机多个CPU异步调用解析:同步的两种方式:同步块和同步方法,对于同步来说都是使用synchronized方法,每一个对象都有一个监视器,或者叫做锁。正确答案:A2.关于struts项目中的类与MVC模式的对应关系,说法错误的是Jsp文件实现视图View的功能ActionServlet这一个类是整个struts项目的...

2020-04-11 20:19:08 902

原创 Java面试题 每日一练(4.10)

1.下面哪一项不属于优化Hibernate所鼓励的?使用单向一对多关联,不使用双向一对多不用一对一,用多对一取代配置对象缓存,不使用集合缓存继承类使用显式多态解析:优化Hibernate所鼓励的7大措施:1.尽量使用many-to-one,避免使用单项one-to-many2.灵活使用单向one-to-many3.不用一对一,使用多对一代替一对一4.配置对象缓存,不使用集合...

2020-04-10 22:34:14 824

原创 并发编程之线程基础

一、基础概念CPU核心数和线程数的关系:核心数:线程数 = 1:1;对于英特尔发布的超线程技术–>1:21.物理cpu数:主板上实际插入的cpu数量,可以数不重复的 physical id 有几个(physical id)2.cpu核数:单块CPU上面能处理数据的芯片组的数量,如双核、四核等 (cpu cores)3.逻辑cpu数:一般情况下,逻辑cpu=物理CPU个数×每颗核数...

2020-04-10 21:29:34 132

原创 Java面试题 每日一练(4.9)

1.下列Java代码中的变量a、b、c分别在内存的____存储区存放。class` `A { ``private` `String a = “aa”; ``public` `boolean methodB() { ``String b = “bb”; ``final String c = “cc”; ``}}堆区、堆区、堆区堆区、栈区、堆区堆区、栈区、栈区...

2020-04-09 21:35:51 816

原创 JVM调优

JVM调优主要就是调整下面两个指标停顿时间:垃圾收集器做垃圾回收中断应用执行的时间。-XX:MaxGCPauseMillis吞吐量:垃圾收集的时间和总时间的占比:1/(1+n),吞吐量为1-1/(1+n), -XX:GCTimeRatio = nGC调优步骤打印GC日志-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDat...

2020-04-09 17:29:25 2336

原创 缓冲流、转换流、序列化流

第一章 缓冲流1.1 概述缓冲流,也叫高效流,是对4个基本的FileXxx 流的增强,所以也是4个流,按照数据类型分类:字节缓冲流:BufferedInputStream,BufferedOutputStream字符缓冲流:BufferedReader,BufferedWriter缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次...

2020-04-08 21:39:41 94

原创 Java面试题 每日一练(4.8)

1.对于子类的构造函数说明,下列叙述中错误的是( )。子类可以继承父类的构造函数。子类中调用父类构造函数不可以直接书写父类构造函数,而应该用super();。用new创建子类的对象时,若子类没有带参构造函数,将先执行父类的无参构造函数,然后再执行自己的构造函数。子类的构造函数中可以调用其他函数。解析:A.java继承中对构造函数是不继承的,只是显式或者隐式调用,所以A选项不对...

2020-04-08 21:22:11 1374

原创 GC详解

1.如何判断对象可以被回收对中几乎放着所有的对象实例,堆垃圾回收前的第一步就是要判断那些对象已经死亡(即不能在被任何途径使用的对象)。1.1引用计数法给对象中添加一个引用计数器,每当有一个地方引用它,计数器就加1;当引用失败,计数器就减1;任何时候计数器为0的对象就是不可能在被使用的。**这个方法实现简单、效率高,但是目前主流的虚拟机中并没有选择这个算法来管理内存,其最主要的原因使它很难解...

2020-04-08 16:32:25 587 1

翻译 字节流、字符流

第一章 IO概述1.1 什么是IO生活中,你肯定经历过这样的场景。当你编辑一个文本文件,忘记了ctrl+s ,可能文件就白白编辑了。当你电脑上插入一个U盘,可以把一个视频,拷贝到你的电脑硬盘里。那么数据都是在哪些设备上的呢?键盘、内存、硬盘、外接设备等等。我们把这种数据的传输,可以看做是一种数据的流动,按照流动的方向,以内存为基准,分为输入input 和输出output ,即流向内存是输入流...

2020-04-07 22:37:45 89

原创 Java面试题 每日一练(4.7)

1.关于Java的一些概念,下面哪些描述是正确的:( )所有的Java异常和错误的基类都是java.lang.Exception, 包括java.lang.RuntimeException通过try … catch … finally语句,finally中的语句部分无论发生什么异常都会得到执行java中所有的数据都是对象Java通过垃圾回收回收不再引用的变量,垃圾回收时对象的finall...

2020-04-07 21:45:14 3292

原创 稀疏数组简单介绍及其处理方法的实现

1.定义稀疏矩阵可以看做是普通数组的压缩,但是这里说的普通数组是值无效数据量远大于有效数据量的数组。如下图所示:2.稀疏数组的处理方法记录数组一共有几行几列,有多少个不同的值。把具有不同值得元素得行列及值记录在一个小规模的数组中,从而缩小程序得规模。3.应用实例3.1 二维数组转稀疏数组遍历原始的二维数组,得到有效数据的个数根据个数就可以创建稀疏数组将二维数组的有效数据存...

2020-04-07 19:01:42 890

原创 Lambda表达式

1 函数式编程思想概述面向对象过分强调“必须通过对象的形式来做事情”,而函数式思想则尽量忽略面向对象的复杂语法——强调做什么,而不是以什么形式做。面向对象的思想:​ 做一件事情,找一个能解决这个事情的对象,调用对象的方法,完成事情.函数式编程思想:​ 只要能获取到结果,谁去做的,怎么做的都不重要,重视的是结果,不重视过程2 冗余的Runnable代码传统写法当需要启动一个线程去完成...

2020-04-06 21:55:23 195

原创 线程池简介及基本运用

1 线程池思想概述我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题:如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务?在Java中可以通过线程池来达到这样的效果。今天我们...

2020-04-06 21:51:19 144

原创 线程等待唤醒机制

1.1 线程间通信**概念:**多个线程在处理同一个资源,但是处理的动作(线程的任务)却不相同。比如:线程A用来生成包子的,线程B用来吃包子的,包子可以理解为同一资源,线程A与线程B处理的动作,一个是生产,一个是消费,那么线程A与线程B之间就存在线程通信问题。为什么要处理线程间通信:多个线程并发执行时, 在默认情况下CPU是随机切换线程的,当我们需要多个线程来共同完成一件任务,并且我们希望...

2020-04-06 21:49:50 154

原创 Java面试题 每日一练(4.6)

一、下面哪个行为被打断不会导致InterruptedException:( )?Thread.joinThread.sleepObject.waitCyclicBarrier.awaitThread.suspend抛InterruptedException的代表方法有:java.lang.Object 类的 wait 方法​ java...

2020-04-06 21:39:53 1287

原创 线程安全、线程状态

第一章 线程安全及其实现方法1.1线程安全如果有多个线程在同时运行,而这些线程可能会同时运行这段代码。程序每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。以下将会以卖票作为示例:public class Thread_Safe_Demo implements Runnable { private static int ticket = ...

2020-04-05 23:09:54 120

原创 线程

第一章 多线程我们在之前,学习的程序在没有跳转语句的前提下,都是由上至下依次执行,那现在想要设计一个程序,边打游戏边听歌,怎么设计?要解决上述问题,咱们得使用多进程或者多线程来解决.1.1 并发与并行并发:指两个或多个事件在同一个时间段内发生。并行:指两个或多个事件在同一时刻发生(同时发生)。在操作系统中,安装了多个程序,并发指的是在一段时间内宏观上有多个程序同时运行,这在单 CP...

2020-04-04 23:40:43 91

原创 异常

第一章 异常1.1 异常概念异常,就是不正常的意思。在生活中:医生说,你的身体某个部位有异常,该部位和正常相比有点不同,该部位的功能将受影响.在程序中的意思就是:异常 :指的是程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。在Java等面向对象的编程语言中,异常本身是一个类,产生异常就是创建异常对象并抛出了一个异常对象。Java处理异常的方式是中断处理。异...

2020-04-03 20:25:34 82

原创 Map集合

第一章 Map集合1.1 概述Java提供了专门的集合类用来存放映射对象关系的对象,即java.util.Map接口。我们通过查看Map接口描述,发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同。Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储。Map中的集合,元素是成对存在的(理解为夫妻)。每个元素...

2020-04-02 17:59:31 81

原创 JVM基本结构

1.JVM 基本架构2.区域作用tips:*Jdk1.6及之前:有永久代,常量池1.6在方法区*Jdk1.7:有永久代,但已经逐步“去永久代”,常量池1.7在堆*Jdk1.8及之后:无永久代,常量池1.8在元空间3.堆内存分代基本结构新生成的对象首先放到年轻代Eden区,当Eden空间满了,触发Minor GC,存活下来的对象移动到Survivor From区,Surviv...

2020-03-31 20:11:04 283 2

翻译 JavaScript 简介与基本运用

JavaScript:* 概念: 一门客户端脚本语言 * 运行在客户端浏览器中的。每一个浏览器都有JavaScript的解析引擎 * 脚本语言:不需要编译,直接就可以被浏览器解析执行了* 功能: * 可以来增强用户和html页面的交互过程,可以来控制html元素,让页面有一些动态的效果,增强用户的体验。* JavaScript发展史: 1. 1992年,Nombase公司,开发出...

2020-03-30 22:53:12 97

原创 CSS:页面美化和布局控制

概念: Cascading Style Sheets 层叠样式表* 层叠:多个样式可以作用在同一个html的元素上,同时生效好处:功能强大将内容展示和样式控制分离降低耦合度。解耦让分工协作更容易提高开发效率CSS的使用:CSS与html结合方式内联样式在标签内使用style属性指定css代码如:hello css内部样式在head标签内,...

2020-03-29 19:06:10 170

原创 HTML概述

web概念概述JavaWeb:* 使用Java语言开发基于互联网的项目软件架构:1. C/S: Client/Server 客户端/服务器端* 在用户本地有一个客户端程序,在远程有一个服务器端程序* 如:QQ,迅雷…* 优点:1. 用户体验好* 缺点:1. 开发、安装,部署,维护 麻烦2. B/S: Browser/Server 浏览器/服务器端* 只需要一个浏览器...

2020-03-28 19:34:07 92

翻译 JDBC简单介绍及其基本运用

JDBC:1. 概念:Java DataBase Connectivity Java 数据库连接, Java语言操作数据库 * JDBC本质:其实是官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口。各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。2. 快速入门: * 步骤: 1. 导入...

2020-03-27 19:25:21 177

原创 使用 Spring Cloud 搭建微服务 Demo

一、为什么要引入微服务首先我们先讲一下应用模式的演变过程:1. 单体应用在没有提出微服务的概念的时候,一个软件应用,往往会将应用所有功能都开发和打包在一起,那时候的一个B/S应用架构一般为:但是,当用户访问量变大导致一台服务器的时候,便添加加负载均衡,架构如下:后面发现把静态文件独立出来,通过CDN等手段进行加速,可以提升应用的整体相应,单体应用的架构就变成:对此可发现单体应用的...

2020-03-27 09:43:14 1024

翻译 MySQL多表和事务

基本内容1. 多表查询2. 事务3. DCL多表查询:* 查询语法: select 列名列表 from 表名列表 where....* 准备sql # 创建部门表 CREATE TABLE dept( id INT PRIMARY KEY AUTO_INCREMENT, NAME VARCHAR(20) ); INSERT INTO dept (NA...

2020-03-26 20:08:37 122

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除