自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java详解之I/O[BIO、NIO、AIO使用方法和示范代码]

小弟能力不足,认知有限,难免考虑不全面,希望大佬能给出更好的建议,指出存在的问题和不足,在此跪谢。在Java中,BIO(Blocking I/O)指的是阻塞式I/O,是一种基本的I/O模型。它的实现原理相对简单,但在高并发场景下性能较差。下面我将详细介绍BIO的实现原理。阻塞式I/O在BIO中,当一个线程在进行I/O操作时,如果数据没有准备好,该线程会被阻塞,直到数据准备好并被读取或写入。这意味着一个线程只能处理一个连接,如果有大量连接同时到来,就需要大量线程来处理,这会导致资源消耗过大。实现原理。

2023-11-21 10:17:59 286

原创 Maven pom.xml文件中build,plugin标签的具体使用

例如,`maven-compiler-plugin` 插件的 `compile` 目标与 Maven 构建的 `compile` 阶段绑定,因此在执行 `mvn compile` 命令时,编译代码的目标会自动执行。在 `` 标签内还可以使用其他构建相关的配置,例如使用 `` 标签声明项目构建时要使用的 Maven 扩展,或使用 `` 标签指定默认的构建目标等。目标是插件的执行单元,通过在插件配置中指定目标,可以按需执行插件的不同功能。

2023-07-31 16:05:35 7116

原创 HttpServletResponse类全解析

HttpServletResponse` 是 Java Servlet API 中的接口,它是 `ServletResponse` 接口的子接口,专门用于处理 HTTP 响应。`HttpServletResponse` 定义了用于设置 HTTP 响应信息的方法。

2023-07-28 10:48:02 420

原创 ServletResponse类全解析

ServletResponse` 是 Java Servlet API 中的接口,用于代表对客户端的响应。它定义了用于构建和发送响应给客户端的方法。

2023-07-28 10:38:34 269

原创 HttpServletRequest类全解析

HttpServletRequest` 是 Java Servlet API 中的接口,它是 `ServletRequest` 接口的子接口,提供了更多用于访问 HTTP 请求信息的方法。7. `Enumeration getHeaders(String name)`: 返回指定请求头的所有值的 `Enumeration` 对象。15. `String getRemoteUser()`: 返回发出请求的用户的登录名(如果用户已通过身份验证),否则返回 `null`。

2023-07-28 10:29:49 255

原创 Java ServletRequest 类源码解析

它表示请求是通过 `REQUEST`、`INCLUDE`、`FORWARD`、`ASYNC` 或 `ERROR` 调度的。16. `Enumeration getParameterNames()`: 返回包含所有请求参数名称的 `Enumeration` 对象,以便遍历和访问请求参数。5. `long getContentLengthLong()`: 类似于 `getContentLength()` 方法,但返回类型为 `long`,用于获取请求体的长度。

2023-07-28 10:19:33 144

原创 CopyOnWriteArrayList

CopyOnWriteArrayList` 是一个线程安全的列表,它继承自 `AbstractList` 类,实现了 `List` 接口,并且还实现了 `RandomAccess`、`Cloneable` 和 `Serializable` 接口。它的主要特点是在进行写操作时,会创建一个新的数组副本,以保证读操作的线程安全性,从而避免了读写冲突。

2023-07-28 08:47:24 70

原创 解析Java中的`Vector`类源代码

74. `public Vector(int initialCapacity, int capacityIncrement)`:构造函数,创建一个初始容量为`initialCapacity`的`Vector`,并指定每次增长容量时的增量值为`capacityIncrement`。1. `Vector`类是一个线程安全的动态数组,继承自`AbstractList`类,实现了`List`接口、`RandomAccess`接口、`Cloneable`接口和`Serializable`接口。

2023-07-28 08:28:29 91

原创 Integer包装类详解加部分源码

如果值为-128到127之间,则不转换成为Integer,保存在一个cache数组中。【5】包装类是对基本数据类型的封装: 对int类型封装产生了Integer。(2)自动装箱 自动拆箱 :将基本数据类型和包装类进行快速的类型转换。(1)自动装箱 自动拆箱 是从JDK1.5以后新出的特性。被final修饰,那么这个类不能有子类,不能被继承。【6】类的历史: 从JDK1.0开始。valueOf转换成为Integer。【8】构造器(发现没有空参构造器)IntValue转换成为int。

2023-07-26 15:14:41 190

原创 Java SPI机制详解

SPI 全称为 (Service Provider Interface) ,是JDK内置的一种服务提供发现机制,旨在实现程序的可插拔性和扩展性。它允许开发者定义接口,并提供多个不同的实现供应用程序选择和使用。SPI是一种动态替换发现的机制, 比如有个接口,想运行时动态的给它添加实现,你只需要添加一个实现。我们经常遇到的就是java.sql.Driver接口,其他不同厂商可以针对同一接口做出不同的实现,mysql和postgresql都有不同的实现提供给用户,而Java的SPI机制可以为某个接口寻找服务实现。

2023-07-24 10:39:23 161

原创 元注解及其示例

例如,如果一个注解被指定为@Target({ElementType.FIELD, ElementType.METHOD}),则该注解只能应用于字段和方法上,而不能应用于类或其他类型的元素上。如果一个注解被@Inherited注解,则表示注解可以被子类继承,并且子类也被标注了相同的注解。自定义注解是Java语言提供的一种元编程工具,它允许开发者在代码中添加自定义的元数据标记,用于描述类、方法、属性等元素的特性和行为。如果存在,则通过`getAnnotation`方法获取注解的实例,并可以访问注解的成员变量。

2023-07-24 10:29:18 100

原创 Tomcat 运行报错-java.lang.IllegalArgumentException: servlet映射中的<url pattern>[mySerlvet.do]无效

25-Jun-2023 14:25:08.076 信息 [main] org.apache.catalina.startup.VersionLoggerListener.log 命令行参数: -Dcatalina.base=C:\Users\LYYYKTSHCS\AppData\Local\JetBrains\IntelliJIdea2020.3\tomcat\881509a1-4ac6-4f38-8a6e-bf2f92bb0db4。

2023-06-25 14:51:26 840

原创 JavaWeb解析:`HttpServlet` 类的属性和方法的解析

它根据请求的类型(GET、POST、PUT、DELETE 等)调用适当的方法(如 `doGet()`、`doPost()`、`doPut()`、`doDelete()`)来处理请求。10. `protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException`: 这是 `service()` 方法的实现,它根据请求方法调用相应的处理方法。

2023-06-20 19:08:56 66

原创 apache calcite源码阅读(五)org.apache.calcite.sql.parser包下的SqlParser类 解析

`SqlParser` 构造函数:接受 `SqlAbstractParserImpl` 对象和 `SqlParser.Config` 对象作为参数,并根据配置初始化 `SqlParser` 的实例。`SqlParser` 类提供了一组方法来解析和验证 SQL 语句,并返回相应的 `SqlNode` 对象,以便进一步处理和分析 SQL 语句的结构和内容。- `parseStmt` 方法:与 `parseQuery` 方法相同,解析完整的 SQL 查询并返回 `SqlNode` 对象。

2023-06-08 15:23:29 607

原创 apache calcite源码阅读(四)org.apache.calcite.sql.advise包下的SqlAdvisorValidator 类 中的方法解析

1. `SqlAdvisorValidator` 构造函数:接受 `SqlOperatorTable`、`SqlValidatorCatalogReader`、`RelDataTypeFactory` 和 `Config` 作为参数,用于初始化 `SqlValidatorImpl` 的实例。它在注册标识符之后调用父类的 `validateIdentifier` 方法,并捕获可能的 `CalciteException` 异常,然后使用 `Util.swallow` 方法进行忽略。

2023-06-08 14:57:51 121

原创 apache calcite源码阅读(三)org.apache.calcite.sql.validate下的接口SqlValidator 方法解析

21. `validateAggregateParams(SqlCall var1, @Nullable SqlNode var2, @Nullable SqlNodeList var3, @Nullable SqlNodeList var4, SqlValidatorScope var5)` 方法:验证聚合函数的参数。7. `getValidatedNodeTypeIfKnown(SqlNode var1)` 方法:获取给定 SQL 节点的验证后数据类型,如果未知则返回 `null`。

2023-06-08 11:15:53 353

原创 apache calcite源码阅读(二)org.apache.calcite.sql下的`SqlSelect` 类解析

4. `public List<SqlNode> getOperandList()`:返回一个包含所有操作数的列表,这些操作数包括关键字列表、选择列表、FROM 子句、WHERE 子句、GROUP BY 子句、HAVING 子句、窗口声明、ORDER BY 子句、OFFSET 子句和 FETCH 子句。5. `setOperand(int i, @Nullable SqlNode operand)` 方法:根据给定的索引 `i`,设置相应位置上的操作数为指定的 `operand`。

2023-06-08 10:41:43 181

原创 Maven 项目的 `pom.xml` 文件 标签全解析

之前开发用Maven都是大佬们配置好的,无需自己操心,但是到了自己来搭建的时候发现自己并不是特别明白各个标签的作用,只知道dependencies里面的内容,所以痛定思痛,一定要全部搞懂所有的标签及其所起到的作用 ,未来不管用什么,做什么都要做到“知其然还要知其所以然”。每个依赖项由 `groupId`、`artifactId` 和 `version` 组成,表示依赖的库、模块和版本号。- `packaging`:定义项目的打包类型,这里是 "pom",表示这是一个聚合项目,不会生成实际的可执行文件。

2023-06-07 17:14:42 610

原创 apache calcite源码阅读(一)org.apache.calcite.sql下的SqlNode.class

以及一个 `Litmus` 参数 `litmus`,表示比较的结果。28. `public static <T extends SqlNode> Collector<T, ArrayList<SqlNode>, SqlNodeList> toList()`:返回一个 `Collector` 对象,用于将 `SqlNode` 对象流收集为 `SqlNodeList` 对象。`:定义了一个空数组常量 `EMPTY_ARRAY`,它的类型是 `SqlNode[]`,表示一个空的 `SqlNode` 数组。

2023-06-07 16:53:59 305

转载 Google三篇论文:MapReduce: 超大机群上的简单数据处理

摘要MapReduce是一个编程模型,和处理,产生大数据集的相关实现.用户指定一个map函数处理一个key/value对,从而产生中间的key/value对集.然后再指定一个reduce函数合并所有的具有相同中间key的中间value.下面将列举许多可以用这个模型来表示的现实世界的工作.以这种方式写的程序能自动的在大规模的普通机器上实现并行化.这个运行时系统关心这些细节:分割输入数据,在机群上的调度,机器的错误处理,管理机器之间必要的通信.这样就可以让那些没有并行分布式处理系统经验的程序员利用大量分布式系统

2022-10-30 13:05:03 503 1

原创 有状态流处理

什么是状态?#虽然数据流中的许多操作一次只查看一个单独的事件(例如事件解析器),但有些操作会记住多个事件的信息(例如窗口操作符)。这些操作称为有状态的。有状态操作的一些示例:当应用程序搜索某些事件模式时,状态将存储到目前为止遇到的事件序列。 当聚合每分钟/小时/天的事件时,状态持有待处理的聚合。 在数据点流上训练机器学习模型时,状态保存模型参数的当前版本。 当需要管理历史数据时,状态允许有效访问过去发生的事件。Flink 需要知道状态,以便使用检查点和保存点使其容错。有关状态的...

2022-06-21 15:48:32 188

原创 flink 容错机制(检查点的保存、恢复、检查点算法、保存点、状态一致性的三种级别、end-to-end exactly-once)

flink 容错机制(检查点的保存、恢复、检查点算法、保存点、状态一致性的三种级别、end-to-end exactly-once)

2022-06-21 15:46:13 240

转载 Docker:容器的本质是什么?容器从何而来?

本文介绍docker的原理。容器本质之进程隔离1. 容器本质容器本质上是一种进程隔离的技术。容器为进程提供了一个隔离的环境,容器内的进程无法访问容器外的进程。2. 容器及容器中的进程在主机上的呈现启动一个ubuntu的容器:docker run -it ubuntu在主机上可以看到启动了三个进程:第一个是刚刚执行的命令第二个是启动的容器,容器在系统上就是一个进程第三个是在该容器父进程下的一个子进程:/bin/bash在容器中运行top命令生成.....

2022-06-21 15:44:35 551

转载 聊聊分布式的可扩展性

前言团队,总会有人离开,总会有人加入。。。总会有一个leader,当服务器的数量增加的时候,业务增加的时候,总会进行相关的扩容或者缩容,那么这个团队的扩展性如何?增加了更多的事儿,leader是否能抗住?是否能分配所有的任务?是否能进行负载均衡?是否能对下属进行状态监控?在有人离职的时候,交接的任务是否很多?新来的人刚上线的时候,负载为0,大量的任务压来会不会直接把新人的IO耗尽。。。。这种团队的架构和分布式系统是一样的。分布式的扩展性说到分布式,凭什么你的扩展性就好?凭什么你就没有性能

2022-01-03 14:18:08 1025

转载 一文看懂 | 什么是页缓存(Page Cache)

我们知道文件一般存放在硬盘(机械硬盘或固态硬盘)中,CPU 并不能直接访问硬盘中的数据,而是需要先将硬盘中的数据读入到内存中,然后才能被 CPU 访问。由于读写硬盘的速度比读写内存要慢很多(DDR4 内存读写速度是机械硬盘500倍,是固态硬盘的200倍),所以为了避免每次读写文件时,都需要对硬盘进行读写操作,Linux 内核使用 页缓存(Page Cache) 机制来对文件中的数据进行缓存。本文使用的 Linux 内核版本为:Linux-2.6.23什么是页缓存为了提升对文件的读写效..

2021-12-31 15:24:01 1663

原创 scala学习之(八)模式匹配

系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结前言Scala中的模式匹配类似于Java中的switch语法,但是更加强大。模式匹配语法中,采用match关键字声明,每个分支采用case关键字进行声明,

2021-12-31 15:03:21 119

原创 查理芒格思维模型 —— 费马帕斯卡系统

前言查理元思维模型最早的提倡者,他说这样的好晶体,至少能数出一百个,它们都来自「重要学科的重要结论」查理芒格提 在《穷查理宝典》中提到了有100多个思维模型,他尤其强调了:数学:复利原理、排列组合原理、费马帕斯卡系统统计学:高斯分布物理学:平衡、临界质量生物学:进化论、复杂适应系统工程学:后备系统,断裂点理论社会科学:自我组织理论、层创进化理论、艾尔法罗预测模型心理学:误判心理学本次讨论的就是费马帕斯卡系统一、什么是费马帕斯卡系统?故事起源:说起概率论起源的

2021-12-29 12:02:15 7338

转载 LeetCode刷题2

一、问题描述:整数转罗马数字(难度中等)罗马数字包含以下七种字符:I,V,X,L,C,D和M。字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做II,即为两个并列的 1。12 写做XII,即为X+II。 27 写做...

2021-12-27 17:00:25 48

原创 Scala学习之(七)集合

文章目录​​​​​一、集合简介1、不可变集合继承图2、可变集合继承图二、数组1.不可变数组2.可变数组3、不可变数组与可变数组的转换4、多维数组三、Seq集合(List)1、不可变List四、set集合1、不可变set2、可变mutable.Set五、Map集合1、不可变Map2、可变Map六、元组七、集合常用函数1、基本属性和常用操作3、集合计算初级函数4、集合计算高级函数5、普通wordcount案例6、复

2021-12-27 16:44:23 268 1

原创 关于 IDEA 2020.1.1 中bug的问题

因为软件自身的bug导致在安装了Lombok之后,一使用Lombok中的关于SpringBoot的标签,就报错。我最后实在是没有办法,升级到了2020.1.4问题自动消失。

2021-12-23 16:35:46 571

原创 Flink报错: java.net.BindException: Could not start rest endpoint on any port in port range 10000

项目场景:Flink算子执行报错:Caused by: java.net.BindException: Could not start rest endpoint on any port in port range 10000 at org.apache.flink.runtime.rest.RestServerEndpoint.start(RestServerEndpoint.java:234) at org.apache.flink.runtime.entrypoint.com...

2021-12-23 16:18:57 3097

原创 Flink背压的理解

Flink 运行时的构建块是操作符和流。每个操作符都在使用中间流,通过对它们进行转换, 产生新的流。描述网络机制的最佳类比是 Flink 使用具有有限容量的有效分布式阻塞队列。与 Java 连接线程的常规阻塞队列一样,一旦队列的缓冲区耗尽(有界容量),处理速度较慢的接收器就会降低发送器发送数据的速度。可以看一下这个外国博主的描述被压机制图片, 记录“A”进入Flink,被Task 1处理。 记录被序列化到缓冲区中, 这个缓冲区被传送到任务 2,然后从缓冲区读回记录。.

2021-12-08 20:30:55 1097

原创 Hive执行 报错:FAILED: Execution Error, return code 3 from org.apache.hadoop.hive.ql.exec.spark.SparkTask

项目场景:HiveOnSpark环境下执行hive脚本,报错。问题描述:提示:这里描述项目中遇到的问题:例如:数据传输过程中数据不时出现丢失的情况,偶尔会丢失一部分数据APP 中接收数据代码:@Override public void run() { bytes = mmInStream.read(buffer); mHandler.obtainMessage(READ_DATA, bytes, -1, buffer).sendToTarget(); } 原因分析:..

2021-12-08 18:35:27 7488 17

原创 HIve初始化报错SQL Error code: 1045

问题描述:执行命令[localhost@hadoop102 hive]$ /opt/module/hive/bin/schematool -initSchema -dbType mysql -verbose进行初始化hive,详细报错如下:[localhost@hadoop102 hive]$ /opt/module/hive/bin/schematool -initSchema -dbType mysql -verboseMetastore connection URL...

2021-11-15 20:23:44 2854 3

原创 Spark初探之SparkContext

1、定义/** * Main entry point for Spark functionality. A SparkContext represents the connection to a Spark * cluster, and can be used to create RDDs, accumulators and broadcast variables on that cluster. * * Only one SparkContext may be active per JV..

2021-11-03 21:01:04 1755

原创 Scala学习之(六)面向对象

系列文章目录目录系列文章目录前言一、Scala包1、包的命名2、包的说明3、包对象4、导包说明5、访问权限二、类和对象1.定义类2.属性3、方法4、创建对象5、构造器6、构造器参数三、封装四、继承五、抽象属性和抽象方法1、抽象属性和抽象方法2、匿名字类六、单例对象1、单例对象语法2、apply方法七、特质1、特质声明2、特质基本语法3、特质叠加4、特质叠加执行顺序5、特质自身类型.

2021-11-03 19:09:30 220

转载 Spark中的RDD容错机制

引入一般来说,分布式数据集的容错性有两种方式:数据检查点和记录数据的更新。面向大规模数据分析,数据检查点操作成本很高,需要通过数据中心的网络连接在机器之间复制庞大的数据集,而网络带宽往往比内存带宽低得多,同时还需要消耗更多的存储资源。因此,Spark选择记录更新的方式。但是,如果更新粒度太细太多,那么记录更新成本也不低。因此,RDD只支持粗粒度转换,即只记录单个块上执行的单个操作,然后将创建RDD的一系列变换序列(每个RDD都包含了他是如何由其他RDD变换过来的以及如何重建某一块数据的信息。...

2021-10-31 22:28:06 1425

原创 Scala学习之(四)流程控制

文章目录​​4.1 分支控制if-else4.1.1 单分支4.1.2 双分支4.1.3 多分支4.2 嵌套分支4.3 Switch分支结构4.4 For循环控制4.4.1 范围数据循环方式14.4.2 范围数据循环方式24.4.3 循环守卫4.4.4 循环步长4.4.5 嵌套循环4.4.6 引入变量4.4.7 循环返回值4.5 While循环控制4.6 do..while循环控制4.7 多重循环控制4.8 While循环...

2021-10-22 16:45:33 65

原创 Scala学习之(五)函数式编程

系列文章目录提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用一、函数基础1)面向对象编程解决问题,分解对象,行为,属性,然后通过对象的关系以及行为的调用来解决问题。对象:用户;行为:登录、连接jdbc、读取数据库属性:用户名、密码Scala语言是一个完全面向对象编程语言。万物皆对象2)函数式编程解决问题时,将问题分解成一个一个的步骤,将每个步骤进行封装(函数),通过调用这些封

2021-10-22 00:29:50 462

原创 Scala学习之(三)运算符

目录一、pandas是什么?第3章 运算符3.1 算术运算符3.2 关系运算符(比较运算符)3.3 逻辑运算符3.4 赋值运算符3.5 位运算符第3章 运算符运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。3.1 算术运算符1)基本语法 运算符 运算 范例 结果 + 正号 +3 3 ..

2021-10-21 16:14:04 50

空空如也

空空如也

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

TA关注的人

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