自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 资源 (1)
  • 收藏
  • 关注

原创 JSP和Servlet

Servlet:用来处理客户端请求并生成动态网页内容的Java类Servlet的生命周期:Servlet的执行流程也就是他的生命周期,当服务器启动的 时候生命周期开始,然后通过init()方法初始化Servlet,再根据不同的请求调用doGet或doPost方法,最后再通过destroy方法进行销毁。即:初始化:web容器加载servlet,调用init()方法处理请求:当请求到达时,根据请求使用具体的doGet或doPost方法销毁:服务结束,web容器会调用destroy方法销毁servlet

2020-08-08 11:13:55 138

原创 Maven中打包时mapper.xml打不进去

Maven中打包时mapper.xml打不进去可以在pom.xml中进行手动配置<build> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include

2020-07-26 18:41:09 333

原创 学生成绩管理系统项目介绍

源码

2020-07-09 12:47:43 1894

原创 内部类

内部类的优缺点优点内部类和外部类可以方便的访问彼此的私有域;内部类是另一种封装,对外部其他类不可见内部类可以实现Java的多继承缺点:结构复杂内部类和外部类的关系非静态内部类的创建必须依赖外部类对象,在没有外部类实例之前无法创建非静态内部类内部类可以直接访问外部类的元素,但外部类不可以直接访问内部类元素,需要通过内部类的引用间接访问。内部类的分类成员内部类:不能拥有任何static修饰的方法和属性,但是可以访问外部类的静态方法和静态属性静态内部类:创建不需要外部类,可以直接创

2020-06-19 12:45:01 123

原创 会创建几个对象?

虚拟机主要分为三块:栈:存基本数据类型和局部变量及对象的引用堆:存放对象实例和数组方法区:类加载后的信息,常量、静态变量str只是一个引用变量,他不是对象。new String()是在运行期间,通过String的构造器创建了一个对象,放在堆中”hello“是在编译期间,JVM会查询常量池是否有”hello“如没有,则开辟一个空间存储”hello“所有创建了两个对象:堆中的对象是运行的时候,会将常量池中的对象的值复制过去,并且将栈中的引用的值赋为堆中的对象的地址...

2020-06-16 15:49:08 196

原创 以太网交换机的工作原理

以太网交换机:交换机的原理:交叉矩阵实质就是一个多接口的网桥以太网交换机具有并行性,能同时联通多个接口,使每一对相互通信的主机都能像独自占通信媒体那样,进行无碰撞的传输数据。以太网交换机的自学习功能:以太网交换机运行自学习算法自动维护交换表在交换机的接口更换主机,或者主机要更换其网络适配器,这就需要更改交换表中的项目。为此,在交换表中每个项目都设有一定的有效时间。过期的项目就自动被删除...

2019-12-13 12:23:08 7155

原创 网络层

网络层向上提供简单的灵活的,无连接的,尽最大努力交付的数据包服务。网际协议IP与IP协议配套使用的三个协议:地址解析协议ARP网际控制报文协议ICMP网际组管理协议IGMP...

2019-12-13 11:20:31 352 1

原创 数据链路层

主要内容*网络协议的一般功能:寻址、路由;复用分用;差错控制;流量控制;分段和重装;连接和释放* 数据链路层的主要功能:封装成帧;流量控制;差错控制;媒体访问控制、寻址。任务:将网络层传下来的分组添加首部和尾部,用于标记帧的开始和结束(帧定界)将数据帧从一个结点传输到相邻节点,实现相邻结点的数据传输协议以太网协议、ppp、WiFi…字符填充:用特定的字符作为首部和尾部,如...

2019-12-12 13:17:32 165

原创 物理层

信道通信方式:单工通信:单向传输半双工通信:双向传输(不同时刻)全双工通信:双向传输(相同时刻)数据的传输方式:基带传输频带传输信道复用技术:频分复用FDM波分复用WDM时分复用TDM码分复用CDM(手机,各用户的码片序列相互正交)...

2019-12-12 10:58:05 69

原创 log日志

log日志日志的级别DEBUGINFOWARNINGERRORCRITICAL说明DEBUG:详细的信息,通常只出现在诊断问题上INFO:确认一切按预期运行WARNING:一个迹象表明,一些意想不到的事情发生了,或表明一些问题在不久的将来(例如。磁盘空间低”)。这个软件还能按预期工作。ERROR:更严重的问题,软件没能执行一些功能CRITICAL:一个严重的错误,这表明程序本身可能无法继续运行使用private final Logger logger = LoggerFa

2021-10-09 10:48:25 153

原创 Java——流

1.分类按照流的方向主要分为输入流和输出流两大类。数据流按照数据单位的不同分为字节流和字符流。按照功能可以划分为节点流和处理流。2.什么是输入/输出流?输入就是将数据从各种输入设备(包括文件、键盘等)中读取到内存中输入就是将数据从各种输入设备(包括文件、键盘等)中读取到内存中输入流模式输出流模式3.输入流所有的输入流都是InputStream抽象类(字节输入流)和Reader(字符输入流)的子类。4.输出流所有输出流类都是 OutputStream 抽象类(字节输出流)和

2021-04-22 11:05:01 124

原创 MyBatis_第一个程序

环境:jdk 8+MySQL 5.1.47maven 3.8IDEA什么是mybatis?MyBatis 是一款优秀的持久层框架MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 实体类 【Plain Old Java Objects,普通的 Java对象】映射成数据库中的记录。MyBatis 本是apache的一个开源项目ibatis, 2010

2021-04-21 10:44:09 118

原创 Java Socket

Java Socket基本原理Java Socket编程是基于应用服务与TCP/IP通信之间的一种抽象,将TCP/IP协议里面复杂的通信逻辑进行封装,对应用程序来讲,只要通过一组简单的API即可实现网络的链接。  进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远程主机的IP地址,远程进程的协议端口。Socket连接的三个步骤1.服务器监听:服务器端Socket不定位具体客户端Socket,而是出于等待连接的状态,实时监控网络状态(ServerSocket.ac

2020-12-16 14:19:17 161

原创 2020-11-18

TCP/IP指的是TCP/IP协议簇,按照层次分为四层,应用层、传输层、网络层、和数据链路层应用层(HTTP、ping、DNS、FTP等协议):负责应用程序之间的沟通传输层(TCP、UDP等协议):负责网络层(ip):负责提供基本的数据封包传输工作数据链路层(ARP协议):接收IP数据报并进行传输ip:负责传输数据的协议,它是一种不可靠的传输协议icmp:IP数据报在发送途中一旦发生异常导致无法到达目标地址时,需要给发送端发送一个发生异常的通知。icmp就是为了这一功能定制的,应用层的ping命

2020-11-18 18:49:07 54

原创 项目

实现了用户的注册及登录功能;考试成绩的增删改查功能难点:再使用下拉菜单选项的时候不知道怎么办,单独设计一张表,实际存放的数据也不会太多,,最后使用了数据字典数据库:创建了用户表、班级表、学生表、课程信息表、考试信息表、学生考试记录表和数据字典表、数据字典标签表。首先设计了Http请求的基类设计了统一响应类 ResponseResult...

2020-11-17 13:59:37 163

原创 面向对象和面向过程

面向过程:面向过程的性能比较高,但是其开销较大,比较耗费资源,并且其的没有面向对象易维护,易复用,易扩展。面向对象:易维护,易复用,易扩展

2020-11-17 13:43:37 38

原创 重载和重写

重载:同一个类中,多个方法的方法名相同,参数列表不同,返回类型、修饰符、异常可以不同,发生在编译时期。重写子类中,方法名、参数列表、返回值类型必须相同,异常可以变小,修饰符可以变大,发生在运行时期。...

2020-11-17 13:43:21 50

原创 数据库总结

数据库总结1.常见的三种引擎InnoDB:支持事务处理,支持外键,(支持行级锁和表级锁),有64TB的存储限制。若需要对事务的完整性要求比较高,需要实现并发控制,则选择InnoDBMyISAM:不支持事务和外键(仅支持表级锁),插入速度快,空间和内存的使用比较低,若表主要使用于数据的插入与读取,则选择MyISAMMEMORY:不支持事务和外键,所有的数据都在内存中,数据处理速度很快,但安全性不高,若表需要很快的读写速度,则需要选择MEMORY。2.数据库的三大范式第一范式(1NF):保证每一列

2020-07-18 00:09:08 249

原创 网络知识总结

1、三次握手和四次挥手:必要知识:ACK:称为确认ACK,当ACK等于1时确认号字段有效,否则无效,TCP规定,在连接建立之后所有有传送的报文段都必须将ACK置为1;seq:数据包的大小长度。确认号:期望收到的下一个报文段的序号SYN:同步SYN,在建立连接时用来同步序号;当SYN=1,ACK=0,则表示这是一个连接请求报文段,若对方同意建立连接,则相应报文中SYN=1,ACK=1;终止FIN:用来释放一个连接,当FIN=1时则表示此报文段的发送方数据已发送完毕,并请求释放连接。客户端向服

2020-07-15 21:32:03 213

原创 ThreadLocal

ThreadLocal是一个本地线程副本变量的工具类多个线程之间的共享变量,但每个线程都有自己的独立的值。每个Thread内部都有一个ThreadLocalMapThreaLocalMap里存着多个entry;每个entry里有本地对象(Key)和线程变量副本(value)。方法:get()方法:用于获取当前线程的副本变量值set()方法:用于设置当前线程的副本变量值initialValue()方法:用于初始化当前线程的副本变量值remove()方法:用于解除当前副本entry的key和

2020-07-14 10:35:12 119

原创 JVM类加载过程

JVM类加载过程所有的类都由类加载器加载,加载的作用就是将 .class文件加载到内存。类的一个完整生命周期分为:加载–>链接–>初始化–>使用–>卸载而连接又可以分为:验证–>准备–>解析加载:通过此类的全类名,查找此类的字节码文件,利用字节码文件创建Class文件。验证:确保Class文件符合虚拟机要求,不会危害到虚拟机自身安全。准备:进行内存分配,为static修饰的类变量分配内存,并设置初始值0或null,不包含final修饰的静态变量,因为fi

2020-07-13 20:05:18 110

原创 JVM类加载器

JVM中有三个重要的类加载器BootstrapClassLoader(启动类加载器):最顶层的类加载器,由C++实现,负责加载%JAVA_HOME%/lib目录下的jar包和类。ExtensionClassLoader(扩展类加载器):主要负责加载%JAVA_HOME%lib/ext目录下的jar包和类。AppClassLoader(应用程序类加载器):面向用户的类加载器,负责加载当前应用下Classpath下的所有jar包和类。双亲委派模型类加载之间的”父子“关系不是由继承来体现的,而是由”优先

2020-07-13 20:04:42 118

原创 JVM

JVM----垃圾回收0.GC堆?GC堆被分为新生代和老年代,还可以细分为Eden、From Survivor、To Survivor、Old Memory大部分对象都会出生在Eden区,特别大的对象会直接出生在Old memory,当经历过垃圾回收后就进入Survivor,并且对象的年龄+1,当超过15岁时就会进入Old Memory1.如何判断对象是否死亡?引用计数法:对象有引用指向它则+1,引用不指向-1,当为0时被回收。不能处理循环引用。可达性分析法:根据称为GC-Roots的对象为

2020-07-13 12:09:18 120

原创 多线程知识总结

进程和线程进程:简单来说就是运行的一个程序,在我们运行一个main程序时,就会有一个JVM线程,而这个main程序就是一个线程,也称为主线程。(CPU资源分配的最小单位)线程:一个进程可以有多个线程,同一个进程的线程可以共享该线程的堆区、方法区资源,但每个线程有自己的程序员计数器、虚拟机栈、本地方法栈。程序计数器:简单来说就是指示线程运行到哪一行,字节码指示器工作时通过改变这个计数器的值来选取下一条需要执行的字节码指令。还有在线程切回时获取该线程上次执行到那.java虚拟机栈:主要有局部变量表、常量

2020-06-25 23:05:57 300

原创 Java设计模式

Java设计模式设计原则:开闭原则:对扩展开放,对修改关闭,就是在程序进行扩展的时候,不能去修改原有的代码里氏代换原则:任何基类可以出现的地方,子类一定可以出现依赖倒转原则:针对接口编程,依赖于抽象而不依赖于具体迪米特法则:一个实体应尽量少的与其他实体之间发生相互作用,使得系统功能模块相对独立设计模式工厂模式简单工厂模式根据参数的不同返回不同的实例优点:调用者像创建一个对象,直接向工厂请求即可,不需要知道具体的实现,以提高系统的可维护性,可扩展性

2020-06-22 22:45:03 237

原创 Java创建对象的五种方式

Java创建对象的五种方式1. 使用new关键字Object obj = new Object();2.使用反射的Class类的newInstance()创建Class cla = Class.forName("全类名");Object obj = cla.newInstance();3.使用反射的Constructor类的newInstance()创建Class cla = Object.class();Constructor constructor = cla.getConstruc

2020-06-22 17:53:17 273

原创 反射的使用及其案例

反射:框架设计的灵魂;将类的各个组成部分封装为其他对象,这个就是反射机制好处:1.可以在程序运行过程中,操作这些对象。2.可以解耦,提高程序的可扩展性获取class对象的方式:Class.forName(“全类名”):将字节码文件加载进内存,返回class对象多用于配置文件类名.class:通过类名的属性class获取对象.getClass():getClass()方法在object类中定义着。###结论:同一个字节码文件(*.class)在一次程序运行过程中,只会被加载

2020-06-22 17:23:54 446

原创 深入理解Java中的自动装箱与自动拆箱

自动装箱与自动拆箱Java中基本类型有八种,分别是byte,short,int,long,float,double,char,boolean;但是我们在使用集合类的时候,因为集合类在设计的时候持有的是我们所有类型的超类Object,这是基本类型就不能使用集合类了,所以Java就为每个基本类型封装了相应的包装类。自动拆装箱//Java5之前//装箱Integer integer = new Integer(10);//拆箱int i = integer.intvalue();//java5

2020-06-21 23:14:13 293

原创 异常

一、异常的分类1、异常可分为error和Exception,继承自Throwable;Error:描述JVM运行时的内部错误,如栈溢出、堆溢出等Exception:由于代码问题产生的错误IoException:由于输入输出产生的异常,RuntimeException:发生在运行时期:如数组下标越界,空指针异常,类型转换异常2、异常可分为受查异常和非受查异常;非受查异常:Error及其子类和RuntimeException及其子类,不强制用户进行异常处理;

2020-06-21 18:22:42 92

原创 深拷贝和浅拷贝

浅拷贝和深拷贝是相对于引用数据类型的,对基本数据类型没有此说法浅拷贝:创建一个引用,是引用的值为需要拷贝的对象的地址,此为浅拷贝;深拷贝:创建一个引用和一个新的对象,复制需要拷贝的对象的值,此为深拷贝。...

2020-06-21 17:18:50 68

原创 HashMap和ConcurrentHashMap

HashMap :HashMap是线程不安全的,在并发环境下,可能会形成环状链表,导致get操作时,cpu空转,所以,在并发环境中使用HashMap是非常危险的。HashTable : HashTable和HashMap的实现原理几乎一样,差别无非是1.HashTable不允许key和value为null;2.HashTable是线程安全的。但是HashTable线程安全的策略实现代价却太大了,简单粗暴,get/put所有相关操作都是synchronized的,这相当于给整个哈希表加了一把大锁,多线程访问

2020-06-21 10:25:07 426

原创 包装类和基本数据类型

包装类是一个类,拥有方法和属性;包装类放在堆中,而基本数据类型放在虚拟机栈的局部变量表中;包装类的初始值是null,而基本数据类型整性是0,浮点型是0.0,boolean是false;相互转换Integer --> int:A = new Integer(2); int a = A.intValue()int --> Integer: int a = 3; new Integer(a);...

2020-06-19 11:59:24 92

原创 ==和equals hashcode

==本质是值比较,不管是基本数据类型还是引用数据类型,其本质比较的都是值,只不过引用数据类型变量存的值是对象的地址equals的作用也是判断两个对象是否相等,她不能用于比较基本数据类型,因为他是object的方法hashcode和equals(相等的hashcode是冲突)重写equals必须重写hashcode,因为如果eaulas相等,则hashcode一定相等,而hashcode相等,equals不一定相等,hashcode默认行为是堆上的对象产生独特值,如果没有重写hashcode,那么该cl

2020-06-19 10:05:37 70

原创 Java集合

SortedSet:有序的setDeque:双端队列SortedMap:有序的MapArrayList和LinkedList的区别?ArrayList的底层实现是数组,如果通过有参创建ArrayList的话,ArrayList就会创建一个定长的数组,而通过无参构造是就会创建一个长度为10的数组,若容量已满,则ArrayList扩容1.5倍Linkedlist的底层实现是链表所以实际比较的是数组和链表的区别ArrayList和Vector的区别(两者底层均是有数组实现)?线程安全..

2020-06-18 22:14:49 85

原创 数组和链表的区别

数组和链表的区别:1、连续性:数组需要连续的内存空间链表不需要连续的内存空间2、结构大小:数组的大小固定,不可以动态改变链表的大小不固定,可以动态改变3、增删查数组的查询速度快(下标),增删速度慢(需要移动大量元素)链表的查询速度慢(遍历),增删速度块(修改引用)4、访问数组可以通过下标随机访问链表必须经过遍历访问,不能随机访问。为什么数组的访问及查询比较快?CPU在读取数据的时候,会先将一部分数据读取到cache,而cache在读取数据的时候会将连续的一部分内存

2020-06-18 21:26:36 380

原创 Java对象的序列化与反序列化

java序列化与反序列化是什么?为什么需要序列化与反序列化?如何实现Java序列化与反序列化?本文围绕这些问题进行了探讨。1.Java序列化与反序列化Java序列化是指把Java对象转换为字节序列的过程;而Java反序列化是指把字节序列恢复为Java对象的过程。2.为什么需要序列化与反序列化我们知道,当两个进程进行远程通信时,可以相互发送各种类型的数据,包括文本、图片、音频、视频等, 而这些数据都会以二进制序列的形式在网络上传送。那么当两个Java进程进行通信时,能否实现进程间的对象传送呢?答案是可

2020-06-18 12:39:51 104

原创 == 和 equals 及HashCode

==:因为Java是值传递,所以,对于 " == "来说 ,不管是基本数据类型还是引用数据类型,其本质都是值比较,只不过引用数据类型的值是对象的地址。equals():不能比较基本数据类型,因为他是object的方法,在object中它也是和”==“作用相同。但在重写了equals()方法后,则是比较两个对象是否相等。HashCode和equals()当你把对象加入HashSet时,HashSet会先计算对象的HashCode值,与之前加入的对象的HashCode值相比较,如果没有相同的则直接加入

2020-06-18 12:25:45 66

原创 String StringBuilder Stringbuffer

String为什么是不可变的?String的是实现是private final char[] value,所以String对象是不可变的,所以String也就没有线程安全一说,因为它就相当于一个常量。public final class String implements java.io.Serializable, Comparable<String>, CharSequence { /** The value is used for character storage. *

2020-06-18 11:28:23 75

原创 抽象类和接口

抽象类只可以继承一个,而接口可以实现多个。抽象类中的方法可有普通方法,而接口中的方法只能是抽象方法(JDK1.8后,接口方法也可以有默认实现)。接口中的变量只能是static、final变量,抽象类中不一定抽象类是对类的抽象,而接口是对具体行为的抽象接口中的方法默认是public,而抽象类中的方法可以是public、protected、default...

2020-06-18 10:38:35 73

原创 final this super static关键字

final:final关键字,意思是最终的,不可修改的,用来修饰类、方法、变量。final修饰的类,是不可以被继承的,并且类中的所有方法都会被隐式的指定为final方法。final修饰的方法,是不能被重写的;final修饰的变量,是常量,如果是基本数据类型,则其在初始化后便不可以被改变,如果是引用数据类型,则其在初始化后,便不能指向新的对象。static:static关键字主要有四种使用场景:1.修饰成员方法和成员变量,2.修饰静态代码块, 执行顺序(非静态代码块-》静态代码块-》构造方法

2020-06-17 11:34:07 70

apiDemo(1).zip

apiDemo(1).zip

2021-04-15

空空如也

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

TA关注的人

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