- 博客(47)
- 收藏
- 关注
原创 Java基础——泛型详解!!!!!!
泛型在java中有很重要的地位,在面向对象编程及各种设计模式中有非常广泛的应用。泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。
2022-10-12 23:05:47
1328
原创 Java进阶——JSON格式了解
值的类型只有七种:字符串(string)、数值(number)、对象(object)、数组(array), true、false、null。名称(Name)是一个字符串,要用双引号括起来,不能用单引号,也不能没有引号,这一点与JavaScript不同。数组表示一系列有序的值,用方括号(“[]”)包围起来,并列的值之间用逗号分隔。如果要打双引号或右斜杠,需要使用“右斜杠+字符”的形式,例如\”和\。对象用大括号(“{}”)括起来,大括号里是一系列的“名称/值对”。英文双引号括起来,不能用单引号,也不能没有。
2022-10-10 20:41:08
3406
原创 SpringAOP超详解!!!!
SpringAOP的全称是(Aspect Oriented Programming)中文翻译过来是面向切面编程,AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
2022-10-08 23:16:01
821
原创 Java基础——注解和反射超详解!!!
注解是从JDK5.0开始引入的新技术格式:public @interface 注解名 { 定义体 }使用@interface自定义注解时,自动继承了java.lang.annotation.Annotation接口其中的每一个方法实际上是声明了一个配置参数方法的名称就是参数的名称返回值类型就是参数的类型(返回值类型只能是基本类型、Class、String、enum)可以通过default来声明参数的默认值如果只有一个参数成员,一般参数名为value我们在使用注解元素时必须要有值,可以。
2022-10-07 23:03:55
1110
原创 SpringIOC的深入理解!!!
有了IOC容器后,把创建和查找依赖对象的控制权交给了容器,由容器进行注入组合对象,所以对象与对象之间是松散耦合,这样也方便测试,利于功能复用,更重要的是使得程序的整个体系结构变得非常灵活。因为由容器帮我们查找及注入依赖对象,对象只是被动的接受依赖对象,所以是反转;在Java开发中,IOC意味着将你设计好的对象交给容器控制,而不是传统的在你的对象内部直接控制。应用程序原本是老大,要获取什么资源都是主动出击,但是在IOC/DI思想中,应用程序就变成被动的了,被动的等待IOC容器来创建并注入它所需要的资源了。
2022-10-06 15:34:16
509
1
原创 Java基础——网络编程全网超详解!!!!!!!
若希望输出数据,例如向服务器端的 CGI (公共网关接口-Common Gateway Interface-的简称,是用户浏览器和服务器端的应用程序进行连接的接口)程序发送一些数据,则必须先与URL建立连接,然后才能对其进行读写,此时需要使用URLConnection。释放连接时,被动方服务器,突然收到主动方客户端释放连接的请求时并不能立即释放连接,因为还有必要的数据需要处理,所以服务器先返回ACK确认收到报文,经过CLOSE-WAIT阶段准备好释放连接之后,才能返回FIN释放连接报文。
2022-10-05 23:53:26
2272
原创 Java基础——多线程详解!!!!
就是进程中的一个独立控制单元,线程在控制着进程的执行。一个进程中至少有一个进程。多线程是多任务的一种特别的形式,但多线程使用了更小的资源开销。多线程能满足程序员编写高效率的程序来达到充分利用 CPU 的目的。注意:很多多线程是模拟出来的,真正的多线程是指有多个CPU,即多核,如服务器。如果是模拟出来的多线程,即在一个CPU的情况下,在同一个时间点,CPU只执行一个代码,因为切换得很快,所以就有同时执行的错觉。程序、进程和线程的大家可以通过百度搜索得知,在这里我就不多阐述。
2022-10-04 23:08:00
5002
3
原创 Java基础——局部内部类
在方法或某个作用域内的内部类,称为局部内部类。匿名内部类就是一种局部内部类。实现方式/** 局部内部类Inner*/ class Inner {System . out . println("局部内部类...");} } } }内部类不能被public、private、static修饰在外部类中不能创建内部类的实例创建内部类的实例只能在包含他的方法中内部类访问包含他的方法中的变量必须有final修饰外部类不能访问局部内部类,只能在方法体中访问局部内部类,且访问必须在内部类定义之后。
2022-10-04 12:17:47
727
4
原创 Java基础——静态内部类
在非静态内部类中不可以声明静态成员。如现在在一个student类中定义了一个内部类Age,如果没有将这个类利用static关键字修饰,即没有定义为静态类,那么在这个内部类中如果要利用static关键字来修饰某个成员方法或者成员变量是不允许的。在编译的时候就通不过。故程序开发人员需要注意,只有静态内部类才能够定义静态的成员变量与成员方法。
2022-10-04 12:10:06
1013
原创 MVC与三层架构
JSP的出现,简化了 Servlet的开发。但是过度的使用JSP,在JSP中写大量的java代码,又前端的页面,造成难以维护,难于分工协作的窘境。其实,无论是MVC还是三层架构,都是一种规范,都是奔着**“高内聚,低耦合”**的思想来设计的。三层中的UI和Servlet来分别对应MVC中的View和Controller,业务逻辑层是来组合数据访问层的原子性功能的。再后来,随着java的web开发的逐步完善,公司的开发需要形成一种规范,来更好的管理和维护代码,借鉴MVC的开发模式,使得程序的设计更加合理性。
2022-10-03 23:08:31
1292
原创 Java基础——匿名内部类
在实际开发中,我们常常遇到这样的情况:一个接口/类的方法的某个实现方式在程序中只会执行一次,但为了使用它,我们需要创建它的实现类/子类去实现/重写。此时可以使用匿名内部类的方式,可以无需创建新的类,减少代码冗余。至此,我们可以得知,匿名内部类在编译期间,会生成一个名称以$编号结尾的class文件,即它被识别为一个真实的类,仅在编译前(java文件)为匿名的形态。为了使用该接口的show方法,我们需要去创建一个实现类,同时书写show方法的具体实现方式。匿名内部类,就是没有名字的一种嵌套类。
2022-10-03 18:28:21
2170
2
原创 JSP介绍
JSP的全称是Java Server Pages,即Java的服务器页面JSP的主要作用是代替Servlet程序回传HTML页面的数据web目录(或其他)右击 --> new --> JSP/JSPX --> 输入文件名 --> 选择JSP file创建。
2022-10-02 17:18:27
502
原创 JDBC中使用Properties类及配置文件的操作
通常情况下,我们习惯使用properties文件,Java中有专门用来装载配置文件的类Properties(Java.util.Properties),配置文件用来保存一些在程序中可能修改的值,修改时只要修改配置文件即可,而不用修改程序本身。4. store ( OutputStream out, String comments),以适合使用 load 方法加载到 Properties 表中的格式,将此 Properties 表中的属性列表(键和元素对)写入输出流。该方法在基类中提供。
2022-10-02 15:29:37
7222
原创 Java基础——IO
流(Stream),是一个抽象的概念,是指一连串的数据(字符或字节),是以先进先出的方式发送信息的通道。当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。这时候你就可以想象数据好像在这其中“流”动一样。
2022-10-01 17:47:54
2724
原创 Maven项目里依赖和插件的区别
依赖:运行时开发时都需要用到的包,比如项目中需要一个包,就要添加一个依赖,这个依赖在项目运行时也需要,因此在项目打包时需要把这些依赖也打包进项目里;插件:在项目开的发时需要,但是在项目运行时不需要,因此在项目开发完成后不需要把插件打包进项目中。
2022-10-01 16:06:51
702
原创 Mybatis缓存机制
存在内存中的临时数据将用户经常查询的数据放在缓存(内存)中,用户去查询数据就不用从磁盘上(关系型数据库数据文件)查询,从缓存中查询,从而提高查询效率,解决了高并发系统的性能问题。
2022-10-01 10:53:44
198
原创 在Mybatis中对物理外键和逻辑外键的认识
数据库需要维护外键的内部管理外键等于把数据的一致性实物实现,全部交给数据库的服务器完成有了外键,当做一些设计外键字段的增、删、更新操作之后,需要触发相关操作去检查,不得不消耗资源外键还会印象需要请求对其他表内部加锁而容易出现死锁的情况外键对扩展性的限制和影响外键的主从关系如果你每天数据库关联都是使用物理外键,但是如果哪天主键所在的表需要拆分或重构。如果哪天你发现外键表不是非要跟主表的主键挂上关系 ,这种情况并不少见,尤其是数据库设计者水平不够高的时候。
2022-09-30 20:11:28
1167
原创 Java代理模式
首先, 定义接口和接口的实现类, 然后定义接口的代理对象, 将接口的实例注入到代理对象中, 然后通过代理对象去调用真正的实现类,实现过程非常简单也比较容易理解, 静态代理的代理关系在编译期间就已经确定了的。首先通过 newProxyInstance 方法获取代理类的实例, 之后就可以通过这个代理类的实例调用代理类的方法,对代理类的方法调用都会调用中间类 (实现了 invocationHandle 的类) 的 invoke 方法,在 invoke 方法中我们调用委托类的对应方法,然后加上自己的处理逻辑。
2022-09-30 17:23:24
2908
原创 Mybatis懒加载
顾名思义,懒加载就是懒得加载,只有使用的时候才进行加载。其实,懒加载也加延迟加载,主要以应用与Mybatis的关联查询,按照设置的延迟规则,推迟对延迟对关联对象的select查询,例如,我们在用Mybatis进行一对多的时候,先查询出一方,当程序需要多方数据时,mybatis会再次发出sql语句进行查询,减轻了对我们数据库的压力。Mybatis的延迟加载,只对关联对象有延迟设置。
2022-09-30 10:42:19
2912
5
原创 Druid连接池
Druid连接池是阿里巴巴开源的数据库连接池项目。Druid连接池为监控而生,内置强大的监控功能,监控特性不影响性能。功能强大,能防SQL注入,内置Loging能诊断Hack应用行为。
2022-09-29 16:04:32
1141
原创 JavaWeb四大作用域
四个域的作用域范围大小:PageContext (page域) < request < session < servletContext(application域)
2022-09-29 15:51:55
414
原创 JDBC中statement类和prepareStatement类的区别
JDBC驱动的最佳化是基于使用的是什么功能,选择PreparedStatement还是Statement取决于你要怎么使用它们,对于只执行一次的SQL语句选择Statement是最好的。相反,如果SQL语句被多次执行选用PreparedStatement是最好的。
2022-09-28 17:53:36
287
原创 JDBC在加载驱动中使用Class.forName()用法详解
类是程序的一部分,每个类都有一个class对象。换言之,每当编写并且编译了一个新类,就会产生一个class对象(更恰当的说,是被保存在一个同名的class文件中)。为了生成这个类的对象,运行这个程序的Java虚拟机(jvm)将使用被称为“类加载器”的子系统。所有的类都是在对其第一次使用的时候被加载到JVM中。如当程序创建对第一个静态成员的引用时,就会加载这个类。或者使用new关键字创建新的对象的时候。因此java程序在它运行之前并非完全加载,其各个部分是在必须的时候才加载的。
2022-09-28 16:50:55
1502
原创 在JDBC学习中发现的Java类加载器 — Classloader
Classloader顾名思义,即是类加载。虚拟机把描述类的数据从class字节码文件加载到内存,并对数据进行检验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。了解java的类加载机制,可以快速解决运行时的各种加载问题并快速定位其背后的本质原因。
2022-09-28 15:49:25
655
原创 Servlet的生命周期
Servlet的生命周期是由servlet的容器来控制的。初始化阶段运行阶段销毁阶段init()service()destroy()
2022-08-07 10:36:25
2236
原创 MySQL 索引及其原理!!!
索引是在数据库表的字段上添加的,是为了提高查询效率存在的一种机制。一张表的一个字段可以添加一个索引,当然,多个字段联合起来也可以添加索引。索引相当于一本书的目录,是为了缩小扫描范围而存在的一种机制。对于一本字典来说,查找某个汉字有两种方式第一种方式一页一页挨着找,直到找到为止,这种查找方式属于全字典扫描。效率比较低。第二种方式先通过目录(索引)去定位一个大概的位置,然后直接定位到这个位置,做局域性扫描,缩小扫描的范围,快速的查找。这种查找方式属于通过索引检索,效率较高。t_user。...
2022-07-25 21:15:07
201
原创 Lambda表达式详解+代码!!!
在2014年Oracle发布了Java 8,在里面增加了Lambda模块。于是Java程序员们又多了一种新的编程方式:函数式编程。
2022-07-14 12:02:13
812
4
原创 Java基础——链表
单向链表只有一个指针域,在整个节点中数据域用来存储数据元素,指针域用于指向下一个具有相同结构的节点。 单向链表中,每个节点的数据域都是通过一个 Object 类的对象引用来指向数据元素的,与数组类似,单向链表中的节点也具有一个线性次序,即如果节点 a1 的 next 引用指向节点 a2,则 a1 就是 a2 的直接前驱,a2 是 a1 的直接后续。只能通过前驱节点找到后续节点,而无法从后续节点找到前驱节点。特点: 数据元素的存储对应的是不连续的存储空间,每个存储结点对应一个需要存储的数据元素。每个
2022-06-14 14:14:39
3368
9
原创 Java基础——栈与队列
栈:一种特殊的线性表,其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中元素遵循后进先出原则LIFO(Last In First Out)。 基于动态数组实现的顺序栈,代码如下: 队列:只允许在一端进行插入数据操作,在另一端进行删除数据的特殊线性表,队列具有先进先出FIFO(First In First Out)的原则,入队列:进行插入操作的一端称为队尾(Tail)。出队列:进行删除操作的一端称为队头(Head)。队列的链式存储结构表示为链队列,它
2022-06-13 21:20:51
559
4
原创 Java基础——面向对象的三大特征
1.面向对象的特征-封装1.1 包在计算机中保存各种文档的时候,会把不同用途、不同类型的文档按照用户的意愿,分别存放在不同的文件夹中,易于管理和查找。1.2 包的概念在复杂的文件系统中,文件的分门别类存储在不同的文件夹中,解决了文件的重名问题,在程序设计过程中,一个系统工程需要编写几百个甚至上千个类文件,也经常遇到类名相同的问题,并且由很多程序研发人员共同协作完成,很难保证不同的程序研发人员选择类名的时候,类名不冲突。Java中使用包管理类文件,Java的类文件存储在不同的包中。在每
2022-05-15 21:00:38
687
1
原创 Java基础——类与对象
每日正能量成功的信念在人脑中的作用就如闹钟,会在你需要时将你唤醒。类和对象【本章内容】1. 对象的概念2. 类的概念3. 构造方法4. 方法的重载 【能力目标】1. 能够定义类,能够实例化对象2. 能够理解构造用于初始化属性3. 能够定义和使用包4. 了解Java常用系统包 用现有的技术解决这个问题:(1)使用单独变量解决(2)使用数组解决缺点:(1)不利于数据的管理(2)效率低下在面向对象编程中,类是组成程序的...
2022-05-15 20:21:29
1187
原创 Java基础——递归实现归并排序和快速排序
每日正能量智者的梦再美,也不如愚人实干的脚印。递归1.什么是递归递归,就是在运行的过程中调用自己。构成递归需具备的条件: 子问题须与原始问题为同样的事,且更为简单; 不能无限制地调用本身,须有个出口,化简为非递归状况处理。 2.递归模板我们知道递归必须具备两个条件,一个是调用自己,一个是有终止条件。这两个条件必须同时具备,且一个都不能少。并且终止条件必须是在递归最开始的地方,也就是下面这样public void recu...
2022-05-15 20:09:50
2525
原创 Java基础——String类
每日正能量积极向上的人总是把苦难化为积极向上的动力。字符串【本章内容】1. 字符串的定义 2. 字符串操作 3. 字符串与基本类型的转换 【能力目标】1. 掌握字符串对象与字面量的区别2. 掌握字符串常用方法3. 掌握字符串与基本类型的转换 1. String类的定义1、String表示字符串类型,属于引用数据类型,不属于基本数据类型。2、在java中随便使用 双引号括起来 的都是String对象。例如:“abc”,“def”,“hello world...
2022-05-15 19:30:40
16557
原创 Java基础——Arrays类
每日正能量如果你要做一件事,不要到处宣言自己的想法,只管安安静静地去做,值不值,时间是最好的证明,自己的人生,得自己负责。Arrays类JDK中提供了一个专门用于操作数组的工具类,即Arrays类,位于java util 中。用前需导包:import java.util.Arrays;1. Arrays类常用方法返回类型 方法 说明 String toString(array) 将数组array转换成字符串 void s...
2022-05-08 21:57:55
6240
1
原创 Java基础语法——三大基础排序
每日正能量成年人的世界,似乎只有赚到足够的钱,才能过上简单、安逸、自由的生活,才能让自己活得更有底气些。所以,多一些努力吧,少点功夫矫情。1. 排序的定义对一序列对象根据某个关键字进行排序。1.1 术语说明 稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面; 不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面; 内排序:所有排序操作都在内存中完成; 外排序:由于数据太大,因此把数据放在磁盘中,而排序通过磁盘和内存.
2022-05-08 21:00:35
538
原创 Java基础语法——复杂度分析
每日正能量所有的努力,不是为了让别人觉得你了不起,而是为了能让自己打心眼里看得起自己。我们知道,编写代码的时候,使用合适的数据结构和算法,特别是在处理体量非常庞大的数据的时候,可以极大地提高计算效率。那么,数据结构和算法效率如何去衡量,如何选用合适的数据结构和算法呢?需要引入一个衡量的标准(metric)—时间复杂度和空间复杂度。学习数据结构和算法的基石,就是要学会复杂度分析。知道怎么去分析复杂度,才能作出正确的判断,在特定的场景下选用合适的正确的算法。而不是盲目的死记烂背,机械操作。..
2022-05-08 20:35:06
1053
原创 Java基础语法——方法
每日正能量人生如逆旅,我亦是行人,乱花渐欲迷人眼,沉醉不知归路。既然无法留住身边的美好,那就一直往前,看到更多。方法方法是完成特定功能的、相对独立的程序段,与其它编程语言中的子程序、函数等概念相当。方法一旦定义,就可以在不同的程序段中多次调用,故方法可以增强程序结构的清晰度,提高编程效率。方法的知识点涉及到方法声明、方法调用、方法参数、方法返回值。方法可分为Java提供的方法(称为API,即应用程序接口)和我们自己定义的方法。在之前的学习中我们已经多...
2022-05-08 20:04:20
2238
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人