当前位置: 首页 > news >正文

从工具产品体验对比spark、hadoop、flink

作为一名大数据开发,从工具产品的角度,对比一下大数据工具最常使用的框架spark、hadoop和flink。工具无关好坏,但人的喜欢有偏好。

目录

    • 评价标准
      • 1 效率
      • 2 用户体验分析
        • 从用户的维度来看
        • 从市场的维度来看
        • 从产品的维度来看
      • 3 用户体验的基本原则
        • 成本和产出是否成正比
        • 操作是否“人性化”
      • 4. 功能性与用户体验评估
      • 总而言之
    • 大数据框架评估
      • 用户视角
        • 效率
        • 示例代码
          • Spark:计算Pi的近似值
          • Flink:实时流处理示例
      • 易用性
        • 示例代码
          • Hadoop:简单的WordCount程序
      • 容错性
    • 市场视角
      • 适应性和现代特性
      • 竞争优势
      • 用户群体
    • 产品视角
      • 维护和支持
      • 用户支持和文档
      • 一致性和愿景
    • 总结

image.png

评价标准

1 效率

  1. 明确目标:用户使用工具类产品是有明确的目标的。比如,美图产品需要帮助用户迅速进行美图。
  2. 简化操作:简化操作能够扩大用户数量,提升效率,提升用户满意度。操作困难重重的工具类产品注定会被替代。
  3. 容错性:使用工具有用错的可能,出错情况少、容错性高的工具让用户用起来更放心,更安心。

2 用户体验分析

  1. 用户群体(我是谁?)
  2. 解决场景下的痛点(我在哪里?)
  3. 解决痛点的形式(我在干什么?)
  4. 交互体验(UI感受)
  5. 行业优劣(竞品分析)

工具产品的共同道理,不管是什么形式的工具,其道理都是类似的:

从用户的维度来看
  1. 价值提供:工具是否能提供应该提供的价值,解决用户需求,完成用户的本质目标?
  2. 使用舒适度:用户在使用过程中是否感觉很舒服、容易?
  3. 目标促进:工具是否能吸引用户或促进用户完成目标?
  4. 易触达:工具是否易于触达?能否正常运行/使用?
从市场的维度来看
  1. 与时俱进:工具是否能与时俱进,比如设计风格、功能布局等?
  2. 功能对比:其他产品的功能是否更多更好?
  3. 用户量:工具的用户量是否最多?
从产品的维度来看
  1. 持续维护:工具是否会继续维护?
  2. 疑问解决:对工具有疑问时,是否有人及时解决?
  3. 定位不变:工具是否坚持自己的定位不变?

3 用户体验的基本原则

  1. 一看就用:好的用户体验,一看就能使用。
  2. 提高效率:提高用户效率,用完就走。
  3. 节省成本:节省成本,再次使用还会回来。

具体来说

成本和产出是否成正比
  • 作为工具,若使用成本大于产出成本,那么宁可不使用工具。使用成本包括:上手成本、时间成本、工具成本,缺一不可,任何一环都需要考虑并进行衡量。
操作是否“人性化”
  • 工具讲究易用性和效率,简单的使用界面和流程会使工具容易被接受(不包括军事或其他高级领域,只讨论2C)。

4. 功能性与用户体验评估

  1. 功能性:用户的需求是否满足,即客户要求的功能是否全部实现。
  2. 易用性:对新手用户来说,软件是否友好、方便,功能操作不需要用户花太多时间去学习或理解。
  3. 高效率性:软件的性能,在指定条件下实现功能所需的计算机资源的有效程度。效率反映了在完成功能要求时有没有浪费资源。资源包括内存、外存、通道能力及处理时间。
  4. 可靠性:在规定时间和条件下,软件维持其性能水平的程度。可靠性对某些软件是重要的质量要求,反映了软件在故障发生时能继续运行的程度。
  5. 可维护性:软件在研发时需求变更时进行相应修改的容易程度,以及上市后的运行维护的方便性。易于维护的软件系统也是易理解、易测试和易修改的,以便纠正或增加新功能,或允许在不同软件环境上操作。
  6. 可移植性:从一个环境转移到另一个环境的容易程度。

总而言之

“好不好用”圈定了讨论范围要围绕功能。从用户体验要素上来说,用户在进入产品之前有一个核心任务:

  • 范围层:在产品内是否能使用户完成自己的任务?
  • 结构层:用户完成任务的流程是否流畅?
  • 框架层:用户是否能清晰地找到完成任务的入口?
  • 表现层:任务完成各阶段的提示、反馈是否明确、有意义?

image.png

大数据框架评估

用户视角

效率
  1. Apache Hadoop:适用于处理大规模数据集,但设置和管理复杂,可能降低新用户的效率。
  2. Apache Spark:提供内存中处理,大大提升性能和速度,非常适合迭代算法和实时数据处理。
  3. Apache Flink:在实时流处理方面表现出色,提供高效的低延迟处理。
示例代码
Spark:计算Pi的近似值
from pyspark import SparkContext
import randomsc = SparkContext("local", "Pi Approximation")def inside(p):x, y = random.random(), random.random()return x*x + y*y < 1num_samples = 1000000
count = sc.parallelize(range(0, num_samples)).filter(inside).count()
pi = 4 * count / num_samples
print("Pi is roughly %f" % pi)
Flink:实时流处理示例
import org.apache.flink.api.common.functions.FlatMapFunction;
import org.apache.flink.api.java.tuple.Tuple2;
import org.apache.flink.streaming.api.datastream.DataStream;
import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;
import org.apache.flink.util.Collector;public class StreamingJob {public static void main(String[] args) throws Exception {final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();DataStream<String> text = env.socketTextStream("localhost", 9999);DataStream<Tuple2<String, Integer>> wordCounts = text.flatMap(new Tokenizer()).keyBy(value -> value.f0).sum(1);wordCounts.print();env.execute("Streaming WordCount");}public static final class Tokenizer implements FlatMapFunction<String, Tuple2<String, Integer>> {@Overridepublic void flatMap(String value, Collector<Tuple2<String, Integer>> out) {for (String word : value.split("\\s")) {out.collect(new Tuple2<>(word, 1));}}}
}

易用性

  1. Hadoop:学习曲线陡峭,需要管理其生态系统(HDFS, MapReduce, YARN),对初学者不太友好。
  2. Spark:提供丰富的API(Java, Scala, Python, R),集群管理更简便。
  3. Flink:同样提供丰富的API,设计上简化了流处理应用的开发。

用过hadoop再用spark的,应该再也不会用hadoop了

示例代码
Hadoop:简单的WordCount程序
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;import java.io.IOException;
import java.util.StringTokenizer;public class WordCount {public static class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable>{private final static IntWritable one = new IntWritable(1);private Text word = new Text();public void map(Object key, Text value, Context context) throws IOException, InterruptedException {StringTokenizer itr = new StringTokenizer(value.toString());while (itr.hasMoreTokens()) {word.set(itr.nextToken());context.write(word, one);}}}public static class IntSumReducer extends Reducer<Text, IntWritable, Text, IntWritable> {private IntWritable result = new IntWritable();public void reduce(Text key, Iterable<IntWritable> values, Context context) throws IOException, InterruptedException {int sum = 0;for (IntWritable val : values) {sum += val.get();}result.set(sum);context.write(key, result);}}public static void main(String[] args) throws Exception {Configuration conf = new Configuration();Job job = Job.getInstance(conf, "word count");job.setJarByClass(WordCount.class);job.setMapperClass(TokenizerMapper.class);job.setCombinerClass(IntSumReducer.class);job.setReducerClass(IntSumReducer.class);job.setOutputKeyClass(Text.class);job.setOutputValueClass(IntWritable.class);FileInputFormat.addInputPath(job, new Path(args[0]));FileOutputFormat.setOutputPath(job, new Path(args[1]));System.exit(job.waitForCompletion(true) ? 0 : 1);}
}

容错性

  1. Hadoop:具有良好的容错性,通过HDFS的容错存储和任务失败重执行机制实现。
  2. Spark:通过数据血统(lineage)和弹性分布式数据集(RDD)提供容错性。
  3. Flink:通过状态快照和细粒度恢复机制提供高级容错,确保流处理的稳健性。

市场视角

适应性和现代特性

  1. Hadoop:虽然仍在发展,但由于其批处理根源,被认为不如Spark和Flink现代。
  2. Spark:经常更新新特性,保持领先的大数据处理选择地位。
  3. Flink:因其实时处理能力和复杂事件处理支持迅速获得关注。

竞争优势

  1. Hadoop:虽然是基础性技术,但面临Spark和Flink等新框架的激烈竞争。
  2. Spark:凭借广泛采用、活跃社区和批处理与流处理的多功能性保持竞争优势。
  3. Flink:在实时分析领域竞争力强,吸引了对高吞吐量、低延迟处理有需求的用户。

用户群体

  1. Hadoop:广泛使用,但在许多组织中逐渐被Spark补充或替代。
  2. Spark:用户群体大且不断增长,尤其是在需要快速数据处理和机器学习能力的行业中。
  3. Flink:用户群体增长迅速,特别是在实时数据分析至关重要的行业中。

产品视角

image.png

维护和支持

  1. Hadoop:由强大的社区支持,并通过Cloudera和Hortonworks(现为Cloudera的一部分)等供应商提供企业支持。
  2. Spark:由Databricks(Spark的创建者)和庞大的开源社区支持,确保持续改进和支持。
  3. Flink:由Apache社区和Ververica等商业实体支持,提供企业支持和开发。

用户支持和文档

  1. Hadoop:有广泛的文档、教程和社区支持论坛。
  2. Spark:优秀的文档、众多教程和活跃的社区提供广泛支持。
  3. Flink:文档质量良好,社区支持不断增长,资源越来越多。

一致性和愿景

  1. Hadoop:在提供稳健、可扩展的存储和处理框架方面表现一致,但创新速度较慢。
  2. Spark:通过新特性和集成不断创新,保持统一的分析愿景。
  3. Flink:专注于实时流处理,保持清晰愿景并迅速演变以满足现代数据处理需求。

总结

通过效率、易用性、容错性、适应性、竞争优势、用户群体、维护支持、一致性和愿景等多个维度评估大数据框架,可以全面了解其可用性。

  • Apache Hadoop:最适合需要大规模批处理和强大管理能力的组织。
  • Apache Spark:适用于需要高效数据处理和批处理与流处理多功能性的环境。
  • Apache Flink:适合需要实时、低延迟处理和复杂事件处理能力的应用。

image.png

选择合适的框架取决于您的具体需求、现有基础设施和长期数据处理目标。每个框架都有其独特的优势,了解这些优势可以指导您为大数据项目做出明智的决策。

相关文章:

从工具产品体验对比spark、hadoop、flink

作为一名大数据开发&#xff0c;从工具产品的角度&#xff0c;对比一下大数据工具最常使用的框架spark、hadoop和flink。工具无关好坏&#xff0c;但人的喜欢有偏好。 目录 评价标准1 效率2 用户体验分析从用户的维度来看从市场的维度来看从产品的维度来看 3 用户体验的基本原则…...

【软件设计】详细设计说明书(word原件,项目直接套用)

软件详细设计说明书 1.系统总体设计 2.性能设计 3.系统功能模块详细设计 4.数据库设计 5.接口设计 6.系统出错处理设计 7.系统处理规定 软件全套资料&#xff1a;本文末个人名片直接获取或者进主页。...

java本地缓存(map,Guava,echcache,caffeine)优缺点,以及适用场景

前言 在高并发系统环境下&#xff0c;jvm本地缓存扮演着至关重要的角色&#xff0c;合理的应用能够使系统响应迅速&#xff0c;提高用户体验感&#xff0c;而分布式缓存redis则存在着网络io&#xff0c;以及流量消耗问题&#xff0c;需要和本地缓存搭配使用&#xff0c;才能使…...

Monica

在 《long long ago》中&#xff0c;我论述了on是一个刚出生的孩子的脐带连接在其肚子g上的形象&#xff0c;脐带就是long的字母l和字母n&#xff0c;l表脐带很长&#xff0c;n表脐带曲转冗余和连接之性&#xff0c;on表一&#xff0c;是孩子刚诞生的意思&#xff0c;o是身体&a…...

国产数据库中读写分离实现机制

在数据库高可用架构下会存在1主多备的部署&#xff0c;备节点可以根据业务场景分发一部分流量以充分利用资源&#xff0c;并减轻主库的压力&#xff0c;因此在数据库的功能上需要读写分离来实现。 充分利用备节点的资源&#xff0c;提升业务的吞吐量&#xff1b;防止运维等非业…...

kubernetes部署dashboard

kubernetes部署dashboard 1. 简介 Dashboard 是基于网页的 Kubernetes 用户界面。 你可以使用 Dashboard 将容器应用部署到 Kubernetes 集群中&#xff0c;也可以对容器应用排错&#xff0c;还能管理集群资源。 你可以使用 Dashboard 获取运行在集群中的应用的概览信息&#…...

FPGA早鸟课程第二弹 | Vivado 设计静态时序分析和实际约束

在FPGA设计领域&#xff0c;时序约束和静态时序分析是提升系统性能和稳定性的关键。社区推出的「Vivado 设计静态时序分析和实际约束」课程&#xff0c;旨在帮助工程师们掌握先进的设计技术&#xff0c;优化设计流程&#xff0c;提高开发效率。 课程介绍 关于课程 权威认证&…...

STM32项目分享:家庭环境监测系统

目录 一、前言 二、项目简介 1.功能详解 2.主要器件 三、原理图设计 四、PCB硬件设计 1.PCB图 2.PCB板打样焊接图 五、程序设计 六、实验效果 七、资料内容 项目分享 一、前言 项目成品图片&#xff1a; 哔哩哔哩视频链接&#xff1a; https://www.bilibili.…...

华为HCIP Datacom H12-821 卷5

1.单选题 下列哪种工具不能被 route-policy 的 apply 子句直接引用? A、IP-Prefix B、tag C、community D、origin 正确答案: A 解析: 因route-policy工具中, apply 后面跟的是路由的相关属性。 但是ip-prefix是用来匹配路由的工具。 2.单选题...

Mongodb数据库基本操作

本文为在命令行模式下Mongodb数据库的基本操作整理。 目录 数据库操作 创建数据库 查看所有数据 查看当前数据库 删除数据库 断开连接 查看命令api 集合操作 查看当前数据库下集合 创建集合 删除当前数据库中的集合 文档操作 插入文档 insertOne()方法 insertMa…...

【机器学习】基于Softmax松弛技术的离散数据采样

1.引言 1.1.离散数据采样的意义 离散数据采样在深度学习中起着至关重要的作用&#xff0c;它直接影响到模型的性能、泛化能力、训练效率、鲁棒性和解释性。 首先&#xff0c;采样方法能够有效地平衡数据集中不同类别的样本数量&#xff0c;使得模型在训练时能够更均衡地学习…...

.NET+Python量化【1】——环境部署和个人资金账户信息查询

前言&#xff1a;量化资料很少&#xff0c;.NET更少。那我就来开个先河吧~ 以下是使用QMT进行量化开发的环境部署和基础信息获取有关操作。 1、首先自己申请券商的QMT权限&#xff0c;此步骤省略。 2、登陆QMT&#xff0c;选择极简模式&#xff0c;或者独立交易模式之类的。会进…...

洛谷 P10584 [蓝桥杯 2024 国 A] 数学题(整除分块+杜教筛)

题目 思路来源 登录 - Luogu Spilopelia 题解 参考了两篇洛谷题解&#xff0c;第一篇能得出这个式子&#xff0c;第二篇有比较严格的复杂度分析 结合去年蓝桥杯洛谷P9238&#xff0c;基本就能得出这题的正确做法 代码 #include<bits/stdc.h> #include<iostream&g…...

深入讲解C++基础知识(一)

目录 一、基本内置类型1. 类型的作用2. 分类3. 整型3.1 内存描述及查询3.2 布尔类型 —— bool3.3 字符类型 —— char3.4 其他整型 4. 有符号类型和无符号类型5. 浮点型6. 如何选择类型7. 类型转换7.1 自动类型转换7.2 强制类型转换7.3 类型转换总结 8. 类型溢出8.1 注意事项 …...

Python爬虫实战:批量下载网站图片

1.获取图片的url链接 首先&#xff0c;打开百度图片首页&#xff0c;注意下图url中的index 接着&#xff0c;把页面切换成传统翻页版&#xff08;flip&#xff09;&#xff0c;因为这样有利于我们爬取图片&#xff01; 对比了几个url发现&#xff0c;pn参数是请求到的数量。…...

使用 JavaScript 获取电池状态

在现代的移动设备和笔记本电脑上&#xff0c;了解电池状态是一项非常有用的功能。使用 JavaScript 可以轻松地获取电池的充电状态、电量百分比等信息。本文将介绍如何使用 JavaScript 访问这些信息&#xff0c;并将其显示在网页上。 1. HTML 结构 首先&#xff0c;我们需要一…...

java—类反射机制

简述 反射机制允许程序在执行期间借助于Reflection API取得任何类的内部信息&#xff08;如成员变量&#xff0c;构造器&#xff0c;成员方法等&#xff09;&#xff0c;并能操作对象的属性及方法。反射机制在设计模式和框架底层都能用到。 类一旦加载&#xff0c;在堆中会产生…...

浏览器-服务器架构 (BS架构) 详解

目录 前言1. BS架构概述1.1 BS架构的定义1.2 BS架构的基本原理 2. BS架构的优势2.1 客户端简化2.2 易于更新和维护2.3 跨平台性强2.4 扩展性高 3. BS架构的劣势3.1 网络依赖性强3.2 安全性问题3.3 用户体验局限 4. BS架构的典型应用场景4.1 企业内部应用4.2 电子商务平台4.3 在…...

微型操作系统内核源码详解系列五(四):cm3下svc启动任务

系列一&#xff1a;微型操作系统内核源码详解系列一&#xff1a;rtos内核源码概论篇&#xff08;以freertos为例&#xff09;-CSDN博客 系列二&#xff1a;微型操作系统内核源码详解系列二&#xff1a;数据结构和对象篇&#xff08;以freertos为例&#xff09;-CSDN博客 系列…...

筛质数(暴力法、埃氏筛、欧拉筛)

筛质数&#xff08;暴力法、埃氏筛、欧拉筛&#xff09; 暴力法 思路分析&#xff1a; 直接双for循环来求解质数 如果不设置标记只是简单地执行了break会导致内部循环(由j控制)而不是立即打印i或者跳过它。如果打印语句写到内部循环中&#xff0c;也会导致每个 非素数也被打…...

使用USI作为主SPI接口

代码; lcd_drive.c //***************************************************************************** // // File........: LCD_driver.c // // Author(s)...: ATMEL Norway // // Target(s)...: ATmega169 // // Compiler....: AVR-GCC 3.3.1; avr-libc 1.0 // // D…...

AI播客下载:Eye on AI(AI深度洞察)

"Eye on A.I." 是一档双周播客节目&#xff0c;由长期担任《纽约时报》记者的 Craig S. Smith 主持。在每一集中&#xff0c;Craig 都会与在人工智能领域产生影响的人们交谈。该播客的目的是将渐进的进步置于更广阔的背景中&#xff0c;并考虑发展中的技术的全球影响…...

Flink 窗口触发器

参考&#xff1a; NoteWarehouse/05_BigData/09_Flink(1).md at main FGL12321/NoteWarehouse GitHub Flink系列 9. 介绍 Flink 窗口触发器、移除器和延迟数据等 | hnbian https://github.com/kinoxyz1/bigdata-learning-notes/blob/master/note/flink/Window%26%E6%97%B6…...

Java面试题:解释线程间如何通过wait、notify和notifyAll方法进行通信

在 Java 中&#xff0c;线程间的通信可以通过 wait()、notify() 和 notifyAll() 这三个方法实现。这些方法是 Java 线程 Thread 类的一部分&#xff0c;它们与 synchronized 关键字一起使用&#xff0c;以实现线程间的协调。 基本概念 wait()&#xff1a;当一个线程执行到 wa…...

【机器学习 复习】第9章 降维算法——PCA降维

一、概念 1.PCA &#xff08;1&#xff09;主成分分析&#xff08;Principal ComponentAnalysis&#xff0c;PCA&#xff09;一种经典的线性降维分析算法。 &#xff08;2&#xff09;原理&#xff0c;这里以二维转一维为例&#xff0c;原来的平面变成了一条直线 这是三维变二…...

Ubuntu系统docker gpu环境搭建

Ubuntu系统dockergpu环境搭建 安装步骤前置安装安装指定版本的依赖包用docker官方脚本安装Docker-ce添加稳定仓库和GPG秘钥更新源 安装docker安装nvidia-docker2重启docker服务阿里云镜像加速 相关命令网络 docker常用命令镜像容器 docker相关问题解决方案使用wsl时docker的容器…...

网络安全-如何设计一个安全的API(安全角度)

目录 API安全概述设计一个安全的API一个基本的API主要代码调用API的一些问题 BasicAuth认证流程主要代码问题 API Key流程主要代码问题 Bearer auth/Token auth流程 Digest Auth流程主要代码问题 JWT Token流程代码问题 Hmac流程主要代码问题 OAuth比较自定义请求签名身份认证&…...

微积分-导数1(导数与变化率)

切线 要求与曲线 C C C相切于 P ( a , f ( a ) ) P(a, f(a)) P(a,f(a))点的切线&#xff0c;我们可以在曲线上找到与之相近的一点 Q ( x , f ( x ) ) Q(x, f(x)) Q(x,f(x))&#xff0c;然后求出割线 P Q PQ PQ的斜率&#xff1a; m P Q f ( x ) − f ( a ) x − a m_{PQ} \…...

最新PHP仿猪八戒任务威客网整站源码/在线接任务网站源码

资源介绍 老规矩&#xff0c;截图为亲测&#xff0c;前后台显示正常&#xff0c;细节功能未测&#xff0c;有兴趣的自己下载。 PHP仿猪八戒整站源码下载&#xff0c;phpmysql环境。威客开源建站系统&#xff0c;其主要交易对象是以用户为主的技能、经验、时间和智慧型商品。经…...

Windows安装配置jdk和maven

他妈的远程连接不上公司电脑&#xff0c;只能在家重新配置一遍&#xff0c;在此记录一下后端环境全部配置 Windows安装配置JDK 1.8一、下载 JDK 1.8二、配置环境变量三、验证安装 Windows安装配置Maven 3.8.8一、下载安装 Maven并配置环境变量二、设置仓库镜像及本地仓库三、测…...

电子SOP实施(MQTT协议)

架构图 服务与程序 用docker启动mqtt broker(服务器) 访问&#xff1a;http://192.168.88.173:18083/#/dashboard/overview 用户名&#xff1a;admin 密码&#xff1a;*** 消息发布者(查找sop的url地址&#xff0c;发布出去) 修改url&#xff0c;重新发布消息 import ran…...

【Unity导航系统】Navigation组件的概念及其使用示例

Unity中的NavMeshObstacle组件是一个用于动态障碍物的组件&#xff0c;它可以实时地影响导航网格&#xff08;NavMesh&#xff09;。当游戏对象附加了NavMeshObstacle组件时&#xff0c;它可以在AI进行路径规划时被识别为障碍物&#xff0c;从而让AI避开这些动态变化的障碍。 …...

vue-cli 根据文字生成pdf格式文件 jsPDF

1.安装jspdf npm install jspdf --save 2.下载ttf格式文件 也可以用C:\Windows\Fonts下的字体文件&#xff0c;反正调一个需要的ttf字体文件就行&#xff0c;但有的字体存在部分字体乱码现象 微软雅黑ttf下载地址&#xff1a; FontsMarket.com - Download Microsoft YaHei …...

【嵌入式DIY实例】-Nokia 5110显示DS3231 RTC数据

Nokia 5110显示DS3231 RTC数据 文章目录 Nokia 5110显示DS3231 RTC数据1、硬件准备与接线2、代码实现本文将介绍如何使用 ESP8266 NodeMCU 板和 DS3231 RTC 模块制作一个简单的数字实时时钟,其中可以使用连接到 NodeMCU 的两个按钮设置时间和日期,并将它们打印在诺基亚 5110 …...

【十三】图解mybatis缓存模块之装饰器模式

图解mybatis缓存模块之装饰器模式 简介 之前有写过一篇博客介绍过mybatis的缓存模块设计【九】mybatis 缓存模块设计-CSDN博客 &#xff0c;当时着重讲解的是mybatis种一级缓存和二级缓存&#xff0c;本次博客补充讲解一下装饰器模式的应用&#xff0c;本篇主要分两部分讲解&a…...

字节大神强推千页PDF学习笔记,弱化学历问题,已拿意向书字节提前批移动端!

主要问java&#xff0c;以及虚拟机&#xff0c;问了一点android 1.实习项目有关的介绍以及问题回答 2.反射与代理的区别&#xff0c;动态代理&#xff0c;静态代理&#xff0c;二者的区别&#xff0c;以及代理模式的UML图 3.字节码技术 4.虚拟机的双亲委派&#xff0c;以及好…...

Python爬虫-贝壳二手房“改进版”

前言 本文是该专栏的第31篇,后面会持续分享python爬虫干货知识,记得关注。 在本专栏之前的文章《Python爬虫-贝壳二手房》中,笔者有详细介绍,基于python爬虫采集对应城市的二手房数据。 而在本文,笔者将基于该项目案例的基础上,进行一个项目代码的“改进版”。 具体实…...

zookeeper学习、配置文件参数详解

zookeeper学习、配置文件参数详解 zookeeper 配置文件参数详解tickTime 、session 的过期时间、maxSessionTimeout 三者之间的关系initLimit&#xff0c;syncLimit什么区别minSessionTimeout 默认值,**他的单位是ms** zookeeper 配置文件参数详解 ZooKeeper 是一个分布式协调服…...

SVG 模糊效果

SVG 模糊效果 SVG(Scalable Vector Graphics,可缩放矢量图形)是一种基于XML的图像格式,用于描述二维图形。它是一种矢量图形格式,因此可以无限放大而不失真。SVG广泛应用于网页设计、动画制作和图形编辑等领域。本文将介绍SVG中一种特殊的效果——模糊效果,以及如何使用…...

Electron+vite+vuetify项目搭建

最近想用Electron来进行跨平台的桌面应用开发。同时想用vuetify作为组件&#xff0c;于是想搭建一个这样的开发环境。其中踩了不少坑&#xff0c;总是会出现各种的编译错误和问题&#xff0c;依赖的各种问题&#xff0c;搞了好久最终环境终于弄好可正常开发了。这里分享下快速搭…...

洛谷:P1085 [NOIP2004 普及组] 不高兴的津津

1. 题目链接 https://www.luogu.com.cn/problem/P1085 P1085 [NOIP2004 普及组] 不高兴的津津 2. 题目描述 题目描述&#xff1a;津津每天要上课还要上辅导班&#xff0c;每天学习超过8小时就不开心&#xff0c;帮忙检查下津津的下周日程安排&#xff0c;然后告诉我她哪天不高…...

Webpack4从入门到精通以及和webpack5对比_webpack现在用的是哪个版本

3.1 打包样式资源css-loader、style-loader… {// 匹配哪些文件test: /\.less$/,// 使用哪些loader进行处理use: [// use数组中loader执行顺序&#xff1a;从右到左&#xff0c;从下到上&#xff0c;依次执行(先执行css-loader)// style-loader&#xff1a;创建style标签&#…...

巴鲁夫MacroBuilder2.0.0.0软件巴鲁夫和使用手侧

巴鲁夫MacroBuilder2.0.0.0软件巴鲁夫和使用手侧...

分享:Javascript开源桌面环境-Puter

Puter这是一个运行在浏览器里的桌面操作系统&#xff0c;提供了笔记本、代码编辑器、终端、画图、相机、录音等应用和一些小游戏。该项目作者出于性能方面的考虑没有选择 Vue 和 React 技术栈&#xff0c;而是采用的 JavaScript 和 jQuery 构建&#xff0c;支持 Docker 一键部署…...

【idea-jdk1.8】使用Spring Initializr 创建 Spring Boot项目没有JDK8

信息差真可怕&#xff01; 很久没创建springboot项目&#xff0c;今天使用idea的Spring Initializr 创建 Spring Boot项目时&#xff0c;发现java版本里&#xff0c;无法选择jdk1.8&#xff0c;只有17、21、22&#xff1b;前段时间也听说过&#xff0c;springboot将放弃java8&a…...

647. 回文子串(leetcode)

647. 回文子串&#xff08;leetcode&#xff09; 题目描述 给你一个字符串 s &#xff0c;请你统计并返回这个字符串中回文子串的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 示例1 输入&#xff1a;s “abc” 输出…...

【车载开发系列】汽车嵌入式开发常用工具介绍

【车载开发系列】汽车嵌入式开发常用工具介绍 【车载开发系列】汽车嵌入式开发常用工具介绍 【车载开发系列】汽车嵌入式开发常用工具介绍一. ChipON IDE For KungFu32二. ChipON PRO KF32三. GIT四. JLink五. S32DS六. parasoft ctest七. TCANLINPro八. vector Canoe 一. Chip…...

python脚本获取本机IP的方式

#方法一&#xff1a; #!/usr/bin/python import socket import fcntl import struct def get_ip_address(ifname): s socket.socket(socket.AF_INET,socket.SOCK_DGRAM) return socket.inet_ntoa(fcntl.ioctl( s.fileno(), 0x8915, struct.pack(256s,ifna…...

查看LabVIEW及各个模块和驱动的版本号

要方便地查看当前计算机上安装的LabVIEW版本以及各个模块和驱动的版本号&#xff0c;可以使用以下几种方法&#xff1a; 1. 使用NI MAX (Measurement & Automation Explorer) NI MAX 是一个强大的工具&#xff0c;可以帮助你管理National Instruments硬件、软件和驱动程序…...

LLM主流架构和模型

本文参考自https://github.com/HqWu-HITCS/Awesome-Chinese-LLM?tabreadme-ov-file和Huggingface中的ModelCard&#xff08;https://huggingface.co/&#xff09; LLM主要类别架构 LLM本身基于transformer架构。自2017年&#xff0c;attention is all you need诞生起&#x…...