- 博客(97)
- 收藏
- 关注
原创 Spring6
Spring 是一款主流的 Java EE 轻量级开源框架 ,Spring 由“Spring 之父”Rod Johnson 提出并创立,其目的是用于简化 Java 企业级应用的开发难度和开发周期。Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。Spring 框架除了自己提供功能外,还提供整合其他技术和框架的能力。Spring 自诞生以来备受青睐,一直被广大开发人员作为 Java 企业级应用程序开发的首选。时至今日,Spring 俨然
2024-06-10 17:59:18 793
原创 Maven依赖管理项目构建工具
随着我们使用越来越多的框架,或者框架封装程度越来越高,项目中使用的jar包也越来越多。项目中,一个模块里面用到上百个jar包是非常正常的。
2024-04-04 22:29:12 799
原创 第18章 JDK8-17新特性
1. Java版本迭代概述1.1 发布特点(小步快跑,快速迭代)发行版本发行时间备注Java 1.01996.01.23Sun公司发布了Java的第一个开发工具包Java 5.02004.09.30①版本号从1.4直接更新至5.0;②平台更名为JavaSE、JavaEE、JavaMEJava 8.02014.03.18此版本是继Java 5.0以来变化最大的版本。是长期支持版本(LTS)Java 9.02017.09.22此版本开始,每半年更新一
2024-04-04 21:01:35 1194
原创 第17章 反射机制
Reflection(反射)是被视为动态语言的关键,反射机制允许程序在运行期间借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法。加载完类之后,在堆内存的方法区中就产生了一个Class类型的对象(一个类只有一个Class对象),这个对象就包含了完整的类的结构信息。我们可以通过这个对象看到类的结构。这个对象就像一面镜子,透过这个镜子看到类的结构,所以,我们形象的称之为:反射。
2024-04-04 15:34:50 1071
原创 第16章 网络编程
Java是 Internet 上的语言,它从语言级上提供了对网络应用程序的支持,程序员能够很容易开发常见的网络应用程序。Java提供的网络类库,可以实现无痛的网络连接,联网的底层细节被隐藏在 Java 的本机安装系统里,由 JVM 进行控制。并且 Java 实现了一个跨平台的网络库,程序员面对的是一个统一的网络编程环境。应用层:应用层决定了向用户提供应用服务时通信的活动。
2024-04-04 15:12:23 724
原创 第15章 File类与IO流
File类及本章下的各种流,都定义在java.io包下。一个File对象代表硬盘或网络中可能存在的一个文件或者文件目录(俗称文件夹),与平台无关。(体会万事万物皆对象)File 能新建、删除、重命名文件和目录,但 File 不能访问文件内容本身。如果需要访问文件内容本身,则需要使用输入/输出流。File对象可以作为参数传递给流的构造器。想要在Java程序中表示一个真实存在的文件或目录,那么必须有一个File对象,但是Java程序中的一个File对象,可能没有一个真实存在的文件或目录。
2024-04-04 14:19:57 930
原创 第14章 数据结构与集合源码
*** 添加元素*/throw new RuntimeException("数组已满,不可添加");size++;/*** 查询元素value在数组中的索引位置* @return*/i < size;return -1;/*** 从当前数组中移除首次出现的value元素* @return*/i++){size--;/*** 将数组中首次出现的oldValue替换为newValue* @return*/
2024-04-04 13:39:07 1195
原创 第13章 泛型
举例1:中药店,每个抽屉外面贴着标签举例2:超市购物架上很多瓶子,每个瓶子装的是什么,有标签1、这种语法形式就叫泛型。的形式我们称为类型参数,这里的"类型"习惯上使用T表示,是Type的缩写。即:。:代表未知的数据类型,我们可以指定为,,等。类比方法的参数的概念,我们把,称为类型形参,将称为类型实参,有助于我们理解泛型这里的T,可以替换成K,V等任意字母。2、在哪里可以声明类型变量声明类或接口时,在类名或接口名后面声明泛型类型,我们把这样的类或接口称为泛型类或泛型接口。
2024-04-03 16:25:11 646
原创 第12章 集合框架
一方面,面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就要对对象进行存储。另一方面,使用数组存储对象方面具有一些弊端,而Java 集合就像一种容器,可以动态地把多个对象的引用放入容器中。数组在内存存储方面的特点数组初始化以后,长度就确定了。数组中的添加的元素是依次紧密排列的,有序的,可以重复的。数组声明的类型,就决定了进行元素初始化时的类型。不是此类型的变量,就不能添加。可以存储基本数据类型值,也可以存储引用数据类型的变量数组在存储数据方面的弊端。
2024-04-03 16:01:25 805
原创 第11章 常用类和基础API
因为字符串对象设计为不可变,那么所以字符串有常量池来保存很多常量对象。JDK6中,字符串常量池在方法区。JDK7开始,就移到堆空间,直到目前JDK17版本。举例内存结构分配:1.2.2 练习类型1:拼接// 内存中只有一个"hello"对象被创建,同时被s1和s2共享。对应内存结构为:(以下内存结构以JDK6为例绘制)://////
2024-03-23 09:59:18 864
原创 第10章 多线程
Java语言的JVM允许程序运行多个线程,使用类代表线程,所有的线程对象都必须是Thread类或其子类的实例。Thread类的特性每个线程都是通过某个特定Thread对象的run()方法来完成操作的,因此把run()方法体称为线程执行体。通过该Thread对象的start()方法来启动这个线程,而非直接调用run()要想实现多线程,必须在主线程中创建新的线程对象。
2024-02-22 15:46:02 391
原创 第09章 异常处理
在使用计算机语言进行项目开发的过程中,即使程序员把代码写得尽善尽美客户输入数据的格式问题读取文件是否存在网络是否始终保持通畅等等。异常:指的是程序在执行过程中,出现的非正常情况,如果不处理最终会导致JVM的非正常停止。异常指的并不是语法错误和逻辑错误。语法错了,编译不通过,不会产生字节码文件,根本不能运行。代码逻辑错误,只是没有得到想要的结果,例如:求a与b的和,你写成了a-b。在编写程序时,经常要在可能出现错误的地方加上检测的代码,如进行x/y运算时,要检测分母为0数据为空输入的不是数据而是字符等。
2023-11-17 10:57:40 120
原创 第08章 面向对象编程(高级)
创建两个Circle对象:Circle类中的变量radius是一个实例变量(instance variable),它属于类的每一个对象,c1中的radius变化不会影响c2的radius,反之亦然。如果想让一个成员变量被类的所有实例所共享,就用static修饰即可,称为类变量(或类属性)!当我们编写一个类时,其实就是在描述其对象的属性和行为,而并没有产生实质上的对象,只有通过new关键字才会产出对象,这时系统才会分配内存空间给对象,其方法才可以供外部调用。我们有时候希望无论是否产生了对象或无论产生了多少对
2023-11-16 18:02:58 379
原创 第07章 面向对象编程(进阶)
财产继承:绿化:前人栽树,后人乘凉:继承有延续(下一代延续上一代的基因、财富)、扩展(下一代和上一代又有所不同)的意思。
2023-11-16 09:54:01 146 1
原创 第06章 面向对象编程(基础)
类(Class)和对象(Object)是面向对象的核心概念。1、什么是类类:具有相同特征的事物的抽象描述,是抽象的、概念上的定义。2、什么是对象对象:实际存在的该类事物的每个个体,是具体的,因而也称为实例(instance)。面向对象程序设计的重点是类的设计类的设计,其实就是类的成员的设计现实世界的生物体,大到鲸鱼,小到蚂蚁,都是由最基本的细胞构成的。同理,Java代码世界是由诸多个不同功能的类构成的。现实生物世界中的细胞又是由什么构成的呢?细胞核、细胞质、…
2023-11-14 18:24:26 156
原创 第04章 IDEA的安装与使用
IDEA,是 JetBrains ()公司的产品,该公司成立于2000年,总部位于捷克的布拉格,致力于为开发者打造最高效智能的开发工具。WebStorm:用于开发 JavaScript、HTML5、CSS3 等前端技术PyCharm:用于开发 pythonPhpStorm:用于开发 PHPRubyMine:用于开发 Ruby/RailsAppCode:用于开发 Objective - C/SwiftCLion:用于开发 C/C++DataGrip:用于开发数据库和 SQL。
2023-05-25 15:56:25 933
原创 第03章 流程控制语句
流程控制语句是用来控制程序中各语句执行顺序的语句,可以把语句组合成能完成一定功能的小逻辑模块。程序设计中规定的三种if…elseforwhiledo-whileforeach。
2023-05-22 17:38:55 708
原创 第02章 变量与运算符
Java各整数类型有固定的表数范围和字段长度,不受具体操作系统的影响,以保证Java程序的可移植性。定义long类型的变量,赋值时需要以"l"或"L"作为后缀。Java程序中变量通常声明为int型,除非不足以表示较大的数,才使用long。Java的整型常量默认为 int 型。
2023-05-17 15:25:29 320
原创 第01章 Java语言概述
软件,即一系列按照特定顺序组织的计算机数据和指令的集合。有系统软件和应用软件之分。Pascal之父Nicklaus Wirth: “Programs = Data Structures + Algorithms”系统软件:是SUN(Stanford University Network,斯坦福大学网络公司 )1995年推出的一门高级编程语言。是一种面向Internet的编程语言。Java一开始富有吸引力是因为Java程序可以在Web浏览器中运行。这些Java程序被称为Java小程序。
2023-05-12 15:40:23 561
原创 SpringCloud学习笔记01
Spring Cloud封装了Netflix 公司开发的Eureka模块来实现服务治理。在传统的rpc远程调用框架中,管理每个服务与服务之间依赖关系比较复杂,管理比较复杂,所以需要使用服务治理,管理服务与服务之间依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册。Erueka采用了CS的设计架构,Eureka Server 作为服务注册功能的服务器,它是服务注册中心。而系统中的其他微服务,使用Eureka的客户端连接到Eureka的客户端连接到Eureka Server并维持心跳连接。
2022-10-18 18:27:50 1003
原创 分布式消息队列之RocketMQ
RocketMQ是一个统一消息引擎、轻量级数据处理平台。RocketMQ是一款阿里巴巴开源的消息中间件。2016年11月28日,阿里巴巴向 Apache 软件基金会捐赠RocketMQ,成为 Apache 孵化项目。2017 年 9 月 25 日,Apache 宣布 RocketMQ孵化成为Apache 顶级项目(TLP ),成为国内首个互联网中间件在 Apache 上的顶级项目。Broker充当着消息中转角色,负责存储消息、转发消息。
2022-10-18 15:15:13 945
原创 项目管理工具之Git/GitHub/Gitee/Gitlab
在版本控制过程中,同时推进多个任务,为每个任务,我们就可以创建每个任务的单独分支。使用分支意味着程序员可以把自己的工作从开发主线上分离开来,开发自己分支的时候,不会影响主线分支的运行。对于初学者而言,分支可以简单理解为副本,一个分支就是一个单独的副本。(分支底层其实也是指针的引用)。众所周知,GitHub 服务器在国外,使用 GitHub 作为项目托管网站,如果网速不好的话,严重影响使用体验,甚至会出现登录不上的情况。针对这个情况,大家也可以使用国内的项目托管网站-码云。
2022-10-12 19:37:50 1392
原创 Spring Security
SpringSecurity 采用的是责任链的设计模式,它有一条很长的过滤器链。现在对这条过滤WebAsyncManagerIntegrationFilter:将 Security 上下文与 Spring Web 中用于处理异步请求映射的 WebAsyncManager 进行集成。
2022-09-27 10:12:27 519
原创 Nginx初级笔记
通过 location 指定不同的后缀名实现不同的请求转发。通过 expires 参数设置,可以使浏览器缓存过期时间,减少与服务器之前的请求和流量。具体 Expires 定义:是给一个资源设定一个过期时间,也就是说无需去服务端验证,直接通过浏览器自身确认是否过期即可,所以不会产生额外的流量。此种方法非常适合不经常变动的资源。
2022-09-03 11:24:58 745
原创 Redis
NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,泛指非关系型的数据库。NoSQL 不依赖业务逻辑方式存储,而以简单的key-value模式存储。因此大大的增加了数据库的扩展能力。a. 不遵循SQL标准。b. 不支持ACID。c. 远超于SQL的性能。Redis是一个开源的key-value存储系统。
2022-08-21 16:27:10 230
原创 Docker基础篇之快速上手
解决了运行环境和配置问题软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。以上一步新建的镜像zyy/centos为模板并运行容器dc01/dc02/dc03它们已经具有容器卷* Dockerfile是软件的原材料;* Docker镜像是软件的交付品;* Docker容器则可以认为是软件的运行态。Dockerfile面向开发,Docker镜像成为交付标准,Docker容器则涉及部署与运维,三者缺一不可,合力充当Docker体系的基石。...
2022-08-13 15:17:01 488
原创 Spring Boot 02-web开发
一句话概括容器容器就是将软件打包成标准化单元,以用于开发、交付和部署。容器镜像是轻量的、可执行的独立软件包,包含软件运行所需的所有内容代码、运行时环境、系统工具、系统库和设置。容器化软件适用于基于Linux和Windows的应用,在任何环境中都能够始终如一地运行。容器赋予了软件独立性,使其免受外在环境差异(例如,开发和预演环境的差异)的影响,从而有助于减少团队间在相同基础设施上运行不同软件时的冲突。...
2022-07-22 09:36:36 209
原创 Spring Boot 01-入门
Spring Boot来简化Spring应用开发,约定大于配置,去繁从简,just run就能创建一个独立的,产品级别的应用。即:J2EE笨重的开发、繁多的配置、低下的开发效率、复杂的部署流程、第三方技术集成难度大。“Spring全家桶”时代;Spring Boot ------>J2EE一站式解决方案;Spring Cloud ------->分布式整体解决方案;优点:– 快速创建独立运行的Spring项目以及与主流框架集成。– 使用嵌入式的Servlet容器,应用无需打成WAR包。– sta
2022-07-07 16:51:54 405
原创 数据库中间件_Mycat总结
Mycat 是数据库中间件。中间件:是一类连接软件组件和应用的计算机软件,以便于软件各部件之间的沟通。例子:Tomcat,web中间件。数据库中间件:连接java应用程序和数据库。① Java与数据库紧耦合。② 高访问量高并发对数据库的压力。③ 读写请求数据不一致。数据库中间件(天上飞的理念,地上落地的实现)http://www.mycat.io/垂直拆分(分库)、水平拆分(分表)、垂直+水平拆分(分库分表)Mycat 的原理中最重要的一个动词是“拦截”,它拦截了用户发送过来的 SQL 语句,首先
2022-06-12 18:34:57 399
原创 MySQL36-数据库备份与恢复
物理备份:备份数据文件,转储数据库物理文件到某一目录。物理备份恢复速度比较快,但占用空间比较大,MySQL中可以用 xtrabackup 工具来进行物理备份。逻辑备份:对数据库对象利用工具进行导出工作,汇总入备份文件内。逻辑备份恢复速度慢,但占用空间小,更灵活。MySQL 中常用的逻辑备份工具为 mysqldump 。逻辑备份就是 备份sql语句 ,在恢复的时候执行备份的sql语句实现数据库数据的重现。基本语法:说明: 备份的文件并非一定要求后缀名为.sql,例如后缀名为.txt的文件也是可以的。举例
2022-06-02 13:37:52 985
原创 MySQL35-主从复制
此外,一般应用对数据库而言都是“ 读多写少 ”,也就说对数据库读取数据的压力比较大,有一个思路就是采用数据库集群的方案,做 主从架构 、进行 读写分离 ,这样同样可以提升数据库的并发处理能力。但并不是所有的应用都需要对数据库进行主从架构的设置,毕竟设置架构本身是有成本的。如果我们的目的在于提升数据库高并发访问的效率,那么首先考虑的是如何 优化SQL和索引 ,这种方式简单有效;其次才是采用 缓存的策略 ,比如使用 Redis将热点数据保存在内存数据库中,提升读取的效率;最后才是对数据库采用 主从架构 ,进行
2022-06-01 21:28:55 215
原创 MySQL34-其他数据库日志
MySQL有不同类型的日志文件,用来存储不同类型的日志,分为 二进制日志 、 错误日志 、 通用查询日志和 慢查询日志 ,这也是常用的4种。MySQL 8又新增两种支持的日志: 中继日志 和 数据定义语句日志 。使用这些日志文件,可以查看MySQL内部发生的事情。这6类日志分别为:点击查看:https://blog.csdn.net/qq_43117059/article/details/124914604通用查询日志用来 记录用户的所有操作 ,包括启动和关闭MySQL服务、所有用户的连接开始时间和截止时
2022-06-01 20:41:36 577
原创 MySQL33-多版本并发控制
一. 什么是MVCCMVCC (Multiversion Concurrency Control),多版本并发控制。顾名思义,MVCC 是通过数据行的多个版本管理来实现数据库的 并发控制 。这项技术使得在InnoDB的事务隔离级别下执行 一致性读 操作有了保证。换言之,就是为了查询一些正在被另一个事务更新的行,并且可以看到它们被更新之前的值,这样在做查询的时候就不用等待另一个事务释放锁。二. 快照读与当前读MVCC在MySQL InnoDB中的实现主要是为了提高数据库并发性能,用更好的方式去处理 读-
2022-06-01 13:08:58 801
原创 MySQL32-锁
一. 概述事务的隔离性由锁来实现。在数据库中,除传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供许多用户共享的资源。为保证数据的一致性,需要对 并发操作进行控制 ,因此产生了 锁 。同时 锁机制 也为实现MySQL的各个隔离级别提供了保证。 锁冲突 也是影响数据库 并发访问性能 的一个重要因素。所以锁对数据库而言显得尤其重要,也更加复杂。二. MySQL并发事务访问相同记录并发事务访问相同记录的情况大致可以划分为3种:2.1. 读-读情况读-读 情况,即并发事务相继
2022-05-31 13:12:27 127
原创 MySQL31-MySQL事务日志
事务有4种特性:原子性、一致性、隔离性和持久性。那么事务的四种特性到底是基于什么机制实现呢?事务的隔离性由 锁机制 实现。而事务的原子性、一致性和持久性由事务的 redo 日志和undo 日志来保证。REDO LOG 称为 重做日志 ,提供再写入操作,恢复提交事务修改的页操作,用来保证事务的持久性。UNDO LOG 称为 回滚日志 ,回滚行记录到某个特定版本,用来保证事务的原子性、一致性。有的DBA或许会认为 UNDO 是 REDO 的逆过程,其实不然。一. redo日志1.1. 为什
2022-05-26 13:06:16 331 1
原创 MySQL30-事务基础知识
一. 数据库事务概述1.1. 存储引擎支持情况SHOW ENGINES 命令来查看当前 MySQL 支持的存储引擎都有哪些,以及这些存储引擎是否支持事务。show engines;能看出在 MySQL 中,只有InnoDB 是支持事务的。1.2. 基本概念事务:一组逻辑操作单元,使数据从一种状态变换到另一种状态。事务处理的原则:保证所有事务都作为 一个工作单元 来执行,即使出现了故障,都不能改变这种执行方式。当在一个事务中执行多个操作时,要么所有的事务都被提交( commit ),那么这些
2022-05-25 20:13:41 218
原创 MySQL28-数据库的设计规范
一. 范 式1.1. 范式简介在关系型数据库中,关于数据表设计的基本原则、规则就称为范式。可以理解为,一张数据表的设计结构需要满足的某种设计标准的 级别 。要想设计一个结构合理的关系型数据库,必须满足一定的范式。1.2. 范式都包括哪些目前关系型数据库有六种常见范式,按照范式级别,从低到高分别是:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。2.3. 键和相关属性的概念举例:这里有两个表:球员表
2022-05-25 12:46:35 594
原创 MySQL29-数据库其它调优策略
一. 数据库调优的措施1.1. 调优的目标尽可能 节省系统资源 ,以便系统可以提供更大负荷的服务。(吞吐量更大)。合理的结构设计和参数调整,以提高用户操作 响应的速度 。(响应速度更快)。减少系统的瓶颈,提高MySQL数据库整体的性能。1.2. 如何定位调优问题如何确定呢?一般情况下,有如下几种方式:用户的反馈(主要)日志分析(主要)服务器资源使用监控数据库内部状况监控其它除了活动会话监控以外,我们也可以对 事务 、 锁等待 等进行监控,这些都可以帮助我们对数据库的运行状态有更
2022-05-24 21:27:56 264
原创 MySQL27-索引优化与查询优化
一. 数据准备学员表 插 50万 条, 班级表 插 1万 条。1.1. 建表CREATE TABLE `class` (`id` INT(11) NOT NULL AUTO_INCREMENT,`className` VARCHAR(30) DEFAULT NULL,`address` VARCHAR(40) DEFAULT NULL,`monitor` INT NULL ,PRIMARY KEY (`id`)) ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT
2022-05-24 20:00:13 320
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人