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

【D3.js in Action 3 精译_043】5.1 饼图和环形图的创建(三):圆弧的绘制

当前内容所在位置:

  • 第五章 饼图布局与堆叠布局 ✔️
    • 5.1 饼图和环形图的创建 ✔️
      • 5.1.1 准备阶段(一)
      • 5.1.2 饼图布局生成器(二)
      • 5.1.3 圆弧的绘制(三) ✔️
      • 5.1.4 数据标签的添加(四)

文章目录

    • 5.1.3 圆弧的绘制 Drawing the arcs
      • 5.1.3.1 D3 色阶的用法 Using a color scale

《D3.js in Action》全新第三版封面

《D3.js in Action》全新第三版封面

【译者按】有了第四章绘制 D3 圆弧的基础后,再来实现本章的环形图就轻松多了,只是在一些细节处理上加入了新的知识点,比如 D3 色阶的配置。一起来看看吧。

5.1.3 圆弧的绘制 Drawing the arcs

有了带注解的数据集,下一步就可以绘制饼图的弧线了。接下来您会发现本节演示内容与上一章中弧线的绘制手法大同小异,因此本节将不再展开相关细节进行演示。如需了解相关细节,详见本书第 4 章内容。

在代码清单 5.4 中,我们先调用 d3.arc() 方法来初始化一个圆弧生成器,然后使用各种访问器函数(accessor functions)来设置环形图的内外半径、环形片段之间的间隙(即填充角)以及圆弧轨迹的圆角半径。如果内圆半径为 0,绘制的就是一个饼图;如若大于 0,则得到一个环形图(donut chart)。

本例与第 4 章采用的绘制策略相比,唯一的区别在于本例中可以在声明圆弧生成器时通过 startAngle()endAngle() 这两个访问器函数配置环形片段的初始角与终止角。而这些值都提前在数据集中算好了,直接使用 d.startAngled.endAngle 就能访问到。

最后,要让圆弧出现在屏幕上,还需要利用 D3 的数据绑定机制,为每个环形片段生成一个 SVG 路径元素 path。如以下代码清单 5.4 所示,我们给每段圆弧都指定了一个具体的类名(即 arc-${year}),然后通过它来选中元素并绑定数据。因为是在 For 循环中创建的环形图,这样一来可以防止 D3 在生成新的环形图时覆盖掉之前的图形。代码的最后,用到了圆弧生成器函数来计算各 path 元素的 d 属性的取值。

代码清单 5.4 生成并绘制圆弧的示例代码(详见 donut-charts.js

const arcGenerator = d3.arc().startAngle(d => d.startAngle) // 配置访问器函数 startAngle() 和 endAngle(),并在带注解的数据集中指定对应取值的 key 值.endAngle(d => d.endAngle)     .innerRadius(60).outerRadius(100).padAngle(0.02).cornerRadius(3);const arcs = donutContainer.selectAll(`.arc-${year}`) // 利用数据绑定机制为每个片段生成一个 path 元素.data(annotatedData)          .join("path")                 .attr("class", `arc-${year}`).attr("d", arcGenerator); // 调用 arcGenerator() 函数来配置 path 中的 d 属性

5.1.3.1 D3 色阶的用法 Using a color scale

保存项目并在浏览器中查看示例页,会看到绘制的环形图虽然形状有了,但圆弧全是黑色的。原因很简单:SVG 元素的默认填充色就是黑色。为了提高环形图的可读性,接下来将为每种音乐格式配置不同的颜色。

一个操作简单又方便复用的解决方案是给每段圆弧都配置好特定的颜色,即声明一组 色阶(color scale);色阶通常可以由 D3 的 d3.scaleOrdinal() 方法创建。D3 的 序数比例尺(ordinal scales) 能够将某个离散型的定义域映射到同样为离散型的某个值域上。在本例中,定义域即不同音乐格式组成的数组,而值域则是某个与格式一一对应的颜色值数组。

找到 scales.js 文件,并在里面声明一个 D3 序数比例尺,然后赋给一个常量 colorScale。然后提取 formatsInfo 数组中的格式 ID 字段,作为比例尺的定义域;对于颜色值也做类似处理。您也可以根据自己的喜好进行相应调整。本章将沿用该色阶来设置示例项目中的所有图表。

const colorScale = d3.scaleOrdinal();const defineScales = (data) => {colorScale.domain(formatsInfo.map(f => f.id)).range(formatsInfo.map(f => f.color));};

然后再回到 donut-charts.js 文件,并通过指定 path 元素的 fill 属性(attribute)来配置每个环形片段的具体颜色。只需按照下列格式调用上面声明的色阶函数即可:

const arcs = donutContainer.selectAll(`.arc-${year}`).data(annotatedData)          .join("path")                 .attr("class", `arc-${year}`).attr("d", arcGenerator).attr("fill", d => colorScale(d.data.format));

保存项目并再次查看浏览器中的页面效果——看上去还不错!如图 5.7 所示,每段圆弧已按照从大到小的顺序排列好了,这样可以进一步提高图表的可读性。从图中可以清晰地看到在 1975 年、1995 年以及 2013 年三年中,每年的销售额在音乐格式方面发生的结构性转变;每年的主流音乐格式都各不相同。

图 5.7 分别代表 1975 年、1995 年以及 2013 年的环形图效果对比

【图 5.7 分别代表 1975 年、1995 年以及 2013 年的环形图效果对比】

译注
本章示例较前面章节都更为复杂,为了便于演示,作者都省略了完整的实现代码。学习时一定记得在本地搭建好服务器环境跟着文中的进度落地实操。以下为我自己的本地实现代码:

// donut-charts.js:
const drawDonutCharts = (data) => {const svg = d3.select("#donut").append("svg").attr("viewBox", `0 0 ${width} ${height}`); // 环形图总容器的声明const donutContainers = svg.append("g").attr("transform", `translate(${margin.left}, ${margin.top})`);// 定义指定的年份数组const years = [1975, 1995, 2013];// 从数据集中筛除年份列,仅保留音乐格式列const formats = data.columns.filter((format) => format !== "year");years.map((year) => {// 添加具体年份的环形图容器(共三个)const donutContainer = donutContainers.append("g").attr("transform", `translate(${xScale(year)}, ${innerHeight/2})`);const yearData = data.filter((d) => d.year === year)[0];const formattedData = formats.map((format) => ({format,sales: yearData[format],}));// 定义饼图布局函数const pieGenerator = d3.pie().value((d) => d.sales);// 获取带注解的数据集const annotatedData = pieGenerator(formattedData);// 定义圆弧生成器const arcGenerator = d3.arc().startAngle(d => d.startAngle).endAngle(d => d.endAngle)     .innerRadius(60).outerRadius(100).padAngle(0.02).cornerRadius(3);// 绘制当前年份对应的环形图const arcs = donutContainer.selectAll(`.arc-${year}`).data(annotatedData)          .join("path")                 .attr("class", `arc-${year}`).attr("d", arcGenerator).attr("fill", d => colorScale(d.data.format)); // 应用 D3 色阶});        
};// scales.js:
// Initialize the scales here
const xScale = d3.scaleBand(); // 声明分段比例尺
const colorScale = d3.scaleOrdinal();const defineScales = (data) => {// Define the scales domain and range herexScale.domain(data.map(d => d.year)).range([0, innerWidth]);colorScale.domain(formatsInfo.map(f => f.id)).range(formatsInfo.map(f => f.color));
};

最终实测页面效果:

补图:实测本节绘制环形图后的页面最终效果

【补图:实测本节绘制环形图后的页面最终效果】

(第三部分完)



另附:专栏文章连载期间 完全免费,后续 不排除 调整为收费专栏。对 D3.js 感兴趣、或者想要从零开始彻底掌握 D3 的朋友们强烈建议及时关注本专栏,一起学习交流,共同进步!

目前译好的其他章节内容如下(可进入专栏查看详情):

  • 第一部分 D3.js 基础知识
    • 第一章 D3.js 简介(已完结)
      • 1.1 何为 D3.js?
      • 1.2 D3 生态系统——入门须知
      • 1.3 数据可视化最佳实践(上)
      • 1.3 数据可视化最佳实践(下)
      • 1.4 本章小结
    • 第二章 DOM 的操作方法(已完结)
      • 2.1 第一个 D3 可视化图表
      • 2.2 环境准备
      • 2.3 用 D3 选中页面元素
      • 2.4 向选择集添加元素
      • 2.5 用 D3 设置与修改元素属性
      • 2.6 用 D3 设置与修改元素样式
      • 2.7 本章小结
    • 第三章 数据的处理(已完结)
      • 3.1 理解数据
      • 3.2 准备数据
      • 3.3 将数据绑定到 DOM 元素
        • 3.3.1 利用数据给 DOM 属性动态赋值
      • 3.4 让数据适应屏幕
        • 3.4.1 比例尺简介(上篇)
        • 3.4.2 线性比例尺(中篇)
          • 3.4.2.1 基于 Mocha 测试 D3 线性比例尺(DIY 实战)
        • 3.4.3 分段比例尺(下篇)
          • 3.4.3.1 使用 Observable 在线绘制 D3 条形图(DIY 实战)
      • 3.5 加注图表标签(上篇)
        • 3.5.1 人物专访:Krisztina Szűcs(下篇)
      • 3.6 本章小结
    • 第四章 直线、曲线与弧线的绘制
      • 4.1 坐标轴的创建(上篇)
        • 4.1.1 D3 中的边距约定(中篇)
        • 4.1.2 坐标轴的生成(中篇)
          • 4.1.2.1 比例尺的声明(中篇)
          • 4.1.2.2 坐标轴的添加(下篇)
          • 4.1.2.3 轴标签的添加(下篇)
      • 4.2 D3 折线图的绘制
        • 4.2.1 直线生成工具的使用
        • 4.2.2 对数据点作曲线插值处理
      • 4.3 D3 面积图的绘制
        • 4.3.1 面积图生成工具的用法
        • 4.3.2 用标签提高图表的可读性
      • 4.4 D3 弧形图的绘制
        • 4.4.1 D3 中的极坐标系
        • 4.4.2 圆弧生成器的使用
        • 4.4.3 圆弧形心的计算
        • 4.4.4 人物专访:Francis Gagnon、Patricia Angkiriwang 和 Olivia Gélinas
      • 4.5 本章小结

相关文章:

【D3.js in Action 3 精译_043】5.1 饼图和环形图的创建(三):圆弧的绘制

当前内容所在位置: 第五章 饼图布局与堆叠布局 ✔️ 5.1 饼图和环形图的创建 ✔️ 5.1.1 准备阶段(一)5.1.2 饼图布局生成器(二)5.1.3 圆弧的绘制(三) ✔️5.1.4 数据标签的添加(四&…...

7. 一分钟读懂“单例模式”

7.1 模式介绍 单例模式就像公司里的 打印机队列管理系统,无论有多少员工提交打印任务,大家的请求都汇总到唯一的打印管理中心,按顺序排队输出。这个中心必须全局唯一,避免多个队列出现资源冲突,保证打印任务井然有序。…...

如何让谷歌外链看起来更真实?

在SEO优化过程中,外链的自然性往往会被忽视,尤其是在一些急于见效的策略中,外链往往集中在高权重的少数几个网站上,导致外链结构单一且缺乏多样性。这样的外链网络容易让搜索引擎怀疑其真实性,进而影响网站排名。如何才…...

C标签和 EL表达式的在前端界面的应用

目录 前言 常用的c标签有: for循环 1 表示 普通的for循环的 2 常在集合中使用 表示 选择关系 1 简单的表示如果 2 表示如果。。否则。。 EL表达式 格式 : ${属性名/对象/ 集合} 前言 本篇博客介绍 c标签和el表达式的使用 使用C标签 要引入 …...

Luma 视频生成 API 对接说明

Luma 视频生成 API 对接说明 随着 AI 的应用变广,各类 AI 程序已逐渐普及。AI 已逐渐深入到人们的工作生活方方面面。而 AI 涉及的行业也越来越多,从最初的写作,到医疗教育,再到现在的视频。 Luma 是一个专业高质量的视频生成平…...

嵌入式基础:Linux C语言:Day7

重点&#xff1a; strlen()函数\strcpy()函数\strcat实现\strcmp()实现 数组的清空&#xff1a;bzero函数、memset函数 一、字符数组 <1> 概念 字符数组本质上就是一个数组&#xff0c;保存一个个字符&#xff0c;也一般用来保存字符串 字符串由多个字符组成的一个字符…...

阿里云盘permission denied

问题是执行 ./aliyunpan 时遇到了 Permission denied 的错误。这通常是因为文件没有执行权限。以下是解决问题的步骤&#xff1a; 检查文件权限 运行以下命令检查文件的权限&#xff1a; ls -l aliyunpan输出中会看到类似以下内容&#xff1a; -rw-r--r-- 1 user group 123…...

Flink学习连载文章12--FlinkSQL高级部分

eventTime 测试数据如下&#xff1a; {"username":"zs","price":20,"event_time":"2023-07-17 10:10:10"} {"username":"zs","price":15,"event_time":"2023-07-17 10:10:3…...

缓冲区溢出基础与实践

缓冲区溢出 缓冲区溢出是指当计算机向缓冲区内填充数据时超过了缓冲区本身的容量&#xff0c;溢出的数据覆盖在合法数据上。理想的情况是&#xff1a;程序检查数据长度并不允许输入超过缓冲区长度的字符&#xff0c;但是绝大多数程序都会假设数据长度总是与所分配的储存空间相匹…...

matlab figure函数 single 数据类型

1.matlab figure函数详细介绍 在MATLAB中&#xff0c;figure函数用于创建新的图形窗口或激活现有的图形窗口。以下是figure函数的详细介绍和用法&#xff1a; 基本用法 创建新图形窗口&#xff1a;不带任何参数调用figure会创建一个新的图形窗口&#xff0c;并将其设为当前活…...

量化交易系统开发-实时行情自动化交易-8.15.Ptrade/恒生平台

19年创业做过一年的量化交易但没有成功&#xff0c;作为交易系统的开发人员积累了一些经验&#xff0c;最近想重新研究交易系统&#xff0c;一边整理一边写出来一些思考供大家参考&#xff0c;也希望跟做量化的朋友有更多的交流和合作。 接下来会对于Ptrade/恒生平台介绍。 P…...

Vue03

目录 一、今日目标 1.生命周期 2.综合案例-小黑记账清单 3.工程化开发入门 4.综合案例-小兔仙首页 二、Vue生命周期 三、Vue生命周期钩子 四、生命周期钩子小案例 1.在created中发送数据 六、工程化开发模式和脚手架 1.开发Vue的两种方式 2.Vue CLI脚手架 基本介绍…...

【AI学习】Mamba学习(十九):关于S4-FouT

在前面《Mamba学习&#xff08;十六&#xff09;&#xff1a;从S4到S5模型》一文中&#xff0c;提到了S4D-Lin&#xff0c;其具体状态矩阵A的初始化形式为&#xff1a; S4D-Lin对比S4D-Inv是一种更简单的形式&#xff0c;可以看作是对S4-FouT&#xff08;S4的另外一种变体&am…...

YOLOv5-C3模块实现

YOLOv5-C3模块实现 &#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客 &#x1f356; 原作者&#xff1a;K同学啊 电脑系统&#xff1a;Windows11 显卡型号&#xff1a;NVIDIA Quadro P620 语言环境&#xff1a;python 3.9.7 编译器&#xff1a;jupyt…...

ubuntu下Qt5自动编译配置QtMqtt环境(10)

文章目录 [toc]1、概述2、下载QtMqtt源码3、编译4、验证5、参考6、视频 更多精彩内容&#x1f449;内容导航 &#x1f448;&#x1f449;Qt网络编程 &#x1f448; 1、概述 Qt默认是不包含mqtt库的&#xff0c;如果需要使用到mqtt库就只能自己编译配置&#xff1b; 网络所有的…...

切比雪夫不等式:方差约束下的概率估计

切比雪夫不等式&#xff1a;方差约束下的概率估计 背景 在概率分析中&#xff0c;切比雪夫不等式是一个常用的工具&#xff0c;它通过引入随机变量的 方差信息&#xff0c;给出了偏离均值的概率界限。这一不等式是对 马尔科夫不等式 的自然扩展&#xff0c;结合了更丰富的分布…...

SIP系列七:ICE框架(P2P通话)

我的音视频/流媒体开源项目(github) SIP系列目录 目录 一、NAT 1、NAT介绍 2、NAT类型 2.1、 完全圆锥型NAT 2.2、受限圆锥型NAT 2.3、端口受限圆锥型NAT 2.4、对称NAT 3、NAT打洞 3.1、不同一NAT下 3.2、同一NAT下 二、ICE 三、ICE中的SDP 至此&#x…...

小程序-基于java+SpringBoot+Vue的智慧校园管理系统设计与实现

项目运行 1.运行环境&#xff1a;最好是java jdk 1.8&#xff0c;我们在这个平台上运行的。其他版本理论上也可以。 2.IDE环境&#xff1a;IDEA&#xff0c;Eclipse,Myeclipse都可以。推荐IDEA; 3.tomcat环境&#xff1a;Tomcat 7.x,8.x,9.x版本均可 4.硬件环境&#xff1a…...

Visual Studio 2022创建离线安装包

步骤1&#xff1a; 下载 Visual Studio 引导程序(最新版) 历史版本 步骤2 新建文件夹“E:\VS2022”&#xff0c;将下载的“vs_Professional.exe”拷贝到文件夹下在此文件夹窗口按住shift鼠标右键&#xff0c;选择“在此处打开powershell窗口” 步骤3 根据需要将代码复制到…...

Android 实现中英文切换

在开发海外项目的时候&#xff0c;需要实现app内部的中英文切换功能&#xff0c;所有的英文都是内置的&#xff0c;整体思路为&#xff1a; 创建一个sp对象&#xff0c;存储当前系统的语言类型&#xff0c;然后在BaseActivity中对语言进行判断&#xff1b; //公共Activitypubl…...

CmakeLists学习刨根问底

必要的两项内容 cmake_minimum_required(VERSION 2.5)project(mymuduo) 这行代码指定了构建项目所需的CMake最低版本为2.5。CMake是一个跨平台的自动化构建系统&#xff0c;它使用CMakeLists.txt文件来定义项目的构建过程。定义项目的名称为mymuduo。CMake将使用这个名称来生成…...

策略模式实战 - 猜拳游戏

**可以整体的替换一套算法&#xff0c;这就是策略模式。**这样对于同一个问题&#xff0c;可以有多种解决方案——算法实现的时候&#xff0c;可以通过策略模式来非常方便的进行算法的整体替换&#xff0c;而各种算法是独立封装好的&#xff0c;不用修改其内部逻辑。 具体的实…...

VoCo-LLaMA: Towards Vision Compression with Large Language Models

视觉语言模型在各种多模态任务上取得了显著的成功&#xff0c;但经常受到有限上下文窗口和处理高分辨率图像输入和视频的高计算成本的瓶颈。视觉压缩可以通过减少视觉令牌数量避免该问题。先前方法使用额外模块压缩视觉令牌并强制LLM理解压缩的令牌。然而&#xff0c;LLM对视觉…...

每日小知识

Kafka是一个分布式流平台&#xff0c;具有高性能、高可靠性和可扩展性的特点。它主要用于处理实时的数据流&#xff0c;将数据以高吞吐量的方式进行发布和订阅。以下是关于Kafka的几个基本概念和优势的介绍&#xff1a; 概念&#xff1a; 生产者&#xff08;Producer&#xf…...

Linux其二设置端口号,静态ip以及命令

目录 1、VI编辑器 【linux版本的文本文件】 2&#xff09; 补充的vi编辑器的其他内容(了解) 2、ln 连接的意思 link的缩写 3、文件的查看 【重点】 4、压缩与解压&#xff08;重点&#xff09; 5、find 查找命令 6、which & whereis 作用是一样的&#xff0c;表示某…...

吉林大学23级数据结构上机实验(第7周)

A 去火车站 寒假到了&#xff0c;小明准备坐火车回老家&#xff0c;现在他从学校出发去火车站&#xff0c;CC市去火车站有两种方式&#xff1a;轻轨和公交车。小明为了省钱&#xff0c;准备主要以乘坐公交为主。CC市还有一项优惠政策&#xff0c;持学生证可以免费乘坐一站轻轨&…...

SpringBoot(整合MyBatis + MyBatis-Plus + MyBatisX插件使用)

文章目录 1.整合MyBatis 1.需求分析2.数据库表设计3.数据库环境配置 1.新建maven项目2.pom.xml 引入依赖3.application.yml 配置数据源4.Application.java 编写启动类5.测试6.配置类切换druid数据源7.测试数据源是否成功切换 4.Mybatis基础配置 1.编写映射表的bean2.MonsterMap…...

【2024最新】基于Springboot+Vue的网上图书商城平台Lw+PPT

作者&#xff1a;计算机搬砖家 开发技术&#xff1a;SpringBoot、php、Python、小程序、SSM、Vue、MySQL、JSP、ElementUI等&#xff0c;“文末源码”。 专栏推荐&#xff1a;SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;Java精选实战项…...

JAVA-面向对象基础

文章目录 概要封装多态抽象类接口内部类为什么需要内部类 概要 面向对象是一种编程范式或设计哲学&#xff0c;它将软件系统设计为由多个对象组成&#xff0c;这些对象通过特定的方式相互作用 封装 将数据和操作数据的方法封装在一个类中&#xff0c;并通过访问修饰符控制对…...

Y3编辑器官方文档1:编辑器简介及菜单栏详解(文件、编辑、窗口、细节、调试)

文章目录 一、新建项目二、 编辑器主界面2.1 游戏场景2.2 导航栏/菜单栏2.3 功能栏三、菜单栏详细介绍3.1 文件3.1.1 版本管理3.1.2 项目管理(多关卡)3.1.2.1 多关卡功能说明3.1.2.2 关卡切换与关卡存档3.2 编辑3.2.1 通用设置3.2.2 键位设置3.3 窗口(日志)3.4 细节3.4.1 语言…...

力扣94题:二叉树的中序遍历

力扣94题&#xff1a;二叉树的中序遍历&#xff08;C语言实现详解&#xff09; 题目描述 给定一个二叉树的根节点 root &#xff0c;返回它的中序遍历&#xff08;Inorder Traversal&#xff09;。 中序遍历的规则是&#xff1a; 先访问左子树&#xff1b;再访问根节点&…...

【数据结构】二叉树的性质和存储结构

性质 在二叉树的第i层上至多有2^{i-1}个结点,至少有1个结点 深度为k的二叉树至多有2^{k-1}个结点&#xff08;k≥1&#xff09;&#xff0c;至少有k个结点 对任何一棵二叉树T&#xff0c;如果其叶子数为n0&#xff0c;度为2的结点数为n2&#xff0c;则n0n21 具有n个结点的完…...

【Spring项目】图书管理系统

阿华代码&#xff0c;不是逆风&#xff0c;就是我疯 你们的点赞收藏是我前进最大的动力&#xff01;&#xff01; 希望本文内容能够帮助到你&#xff01;&#xff01; 目录 一&#xff1a;项目实现准备 1&#xff1a;需求 &#xff08;1&#xff09;登录 2&#xff1a;准备…...

TCP编程案例

笔记&#xff1a;&#xff08;本题可能需要的&#xff09; TCP协议&#xff1a; TCP协议进行通信的两个应用进程&#xff1a;客户端、服务端。 使用TCP协议前&#xff0c;须先建立TCP连接&#xff0c;形成基于字节流的传输数据通道 传输前&#xff0c;采用“三次握手”方式…...

PyTorch 实现动态输入

使用 PyTorch 实现动态输入&#xff1a;支持训练和推理输入维度不一致的 CNN 和 LSTM/GRU 模型 在深度学习中&#xff0c;处理不同大小的输入数据是一个常见的挑战。许多实际应用需要模型能够灵活地处理可变长度的输入。本文将介绍如何使用 PyTorch 实现支持动态输入的 CNN 和…...

网络数据库

创建删除修改模式create schemadrop schema表create tabledrop tablealter table视图create view drop view索引create indexdrop index alter index 定义模式&#xff1a;create schema 《模式名》 authorization 《用户名》表定义语句 视图定义语句 授权定义语句//未指…...

【软考速通笔记】系统架构设计师⑲——专业英语

文章目录 一、前言二、常用名词三、架构风格四、非功能需求五、应用架构六、软件架构重用 一、前言 笔记目录大纲请查阅&#xff1a;【软考速通笔记】系统架构设计师——导读 二、常用名词 名词翻译architecture架构system系统design设计requirements需求components组件constr…...

Android APP自学笔记

摘抄于大学期间记录在QQ空间的一篇自学笔记&#xff0c;当前清理空间&#xff0c;本来想直接删除掉的&#xff0c;但是感觉有些舍不得&#xff0c;因此先搬移过来。 Android导入已有外部数据库 2015.06.26在QQ空间记录&#xff1a;在Android中不能直接打开res aw目录中的数据…...

Spring 事务和事务传播机制

Spring 事务和事务传播机制 一、Spring 事务的基本概念 事务是一组操作&#xff0c;被视为一个不可分割的工作单元&#xff0c;要么全部完成&#xff0c;要么全部失败回滚&#xff0c;以此来确保数据的一致性和完整性。Spring事务管理允许我们在应用程序中声明式地或编程式地…...

VSCode(四)CMake调试

1. 工具准备 1.1 C环境插件 1.2 CMake插件 2. Cmake工程 2.1 创建项目文件夹 ex:CMAKE_TEST 2.2 创建CMake工程 &#xff08;shift ctl P), 选择"CMAKE: Quick Start": 2.3 填写project name: (ex: test_cmake) 2.4 选择”Executable“ 项目文件内会自动…...

创建存储过程

在student数据库中&#xff0c;创建一个名为ST_CHAXUN_01的存储过程&#xff0c;该存储过程返回计算机系学生的“姓名”、“性别”、“出生日期”信息。 操作步骤如下&#xff1a; ① 在“对象资源管理器”窗格中&#xff0c;展开“数据库”结点。 ② 单击相应的数据库&#…...

macOS 15.1.1 (24B2091) 系统中快捷键符号及其代表的按键的对照表

以下是 macOS 15.1.1 (24B2091) 系统中快捷键符号及其代表的按键的对照表&#xff1a; 符号按键名称描述⌘Command (Cmd)常用的功能键&#xff0c;用于执行大多数快捷操作。⌥Option (Alt)Option 键&#xff0c;常用于辅助操作和特殊字符输入。⇧ShiftShift 键&#xff0c;常用…...

ftp服务器搭建-安装、配置及验证

ftp服务器搭建-安装、配置及验证 #安装 sudo apt-get install vsftpd #配置文件 cat > /etc/vsftpd.conf << "EOF" listenNO listen_ipv6YES anonymous_enableNO local_enableYES write_enableYES dirmessage_enableYES use_localtimeYES xferlog_enable…...

windows ping 执行过程分析

控制台 PS C:\Users\Admin> ping mcs.zijieapi.com正在 Ping mcs.zijieapi.com [223.109.117.226] 具有 32 字节的数据: 来自 223.109.117.226 的回复: 字节32 时间31ms TTL49 来自 223.109.117.226 的回复: 字节32 时间30ms TTL49 来自 223.109.117.226 的回复: 字节32 时…...

强大的远程同步工具-rsync

rsync 强大的远程同步工具&#xff0c;也可用于本地目录和本地目录的同步&#xff0c;它最大的特点就是会自动判断进行增量同步&#xff1b; # “演示文档”后加了/&#xff0c;代表传输的是文件&#xff0c;建议destination也指定一个目录&#xff0c;该目录可以不存在&…...

蝉联第一 | IDC云系统软件市场报告2024H1,云轴科技ZStack独立云厂商第一

2024年12月&#xff0c;根据全球知名的IT市场研究和咨询公司IDC最新发布的《中国云系统软件市场跟踪报告2024H1》显示&#xff0c;2024年上半年中国云系统软件市场规模达到27.93亿元人民币&#xff0c;同比增长11.6%。在这一增长趋势中&#xff0c;云轴科技ZStack作为云系统软件…...

【IPV6改造解读】

座右铭&#xff1a;我们每一个心怀希望的人&#xff0c;就像是一颗种子一样&#xff01; 文章目录 前言一、IPV6改造基本情况分析二、IPV6针对不同场景改造方案1.网站/APP场景-IPV6云网关升级改造方案2.局域网专网(互联网侧)场景-安全大脑IPV6改造方案 总结 前言 提示&#xf…...

常用的Kali命令Top10

Kali Linux是一种基于Debian的Linux发行版&#xff0c;被广泛用于渗透测试和网络安全。以下是一些常用的Kali Linux命令的详细解释&#xff1a; ifconfig&#xff1a;显示和配置网络接口的信息。可以用于查看当前系统的IP地址、网关和子网掩码等。 apt-get&#xff1a;用于安装…...

阿里巴巴正式发布了全新大型语言模型Marco-o1

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…...

【AI日记】24.12.07 kaggle 比赛 Titanic-10

【AI论文解读】【AI知识点】【AI小项目】【AI战略思考】【AI日记】 工作 内容&#xff1a; 学习 kaggle 入门比赛 Titanic - Machine Learning from Disaster学习机器学习&#xff08;pandas&#xff0c;numpy&#xff0c;sklearn&#xff0c;seaborn&#xff0c;matplotlib&a…...