- 博客(32)
- 收藏
- 关注
原创 MySQL中的超大分页如何处理
这两条SQL的查询所消耗的时间是不一样的,后者耗费的时间更多;因为需要先将90010条记录查出来排序,然后将前面的90000条记录去除,最后将剩下的10条记录返回。先通过子查询的覆盖索引不需要回表将10条id记录筛选出来,然后主键id作为连表条件,不回表直接将数据返回。那么如何解决这种效率问题呢?
2023-08-12 17:00:55 306
原创 Drools与SpringBoot整合
Drools与SpringBoot整合1、新建一个springboot项目2、新建Fact对象package com.mc.entity;/** * @author chenmingcai * @date 2021/12/9 10:36 */public class Order { private String name; private Integer score; private Integer amount; public String getNam
2021-12-12 16:59:58 348
原创 JSP 四大作用域
JSP 四大作用域: page (作用范围最小)、request、session、application(作用范围最大)。1、存储在application对象中的属性可以被同一个WEB应用程序中的所有Servlet和JSP页面访问。(属性作用范围最大)2、存储在session对象中的属性可以被属于同一个会话(浏览器打开直到关闭称为一次会话,且在此期间会话不失效)的所有Servlet和JSP页面访问。3、存储在request对象中的属性可以被属于同一个请求的所有Servlet和JSP页面访问(在有转发的
2021-08-20 13:55:56 652
原创 Java程序初始化顺序
Java程序初始化顺序:1、父类的静态代码块2、子类的静态代码块3、父类的普通代码块4、父类的构造方法5、子类的普通代码块6、子类的构造方法
2021-08-20 13:55:42 64
原创 抽象类分析
A 是抽象方法,抽象类可以包含抽象方法,也可以不包含,实现重载。(√)B 在类中不能constInt = constInt + 5(×)C 返回值不能作为重载的依据(×)D 有方法体的不能作为抽象函数(×)
2021-08-20 13:55:27 98
原创 Servlet的生命周期
Servlet的生命周期一般可以用三个方法来表示**init():**仅执行一次,负责在装载Servlet时初始化Servlet对象**service() :**核心方法,一般HttpServlet中会有get,post两种处理方式。在调用doGet和doPost方法时会构造servletRequest和servletResponse请求和响应对象作为参数。**destory():**在停止并且卸载Servlet时执行,负责释放资源初始化阶段:Servlet启动,会读取配置文件中的信息,构造指定的S
2021-08-20 13:54:52 71
原创 WEB容器 servlet
getParameter()是获取POST/GET传递的参数值;getInitParameter获取Tomcat的server.xml中设置Context的初始化参数getAttribute()是获取对象容器中的数据值;getRequestDispatcher是请求转发。
2021-08-20 13:54:36 54
原创 异常的四个环节
Java语言中的异常处理包括声明异常、抛出异常、捕获异常和处理异常四个环节。throw用于抛出异常。throws关键字可以在方法上声明该方法要抛出的异常,然后在方法内部通过throw抛出异常对象。try是用于检测被包住的语句块是否出现异常,如果有异常,则抛出异常,并执行catch语句。cacth用于捕获从try中抛出的异常并作出处理。finally语句块是不管有没有出现异常都要执行的内容。...
2021-08-20 13:54:09 168
原创 Java package 作用
为了更好地组织类,Java 提供了包机制,用于区别类名的命名空间。包的作用1、把功能相似或相关的类或接口组织在同一个包中,方便类的查找和使用。2、如同文件夹一样,包也采用了树形目录的存储方式。同一个包中的类名字是不同的,不同的包中的类的名字是可以相同的,当同时调用两个不同包中相同类名的类时,应该加上包名加以区别。因此,包可以避免名字冲突。3、包也限定了访问权限,拥有包访问权限的类才能访问某个包中的类。Java 使用包(package)这种机制是为了防止命名冲突,访问控制,提供搜索和定位类(clas
2021-08-20 13:53:52 504
原创 Java 四种引用类型
四种引用类型JDK1.2 之前,一个对象只有“已被引用”和"未被引用"两种状态,这将无法描述某些特殊情况下的对象,比如,当内存充足时需要保留,而内存紧张时才需要被抛弃的一类对象。所以在 JDK.1.2 之后,Java 对引用的概念进行了扩充,将引用分为了:强引用(Strong Reference)、软引用(Soft Reference)、弱引用(Weak Reference)、虚引用(Phantom Reference)4 种,这 4 种引用的强度依次减弱。一,强引用Object obj = new
2021-08-20 13:53:38 59
原创 try{}catch{}finally{}
情况1: try{} catch(){}finally{} return;显然程序按顺序执行。情况2: try{ return; }catch(){} finally{} return;先执行try块中return 语句(包括return语句中的表达式运算),但不返回;执行finally语句中全部代码最后执行try中return 返回finally块之后的语句return不执行,因为程序在try中已经return。情况3: try{ } catch(){return;} finally{} r
2021-08-12 21:45:29 191
原创 synchronized、volatile
synchronized 关键字 : 用来给对象和方法或者代码块加锁,当它锁定一个方法或者一个代码块的时候,同一时刻最多只有一个线程执行这个段代码。volatile:用来确保将变量的跟新操作通知到其他线程,当把变量声明为volatile类型后,编译器与运行时都会注意到这个变量是共享的,因此不会将该变量上的操作与其他内存操作一起重排序。然而,在访问volatile变量时不会执行加锁操作,因此也就不会使执行线程阻塞,因此volatile变量是一种比 synchronized关键字更轻量级的同步机制。ser.
2021-08-12 21:19:12 60
原创 Exception(异常)
Exception(异常)是程序本身可以处理的异常。主要包含RuntimeException等运行时异常和IOException,SQLException等非运行时异常。运行时异常 包括:都是RuntimeException类及其子类异常,如NullPointerException(空指针异常)、IndexOutOfBoundsException(下标越界异常)等,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。这些异常一般是由程序逻辑错误引起的,程序应该从逻辑角度尽可能避免这类异常的发生。
2021-08-12 21:05:44 848
原创 int、byte转换
这题考察的就两个知识点:一、强制转换(主要涉及各个类型占几个字节,这里我只简单说一下byte型占一个字节,也就是8位,int型4个字节,32位);二、在计算机系统中,数值一律用补码来表示(存储)正数:补码=反码=原码(当然以二进制形式表达)129 int类型(4个字节)二进制: 00000000 00000000 00000000 10000001强制转换byte型后,只有一个字节即 10000001(注意这里从二进制角度看,第一位是符号位,即求负数的补码接下来)只要求出上面原码对应的补码就行了,.
2021-08-12 21:05:19 164
原创 单向环形链表
单向环形链表思路创建孩子节点 //孩子节点 class Child{ private int no;//节点编号 private Child next;//节点指向域 public Child(int no){ this.no = no; } public int getNo() { return no; }
2021-03-17 13:07:24 81
原创 双向链表
双向链表区别单向链表查找的方向只能是从前往后这一方向,而双向链表可以向前也可以向后查找单向链表不能自我删除,只能通过辅助节点,也就是找到待删除节点的前一个节点;而双向链表可以实现自我删除思路创建节点类和双向链表类 class HeroNode3{ int no;//节点编号 String name;//节点名称 String nickName;//节点昵称 HeroNode3 next;//节点指向域,指向后一个节点
2021-03-17 13:05:50 80
原创 单链表
单链表在链表末尾插入节点前提节点存储的信息包括数据域、指向域,数据域存储节点的基本信息,指向域存储节点的指向,即指向下一个节点头节点不能改变,因为一旦改变就很难遍历链表了链表为空的判断条件:head.next = null在插入节点时,可以使用一个辅助变量temp来充当指向,让temp=head思路创建一个HeroNode类 class HeroNode{ private int no; private String name;
2021-03-17 13:01:25 72
原创 数组模拟队列和数组模拟环形队列
队列数组模拟队列前提front指的是队列中的第一个数据的前一个位置,rear指的是队列中的最后一个数据的位置,maxSize指的是数组长度即队列大小front 的初始值 = -1,rear 的初始值 = -1队列为空的判断条件:front == rear队列满的判断条件:rear = maxSize - 1队列中有效的数据个数:rear思路创建一个类来模拟队列 class Queue{ private int maxSize;//数组最大长度 pr
2021-03-13 13:38:57 92
原创 稀疏数组
稀疏数组稀疏数组可以看做是普通数组的压缩,普通数组中存在大量无意义的数据,使用稀疏数组可以节省存储空间,还可以提高IO效率稀疏数组的第一行第一列存放二维数组的行数,第一行第二列存放二维数组的列数,第一行第三列存放二维数组中不同值的个数,接下来的行存放这些不同值所在的行数、列数和值思路先创建一个初始的二维数组 //初始化二维数组:原始棋盘 int chessArr1[][] = new int[11][11]; chessArr1[1][2
2021-03-13 13:29:35 85
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人