Winform 1.在 toolstripmenu 上添加date控件方法: 1.直接拖动到某一位置上。2.通过 ToolStripControlHost,可以在工具栏或菜单中集成 Windows/自定义 的控件。 若使用第一种方式,会因为 Windows 窗体应用程序的 UI 在不同屏幕上的 DPI(每英寸像素数)不同导致显示的位置不同。 private DateTimePicker dtOrder; public xx() { this.dtOrder = new DateTimePic…
Winform 1.在 toolstripmenu 上添加date控件方法: 1.直接拖动到某一位置上。2.通过 ToolStripControlHost,可以在工具栏或菜单中集成 Windows/自定义 的控件。 若使用第一种方式,会因为 Windows 窗体应用程序的 UI 在不同屏幕上的 DPI(每英寸像素数)不同导致显示的位置不同。 private DateTimePicker dtOrder; public xx() { this.dtOrder = new DateTimePic…
触发器(Triggers)和存储过程(Stored Procedures)是 SQL Server 中的两个不同的数据库对象,它们具有不同的用途和特性。 触发器(Triggers): 触发时机: 触发器是在表上执行特定操作时自动触发的。可以在插入、更新或删除数据时触发。触发器分为 AFTER 和 INSTEAD OF 两种类型,分别表示在触发动作之后执行和代替触发动作执行。 事件关联性: 触发器与特定表的特定事件关联,当事件发生时,触发器会自动执行。 用途: 触发器通常用于实施数据完整性、强制业务规则和自动记录更改…
.gitignore文件 .gitignore文件用于添加忽略文件的规则,默认情况下此规则只对当前目录有效。若想使所有匹配的子目录生效需使用**通配符。其他常见的通配符模式包括: *:匹配零个或多个字符,但不包括目录分隔符。例如,*.txt 匹配所有以 .txt 结尾的文件。 ?:匹配单个字符,但不包括目录分隔符。例如,file?.txt 匹配 file1.txt 和 fileA.txt。 []:匹配方括号内的任何一个字符。例如,[123]file.txt 匹配 1file.txt、2file.txt 和 3fil…
内存对齐 内存对齐的3大规则: 对于结构体的各个成员,第一个成员的偏移量是0,排列在后面的成员其当前偏移量必须是当前成员类型的整数倍 结构体内所有数据成员各自内存对齐后,结构体本身还要进行一次内存对齐,保证整个结构体占用内存大小是结构体内最大数据成员的最小整数倍 如程序中有#pragma pack(n)预编译指令,则所有成员对齐以n字节为准(即偏移量是n的整数倍),不再考虑当前类型以及最大结构体内类型 rust会进行地址重排,故不会产生此问题,但在c++中可以会出现此问题: #include <iostrea…
静态库在编译时将库的代码静态链接到可执行文件中。动态库在运行时将库的代码加载到内存中,并在需要时链接到可执行文件。动态库的代码存储在单独的文件中。相关代码:dynamic-link-static-link c++相关 使用静态库与动态库时系统位数需一致。x86系统的库,x64下无法使用: c++中,shared为动态库 dll,static为静态库 lib。 windows clion 下,调用静态库需配置cmake: 效果图: C++动态库:在Windows平台上,当你编译动态链接库(DLL)时,需要使用 __d…
构建一个单线程Web服务器 Web服务器涉及的两个主要协议是超文本传输协议(HTTP)和传输控制协议(TCP)。 监听TCP连接 use std::net::TcpListener; fn main() { let listener = TcpListener::bind("127.0.0.1:7878").unwrap(); for stream in listener.incoming() { let stream = stream.unwrap(); println…
rust高级特征 Unsafe Rust Unsafe Rust(Unsafe Rust)是Rust编程语言中的一种特性,它允许程序员绕过Rust的内存安全性,执行一些可能不安全的操作,它的存在主要有以下两个重要意义: 灵活性和控制力:Rust的设计目标之一是提供内存安全性和线程安全性,以避免常见的程序错误,如空指针引用和数据竞争。然而,有些情况下,程序员需要执行一些底层、不安全的操作,例如直接操作内存、调用未经验证的外部函数或与底层硬件进行交互。不安全Rust允许程序员在这些情况下绕过编译器的检查,以完成特定任务…
模式是一种特殊的语法,用于匹配不同类型的结构,可以是简单的也可以是复杂的。通过将模式与匹配表达式等结构相结合,可以更好地控制程序的控制流。模式可以由以下部分组成: 字面量:匹配特定的常量值。 解构的数组、枚举、结构或元组:从中提取值以进行匹配。 变量:将匹配的部分绑定到变量,以便在代码中使用。 通配符:用于匹配任意值,不关心具体内容。 占位符:类似于通配符,但可以将匹配的部分绑定到特定变量。 所有可能会用到模式的位置 match分支 在形式上 match 表达式由 match 关键字、用于匹配的值和一个或多个分支构…
Rust 的面向对象编程特性 面向对象编程(Object-Oriented Programming,OOP)是一种模式化编程方式。 面向对象语言的特点 Rust 受到许多编程范式的影响,例如:函数式编程的特性,面向对象编程(OOP)。面向对象编程语言共享某些共同特性,即对象、封装和继承。 对象:数据和行为的集合体 《设计模式:可复用面向对象软件的基础》中面向对象编程的定义:Object-oriented programs are made up of objects. An object packages both…
Rust 的主要目标之一是处理并发编程,保证程序的内存安全和高效运行。通过利用 Rust 的所有权和类型检查系统,使许多并发错误可以在编译时检测到,从而避免了运行时错误。Rust 的 无畏并发(fearless concurrency) 使得编写代码变得更加容易,而且易于重构,不会引入新的错误。 使用线程同时运行代码 Rust 中的线程(threads)是用于同时运行程序中独立部分的功能。在多线程上下文中编程需要仔细思考,因为线程可以同时运行,所以不同线程上代码的运行顺序无法预知,可能会导致问题,例如竞争状态(线程…