解锁MacOS开发:环境配置与应用开发全攻略
✨✨✨这里是小韩学长yyds的BLOG(喜欢作者的点个关注吧)
✨✨✨想要了解更多内容可以访问我的主页 小韩学长yyds-CSDN博客
目录
引言
一、MacOS 开发环境配置
(一)必备工具安装
(二)集成开发环境(IDE)选择与安装
(三)系统设置优化
二、MacOS 应用开发流程
(一)需求分析与设计
(二)代码编写
(三)测试环节
(四)部署与发布
三、常见问题及解决方案
(一)依赖库安装失败
(二)编译错误
(三)Xcode 相关问题
四、实战案例:开发一个简单 MacOS 应用
(一)创建项目
(二)设计用户界面
(三)编写代码
(四)测试应用
(五)打包与发布
引言
在软件开发的广阔领域中,MacOS 凭借其独特的优势,成为众多开发者的首选平台。它基于 Unix 架构,拥有出色的稳定性与强大的命令行工具,让开发者能够轻松驾驭各种复杂的开发任务,无需担忧系统崩溃或数据丢失等问题 ,在处理大型项目和数据密集型任务时游刃有余。
MacOS 对多种编程语言和开发工具提供了良好的兼容性,无论是热门的 Python、Java,还是苹果官方大力推广用于开发 iOS 和 Mac 应用的 Swift 语言,都能在 MacOS 上找到适宜的开发环境。像 Xcode 这样强大的官方集成开发环境(IDE),为开发者提供了代码编辑、调试、版本控制等全方位的功能,助力应用开发更加高效流畅。同时,MacOS 还支持诸如 Visual Studio Code、Sublime Text 等主流代码编辑器,满足不同开发者的个性化需求。
此外,MacOS 与苹果的硬件设备,如 iPhone、iPad 等实现了无缝集成,为开发多平台应用提供了得天独厚的便利条件。其简洁直观、美观优雅的用户界面,不仅能让开发者在长时间的编码工作中保持舒适,更能有效提升开发效率,让开发者可以将更多的精力聚焦于代码本身。
看到这里,你是不是已经迫不及待想要在 MacOS 上搭建自己的开发环境,开启应用开发之旅了呢?接下来,本文将详细地为你介绍 MacOS 开发环境的配置步骤以及应用开发的相关流程,帮助你快速上手,在 MacOS 平台上释放自己的开发潜能。
一、MacOS 开发环境配置

(一)必备工具安装
- Command Line Tools:这是 MacOS 上开发的基础工具集,包含编译器、调试器等开发所需的命令行工具。打开终端,输入命令xcode-select --install,按提示操作即可完成安装。安装完成后,你就可以在终端中使用诸如gcc(GNU 编译器集合)、make(构建自动化工具)等命令,方便进行各种开发任务,比如编译 C、C++ 程序。
- Homebrew:作为 MacOS 上最受欢迎的包管理工具,Homebrew 能够帮助你轻松安装各种开发工具和库。在终端中输入/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)",等待安装完成。安装完成后,可以通过brew doctor检查安装状态,使用brew install <package-name>命令安装软件包,例如brew install node来安装 Node.js。有了 Homebrew,你无需再手动从官网下载、解压、配置各种软件,大大提高了开发效率。
- Git:这是一个分布式版本控制系统,常用于追踪代码历史和协作开发。可以使用 Homebrew 来安装,在终端输入brew install git。安装完成后,通过git --version命令检查是否安装成功。Git 能够让你方便地管理代码版本,与团队成员协作开发时,可以轻松拉取、推送代码,还能查看代码的修改历史,对于多人协作开发和个人项目管理都非常重要。例如,在开发一个大型项目时,团队成员可以各自在本地进行代码修改,然后通过 Git 将修改同步到远程仓库,方便又高效。
(二)集成开发环境(IDE)选择与安装
- Xcode:这是苹果官方的集成开发环境,主要用于开发 macOS、iOS、watchOS 和 tvOS 应用。它集成了代码编辑器、调试器、模拟器等一系列强大的工具,并且对 Swift 和 Objective - C 等编程语言提供了出色的支持。在 App Store 中搜索 “Xcode”,找到后点击 “获取” 然后是 “安装” 按钮。若提示,输入你的 Apple ID 信息以进行下载。下载完成后,打开安装程序并按照提示完成安装。初次运行时,可能会要求你同意 Xcode 许可协议,需要阅读并同意才能继续。Xcode 自带的 Interface Builder 工具,让开发者可以通过可视化的方式快速搭建应用界面,大大缩短了开发周期 。
- 其他 IDE 推荐:
- Visual Studio Code:这是一个轻量级但功能强大的源代码编辑器,支持多种编程语言,如 JavaScript、TypeScript、Python 等。它具有丰富的扩展程序市场,开发者可以根据自己的需求安装各种插件来扩展功能。比如安装 Python 插件后,就可以获得代码补全、调试支持等功能,非常适合小型项目、快速编辑文件以及多种开发场景。使用 Homebrew 安装的话,在终端输入brew install --cask visual-studio-code。
- PyCharm:由 JetBrains 开发,是一款专为 Python 开发而设计的强大 IDE。它提供了高效的代码编辑功能、智能代码补全、代码分析、图形化的调试器以及测试运行系统,还支持多种 Web 开发框架,如 Django、Flask 等,非常适合进行大型 Python 项目开发、Web 开发、科学计算和数据分析等任务。可在 JetBrains 官网下载安装包进行安装,下载完成后,将下载的文件拖动到 “应用程序” 文件夹即可完成安装。
(三)系统设置优化
- 调整触控板和键盘设置:MacOS 的触控板操作非常丰富,你可以根据自己的使用习惯进行设置。打开 “系统偏好设置”,点击 “触控板”,在这里可以设置三指切换应用、四指显示桌面等操作,让你在开发过程中能够更高效地切换应用和操作界面。对于键盘设置,同样在 “系统偏好设置” 中点击 “键盘”,可以调整键盘重复率和延迟,使输入更加流畅,提高代码编写的效率。
- 关闭文件验证和 App 验证:在开发过程中,有时需要运行一些未签名的应用或文件,这时可以关闭文件验证和 App 验证。打开终端,输入sudo spctl --master-disable,输入密码后回车,即可关闭系统完整性保护(SIP),从而允许运行未签名的应用和文件。但需要注意的是,关闭 SIP 可能会降低系统的安全性,所以在开发完成后,建议重新开启。
- 加速动画和关闭键盘输入延迟:为了让系统操作更加流畅,可以在 “终端” 中输入以下命令来加速窗口动画:defaults write NSGlobalDomain NSWindowResizeTime -float 0.001。同时,如果你觉得键盘输入有延迟,可以通过修改配置文件来关闭延迟。在终端输入defaults write -g InitialKeyRepeat -int 10(默认值是 15)和defaults write -g KeyRepeat -int 1(默认值是 2),即可减少键盘输入延迟,让你在编写代码时更加得心应手。
二、MacOS 应用开发流程

(一)需求分析与设计
在开始 MacOS 应用开发之前,明确应用的功能和目标是至关重要的。这需要与项目相关人员进行充分沟通,深入了解用户需求,分析市场竞争情况,从而确定应用的核心功能和独特卖点。例如,若要开发一款文件管理应用,需考虑用户对文件分类、搜索、备份等方面的需求,以及如何在众多类似应用中脱颖而出,如提供更便捷的操作方式、更高效的搜索功能等。
用户界面设计是应用开发的重要环节,它直接影响用户体验。要遵循苹果的人机交互指南,确保界面简洁、直观、易于操作。使用 Sketch、Adobe XD 等设计工具进行界面原型设计,通过绘制草图、创建交互流程,不断优化界面布局和元素设计。例如,设计一个图像编辑应用的界面时,要合理安排各种工具按钮的位置,使其符合用户的操作习惯,方便用户快速找到并使用所需功能。
架构设计则决定了应用的整体结构和性能。可以根据应用的复杂程度选择合适的架构模式,如 MVC(Model - View - Controller)、MVVM(Model - View - ViewModel)等。MVC 模式将应用分为模型、视图和控制器三个部分,模型负责数据处理,视图负责展示,控制器负责协调两者之间的交互。以一个简单的待办事项应用为例,模型可以是存储待办事项数据的结构体或类,视图是显示待办事项列表和输入框的界面,控制器则负责处理用户添加、删除、修改待办事项的操作,并更新视图和模型。
(二)代码编写
根据开发的应用类型和需求,选择合适的编程语言。在 MacOS 开发中,Swift、Objective - C 和 Python 是常用的编程语言。
- Swift:这是苹果推出的现代编程语言,具有简洁、安全、高效等特点,越来越受到开发者的青睐。例如,创建一个简单的 Swift 命令行程序,计算两个数的和:
let num1 = 5let num2 = 3let sum = num1 + num2print(\"两数之和为:\(sum)\") - Objective - C:作为苹果开发的传统语言,具有良好的兼容性,在一些旧项目或需要与 Cocoa 框架深度集成的场景中仍被广泛使用。以下是用 Objective - C 实现相同功能的代码:
#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) {@autoreleasepool {int num1 = 5;int num2 = 3;int sum = num1 + num2;NSLog(@"两数之和为:%d", sum);}return 0; } - Python:结合 PyObjC 库,Python 也可以用于 MacOS 应用开发,适合快速原型开发和脚本编写。例如,使用 Python 和 PyObjC 创建一个简单的窗口:
import Cocoaclass MyWindowController(Cocoa.NSWindowController):def windowDidLoad(self):super(MyWindowController, self).windowDidLoad()window = self.window()window.setTitle_("Python Mac App")app = Cocoa.NSApplication.sharedApplication() windowController = MyWindowController.alloc().initWithWindowNibName_("MainMenu") windowController.showWindow_(None) app.run()
在编写代码时,要遵循良好的编程规范,注重代码的可读性和可维护性。合理使用注释,清晰地解释代码的功能和逻辑,方便团队成员理解和协作。同时,充分利用各种开发框架和库,如 AppKit(用于构建 Mac 应用的界面)、Foundation(提供基础数据类型和功能)等,提高开发效率。例如,在使用 AppKit 创建一个按钮时,可以这样编写代码:
import AppKitclass ViewController: NSViewController {override func viewDidLoad() {super.viewDidLoad()let button = NSButton(frame: NSRect(x: 100, y: 100, width: 100, height: 50))button.title = "点击我"button.target = selfbutton.action = #selector(buttonClicked)view.addSubview(button)}@objc func buttonClicked() {let alert = NSAlert()alert.messageText = "按钮被点击了"alert.runModal()}
}
(三)测试环节
测试是确保应用质量的关键步骤,通过各种测试方法可以发现并修复潜在的问题。
- 单元测试:针对代码中的最小可测试单元(如函数、方法)进行测试,验证其功能是否正确。Xcode 自带的 XCTest 框架是 MacOS 开发中常用的单元测试工具。例如,对一个计算两个整数之和的函数进行单元测试:
import XCTestfunc add(_ a: Int, _ b: Int) -> Int {return a + b }class MathTests: XCTestCase {func testAdd() {let result = add(3, 5)XCTAssertEqual(result, 8, "加法函数测试失败")} } - 集成测试:用于测试多个模块之间的交互是否正常,确保不同组件能够协同工作。可以使用 Xcode 的测试框架结合模拟对象来进行集成测试。例如,测试一个包含数据模型和视图控制器的简单应用,验证视图控制器能否正确获取和显示数据模型中的数据。
- 系统测试:对整个应用进行全面测试,包括功能、性能、兼容性等方面。可以使用 Selenium 等工具进行自动化系统测试,模拟用户的操作流程,验证应用在不同场景下的表现。例如,测试一个文件管理应用在不同文件数量、不同系统版本下的文件操作功能是否正常,以及应用的响应速度和内存占用情况。
在测试过程中,要编写详细的测试用例,覆盖各种可能的输入和边界条件。及时记录和修复测试中发现的问题,确保应用的稳定性和可靠性。同时,定期进行回归测试,防止在后续开发中引入新的问题。
(四)部署与发布
完成测试后,就可以将应用打包并发布到目标平台。
- 应用打包:在 Xcode 中,选择 “Product” -> “Archive”,Xcode 会对应用进行编译和打包,生成一个归档文件。在归档过程中,要确保应用的图标、版本号等信息设置正确。例如,在 Xcode 的项目设置中,找到 “General” 选项卡,上传应用图标,设置版本号和构建号,这些信息将显示在应用的安装包和 App Store 上。
- 发布到 App Store:将归档文件提交到 App Store Connect 进行审核。在提交之前,需要准备好应用的描述、截图、隐私政策等资料。描述要简洁明了,突出应用的功能和特点;截图要展示应用的主要界面和功能,吸引用户下载。隐私政策则要明确说明应用如何收集、使用和保护用户数据,确保符合相关法律法规。审核过程可能需要一定时间,期间要关注审核反馈,及时处理审核人员提出的问题。
- 其他发布平台:除了 App Store,也可以选择将应用发布到其他平台,如 Mac App Store 之外的网站、第三方应用市场等。但需要注意不同平台的发布规则和要求,确保应用能够顺利上线。例如,发布到网站时,要提供易于下载和安装的方式,可能需要使用 DMG 格式的安装包,并提供详细的安装说明。
三、常见问题及解决方案
在 MacOS 开发环境配置与应用开发过程中,难免会遇到一些问题,以下是一些常见问题及对应的解决方案。
(一)依赖库安装失败
在使用 Homebrew 或 pip 安装依赖库时,可能会遇到安装失败的情况,报错信息中常常包含网络连接问题、依赖冲突或权限不足等提示。
- 网络连接问题:如果是网络连接不稳定或超时导致的安装失败,可以尝试更换网络,或者使用代理服务器。比如在终端中设置 HTTP 代理:export http_proxy=http://your_proxy_address:port,export https_proxy=https://your_proxy_address:port ,这里your_proxy_address是代理服务器地址,port是端口号,设置完成后再重新执行安装命令。
- 依赖冲突:当出现依赖冲突时,需要仔细查看错误信息,了解冲突的具体依赖库。有时可以通过指定依赖库的版本来解决冲突,例如pip install package_name==specific_version,这里package_name是依赖库名称,specific_version是指定的版本号。还可以尝试使用虚拟环境(如 venv、virtualenv)来隔离不同项目的依赖,避免相互干扰。例如,使用 venv 创建虚拟环境:python3 -m venv myenv,然后激活虚拟环境:source myenv/bin/activate,在虚拟环境中进行依赖库安装,这样可以保证每个项目都有独立的依赖环境 。
- 权限不足:若提示权限不足,可以使用sudo命令获取管理员权限进行安装,但不建议频繁使用sudo安装,以免对系统造成不必要的影响。例如sudo brew install package_name。更好的解决方法是将当前用户添加到相应的权限组,或者修改安装目录的权限,使当前用户具有写入权限。比如对于 Python 库的安装,可以修改 Python 的 site-packages 目录权限,让当前用户可以写入:sudo chown -R your_username /Library/Python/3.8/site-packages,这里your_username是当前用户名,3.8 是 Python 版本号,根据实际情况修改 。
(二)编译错误
在使用 Xcode 或其他编译器进行代码编译时,可能会遇到各种编译错误,错误信息常常包含语法错误、缺少头文件、链接错误等。
- 语法错误:这是最常见的编译错误,通常是由于代码书写不规范导致的。仔细查看错误提示,定位到错误所在的代码行,检查代码的语法是否正确。例如,在 Swift 中,变量声明时类型不匹配就会导致语法错误:let num: Int = "abc",这里将字符串赋值给了整型变量,应改为let num: Int = 10。
- 缺少头文件:如果编译时提示缺少头文件,首先检查头文件是否确实存在于项目中。若存在,确认头文件的路径是否正确,是否需要在编译器的设置中添加头文件搜索路径。例如,在使用 C++ 开发时,如果使用了自定义的头文件myheader.h,且该头文件位于项目的include目录下,可以在 Xcode 的项目设置中,找到 “Build Settings”,搜索 “Header Search Paths”,添加$(SRCROOT)/include,这里$(SRCROOT)表示项目根目录 。
- 链接错误:链接错误通常是由于找不到函数或库的定义导致的。检查是否正确链接了相关的库文件,在 Xcode 中,需要在 “Build Phases” -> “Link Binary With Libraries” 中添加所需的库。比如在开发一个使用 SQLite 数据库的应用时,需要添加libsqlite3.dylib库。如果库文件的路径不正确,也会导致链接错误,此时需要确保库文件的路径设置正确。例如,使用第三方库时,库文件可能位于自定义的目录下,需要在 “Build Settings” -> “Library Search Paths” 中添加该目录的路径 。
(三)Xcode 相关问题
Xcode 作为 MacOS 开发的重要工具,在使用过程中也可能出现一些问题。
- Xcode 无法启动或闪退:这可能是由于 Xcode 版本与 MacOS 系统版本不兼容,或者 Xcode 安装文件损坏导致的。首先检查 Xcode 版本是否支持当前的 MacOS 系统版本,如果不支持,升级或降级 Xcode 版本。若怀疑安装文件损坏,可以尝试重新下载并安装 Xcode。在下载前,先卸载当前的 Xcode,打开 “应用程序” 文件夹,将 Xcode 拖移到废纸篓,然后清空废纸篓。接着在 App Store 中重新下载安装 Xcode。
- 模拟器无法正常运行:有时模拟器会出现无法启动、启动后黑屏或运行应用时出错等问题。确保模拟器的版本与 Xcode 和应用的目标版本兼容,在 Xcode 的 “Window” -> “Devices and Simulators” 中,选择正确的模拟器版本。如果模拟器出现异常,可以尝试重置模拟器,在模拟器的菜单栏中选择 “Hardware” -> “Erase All Content and Settings”,然后重新启动模拟器。此外,检查电脑的内存和磁盘空间是否充足,内存不足或磁盘空间不足也可能导致模拟器运行异常。
四、实战案例:开发一个简单 MacOS 应用
接下来,我们以开发一个简单的待办事项应用为例,完整展示从创建项目到发布的全过程,帮助你更直观地理解 MacOS 应用开发的流程。
(一)创建项目
打开 Xcode,在欢迎界面选择 “Create a new Xcode project”,或者点击菜单栏中的 “File” -> “New” -> “Project”。在模板选择页面,选择 “macOS” 下的 “App”,然后点击 “Next”。在项目设置页面,输入项目名称 “TodoApp”,组织标识符(Organization Identifier)可采用反向域名格式,如 “com.yourcompany”,语言选择 “Swift”,用户界面(Interface)选择 “Storyboard”,其他选项保持默认,点击 “Next”。选择项目保存的位置,然后点击 “Create”,这样一个新的 MacOS 应用项目就创建完成了 。
(二)设计用户界面
在项目导航器中找到 “Main.storyboard” 文件并打开,它是应用界面的可视化设计文件。从 Object Library(对象库)中拖拽一个 Table View(表格视图)到视图控制器的主视图中,用于显示待办事项列表。再拖拽一个 TextField(文本输入框)和一个 Button(按钮)到视图中,TextField 用于输入新的待办事项,Button 用于添加待办事项。
为了使界面更加美观和布局合理,需要设置这些控件的约束(Constraints)。选中 Table View,点击界面底部的 “Pin” 按钮,设置其与父视图的上下左右间距都为 0,使其铺满整个视图。对于 TextField 和 Button,设置它们水平居中对齐,并且 Button 在 TextField 的右侧,两者之间保持一定的间距。比如 TextField 距离父视图左边距为 20,Button 距离 TextField 右边距为 20 。
(三)编写代码
- 定义数据模型:在项目中创建一个新的 Swift 文件,命名为 “TodoItem.swift”。在该文件中定义一个结构体来表示待办事项:
struct TodoItem {var title: Stringvar isCompleted: Bool = false } - 配置视图控制器:打开 “ViewController.swift” 文件,在文件顶部导入 AppKit 框架。定义一个数组来存储待办事项,并与界面上的 Table View 和 Button 建立连接。
import Cocoaclass ViewController: NSViewController {@IBOutlet weak var todoTableView: NSTableView!@IBOutlet weak var newTodoTextField: NSTextField!var todoItems: [TodoItem] = []override func viewDidLoad() {super.viewDidLoad()todoTableView.dataSource = selftodoTableView.delegate = self}@IBAction func addTodoButtonClicked(_ sender: Any) {guard let newTodo = newTodoTextField.stringValue else { return }let item = TodoItem(title: newTodo)todoItems.append(item)todoTableView.reloadData()newTodoTextField.stringValue = ""} }extension ViewController: NSTableViewDataSource {func numberOfRows(in tableView: NSTableView) -> Int {return todoItems.count} }extension ViewController: NSTableViewDelegate {func tableView(_ tableView: NSTableView, viewFor tableColumn: NSTableColumn?, row: Int) -> NSView? {let cell = tableView.makeView(withIdentifier: NSUserInterfaceItemIdentifier(rawValue: "TodoCell"), owner: self) as? NSTableCellViewcell?.textField?.stringValue = todoItems[row].titlereturn cell} }
在这段代码中,ViewController类负责管理视图和用户交互。@IBOutlet属性将界面上的控件与代码关联起来,@IBAction方法处理按钮点击事件,将新的待办事项添加到数组中并刷新表格。NSTableViewDataSource和NSTableViewDelegate的扩展分别实现了表格视图的数据提供和单元格配置功能。
(四)测试应用
点击 Xcode 右上角的运行按钮(或使用快捷键 Command + R),选择一个 Mac 模拟器或直接在本地 Mac 设备上运行应用。在应用运行界面,在文本输入框中输入待办事项,点击 “添加” 按钮,待办事项会显示在表格中。通过这样的测试,可以验证应用的基本功能是否正常,如添加待办事项、显示待办事项列表等。在测试过程中,若发现问题,如按钮点击无反应、表格不更新等,可利用 Xcode 的调试工具,如设置断点、查看变量值等,来定位和解决问题。
(五)打包与发布
- 应用打包:选择菜单栏中的 “Product” -> “Archive”,Xcode 会对应用进行编译和打包,生成一个归档文件。在归档过程中,Xcode 会检查应用的代码、资源文件等是否存在问题,若有问题会提示错误信息,需要根据提示进行修复。
- 发布到 App Store:将归档文件提交到 App Store Connect 进行审核。在提交之前,需要在 App Store Connect 上注册应用,填写应用的名称、描述、截图、隐私政策等信息。应用名称要简洁易记,能准确传达应用的功能;描述要详细介绍应用的特点和优势,吸引用户下载;截图要展示应用的主要界面和功能,让用户对应用有直观的了解;隐私政策则要明确说明应用如何收集、使用和保护用户数据,确保符合相关法律法规。提交审核后,需要耐心等待审核结果,期间要关注审核反馈,及时处理审核人员提出的问题。
- 其他发布方式:除了发布到 App Store,也可以选择将应用发布到其他平台,如 Mac App Store 之外的网站、第三方应用市场等。发布到网站时,需要将应用打包成 DMG 格式的安装包,并提供详细的安装说明,方便用户下载和安装。在发布到第三方应用市场时,要了解其发布规则和要求,确保应用能够顺利上线。
相关文章:
解锁MacOS开发:环境配置与应用开发全攻略
✨✨✨这里是小韩学长yyds的BLOG(喜欢作者的点个关注吧) ✨✨✨想要了解更多内容可以访问我的主页 小韩学长yyds-CSDN博客 目录 引言 一、MacOS 开发环境配置 (一)必备工具安装 (二)集成开发环境(IDE)选…...
如何通过卷积神经网络(CNN)有效地提取图像的局部特征,并在CIFAR-10数据集上实现高精度的分类?
目录 1. CNN 提取图像局部特征的原理 2. 在 CIFAR - 10 数据集上实现高精度分类的步骤 2.1 数据准备 2.2 构建 CNN 模型 2.3 定义损失函数和优化器 2.4 训练模型 2.5 测试模型 3. 提高分类精度的技巧 卷积神经网络(Convolutional Neural Network, CNN&#…...
监听 RabbitMQ 延时交换机的消息数、OpenFeign 路径参数传入斜杠无法正确转义
背景 【MQ】一套为海量消息和高并发热点消息,提供高可用精准延时服务的解决方案 我现在有一个需求,就是监听 RabbitMQ 一个延时交换机的消息数,而 RabbitTemplate 是不存在对应的方法来获取的。 而我们在 RabbitMQ 的控制台却可以发现延时交…...
希音(Shein)前端开发面试题集锦和参考答案
用 Node 写过什么工具或 npm 包 在实际开发中,使用 Node 编写过多种实用工具和 npm 包。 自动化构建工具 开发了一个简单的自动化构建工具,用于处理前端项目的资源压缩和合并。在前端项目中,为了优化性能,需要对 CSS 和 JavaScript 文件进行压缩,减少文件体积,同时将多个…...
python全栈-Linux基础
python全栈-Linux基础 文章目录 Linux安装/配置网络配置配置Linux远程登录配置虚拟机内部ip配置真机的ip安装XShell和Xftp目录结构用户和用户组用户管理添加用户useradd查看用户id修改用户usermod (选项)(参数)用户密码设置passed (选项)(参数)删除用户userdel [选项] 用户名 用…...
DeepSeek R1助力,腾讯AI代码助手解锁音乐创作新
目录 1. DeepSeekR1模型简介2. 歌词创作流程2.1 准备工作2.2 歌词生成技巧 3. 音乐制作环节3.1 主流AI音乐生成平台 4. 歌曲欣赏5. 总结展望 1. DeepSeekR1模型简介 腾讯AI代码助手最新推出的DeepSeekR1模型不仅在代码生成方面表现出色,其强大的自然语言处理能力也…...
Git安装与配置
安装部分: Windows:下载官网安装包,双击安装,路径选择(注意是否修改),安装选项(是否勾选某些选项,如提到安装时更换编辑器为Nano)。Linux:通过包管…...
【Linux】自定协议和序列化与反序列化
目录 一、序列化与反序列化概念 二、自定协议实现一个加法网络计算器 (一)TCP如何保证接收方的接收到数据是完整性呢? (二)自定义协议 (三)自定义协议的实现 1、基础类 2、序列化与反序列…...
C++基础系列【19】运算符重载
博主介绍:程序喵大人 35- 资深C/C/Rust/Android/iOS客户端开发10年大厂工作经验嵌入式/人工智能/自动驾驶/音视频/游戏开发入门级选手《C20高级编程》《C23高级编程》等多本书籍著译者更多原创精品文章,首发gzh,见文末👇…...
Python-04BeautifulSoup网络爬虫
2025-03-04-BeautifulSoup网络爬虫 记录BeautifulSoup网络爬虫的核心知识点 文章目录 2025-03-04-BeautifulSoup网络爬虫 [toc]1-参考网址2-学习要点3-核心知识点1. 安装2. 导入必要的库3. 发送 HTTP 请求4. 创建 BeautifulSoup 对象5. 解析 HTML 内容5.1 查找标签5.2 根据属性…...
芯科科技通过全新并发多协议SoC重新定义智能家居连接
MG26系列SoC现已全面供货,为开发人员提供最高性能和人工智能/机器学习功能 致力于以安全、智能无线连接技术,建立更互联世界的全球领导厂商Silicon Labs(亦称“芯科科技”,NASDAQ:SLAB),日前宣…...
python-leetcode-零钱兑换 II
518. 零钱兑换 II - 力扣(LeetCode) 这个问题是 完全背包问题 的一个变体,可以使用 动态规划 来解决。我们定义 dp[i] 为凑成金额 i 的硬币组合数。 思路: 定义 DP 数组 设 dp[i] 表示凑成金额 i 的组合数,初始化 dp[…...
【RabbitMQ】Producer之TTL过期时间 - 基于AMQP 0-9-1
这篇文章和大家分享Producer发布消息时如何设置消息过期时间,包括队列级别和消息级别,还有如何设置队列的过期时间。 消息过期时间 给消息设置TTL,在超过TTL值后,消息就会变成dead message(死信)…...
演示汉字笔顺的工具
视频需要审核,还是gif比较方便,本来就不长。 给小学生辅导汉字笔顺的时候,先是发现“百度汉语”里面有很多类似的笔顺的动画,非常方便。但总是需要上网,而且百度上并不提供针对特定汉字的方便的检索途径,加…...
JVM简单了解
一、JVM概述 目录 一、JVM概述 1.jvm的作用 2.jvm的组成 2.1类加载 2.1.1加载 2.1.2链接 2.1.3初始化 2.1.4类加载器分类 2.1.5双亲委派机制 2.2运行时数据区 2.2.1程序计数器 2.2.2虚拟机栈 2.2.3本地方法栈 2.2.4java堆内存 2.2.5方法区 2.3本地方法库接口 …...
【CSS—前端快速入门】CSS 选择器
CSS 1. CSS介绍 1.1 什么是CSS? CSS(Cascading Style Sheet),层叠样式表,用于控制页面的样式; CSS 能够对网页中元素位置的排版进行像素级精确控制,实现美化页面的效果;能够做到页面的样式和 结构分离; 1…...
【MYSQL数据库异常处理】执行SQL语句报超时异常
MYSQL执行SQL语句异常:The last packet successfully received from the server was 100,107 milliseconds ago. The last packet sent successfully to the server was 100,101 milliseconds ago. 这个错误表明 MySQL 服务器与 JDBC 连接之间的通信超时了。通常由…...
【Day9】make/makeFile如何让项目构建自动化起飞
【Day9】make/makeFile如何让项目构建自动化起飞 使用make命令编写makefile文件依赖管理增量构建makefile注释:#makefile其他语法 make/makefile递归式工作过程 在Linux中,项目自动化构建是指使用一系列工具和脚本来自动执行软件项目的编译、测试、打包和…...
【单片机】嵌入式系统的硬件与软件特性
嵌入式系统的软件结构 嵌入式系统的软件结构一般分为 不带操作系统(Bare Metal) 和 带操作系统(RTOS / Linux) 两种。不同的软件架构适用于不同的应用场景,如 简单控制系统、实时控制系统、物联网、工业自动化等。 嵌…...
C语言学习笔记-初阶(30)深入理解指针2
1. 数组名的理解 在上一个章节我们在使用指针访问数组的内容时,有这样的代码: int arr[10] {1,2,3,4,5,6,7,8,9,10}; int *p &arr[0]; 这里我们使用 &arr[0] 的方式拿到了数组第⼀个元素的地址,但是其实数组名本来就是地址&…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...
在Ubuntu24上采用Wine打开SourceInsight
1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...
【安全篇】金刚不坏之身:整合 Spring Security + JWT 实现无状态认证与授权
摘要 本文是《Spring Boot 实战派》系列的第四篇。我们将直面所有 Web 应用都无法回避的核心问题:安全。文章将详细阐述认证(Authentication) 与授权(Authorization的核心概念,对比传统 Session-Cookie 与现代 JWT(JS…...
【Linux】Linux安装并配置RabbitMQ
目录 1. 安装 Erlang 2. 安装 RabbitMQ 2.1.添加 RabbitMQ 仓库 2.2.安装 RabbitMQ 3.配置 3.1.启动和管理服务 4. 访问管理界面 5.安装问题 6.修改密码 7.修改端口 7.1.找到文件 7.2.修改文件 1. 安装 Erlang 由于 RabbitMQ 是用 Erlang 编写的,需要先安…...
Java数组Arrays操作全攻略
Arrays类的概述 Java中的Arrays类位于java.util包中,提供了一系列静态方法用于操作数组(如排序、搜索、填充、比较等)。这些方法适用于基本类型数组和对象数组。 常用成员方法及代码示例 排序(sort) 对数组进行升序…...
渗透实战PortSwigger Labs指南:自定义标签XSS和SVG XSS利用
阻止除自定义标签之外的所有标签 先输入一些标签测试,说是全部标签都被禁了 除了自定义的 自定义<my-tag onmouseoveralert(xss)> <my-tag idx onfocusalert(document.cookie) tabindex1> onfocus 当元素获得焦点时(如通过点击或键盘导航&…...
网页端 js 读取发票里的二维码信息(图片和PDF格式)
起因 为了实现在报销流程中,发票不能重用的限制,发票上传后,希望能读出发票号,并记录发票号已用,下次不再可用于报销。 基于上面的需求,研究了OCR 的方式和读PDF的方式,实际是可行的ÿ…...
无需布线的革命:电力载波技术赋能楼宇自控系统-亚川科技
无需布线的革命:电力载波技术赋能楼宇自控系统 在楼宇自动化领域,传统控制系统依赖复杂的专用通信线路,不仅施工成本高昂,后期维护和扩展也极为不便。电力载波技术(PLC)的突破性应用,彻底改变了…...

