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

Excel_VBA编程

在Excel中,VBA(Visual Basic for Applications)是一种强大的工具,可以用来自动化各种任务。下面介绍一些常用的VBA函数和程序结构:

常用函数

  1. MsgBox:用于显示消息框。

    MsgBox "Hello, World!"
    
  2. InputBox:用于显示输入框,接收用户输入。

    Dim userInput As String
    userInput = InputBox("Enter your name:")
    
  3. Range:用于引用单元格或单元格区域。

    Range("A1").Value = "Hello"
    
  4. Cells:用于引用特定行列的单元格。

    Cells(1, 1).Value = "Hello"
    
  5. Worksheets:用于引用特定工作表。

    Worksheets("Sheet1").Range("A1").Value = "Hello"
    
  6. Application:用于引用Excel应用程序对象。

    Application.Workbooks.Open "C:\Path\To\File.xlsx"
    
  7. If…Then…Else:条件语句。

    If Range("A1").Value = "Hello" ThenMsgBox "Greeting found!"
    ElseMsgBox "Greeting not found."
    End If
    
  8. For Each…Next:循环遍历集合。

    Dim ws As Worksheet
    For Each ws In WorksheetsMsgBox ws.Name
    Next ws
    
  9. For…Next:计数循环。

    Dim i As Integer
    For i = 1 To 10Cells(i, 1).Value = i
    Next i
    
  10. Do…Loop:条件循环。

    Dim i As Integer
    i = 1
    Do While i <= 10Cells(i, 1).Value = ii = i + 1
    Loop
    

程序结构

  1. Sub过程:Sub过程是执行特定任务的一组代码,不返回值。

    Sub SayHello()MsgBox "Hello, World!"
    End Sub
    
  2. Function过程:Function过程类似于Sub过程,但可以返回值。

    Function AddNumbers(a As Integer, b As Integer) As IntegerAddNumbers = a + b
    End Function
    
  3. 模块:模块是VBA代码的容器,可以包含多个Sub和Function过程。

    ' 这是一个模块
    Sub Main()Call SayHelloMsgBox AddNumbers(2, 3)
    End SubSub SayHello()MsgBox "Hello, World!"
    End SubFunction AddNumbers(a As Integer, b As Integer) As IntegerAddNumbers = a + b
    End Function
    
  4. 事件过程:事件过程是响应特定事件的Sub过程,如工作簿打开、单元格改变等。

    Private Sub Workbook_Open()MsgBox "Workbook opened!"
    End SubPrivate Sub Worksheet_Change(ByVal Target As Range)If Target.Address = "$A$1" ThenMsgBox "Cell A1 has changed!"End If
    End Sub
    

示例

下面是一个综合使用上述函数和结构的VBA示例:

Sub ProcessData()' 定义变量Dim ws As WorksheetDim total As Doubletotal = 0' 遍历所有工作表For Each ws In Worksheets' 遍历工作表中的每一行Dim i As IntegerFor i = 1 To ws.Cells(Rows.Count, 1).End(xlUp).Row' 将第一列的值累加到总数total = total + ws.Cells(i, 1).ValueNext iNext ws' 显示总数MsgBox "The total is " & total
End Sub

这个例子演示了如何遍历所有工作表,累加每个工作表中第一列的值,并显示总数。

通过熟练掌握这些VBA函数和程序结构,您可以编写强大且灵活的Excel自动化脚本。

创建按钮

在Excel中,可以通过VBA创建一个按钮,并设置它的点击事件以执行特定的操作,比如生成文件并写入内容。下面是详细步骤:

1. 创建按钮

  1. 打开Excel工作簿。
  2. 转到“开发工具”选项卡。如果没有看到“开发工具”选项卡,可以通过“文件” -> “选项” -> “自定义功能区”来启用它。
  3. 在“开发工具”选项卡中,点击“插入”,选择“按钮(窗体控件)”。
  4. 在工作表中绘制一个按钮。
  5. 绘制按钮后,会自动弹出“指定宏”对话框。为按钮创建一个新的宏,命名为ButtonClick,然后点击“确定”。

2. 编写宏代码

在Excel VBA编辑器(按Alt + F11打开)中编写宏代码。以下是一个示例宏,按下按钮后生成一个文件并写入内容:

Sub ButtonClick()' 定义文件路径和名称Dim filePath As StringfilePath = "C:\Path\To\Your\File.txt"' 打开文件以写入Dim fileNum As IntegerfileNum = FreeFileOpen filePath For Output As #fileNum' 写入内容Print #fileNum, "This is the first line."Print #fileNum, "This is the second line."' 关闭文件Close #fileNum' 提示用户文件已生成MsgBox "File has been created at " & filePath
End Sub

3. 连接按钮和宏

  1. 回到Excel工作表,右键点击刚创建的按钮,选择“指定宏”。
  2. 选择ButtonClick宏,然后点击“确定”。

4. 运行宏

现在,当您点击按钮时,宏将会执行,生成一个文件并写入指定内容。

示例解释

  • filePath定义了文件的路径和名称。
  • FreeFile函数用于获取一个未使用的文件编号。
  • Open语句打开指定文件进行输出。
  • Print语句将内容写入文件。
  • Close语句关闭文件。

通过这些步骤,您可以在Excel中创建一个按钮,并在按下按钮时生成文件并写入内容。您可以根据需要修改宏代码,以实现不同的功能和文件格式。

在VBA编程中,DimSub是两个非常重要的关键字,分别用于变量声明和子过程定义。下面详细介绍它们的用法和相关概念。

Dim 关键字

Dim(Dimension 的缩写)用于声明变量。它指定变量的名称和数据类型。变量声明有助于分配内存和提高代码的可读性和维护性。

基本语法
Dim variableName As DataType
示例
Dim i As Integer
Dim name As String
Dim isActive As Boolean
Dim startDate As Date
Dim values() As Double ' 数组声明
变量作用域

变量的作用域取决于它声明的位置:

  1. 局部变量:在过程(Sub或Function)内声明,仅在该过程内有效。

    Sub ExampleSub()Dim localVar As IntegerlocalVar = 10MsgBox localVar
    End Sub
    
  2. 模块级变量:在模块顶部(任何过程外)声明,模块内的所有过程都能访问。

    Dim moduleVar As IntegerSub ExampleSub1()moduleVar = 10
    End SubSub ExampleSub2()MsgBox moduleVar
    End Sub
    
  3. 全局变量:使用Public关键字声明,所有模块中的所有过程都能访问。

    Public globalVar As IntegerSub ExampleSub1()globalVar = 10
    End SubSub ExampleSub2()MsgBox globalVar
    End Sub
    

Sub 关键字

Sub(Subroutine 的缩写)用于定义一个子过程,它是一组执行特定任务的代码块。子过程不返回值。

基本语法
Sub ProcedureName([parameters])' 过程体
End Sub
示例
Sub SayHello()MsgBox "Hello, World!"
End SubSub AddNumbers(a As Integer, b As Integer)MsgBox a + b
End Sub
参数

子过程可以接受参数,参数可以是可选的,也可以是必需的。

Sub GreetUser(name As String)MsgBox "Hello, " & name
End SubSub GreetUserOptional(Optional name As String = "Guest")MsgBox "Hello, " & name
End Sub

示例:结合DimSub

下面是一个结合DimSub的示例,展示如何声明变量并在子过程内使用它们。

Sub ProcessData()' 声明变量Dim i As IntegerDim total As DoubleDim ws As Worksheet' 初始化变量total = 0' 遍历所有工作表For Each ws In Worksheets' 遍历工作表中的每一行For i = 1 To ws.Cells(Rows.Count, 1).End(xlUp).Row' 累加第一列的值total = total + ws.Cells(i, 1).ValueNext iNext ws' 显示总数MsgBox "The total is " & total
End Sub

详细示例:结合按钮和自动化任务

我们结合前面的内容,演示一个完整的例子,创建按钮、声明变量、定义子过程,并将第一列的十进制数转换为十六进制数并显示在第二列。

创建按钮并连接宏
  1. 在Excel中创建一个按钮,并命名宏为ButtonClick
编写宏代码
Sub ButtonClick()' 定义变量Dim i As IntegerDim decValue As VariantDim hexValue As StringDim lastRow As Long' 确定第一列中最后一个有数据的单元格行号lastRow = Cells(Rows.Count, 1).End(xlUp).Row' 遍历第一列中的所有行For i = 1 To lastRow' 获取第一列的值decValue = Cells(i, 1).Value' 检查是否是数字If IsNumeric(decValue) Then' 将十进制值转换为十六进制hexValue = WorksheetFunction.Dec2Hex(decValue)' 在第二列中显示对应的十六进制值并加上前缀0xCells(i, 2).Value = "0x" & hexValueElse' 如果不是数字,则清空第二列的值Cells(i, 2).Value = ""End IfNext i
End Sub

通过这些详细的解释和示例,您应该能够理解DimSub的用法,并在VBA编程中灵活运用它们。

数据类型

在VBA中,Dim关键字用于声明变量,可以定义多种数据类型。每种数据类型都有其特定的用途和适用场景。以下是一些常见的数据类型及其使用方法:

常见数据类型

  1. Integer

    • 用于存储整数,范围是 -32,768 到 32,767。
    Dim i As Integer
    i = 12345
    
  2. Long

    • 用于存储较大的整数,范围是 -2,147,483,648 到 2,147,483,647。
    Dim l As Long
    l = 123456789
    
  3. Single

    • 用于存储单精度浮点数。
    Dim s As Single
    s = 123.45
    
  4. Double

    • 用于存储双精度浮点数。
    Dim d As Double
    d = 123456.789
    
  5. Currency

    • 用于存储货币值,精度高达四位小数。
    Dim c As Currency
    c = 123456.78
    
  6. Decimal

    • 用于存储精度更高的数值,适合需要高精度的小数计算。
    Dim dec As Decimal
    dec = 1234567890.123456789
    
  7. String

    • 用于存储文本字符串。
    Dim str As String
    str = "Hello, World!"
    
  8. Boolean

    • 用于存储布尔值(True 或 False)。
    Dim b As Boolean
    b = True
    
  9. Date

    • 用于存储日期和时间。
    Dim dt As Date
    dt = #12/31/2024#
    
  10. Variant

    • 可以存储任何类型的数据,是一种通用的数据类型,但性能较低,建议尽量避免使用。
    Dim v As Variant
    v = "This can be any type"
    
  11. Object

    • 用于存储对象引用。
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("Sheet1")
    
  12. Array

    • 用于存储数组。
    Dim arr(1 To 5) As Integer
    arr(1) = 10
    arr(2) = 20
    '... 继续初始化其他元素
    

使用示例

下面是一个示例宏,展示了如何声明并使用不同的数据类型:

Sub DataTypeExamples()' 整数Dim i As Integeri = 12345MsgBox "Integer: " & i' 长整数Dim l As Longl = 123456789MsgBox "Long: " & l' 单精度浮点数Dim s As Singles = 123.45MsgBox "Single: " & s' 双精度浮点数Dim d As Doubled = 123456.789MsgBox "Double: " & d' 货币Dim c As Currencyc = 123456.78MsgBox "Currency: " & c' 字符串Dim str As Stringstr = "Hello, World!"MsgBox "String: " & str' 布尔值Dim b As Booleanb = TrueMsgBox "Boolean: " & b' 日期Dim dt As Datedt = #12/31/2024#MsgBox "Date: " & dt' VariantDim v As Variantv = "This can be any type"MsgBox "Variant: " & v' 对象Dim ws As WorksheetSet ws = ThisWorkbook.Worksheets("Sheet1")MsgBox "Worksheet name: " & ws.Name' 数组Dim arr(1 To 5) As Integerarr(1) = 10arr(2) = 20arr(3) = 30arr(4) = 40arr(5) = 50MsgBox "Array element 1: " & arr(1)MsgBox "Array element 2: " & arr(2)
End Sub

注意事项

  1. 精度和范围:选择合适的数据类型可以有效利用内存并提高性能。例如,使用Integer而不是Long来存储较小的整数。
  2. 类型转换:需要时可以使用类型转换函数,例如CIntCLngCSngCDblCStr等。
  3. 对象引用:在处理对象(如工作表、工作簿等)时,记得使用Set关键字。

通过熟练掌握这些数据类型及其用法,您可以编写更高效、易维护的VBA代码。

ThisWorkbook

ThisWorkbook 是 Excel VBA 中的一个对象,代表当前运行的 VBA 代码所在的工作簿。无论代码在哪个工作表模块或普通模块中运行,ThisWorkbook 都始终指向包含该代码的工作簿。使用 ThisWorkbook 可以简化对工作簿的引用和操作,确保代码始终作用于正确的工作簿。

ThisWorkbook 对象的常用操作

1. 访问工作簿属性

ThisWorkbook 可以用来访问工作簿的各种属性,如名称、路径、保存状态等。

Sub WorkbookProperties()Dim wbName As StringDim wbPath As StringDim isSaved As BooleanwbName = ThisWorkbook.NamewbPath = ThisWorkbook.PathisSaved = ThisWorkbook.SavedMsgBox "Workbook Name: " & wbNameMsgBox "Workbook Path: " & wbPathMsgBox "Is Workbook Saved? " & isSaved
End Sub
2. 保存工作簿

可以使用 ThisWorkbook 对象的 SaveSaveAs 方法来保存工作簿。

Sub SaveWorkbook()' 保存当前工作簿ThisWorkbook.Save
End SubSub SaveWorkbookAs()' 保存当前工作簿为新的文件ThisWorkbook.SaveAs "C:\Path\To\NewWorkbook.xlsx"
End Sub
3. 关闭工作簿

使用 Close 方法可以关闭当前工作簿。

Sub CloseWorkbook()' 关闭当前工作簿且不保存更改ThisWorkbook.Close SaveChanges:=False
End Sub
4. 访问工作表

可以通过 ThisWorkbook 访问工作簿中的工作表。

Sub AccessWorksheets()' 激活名为 "Sheet1" 的工作表ThisWorkbook.Worksheets("Sheet1").Activate' 在名为 "Sheet1" 的工作表的 A1 单元格中输入值ThisWorkbook.Worksheets("Sheet1").Range("A1").Value = "Hello, World!"
End Sub
5. 事件处理

可以在 ThisWorkbook 模块中编写工作簿级别的事件处理代码。例如,工作簿打开或关闭时执行特定操作。

' 在 ThisWorkbook 模块中
Private Sub Workbook_Open()MsgBox "Welcome to " & ThisWorkbook.Name
End SubPrivate Sub Workbook_BeforeClose(Cancel As Boolean)MsgBox "Goodbye from " & ThisWorkbook.Name
End Sub
6. 添加工作表

可以通过 ThisWorkbook 对象添加新的工作表。

Sub AddWorksheet()Dim ws As WorksheetSet ws = ThisWorkbook.Worksheets.Addws.Name = "NewSheet"
End Sub
7. 删除工作表

可以通过 ThisWorkbook 对象删除指定的工作表。

Sub DeleteWorksheet()Application.DisplayAlerts = FalseThisWorkbook.Worksheets("Sheet1").DeleteApplication.DisplayAlerts = True
End Sub
8. 使用自定义属性

可以通过 ThisWorkbook 对象存取工作簿的自定义属性。

Sub SetCustomProperty()ThisWorkbook.CustomDocumentProperties.Add _Name:="MyProperty", _LinkToContent:=False, _Type:=msoPropertyTypeString, _Value:="MyValue"
End SubSub GetCustomProperty()Dim propValue As StringOn Error Resume NextpropValue = ThisWorkbook.CustomDocumentProperties("MyProperty").ValueOn Error GoTo 0MsgBox "Custom Property Value: " & propValue
End Sub

综合示例

下面是一个综合示例,展示了如何在 ThisWorkbook 中执行多个操作:

Sub ComprehensiveExample()' 获取工作簿属性Dim wbName As StringwbName = ThisWorkbook.NameMsgBox "Workbook Name: " & wbName' 保存工作簿ThisWorkbook.Save' 添加新工作表Dim ws As WorksheetSet ws = ThisWorkbook.Worksheets.Addws.Name = "NewSheet"' 在新工作表中输入值ws.Range("A1").Value = "Hello, from NewSheet!"' 访问特定工作表并输入值ThisWorkbook.Worksheets("Sheet1").Range("A1").Value = "Hello, from Sheet1!"' 关闭工作簿但不保存' ThisWorkbook.Close SaveChanges:=False
End Sub

通过上述操作,您可以充分利用 ThisWorkbook 对象来管理和操作当前工作簿,从而提高代码的灵活性和稳定性。

WorkSheets

Worksheets 是 Excel VBA 中的一个集合对象,表示工作簿中的所有工作表。它允许您访问、操作和管理工作簿中的工作表。以下是一些常见的 Worksheets 操作及其用法示例。

访问工作表

按名称访问
Sub AccessWorksheetByName()Dim ws As WorksheetSet ws = ThisWorkbook.Worksheets("Sheet1")ws.Range("A1").Value = "Hello, World!"
End Sub
按索引访问
Sub AccessWorksheetByIndex()Dim ws As WorksheetSet ws = ThisWorkbook.Worksheets(1) ' 访问第一个工作表ws.Range("A1").Value = "Hello, World!"
End Sub

遍历所有工作表

Sub LoopThroughWorksheets()Dim ws As WorksheetFor Each ws In ThisWorkbook.WorksheetsMsgBox "Sheet Name: " & ws.NameNext ws
End Sub

添加和删除工作表

添加工作表
Sub AddNewWorksheet()Dim newSheet As WorksheetSet newSheet = ThisWorkbook.Worksheets.AddnewSheet.Name = "NewSheet"
End Sub
在特定位置添加工作表
Sub AddWorksheetAtSpecificPosition()Dim newSheet As WorksheetSet newSheet = ThisWorkbook.Worksheets.Add(After:=ThisWorkbook.Worksheets(1))newSheet.Name = "NewSheetAfterFirst"
End Sub
删除工作表
Sub DeleteWorksheet()Application.DisplayAlerts = FalseThisWorkbook.Worksheets("Sheet1").DeleteApplication.DisplayAlerts = True
End Sub

激活和选择工作表

激活工作表
Sub ActivateWorksheet()ThisWorkbook.Worksheets("Sheet1").Activate
End Sub
选择工作表
Sub SelectWorksheet()ThisWorkbook.Worksheets("Sheet1").Select
End Sub

复制工作表

Sub CopyWorksheet()ThisWorkbook.Worksheets("Sheet1").Copy After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
End Sub

移动工作表

Sub MoveWorksheet()ThisWorkbook.Worksheets("Sheet1").Move After:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
End Sub

示例:综合使用 Worksheets

下面是一个综合示例,展示如何访问、添加、删除和遍历工作表:

Sub ComprehensiveWorksheetsExample()' 访问第一个工作表并设置值Dim firstSheet As WorksheetSet firstSheet = ThisWorkbook.Worksheets(1)firstSheet.Range("A1").Value = "This is the first sheet"' 添加一个新工作表并设置值Dim newSheet As WorksheetSet newSheet = ThisWorkbook.Worksheets.AddnewSheet.Name = "NewSheet"newSheet.Range("A1").Value = "This is a new sheet"' 遍历所有工作表并显示名称Dim ws As WorksheetFor Each ws In ThisWorkbook.WorksheetsMsgBox "Sheet Name: " & ws.NameNext ws' 删除名为 "NewSheet" 的工作表Application.DisplayAlerts = FalseThisWorkbook.Worksheets("NewSheet").DeleteApplication.DisplayAlerts = True
End Sub

常见错误和注意事项

  1. 确保工作表存在:在访问工作表之前,确保工作表存在,否则会引发错误。例如,使用错误处理程序来检查工作表是否存在。
Function WorksheetExists(sheetName As String) As BooleanOn Error Resume NextWorksheetExists = Not ThisWorkbook.Worksheets(sheetName) Is NothingOn Error GoTo 0
End FunctionSub CheckAndAccessWorksheet()If WorksheetExists("Sheet1") ThenThisWorkbook.Worksheets("Sheet1").ActivateElseMsgBox "Sheet1 does not exist!"End If
End Sub
  1. 处理用户警告:删除工作表时,默认情况下 Excel 会显示警告对话框。可以通过设置 Application.DisplayAlertsFalse 来禁用这些警告。

  2. 命名冲突:添加或重命名工作表时,确保新名称不与现有名称冲突。

通过掌握 Worksheets 对象的各种操作,您可以更有效地管理和操作 Excel 工作簿中的工作表。

相关文章:

Excel_VBA编程

在Excel中&#xff0c;VBA&#xff08;Visual Basic for Applications&#xff09;是一种强大的工具&#xff0c;可以用来自动化各种任务。下面介绍一些常用的VBA函数和程序结构&#xff1a; 常用函数 MsgBox&#xff1a;用于显示消息框。 MsgBox "Hello, World!"In…...

Java中的Path类使用详解及最佳实践

Java中的Path类使用详解及最佳实践 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将深入探讨Java中的Path类&#xff0c;这是Java标准库中用于操作文件…...

生成和查看预定义宏

参考下面的指令 arm-none-eabi-gcc -marcharmv7e-m -dM -E - < /dev/null | grep SYNC这个指令是用来生成和查看预定义宏&#xff08;macros&#xff09;的一种方法。让我们逐步分解和解释这个命令的各个部分&#xff1a; arm-none-eabi-gcc: 这是 ARM 架构下的交叉编译器…...

Redis 7.x 系列【12】数据类型之基数统计(HyperLogLog)

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Redis 版本 7.2.5 源码地址&#xff1a;https://gitee.com/pearl-organization/study-redis-demo 文章目录 1. 概述2. 常用命令2.1 PFADD2.2 PFCOUNT2.3 PFMERGE 3. 应用场景 1. 概述 基数表示数…...

开源大模型RAG企业本地知识库问答机器人-ChatWiki

ChatWiki ChatWiki是一款开源的知识库 AI 问答系统。系统基于大语言模型&#xff08;LLM &#xff09;和检索增强生成&#xff08;RAG&#xff09;技术构建&#xff0c;提供开箱即用的数据处理、模型调用等能力&#xff0c;可以帮助企业快速搭建自己的知识库 AI 问答系统。 开…...

基于Java的蛋糕预定系统【附源码+LW】

摘 要 当今社会进入了科技进步、经济社会快速发展的新时代。国际信息和学术交流也不断加强&#xff0c;计算机技术对经济社会发展和人民生活改善的影响也日益突出&#xff0c;人类的生存和思考方式也产生了变化。传统购物方式采取了人工的管理方法&#xff0c;但这种管理方法存…...

Java框架的原理主要基于以下几个核心

本人详解 作者:王文峰,参加过 CSDN 2020年度博客之星,《Java王大师王天师》 公众号:JAVA开发王大师,专注于天道酬勤的 Java 开发问题中国国学、传统文化和代码爱好者的程序人生,期待你的关注和支持!本人外号:神秘小峯 山峯 转载说明:务必注明来源(注明:作者:王文峰…...

已解决javax.xml.bind.MarshalException:在RMI中,参数或返回值无法被编组的正确解决方法,亲测有效!!!

已解决javax.xml.bind.MarshalException&#xff1a;在RMI中&#xff0c;参数或返回值无法被编组的正确解决方法&#xff0c;亲测有效&#xff01;&#xff01;&#xff01; 目录 问题分析 出现问题的场景 服务器端代码 客户端代码 报错原因 解决思路 解决方法 1. 实现…...

仓库管理系统17--客户管理

原创不易&#xff0c;打字不易&#xff0c;截图不易&#xff0c;多多点赞&#xff0c;送人玫瑰&#xff0c;留有余香&#xff0c;财务自由明日实现 1、添加用户控件 <UserControl x:Class"West.StoreMgr.View.CustomerView"xmlns"http://schemas.microsof…...

笔记本重装系统怎么操作? windows电脑重装系统,超实用的四种方法

重新安装操作系统是维护计算机性能和确保系统稳定运行的重要步骤。对于 Windows 笔记本用户而言&#xff0c;熟悉重装系统的方法可以帮助他们解决各种问题&#xff0c;从提高系统速度到修复软件故障。然而具体来讲&#xff0c;笔记本重装系统怎么操作呢&#xff1f;接下来&…...

【高考志愿】计算机

目录 一、专业概述 二、就业方向 三、选择建议 四、注意事项 五、计算机专业学科排名 高考志愿选择计算机专业&#xff0c;无疑是一个充满挑战与机遇的决策。这个专业以其广泛的应用领域、前沿的技术研究和可观的就业前景&#xff0c;吸引了无数考生的目光。 一、专业概述…...

使用ExpandableListView创建可扩展列表

使用ExpandableListView创建可扩展列表 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将深入探讨如何使用Android中的ExpandableListView创建可扩展列…...

酒店新零售模式,亚朵酒店众筹模式, 社交新零售商业模式

抓住会员的需求&#xff0c;通过众筹让上万铁杆粉丝成为微股东&#xff01; 作为一家高端酒店&#xff0c;它拥有近2000万会员&#xff0c;这些会员还抢着掏钱帮它开酒店。而且&#xff0c;这家酒店还直接融资了19亿&#xff0c;计划上市。这家酒店在全国开设了1000多家店&…...

2010-2023年 省级、地级市、地市州盟保障性住房面积数据

保障性住房是政府为解决中低收入家庭住房问题而实施的一项重要政策&#xff0c;旨在通过提供限定价格或租金的住房&#xff0c;实现社会公平和稳定。以下是对省级、地级市、地市州盟保障性住房面积数据的介绍&#xff1a; 数据简介 定义&#xff1a;保障性住房包括廉租住房、…...

Java 语言特定指南

Java 语言特定指南 本 Java 入门指南将教您如何使用 Docker 创建一个容器化的 Spring Boot 应用程序。在本模块中&#xff0c;您将学习如何&#xff1a; 使用 Maven 容器化并运行一个 Spring Boot 应用程序设置本地开发环境以将数据库连接到容器、配置调试器&#xff0c;并使…...

国内多个库被 rsc 钉上 Go 耻辱柱。。。

大家好&#xff0c;我是煎鱼。 这还是比较突然的&#xff0c;下午正努力打工。国内社区群里突然就闹腾起来了。 仔细一看&#xff0c;原来是 Go 核心团队负责人 rsc&#xff0c;又冷不丁搞大招 &#x1f605;。他直接把国内好几个知名库给直接钉上了 Go 源码库的耻辱柱上了。 如…...

elasticsearch源码分析-03选举集群状态

选举集群状态 es中存储的数据有一下几种&#xff0c;state元数据、lucene索引文件、translog事务日志 元数据信息可以分为&#xff1a; 集群层面的元信息-对应着metaData数据结构&#xff0c;主要是clusterUUid、settings、templates等索引层面的元信息-对应着indexMetaData数…...

MySQL 重要参数优化

max_connections = 3000 innodb_buffer_pool_size = 8G max_allowed_packet = 32M innodb_file_io_threads = 8 innodb_thread_concurrency = 16 innodb_flush_log_at_trx_commit = 2 innodb_log_buffer_size = 16M 参数说明 max_connections = 3000 运行MySQL的最大连…...

软件测试之接口测试(Postman/Jmeter)

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、什么是接口测试 通常做的接口测试指的是系统对外的接口&#xff0c;比如你需要从别的系统来…...

14 卡尔曼滤波及代码实现

文章目录 14 卡尔曼滤波及代码实现14.0 基本概念14.1 公式推导14.2 代码实现 14 卡尔曼滤波及代码实现 14.0 基本概念 卡尔曼滤波是一种利用线性系统状态方程&#xff0c;通过系统输入输出观测数据&#xff0c;对系统状态进行最优估计的算法。由于观测数据包括系统中的噪声和…...

网络编程(Modbus进阶)

思维导图 Modbus RTU&#xff08;先学一点理论&#xff09; 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议&#xff0c;由 Modicon 公司&#xff08;现施耐德电气&#xff09;于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...

<6>-MySQL表的增删查改

目录 一&#xff0c;create&#xff08;创建表&#xff09; 二&#xff0c;retrieve&#xff08;查询表&#xff09; 1&#xff0c;select列 2&#xff0c;where条件 三&#xff0c;update&#xff08;更新表&#xff09; 四&#xff0c;delete&#xff08;删除表&#xf…...

DAY 47

三、通道注意力 3.1 通道注意力的定义 # 新增&#xff1a;通道注意力模块&#xff08;SE模块&#xff09; class ChannelAttention(nn.Module):"""通道注意力模块(Squeeze-and-Excitation)"""def __init__(self, in_channels, reduction_rat…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

GitHub 趋势日报 (2025年06月08日)

&#x1f4ca; 由 TrendForge 系统生成 | &#x1f310; https://trendforge.devlive.org/ &#x1f310; 本日报中的项目描述已自动翻译为中文 &#x1f4c8; 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...

Android15默认授权浮窗权限

我们经常有那种需求&#xff0c;客户需要定制的apk集成在ROM中&#xff0c;并且默认授予其【显示在其他应用的上层】权限&#xff0c;也就是我们常说的浮窗权限&#xff0c;那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...

【Go语言基础【13】】函数、闭包、方法

文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数&#xff08;函数作为参数、返回值&#xff09; 三、匿名函数与闭包1. 匿名函数&#xff08;Lambda函…...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库&#xff08;如 Redisson&#xff09;相比于开发者自己基于 Redis 命令&#xff08;如 SETNX, EXPIRE, DEL&#xff09;手动实现分布式锁&#xff0c;提供了巨大的便利性和健壮性。主要体现在以下几个方面&#xff1a; 原子性保证 (Atomicity)&#xff…...

【Linux】Linux 系统默认的目录及作用说明

博主介绍&#xff1a;✌全网粉丝23W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...