自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Effective Java学习笔记--39-41条 注解

​注解本身是一种元数据机制,它提供了一种在代码中提供额外信息的方式,程序可以根据这些注解来执行特定的动作。对于注解的基本介绍在之前的文章里已经详细介绍了(Java注解总结),这里补充一下自定义注解的使用案例,其与命名方式相比的一些优势以及与标记接口的对比。

2024-09-07 22:04:59 675

原创 Effective Java 学习笔记--36-38条 枚举类型

Java枚举类型介绍,包含相关特性,自定义方法和域的设置以及枚举集合的应用

2024-08-25 15:56:55 832

原创 Effective Java 学习笔记--第31、32条通配符类型和泛型可变参数

29、30两条主要介绍的是利用泛型扩展类和方法的使用范围,而使用通配符类型将进一步扩大两者的使用灵活性,通配符类型的本质是将原本只能指定特定类型的泛型推广为指定一个类型的范围。泛型可变参数则是28条介绍的泛型数组的一个特例,是Java设计者为了保存泛型可变参数这个便利工具的情况下做出的一定妥协,但是使用这个工具就需要程序员进行一定的安全性检验,否则就会出现问题。

2024-08-18 22:07:29 561

原创 Effective Java学习笔记--第29、30条优先考虑泛型和泛型方法

这两条主要讲述了泛型对于类与方法的构建能起到很多积极的作用。

2024-08-15 23:57:51 782

原创 Effective Java学习笔记第27、28条原生态类型和非受检警告

本书27-33条主要介绍泛型。首先介绍什么是泛型,它的应用场景是什么。然后重点介绍27和28条对于泛型编程的两点意见。一是不要轻易使用原生态类型,二是尽量消除非受检警告。

2024-08-09 22:42:11 729

原创 Effective Java学习笔记--第24章静态成员类优于非静态成员类

嵌套类总共分为四种:静态成员类、非静态成员类、匿名类和局部类。除了第一种以为其他的都属于内部类。如果一个嵌套类需要在单个方法之外仍然可见,就应该使用成员类。如果成员类的每一个实例都需要一个指向外围类实例的引用,就使用静态成员类,否则就使用非静态成员类。如果这个嵌套类属于一个方法内部,只需要在一个地方快速创建实例,而且已经可以有一个预制的架构那就使用匿名类,否则,就作为局部类。

2024-08-07 00:02:03 739

原创 Effective Java 学习笔记--第18、19条继承与复合

介绍继承与复合的设计以及两者的优劣分析

2024-08-02 08:02:10 896

原创 Code Effective学习笔记--第8章防御式编程

顾名思义,防御式编程就是以一种防御式的思想来设计子程序,其核心在于编写能够抵御错误和异常的代码,确保程序在面对不确定性和潜在错误时仍能保持稳定和可靠,它“防御”的就是各种对于子程序的潜在“攻击”,这个攻击可能是错误的输入类型、超过限制范围的输入值、外部系统、网络的异常等等,还有一类攻击来自于子程序的内部,这主要是由于程序设计问题导致的异常,包括栈溢出、无限循环等等,而这类攻击的“目的”都是使得子程序返回非预定的内容,使得整个程序奔溃(或者叫失控)。

2024-07-28 23:55:17 788

原创 Effective Javax学习笔记--使可变性最小

对于被判断无需进行不可变类是指其实例在初始化以后不可以被修改的类。不可变类的每一个实例的所有信息在创建该实例的时候都应该被提供,并在整个生命周期中固定不变。那要符合什么原则才能够真正保证类的不可变呢?重点就是setter方法。如果类允许被扩展,则子类可以通过改写父类的相关方法破坏其不可变性。所有内部成员的引用在指向成员的初始化值后不能再被更改。外部无法访问修改成员变量不能直接向外部的引用返回内部私有类实例的引用,这样会使得内部可变实例的引用有内外部两个。第2条其实有两种实现方式,一是。

2024-07-24 00:04:37 797

原创 Code Effective 学习笔记--第六章可以工作的类

类是Java或者C++这些面向对象语言的基础,高质量的类设计是程序稳健与健壮的基础。这一章作者详细叙述了设计一个高质量类的基本原则。

2024-07-20 22:31:39 551

原创 Effective Java学习笔记--重写compareTo方法

与前面Object的方法不同,compareTo方法并不是Object类的内置方法,而是Comparable接口唯一的可重写方法,该方法赋予特定类等同比较与顺序比较的功能。Comparable接口是一个泛型接口。当一个类实现了Comparable接口,它就拥有了自然顺序,它就告诉 Java 运行时环境(JRE)如何比较该类的实例。这对于集合框架特别重要,因为它允许 JRE 根据元素的自然顺序自动对集合进行排序或维护元素的唯一性。

2024-07-15 17:41:46 730

原创 Effective Java学习笔记--Object的非final方法重写(Clone与toString)

这一篇文章继续总结Objects另外两个重要的非final方法,Clone和toString。

2024-07-12 22:15:52 693

原创 Effective Java学习笔记--Object非final方法的重写(equals与hashCode)

要想知道为什么hashCode有上述的通用规范,需要知道hashCode最重要的应用场景之一--散列表。散列表(Hash Table)是一种数据结构,它使用数组作为基本存储单元。每个数组的位置通过一个特殊的函数——哈希函数(Hash Function)计算得出,这个计算结果称为散列值或哈希码(HashCode),用作数组的索引,因此每个数组位置被称为“散列桶”(Hash Bucket),每个散列桶里的元素有相同的散列值。

2024-07-06 09:53:05 866

原创 Effective Java学习总结--资源的销毁

这篇文章将第二章的7、8、9条进行了合并,总结一下在处理资源销毁时的注意事项。

2024-06-30 22:30:42 884

原创 Effective Java学习笔记--优先考虑依赖注入来引用资源

Java的类往往不是独立的,而是依赖一个或者多个底层的资源来构建的。就比如一个蛋糕,必须要依靠一个模子才能做出想要的形状。这里,作者举了一个拼写检查器的例子,一个拼写检查器必须要依赖一本或多本词典才能去做校验。

2024-06-27 21:20:02 343

原创 Code Complete学习笔记--第5章软件构建的设计--综述

先说定义,启发性方法是在面对复杂问题时,采用的经验法则或直观策略,旨在通过简化问题、利用经验和直觉快速找到解决方案,而不是保证找到最优解。这里的关键是基于经验法则去制定后续的解决方案。比如,在一个寻路场景中,如果你正在为游戏中的角色寻找一条从起点到终点的最快路径,A*算法会利用对地图的理解(如直线距离作为启发式估价函数)来指引搜索,避免了穷尽所有路线的低效做法,从而高效地找到一个较优的路径。这就是一个典型的启发式算法,他基于“两点之间直线最短”这个过往的经验作为前提假设去设计相关的算法。

2024-06-23 13:07:36 686

原创 Effective Java学习笔记--单例(Singleton)及其属性的增强

Singleton就是指仅仅被实例化一次的类。他是一种设计模式(而不是一种专有的类型),属于创建型模式的一种,这种设计模式主要是控制类的实例化过程,确保在应用程序运行期间,对于某个特定类全局只存在一个实例,并且提供一个全局访问点来获取这个实例。相比于懒汉式在调用getInstance方法时就调用同步锁,双重检查锁定是在第一次判断instance为空的所有线程里加同步锁,节约了锁资源。在Java中,类只有在首次被“主动引用”时才会被加载。

2024-06-18 16:40:28 734

原创 Effective Java学习笔记--遇到多个构造器参数时要考虑使用构建器(Builder)

构造器模式的本质是在目标类中设置一个静态成员变量(Builder),将目标类的各种属性先在这个静态成员变量中设置好,然后通过这个Builder的build方法去构建目标类的对象。这个方式第一允许了目标类属性使用final标识,解决了不可变类的问题;第二属性的设置方法模拟了静态工厂方法的具名特性,使得更易阅读和使用。

2024-06-16 22:41:02 458

原创 Effective Java学习笔记--考虑使用静态工厂方法替代构造方法总结

顾名思义,静态工厂方法的特性主要来自于两个关键字:静态和工厂,静态方法即归属于类或接口(Java8之后)的方法,而工厂方法就是用来创造对象的方法。整体理解静态工厂方法就是归属于类或接口的用来创造对象的方法。但是Java的类在设计之初就有了公共构造方法作为创建对象的方法,为什么还要有静态工厂方法来创建对象呢?这就引出了本节的内容,作者认为静态工厂方法相比于公共构造方法在某些场景下有着很明显的优势。

2024-06-12 17:57:02 620

原创 Code Complete学习笔记--Chapter3总结

Code Complete学习笔记--Chapter3总结

2024-06-09 23:22:46 935

原创 Session的简单总结

在前端,通常通过Ajax请求与后端交互,后端服务在处理这些请求时读取或更新Session数据。销毁:用户登出时,服务器会显式地废弃Session,这通常涉及到删除Session数据或设置Session为无效。同样,当会话超时,服务器也会自动废弃Session。失效:当浏览器关闭时,前端浏览器存储的Cookie会失效,导致Session与客户端的关联被断开,这时服务器端的Session数据可能并不会立即被物理删除。信息,还可以将其他与用户相关的信息存储在Session中,例如用户的角色、权限、个性化设置等。

2024-05-28 21:44:21 419

原创 《Spring in Action 第6版》第8章以curl模拟客户端向授权服务器申请token返回{error: invalid_client}问题的解决方法

在学习spring in action第8章时,构建完授权服务器后(127.0.0.1:9000)用curl模拟客户端访问授权服务器申请授权码成功,但是使用授权码再向授权服务器申请token令牌的时候返回{error:invalid_client}(错误码403)。1、将书中的pom依赖org.springframework.security.experimental改为org.springframework.security,version 0.2.2。

2024-04-03 09:37:10 294 1

原创 Spring Bean基于注释的定义与自动注入方法

注释修饰对象定义Bean的不同@Bean方法,本质是修饰方法的返回值@Service类定义服务层的Bean类定义控制层的Bean,除了注释Bean以外还为类提供控制器的相关方法类定义数据访问层的Bean,除了注释Bean以外,还为类提供处理数据访问相关异常的处理方法@Component类定义未明确层次的Bean。

2024-01-04 23:26:44 1371 2

原创 Spring MVC的入门级介绍

首先还是明确研究对象,Spring MVC本质是一个web前端的应用开发框架,所谓框架首先一定是一个理念(MVC的设计范式)并由此配套的运行流程和抽象概念(控制器、模型和视图),然后就是能给这套理念落地的东西包括给你预先定义的项目架构,Springframework中强大的配置库(尤其是注解库)来支持这套体系从理念变成能落地的解决方案,同时除了Spring体系的支持以外,像lombok、Thymeleaf这些第三方框架的支持,使得Spring MVC更加的强大。

2023-12-08 11:00:54 1567

原创 Java注解总结

注解的本质是继承了Java Annotation接口和一系列元注解接口的子接口。其中Annotation接口是核心的接口,Java的元注解有六种,分别是:@Retention: 描述注解的保存方式,有三种形式:保存在代码中,保存在class文件中,运行时保存并通过反射访问。自变量为RetentionPolicy@Target: 描述注解面向哪一些Java对象,自变量为ElementType@Documented: 标注这个注解是否包含在JavaDoc中。

2023-12-03 21:29:58 653 1

空空如也

空空如也

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

TA关注的人

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