- 博客(205)
- 收藏
- 关注
原创 如何使用树莓派Bookworm系统中配置网络的新方法NetworkManager
树莓派在 10 月新出的 Bookworm 版本系统中,将使用多年的 dhcpcd 换成了 NetworkManager(以前是在中可选),这是因为 Raspberry Pi OS 使用的是 Debian 内核(和 Ubuntu 一样),所以树莓派的系统也叫做“Raspbian”。这两个内核版本在一些方面有着巨大的区别,而且有些地方也趁着内核更新进行了修改。但是又因为特别新,所以很多问题的解决方案并没有老版本那么多,而且操作上也不一样,所以本文算是一个初步探索记录。
2023-12-24 00:36:01
2152
原创 如何在C/C++中测量一个函数或者功能的运行时间(串行和并行,以及三种方法的实际情况对比)
本文算是一个比较完整的关于在 C/C++ 中测量一个函数或者功能的总结,最后会演示三种方法的对比。最常用的clock()最常用的测量方法是使用clock()来记录两个 CPU 时间点clock_t,然后做差。这个方法的好处在于非常简单易写,timespec。clock_gettime()的参数CLOCK_REALTIME表示系统层面的实时时间;这个地方还可以用CLOCK_MONOTONIC,这个值是从系统启动开始一直运行的,一直连续的不跳跃的(除非手动改了),这个要比CLOCK_REA:
2023-11-27 23:54:22
7826
4
原创 C语言获取命令行选项(option/flag)和输入的内容(argv)的一种巧妙的办法
这个方法很难说比之前那个方法好还是不好,但是在处理一种情况的时候可能会好一些,就是当你必须要有一个参数,但这个参数并没有选项的时候。中写到 Unix 命令行选项的惯例是在选项前面加上一个。举个例子,比如说用户必须输入一个地址,当然你可以使用。如果输入地址不正确,再进行错误处理。如果你看过我之前的那篇博客。,用来区分选项名和参数。,但是也可以直接用最后的。希望能帮到有需要的人~原文中提到的方法是用。
2023-11-23 12:19:28
830
原创 制作Go程序的Docker容器(以及容器和主机的网络问题)
今天突然遇到需要将 Go 程序制作成 Docker 的需求,所以进行了一些研究。方法很简单,但是官方文档和教程有些需要注意的地方,所以写本文进行记录。首先介绍一下示例程序,示例程序是一个 HTTP 服务器,会显示sin(r)/r的图像,如下:新建一个目录draw-surface,然后在里面新建一个draw-surface.go文件,内容为:在容器中运行构建Docker映官方文档很奇怪,Containerize your application 中介绍说用docker init来新建所需的文件,但是
2023-11-18 20:37:08
985
原创 树莓派4B的测试记录(CPU、FFMPEG、CV、llama2)
本文是用来记录树莓派 4B 的一些测试记录。大语言模型使用一个小型的大语言模型 karpathy/llama2.c 进行测试,不同大小参数的模型速度不一样:模型参数大小 速度(tokens/s)树莓派 4B Micro SD 写入速度为 45 MB/s,但是读取偶尔能跑到 100MB/s,大部分时间和读取速度差不多(Jeff 测试第五代是可以跑满的)。CPU性能使用 Clang 和 ISPC(并行计算)编写的程序来测试 CPU 的一些性能数据。考虑到受写入速度的影响,这里均使用不存储的程序进行测试。
2023-11-10 05:48:58
2979
2
原创 树莓派在Raspbian系统(Bookworm)中无法获取RJ45网口eth0或end0的IP地址(没有IPv4的地址无法操作)
由于 Raspbian 上个月刚好从 Bullseye 升级到 Bookworm 版本了,所以出现了很多修改,截止写博客的时候过去还没三十天,当然也没那么多解决方案参考,只能参考之前版本或者靠自己了,未来或许官方会进行修复,也可能会出现其他的问题,如果我再遇到,会写一篇新的并且在这里贴上连接的。上一篇文章中提到了我在尝试的时候试了一下 Ubuntu Server 22.04.3 LTS,虽然画面正常显示了,但是不显示eth0(主板上的 RJ45)的地址,如下是开机启动时显示所有接口 IP 的部分(
2023-11-07 04:16:08
1189
原创 树莓派4在Bookworm Raspbian系统下无法进入桌面模式(启动后出现彩色画面,然后一直黑屏,但是可以正常启动和ssh)
本文记录了这段比较坎坷的探索之路,由于你的问题不一定是我最终解决方案的,可能是前面探索路上试过的,所以建议按顺序看排除前置问题。双十一又买了个树莓派 4B,插上之前树莓派 4B 的 TF 卡直接就能使用(毕竟是一样规格的)。但是由于用来连接硬盘的 USB 线是坏的,我以为是系统问题就进行了重装(所以坏掉的线还是直接扔了好)。重新安装系统就装了最新的 2023-10-10 版本的 64 位的 Raspberry Pi OS,但是出现了一个问题: 启动后出现彩色画面,然后一直黑屏。
2023-11-04 18:31:33
2664
4
原创 Go如何创建一个包并使用(导入本地包和注意事项)
Go 语言中,包(Package)的目的和其他语言中的库或模块是一样的,支持模块化、封装、单独编译和重用。有时候需要自己写一个包方便多次使用,但是在导入自己写的包时遇到了问题。我以前以为import部分直接就是包的路径,但是实际自己写了之后发现不是这样的。这部分实际上这部分是可以解释成一个标识符,是由一个go.mod文件确定,一般含义确实是路径末端。Go 中模块的概念其实还包含了一部分版本管理的功能。所以 Go 的模块和版本管理无论是学习还是开发都不是一件容易的事情,Go 团队也在一直努力调整和优化。
2023-11-02 19:28:05
2300
原创 如何使用C/C++刷新修改已经打印显示在终端上的内容
写本文的起源是因为在安装一些工具的时候,发现在终端上并行安装的情况下,显示安装信息是会修改之前已经打印出来的内容,这是怎么做到的呢?抱着对这个问题的好奇我进行了一些探索。
2023-10-14 08:02:54
2732
1
原创 在macOS上从源代码构建编译Aseprite到组装成App应用(macOS上如何不开着终端窗口)
这里记录一下自己构建 Aseprite 流程。关于如何构建可能已经有很多文章写了,但是都没有提到一点:启动的时候需要点击可执行程序,这样是需要终端窗口一直开着的的(如下图),关闭终端就会退出程序,这哪叫应用啊。所以我想将其变成一个像普通 macOS App 的东西,点击图标即可启动,也不会一直开着终端窗口。(仔细一想我还没有这样弄过一个应用呢,就想试试看,当作经验储备了)
2023-09-30 18:40:56
947
5
原创 如何解决git clone http/https仓库失败(403错误)
一般情况下,个人使用 GitHub 等平台时是使用 SSH 协议的,这样不光方便管理可访问用户,也保证了安全性。但是 GitHub 上仓库的 SSH 地址是要登陆才能看到,未登录情况下只能看到 HTTPS 地址,所以很多项目在传播的时候贴出来的是 HTTPS 链接,以及子模块(submodule)也都使用的是 HTTPS。本来不打算写这篇文章,但是后来又遇到这个问题忘了之前是怎么解决的了。其他的错误大概率是因为网络问题,多试试看即可。在上述情况下,你使用类似下面这样的命令时,可能会出现。
2023-09-30 17:22:19
2717
原创 Swift如何使用Vision来识别获取图片中的文字(OCR),通过SwiftUI视图和终端命令行,以及一系列注意事项
首先简单介绍一下 Vision:Vision 是一个计算机视觉算法的架构,可以对图像和视频执行多种任务。支持 iOS 11/iPad OS 11/macOS 10.13/tvOS 11 或更新系统。支持 ISO 语言代码中的所有语言。需要注意由于汉字的复杂性,自定义单词(customWords)功能和语言矫正功能对于中文不可用。需要注意 Vision 是包含在这些系统中的,而不是程序里,所以编译出来的程序本身并不会很大,并且结果精度和系统版本挂钩,后续会有演示。
2023-09-12 02:26:22
2061
原创 如何解决使用 ISPC 构建编译项目代码的时候出现_ISPCAlloc、_ISPCLaunch、_ISPCSync的连接器错误
一般在编译 ISPC 代码到时候,构建方法如下:但是在一些情况下连接器会报以下错误:出现这个问题是因为你使用了 ISPC 中的,这就需要使用 ISPC 任务系统(ISPC tasking system)。但是这个系统默认是不包含的,代码在一个名为的文件中,你可以在https://github.com/ispc/ispc/tree/main/examples/common找到这个文件,也可以复制以下代码到你自己创建的文件中:接下来假设这个文件在你的项目目录中,如下(当然你也可以放到一个固定位置,这样每个
2023-09-05 13:48:29
207
原创 如何在macOS上使用最新版的Bison来构建项目,而不是Xcode工具链内嵌的2.3版本
在很多项目的编译中需要使用 Bison,而且版本需要至少为 3.0,不然会出现以下错误。安装了最新版的 Bison,但是还是会有这个问题。这样就可以正常构建了。希望能帮到有需要的人~的时候会先搜索到这个新的。可以看到这样的语句,就知道位置了。最前面,这样 SHELL 搜索。不敢在解决方案之前,你要知道。第一种方法使用以下语句来添加。安装的一般就在这个路径)放到。构建项目的时候直接设置。或者设置环境变量,再让。
2023-09-03 06:29:00
1199
原创 使用树莓派Pico、DHT11和SSD1306搭建一个温度湿度计(只使用官方库,以及官方案例代码的错误之处和解决方案)
最近想树莓派 Pico、DHT11 温湿度传感器和 SSD1306 OLED 屏幕做一个温度湿度计,树莓派官方案例也分别有这两个设备的案例,我就想做个简单的温度湿度计作为学习微控制器的开始,结果遇到了一个大坑,所以写本文记录一下整个过程。本文最后会实现一个能在 SSD1306 OLED 屏幕上显示当前环境的温度和湿度,并且还要通过 USB 输出这些信息。本文的完整代码我放到了,并且在build目录下放了编译好的内容,方便读者进行尝试。
2023-08-28 02:10:09
1911
原创 Pico使用C/C++选择使用哪个I2C控制器,以及SDA和SCL针脚
本文一开始讲述了解决方案,后面是我做的笔记,用来讲述我的发现流程和探究的 Pico I2C 代码结构。如何选择哪个I2C控制器,以及SDA和SCL针脚在设置之前声明三个变量或宏来方便开发。建议使用宏,这比较符合树莓派的开发风格:#define I2C i2c0#define I2C_SDA_PIN 4#define I2C_SCL_PIN 5如果宏扩展出错,那么就使用变量。然后初始化 I2C 的时候来设置使用哪个 I2C 控制器,以及哪个SDA和SCL针脚。下面是设置根据上面的设置
2023-08-27 03:20:14
553
原创 用C/C++修改树莓派Pico的I2C默认SDA和SCL针脚
首先要说明一点:Pico 有两个 I2C,也就是两套 SDA 和 SCL。这点你可以在针脚图中名字看出,比如下图的 Pin 4 和 Pin 5是 I2C1 的,而默认的 Pin 6 和 Pin 7 是 I2C0 的。请添加图片描述默认情况下是只开启了第一个 I2C,也就是只有 I2C0 的针脚是可以使用的。如果这种情况下,你哪怕修改了针脚,但不是 I2C0 的,也是不会正常运行的。正确修改 I2C 的 SDA 和 SCL 默认针脚的方法有两种,还有一种不推荐的方法(但也是方法)。
2023-08-26 02:23:27
573
原创 Mac 开发 Tang Nano FPGA 指南(使用终端和使用 VS Code 和插件,适用所有 Gowin FPGA)
最近收到了一个 Tang nano 9K FPGA开发板,就想借此机会研究一下。官方文档里介绍如果想使用高云的 FPGA,就需要使用 GOWIN IDE,但是需要申请 license 提交一堆资料,我是别人送的就不太方便让别人弄。加上 IDE 其实并不是很适合学习和投入生产,因为 IDE 忽略了很多细节,以及对一些工作做了处理。所以就想找到其他的工作流程,就像可以使用任何文本编辑器加上 Clang/LLVM 就可以编译 C/C++ 程序一样。
2023-08-19 12:45:50
3226
3
原创 如何重置树莓派 Pico(重置外围设备失败的解决方案)
有时候需要重置树莓派 Pico,一种方法是按住 Pico 上的“BOOTSEL”按钮再插入 USB;或者用按钮连接“RUN”和“GND”针脚,然后同时按下这个按钮和“BOOTSEL”按钮。这样就可以进入 USB 模式,这样从一定程度进行了重置。如果出现了这种外围设备无法重置的情况,那么就编译一个重置程序放入 Pico 来进行重置。这个重置程序在官方的。拖到 USB 模式下的 Pico 就行了。下面是我将其提炼出来,因为原本是没有单独构建这个二进制执行文件的。之后,上面的办法可能有时没有让 LED 不闪了。
2023-08-15 03:39:36
1776
原创 APFS 文件系统探究
本文的创作初衷是因为我发现从底层详解 APFS 的资料很少,所以自己来进行了一些探究。APFS 的每个容器是按照顺序排列在硬盘里的,并不会有空隙,这与 Windows 的 GPT 分区不一样。这也是为什么 Windows 上你只能扩展或调整最后一个分区的大小,而不能调整前面的盘(APFS 的空闲空间是在各个卷之间共同分享的,所以扩展起来很容易,如下图)。以及为什么 macOS 上新建 APFS 分区的时候需要很久很久(因为要把其他分区的文件挪到合适的地方)。
2023-08-14 08:53:38
1284
原创 如何使用 Go 获取 URL 的参数,以及使用时的问题
Go 获取 URL 参数也很容易,但是由于 Go 有严格的数据类型和错误管理,所以在使用时会些微有些复杂。所以本文不仅会讲如何获取 URL 的参数,也会讲在使用时的一些问题。首先假设 URL 是。其他语言一般这个时候就是导入包了,但是 Go 的包管理很严格,所以建议你在输入完下列代码后,在安装 VSCode 中使用保存快捷键(如 Command + S 键)或者在终端中goimports工具来自动补全包,这样就可以保证一定没有错误。因为虽然现在一般使用"net/url"或者"net/http"
2023-08-13 07:55:20
1361
原创 搭建树莓派Pico交叉编译环境和工具链(arm-none-eabi-gcc)时可能会遇到的错误以及解决方案
本文是一个类似手册的文章,用来记录可能遇到的错误。你可以通过侧栏选择遇到的错误来查看详细信息。No install step for ‘ELF2UF2Build’,fatal error: cannot read spec file ‘nosys.specs’: No such file or directory,连接错误
2023-08-10 18:14:54
1910
原创 如何使用Mac终端给树莓派pico构建C/C++程序进行开发,以及遇到各种问题该怎么处理,不使用任何IDE或编辑器(例如VS Code)
写本文的原因是官方的教程已经过时了,如果你现在按照官方教程来在 Mac 上进行配置,那么会遇到一堆问题,比如我几乎把能踩的“雷”都踩了。所以这里记录了完整过程,以及各种错误的原因和处理方法,不然以后换 Mac 了或者在其他平台遇到同样的问题,忘记怎么处理的就头大了。接下来先记录一下整体的安装流程,会介绍一些背景知识,对于一些会错误的地方会进行说明和解释,最后会对错误进行整理No install step for 'ELF2UF2Build'。fatal error: cannot read spec fil
2023-08-09 22:30:22
1997
原创 如何安装本地Go Tour教程(或者叫A Tour of Go离线版),以及中文版安装不了该怎么办
Go 官方是有一个在线教程,可以在线学习 Go 的编程,并且有中文版。英文原版页面如下:出人意料的是,Go 提供了离线版(各个语言都有),下载安装之后就可以在本地编译运行查看结果,不用联网使用远程服务器,这样提高了效率和性能(关于这方面的详细内容后面会单独有一节对比的)。
2023-07-12 19:12:31
869
原创 如何在Mac终端上,从底层按照字节用十六进制查看某个硬盘的内容(使用dd和hexdump实现winhex的功能,所以其他系统也可以使用这个方法)
首先需要强调:这种方法不能保证所有的硬盘都可以查看,有些硬盘由于一些原因会显示“Resource busy”,比如说时间机器的硬盘,内置硬盘等。其他系统也可以使用这种方法,区别在于硬盘设备的路径,Linux 一般是在。希望能帮到有需要的人~
2023-07-05 14:52:12
825
原创 Mac如何在终端使用diskutil命令装载和卸载推出外接硬盘
最近用 macOS 装载外接硬盘的时候,使用mount死活装不上,很多文章也没详细的讲各种情况,所以就写一篇博客来记录一下。mount和umount是在 macOS 上是不能用的,如果使用会显示未知特殊文件或者没有权限,如果给umount加上sudo就会显示Resource busy,提示使用diskutil unmount,提示一下,这里的路径可以不写,直接写diskutil unmount disk3s2也可以。如果你知道硬盘或卷宗名称,那么可以直接使用名称加载或者卸载,如下:
2023-07-05 14:49:41
5157
6
原创 如何使用ffmpeg将BDMV(m2ts)转换成MKV、MP4等其他格式的文件
BDMV 是蓝光碟使用的格式。这种格式没有办法使用播放软件播放,必须要用硬盘播放器,也就是专门的设备。但是最经典的 ffmpeg 可以将其转换成其他格式,并且保持相同的码率和清晰度,这样就可以很方便的查看了。本文使用 macOS 进行演示,但是会介绍如何一些其他平台的方法和操作。一般 BDMV 下载格式是一个 ISO,加载打开之后内容大致如下:请添加图片描述如果你使用的是终端,那么(如果你下下来的 ISO 加载后不叫“BDROM”,那么需要进行修改的):## macOS$ cd /Vo
2023-06-23 04:09:17
6786
1
原创 Swift——如何将某一进制的数字按另一种进制输出(比如十进制输出打印成十六进制,八进制打印输出成二进制)
最近由于需要阅读比较老的文档,老文档里内存地址是用八进制而不是十六进制,所以需要写一个小工具,用来转换进制进制。虽然自带的计算器可以,但是数量一多比较麻烦。一开始我想费劲吧啦写十二个转换函数,虽然有些函数可以套,但是还是蛮费劲的。所以我就寻找了一下简单方法,结果发现。类型有个特别神奇的方法,希望能帮到有需要的人~
2023-06-12 05:43:08
652
原创 clang到底是什么?gcc和clang到底有什么区别?
如果你上网去查clang,有些人会告诉你这是一个前端(frontend),然后从书上摘抄一些编译器的介绍,然后列出了一堆表格进行对比,并没有对原理和机制进行详尽的解释和介绍。所以这时候会有更多的问题冒出来:为什么clang是一个前端?难道它不是完整的编译器吗?如果clang是完整的编译器的话,那么为什么叫前端呢?如果它不是完整的,那么后端是什么呢?编译器的定义到底是什么?感觉书上编译器的定义和实际的gcc有所不同。这里说明一下:这里的gcc指的是你在 Ubuntu 等 Linux 发行版里可以直接使
2023-06-11 00:41:49
19643
18
原创 可执行程序和脚本的区别(什么是解释器)
从构成上来说,可执行程序是由机器可以识别执行的机器语言(也就是一堆 1 和 0)组成的程序。从功能上来说,它可以将输入的内容按特定方式处理,然后再输出结果。从文件格式上来说,Windows 中现在主流的可执行程序的格式是 PE(Portable Executable File Format),而其中的“Executable”缩写就是很多人熟知的 EXE;在 macOS 中,可执行程序被称为。其实上文就提到了什么脚本:脚本就是解释程序能接受执行的代码。不同解释程序能接受执行的代码就是不同的脚本语言。
2023-06-10 14:09:50
1999
原创 使用gcc展示完整的编译过程(gcc预处理模式、编译模式、汇编模式、连接模式)
最近在了解 clang/llvm 的时候突然发现一件事:gcc是一个工具集合,包含了或者调用将程序源代码转换成可执行程序文件的所有工具,而不只是简单的编译器。这帮助我对“编译器”有了更深刻的理解,所以写下本文作为记录。从源代码转换成可执行程序的完整过程,也就是我们平时所说的“编译过程”,实际如下(圆角矩形表示代码,矩形表示各种处理器)可以看到从源代码到可执行程序要经过预处理器(preprocessor)、编译器(compiler)、汇编器(assembler)和连接器(linker)或加载器(loader)
2023-06-08 11:33:57
5805
5
原创 系统学习计算机技术三要素:手快、眼快、脑子快
我很喜欢 scz 的一句话:你可以什么都不会,但是不能学不会。但是要学会,还学的精、学的全,真的得尽量做到这三点,哪怕脑子笨一些也够成为一个在某一技术领域能力不错的人了。
2023-06-02 20:02:14
1838
3
原创 如何使用wget下载(录制)流媒体或直播推流文件,以及下载出现“正在把输出重定向至 “wget-log.1””错误该怎么办
下载推流文件其实非常简单,就是通常使用的最简单的命令:wget URL -O 输出文件名。这里最好设置一下输出文件名,下载的文件名称会很奇怪,导致格式识别错误或者其他问题。不过,如果你直接使用这个命令很可能会出现一种情况:正在把输出重定向至 “wget-log.1”。可以看到正常的下载了,下载速度也就是码率。如果中断也会保留已下载的部分。有人在手算码率的时候可能会有人担心一点:不少软件是很认真的按照计算机科学中的1KB = 1000 Byte,1 KiB = 1024 Byte,因为绝大部分类 Unix 系
2023-06-02 05:36:17
1944
1
原创 使用 C++ 验证中心极限定理(通过生成一个PPM格式的图像验证非均匀概率的离散事件在样本数量足够大时,符合正态分布曲线)
我想写本文的原因是看到著名数学科普账号 3Blue1Brown 发布的发布的【官方双语】什么是中心极限定理?中提到:不论这个离散型事件的各种情况概率是不是平均的,当数量一定大时,还是会符合正态分布曲线。我就想自己试试看是不是这种情况,因为我觉得中心极限定理和正态分布是一个概率论中很神奇的一部分。本文使用骰子点数当作离散型事件,求点数之和的概率。先实现均匀分布的状态下的程序,再调整为不均匀分布的概率,完整源代码放在最后,防止因为头文件等问题导致错误。
2023-05-16 18:42:15
652
原创 苹果自家的as汇编器的特色风格(与微软masm汇编器语言风格的不同)
as汇编器是苹果的汇编器,Xcode 生成的代码也是as风格的,而as风格与大部分人在大学里所学的微软的masm风格大相径庭,所以本文会列出二者的不同。不过由于细节太多,没法一次性写出所有的不同,所以会持续更新。你可能会找到一本手册名为《Mac OS X Assembler Guide》,但是这本手册出自 2005 年,是为了过度到 Intel 所写的。但是现在很多事情已经变了,现在的as手册最近更新日期为 2020 年 4 月 23 日,也就是 M1 登场的日子。
2023-05-14 15:44:43
676
原创 C——Union是什么?Union和Struct这么像,区别在哪?为什么还要创造出union呢?需要在哪里使用呢?
在 C 语言中,有一种叫做union的变量,是用来在不同的情况下,存放不同类型和大小的对象的变量。这与结构体struct很相似:结构体是一个或多个变量的集合。union 的声明方式非常简单,也与struct一模一样二者这么像,那么二者的区别在哪里呢?或者说,为什么要弄两个这么像的东西呢?C 又不是 C++,一些功能是由不同的小组开发的,一些功能上会重叠。首先是表面的不同,struct和union在使用目的上完全不一样,union并不像struct会同时存放大括号中列出的每个变量,如果你尝试下面的代码
2023-05-11 08:04:03
592
原创 使用 nvcc 的时候出现“helper_cuda.h”: No such file or directory错误该怎么办(其他xxx.h也是同样的解决方法)
今天在命令行中使用nvcc的时候,出现了“helper_cuda.h”: No such file or directory错误。这个错误信息表示:在编译的时候,找不到helper_cuda.h头文件(其他xxx.h如果也找不到,那么下面的解释和解决方法也通用)。出现这个问题的原因是,大多数编译器寻找头文件的方法就一种:在环境变量中设置的目录下去找这个头文件。如果环境变量中存放的目录下没有这个头文件,就找不到了。甚至就没有创建或设置好这个环境变量,那更不可能找到了。不论使用何种编译器,这种问题都是常见问
2023-05-02 11:41:42
3267
原创 C——Typedef是什么?如何使用?有何便利之处?
typedef是 C 语言中的一个特色功能,被用于创建新的类型名称,从名称“type def(ine)”也可以看出其功能。typedef类似于 Unix 中的alias程序的功能,为一个对象添加另外一个名称,typedef使得多个名称其实对应的是同一个程序,但是typedef操作的对象是数据类型,也就是给数据类型“起外号”,这个外号一般首字母大写,用于表示不是基础数据类型。在 C 语言中,typedef与宏#define很相似,二者的区别放到最后,因为需要先理解typedef,才能理解其与宏的区别。
2023-04-26 22:57:57
1105
原创 Swift——如何将数组映射成字典(关键字为数组元素,值为下标序号)
有时候需要将数组的下标和元素转换成字典。比如说使用数组元素来查找下标,如果使用一个函数来查找,那每次都得进行循环查找和获取,不论是计算性能还是内存需求都大,这时候将原数组转换成一个字典,关键字为数组元素,值为下标序号会更方便一些,这样就可以很轻松的通过元素的值来查找序号了,也就不用每次都进行循环查找。要将数组转换为字典需要依次获取数组每个元素和其对应的下标序号。当然用一个 For 循环也可以实现这个功能,因为下标序号是用 For 循环里的i通过i=0和i += 1获取到的。但是 Swift 并没有 C
2023-04-22 18:49:23
663
原创 如何在Mac VM Fusion上安装和使用Plan 9
我在 Mac 上使用 VM Fusion 安装 Plan 9 的时候遇到了很多问题,官方文档和有些前两年的国外的一些博客并没有写清楚,甚至出现了“误导”的情况(有些情况变了)。所以来写本文帮助其他也遇到的问题的人。如果你能看到这篇博客,说明你大概知道 Plan 9 是个什么系统,这里也不赘述,直接开始。你可以按照步骤一步步来,重点部分我用小标题标出了。
2023-04-20 18:32:08
472
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅