自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(198)
  • 问答 (2)
  • 收藏
  • 关注

原创 关于Web的欢迎页面的开发设置

对于一个webapp来说,我们是可以设置它的欢迎页面的。设置了欢迎页面之后,当你访问这个webapp的时候,或者访问这个web站点的时候,没有指定任何“资源路径”,这个时候会默认访问你的欢迎页面。我们一般的访问方式是:在浏览器地址栏上直接输入该我们项目当中配置的资源信息的路径:这种方式是指定了要访问的就是start.html资源比如:http://127.0.0.1:8080/servlet08/start.html。如果我们访问的方式直接就是一个项目配置的路径,没有指定具体的资源路径。

2023-03-29 16:06:55 47

原创 23种设计模式之 : 模板方法设计模式

设计模式,即,是指在软件设计中,被反复使用的一种代码设计经验。使用设计模式的目的是为了可重用代码,提高代码的可扩展性和可维护性。设计模式这个术语是上个世纪90年代由Erich Gamma、Richard Helm、Raplh Johnson和Jonhn Vlissides四个人总结提炼出来的,并且写了一本的书。这四人也被称为四人帮(GoF)。为什么要使用设计模式?根本原因还是软件开发要实现可维护、可扩展,就必须尽量复用代码,并且降低代码的耦合度。设计模式主要是基于OOP编程。

2023-03-29 11:49:45 162

原创 解读 Servlet 源码:GenericServlet,ServletConfig,ServletContext

/ init 被翻译为初始化 // init 方法只会被执行一次,基本上和 Servlet构造器的调用同时执行,在Servlet 对象第一次被创建只会执行 // init 方法通常是完成初始化操作的。");

2023-03-20 16:08:27 227

原创 javaEE Web(Tomcat)深度理解 和 Servlet的本质

角色: 浏览器开发团体,Web Serve服务器开发团队,webapps 开发团队,DB数据库开发团队。浏览器页面 与 web Serve 服务器之间的协议是 :HTTP 超文本传输协议web Server 服务器与 webapps 之间的协议是:Java EE 的 中 规范,比如 Servlet 等等等webapps 与 DB 数据库之间的协议是:JDBCServle 规范包括什么呢?规范了哪些接口,规范了哪些类。

2023-03-15 12:03:58 285

原创 IDEA: 如何导入项目模块 以及 将 Java程序打包 JAR 详细步骤

IDEA: 如何导入项目模块 以及 将 Java程序打包 JAR 详细步骤

2023-03-13 16:11:14 236

原创 函数编程:强大的 Stream API

Java8中有两大最为重要的改变。第一个便是Lambda表达式,想要进一步了解的大家可以移步至 🔜🔜🔜函数式编程:Lambda 表达式_ChinaRainbowSea的博客-CSDN博客;Stream API了。Stream API是在包下的,Stream 是把真正的函数式编程风格引入到Java中,这时目前为止对java类库最好的补充了,因为Stream API可以极大的提供 Java程序员的生产力,让程序员写出更高效率,干净,简洁的代码。Stream。

2023-03-06 17:12:29 302

原创 函数式编程:Lambda 表达式

相信大家一定在相关的框架的源码中看到不少 使用了lambda表达式的内容吧。如果我们想要阅读框架的源码上的逻辑,则必须了解,明白Lambda表达式的格式,语法了。表达式是Java8的新特性。Java lambda 表达式是 Java进入函数式编程的第一步。因此,表达式时可以单独创建的,而无需属于任何类。这一点很重要。Java Lambda 表达式可以像对象一样传递并按需执行。表达式通常用于实现 简单的事件监听/回调,或在API 函数式编程时使用。Lambda是一个匿名函数,我们可以把Lambda。

2023-03-06 16:49:30 267

原创 Java 文本检索神器 “正则表达式”

我相信,作为一名程序员或者准程序员,你肯定是知道正则表达式的。作为计算机领域最伟大的发明之一,正则表达式简单、强大,它可以极大地提高我们工作中的文本处理效率。现在,各大操作系统、编程语言、文本编辑器都已经支持正则表达式,甚至我还和极客时间的编辑开玩笑说,他们也应该好好学学正则这门手艺。正则,就是正则表达式,英文是 Regular Expression,简称 RE。 顾名思义,正则其实就是一种 描述文本内容组成规律的表示方式。在编程语言中,正则常常用来简化文本处理的逻辑。在 Linux 命令中,它也可以帮助我

2023-02-28 09:08:16 85

原创 Java “框架 = 注解 + 反射 + 设计模式” 之 反射详解

反射的作用:通过 Java语言中的反射机制可以操作字节码文件,优点类似于黑客。(可以读和修改字节码文件),可以调用私有的构造器,set/get 属性,调用私有的方法。获取 Class 类实例的三种方式,重点掌握方式三:该方式会自动调用该类中的静态代码块,因为静态代码块,而不会实例化类的,可以应用于 JDBC 加载数据库驱动,执行其中的静态代码块,而不实例化。类加载的过程。类加载器的作用: 负责将对应类生成的.class文件(可能在磁盘上,也可能在网络上)加载到内存中,并为之在堆区中生成对应的。

2023-02-23 14:27:36 236

原创 Java “框架 = 注解 + 反射 + 设计模式” 之 注解详解

Annotaion注解其实也是一种引用数据类型,编译之后也是生成xxx.class字节码文件的。定义新的Annotation 注解类型使用@interface关键字自定义注解自动实现了接口} // [ 修饰列表 ] @interface 注解名 /(注解类名) {使用IDEA创建一个 注解类型: 鼠标右键 ——> new 一个选择 :如下查看该 我们该自定义的注解的 UML 图:可以清楚的看到该 注解类型是自动继承了该接口的但是事实上却是自动实现了接口。在Java 8。

2023-02-22 11:30:17 2629 2

原创 Java 优化:读取配置文件 “万能方式“ 跨平台,动态获取文件的绝对路径

原始的方式:写相对路径的话,无法跨编译器;因为不同的编译器默认相对的路径是不同的。写绝对路径的话,无法跨平台,因为不同操作系统的文件规则是不一样的,比如 Windows系统中的绝对路径是带盘符(D盘,C盘),Linux 系统中的文件规则是不带盘符的。当在J Windows 操作系统中编写的绝对路径的Java程序,移植到到 Linux 操作系统中就会报错。静态获取的绝对路径 和 动态获取绝对路径。上述的三种优化方式,都是动态获取绝对路径的,但是都是基于类路径下。

2023-02-22 10:46:19 272 2

原创 “万字“ Java I/O流讲解

类:文件和文件目录路径的抽象表示形式,与平台无关。File 能新建,删除,重命名文件和目录,但File 不能访问文件内容本身。如果需要访问文件内容本身,则需要使用 输入/输出 流。想要在Java 程序中表示一个真实存在的文件或目录,那么必须有一个 File 对象,但是 Java 程序中的一个 File 对象,可能没有一个真实存在的文件或目录。File 对象可以作为参数传递给流的构造器。**绝对路径:**是一个固定的路径,从盘符开始。**相对路径:**是相对于某个位置开始。IDEA中默认相对路径是从项目

2023-02-11 17:39:57 572

原创 Java JDK1.5: 泛型 新特性的讲解说明

在任何不重要的软件项目中,错误都只是生活中的事实。仔细的计划,编程和测试可以帮助减少他们的普遍性,但不知何故,在某个地方,他们总是会找到一种方法来进入你的代码。随着新功能的推出以及您的代码库规模和复杂性的增加,这一点变得尤为明显。幸运的是,一些错误比其他错误更容易被发现。例如,编译时错误可以在早期发现;你可以使用编译器的错误信息来找出问题所在,然后修正它。运行时错误,然而,可能是更多的问题;它们并不总是立即出现,而且当它们这样做时,它可能在程序中的某一点远离问题的实际原因。

2023-02-05 21:15:00 293 1

原创 Java集合框架

早在 Java 2 中之前,Java 就提供了特设类。Dictionary, Vector, Stack, 和 Properties这些类用来存储和操作对象组。虽然这些类都非常有用,但是它们缺少一个核心的,统一的主题。由于这个原因,使用Vector类的方式和使用Properties类的方式有着很大不同。集合框架被设计成要满足以下几个目标。该框架必须是高性能的。基本集合(动态数组,链表,树,哈希表)的实现也必须是高效的。该框架允许不同类型的集合,以类似的方式工作,具有高度的互操作性。

2023-02-03 17:51:20 587

原创 Java Collection 接口下的 “ List 集合” 与 “ Set 集合 ”

Collection 接口是 List,Set 和 Queue 接口的父接口,该接口里定义的方法。既可用于操作 Set 集合,也可用于操作 List 和 Queue 集合 。JDK 不提供此接口的任何直接实现,而是提供更具体的子接口(如:Set 和 List) 实现。在 Java5 之前,java 集合会丢失容器中所有对象的数据类型,把所有对象都当成 Object 类型处理;从 JDK5.0 增加了 泛型 以后,Java 集合可以记住容器中对象的数据类型。接口是不可 new 的,接口用于多态——> 接口的实

2023-02-03 17:49:49 501

原创 Java集合 Map 集合 与 操作集合的工具类: Collections 的详细说明

Map 接口与 Collection 并列存在的,用于保存具有映射关系的数据:key-value 被称为 键值对 。Java集合可分为 Collection 和 Map 两种体系。Map 中的 key 和 value 都可以是任何引用类型的数据。Map 中的 key 用 Set 集合存储的,不允许重复。即同一个 Map 对象所对应的类,必须重写hashCode() 和 equals() 方法。但是其中的 value 值是可以存储重复的数据的。而 value 值则是被 Collection 接口集合存储的。

2023-02-03 17:43:43 484 1

原创 Java:枚举类型

一个枚举类型是一种特殊的数据类型,使一个变量是一组预定义的常量。变量必须等于一个已经预定义的值。常见的例子包括罗盘方向(NORTH、SOUTH、EAST 和 WEST 的值)和一周的几天。因为它们是常量,枚举类型的字段的名称是大写字母。对于类的对象有限,并且确定的,才可以使用 枚举类型,如:星期:Monday(星期一)、…、Sunday(星期天)性别:Man(男)、Woman(女)季节:Spring(春节)…Winter(冬天)

2023-01-24 21:46:32 1282

原创 财务精度:BigInteger 与 BigDecimal

BigDecimal 属于大数据,精度很高,不属于基本数据类型,属于java对象(引用数据类型)这是sun提供的一个类,专门用在财务软件当中。注意: 财务软件中的double 是不够的,当处理财务数据时,用那一种类型?千万不能用 double 要用中的类的这个对象以及处理 Double 精度上的问题,使用 ``java.math.BigDecimal` 处理。对于存储大的 Int 数值 使用 ``java.Math.BigInteger` 类 存储范围更大。

2023-01-22 17:56:59 1382

原创 比较器: Comparable 与 Comparator 区别

自然排序的当我们想对自定的类,进行排序时可以重写 Comparable 接口中的抽象方法,默认一些已经实现 Comparable 接口的并重写了 compareTo()抽象方法,String,Doubel,Arrays 默认时升序的。如果当前对象this > 形参对象Obj,则返回正整数。如果当前对象 this < 形参对象 Obj,则返回负整数,如果当前对象 this == 形参对象 Obj,则返回 0降序则是相反的:如果当前对象this < 形参对象Obj,则返回正整数。

2023-01-22 17:52:29 1361

原创 JDK8 前后的 Date 日期时间 API

java.util.Date 包下的 转换为 java.sql.Date 包下的方式,java.sql.Date 可以强制转换为 java.util.Date包下的日期时间类型,因为 java.sql.Date extends 继承了 java.util.Date 包父类(多态性但是 java.sql.Date 不可以 强制转换为 java.util.Date 包下的,因为 java.sql.Date不是器多态的性的实例对象。而是通过两者之间的时间戳转换。

2023-01-22 17:46:01 1556

原创 String 与 StringBuffer 与 StringBuilder 各自的妙用

// 总结:* 增加: append(xxx)* 删: delete(int start,int end)* 改: setCharAt(int n,char ch) / replace(int start,int end, String str)* 查: charAt(int n)* 插: insert(int offset, xxx)* 长度: length()* 遍历: for + charAt()/toString()字符串增加操作的方法: append(xxx)

2023-01-22 17:31:29 802

原创 String 有趣简单的编程题

灵活使用 String 中方法,实现对应的操作,提高开发效率。对应String 字符串的频繁拼接,建议使用 StringBuffer / StringBuild 替换了。理解 ASCII 码表中的 数字字符 char 转换为 int 的数值的方式:!!

2023-01-22 17:18:44 1633

原创 Java多线程:线程的生命周期 又称 “线程的状态图” 的详细讲解

Java多线程的生命周期图又称 “多线程状态图”

2023-01-12 15:50:39 272

原创 Java多线程:线程通信:生产者 和 消费者 || 顺序打印

在Object.java中,定义了wait(), notify()和notifyAll()等方法。wait()的作用是让当前线程进入等待状态,同时,wait()也会让当前线程释放它所持有的锁。notify()和notifyAll()的作用,则是唤醒当前对象上的等待线程;notify()是唤醒单个线程,而是唤醒所有的线程。异常这 三个wait(),notify(), notifyAll()方法只有在synchronized方法或synchronized代码块中才能使用,否则会报异常如下是图示说明。

2023-01-12 15:46:53 101

原创 Java多线程:线程的优先级 || 线程的中断 || 线程的分类 || 线程的定时器

对于线程的优先级的使用 Thread 类中的获取当前线程的优先级和设置线程的优先级。线程的优先级是在 [10~1] 之间的,其中 5 是默认线程的优先级。非法参数异常。低优先级只是获得调度的概率低,并非一定是在高优先级线程之后才被调用,高优先级的线程也不是一定就比低的优先级线程先执行,只是先被执行的概率更高而已,注意是概率不是绝对。是用来服务用户线程的,通过在start()方法前调用,可以将一个用户线程变成一个守护线程。注意是:在 start() 方法创建新线程之前,调用非法线程状态异常。

2023-01-12 15:40:09 341

原创 Java多线程:多线程同步安全问题的 “三“ 种处理方式 ||多线程 ”死锁“ 的避免 || 单例模式”懒汉式“的线程同步安全问题

当多个线程在操作同一个进程共享的数据的时候,一个线程对共享数据的执行仅仅只执行了一部分,还没有执行完,另一个线程参与进来执行。去操作所有线程共享的数据,导致共享数据的错误。就相当于生活当中:你上厕所,你上到一半还没有上完,另外一个人,就来占用你这个茅坑上厕所。解决办法对于多线程操作共享数据时,只能有一个线程操作,其他线程不可以操作共享数据的内容,只有当一个线程对共享数据操作完了,其他线程才可以操作共享数据。

2023-01-12 15:30:01 376

原创 Java多线程:多线程 Thread 类 中常用的方法的使用

start( ): 方法的作用是启动一个新线程,新线程会执行相应的run()方法。并且对于同一个对象的线程,不可以调用 start()方法两次不然会报异常 () 非法线程异常,仅仅只能调用一次start()方法。Thread 类中的 start()/**try {start0();try {if(!started) {/*** Thread 类中常用的一些方法的介绍和使用// 同一个线程对象,调用一次 start();// main 主线程 for(int i = 0;

2023-01-12 15:15:08 354

原创 Java多线程:创建多线程的“四种“ 方式

一个进程占用一个方法区(类的加载,静态方法/变量,常量,静态代码块) 和 一个堆区(类对象)。一个进程包含多个进程,一个进程至少一个线程。进程与进程之间是相互独立的。一个线程占用一个栈和一个程序计数器PC,同一个进程中的方法区和堆区中的数据是所有线程共享的。线程与线程之间相互独立,各自执行各自的(压栈弹栈),互不影响。比如:main线程停止了,分支线程并不会停止而是继续执行。并行:多个线程处理同时处理多个任务,并发:多个线程同时处理一个任务:火车抢票,电商秒杀。

2023-01-12 15:05:22 191

原创 130道基础OJ编程题之: 58 ~ 67 道

注意C语言和Java的多组数据输入的方式。注意对于一些图案上的打印显示:两个方面的技巧:使用 两个 for 循环行,列上的控制,一些比较复杂的图案处理,找规律,通过使用 for 循环进行上下部分的分隔开来单独的打印处理。使用两个 for 循环,将图案的打印看作是一个二维数组的整体部分,找规律,控制二维数组下标的处理,达到对应图案的显示。如:对应图案的打印显示:注意空格上的附加:比如 “*” 后面附加空格,以及两个空格为一组的。!!

2022-12-31 08:30:26 576

原创 130道基础OJ编程题之: 47 ~ 57 道

注意C语言的多组输入,和Java的多组输入Java以字符串读取的处理: 多组数据的输入以字符串的方式输入: 先将数据以字符串的形式读取到需要读取到空格,再将读取到的字符串以空格的格式分割开成单个的字符串,存储到字符串数组当中,再将字符串数组中的字符串元素转换为对应的 包装类.parseXXX基本数据类型的包装类数组,再通过包装类自动拆箱转换为 基本数据类型的数据。其中第一个参数表示:要平方的数,第二个参数表示:几次方Java当中的。

2022-12-31 08:22:08 500

原创 十分钟掌握 “UML ” 的基本使用

UML 类图的关系线条重点:理解并使用 UML 的类图就可以了,基本现阶段我们Java程序员主要学习的还是 UML的类图。关于UML 类图中,表示类中的属性和方法的绘制泛化(继承关系),实现关系,关联关系,聚合关系,组合关系,依赖关系泛化关系:类与类之间的单继承关系,接口 与 接口之间的多继承关系实现关系:实现类与接口之间的关系。关联关系:单向关联,双向关联,自关联。聚合关系:整体与局部可以分开:学校与老师之间的关系。组合关系:整体与局部不可以分开:头 与 嘴的关系。

2022-12-29 14:28:29 364

原创 java: “abstract 抽象类” 与 “ interface 接口” 的妙用之道

abstract可以用来修饰类,方法抽象类不可以 实例化 new 对象,但必须要有构造器(构造方法) 用于继承中的子类的实例化全过程调用父类中的构造器。abstract 不能修饰 属性,代码块,构造器,因为无法重写abstract 不能修饰: private 修饰的方法,final修饰的方法,final 修饰的类,静态方法,都是无法重写的。抽象类中的抽象方法必须被所extends继承的类全部重写,不然编译无法通过。接口中的抽象方法必须被implements实现类全部重写,不然编译无法通过。

2022-12-28 08:14:21 287

原创 23种设计模式:单例设计模式(饿汉式 VS 懒汉式)

单例设计模式:就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象的实例的方法。单例设计模式两种表现形式:饿汉式 VS 懒汉式单例设计模式注意使用 static 修饰实例变量,静态的和类一起加载到内存(方法区)当中,仅仅只加载一次,所有对象共有。注意饿汉式的第二种实现的方式:使用 final 关键字,防止被外部调用修改置为了 null!!

2022-12-23 18:54:23 844

原创 Java: static,final,代码块 的详解

static 修饰属性,方法,代码块,内部类的不同的作用,static 静态的随着类一起加载到内存(方法区)当中(仅仅加载一次,所有对象共有),早于 new 对象的加载创建,因为 new 对象,要先加载类,再调用类中的构造方法创建对应的对象。static 静态的属性,方法,代码块 都无法直接的访问非静态的方法/属性,需要通过 创建实例对象(new)的方式访问被 static 修饰的方法,无法被重写,就算编写成了重写的方式了,但是调用的时候,执行的不是子类重写的方法,而是父类中没有被重写的方法。

2022-12-23 18:46:09 390

原创 Java : 多态,包装类的面试题:

对于与是一样的参数列表,对于运算: +,-,*,/ 都是需要保证两者之间是同一个数据类型才行的,如果不是的话,其中一个不符合的变量会自动提升到类型一致的情况后,再进行运算的。**?**三目运算符也是一样的注意对于 Integer 包装类,自动装箱的数值如果是在 [-128~127] 范围内的话,是从数组中取值,超过该范围的数值就是 new 创建一个实例对象,保存了。!!

2022-12-19 08:21:52 293

原创 “==” 操作符 与 equals 方法的区别,toString

=是操作符可以直接使用,如果是基本数据类型比较的是内容值,如果是引用类型,比较的的地址是否相等,特殊的 String 存在字符串常量池,比较的是内容值equals()方法, 默认 Object 类中的比较的是地址是否相等,所以一般是需要重写的。注意 == 与 equals() 方法的区别toString() 方法的使用,重写!!

2022-12-19 08:18:29 264

原创 多态性:中的向下转型,instanceof 操作符的使用

向上转换,称为多态多态中:想要调用子类中特有的属性/方法,可以强制向下转型为对应的子类。类异常可以预先使用instanceof类异常!!

2022-12-19 08:10:54 210

原创 Java:进一步理解多态性

多态是运行时类型,编译看左边, 运行看右边抽象类,接口(无法 new 实例对象) 的使用充分体现了多态性, 调用实现的子类中的方法.多态中,父类/子类中都含有的同名的变量名,无论是编译,还是运行的结果都是看左边的编译赋值的是子类/父类 类型就调用谁中的变量值.因为变量是无法重写的。重写中返回类型要必须=父类中被重写的声明的权限特殊的(public,private)。方法才可以重写,变量无法重写。

2022-12-19 08:06:37 256

原创 Java : 详解八种基本数据类型的包装类

八种基本数据类型对应的包装类,int --> Integer , char --> Character在Java当中字符串 String 和 数字直接进行类型转换的话,可能会遇到异常对应包装类,所传的参数不要是 null ,不然报 null异常对应特殊的 Boolean 包装类,具有校验的功能,如果所赋的值/传形参 不是 true/false,这两者一律返回 false 包括 nulljdk5 以后 支持 自动拆箱,自动装箱。

2022-12-19 08:02:19 338 1

原创 基于HTML+CSS+JavaScript “小味鲜“餐厅网页设计

简单的描述:一个餐厅的页面的主要功能,登录页面,注册页面,人物介绍,订餐购物车生活当需麻辣鲜香,方能体验人生百味。美食,永远都是人们最为关注的一个话题,因为没有任何人能够阻挡美食的诱惑,尤其是现代社会下,我们对于美食的追求也越来越明显,以前可能还满足于温饱,但现在更多的是追求食物的本身,怎么吃到更多的美食是现代人经常所想的事情,因此旅行也帮助我们吃到其他不同的美食,甚至有些人环球旅行,也是为了美食而展开。提起美食,那么就不得不说到餐厅,网页作品代码简单,可使用任意 HTML 编辑软件(如:等任意html编辑

2022-12-07 21:26:08 293

空空如也

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

TA关注的人

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