- 博客(44)
- 收藏
- 关注
原创 Java核心技术卷Ⅰ(第12版 第三章)
关键点详细说明容器作用类是Java程序的基本组织单元,封装程序逻辑和行为命名规则字母开头,可包含字母/数字,不能使用保留字(如public/class)文件命名要求公共类必须保存在同名文件中(命名规范大驼峰命名法(CamelCase),如字节码文件编译后生成同名.class文件(
2025-07-19 18:42:39
948
原创 Java核心技术卷Ⅰ(第12版 第二章)
在 Windows 上,启动安装程序,会询问你要把 JDK 安装到哪里。最好不要接受默认位置(这个路径名中有空格),如:C:\Program Files\Java\jdk-17\。取出路径名中的 Program Files 部分就可以了。
2025-07-19 18:28:41
726
原创 Java 核心技术卷Ⅰ(第12版 第一章)
1996年 Java 第一次发布就引起了人们的极大兴趣。关注 Java 的人士不仅限于计算机出版界,还有诸如《纽约时报》《华盛顿邮报》和《商业周刊》这样的主流媒体。Java 是第一个也是唯一一个在 National Public Radio上占用了 10分钟 时间进行介绍的程序设计语言,并且还得到了 100 000 000 美元的风险投资基金。这些基金全部用来支持用这种特别的计算机语言开发的产品。你可能想了解 Java 语言的发展,这一章就会带你简单地重温这段历史。
2025-07-19 18:06:00
912
原创 《HTML 从入门到精通》原书 读书笔记(第3章)
在浏览器中的正文部分,可以显示标题文字,所谓标题文字就是以某种固定的字号显示文字 HTML 文档中的标题文字分别用来指明页面上的 1~6 级标题。
2025-02-22 19:31:17
140
原创 《HTML 从入门到精通》原书 读书笔记(第2章)
在 HTML 语言的头元素中,一般需要包括标题、基底信息、元信息等。HTML 的头元素是以 <head> 为开始标记,以 <head> 为结束标记的。一般情况下,CSS 和 JavaScript 都定义在头元素中的,而定义在 HTML 语言头部的内容往往不会在网页上直接显示。它用于包含当前文档的相关信息。常用的头部标记内容如表 2.1所示。
2025-02-22 14:20:00
216
原创 《HTML 从入门到精通》原书 读书笔记(第1章)
WWW(World Wide Web,万维网)是一种建立在 Internet 上的、全球性的、交互的、多平台的、分布式的信息资源网络。它采用 HTML 语言描述超文本(Hypertext)文件。这里所说的超文本指的是包含有链接关系的文件,并且包含了多媒体对象的文件。WWW 有 3个基本组成部分,分别是 URL(统一资源定位器)、HTTP(超文本传输协议)和 HTML(超文本标识语言)。
2025-02-22 14:12:23
871
原创 《JavaScript 从入门到精通》原书 读书笔记(第7章)
该方法可以返回某个子字符串在字符串中最后出现的位置。参数说明:stringObject:String 对象名或字符变量名。substring:必选参数。要在字符串中查找的子字符串。startindex:可选参数。用于指定在字符串中开始查找的位置,在这个位置从后向前查找。它的取值范围是 0 到 stringObject.length-1。如果省略该参数,则从字符串的最后一个字符开始查找。如果要查找的子字符串没有出现,则返回 -1。例如,在字符串“你好零零七,我是零零发”中进行不同的检索。
2025-02-21 09:43:20
800
原创 《JavaScript 从入门到精通》原书 读书笔记(第6章)
在 JavaScript 中数组也是一种对象,这种对象被称为数组对象。因此在定义数组时,也可以使用构造函数。JavaScript 中定义数组的方法主要有4种。使用不带参数的构造函数可以定义一个空数组。顾名思义,空数组中是没有数组元素的,可以在定义空数组后再向数组中添加数组元素。参数说明:arrayObject:必选项。新创建的数组对象名。例如,创建一个空数组,然后向该数组中添加数组元素。<html><head></head><body></body>// 1. 创建数组。
2025-02-21 09:33:17
677
原创 《JavaScript 从入门到精通》原书 读书笔记(第5章)
对象的概念首先来自于对客观世界的认识,它用于描述客观世界存在的特定实体。比如,“人”就是一个典型的对象,“人”包括身高、体重等特性,同时又包含吃饭、睡觉等动作。“人”对象示意图如图 1 所示。图1 “人”对象在计算机的世界里,不仅存在来自于客观世界的对象,也包含为解决问题而引入的比较抽象的对象。例如,一个用户可以被看作一个对象,它包含用户名、用户密码等特性,也包含注册、登录等动作。其中,用户名和用户密码等特性,可以用变量来描述;而注册、登录等动作,可以用函数来定义。因此,对象实际上就是一些变量和函数的集合。
2025-02-21 09:30:59
566
原创 《JavaScript 从入门到精通》原书 读书笔记(第4章)
在 JavaScript 中,可以使用 function 语句来定义一个函数。这种形式是由关键字 function、函数名加一组参数以及置于大括号中需要执行的一段代码构成的。函数就是重复执行的代码块函数是指完成指定功能的一个代码块可以通过函数的名字实现重复的调用注意:js 的函数,语法上,不用任何情况下都有返回值function 函数名([参数1, 参数2,……]){语句[return 返回值]functionName 函数名:必选,用于指定函数名。
2025-02-21 09:29:14
693
原创 《JavaScript 从入门到精通》原书 读书笔记(第3章)
流程控制语句对于任何一种编程语言来说都是至关重要的,JavaScript 也不例外。在 JavaScript 中,提供了 if 条件判断语句、switch 多路分支语句、while 循环语句、do...while 循环语句、for 循环语句、break 语句 和 continue 语句等流程控制语句。
2025-02-21 09:07:13
673
原创 《JavaScript 从入门到精通》原书 读书笔记(第1章)
JavaScript 是 Web 页面中的一种脚本编程语言,也是一种通用的、跨平台的、基于对象和事件驱动并具有安全性的脚本语言。它不需要进行编译,而是直接嵌入在 HTML 页面中,把静态页面转变成支持用户交互并响应相应事件的动态页面。
2025-02-21 08:57:35
1007
原创 《MyBatis 核心技术全解与项目实战》原书 读书详细笔记 (第15章 全书 SQL 脚本)
【代码】书名《MyBatis 核心技术全解与项目实战》原书 读书详细笔记 (第15章)
2025-02-21 08:23:13
128
原创 《MyBatis 核心技术全解与项目实战》原书 读书详细笔记 (第14章)
在以上案例中,使用的是 MyBatis-Plus 默认分页。在实际的开发过程中,我们还时常需要依据需求自定义分页查询。例如,查询账户余额大于 300元的账户信息。第一步:在接口文件 AccountMapper.java 中声明方法 selectPageByMoney()。/*** 分页查询* @param accountPage 分页对象* @param money 金额* @return 分页对象*/该方法的第一个参数表示分页对象,它必须位于所有参数的最前面;
2025-02-20 09:42:57
743
原创 《MyBatis 核心技术全解与项目实战》原书 读书详细笔记 (第13章)
在项目开发尤其是微服务架构开发中,我们经常遇到纯粹多库、读写分离、一主多从等多数据源的情况。在类似情况下,我们可采用 MyBatis-Plus 提供的解决方案快速集成多数据源。该方案支持数据源分组,每个数据库独立初始化表结构和数据库,并能够快速集成 Druid、HikariCp、Dbcp2、BeeCp等数据源。为确保数据安全,该方案支持数据库敏感配置信息加密,并提供MyBatis环境下的纯读写分离方案。本章相关示例的完整代码请参见随书配套源码中的MyBatis MPDatasource 项目。
2025-02-20 09:42:02
646
原创 《MyBatis 核心技术全解与项目实战》原书 读书详细笔记 (第12章)
在之前的章节中,我们介绍了 MBG 根据表快速生成对应的映射文件、接口文件和 POJO。与此类似,MyBatis-Plus 也有专门的代码生成器,它功能强大、操作简单,能够依据数据表自动生成 entity,mapper接口文件和映射文件、Service 接口及其实现类、controller。本章相关示例的完整代码请参见随书配套源码中的 MyBatis_MPGenerator 项目。
2025-02-20 09:41:07
815
原创 《MyBatis 核心技术全解与项目实战》原书 读书详细笔记 (第11章)
接下来,我们分别详细介绍 MyBatis-Plus 开发中常用的注解及其用法。
2025-02-20 09:40:06
879
原创 《MyBatis 核心技术全解与项目实战》原书 读书详细笔记 (第10章)
在本案例中,我们介绍了 MyBatis-Plus 最简单的用法。从这个案例中可以发现,相较 MyBatis,使用MyBatis-Plus 省去了映射文件的编写,只需声明一个非常简单的接口文件即可。读者可能对于接口文件中的BaseMepper 有些疑惑:它的工作原理是什么?它为何功能如此强大?关于 BaseMapper,我们将在 10.3节中详细介绍。虽然 MyBatis-Plus 的 BaseMapper 内置了常用的 CRUD 相关方法,但是它们并不能满足实际开发中(例如多表联查)的全部需求。
2025-02-20 09:38:41
804
原创 《MyBatis 核心技术全解与项目实战》原书 读书详细笔记 (第9章)
MyBatis 虽然是一个简单易学、灵活便捷的轻量级框架,但是在开发过程中创建 POJO、编写接口文件和映射文件是一个略微有些烦琐的过程。尤其是当项目中存在大量对象时,很难避免技术含量偏低的重复劳动,从而降低了开发效率。为此,MyBatis 官方专门开发了逆向工程工具 MyBatisGenerator(简称 MBG)。MBG 是一个专门为 MyBatis 框架使用者定制的代码生成器,它可以快速根据表生成对应的映射文件、接口文件和 POJO。
2025-02-20 09:36:59
878
原创 《MyBatis 核心技术全解与项目实战》原书 读书详细笔记 (第8章)
MyBatis 是一个应用广泛的、优秀的 ORM 开源框架,提供了非常灵活而且功能强大的插件机制。MyBatis 允许开发人员在映射语句执行过程中的某一点进行拦截调用。默认情况下,MyBatis 允许使用插件来拦截 Executor、ParameterHandler、ResultSetHandler、StatementHandler 所涉及的方法。MyBatis 插件的用法十分简单,只需实现 Interceptor 接口并指定想要拦截的方法签名即可。
2025-02-20 09:34:29
693
原创 书名《MyBatis 核心技术全解与项目实战》原书 读书详细笔记 (第7章)
我们先来了解 MyBatis 中最常用的注解并在稍后的案例中实际应用。@select用于映射查询语句,其作用等效于映射文件中的<select>标签@Insert用于映射插入语句,其作用等效于映射文件中的<insert>标签。@Update用于映射更新语句,其作用等效于映射文件中的<update>标签。@Delete用于映射删除语句,其作用等效于映射文件中的<delete>标签。@param用于指定 SQL语句中的参数别名,常用于传递多个参数。@Result。
2025-02-20 09:32:19
691
原创 书名《MyBatis 核心技术全解与项目实战》原书 读书详细笔记 (第5章)
在项目开发中,编码人员经常需要根据不同的条件拼接 SQL 语句。在组拼 SQL 语句的过程中除了实现核心功能以外,还需要处处小心,时时警惕,确保不遗漏必要的标点符号、空格以及关键字。总体而言,开发人员在使用JDBC 或其他持久层框架进行开发时,SQL 拼接烦琐、效率低、易出错、复用性差。为解决此类问题带来的不便,MyBatis 提供了动态 SQL。
2025-02-20 09:24:19
683
原创 书名《MyBatis 核心技术全解与项目实战》原书 读书详细笔记 (第4章)
在 MyBatis 中通过 resultMap 实现自定义结果映射。简单来说,我们在 <select> 标签中利用 resultMap 替代 resultType,可以自行决定将表中的字段映射成 POJO 的哪个属性。请注意,在 <select> 标签中不能同时使用 resultMap 和 resultType。一般而言,符合开发规范的简易查询使用 resultType,需自定义结果映射时使用 resultMap。resultMap 的常用属性及其作用如表 4-1所示。
2025-02-20 09:22:45
959
原创 《MyBatis 核心技术全解与项目实战》原书 读书详细笔记 (第3章)
在第 2章 中,我们学习了 MyBatis 全局配置文件、关键 API 和运行原理,而且实现了最常见的增删改查操作。本章将在人门案例的基础上详细介绍 MyBatis 开发的进阶技能,重点关注项目开发中的实际应用场景和使用方式。
2025-02-20 09:21:14
837
原创 书名《MyBatis 核心技术全解与项目实战》原书 读书详细笔记 (第2章)
在编写 MyBatis 全局配置文件时,我们需要严格遵循上述结构的先后顺序和嵌套层次,否则,MyBatis 框架在解析和读取该 XML 文件时将发生错误并终止程序的运行,接下来,我们逐一详解 mybatis-config.xml 中的常用配置及其使用方式。在以上所有方法中都存在一个 string 类型的参数 statement,该参数为映射文件中某条 SQL 语句的完整路径,即 Mapper 的 namespace+.+ 标签的 id 值。在此情况下,类的全限定名的别名为类名且不区分大小写。
2025-02-20 09:19:04
948
原创 书名《MyBatis 核心技术全解与项目实战》原书 读书详细笔记 (第1章)
这是我们第一次用 MyBatis 进行开发。虽然案例本身不复杂,逻辑也很简单,但是有必要对本案例进行全面的梳理和总结。在本案例中,我们初次体会到了 ORM 的魅力和 MyBatis 的便捷。当然,我们之所以能够享受框架开发带来的快乐,是因为我们遵守了开发规范和流程。例如,划分每个包的用途、明确各文件的存放位置、表和类之间一一对应、接口文件和映射文件成对出现并各司其职等等。在此,我们大致梳理一下本章案例的执行流程。程序以单元测试的 testselectUserById() 方法为入口,
2025-02-20 09:11:57
656
原创 书名《学透 Spring 》原书 读书详细笔记(第16章)
除了 REST 服务,现实生产中还有很多通信方式,同步调用可以选择 RPC,例如 Java 世界中早期的 RMI、如今阿里巴巴开源的 Dubbo 框架(国内有很多公司在使用);如果希望使用异步通信,基于消息的形式也是很好的选择,像 Kafka、RocketMQ 和 RabbitMQ 的使用都很广泛。基于微服务架构的系统链路往往很复杂,一个业务请求会经过很多系统,为了搞明白请求是怎么流转的,链路追踪相关的功能在后期也是必不可少的。在本书的最后一章,就让我们来聊聊这些和服务集成有关的话题吧!
2025-02-20 08:46:48
114
原创 书名《学透 Spring 》原书 读书详细笔记(第15章)
在微服务系统中,业务操作由多个服务协作完成,在这个过程中涉及的服务多了,出问题的概率自然也就变高了。如果下游服务出问题了,上游又不设防,就会被拖累;如果请求量陡增,超过服务的承受能力,也会引发问题……当我们遇到的问题多了,自然就会沉淀出不少经验,本章就让我们来看看如何基于常见的容错模式,使用一些框架来保护我们的系统。
2025-02-19 16:56:24
176
原创 书名《学透 Spring 》原书 读书详细笔记(第14章)
在一个复杂系统中,一定会存在大量的配置,特别是这个系统由大量微服务构成时,问题会更加严重,因为这些配置可能散落在各处,管理起来非常麻烦。Spring Cloud 既然是大量优秀实践的沉淀,自然也注意到了这个问题,为我们提供了一套比较成熟的解决方案。例如,在上一章介绍 Netflix OSS 时就提到了分布式配置中心 Archaius。本章中,让我们看看如何在 Spring Cloud Config 的帮助下解决微服务的配置管理难题。
2025-02-19 16:52:43
186
原创 书名《学透 Spring 》原书 读书详细笔记(第13章)
为了提供稳定的服务,系统通常都会采取一些高可用方案,其中集群化就是比较常用的做法。系统一般会部署为一个或者多个集群,集群内的实例都是无状态的,此时就需要考虑如何将请求合理地分发到集群中的各个实例上——这就是负载均衡。负载均衡有很多种方案,有硬件的,也有软件的,有集中式的,也有分布式的。本章就让我们来了解一下 Spring Cloud 为我们提供的微服务负载均衡方案——这是一套分布式的软负载解决方案,而且还支持多种注册中心,使用起来非常方便灵活。
2025-02-19 16:51:37
173
原创 书名《学透 Spring 》原书 读书详细笔记(第12章)
早期的应用大多是单体(monolithic)应用,所有的功能都集中在一个庞大的应用中,为了支撑这么一个“庞然大物”,有时甚至需要将它部署在小型机上。后来 SOA(Service Oriented Architecture,面向服务的架构)的概念兴起,大家开始把大应用拆小。近几年,SOA 又进一步发展到了微服务,再加上云计算技术的广泛应用,开发一个高可用的分布式应用的成本越来越低了。在开始各种实践操作前,我们先来了解一下微服务与云原生相关的概念,随后看一下 REST 这一重要的服务设计风格。
2025-02-19 16:49:52
366
原创 书名《学透 Spring 》原书 读书详细笔记(第11章)
开发 Web 项目过程中除了完成基本的需求,总会有些非功能性的需求,例如:统一用日志记录所有的请求;使用一个集群对外提供服务时,要在集群中保持会话状态;使用 HTTP/2 提供更安全高效的服务,等等。基于 Spring 提供的一系列框架能够满足我们项目中的各种需求吗?在这一章里就让我们一起来了解一下。
2025-02-19 16:47:59
368
原创 书名《学透 Spring 》原书 读书详细笔记(第10章)
从 Spring Security 3.0 开始,Spring Security 被分成了多个模块,放在不同的 Jar 中,我们可以按需引入相关的依赖。就这一点而言,它与 Spring Framework 的风格是高度一致的。表 10-1 列举了一些主要的模块。表 10-1 Spring Security 的一些主要模块Jar 包说明核心模块,包含了主要的认证与授权支持提供 Web 相关的安全支持,大部分情况下都会用到它提供 XML 与 Java 配置方式,可以辅助进行各种配置。
2025-02-19 16:35:39
1087
原创 书名《学透 Spring 》原书 读书详细笔记(第9章)
添加了的方法就是用来处理 HTTP 请求的,所以可以通过方法的参数获得请求的各种信息,可以是原始的,也可以是经过处理的。表 9-6 列出了一些常用的参数类型,更多的内容可以参考 Spring Framework 官方文档中 Spring MVC 相关的章节。表 9-6 Spring MVC 请求处理方法的常用参数类型参数类型说明获取当前对应的请求与响应,可以是这两个接口的子类型,例如,对这些对象的操作是最灵活的,但如果没有特殊原因,不建议直接操作和与获取当前请求的 HTTP 头和请求体,请求体会被。
2025-02-19 14:30:32
666
原创 书名《学透 Spring 》原书 读书详细笔记(第8章)
既然是个仓库,就有对应要操作的领域对象,所以我们需要先定义这些对象。表 8-8 罗列了定义 Redis 领域对象时会用到的一些注解。表 8-8 定义 Redis 领域对象常用的注解注解说明@RedisHash与@Entity类似,用来定义 Redis 的Repository操作的领域对象,其中的value定义了不同类型对象存储时使用的前缀,也叫做键空间(keyspace),默认是全限定类名,timeToLive用来定义缓存的秒数@Id定义对象的标识符@Indexed。
2025-02-19 13:58:31
306
原创 书名《学透 Spring 》原书 读书详细笔记(第7章)
在早期,开发者们都是通过 XML 来做各种配置的,其中也包括 Hibernate 的映射配置。但时至今日,大家早就习惯了使用注解来进行配置,甚至会“约定优于配置”(convention over configuration),追求“零”配置。在这一节中,我们只会涉及注解的配置方式,看看如何通过 JPA 的注解4来进行常规的配置,其中还会结合少许 Hibernate 的特有注解。4JPA 注解都在包里。
2025-02-19 13:53:10
638
原创 书名《学透 Spring 》原书 读书详细笔记(第6章)
Spring Framework 针对常见数据库异常的处理已经比较完善了,但在一些特殊场景中,默认的逻辑并不能满足我们的需求。假设在公司内部有一套自己的数据库代理中间件,能在应用与实际的数据库之间提供连接收敛、请求路由、分库分表等功能,对外提供 MySQL 协议,但又扩展了一些其他的功能:通过特定的错误码向上返回某些扩展的状态,这些错误码超出了默认的范围。在看过了 Spring Framework 处理数据库错误码的逻辑之后,我们很快就能想到去扩展。
2025-02-19 13:47:33
829
原创 书名《学透 Spring 》原书 读书详细笔记(第5章)
Spring Boot Actuator 是 Spring Boot 的重要功能模块,能为系统提供一系列在生产环境中运行所必需的功能,比如监控、度量、配置管理等。只需引入起步依赖后,我们就可以通过 HTTP 来访问这些功能(也可以使用 JMX 来访问)。Spring Boot 还为我们预留了很多配置,可以根据自己的需求对 Spring Boot Actuator 的功能进行定制。从 2.0 版本开始,Spring Boot 就把 Micrometer 作为默认的系统度量指标获取途径了8。
2025-02-19 13:43:52
386
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人