Visual Studio 与 SQL Server 常见报错解决方案(工作向)

前言

这篇文章从今天创建开始,会一直更新下去,以后遇到常见但是比较容易解决的报错会在本文进行更新,有需要的朋友可以收藏再看

目录

  • Visual Studio
    • lc.exe已退出,代码为-1
    • 无法导入以下密钥文件xxx.pfx,该密钥文件可能受密码保护
  • SQL Server
    • SQL SERVER在与服务器建立连接时出错
  • 知识拓展 — 对话AI
    • 什么是封装?
    • 什么是序列化?
    • 什么是程序集?
    • 什么是元素据?
  • 总结

Visual Studio

lc.exe已退出,代码为-1

起因

我们在修改完项目代码时,需要重新生成项目,以便在前端页面查看效果,在点击重新生成时,经常会遇到这样的一个报错

在这里插入图片描述

lc.exe是什么?

lc.exe 的全称是 “License Compiler”,它是一个许可证编译器,通常与.NET应用程序中使用的许可证文件(.licx 文件)相关联。这个工具被用于编译包含许可证信息的文件,以便在运行时验证和授权许可证。

在.NET开发中,lc.exe 主要与第三方控件或组件一起使用,这些组件可能需要许可证文件来确认用户是否有权使用它们。.licx 文件包含了项目中使用的需要许可证验证的组件信息,lc.exe 会处理这个文件,生成许可证的二进制文件(.licenses 文件),然后这个二进制文件通常会被嵌入到应用程序中。

例如,当使用一些商业组件(如Infragistics控件、DevExpress控件等)时,你可能会在项目中看到 .licx 文件,并在构建项目时 lc.exe 会被调用来处理这个文件。

报错:lc.exe已退出,代码为-1的可能原因

1. 许可证文件路径错误:如果指定的许可证文件路径不正确,或者无法找到指定的许可证文件,可能会导致 lc.exe 无法正确执行。

许可证文件一般在properties文件夹下,

在这里插入图片描述

2. 许可证文件格式错误:许可证文件可能损坏或格式不正确,导致 lc.exe 无法解析该文件。
在这里插入图片描述
以上是某个license.licx文件里的所有内容,也就是许可证信息。每一行都表示一个许可证信息,格式为:

CompanyName.ControlName, CompanyName.ControlAssembly, Version=ControlVersion, Culture=neutral, PublicKeyToken=ControlPublicKeyToken

其中:

  • CompanyName 是控件供应商的名称。
  • ControlName 是控件的名称。
  • ControlAssembly 是包含控件的程序集名称。
  • ControlVersion 是控件的版本号。
  • Culture 用于表示特定的语言和文化信息。
  • ControlPublicKeyToken 是控件的公钥标记。

例如,第一行表示 DevExpress.XtraEditors.TextEdit 控件的许可证信息,具体如下:

  • CompanyName: DevExpress.XtraEditors
  • ControlName: TextEdit
  • ControlAssembly: DevExpress.XtraEditors.v12.1
  • ControlVersion: Version=12.1.6.0
  • Culture=neutral :表示该程序集中的代码和资源不依赖于特定的语言或文化设置,可以在任何文化环境中使用
  • ControlPublicKeyToken: PublicKeyToken=b88d1754d700e49a

licenses.licx 文件中的每一行都指定了相应控件的许可证信息。

以上是比较常见的原因,以下是不可抗力因素导致的原因,需要具体问题具体分析
这里只提供参照
3. 许可证生成工具配置错误lc.exe 的配置选项可能不正确,例如,指定的输入或输出参数不符合预期。
4. 权限问题:可能是由于执行 lc.exe 的用户没有足够的权限来访问指定的文件或目录,导致执行失败。
5. 许可证生成过程中的错误:如果在许可证生成过程中发生了错误,例如由于无效的密钥或参数,lc.exe 可能会以退出代码 -1 结束。
6. 系统资源不足:系统资源不足,例如内存不足,可能导致 lc.exe 执行失败。
7. lc.exe 版本不匹配:如果使用的是与项目不兼容的 lc.exe 版本,可能会导致执行期间的错误。

解决方案

1、删除properties文件夹下的license.licx文件

licenses.licx 文件是 Visual Studio 中用于许可证管理的文件,通常包含与项目中使用的第三方控件或组件相关的许可证信息。其主要作用是确保使用受许可证保护的组件时,在运行时能够正常执行而不触发许可证错误。该文件会在编译时生成相关代码用于验证这些组件的许可证。通过自动生成代码,它简化了许可证验证的处理,避免了手动管理的复杂性。每行包含一个控件或组件的完全限定名,标识需要进行许可证验证的组件。注意,通常由 Visual Studio 自动生成和管理,手动编辑可能导致许可证验证错误。
删除了license.licx文件后, lc.exe 会从控件的程序集中提取许可证信息,从而保证受许可证保护的组件能够正常运行

2、在NuGet程序包中安装EmptyLicensesLicx

安装步骤在我的这篇文章 中已有详细介绍,在此不赘述
文件夹内部如下图
在这里插入图片描述

原理

EmptyLicensesLicx是一种简化构建应用程序的方法,特别适用于使用公司(如Telerik、DevExpress、Infragistics等)的第三方控件的项目。通过引用EmptyLicensesLicx.targets并将其链接到构建管道,确保在每次编译项目的Properties\licenses.licx文件之前,该文件始终为空。这意味着尽管Visual Studio会继续修改Properties\licenses.licx文件以反映项目更改,但每次编译时,该文件都会被清空,然后进行编译。请务必将Properties\licenses.licx文件排除/忽略,以避免将其添加到源代码控制系统中。

就是说,在使用这个方法的时候,properties文件夹下不能有licenses.licx文件

3、删除properties文件夹下的.licenses后缀名的文件

原理同删除license.licx文件相似,对于每个在 licenses.licx 文件中列出的控件,lc.exe 将查找对应的 .licenses 文件。这些文件通常由控件供应商提供。lc.exe 使用找到的 .licenses 文件中的信息来生成项目所需的许可证信息。

就是说,删除.licenses后缀名的文件等于告诉lc.exe去程序集里找许可证信息吧!

以上是我目前对于lc,exe文件的理解,其中若有出错遗漏的地方,请道友们不吝赐教
如要了解更多lc.exe的信息,点此跳转Microsoft官方文档

无法导入以下密钥文件xxx.pfx,该密钥文件可能受密码保护

这个报错是我在删除license.licx后重新生成项目时出现的

什么原因?

我们首先来理解一下生成重新生成的概念
在Visual Studio和其他集成开发环境(IDE)中,“生成”和“重新生成”是两个不同的操作,它们的区别在于:

  1. 生成: 当你点击“生成”按钮时,IDE会检查项目中的源代码文件的修改日期和与之相关的依赖项。如果只有一部分源代码或相关文件发生了更改,IDE只会重新编译这些已更改的部分,以提高构建速度。如果没有文件发生更改,它可能不会执行任何编译操作。
  2. 重新生成: 当你点击“重新生成”按钮时,IDE会忽略源代码和依赖项的修改日期,强制重新编译整个项目。这确保了所有的源代码都会被重新编译,而不仅仅是已更改的部分。重新生成有助于确保项目的完整性,但可能需要更长的时间。

也就是说重新编译整个项目后,需要手动输入密码,那么密码在哪里输入呢?

按部就班

如下图所示,右击项目,点击属性
在这里插入图片描述
在属性页面点击签名
在这里插入图片描述
点击文件弹出下拉框在这里插入图片描述
点击密钥文件弹出输入密码框,这个密码得问你的同部门同事要
在这里插入图片描述
输入密码,问题解决,以下是chatgpt给出的解决方案,仅供参考

在这里插入图片描述

解决方案

  1. 检查密码保护

    • 如果你的密钥文件受到密码保护,确保在导入时提供了正确的密码。在 Visual Studio 中,当导入 pfx 文件时,通常会提示你输入密码。
    • 如果密码丢失或不确定,你可能需要重新创建或获取没有密码保护的密钥文件。
  2. 重新导入证书

    • 在 Visual Studio 中,打开项目,然后在解决方案资源管理器中找到项目。
    • 右键单击项目,选择“属性”。
    • 转到“签名”选项卡,然后确保正确的密钥文件已选择。
    • 如果密钥文件存在问题,可以尝试重新导入或选择正确的密钥文件。
  3. 手动安装证书

    • 打开证书管理工具。可以按 Win + R 打开运行对话框,输入 certmgr.msc,然后按 Enter。
    • 在证书管理器中,找到你的证书,右键单击并选择“安装证书”。
    • 在安装向导中,选择“当前用户”或“本地计算机”(根据你的需求),然后选择“将所有证书放入以下存储”并浏览到“个人”存储。
    • 完成向导,确保证书已正确安装。
  4. 检查密钥容器名称

    • 在错误信息中提到了密钥容器名称。确保你的密钥文件与正确的密钥容器名称相关联。
    • 如果密钥容器名称不匹配,可以在项目属性中更正它。
  5. 重新生成项目

    • 在完成上述步骤后,尝试重新生成项目,看看是否仍然出现错误。

SQL SERVER

在与SQL SERVER建立连接时出错

在这里插入图片描述

起因

使用SSMS连接服务器报错

溯源

我们在使用SSMS连接数据库的道友一定对下图非常熟悉
在这里插入图片描述
我们无论是连接本地数据库还是远程服务器中的数据库都是通过以下画面点击连接,由于我一直用的是本地的数据库,所以一直没有出过问题,这次问题的出现是因为我要链接远程服务器的数据库,而以UserName/MYSQLSERVER格式的数据库名称,是连不上服务器中的数据库的

解决

一个必知的解决办法就是——IP地址
使用服务器的IP地址,搭配管理员的用户名和密码,目前来看,是一定可以连接到远程服务器的,当然,这个操作成立的前提就是,本机的IP和服务器的IP共用内网,如下图
在这里插入图片描述

知识拓展 — 对话AI

什么是封装?

程序员

在编程领域,如何理解封装这一概念,精简回答

在这里插入图片描述

封装是面向对象编程中的概念,指的是将数据操作封装在一个单一的单元(类)中,同时对外部隐藏实现的细节。这提供了一种保护和隔离代码的方式,使得对象的内部状态和行为对外部是私有的,只有通过对象提供的公共接口才能进行访问和操作。封装有助于提高代码的模块性、可维护性和安全性。

程序员

写一个c#中三层封装的方法

在这里插入图片描述

在C#中,三层封装通常指的是数据访问层(Data Access Layer,DAL)、业务逻辑层(Business Logic Layer,BLL)、和表示层(Presentation Layer,通常是UI层)。以下是一个简单的示例,演示了这三层封装的方法:

  1. 数据访问层(DAL):
// DataAccessLayer.cs

using System;
using System.Data.SqlClient;
using System.Data;

namespace YourNamespace
{
    public class DataAccessLayer
    {
        private string connectionString = "your_database_connection_string";

        public DataTable GetUserData()
        {
            using (SqlConnection connection = new SqlConnection(connectionString))
            {
                connection.Open();
                SqlCommand command = new SqlCommand("SELECT * FROM Users", connection);
                SqlDataAdapter adapter = new SqlDataAdapter(command);
                DataTable dataTable = new DataTable();
                adapter.Fill(dataTable);
                return dataTable;
            }
        }

        // 其他数据库操作方法...
    }
}
  1. 业务逻辑层(BLL):
// BusinessLogicLayer.cs

using System;
using System.Data;

namespace YourNamespace
{
    public class BusinessLogicLayer
    {
        private DataAccessLayer dataAccessLayer = new DataAccessLayer();

        public DataTable GetUserData()
        {
            // 在这里可以添加业务逻辑处理
            return dataAccessLayer.GetUserData();
        }

        // 其他业务逻辑方法...
    }
}
  1. 表示层(Presentation Layer):
// PresentationLayer.cs

using System;
using System.Data;

namespace YourNamespace
{
    class Program
    {
        static void Main(string[] args)
        {
            BusinessLogicLayer businessLogicLayer = new BusinessLogicLayer();
            DataTable userData = businessLogicLayer.GetUserData();

            // 在这里可以处理用户界面显示等操作
            foreach (DataRow row in userData.Rows)
            {
                Console.WriteLine($"User ID: {row["UserId"]}, Username: {row["Username"]}");
            }
        }
    }
}

这只是一个简单的示例,实际项目中可能会更加复杂。在这个示例中,数据访问层负责与数据库交互,业务逻辑层处理业务规则,表示层用于展示数据和与用户交互。这种结构有助于提高代码的可维护性和扩展性。

其实,到这里我才稍稍明白领导口中的业务逻辑的概念

什么是序列化?

程序员

什么是序列化?精简回答

在这里插入图片描述

序列化是将对象转换为可传输或存储的格式的过程,通常是字节流或文本。它便于在网络传输、文件存储或内存中保存对象,并可在需要时还原为原始对象。应用场景包括网络通信、持久化和跨平台数据交换。各编程语言提供内置序列化机制或库。

程序员

举个形象的例子

在这里插入图片描述

想象你有一个玩具,要通过邮寄给朋友。序列化就像把这个玩具放进一个包裹,然后写下它的特征和组成部分的清单。你的朋友在收到包裹后,能够根据清单重新组装出完整的玩具。

程序员

C#中用于序列化的关键字

在这里插入图片描述

在C#中,用于序列化的关键字是 [Serializable]。通过在类前面加上 [Serializable] 特性,表示该类可以被序列化。

程序员

被序列化后的类会怎么样?

在这里插入图片描述

被序列化后的类会被转换为一种格式,通常是二进制、JSON、XML等,以便于存储或传输。这允许将对象的状态保存下来,或在不同系统之间进行数据交换。在反序列化时,可以重新创建原始对象并恢复其状态。

程序员

举个代码实例

在这里插入图片描述

using System;
using System.IO;
using System.Runtime.Serialization;
using System.Runtime.Serialization.Formatters.Binary;

[Serializable]
public class MyClass
{
    public int Id { get; set; }
    public string Name { get; set; }
}

class Program
{
    static void Main()
    {
        // 创建一个对象
        MyClass myObject = new MyClass { Id = 1, Name = "Example" };

        // 序列化对象
        SerializeObject(myObject, "serializedObject.dat");

        // 反序列化对象
        MyClass deserializedObject = DeserializeObject<MyClass>("serializedObject.dat");

        // 输出反序列化后的对象属性
        Console.WriteLine($"Deserialized Object - Id: {deserializedObject.Id}, Name: {deserializedObject.Name}");
    }

    static void SerializeObject<T>(T obj, string fileName)
    {
        // 创建文件流
        using (FileStream fs = new FileStream(fileName, FileMode.Create))
        {
            // 创建二进制格式化程序
            BinaryFormatter formatter = new BinaryFormatter();
            // 序列化对象到文件流
            formatter.Serialize(fs, obj);
        }
    }

    static T DeserializeObject<T>(string fileName)
    {
        // 创建文件流
        using (FileStream fs = new FileStream(fileName, FileMode.Open))
        {
            // 创建二进制格式化程序
            BinaryFormatter formatter = new BinaryFormatter();
            // 反序列化对象
            return (T)formatter.Deserialize(fs);
        }
    }
}

这个例子演示了一个带有 [Serializable] 特性的类 MyClass 的序列化和反序列化过程。

什么是程序集?

程序员

c#中,什么是程序集?

在这里插入图片描述

在C#中,程序集(Assembly)是一个部署单元,它是一个包含可执行代码和相关元数据的文件。程序集可以是可执行文件(如.exe文件)或动态链接库(如.dll文件)。程序集包含了应用程序的代码、类型信息、资源、以及清单(manifest)等。

程序集可以分为两种主要类型:

  • 可执行程序集(Executable Assembly): 包含了应用程序的入口点,通常是.exe文件。可执行程序集可以直接运行。

  • 类库程序集(Library Assembly): 包含了一组相关的类、接口、枚举等类型,通常是.dll文件。类库程序集用于提供可供其他程序集引用和使用的功能。

程序集的元数据包含了有关其中包含的类型的信息,以及对其他程序集的引用等。清单是程序集的一部分,它包含了有关程序集本身的信息,如版本号、文化特定信息、强名称(strong name)等。

程序集的引入使得C#具有了模块化的特性,允许将代码划分为独立的单元,并且可以轻松地在不同的应用程序中重用和共享这些单元。

程序员

除了C#,其他编程语言中有程序集吗?

在这里插入图片描述

术语可能会有所不同,但是在许多编程语言中,类似的概念存在。以下是一些编程语言中与C#中的程序集类似的概念:

  1. Java: 在Java中,类似于C#中的程序集的概念是Java Archive(JAR)文件。JAR文件包含了Java字节码、资源文件和清单,它是一种可移植的打包格式,可以包含多个相关的类。

  2. C++: 在C++中,可执行文件和动态链接库也包含了可执行代码和元数据。对于动态链接库,通常使用.dll(Windows)或.so(Unix/Linux)扩展名。

  3. Python: Python中的概念类似于模块和包。模块是包含Python代码的文件,而包是一个包含多个模块的目录,通常包含一个__init__.py文件。

  4. C: 在C语言中,可执行文件和静态库或动态链接库包含了编译后的机器代码和符号信息。

虽然术语和具体实现可能有所不同,但大多数编程语言都有一种方式来组织和封装可执行代码以及相关的元数据。这些概念都有助于模块化、组织和重用代码。

什么是元数据?

程序员

在C#中,如何理解元数据?

在这里插入图片描述

在C#中,元数据是关于程序集(assembly)模块(module)类型(type)成员(member)等程序结构的信息。这些信息可以在运行时通过反射访问。以下是在C#中理解元数据的一些关键点:

  1. 反射: C#中的反射机制允许在运行时获取和使用程序集、类型和成员的信息。通过反射,你可以动态地探索和操作代码中的元数据。

  2. Assembly(程序集)元数据: 程序集是C#中的基本部署单元,包含了一个或多个模块。程序集的元数据包括程序集的名称、版本信息、清单、模块列表等。

  3. Module(模块)元数据: 模块是程序集的组成部分,它包含一个或多个类型。模块的元数据包括模块的名称、版本信息、类型定义等。

  4. Type和Member(类型和成员)元数据: 元数据描述了类型的结构,包括字段、属性、方法等成员信息。每个成员都有相关的元数据,用于描述其名称、数据类型、访问修饰符等。

  5. Custom Attributes(自定义属性): C#中支持自定义属性,它们允许你向程序结构添加元数据。自定义属性本身也是元数据,并可以在运行时通过反射读取。

  6. Metadata Tokens(元数据标记): 每个程序集、模块、类型和成员都有一个唯一的元数据标记,可以通过反射使用这些标记来快速访问元数据。

理解C#中的元数据对于一些高级应用场景很重要,例如动态代码生成、插件系统的实现以及一些特殊需求的处理。通过反射和元数据,开发人员可以更灵活地操作和扩展代码。

程序员

举一个元数据的动态代码生成的实例

在这里插入图片描述

假设我们想要动态生成一个包含属性的简单类,并在运行时设置和获取属性的值。我们可以使用C#的反射和元数据来实现这个动态代码生成的例子。以下是一个简化的示例:

using System;
using System.Reflection;
using System.Reflection.Emit;

class Program
{
    static void Main()
    {
        // 创建一个动态程序集
        AssemblyName assemblyName = new AssemblyName("DynamicAssembly");
        AssemblyBuilder assemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(assemblyName, AssemblyBuilderAccess.Run);

        // 创建一个动态模块
        ModuleBuilder moduleBuilder = assemblyBuilder.DefineDynamicModule("DynamicModule");

        // 创建一个动态类型
        TypeBuilder typeBuilder = moduleBuilder.DefineType("DynamicClass", TypeAttributes.Public);

        // 添加一个属性
        PropertyBuilder propertyBuilder = typeBuilder.DefineProperty("DynamicProperty", PropertyAttributes.None, typeof(string), null);

        // 添加属性的Get方法
        MethodBuilder getMethodBuilder = typeBuilder.DefineMethod("get_DynamicProperty", MethodAttributes.Public | MethodAttributes.SpecialName | MethodAttributes.HideBySig, typeof(string), Type.EmptyTypes);
        ILGenerator getIlGenerator = getMethodBuilder.GetILGenerator();
        getIlGenerator.Emit(OpCodes.Ldstr, "DynamicPropertyValue");
        getIlGenerator.Emit(OpCodes.Ret);
        propertyBuilder.SetGetMethod(getMethodBuilder);

        // 创建类型
        Type dynamicType = typeBuilder.CreateType();

        // 创建类的实例
        object dynamicObject = Activator.CreateInstance(dynamicType);

        // 使用反射获取和设置属性的值
        PropertyInfo dynamicProperty = dynamicType.GetProperty("DynamicProperty");
        string propertyValue = (string)dynamicProperty.GetValue(dynamicObject);
        Console.WriteLine("Dynamic Property Value: " + propertyValue);

        // 输出结果应为:Dynamic Property Value: DynamicPropertyValue
    }
}

这个例子演示了如何使用反射和元数据在运行时动态生成一个包含属性的类,并在实例中设置和获取属性的值。在实际应用中,动态代码生成常用于创建插件系统、ORM(对象关系映射)框架等场景。

总结

本文介绍了几种常见报,及其可能的原因以及解决办法,往后,本文将不定期更新,大家若有什么报错无法解决,欢迎在本文下留言,或私信博主,共商解决之策,喜欢本文的话,点赞收藏关注三连支持一下博主吧!道友们的支持就是我更新的源动力!
回到顶部

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SG-9101CGA(汽车+125°C可编程晶体振荡器)

SG-9101CGA是用于汽车CMOS输出的可编程晶体振荡器&#xff0c;彩用2.5 x 2.0 (mm)封装&#xff0c;0.67 MHz至170 MHz频率范围、工作温度范围为-40℃~125℃&#xff0c;符合车规级晶振&#xff0c;无铅&#xff0c;绿色环保&#xff0c;满足汽车工业标准&#xff0c;电源电压范…

【音视频原理】图像相关概念 ② ( 帧率 | 常见帧率标准 | 码率 | 码率单位 )

文章目录 一、帧率1、帧率简介2、常见帧率标准3、帧率 刷新率 二、码率1、码率简介2、码率单位 一、帧率 1、帧率简介 帧率 Frame Rate , 帧 指的是 是 画面帧 , 帧率 是 画面帧 的 速率 ; 帧率 的 单位是 FPS , Frames Per Second , 是 每秒钟 的 画面帧 个数 ; 帧率 是 动画…

文件共享服务(一)——DAS、NAS、SAN存储类型

一、存储类型 存储类型主要有三种 1. DAS直连式存储 通常由数据线直连电脑就可以用&#xff0c;比如一块新硬盘&#xff0c;只需要利用磁盘模拟器分区&#xff0c;创建文件系统&#xff0c;挂载就可以使用了。 PC中的硬盘或只有一个外部SCSI接口的JBOD存储设备&#xff08;即…

Intel杀回车载计算领域,极氪首发其第一代AI SoC

作者 |德新 编辑 |王博 Intel低调地重新杀回车载计算领域。 在两个月前&#xff0c;在上海举办的进博会上&#xff0c;Intel对外展示了基于新一代酷睿核心打造的智能座舱平台。 在此之前&#xff0c;这家芯片巨头任命了服役公司20多年的老将Jack Weast作为汽车业务的全球负责…

Redis三种缓存读写策略

1. Cache Aside Pattern 旁路缓存模式 1.1 读 1.2 写 1.3 为什么要先更新db再删除cache? 缓存的写入速度是比数据库的写入速度快很多,因此相比于先删除cache后更新db带来数据不一致性问题的概率更小。 1.4 特点 平时使用比较多的一个缓存读写模式同时维系db 和 cache&#…

C#:接口中如何将某个值类型的字段传null?

在实际对接第三方接口时&#xff0c;偶尔会有一些字段在某些情况下是不需要传值的。那如何处理呢&#xff1f; 有两种方法&#xff1a; 1、将值类型改为可空类型&#xff1b; 2、定义基类&#xff0c;基类包含所有必须要传的字段&#xff0c;子类则加入偶尔需要传的字段。 下…

联合体中嵌套结构体,结构体未命名时,结构体成员变量的引用

参考文章&#xff1a;C语言 结构体 联合体 | 嵌套使用_联合体里面嵌套结构体-CSDN博客 如题&#xff0c;其实直接用 联合体名.结构体成员变量名 即可。 程序&#xff1a; #include <stdio.h>typedef unsigned int uint32_t; typedef unsigned char uint8_t;union b…

Spring-BeanPostProcessor PostConstruct init InitializingBean 执行顺序

执行顺序探究 新建一个对象用于测试 Component public class Student implements InitializingBean {private String name;private int age;public String getName() {return name;}public void setName(String name) {this.name name;}public int getAge() {return age;}pu…

小程序进阶学习(视频完结)(核心,重点)

首先上面是一个视频播放器 把视频的宽度设置为100%即可铺满全屏 然后视频的标题和作者 最后就是一个视频播放列表 &#xff0c;设置一个固定位置开始滚动即可 还有一个问题没有解决&#xff0c;大家出出主意。 在播放页面在点击一个新的视频去播放&#xff0c;点进去的新视频获…

基于yolov2深度学习网络的车辆检测算法matlab仿真,包括白天场景和夜晚场景

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 YOLOv2算法原理 4.2 车辆检测原理 4.3 白天场景和夜晚场景的车辆检测 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022a 3.部分核心程序 load yolov2.mat%…

前端发展趋势:WebAssembly、PWA 和响应式设计

目录 前言 WebAssembly&#xff1a;超越JavaScript的性能 渐进式Web应用&#xff08;PWA&#xff09;&#xff1a;离线可用和更好的用户体验 响应式设计&#xff1a;适应多种设备 总结 作者简介&#xff1a; 懒大王敲代码&#xff0c;计算机专业应届生 今天给大家聊聊前端…

Android现代开发推荐 | Android Showcase 2.0

Android现代开发推荐 | Android Showcase 2.0 Android Showcase是一个完整的Android应用程序示例&#xff0c;它使用了现代的Android应用程序开发方法&#xff0c;集成了流行的开发工具、库和代码检查工具&#xff0c;以及强大的测试框架和持续集成&#xff08;CI&#xff09;…

python数字图像处理基础(八)——harris角点检测、图像尺度空间、SIFT算法

目录 harris角点检测原理函数 图像尺度空间概念局部不变性局部不变特征SIFT算法 harris角点检测 原理 Harris 角点检测是一种用于在图像中检测角点的算法。角点是图像中局部区域的交叉点或者突出的特征点。Harris 角点检测算法旨在寻找图像中对于平移、旋转和尺度变化具有不变…

数据结构:链式栈

stack.h /* * 文件名称&#xff1a;stack.h * 创 建 者&#xff1a;cxy * 创建日期&#xff1a;2024年01月18日 * 描 述&#xff1a; */ #ifndef _STACK_H #define _STACK_H#include <stdio.h> #include <stdlib.h>typedef struct stack{int data…

FPGA物理引脚,原理(Pacakge and pinout)-认知3

画FPGA芯片引脚封装图&#xff08;原理&#xff09;&#xff0c;第一是参考开发板(根据一下描述了解总览&#xff09;&#xff0c;第二是研究Datasheet. ASCII Pinout File Zynq-7000 All Programmable SoC Packaging and Pinout(UG585) 1. Pacakge overview 1.1&#xff0…

爬虫案例—根据四大名著书名抓取并存储为文本文件

爬虫案例—根据四大名著书名抓取并存储为文本文件 诗词名句网&#xff1a;https://www.shicimingju.com 目标&#xff1a;输入四大名著的书名&#xff0c;抓取名著的全部内容&#xff0c;包括书名&#xff0c;作者&#xff0c;年代及各章节内容 诗词名句网主页如下图&#x…

ChatGPT Plus续费充值,到账延迟,如何申诉?

ChatGPT Plus充值总是到账延迟比较严重&#xff0c;一般多是通过充值链接代充值遇到&#xff0c;如果是账号登陆充值&#xff0c;是即时到账。但是有的客户不愿意提供账号密码&#xff0c;遇到延迟到账的情况如何解决呢&#xff1f;客户可按下面操作申诉&#xff0c;可快速到账…

Linux编译器--gcc和g++使用

gcc和g使用 一、gcc/g的作用1.1 预处理1.2 编译1.3 汇编1.4 链接 二、静态库和动态库三、make/Makefile3.1 make/Makefile3.2 依赖关系和依赖方法3.3 多文件编译3.4 make原理3.5 项目清理 四、linux下的第一个小程序-进度条4.1 行缓冲区的概念4.2 \r和\n4.3 进度条代码 一、gcc…

细讲Labview条件结构用法及易错点

本文讲解Labview条件结构的常用情景及易错点注意事项。帮助大家深刻理解并使用该结构&#xff0c;欢迎点赞关注加评论&#xff0c;有问题可以私聊或在下方评论区留言。 本文程序均附在文章结尾&#xff0c;可自行下载学习。 博主之前讲过Labview事件结构、For循环等的基础知识介…

SpringBoot连接远程服务器redis

SpringBoot连接远程服务器redis 1、指定redis配置启动 进入redis安装地址&#xff0c;我这里安装的是 /usr/local/src/redis-6.2.6 先copy一份配置文件 cp redis.conf redis.conf.bck然后修改配置文件信息 vim redis.conf bind 0.0.0.0 # 守护进程&#xff0c;修改为yes后即可…