每日学习总结20240219

每日总结

20240219

1.文件类型.csv

CSV文件是一种以逗号分隔值(Comma-Separated Values)为标记的文本文件,它可以用来存储表格数据。每一行表示一条记录,而每一条记录中的字段则使用逗号或其他特定的分隔符进行分隔。

常用场景包括:

  1. 数据导出与导入:CSV文件是许多软件应用程序用来导出和导入数据的标准格式。例如,数据库软件、电子表格软件、统计分析软件等都支持CSV格式,用户可以将数据以CSV格式导出,然后在其他软件中进行处理或分析。
  2. 数据交换:CSV文件是在不同系统之间交换数据的常见方式。由于它是一种纯文本格式,易于阅读和编辑,并且几乎所有的软件都支持导入和导出CSV文件,因此它成为了数据交换的理想选择。
  3. 数据备份:在一些情况下,CSV文件被用作数据备份的形式。将数据导出为CSV文件可以轻松地保存数据,并在需要时进行恢复。由于它是一种通用格式,因此即使原始数据源不可用,也可以通过CSV文件来还原数据。
  4. 批量处理:在一些编程任务中,CSV文件也常被用来作为批量处理数据的输入或输出格式。程序员可以使用各种编程语言读取和写入CSV文件,进行数据处理、分析、转换等操作。
  5. 网站数据交换:许多网站提供数据导出功能,允许用户将数据以CSV格式下载。这在数据分析、报告生成等方面非常有用,用户可以将网站上的数据导出为CSV文件,然后在本地进行处理和分析。

总之,CSV文件是一种简单、通用的数据存储格式,在各种场景下都得到了广泛应用,特别适用于数据交换、导入导出以及批量处理等任务。

2.GLib库

GLib 是一个 C 语言的通用工具库,提供了许多实用的功能,其主要功能包括:https://docs.gtk.org/glib/

  1. 数据结构:GLib 提供了许多常用的数据结构,如链表、双向链表、哈希表、数组、树等。这些数据结构提供了高效的插入、删除和查找操作,方便在 C 语言中进行数据处理和管理。
  2. 内存管理:GLib 提供了内存分配和管理的功能,包括动态内存分配、内存池、引用计数等。它的内存管理功能对于减少内存泄漏和提高程序性能非常有用。
  3. 线程和并发:GLib 提供了线程管理、互斥锁、条件变量等功能,支持多线程编程和并发处理。它提供了易于使用的接口,使得在 C 语言中进行多线程编程变得更加简单和安全。
  4. 事件循环:GLib 提供了事件循环(Event Loop)机制,用于处理事件驱动的程序,例如 GUI 应用程序、网络服务器等。它支持定时器、文件描述符监视、信号处理等功能,能够高效地处理各种事件。
  5. IO 和文件操作:GLib 提供了文件操作、文件路径处理、IO 通道等功能,使得在 C 语言中进行文件和 IO 操作变得更加方便和可靠。
  6. 字符串处理:GLib 提供了字符串操作、格式化输出、字符串拼接等功能,方便对字符串进行处理和操作。
  7. 线程池和异步操作:GLib 提供了线程池和异步操作的支持,使得在 C 语言中进行异步编程变得更加简单和高效。

GLib 在以下情况下特别有用:

  • 当需要进行 C 语言编程,但是希望使用高级的数据结构和工具时,可以使用 GLib 来简化开发流程。
  • 当需要进行多线程编程或并发处理时,GLib 提供了方便的线程管理和同步机制。
  • 当需要开发事件驱动的程序,如 GUI 应用程序、网络服务器等时,GLib 提供了事件循环和异步操作的支持。
  • 当需要进行字符串处理、文件操作、内存管理等操作时,GLib 提供了丰富的功能库,可以减少开发工作量和提高程序性能。

GLib 的优势包括:

  • 跨平台性:GLib 是一个跨平台的库,可以在多种操作系统上运行,包括 Linux、Windows、macOS 等。
  • 丰富的功能:GLib 提供了许多实用的功能和工具,包括数据结构、线程管理、事件循环、IO 操作等,可以满足各种开发需求。
  • 高效性:GLib 提供了高效的实现和算法,能够在性能和资源利用方面做到较好的平衡。
  • 易用性:GLib 提供了简单易用的 API,使得开发者可以更加快速地编写和调试代码,提高开发效率。
  • 稳定性:GLib 是一个经过充分测试和验证的库,具有较高的稳定性和可靠性,被广泛应用于各种大型项目和开源软件中。
2.1 API
  1. #define GUINT32_TO_BE(val) GUINT32_SWAP_LE_BE(val)

    GUINT32_TO_BE 是 GLib 库中的一个宏,用于将 32 位的整数从主机字节序转换为网络字节序(大端字节序)。在网络编程中,经常需要进行字节序转换,以确保数据在不同平台之间正确传输和解释。

  2. #define GUINT32_FROM_BE(val) GUINT32_SWAP_LE_BE(val)

    GUINT32_FROM_BE 是 GLib 库中的一个宏,用于将 32 位的整数从网络字节序(大端字节序)转换为主机字节序。在网络编程中,经常需要进行字节序转换,以确保数据在不同平台之间正确传输和解释。

  3. g_strsplit()

    • 定义g_strsplit() 是 GLib 库中的一个函数,用于将一个字符串根据指定的分隔符进行分割,返回一个字符串数组。
    • 原型gchar **g_strsplit(const gchar *string, const gchar *delimiter, gint max_tokens);
    • 参数
      • string:要分割的源字符串。
      • delimiter:用于分割字符串的分隔符。
      • max_tokens:最大分割次数,为负数表示不限制分割次数。
    • 返回值:返回一个字符串数组,数组中的每个元素是分割后的子字符串。
    • 功能g_strsplit() 函数根据指定的分隔符将源字符串分割成多个子字符串,并将这些子字符串存储在一个字符串数组中返回。
  4. strtol()

    • 定义strtol() 是 C 标准库中的函数,用于将字符串转换为长整型数。
    • 原型long strtol(const char *nptr, char **endptr, int base);
    • 参数
      • nptr:待转换的字符串。
      • endptr:如果不为空,并且未发生错误,则会存储在此指针中指向转换结束后的字符串的位置。
      • base:转换使用的进制,通常为 2、8、10 或 16。
    • 返回值:返回转换后的长整型数。
    • 功能strtol() 函数将字符串 nptr 中的数字部分转换为长整型数,并返回结果。它还可以将剩余的未转换部分指示给 endptr
2.2 网络编程相关
1. g_socket_new
  • 定义:创建一个新的套接字对象。
  • 原型GSocket* g_socket_new(GSocketFamily family, GSocketType type, GSocketProtocol protocol, GError **error);
  • 参数:
    • family:地址族,例如 G_SOCKET_FAMILY_IPV4G_SOCKET_FAMILY_IPV6
    • type:套接字类型,例如 G_SOCKET_TYPE_STREAM(流套接字)或 G_SOCKET_TYPE_DATAGRAM(数据报套接字)。
    • protocol:协议类型,例如 G_SOCKET_PROTOCOL_TCPG_SOCKET_PROTOCOL_UDP
    • error:返回的错误对象。
  • 返回值:返回一个新的 GSocket 对象。
2. g_inet_socket_address_new_from_string
  • 定义:根据字符串创建一个网络地址对象。
  • 原型GInetSocketAddress* g_inet_socket_address_new_from_string(const gchar *address, guint16 port);
  • 参数:
    • address:IP 地址字符串。
    • port:端口号。
  • 返回值:返回一个新的 GInetSocketAddress 对象。
3. g_inet_address_new_from_string
  • 定义:根据字符串创建一个 IP 地址对象。
  • 原型GInetAddress* g_inet_address_new_from_string(const gchar *string);
  • 参数:
    • string:IP 地址字符串。
  • 返回值:返回一个新的 GInetAddress 对象。
4. g_inet_socket_address_new
  • 定义:创建一个新的网络地址对象。
  • 原型GInetSocketAddress* g_inet_socket_address_new(GInetAddress *address, guint16 port);
  • 参数:
    • addressGInetAddress 对象。
    • port:端口号。
  • 返回值:返回一个新的 GInetSocketAddress 对象。
5. g_socket_bind
  • 定义:将套接字绑定到指定的地址和端口。
  • 原型gboolean g_socket_bind(GSocket *socket, GSocketAddress *address, gboolean allow_reuse, GError **error);
  • 参数:
    • socketGSocket 对象。
    • address:要绑定的地址。
    • allow_reuse:是否允许地址重用。
    • error:返回的错误对象。
  • 返回值:绑定成功返回 TRUE,否则返回 FALSE
6. g_socket_connect
  • 定义:与远程主机建立连接。
  • 原型gboolean g_socket_connect(GSocket *socket, GSocketAddress *address, GCancellable *cancellable, GError **error);
  • 参数:
    • socketGSocket 对象。
    • address:远程主机地址。
    • cancellable:可取消的操作。
    • error:返回的错误对象。
  • 返回值:连接成功返回 TRUE,否则返回 FALSE
7. g_socket_is_connected
  • 定义:检查套接字是否已连接到远程主机。
  • 原型gboolean g_socket_is_connected(GSocket *socket);
  • 参数:
    • socketGSocket 对象。
  • 返回值:如果套接字已连接到远程主机,则返回 TRUE,否则返回 FALSE
8. g_socket_condition_check
  • 定义:检查套接字的状态。
  • 原型GIOCondition g_socket_condition_check(GSocket *socket, GIOCondition condition);
  • 参数:
    • socketGSocket 对象。
    • condition:要检查的条件,如读取、写入、错误等。
  • 返回值:返回套接字的状态。
9. g_socket_receive
  • 定义:从套接字接收数据。
  • 原型gssize g_socket_receive(GSocket *socket, gpointer buffer, gsize size, GCancellable *cancellable, GError **error);
  • 参数:
    • socketGSocket 对象。
    • buffer:接收数据的缓冲区。
    • size:要接收的数据大小。
    • cancellable:可取消的操作。
    • error:返回的错误对象。
  • 返回值:返回接收到的字节数。
10. g_socket_send
  • 定义:向套接字发送数据。
  • 原型gssize g_socket_send(GSocket *socket, const gpointer buffer, gsize size, GCancellable *cancellable, GError **error);
  • 参数:
    • socketGSocket 对象。
    • buffer:要发送的数据缓冲区。
    • size:要发送的数据大小。
    • cancellable:可取消的操作。
    • error:返回的错误对象。
  • 返回值:返回发送的字节数。

这些函数适用于需要进行网络编程的情况,如开发客户端、服务器、网络通信应用等。GLib 提供了一套简单易用的网络 API,使得网络编程变得更加方便。

3.cat >> 与echo >>

在 Shell 中,cat >>echo >> 都是用于将文本追加到文件末尾的命令,但它们的工作方式略有不同:

  1. cat >>
    • cat 是一个命令,用于连接文件并输出它们的内容,>> 是重定向符号,用于将输出追加到指定文件的末尾。
    • 用法:cat >> filename
    • 功能:cat >> 将会等待用户输入文本,直到用户按下 Ctrl + D 结束输入,然后将输入的文本追加到指定的文件末尾。
    • 示例:cat >> output.txt 会将用户输入的文本追加到 output.txt 文件的末尾。
  2. echo >>
    • echo 是一个命令,用于在终端上输出指定的字符串,>> 是重定向符号,用于将输出追加到指定文件的末尾。
    • 用法:echo "text" >> filename
    • 功能:echo >> 直接将指定的文本追加到指定的文件末尾。
    • 示例:echo "Hello, World!" >> output.txt 会将字符串 “Hello, World!” 追加到 output.txt 文件的末尾。

总结:

  • cat >> 会等待用户输入文本,然后将文本追加到文件末尾,适用于需要交互式地输入内容的情况。
  • echo >> 直接将指定的文本追加到文件末尾,适用于将已知的字符串追加到文件末尾的情况。

4. shell 中>>与 >

在Shell脚本中,>>> 都是用于重定向输出的操作符,但它们有一些重要的区别:

  1. > 操作符
    • 用法:command > file 或者 echo "text" > file
    • 功能:将命令的标准输出重定向到指定文件,并覆盖文件中的原有内容。如果文件不存在,则会创建新文件。
    • 示例:echo "Hello, World!" > output.txt 将字符串 “Hello, World!” 写入到名为 output.txt 的文件中,如果文件不存在则创建,如果文件已存在则覆盖原有内容。
  2. >> 操作符
    • 用法:command >> file 或者 echo "text" >> file
    • 功能:将命令的标准输出追加到指定文件的末尾。如果文件不存在,则会创建新文件。
    • 示例:echo "Hello, World!" >> output.txt 将字符串 “Hello, World!” 追加到名为 output.txt 的文件末尾,如果文件不存在则创建。

总结:

  • > 用于覆盖文件内容,而 >> 用于追加内容到文件末尾。
  • 两者都可以将命令的输出重定向到文件,但是 > 会覆盖文件内容,而 >> 则会追加到文件末尾。
  • 如果你想要保留原有内容并添加新内容,就应该使用 >> 操作符。

5. 网络配置文件 /etc/network/interfaces

如下这段文件是 Linux 系统网络配置文件 /etc/network/interfaces 的示例内容,它用于配置网络接口的参数,包括 IP 地址、子网掩码、网关等。

# 这是注释行,用于说明该文件是用于配置网络接口的。
# /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)#auto lo 和 iface lo inet loopback:这两行配置了回环(loopback)接口 lo,这是一个特殊的虚拟接口,用于本地回环测试。auto lo 表示系统启动时自动激活该接口,iface lo inet loopback 指定了该接口的配置为使用 loopback 模式。
# The loopback interface
auto lo
iface lo inet loopback# Wireless interfaces
# 这一部分配置了一个名为 wlan0 的无线网络接口,使用 DHCP 获取 IP 地址。下面几行配置了一些无线接口的特定参数,如无线模式 (wireless_mode)、ESSID (wireless_essid)、WPA 配置文件路径 (wpa-conf) 等。
iface wlan0 inet dhcp	wireless_mode managedwireless_essid anywpa-driver wextwpa-conf /etc/wpa_supplicant.conf
# iface atml0 inet dhcp:这一行配置了一个名为 atml0 的接口,使用 DHCP 获取 IP 地址。
iface atml0 inet dhcp# Wired or wireless interfaces
# auto eth0
# iface eth0 inet dhcp
# iface eth1 inet dhcp:这一行配置了一个名为 eth1 的以太网接口,使用 DHCP 获取 IP 地址。
iface eth1 inet dhcp# Ethernet/RNDIS gadget (g_ether)
# ... or on host side, usbnet and random hwaddr
# 下面一段配置了一个名为 usb0 的 USB 网络接口,使用静态 IP 地址。这种配置通常用于在主机和设备之间通过 USB 连接进行网络通信。
iface usb0 inet staticaddress 192.168.7.2netmask 255.255.255.0network 192.168.7.0gateway 192.168.7.1# Bluetooth networking
# iface bnep0 inet dhcp:这一行配置了一个名为 bnep0 的 Bluetooth 网络接口,使用 DHCP 获取 IP 地址。
iface bnep0 inet dhcp# auto eth0 和 iface eth0 inet static:这两行定义了另一个以太网接口 eth0 的配置。auto eth0 表示系统启动时自动激活该接口,iface eth0 inet static 指定了该接口的配置为静态 IP 地址模式。# 下面的 address、netmask、gateway 等行指定了 eth0 接口的具体配置参数,包括 IP 地址、子网掩码、网关等。
auto eth0
iface eth0 inet staticaddress 192.168.137.81netmask 255.255.255.0

6.shell参数

  • $1$2$3 是脚本的位置参数,即在运行脚本时提供的参数。
  • count=${3:-1} 将第三个参数(执行次数)赋值给变量 count,如果未提供第三个参数,则默认值为 1。
  • count=${3:-1} 这行代码使用了 Bash 中的参数扩展功能,具体含义是:如果第三个参数 $3 存在并且不为空,则将其值赋给变量 count;如果第三个参数不存在或为空,则将默认值 1 赋给变量 count
    • 这种语法 var=${var:-default} 称为参数扩展,它的作用是检查变量是否已经设置,若未设置或为空,则使用默认值。在这里,count 是第三个参数,而 :- 表示如果 $3 不存在或为空,则使用默认值 1

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/690809.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HTTP特性

大家好我是苏麟 , 今天说说HTTP特性. 资料来源 : 小林coding 小林官方网站 : 小林coding (xiaolincoding.com) 到目前为止,HTTP 常见到版本有 HTTP/1.1,HTTP/2.0,HTTP/3.0,不同版本的 HTTP 特性是不一样的。 这里先用 HTTP/1.1 版本给大家介…

Golang - 使用CentOS 7 安装Golang环境

文章目录 操作步骤 操作步骤 为在CentOS 7上安装Go语言环境,可以按照以下步骤进行操作: 下载Go语言包: 从官方网站 https://golang.org/dl/ 下载适用于Linux的Go语言包。 解压缩Go语言包: 使用以下命令解压缩下载的Go语言包 […

CyberDAO:web3时代的引领者

Web3.0正在改写着世界运行的规则,AGI将为人类未来的生产效率、工作方式与目标带来改变,区块链经过十余年发展开启了去中心化新格局,带来生产关系的变革。人类正在从过往以时间换取收入、听命完成工作,转变为以个性化、自主追求人生…

OpenAI Sora视频模型技术原理报告解读

▌01. OpenAI Sora 视频生成模型技术报告总结 •不管是在视频的保真度、长度、稳定性、一致性、分辨率、文字理解等方面。 •技术细节写得比较泛(防止别人模仿)大概就是用视觉块编码(visual patch)的方式,把不同格…

数据采集三防平板丨三防平板电脑丨停车场应用

随着现代科技的不断发展,三防平板已经成为许多人工作和生活的必备工具。在停车场这个场景中,三防平板的应用可以大大提高停车场管理的效率和安全性。 停车场是现代城市交通管理的重要组成部分,它直接关系到城市交通的流畅和公共安全。停车场…

RK3588平台开发系列讲解(视频篇)ffmpeg 的移植

文章目录 一、ffmpeg 介绍二、ffmpeg 的组成三、ffmpeg 依赖库沉淀、分享、成长,让自己和他人都能有所收获!😄 📢ffmpeg 是一种多媒体音视频处理工具,具备视频采集功能、视频抓取图像、视频格式转换、给视频加水印并能将视频转化为流等诸多强大的功能。它采用 LGPL 或 G…

Rofin罗芬Laser激光DQ80设备操作说明书

Rofin罗芬Laser激光DQ80设备操作说明书

计算机视觉的应用23-OpenAI发布的文本生成视频大模型Sora的原理解密

大家好,我是微学AI,今天给大家介绍一下计算机视觉的应用23-OpenAI发布的文本生成视频大模型Sora的原理解密。本文概况性地将Sora模型生成视频主要分为三个步骤:视频压缩网络、空间时间潜在补丁提取以及视频生成的Transformer模型。 文章目录…

【lesson62】网络通信UdpSocket版

文章目录 UdpSocketUdpServer.hppUdpServer类成员变量解释成员函数解释 UdpServer的实现ServerIinit的实现socketbindhtonsinet_addr具体实现 ServerStart的实现recvfromsendtontohsinet_ntoa具体实现 ~UdpServer函数实现UdpServer.hpp整体完整代码 UdpServer.ccUdpClient.ccTh…

CDP和Chrome

CDP和Chrome CDP和WebDriver Protocol WebDriver和 Chrome DevTools Protocol(CDP) 是用于自动化浏览器的两个主要协议,大多数的浏览器自动化工具都是基于上述其中之一来实现的。可以通过这两种形式来和浏览器交互,通过代码来控…

探索海洋世界,基于DETR(DEtection TRansformer)模型开发构建海洋场景下海洋生物检测识别分析系统

前面的博文中,开发实践过海底相关生物检测识别的项目,对于海洋场景下的海洋生物检测则很少有所涉及,这里本文的主要目的就是想要开发构建基于DETR的海洋场景下的海洋生物检测识别系统。 首先看下实例效果: DETR (DEtection TRans…

【机器学习笔记】 15 机器学习项目流程

机器学习的一般步骤 数据清洗 数据清洗是指发现并纠正数据文件中可识别的错误的最后一道程序,包括检查数据一致性,处理无效值和缺失值等。与问卷审核不同,录入后的数据清理一般是由计算机而不是人工完成。 探索性数据分析(EDA 探索性数据…

Elasticsearch查询报错 Result window is too large

一现象: es数据分页查询前端提示系统异常,后端报错日志 二根本原因: 默认情况下,Elasticsearch 限制了 from size 参数的组合不能超过 10,000 条记录,用于防止查询大数据集时对系统资源的过度消耗 三解决办法&#…

沁恒CH32V30X学习笔记09---使用TIM 外部时钟1模式实现硬件计数

TIM 外部时钟1使用 定时器时钟 通过框图可知;外部时钟1模式下仅仅只有通道1 和通道2 可以输入脉冲 简单示例教程 void TIM1_ETRClockMode1_Init(void) {RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1, ENABLE);TIM_CounterModeConfig(TIM1, TIM_CounterMode_Up)

机器学习---强化学习

1. 什么是强化学习 在连接主义学习中,在学习的方式有三种:非监督学习(unsupervised learning)、监督学习 (supervised leaning)和强化学习。监督学习也称为有导师的学习,需要外界存在一个“教师”对给定 输入提供应有的输出结果&#xff0…

Android 11.0 mtp在锁屏模式和息屏时禁止访问mtp文件夹功能实现

1.前言 在11.0的系统rom产品定制化开发中,由于系统对于mtp模式访问文件夹没有限制,就是在锁屏息屏状态下也是可以访问文件夹的,由于产品的需要 要求在锁屏和息屏的情况下,禁止访问文件夹,就是需要实现如图效果 2.mtp在锁屏模式和息屏时禁止访问mtp文件夹功能实现的核心…

【Vue3】路由传参的几种方式

路由导航有两种方式&#xff0c;分别是&#xff1a;声明式导航 和 编程式导航 参数分为query参数和params参数两种 声明式导航 query参数 一、路径字符串拼接(不推荐) 1.传参 在路由路径后直接拼接?参数名:参数值 &#xff0c;多组参数间使用&分隔。 <RouterLink …

unity学习(27)——修改text控件的内容

手游最大的特点就是简单易懂好上手。 1.在canvas上添加一个text的UI&#xff0c;内容设置为空。在字体处添加宋体&#xff0c;增加一个tag。 2.修改LoginHandler中的内容如下&#xff1a;&#xff08;之前有从inputFiled中获取文字的经验&#xff09; public void LoginHandl…

阿里云幻兽帕鲁服务器,游戏服务端版本升级怎么操作?

用阿里云一键部署的幻兽帕鲁服务器&#xff0c;想要更新游戏服务端版本&#xff0c;现在非常简单。之前还需要通过输入一行命令来更新&#xff0c;而现在可以直接通过面板上的选型来操作。 打开阿里云的计算巢&#xff0c;找到你的这台服务实例&#xff0c;点击进入&#xff0…

通过HTTP隧道在Linux上实现跨域资源共享(CORS):打破数字世界的“门禁”

在数字世界里&#xff0c;有时你会碰到一些“门禁”&#xff0c;它们阻止你访问某些资源&#xff0c;就像现实生活中的门禁系统一样。这些“门禁”就是所谓的跨域资源共享&#xff08;CORS&#xff09;限制。不过别担心&#xff0c;我们有一个绝妙的解决方案&#xff1a;通过HT…