html+servlet项目中的echart图表
介绍
ECharts 是一款由百度开源的,基于 JavaScript 的可视化图表库,它提供了丰富的图表类型和强大的交互功能,能将数据以直观、美观的图表形式展示出来,广泛应用于数据可视化、商业智能、数据分析等领域。
官网: Apache ECharts
优势:
- 丰富的图表类型:ECharts 提供了多种图表类型,包括柱状图、折线图、饼图、散点图、地图、雷达图等。每种图表类型都有多种样式和配置选项,可以满足不同数据展示需求。
- 高度可定制化:用户可以通过配置项对图表进行高度定制,包括图表的颜色、字体、线条样式、标记样式等。还可以自定义图表的标题、坐标轴、图例、提示框等组件的样式和布局。
- 数据驱动的可视化:ECharts 通过简单的数据格式,将数据与图表进行绑定。数据的变化会实时驱动图表的更新,方便用户动态展示数据。
- 良好的交互性:支持数据钻取、缩放、平移、筛选等交互操作,能让用户通过交互深入探索数据。还可以为图表元素绑定事件,实现更复杂的交互效果。
- 跨平台兼容:能在多种设备和平台上使用,包括桌面浏览器、移动设备等,并且能够自适应不同的屏幕尺寸,提供一致的可视化体验。
基本使用步骤:
- 引入 ECharts 库:在 HTML 页面中通过
<script>
标签引入 ECharts 的 JavaScript 文件。 - 创建图表容器:在 HTML 中创建一个具有固定宽高的 DOM 元素,作为图表的容器。
- 初始化图表:在 JavaScript 代码中,使用
echarts.init()
方法初始化图表实例,并传入图表容器元素。 - 配置图表:通过设置配置项来定义图表的各种属性,如标题、坐标轴、系列数据等。
- 渲染图表:使用图表实例的
setOption()
方法传入配置项,将图表渲染到页面上。
应用场景:
- 数据可视化分析:在数据分析和业务报表中,用于将数据以直观的图表形式展示出来,帮助用户快速理解数据的分布、趋势和关系,发现数据中的问题和规律。
- 数据监控与预警:在实时数据监控系统中,通过 ECharts 实时更新图表,展示系统的运行状态和关键指标的变化情况,当指标超出阈值时进行预警。
- 数据可视化展示:在数据可视化大屏、展览展示等场景中,使用 ECharts 创建出美观、炫酷的图表,展示数据的魅力,吸引观众的注意力。
- 数据可视化应用:在各种 Web 应用程序中,嵌入 ECharts 图表,为用户提供数据可视化的功能,增强应用程序的用户体验和数据展示效果。
项目中的应用:
1. 引入 echarts
库
在 HTML 文件的 <head>
标签里引入 echarts
库:
<script src="https://cdn.jsdelivr.net/npm/echarts@5.4.2/dist/echarts.min.js"></script>
这一操作会加载 echarts
库,进而在页面里使用其功能
2. 准备图表容器
在 HTML 文件的 <body>
标签中,创建两个用于放置图表的 <div>
容器
<div class="main-content"><div id="barChart" class="chart-container"></div><div id="pieChart" class="chart-container"></div>
</div>
每个 <div>
容器都有独一无二的 id
(barChart
和 pieChart
),这便于在 JavaScript 代码中定位这些容器。
3. 从后端获取数据
在 JavaScript 代码中,使用 $.ajax
方法从后端获取数据:
$.ajax({url: 'GetSalesDataServlet',type: 'GET',success: function (response) {// 处理成功响应},error: function (error) {// 处理错误响应}
});
此方法会向后端的 GetSalesDataServlet
发送一个 GET
请求,若请求成功,就会在 success
回调函数里处理返回的数据;若请求失败,则会在 error
回调函数里处理错误。
4. 提取数据
在 success
回调函数中,从后端返回的数据里提取类别和销售数量:
const dataList = response.data || [];
const categories = dataList.map(item => item.classfily);
const sales = dataList.map(item => {const count = parseInt(item.sales_count);return isNaN(count)? 0 : count;
});
categories
数组包含书籍的类别,sales
数组包含每个类别的销售数量。
5. 初始化柱状图
定义 initBarChart
函数来初始化柱状图:
function initBarChart(categories, sales) {const barChart = echarts.init(document.getElementById('barChart'));const barOption = {title: {text: '不同类型书籍销售情况'},tooltip: {trigger: 'axis',axisPointer: {type:'shadow'}},xAxis: {type: 'category',data: categories},yAxis: {type: 'value'},series: [{data: sales,type: 'bar'}]};barChart.setOption(barOption);
}
echarts.init
方法会初始化一个echarts
实例,关联到barChart
容器。barOption
对象定义了柱状图的配置选项,像标题、提示框、坐标轴和系列数据等。barChart.setOption(barOption)
方法会将配置选项应用到echarts
实例上,从而绘制出柱状图。
6. 初始化饼图
定义 initPieChart
函数来初始化饼图:
function initPieChart(categories, sales) {const pieChart = echarts.init(document.getElementById('pieChart'));const totalSales = sales.reduce((sum, value) => sum + value, 0);const pieData = categories.map((category, index) => {return {value: sales[index],name: category};});const pieOption = {title: {text: '不同类型书籍销售占比'},tooltip: {trigger: 'item'},series: [{name: '销售占比',type: 'pie',radius: '50%',data: pieData}]};pieChart.setOption(pieOption);
}
echarts.init
方法会初始化一个echarts
实例,关联到pieChart
容器。pieData
数组包含每个类别的销售数量和名称。pieOption
对象定义了饼图的配置选项,像标题、提示框和系列数据等。pieChart.setOption(pieOption)
方法会将配置选项应用到echarts
实例上,进而绘制出饼图。
GetSalesDataServlet
package com.qcby.order;import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.qcby.db.MysqlUtil;@WebServlet("/GetSalesDataServlet")
public class GetSalesDataServlet extends HttpServlet {private static final long serialVersionUID = 1L;public GetSalesDataServlet() {super();}protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 定义 SQL 语句(关联表查询,统计各分类的销售数量)String sql = "SELECT bc.classfily, COUNT(o.id) AS sales_count " +"FROM orders o " +"JOIN books b ON o.bid = b.id " +"JOIN book_categories bc ON b.cid = bc.id " +"GROUP BY bc.classfily";// 定义列名数组(与 SQL 中的 SELECT 字段顺序一致)String[] columns = {"classfily", "sales_count"};// 使用 MysqlUtil 直接获取 JSON 数据String jsonData = MysqlUtil.getJsonBySql(sql, columns);// 设置响应格式并返回数据response.setContentType("text/json;charset=utf-8");response.getWriter().write(jsonData);}protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {doGet(request, response);}
}
问题:
1. const categories = dataList.map(item => item.classfily);
这段 JavaScript 代码使用map()
方法遍历dataList
数组,并将每个元素的classfily
属性提取出来,组成一个新的数组categories
。
-
map()
方法:map()
是 JavaScript 数组的一个方法,它会对数组中的每个元素执行一个给定的函数,并返回一个新的数组,其中包含了每个元素执行函数后的结果。
-
箭头函数:
item => item.classfily
是一个箭头函数,它接受一个参数item
,表示dataList
数组中的每个元素。- 箭头函数的返回值是
item.classfily
,即每个元素的classfily
属性。
-
执行过程:
map()
方法会遍历dataList
数组中的每个元素,并将每个元素传递给箭头函数。- 箭头函数会返回每个元素的
classfily
属性,map()
方法会将这些返回值组成一个新的数组categories
。
const dataList = [{ classfily: '小说', sales_count: 100 },{ classfily: '传记', sales_count: 50 },{ classfily: '历史', sales_count: 75 }
];
const categories = ['小说', '传记', '历史'];
2.const sales = dataList.map(item => { // 确保 sales_count 能正确转换为数字 const count = parseInt(item.sales_count); return isNaN(count)? 0 : count; });
这段 JavaScript 代码使用map()
方法遍历dataList
数组,并将每个元素的sales_count
属性转换为数字类型。如果转换失败,则将其设置为 0。
-
map()
方法:map()
是 JavaScript 数组的一个方法,它会对数组中的每个元素执行一个给定的函数,并返回一个新的数组,其中包含了每个元素执行函数后的结果。
-
箭头函数:
item => {... }
是一个箭头函数,它接受一个参数item
,表示dataList
数组中的每个元素。- 箭头函数的返回值是经过处理后的
sales_count
属性值。
-
parseInt()
函数:parseInt(item.sales_count)
用于将item.sales_count
转换为整数类型。如果转换成功,则返回转换后的整数;如果转换失败,则返回NaN
(Not a Number)。
-
isNaN()
函数:isNaN(count)
用于检查count
是否为NaN
。如果是,则返回true
;否则返回false
。
-
三元运算符:
isNaN(count)? 0 : count
是一个三元运算符,它根据isNaN(count)
的结果来返回不同的值。如果count
是NaN
,则返回 0;否则返回count
。
-
执行过程:
map()
方法会遍历dataList
数组中的每个元素,并将每个元素传递给箭头函数。- 箭头函数会将每个元素的
sales_count
属性转换为整数类型,并使用isNaN()
函数检查转换结果。如果转换失败,则将其设置为 0。 - 箭头函数会返回经过处理后的
sales_count
属性值,map()
方法会将这些返回值组成一个新的数组sales
。
const dataList = [{ classfily: '小说', sales_count: '100' },{ classfily: '传记', sales_count: '50' },{ classfily: '历史', sales_count: 'abc' }
];
const sales = [100, 50, 0];
相关文章:
html+servlet项目中的echart图表
介绍 ECharts 是一款由百度开源的,基于 JavaScript 的可视化图表库,它提供了丰富的图表类型和强大的交互功能,能将数据以直观、美观的图表形式展示出来,广泛应用于数据可视化、商业智能、数据分析等领域。 官网: Ap…...
抖音小程序开发常见问题与代码解决方案
抖音小程序开发常见问题与代码解决方案 一、API调用与组件使用问题 1. 分享卡片样式不生效 问题:通过onShareAppMessage分享的小程序卡片样式显示旧版模板。 代码示例: javascript Page({ onShareAppMessage() { return …...
Springboot 手搓 后端 滑块验证码生成
目录 一、效果演示 二、后端滑块验证码生成思路 三、原理解析 四、核心代码拿走 滑块验证码react前端实现,见我的这篇博客:前端 React 弹窗式 滑动验证码实现_react中使用阿里云滑块验证码2.0前端接入及相关视觉-CSDN博客 一、效果演示 生成的案例…...
QPS说明
QPS(Queries Per Second,每秒查询数)是用于衡量服务器或系统处理请求能力的一个关键性能指标。 它表示服务器在一秒钟内能够处理的查询或请求的数量。 QPS的详细说明: 1. 定义 QPS:每秒查询数,指服务器…...
(六)机器学习---聚类与K-means
到本篇文章,我们先对前几篇所学习的算法进行一个回顾: 而本篇文章我们将会介绍聚类以及K-means算法。 分类问题回归问题聚类问题各种复杂问题决策树√线性回归√K-means√神经网络√逻辑回归√岭回归密度聚类深度学习√集成学习√Lasso回归谱聚类条件随机…...
macOS 更新后找不到钥匙串访问工具的解决方案
macOS 更新后找不到钥匙串访问工具的解决方案 随着macOS的不断更新,一些系统工具的位置可能会发生变化,给用户带来不便。钥匙串访问(Keychain Access)是macOS中一个非常重要的工具,用于管理密码、证书等敏感信息。最近…...
Mac 「brew」快速安装MySQL
安装MySQL 在 macOS 上安装 MySQL 环境可以通过Homebrew快速实现,以下是步骤指南: 方法 1:使用 Homebrew 安装 MySQL 1. 安装 Homebrew 如果尚未安装 Homebrew,可以通过以下命令安装: /bin/bash -c "$(curl -…...
代码随想录算法训练营第五十八天 | 1.拓扑排序精讲 2.dijkstra(朴素版)精讲 卡码网117.网站构建 卡码网47.参加科学大会
1.拓扑排序精讲 题目链接:117. 软件构建 文章讲解:代码随想录 思路: 把有向无环图进行线性排序的算法都可以叫做拓扑排序。 实现拓扑排序的算法有两种:卡恩算法(BFS)和DFS,以下BFS的实现思…...
Flutter Dart中的函数参数 默函数的定义 可选参数 箭头函数 匿名函认参数 命名参类数 闭包等
//使用forEach 打印下面的List里面的数据List list ["西瓜", "苹果", "香蕉"];list.forEach((value) {print(value);});//箭头函数1list.forEach((value) > print(value)); //只能一句//箭头函数2list.forEach((value) >{print(value), /…...
京东平台关键字搜索接口开发指南:Python实现与代码详解
一、接口概述 京东关键字搜索接口允许开发者通过HTTP请求获取平台商品的关键字搜索结果,常用于商品比价、数据分析等场景。本文基于Python演示如何调用京东搜索接口,解析返回数据并实现基础功能。 二、技术实现步骤 接口地址分析 京东未完全公开API…...
告别进度失控:用燃尽图补上甘特图的监控盲区
在职场中,项目经理最头疼的莫过于“计划赶不上变化”。明明用甘特图排好了时间表,任务却总像脱缰野马——要么进度滞后,要么资源分配失衡。甘特图虽能直观展示任务时间轴,但面对突发风险或团队效率波动时,它更像一张“…...
PHP框架在微服务迁移中能发挥什么作用?
微服务架构因其模块化、高可用性和弹性扩展能力,已成为现代分布式系统的核心设计模式。PHP作为一门长期服务于Web开发的脚本语言,其生态中的主流框架(如Laravel、Symfony)通过模块化设计、高效通信机制和丰富的工具链,…...
Linux驱动开发快速上手指南:从理论到实战
Linux驱动开发快速上手指南:从理论到实战 作为嵌入式Linux开发的核心技能之一,驱动开发对于硬件控制至关重要。面对众多章节和概念,初学者常感到无从下手。本文将为你梳理Linux驱动开发的关键路径,提供从理论到实战的完整指导&am…...
第1讲|R语言绘图体系总览(Base、ggplot2、ComplexHeatmap等)
目录 第1讲|R语言绘图体系总览 ✨ 引言:为什么R绘图如此重要? 🧩 1. Base绘图系统 🧩 2. ggplot2生态系统 🧩 3. ComplexHeatmap超级热图系统 🧩 4. 其他特色绘图库(快速了解) ✏️ 小结一句话 📅 预告下一讲 第1讲|R语言绘图体系总览 (Base、ggplot…...
Android FFmpeg 交叉编译全指南:NDK编译 + CMake 集成
开发环境搭建 下载最新版Android Studio,安装SDK和模拟器 在Android Studio中配置:Setting → Android SDK → SDK Tools → 勾选CMake 和 NDK → Apply,按照提示下载安装 SDK是Android应用开发的基础工具包,适合大多数上层逻辑…...
Spring AI 快速入门:从环境搭建到核心组件集成
Spring AI 快速入门:从环境搭建到核心组件集成 一、前言:Java开发者的AI开发捷径 对于Java生态的开发者来说,将人工智能技术融入企业级应用往往面临技术栈割裂、依赖管理复杂、多模型适配困难等挑战。Spring AI的出现彻底改变了这一局面——…...
研发内控新规下的合规之道:维拉工时助力企业穿越IPO审查雷区
📌 背景 | 全面注册制下,研发内控成“必修课” 在全面注册制背景下,证监会发布的《监管规则适用指引——发行类第9号:研发人员及研发投入》(简称“发行类9号”),对企业的研发费用归集、研发工时…...
PyTorch生成式人工智能实战(3)——分类任务详解
PyTorch生成式人工智能实战(3)——分类任务详解 0. 前言1. 使用 PyTorch 进行端到端的深度学习1.1 PyTorch 深度神经网络训练流程1.2 数据预处理 2. 二分类2.1 创建数据批次2.2 模型构建与训练2.3 模型测试 3. 多类别分类3.1 验证集和提前停止3.2 模型构…...
单机无穷大系统暂态稳定性仿真Matlab模型
1.模型简介 本仿真模型基于MATLAB/Simulink(版本MATLAB 2017Ra)软件。建议采用matlab2017 Ra及以上版本打开。(若需要其他低版本可联系代为转换) 电力系统是一个复杂的动态系统,系统一旦出现稳定性问题,可…...
12个HPC教程汇总!从入门到实战,覆盖分子模拟/材料计算/生物信息分析等多个领域
在科学研究、工程仿真、人工智能和大数据分析等领域,高性能计算 (High Performance Computing, HPC) 正扮演着越来越重要的角色。它通过并行处理、大规模计算资源的整合,极大提升了计算效率,使原本耗时数日的任务能够在数小时内完成。 随着计…...
零基础快速搭建AI绘画网站!用Gradio玩转Stable Diffusion
借助Gradio,简单几行Python代码即可快速搭建一个专属的AI绘画网站,轻松部署Stable Diffusion文生图应用,gradio自带的组件已经相当美化了,前端基础也省了! 好像大神的Stable Diffusion WebUI项目也是用的Gradio搭建的&…...
SpringCloud搭建Eureka注册中心
1、Eureka 的简介 Eureka 是 Netflix 开源的 服务注册与发现框架,后被 Spring Cloud 集成为核心组件,用于解决微服务架构中服务治理问题。其核心目标是通过动态管理服务实例信息,实现服务间的透明通信与负载均衡。Eureka 通过简洁的 Server-Client 模型,结合心跳、缓存…...
信息学奥赛一本通 1509:【例 1】Intervals | OpenJudge 百练 1201:Intervals
【题目链接】 ybt 1509:【例 1】Intervals OpenJudge 百练 1201:Intervals 【题目考点】 1. 贪心算法 树状数组 并查集 2. 差分约束算法 【解题思路】 解法1:贪心算法树状数组、并查集优化 该题属于区间选点问题,ybt 1324:…...
电子电子架构 --- 主机厂视角下ECU开发流程
我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 简单,单纯,喜欢独处,独来独往,不易合同频过着接地气的生活,除了生存温饱问题之外,没有什么过多的欲望,表面看起来很高冷,内心热情,如果你身…...
⭐Unity_Demolition Media Hap (播放Hap格式视频 超16K大分辨率视频 流畅播放以及帧同步解决方案)
播放大分辨率视频以及实现局域网视频同步是许多开发者会遇到的需求,AVPro有一个 Ultra Edition版本,也能播放Hap格式视频,之外就是Demolition Media Hap插件啦,实测即使是 7208*3808 大分辨率的视频帧率还是能稳定在30帧,它能帮助我们轻松解决…...
【MySQL】MySQL索引与事务
目录 前言 1. 索引 (index) 1.1 概念 1.2 作用 1.3 使用场景 1.4 索引的相关操作 查看索引 创建索引 删除索引 2. 索引背后的数据结构 2.1 B树 2.2 B+树的特点 2.3 B+树的优势 3. 事务 3.1 为什么使用事务 3.2 事…...
Apache Spark 源码解析
Apache Spark 是一个开源的分布式计算系统,提供了高效的大规模数据处理能力。下面我将对 Spark 的核心源码结构进行解析。 核心架构 Spark 的主要代码模块包括: Core (核心模块) 包含 Spark 的基本功能,如任务调度、内存管理、错误恢复等 …...
MySQL的日志--Undo Log【学习笔记】
MySQL的日志--Undo Log 知识来源: 《MySQL是怎样运行的》--- 小孩子4919 为了保证事务的原子性,当事务中途遇到各种错误需要将数据回滚(rollback)到原来的样子。为此MySQL提出撤销日志(Undo Log,也称undo日…...
一洽 全力辅助商户平台在线咨询解决方案
在商业数字化转型加速的背景下,客户对高效服务的需求日益增强。商户平台需要通过优化在线咨询服务,提升客户沟通效率与服务质量。一套综合性的在线咨询解决方案,通过整合多维度功能与智能技术,能够有效满足商户与客户的双向需求&a…...
ctfshow-web-新春欢乐杯
这几天做了这个新春欢乐杯,对于我这个小萌新来说有难度,同时也是收获满满,以下是我解题流程和收获 热身 <?php/* # -*- coding: utf-8 -*- # Author: h1xa # Date: 2022-01-16 15:42:02 # Last Modified by: h1xa # Last Modified …...
信奥赛之c++基础(初识循环嵌套与ASCII密码本)
🎠 游乐园编程奇遇记——循环嵌套与ASCII密码本 🎡 第一章:摩天轮与旋转木马——循环嵌套 🎪 游乐场里的双重循环 for(int 排数=1; 排数<=3; 排数++){// 外层循环像摩天轮for(int 座位=1; 座位<=5; 座位++){// 内层循环像旋转木马cout << "🎪"…...
同一电脑下使用 python2 和 python3
我本地先安装的2,然后再安装3。在电脑的环境变量 - Path 内,发现3的路径没有被加上,所以在cmd内输入python调用的是python2目录下的python.exe文件。pip.exe则是在Python/Scripts目录下,也就是默认调用的pip也是2的。 解决方案&…...
第十二届蓝桥杯 2021 C/C++组 直线
目录 题目: 题目描述: 题目链接: 思路: 核心思路: 两点确定一条直线: 思路详解: 代码: 第一种方式代码详解: 第二种方式代码详解: 题目:…...
向量数据库实践:存储和检索向量数据
向量数据库是一种专门设计用于存储和检索向量嵌入的数据库系统,能够支持语义搜索、推荐系统、图像识别等 AI 应用场景。 下面将详细介绍向量数据库中向量数据的存储和检索原理及实际应用,希望对各位读者有所帮助。 一. 向量数据的存储与检索流程 在向量…...
Pandas 数据导出:如何将 DataFrame 追加到 Excel 的不同工作表
在数据分析和数据处理过程中,将数据导出到 Excel 文件是一个常见的需求。Pandas 提供了强大的功能来实现这一需求,尤其是将数据追加到同一个 Excel 文件的不同工作表(Sheet)中。本文将详细介绍如何使用 Pandas 实现这一功能&#…...
区块链驱动的供应链金融创新:模型构建与商业化路径研究
区块链驱动的供应链金融创新:模型构建与商业化路径研究 1. 研究背景与意义 1.1 背景介绍 全球供应链金融市场规模预计2025年将达到3.6万亿美元,但传统模式面临四大核心问题:信息孤岛导致信任成本高昂(占交易成本15-20%…...
DAX Studio将PowerBI与EXCEL连接
DAX Studio将PowerBI与EXCEL连接 具体步骤如下: 第一步:先打开一个PowerBI的文件,在外部工具栏里打开DAXStudio,如图: 第二步:DAXStudio界面,点击Advanced选项卡-->Analyze in Excel&#…...
使用springboot+easyexcel实现导出excel并合并指定单元格
1:准备一个单元格合并策略类代码: import com.alibaba.excel.metadata.Head; import com.alibaba.excel.metadata.data.WriteCellData; import com.alibaba.excel.write.handler.CellWriteHandler; import com.alibaba.excel.write.metadata.holder.Writ…...
conformer编码器
abstract 最近,基于Transformer和卷积神经网络(CNN)的模型在自动语音识别(ASR)中显示出有希望的结果,优于递归神经网络(RNN)。Transformer模型擅长捕捉基于内容的全局交互,而CNN则有效地利用了局部特征。在这项工作中,我们通过研究如何将联合收割机卷积神经网络和tr…...
每日c/c++题 备战蓝桥杯(P1252洛谷 马拉松接力赛)
洛谷P1060 马拉松接力赛题解:贪心算法在资源分配中的巧妙应用 题目描述 P1060 马拉松接力赛是一道结合贪心策略与动态规划思想的资源分配问题。题目要求将25公里的马拉松接力赛合理分配给5名选手,使得总耗时最短。每位选手可跑1-10公里的整数距离&…...
操作指南:vLLM 部署开源大语言模型(LLM)
vLLM 是一个专为高效部署大语言模型(LLM)设计的开源推理框架,其核心优势在于显存优化、高吞吐量及云原生支持。 vLLM 部署开源大模型的详细步骤及优化策略: 一、环境准备与安装 安装 vLLM 基础安装:通过 pip 直接安装…...
目前市面上知名的数据采集器
程序员爱自己动手打造一切,但这样离钱就会比较远。 市面上知名的数据采集工具 数据采集工具(也称为网络爬虫或数据抓取工具)在市场上有很多选择,以下是目前比较知名和广泛使用的工具分类介绍: 一、开源免费工具 Scra…...
BitNet: 微软开源的 1-bit 大模型推理框架
GitHub:https://github.com/microsoft/BitNet 更多AI开源软件:发现分享好用的AI工具、AI开源软件、AI模型、AI变现 - 小众AI 微软专为 CPU 本地推理和极致压缩(低比特)大模型设计的推理框架。它支持对 1-bit/1.58-bit 量化模型进行…...
前端如何获取文件的 Hash 值?多种方式详解、对比与实践指南
文章目录 前言一、Hash 值为何重要?二、Hash 值基础知识2.1 什么是 Hash?2.2 Hash 在前端的应用场景2.3 常见的 Hash 算法(MD5、SHA 系列) 三、前端获取文件 Hash 的常用方式3.1 使用 SparkMD5 计算 MD5 值3.2 使用 Web Crypto AP…...
Java与Kotlin在Android开发中的全面对比分析
趋势很重要 语言发展背景与现状 Android操作系统自2008年正式发布以来,Java长期作为其主要的开发语言。这种选择源于Java语言的跨平台特性、成熟的生态系统以及广泛开发者基础。然而,随着移动开发需求的快速演变,Java在Android开发中逐渐暴…...
Android Kotlin 依赖注入全解:Koin appModule 配置与多 ViewModel 数据共享实战指南
一、基础配置与概念 1. 什么是 appModule appModule 是 Koin 依赖注入框架中的核心配置模块,用于集中管理应用中的所有依赖项。它本质上是一个 Koin 模块(org.koin.core.module.Module),通过 DSL 方式声明各种组件的创建方式和依…...
Flink TaskManager详解
1. TaskManager 概述 Apache Flink 的 TaskManager 是作业执行的核心工作节点,负责实际的数据处理任务。它与 JobManager 协同工作,接受其调度指令,管理本地资源(如 CPU、内存、网络),并执行具体的算子&am…...
Docker安装(Ubuntu22版)
前言 你是否还在为Linux上配置Docker而感到烦恼? 你是否还在为docker search,docker pull连接不上,而感到沮丧? 本文将解决以上你的所有烦恼!快速安装好docker! Docker安装 首先,我们得先卸载…...
《深入浅出ProtoBuf:从环境搭建到高效数据序列化》
ProtoBuf详解 1、初识ProtoBuf2、安装ProtoBuf2.1、ProtoBuf在Windows下的安装2.2、ProtoBuf在Linux下的安装 3、快速上手——通讯录V1.03.1、步骤1:创建.proto文件3.2、步骤2:编译contacts.proto文件,生成C文件3.3、步骤3:序列化…...
【含文档+PPT+源码】基于微信小程序连锁药店商城
项目介绍 本课程演示的是一款基于微信小程序连锁药店商城,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套系统 3.该项目附带的…...