自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis面试题

发现也没有,于是本次查询失败。插入和查询非常快,计算数据的hash值,再由hash值映射到数据的下标,基于数组的特性他的插入和查询是非常快的,只需要根据响应的数据就可以了。是指一个key非常热点,在不停的扛着大并发,大并发集中对这一个点进行访问,当这个key在失效的瞬间,持续的大并发就穿破缓存,直接请求数据库,就像在一个屏障上凿开了一个洞。(一个计划在Redis保存的数据,业务查询,查询到的数据Redis中没有,但是数据库中有,这种情况要从数据库中查询后再保存到Redis,这就是缓存击穿)

2023-02-04 09:49:12 475 1

原创 数据库查询方式

t_stu_subject_score表,该表有两个字段stu_id,subject_id分别记录了student表的id和subject表的id。学生表中的学生为了与班级表的记录产生对应关系,因此在学生表中以class_id字段记录了其所在的班级的主键字段的值。该表字段:max_sal,min_sal,avg_sal,sum_sal,subject_id。缺少连接条件时会产生笛卡尔积,会将A表每条记录与B表每条记录都建立一次连接,产生巨量数据,这通常是一个无意义的结果集,要尽量避免。

2022-11-08 09:06:47 1263

原创 数据库数据类型与DQL

INSERT INTO person (name) values('张三'):实际该记录中name的值:'张三 '(后面有8个空格)表中每条记录该字段在磁盘上占据的空间是固定的,如果实际保存的字符不足指定的长度时,会在后面补充若干个空格来达到长度。WHERE job'大队长' AND job'中队长' AND job'小队长';WHERE job='大队长' OR job='中队长' OR job='小队长';WHERE age=7 AND (job='大队长' OR job='中队长');

2022-11-05 11:17:24 466

原创 数据库DML

在INSERT语句中字段名可以忽略,若忽略则为全列插入,此时VALUES后指定的值的顺序,类型,个数必须与表中字段一致。INSERT INTO 表名 [(字段1,字段2,...)] VALUES (字段1的值,字段2的值,...)当完全不指定字段时,则为全列插入,此时VALUES中指定的值顺序,类型,个数必须与表完全一致。INSERT时指定的字段顺序可以不与表中一致,但是VALUES中的值必须与指定的字段一致。=,,=,(不等于,!指定的值要与前面指定的类的顺序,类型,个数完全一致。

2022-11-03 08:29:00 229

原创 数据库基础和DDL

存储数据的仓库就称为数据库 在我们的项目中我们使用users目录保存若干的obj文件,每个文件保存一个用户信息, 这个users就可以称为是一个数据库。SQL有执行标准:SQL92 SQL语言是操作DBMS的语言,所有的DBMS都支持标准的SQL语言以及自身提供的可扩展SQL。想要保存数据,那么数据是保存在表中的,而表是归属于某一个数据库的.因此我们在创建 表之前必须要先使用某一个已创建的数据库.DML:数据操作语言,用来操作表中的数据(包含的操作:对数据的增删改)

2022-11-01 19:59:59 205

原创 Web前端基础

外部: 在单独的css样式文件中写样式代码,在html页面中通过link标签引入,可以实现多页面复用, 而且可以将html代码和css样式代码分离开 便于维护。格式:body>div>div>p{代码} 匹配的是body里面的div里面的div里面的所有p子元素(不包含后代)- 内部: 在head标签里面添加style标签, 标签体内写样式代码, 可以复用,但不能多页面复用。9. 伪类选择器: 选择的是元素的状态,包括:未访问,访问过,悬停,点击。

2022-10-31 18:58:36 71

原创 List集合

侵入性:当我们调用某个API功能时,其要求我们为其修改其他额外的代码,这个现象就是侵入性.侵入性越强的API越不利于程序的后期可维护性.应当尽量避免.实际开发中,我们并不会让我们自己定义的类(如果该类作为集合元素使用)去实现Comparable接口,因为这对我们的程序有。E set(int index, E e):将给定元素设置到index指定的位置,返回值为该位置被替换的元素。java.util.LinkedList:内部使用链表实现,增删性能更好,首尾增删性能最佳。...

2022-08-12 19:18:12 3630

原创 Java集合框架

boolean containsAll(Collection c):判断当前集合是否包含给定集合中的所有元素。boolean removeAll(Collection c):删除当前集合中与给定集合的公有元素。这里可重复指的是集合中的元素是否可以重复,而判定重复元素的标准是依靠元素自身equals比较。void remove():从集合中删除迭代器当前位置的元素(通过next获取的元素)迭代器用于遍历集合,不同的集合都提供了一个用于遍历自身元素的迭代器实现类。将给定集合所有元素添加到当前集合中。...

2022-08-09 18:37:13 380

原创 线程API

当一个线程调用sleep方法处于睡眠阻塞的过程中,该线程的interrupt()方法被调用时,sleep方法会抛出该异常从而打断睡眠阻塞.主要区别体现在当java进程中所有的普通线程都结束时进程会结束,在结束前会杀死所有还在运行的守护线程。与普通线程的区别:守护线程是通过普通线程调用setDaemon(true)设置而来的。sleep方法处理异常:InterruptedException.synchronized的两种用法。...

2022-08-08 18:36:20 170

原创 JavaSE阶段常见面试题(二)

finally是异常处理机制的最后一块,它只能跟在try后活着最后一个catch后,finally可以保证只要程序执行到try语句块,无论try代码是否出现异常,finally都必定执行。finalizes是一个方法,定义在Object中,该方法为一个对象生命周期中的最后一个方法,会被GC调用,当一个对象即将被GC回收前会调用该方法。在Object类中定义,默认比较==(即比较地址),一般没有参考意义,常常被重写用来比较具体的属性值是否相同。对于引用数据类型而言,传递的是具体的地址值的副本。...

2022-08-06 14:08:06 87

原创 Java网络编程

Socket(套接字)封装了TCP协议的通讯细节,是的我们使用它可以与服务端建立网络链接,并通过 它获取两个流(一个输入一个输出),然后使用这两个流的读写操作完成与服务端的数据交互。线程start后会纳入到线程调度器中统一管理,线程只能被动的被分配时间片并发运行,而无法主动索取时间片.线程调度器尽可能均匀的将时间片分配给每个线程.定义一个线程类,重写run方法,在其中定义线程要执行的任务(希望和其他线程并发执行的任务)。尽可能均匀的分配给每个线程,拿到时间片的线程被CPU执行这段时间。的现象成为并发运行!.

2022-08-05 18:52:59 78

原创 Java异常机制

当一个方法中使用throw抛出一个非RuntimeException的异常时,就要在该方法上使用throws声明这个异常的抛出。上述语法中可在try的"()"中定义的并初始化的对象必须实现了java.io.AutoCloseable接口,否则编译不通过.旨在IO操作中可以更简洁的使用异常处理机制完成最后的close操作。当我们调用一个含有throws声明异常抛出的方法时,编译器要求我们必须处理这个异常,否则编译不通过。catch用来捕获并处理对应的异常,可以定义多个,也可以合并多个异常在一个catch中。.

2022-08-03 18:26:56 157

原创 缓存字符流

如果实例化PW时第一个参数传入的是一个流,则此时可以再传入一个boolean型的参数,此值为true时就打开了自动行刷新功能。java.io.PrintWriter具有自动行刷新的缓冲字符输出流,实际开发中更常用.它内部总是会自动连接BufferedWriter作为块写加速使用.缓冲字符流内部也有一个缓冲区,读写文本数据以块读写形式加快效率.并且缓冲流有一个特别的功能:可以按行读写文本数据.是一个高级的字符流,特点是块读文本数据,并且可以按行读取字符串。...

2022-08-03 18:19:09 284

原创 IO流基础方法

缓冲流的读取方法功能与InputStream上一致,需要知道的时read方法调用后缓冲流会一次性读取缓冲区大小的字节数据并存入缓冲区,然后再根据我们调用read方法读取的字节数进行返回,直到缓冲区所有数据都已经通过read方法返回后会再次读取一组数据进缓冲区。intread(byte[]data)块读取,最多读取data数组总长度的数据并从数组第一个位置开始存入到数组中,返回值表示实际读取到的字节量,如果返回值为-1表示本次没有读取到任何数据,是流的末尾。如果返回值为整数-1则表示读取到了流的末尾。....

2022-08-01 19:41:20 110

原创 File类

File类的每一个实例可以表示硬盘(文件系统)中的一个文件或目录(实际上表示的是一个抽象路径)重载的listFiles方法File[]listFiles(FileFilter)mkDirs()创建当前File表示的目录,同时将所有不存在的父目录一同创建。delete()方法可以删除一个目录,但是只能删除空目录。createNewFile()方法,可以创建一个新文件。delete()方法可以将File表示的文件删除。mkDir()创建当前File表示的目录。但是File不能访问文件数据....

2022-07-29 18:39:44 116

原创 Java IO流基础

java将IO比喻为"流",即stream.就像生活中的"电流","水流"一样,它是以同一个方向顺序移动的过程.只不过这里流动的是字节(2进制数据).所以在IO中有输入流和输出流之分,我们理解他们是连接程序与另一端的"管道",用于获取或发送数据到另一端.如果返回值为整数-1则表示读取到了文件末尾。intread(byte[]data)块读取,最多读取data数组总长度的数据并从数组第一个位置开始存入到数组中,返回值表示实际读取到的字节量,如果返回值为-1表示本次没有读取到任何数据,是流的末尾。...

2022-07-28 17:55:28 191

原创 Java包装类

调用Object类的toString()时默认返回类的全称@地址,没有参考意义,所以常常重写toString()来返回具体属性的值。调用Object类的equals()时默认比较的还是==(即比较地址),没有参考意义,所以常常重写equals()来比较具体的属性值。注意String、StringBuilder等都重写toString()来返回字符串内容了。Object对象/东西。...

2022-07-27 18:02:15 477

原创 快速排序(Quick sort)

可以让最右侧的6作为枢纽元,左侧比枢纽元小的元素不进行操作,比枢纽元大则标记位置,如果被标记的元素右侧(升序排列)有比枢纽元小的元素,则进行换位(直接和被标记的元素区内的第一个元素换位),保证比枢纽元小的元素都在数组左端,除枢纽元全部换位完成后,枢纽元插入到两种元素分界点位置。y>x情况下,y对应的元素大于枢纽元则y自减,y对应的元素小于枢纽元则结束循环。x...

2022-07-26 17:26:26 199

原创 正则表达式

例如[abc]{3,}可以匹配aaa或aaaaa....或abcbabbcbabcba....例如[abc]+可以匹配b或aaaaaaaaaa...或abcabcbabcbabcba....例如[abc]*可以匹配b或aaaaaaaaaa...或abcabcba....或什么都不写。例如[abc]{3}可以匹配aaa或bbb或aab或abc或bbc。例如[abc]{3,5}可以匹配aaa或abcab或者abcc。例如[abc]?...

2022-07-25 18:39:10 1800

原创 归并排序(Merge sort)

将取走了数据的数组的下一个元素与未取走数据的之前那一位进行对比,再将较小数字填充到新数组中。将两个未排序的“小”数组的所有元素有序的填充到一个新数组中,在排序同时完成“合并”。仅当内部调用a()方法的内部调用a()方法,才会继续运行外部a()方法剩余的代码。将问题分成一些小问题,然后递归求解,然后再将分的阶段得到的问题合并在一起。中间点上级数组第一个下标+(上级数组最大下标-上级数组第一个下标)/2。先将两个数组中的第一个元素进行对比,将较小数字填充到新数组中(升序)表现在方法的内部,调用当前方法自身。..

2022-07-23 11:27:21 142

原创 String,StringBuilder

字符串内容若做查看操作,那建议用String------------------------------实际应用中一般都是查看。字符串内容若需要做频繁修改操作,那建议用StringBuilder。

2022-07-22 18:34:04 199

原创 Java多态

强转时若不满足如上条件,则发生ClassCastException类型转换异常。建议在强转之前先通过instanceof来判断引用指向的对象是否是该类型。何时需要强转向上造型后,若想访问的东西在超类中没有,则需要强转。说明instanceof会返回true或false的结果。如果满足强转成功的条件则返回true,否则返回false。内存管理由JVM管理。...

2022-07-21 18:30:27 75

原创 Java接口

如何调错---------------------帮助我们找到问题位置所在。类和类------------------------继承。类和接口---------------------实现。接口中成员的默认访问权限------public的。接口和接口------------------继承。类中成员的默认访问权限---------默认的。重写接口中的抽象方法时,必须加public权限。能够造型成为的类型超类+所实现的接口。...

2022-07-20 18:36:28 44

原创 Java内部类

将方法调用的代码都注释掉,然后一个一个放开,放开哪个出错,问题就出在哪个上。3)程序的运行结果与你所预期的结果不同------------必须调错。1.1)若为派生类所特有的行为,则将方法设计在特定的类中。1.2)若为所有派生类所共有的行为,则将方法设计在超类中。2)异常--------运行时发生,找到at后的链接点击。2.1)若为定时(自动)发生的,则在定时器中调用。匿名内部类----------大大简化代码的操作。类中套类,外面的称为外部类,里面的称为内部类。因为该变量在此处会默认为final的。...

2022-07-19 18:26:37 134

原创 常量与抽象类

设计为普通方法,意味着派生类可以重写也可以不重写,但设计为抽象方法,则可以强制派生类必须重写--------达到强制派生类重写,统一的目的。-封装共有的属性和行为-------------------代码复用。-为所有派生类提供统一的类型----------向上造型(代码复用)-将派生类所共有的属性和行为,抽到超类中-------------抽共性。-重写抽象方法---------------变不完整为完整。-也声明为抽象类------------一般不这么用。-包含抽象方法的类必须是抽象类。...

2022-07-18 17:29:11 120

原创 JavaSE阶段常见面试题(一)

是属于对象的,在创建对象时存储在内存堆中,创建多少个对象,则实例变量就会在内存中存在多少份,需要通过引用来访问。是属于类的,在类被加载时会存储在方法区中,无论创建了多少个对象,静态变量在内存中都只要一份,常常通过类名来访问。//扩展赋值运算符自带强转功能相当于s=(short)(s+10)long长整型用于存储整数占用八个字节范围-2^63——2^63-1。int整形用于存储整数占用四个字节范围-2^31——2^31-1。意义用于在子类中修改父类中所定义的方法(选答)...

2022-07-15 20:12:06 246

原创 希尔排序(Shell sort)

通过相距一定间隔的元素来工作,各轮对比所用的距离随着算法的进行而减小,走到只比较相邻元素的最后一轮排序位置,所以,它也叫作缩减增量排序。默认的增量为length/2,例中数长度为8,则默认增量为4,那么第一个元素将与第五(1+4)个元素对比,其余元素以此类推。这种情况在排序时,会先暂时跳过增量值对应数量的元素,然后向右对比,并每次对比当前下标-增量值对应的下标的元素。最后一轮,增量为1,即比较相邻的元素,全部参与排列(1/2=0,所以为最后一轮)以升序为例,如果左侧的同一组数据较大,则换位。......

2022-07-14 19:36:19 269

原创 static,final和访问控制修饰符

访问权限常规设置模式: 成员变量分两种:访问控制修饰符:------------------保护数据的安全 final:最终的、不能改变的-----------------单独应用几率低 static:静态的

2022-07-14 18:30:20 108

原创 造型与重写

向上造型:--------------------------------------------代码复用 方法的重写(override/overriding):重新写、覆盖 重写与重载的区别: 继承要符合is(是)的关系超类的意义:

2022-07-13 18:40:22 64

原创 插入排序(Insertion sort)

原理假定第一个数字最小(升序排列),从第二个数字开始(每一次选定的数字范围向后递增,第一次只比较前两个数字,第二次前三个…以此类推),依次将数字插入到它应该放置的位置。(暂未选定的其余数字不参与排序,每次换位的数字为最后一位,第一次为第二个,第二次第三个…以此类推)注意:以此为例,编码时可以先将1存在临时变量中,并将4 5 9向右移位后再将1放入指定位置,不用每次换位都存一次1,可以略微提高代码执行速度当进行到最后一步时 例如数组内容为(1 2 4 3 5 —— 1 2 3 4 5)时,由于3 > 2,所以

2022-07-12 20:01:32 231

原创 子类父类继承

继承作用:代码复用 super:指代当前对象的超类对象super的用法:

2022-07-12 18:51:45 233

原创 Java面向对象

什么是类?什么是对象? 类:类型/类别,代表一类个体 如何创建类?如何创建对象?如何访问成员?package ooday01;//学生类public class Student { //成员变量----对象的属性 String name; int age; String address; //方法-----对象的行为/功能 void study(){ System.out.println(name+"在学习..."); } void sayHi(

2022-07-11 17:37:28 194

原创 初识计算机内存

计算机基本组成运算器负责算数与逻辑运算 目前集成在cpu中控制器负责控制系统的各部件,目前集成在cpu中存储器分为主存(内部存储器)与辅存(外部存储器)输入设备将外部信息/指令传达给系统,例如:鼠标,键盘输出设备将系统处理结果传达给用户,例如:显示器,音响关于内存(一般指内存条)内存条是一种RAM,具有以下特点:可读,可写——另有一种ROM,可读,不可写一旦断电,数据将全部丢失正在执行的程序和数据必须加载到内存中CPU只会处理内存中的数据——如果需要处理的数据在硬盘上,必须先加载到内存,才可以被CPU处理—

2022-07-10 17:51:00 102

原创 选择排序(Selection sort)

将未排序的第一个数字和剩余每个数字进行对比,如果与预期顺序(升序)不符,则换位第一轮完成后,最小的数字到了第一位,所以第二轮只需要从第二位开始比较,第三轮从第三位…以此类推。每一轮都较上轮执行次数-1(递减)。当仅剩一个数字时,这个数字便是最大的数字循环轮次 = 数组长度 - 1每轮执行次数 = 数组长度 - 当前轮次 实现步骤.........

2022-07-09 17:09:17 105

原创 冒泡排序(Bubble sort)

原理反复对比相邻的两个元素,如果与预期的顺序(升序或降序)不符,则进行换位操作反复从头开始执行因为每一轮确定一个数字,所以后续不需要再对该数字进行比较,每一轮都较上轮执行次数-1(递减)每轮执行次数 = 数组长度 - 当前轮次循环时使用0作为初始条件则 每轮执行次数 = 数组长度 - 当前轮次 - 1每一轮都能保证将最大的数移动到右侧,即第一轮可以保证最大的数字到最右侧,第二轮可以保证第二大的数在倒数第二位,……每一轮循环都可以保证一个数字移动到了正确的位置,在多次循环执行到仅剩一个数时,这个数即为最小数,

2022-07-09 16:03:59 106

原创 排序算法概述

被排序数据是一组相同类型,相同定位的数据,数组表述的就是这样的数据常用算法冒泡排序(Bubble sort)选择排序(Selection sort)插入排序(Insertion sort)希尔排序(Shell sort)归并排序(Merge sort)快速排序(Quick sort)算法是为求解一个问题,需要遵循的,被清楚指定的简单指令的集合排序核心是“对比大小”并将顺序不符的2个数字进行换位 经过多次换位后 最终达到一串有序的结果某些特殊排序算法中可能没有“换位”操作在执行换位时,不能直接让两个变量把值赋

2022-07-09 15:58:52 107

原创 空指针异常与数组下标越界异常解析

ArrayIndexOutOfBoundsException的源码开头写明了答案Thrown to indicate that an array has been accessed with an illegal index. The index is either negative or greater than or equal to the size of the array.抛出以指示已使用非法索引访问数组。索引为负数,或者大于或等于数组的大小。即为所使用的数组下标超出了0~(数组长度-1)的这个范

2022-07-09 10:24:47 859

原创 Java二维数组

基本概念 由一维数组组成的数组二维数组的每个元素都是一个一维数组(第二维度)————绝大部分应用场景里,二位数组的“第二维度”的数组长度是相同的语法格式Int[][] 数组名称 = new int[行数][列数];初始化了一个长度为2的一维数组,且元素都是数组;每个元素数组的长度都是3;二行三列的数据类型为int的二维数组;arr.length 代表二位数组的大小/元素个数/一维数组的个数,行数;arr[0].length 代表二维数组第一个元素/一维数组的大小,列数。由于二维数组的本质仍是一个

2022-07-09 09:59:15 7135

原创 Java方法

方法:函数、过程形参:定义方法时的参数叫形参实参:调用方法时的参数叫实参封装一段特定的业务逻辑功能方法要尽可能独立,一个方法只干一件事方法可以被反复多次调用方法可以减少代码重复,有利于代码维护何时用:只要是一个独立的业务,就建议抽到方法中方法的定义:五要素修饰词 返回值类型 方法名(参数列表) {方法体} 方法的调用: return:......

2022-07-07 17:42:59 146

原创 Java数组

是一种数据类型(引用类型)相同数据类型元素的集合定义//声明整型数组arr,包含10个元素,每个元素都是int型,默认值为0初始化————初始化的是数组中的元素访问————访问的是数组中的元素通过(数组名.length)可以获取数组的长度(元素个数)通过下标/索引来访问数组中的元素 下标从0开始 最大为(数组长度-1)遍历/迭代————从头到尾挨个走一遍数组中元素的默认值byte,short,int,long,char-------------------0float,double-------

2022-07-07 17:39:52 92

空空如也

空空如也

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

TA关注的人

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