自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 字符集与字符编码

锟斤拷烫烫烫你一定在学习的过程中遇到过这种编码,但你有没有想过它们是如何出现的呢?这就必须要说一下计算机存储字符的问题了。计算机存储字符我们都知道,计算机只能认识010101这样的二进制数字,但是人类日常使用的却是“ABC”、“你好”这样的文字,所以想要让普通人也能够看懂计算机的文字,就必须建立两者之间的桥梁,这就是字符集,即二进制编码与自然语言之间的映射关系。ASCII众所周知,我们现在用到的计算机发扬于大洋彼岸的美利坚,所以世界上第一份字符集也自然而然的是二进制代码与西欧字母之间

2022-01-10 01:56:12 348 1

原创 学生管理系统2.0(3)

配置Swagger我们已经在Maven中配置了Swagger用于管理接口,所以先进行Swagger的配置。本项目采用了Swagger3.0,配置更加简便,如下:package pers.lee.sms.config;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import springfox.documentati

2022-01-07 00:57:21 1094

原创 学生管理系统2.0(2)

表设计首先分析我们需要哪些数据库表,管理员表、学生信息表、班级表、学院表、教师表,目前先确定这几张表。管理员表应当包含主键ID、管理员用户名、管理员密码。学生表应当包含主键ID、学生姓名、学生性别、学生学号、所在班级ID。班级表应当包含主键ID、班级名称、所在学院ID。学院表应当包含主键ID、学院名称。教师表应当包含主键ID、教师姓名、所在学院ID。各表格关系图如图所示。MySQL安装(可跳过)下面进行MySQL的安装与数据库、表格的创建。访问MySQL官网:

2022-01-06 21:09:46 1958

原创 学生管理系统2.0(1)

概述简单的学生管理系统,新人练手、本科毕设必备项目。技术栈:后端:SpringBoot+Hibernate 前端:直接套用vue-element-admin模板 数据库:MySQL准备工作Java环境配置(可跳过)下载JDK8并安装,在系统变量中配置JAVA_HOME,值为JDK的安装目录。修改Path变量,添加%JAVA_HOME%\bin和%JAVA_HOME%\jre\binwin+r输入cmd,命令行中输入java -version回车,如图所示即为成功.

2021-12-08 21:00:50 1113 1

原创 Redis类型

定义Remote Dictionary Server,即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。(来自百度百科)字符串 String常用命令: set key value 设置key、value get key 通过key获取va

2021-08-01 22:11:12 59

原创 B树相关记录

定义B树是一棵多路平衡查找树。性质对于一个m阶的B树树中每个结点至多有m个孩子(意味着至多有m-1个关键字) 除根结点和叶子结点外,其他每个结点至少有ceil(m/2)个孩子(ceil(x)是向上取整) 若根结点不是叶子结点,则至少有两个子结点 所有的叶子结点都在同一层 每个非终端结点中包含关键信息K1、P1、K2、……,其中: Ki为关键字,且K(i-1)<Ki Pi为指向子树的根结点,且P(i-1)指向的子树的结点关键字均小于Ki,且大于K(i-1) 关键字的个数

2021-07-31 01:08:29 98

原创 二叉树相关

二叉树定义二叉树是n个有限元素的集合,该集合或者为空、或者由一个称为根(root)的元素及两个不相交的、被分别称为左子树和右子树的二叉树组成,是有序树。当集合为空时,称该二叉树为空二叉树。在二叉树中,一个元素也称作一个结点。(来自百度百科)性质二叉树的第i层至多有2^(i-1)个结点 深度为h的二叉树至多有2^h-1个结点 任意一个二叉树中,叶子结点数=度为2的结点数+1 任意一个拥有n个结点的完全二叉树,高度为floor(log2(n))+1,其中floor(x)为向下取整函数

2021-07-30 22:35:04 85

原创 泛型——extends和super通配符

Java的泛型有两种类型,<? extends T>和<? super T>,先说结论<? extends T>只可以读,不可以写 <? super T>只可以写,不可以读下面来进行分析:诺亚方舟需要带各种动物各一对,有狗、猫、老鼠、……,这些都是“动物”于是可以抽象为下面这些类:public class Animal {}public class Dog extends Animal {}public class Cat exten

2020-11-08 13:22:22 602

原创 Spring使用步骤(序)

Spring框架同样支持注解实现步骤如下: 第一步 创建配置文件,内容如下:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springf

2020-07-27 17:59:43 149

原创 Spring使用步骤总结

第一步 创建maven(普通)工程,加入Spring依赖(导入Spring的jar包)

2020-07-27 00:52:32 531

原创 MyBatis解析

看到这篇文章,你一定和我刚开始接触MyBatis一样很好奇它到底是如何实现了对数据库的CRUD。接下来我们一点一点的分析废话不多说,直接开始:先放一个工程以便分析对应表的实体类public class User { private String name; private Integer age; private String gender; private String address; public String getName() {

2020-07-20 16:47:23 157

原创 MyBatis与传统JDBC的比较

什么是MyBatis?简单来说,这是一个在你和数据库打交道的时候能够让你把精力更多的放在SQL语句而不是对象封装上的框架。更简单的来说,就是能够帮你节省时间、提高效率的工具。就像盖一座小木屋,以前需要自己画图、自己伐木、自己盖房子,但是用了框架,就像请了施工队,只需要自己画图,剩下的交给施工队就OK啦。思考这样的一个问题我们的数据库中有一个user表,字段包含name、age、gender、address,相对应的有一个User实体类,有属性name、age、gender、address。

2020-07-20 12:21:37 862

原创 JavaWeb学生管理系统(4)

前几次已经做好了增删改的操作,这次做一下分页查询,让表格下面的页码能真正使用先分析一下,既然要分页查询,就是为了不一次性把数据库中的所有数据都查询到(对于很大的数据库,一次查询完数据内存有可能吃不消)。这也意味着一开始的StudentListServlet中的操作逻辑不再适用,需要新写一个Servlet,专门用来分页查询。接着分析,分页查询需要用到SQL语句中的limit关键字,假定每页显示5条信息,现在在第一页,要查询第二页的内容,SQL语句应如下所示:select * from stude

2020-07-15 23:49:10 784 2

原创 JavaWeb学生管理系统(3)

上一次已经做好了添加学生、修改信息和删除学生的功能,今天做一下删除选中学生的功能。首先要解决checkbox的选中问题。选中最上面的,要让所有条目都被选中。为下面的checkbox添加name属性,为最上面的checkbox添加id属性,方便script代码能够找到这些对象。 <tr> <th><input type="checkbox" id="allcheckbox"></th> .

2020-07-14 23:19:41 677

原创 JavaWeb学生管理系统(2)

上一次已经完成了数据库的连接与查询,并且将查询到的数据展示在jsp页面上,今天来完成添加用户、修改信息和删除用户的功能。首先在student.jsp页面中为“添加学生”按钮设置跳转,也可以将button标签替换为a标签<button type="button" class="btn btn-primary" onclick="window.location.href='${pageContext.request.contextPath}/addstudent.jsp'">添加学生&lt

2020-07-13 21:54:50 1275

原创 JavaWeb学生管理系统(1)

这个是我的大作业,所以有些bug并没有修。无伤大雅需要知识:Java、SQL、HTML、CSS、JavaScript、JSP。IDE用的是IDEA,数据库用的是MySQL,数据库连接池用的是阿里的Druid(可以选择不使用),前段开发框架是Bootstrap。采用三层架构,即表现层(web层)、业务逻辑层(service层)、数据访问层(DAO层)首先是创建工程,选择JavaEE,勾选Web Application,可以保留web.xml,也可以不保留,取决于Servlet声明方式(注解还是

2020-07-13 00:55:23 3204 10

原创 活动选择问题

活动选择问题利用了贪心的思想,如果说动态规划是自底向上的从子问题的最优解一步步推出原问题的最优解,那贪心就是自顶向下的将原问题一步步化简为子问题,最终解决。贪心算法比起动态规划更容易理解,更容易实施,但是却不一定可以得到最优解。例如矩阵链乘法问题,利用贪心算法每次优先消化掉最大的数值,最后就不一定可以得到最优解。例:现有11个活动,所有活动都要使用同一个活动室,活动室在同一时间只能进行一项...

2020-01-27 15:51:05 280

原创 最长公共子序列

与矩阵链乘法相同,求解最长公共子序列也需要用到动态规划的思想,先找到子问题的最优解,然后通过比较子问题的最优解,组合得到原问题的最优解。定义一个序列的“前缀”,若一个序列为X=={x1,x2,x3,...,xm},那么他的第i前缀就是X=={x1,x2,x3,...,xi}假设序列X={x1,x2,x3,...,xm}和序列Y={y1,y2,y3,...,yn}有公共的子序列Z={z1,z...

2020-01-17 14:58:46 134

原创 矩阵链乘法

矩阵链乘法要用到动态规划的思想,和分治相类似,都是通过组合子问题的解来求解原问题,但是与分治不同的是,分治要求子问题与原问题只有规模大小的区别,而动态规划要求子问题拥有重叠的子子问题。这样通过动态规划自底向上的求解,就能求出每个子问题的最优解,避免了重复计算。例:求该矩阵的最小运算量,我们不关心矩阵中的元素到底是什么,我们只关心要进行多少次运算。例如A1和A2相乘需要30*35*1...

2020-01-17 13:54:59 569

原创 快速排序

首先,快速排序采用了“分治的思想”,什么问题可以用到“分治思想”?我们把一个原始问题分解为一系列的子问题,这些子问题拥有和原问题完全一致的解决思路,这种问题就可以用“分治思想”来解决。“分治”分为三个步骤分解 解决 合并下面以快排为例。分解:在常规的快排算法中,我们将一个数组中的最后一位标记为“标兵”,通过遍历数组,来将每一个元素与“标兵”进行比较,小于它的放在前面,大于它的...

2020-01-17 12:32:23 81

原创 最大子数组

给定一个数组,其中有正数,也有负数,现在要求寻找其中连续的、和最大的子数组。很容易想到的,可以暴力求解,把每个子数组都找出来,然后求和,进行比较。但是长度为n的数组拥有(1+n)*n/2个子数组,再对数组求和,时间复杂度显然是Ω(n^2),这是不能接受的。所以这里利用分治的思想来求解。分解时,我们将数组不停地等分,直至数组只剩下一个元素。合并时,我们可以考虑一个数组的最大子数组可能...

2019-10-21 20:22:14 1076

原创 Java集合

这是集合Collection的类、接口继承实现关系图。其中List集合的特点是:有序、可重复Set集合的特点是:无序、不可重复List:ArrayList的底层是数组,适合查询,不适合元素的增删LinkedList的底层是链表,适合元素的增删,不适合查询Vector与ArrayList相同,但是Vector是线程安全的,ArrayList是线程不安全的S...

2019-09-29 11:47:57 88

原创 BufferedReader和BufferedWriter,装饰者模式

显然,这是两个“字符流”,“Buffered”显示它们和缓存有关,所以“BufferedReader”是带有缓存区的字符输入流,“BufferedWriter”是带有缓存区的“字符输出流”。下面是一个BufferedReader的例子public class BufferedReaderTest01 { public static void main (String[] args) ...

2019-09-22 21:02:16 512

原创 FileReader和FileWirter

显然,这是两种“字符流”,FileReader是“文件字符输入流”,FileWriter是“文件字符输出流”。与前一篇文章的FileInputStream和FileOutputStream非常类似这是一个FileReader类的例子:public class FileReaderTest01 { public static void main (String[] args) { ...

2019-09-22 20:16:23 170

原创 FileInputStream和FileOutputStream

显然,这是两种“字节流”,FileInputStream是“文件字节输入流”,FileOutputStream是“文件字节输出流”public class FileInputStreamTest { public static void main (String[] args) { //创建文件字节输入流 FileInputStream fis =...

2019-09-22 19:22:20 113

原创 Java——IO流

顾名思义,IO就是IN和OUT,即输入与输出,这在Java中是以“流”的形式体现的如图所示,“读”和“写”都是相对于“内存”而言的,且对于不同的内存,也是不同的。把B想象为一台服务器,A是你的电脑,你现在需要将B上的一部电影下载下来,但是没有办法一下子就让整部电影都传过来,所以需要将它拆成许许多多份,一份一份传过来。就好比电脑与服务器之间架上了一根细管子,电影的数据像水一样慢慢流过来。...

2019-09-22 18:01:51 68

原创 Java异常——自定义异常

Java语言中提供了许多种“异常类”,但是在实际代码中,具体的异常要具体的对待。//此处定义为编译时异常//如果需要定义为运行时异常,可以继承RuntimeException类public class UserNameException extends Exception { public UserNameException () {} public ...

2019-09-14 22:24:07 412

原创 Java异常

异常模拟的是现实世界中“不正常”的事件在Java中语言中,通过“类”来表示这种事件,而具体的事件则由这些“异常类”通过创建“对象”来表示例如:钱丢了----->类(Exception)张三的钱丢了----->对象(Exception e = new Exception)其中e为引用,存储了一个地址,指向的是“张三的钱丢了”这个对象...

2019-09-14 17:27:57 208

原创 Java接口

声明接口的关键字是“interface”接口是完全抽象的,只能出现 常量 和 抽象方法接口没有构造函数,无法被实例化接口之间可以多继承一个类可以实现多个接口非抽象类在实现接口的时候,需要将接口中的所有方法 重写考虑一个问题,全球化的今天,组装一架飞机,需要的零件来自世界各地,不同厂家之间通过共同的标准来进行生产。如果A工厂提供的螺丝不够用了,那么必须从B工厂买螺丝...

2019-09-13 20:17:24 150

原创 Java多态

向上转型(upcasting)与向下转型(downcasting)将子类转为父类,成为向上转型(自动类型转换);反之成为向下转型(强制类型转换)public class Animal { public void dosomething () { System.out.println ("动物在吃东西"); }}public class Dog ...

2019-09-13 00:05:28 93

原创 Java内存分析

Java的内存地址如下:public class Address { String country; String province; String city;}public class User { int ID; String name; Address addr;}public ...

2019-09-08 15:22:32 129

原创 Java接口与继承

前面讲到过继承关系,还有一个类似的东西叫做接口实现。Java中的接口与继承这个概念有十分密切的关系,但是又有一些差别。接口是一个非常非常抽象的类,它的实例毫无意义所以干脆它就不能创建实例,而且它必须以关键字interface替换class来修饰,在一个接口中,全部都是抽象方法,即不需要方法体的方法,只要定义了就ok。继承时需要关键字extends,而实现接口时需要的关键字时implements。例...

2018-06-19 21:21:47 172

原创 单例化

我们在编写程序的时候,有些情况需要一个实例只能存在一个,例如地球的太阳,就只存在一个,这种情况下,就需要单例单例化分为“饿汉式”和“懒汉式”饿汉式写法如下:public class Test { //private修饰的构造方法使该类不能被别的类new private Test () { } //这个test就是单例化的产物,那个单例 p...

2018-06-19 02:17:04 418

原创 Java四种访问修饰符

Java有四种访问修饰符,即protected、private、public和不写,不写其实就是default。Java中的类可以分为同包类,同包子类,异包子类和异包类。各种修饰符与其他包的关系如下表所示:privateprotecteddefaultpublic同包类不能访问可以访问可以访问可以访问同包子类不能继承可以继承可以继承可以继承异包类不能访问不能访问不能访问可以访问异包子类不能继承可以...

2018-06-19 00:43:19 225

原创 Java中“==”和“equals()”的区别

Java中,“==”比较的是地址,“equals()”比较的是内容,但是并不能想当然的使用equals()来进行比较,这样很可能会出错例如:定义两个数组a和b,内容都为{1, 2, 3, 4, 5}利用语句“a.equals (b)"进行比较,得到的就是“false”,按着CTRL点击“equals()”发现,这里的“equals()”实际上调用的是“==”,所以得到了“false”,若要比较数组...

2018-06-18 16:02:38 108

原创 用Math.random ()来取某个范围的随机数

通过api,可以得知random ()的范围是[0,1),左闭右开,包含0不包含1。所以定义一个方法如下:public static int randomNumber (int low, int high) { int number; return number = (int) (Math.random() * (high - low + 1) + low);...

2018-06-17 18:19:03 6096

原创 排序算法

冒泡排序冒泡排序会走过每一个数字,如果前后相邻的两个数字大小顺序与要求不相同则调转位置,直至相邻的数字大小顺序与要求相符合。每一次循环都会将数组中最大(或最小)的一个放在末端,它的位置不会再改变,所以下一次循环就不需要再比较最后一个数字。代码如下:public class Test { public static void main (String[] args) { ...

2018-06-15 22:48:50 140

原创 Java各种基本类型详解

基本类型大小最小值最大值包装器类型boolean无无无Booleanchar16-bitUnicode 0Unicode 216-1Characterbyte8 bits-128127Byteshort16 bits-215215-1Shortint32 bits-231231-1Integerlong64 bits-263263-1Longfloat32 bitsIEEE754IEEE754Fl...

2018-06-11 16:59:14 346

原创 面向对象

Java是面向对象的计算机语言,不同与C是面向过程的语言。其中面向对象指的是我们可以把一切都看作对象,而每个对象都有自己的类型,一个程序也不过是对象的集合。举个例子,我们可以定义一个“人”类型,结合现实,人有手,有腿,人可以跑,可以跳,其中“手”和“腿”就是“人”这个类型中的变量,而“跑”和“跳”就是“人”这个类型的“接口”那么如果我们需要很多个类呢?我们必须需要定义许多类吗?答案是不,我们可以寻...

2018-06-11 15:50:10 98

原创 下载使用eclipse

写Java程序,只靠文本文档当然是可以的,但是这会非常慢。所以我们就需要一个比较方便的工具,工具有很多,这里我就先说说eclipse,为什么要用它呢,因为如果出了问题,网上有许许多多关于这个软件的文章,找起来比较方便。如果将来用到了更好用的工具,再把它扔掉也不迟。(1)下载eclipse,eclipse官网点这个选一个适合的节点,比如第一个的大连东软,然后点击Download开始下载,接着就是等待...

2018-06-10 19:31:33 762

空空如也

空空如也

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

TA关注的人

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