自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

这是一个c++热爱者的博客哟

这是一个c++热爱者的博客哟

  • 博客(376)
  • 资源 (10)
  • 问答 (1)
  • 收藏
  • 关注

原创 C++11 并发指南九(综合运用 C++11 多线程下生产者消费者模型详解)

前面八章介绍了 C++11 并发编程的基础(抱歉哈,第五章-第八章还在草稿中),本文将综合运用 C++11中的新的基础设施(主要是多线程、锁、条件变量)来阐述一个经典问题——,并给出完整的解决方案。

2023-01-29 13:07:15 4229

原创 C++11 并发指南六(atomic 类型详解四 C 风格原子操作介绍)

前面三篇文章《C++11 并发指南六(atomic 类型详解一 atomic_flag 介绍)》、《C++11 并发指南六( 类型详解二 std::atomic )》、《C++11 并发指南六(atomic 类型详解三 std::atomic (续))》都是采用 C++ 的方式介绍原子对象,本节我会给大家介绍 C++11 原子操作中 C 风格的 API。

2023-01-29 13:04:50 4525 1

原创 C++多线程07:thread_local

thread-local storage 和static(或者说global) 存储很类似,每一个线程都将拥有一份这个数据的拷贝,对象的生命周期从线程开始时开始(对于全局变量),或者首先分配空间。当线程退出的时候对象析构;一般在声明时赋值,在本thread中只执行一次。当用于类成员变量时,必须是static的。C++11 thread_local用法 - 知乎 (zhihu.com)存储类说明符 - cppreference.com。

2023-01-20 15:47:40 3122

原创 mupdf简化参数

【代码】mupdf简化参数。

2025-04-05 00:40:30 15

原创 Slidev使用(一)安装

全局安装 Slidev 的主要优点是方便快捷,可以直接通过slidev命令运行,而无需额外配置。确保 Node.js 和 npm 已安装。使用全局安装 Slidev。。创建 Markdown 文件(如slides.md。(可选)构建或导出幻灯片。(可选)安装主题或插件。通过以上步骤,你可以将 Slidev 安装在项目文件夹下,并以本地方式管理依赖项。确保团队成员使用的 Slidev 版本一致。避免全局安装可能带来的冲突。更容易与其他开发者共享项目。

2025-03-26 22:31:36 1070

原创 紧凑交叉引用表

紧凑型交叉引用表(XRef Stream)通过二进制和压缩技术优化了传统文本XRef表的效率与体积,是现代PDF文件的标准实践。若需进一步了解具体实现细节,可参考PDF 1.5+规范或相关库(如pdfium)的文档。

2025-03-24 23:42:38 720

原创 harfbuzz 简单封装

以 ETen-B5-V_0 为例子您提供的 表是一个典型的 字符映射表(cmaps 表),用于将字符码()映射到 Unicode 值。表中每组包含 3 个 值,分别表示 起始字符码、结束字符码 和 目标 Unicode 值。以下是 表的详细映射关系:• 每组包含 3 个 值:1. 起始字符码:字符码的起始值。2. 结束字符码:字符码的结束值。3. 目标 Unicode 值:字符码对应的 Unicode 值。• 如果起始字符码和结束字符码相同,表示单个字符码的映射。• 如果起始字符码和结

2025-03-23 11:29:08 189

原创 CJK 字体的特别支持

以 ETen-B5-V_0 为例子您提供的 表是一个典型的 字符映射表(cmaps 表),用于将字符码()映射到 Unicode 值。表中每组包含 3 个 值,分别表示 起始字符码、结束字符码 和 目标 Unicode 值。以下是 表的详细映射关系:• 每组包含 3 个 值:1. 起始字符码:字符码的起始值。2. 结束字符码:字符码的结束值。3. 目标 Unicode 值:字符码对应的 Unicode 值。• 如果起始字符码和结束字符码相同,表示单个字符码的映射。• 如果起始字符码和结

2025-03-13 01:46:22 818

原创 标准字体介绍

函数的主要功能是在无法加载指定字体时,根据字体属性选择一个替代字体。检查字符宽度是否一致,标记固定间距字体。获取并验证字体权重。加载替代字体,确保文本能够正确渲染。这个函数是 PDF 字体处理中的重要环节,确保了文档的兼容性和可读性。该流程图详细描述了函数的执行逻辑,涵盖了所有关键分支和操作。通过该函数,系统能够根据字体字典中的编码信息设置字体的编码属性,确保文本能够正确渲染。函数的主要目的是加载并设置字体的编码信息,以确保 PDF 文档中的文本能够正确解码和渲染。

2025-03-13 01:34:46 948

原创 FreeType 新封装

FreeType 新封装。

2025-03-08 05:43:35 276

原创 pdfium 文本

【代码】pdfium 文本。

2025-03-03 23:13:46 85

原创 实现遍历Windows所有字体的基本属性

【代码】实现遍历Windows所有字体的基本属性。

2025-02-28 21:39:33 355

原创 freetype封装

参考podofo。

2025-02-25 23:06:52 339

原创 我的创作纪念日

但正是这一份小小的初心,让我踏上了创作的旅程。从那一刻起,我赋予了平凡的日子以不平凡的意义,开启了属于我的创作者之旅。今天,我收到了专属的「纪念勋章」,这份荣誉将永远激励着我继续前行。回首过去的三年,我写过的代码和文章数不胜数,但如果要选出一段最具代表性的代码,那一定是以下这段用于自动化部署的脚本。它不仅提升了工作效率,还成为了团队内部的标准工具。作为一名技术工作者,我的日常充满了忙碌与挑战。

2025-02-23 21:43:56 441

原创 Windows获取字体文件

【代码】Windows获取字体文件。

2025-02-23 21:41:09 583

原创 FontConfig封装分享

【代码】FontConfig封装分享。

2025-02-19 23:25:14 255

原创 C++并发编程指南10 (同步操作)

在夜间运行的火车上,如何确保在正确的站点下车是一个有趣的问题。我们可以通过几种不同的方法来解决这个问题,这些方法与多线程编程中的等待机制有着惊人的相似之处。以下是对这些方法的详细解释和类比:方法描述:整晚保持清醒,每到一个站点都检查是否到达目的地。这样虽然不会错过站点,但会导致极度疲倦。线程类比:在多线程编程中,这种方式类似于忙等待(busy-waiting)。线程会持续检查某个共享标志(通常是一个互斥量保护的变量),直到另一个线程完成任务并重置该标志。这种方式会消耗大量的CPU资源,因为线程在等待期间一直

2025-02-11 00:28:40 910

原创 C++并发编程指南 09(共享数据)

共享数据的修改是多线程编程中的一个核心挑战。为了确保程序的正确性,我们必须理解不变量在数据结构中的作用,并采取措施避免条件竞争的发生。在接下来的章节中,我们将探讨如何使用互斥锁、原子操作等技术来保护共享数据,确保多线程程序的稳定性和可靠性。通过以上分析,我们希望你能更清晰地认识到共享数据问题的本质,并为解决这些问题打下坚实的基础。这段代码通过创建多个线程并使用不同的方法访问共享数据,展示了多线程编程中的同步问题。具体来说,它演示了如何使用互斥量保护共享资源,以及不使用互斥量可能导致的数据竞争问题。

2025-02-10 22:42:29 753

原创 多线程补充

的括号中的内容确实相当于构造函数的参数。它会将这些参数转发给目标对象的构造函数,并将新创建的对象的地址传递给一个,从而安全地管理对象的生命周期。推荐在需要动态分配对象时使用,以提高代码的安全性和可读性。std::async你提到的问题是多线程编程中常见的一个陷阱,特别是在使用局部变量时。当主线程结束并销毁其局部变量时,如果其他线程仍在访问这些局部变量的引用或指针,就会导致未定义行为。让我们详细解释这个问题,并提供一些解决方案。引用计数通过引用计数机制确保只要还有一个shared_ptr。

2025-02-09 01:13:08 935

原创 “现代C++ RAII库:设计、优化及实战应用“

make_raii: 简化了raii对象的创建,适用于需要通过类成员函数管理资源的情况。: 简化了raii_var对象的创建,适用于需要通过普通函数或可调用对象管理资源的情况。这两个辅助函数的主要目的是减少样板代码,使资源管理更加简洁和安全。通过它们,你可以更方便地利用 RAII 模式来确保资源的正确获取和释放,无论是在单线程还是多线程环境中。

2025-02-08 23:40:48 1520

原创 std::function 在 C++ 中的使用总结

是 C++ 标准库中的一个模板类,用于包装任何可调用对象(如普通函数、lambda 表达式、成员函数或仿函数)。它主要用于编写通用代码,允许将函数作为参数传递给其他函数(回调机制),从而避免为相似的回调函数创建额外的重载版本。 定义在 头文件中。要创建一个包装器对象,首先需要声明它:: 包装器的名字。: 函数接受的参数类型列表。: 函数的返回类型。初始化上述语法仅创建了一个空的 实例。为了包装一个具体的函数到这个包装器对象中,可以使用赋值操作符:其中 是要被包装的函数。也可以在声明时初

2025-02-08 22:42:51 712

原创 podofo字体继承关系

默认情况下,通过PdfFont及其大部分派生类(如)都不支持子集化。PdfFontCID类本身支持子集化,意味着它的直接或间接派生类理论上应该支持子集化,除非特别指出不支持。虽然从支持子集化的PdfFontCID派生,但由于特定限制(“尚未支持”),它目前不支持子集化。这种结构允许开发者基于具体的字体类型来确定是否可以应用子集化技术,以优化PDF文档的大小和性能。然而,需要注意的是,对于某些字体类型(例如Type 1和CID CFF),子集化的支持还在开发或修复过程中。

2025-02-05 14:43:52 291

原创 C++泛型编程指南09 类模板实现和使用友元

在C++17之前,使用类模板时需要显式指定模板实参。以下是使用Stack<>// 创建 int 类型的栈// 创建 std::string 类型的栈// 操作 int 类型的栈// 输出: 7// 操作 std::string 类型的栈// 输出: hello通过声明Stack<int>和,我们分别创建了存储int和类型元素的栈。只有在调用成员函数时,这些函数才会根据具体类型进行实例化。实例化后的类模板类型可以像其他类型一样使用,可以通过const或volatile。

2025-02-03 22:32:15 670

原创 C++泛型编程指南08 auto decltype

虽然auto关键字自C++98标准以来就已经存在,用于声明自动变量,但C++11为其赋予了新的意义:根据初始化表达式自动推断变量类型,或作为函数返回值类型的占位符。auto i = 5;// 推断为int// 推断为const char*} // 返回类型后置,使用auto作为占位符重要的是,当编译器无法推导出类型时,使用auto会导致编译失败。多变量声明:使用单个auto关键字声明多个变量时,编译器会依据最左边的初始化表达式来推导autoint n = 5;如果尝试将不同类型的值赋给同一。

2025-02-03 21:58:11 1067

原创 C++泛型编程指南07 函数重载

当调用一个函数时,编译器需要根据传递的参数类型和其他因素从多个候选者中选择最合适的版本。通过理解这些原则和示例,您可以更好地掌握如何有效地重载函数模板,并避免常见的陷阱。该示例展示了非模板函数可以与同名的函数模板共存,并且可以用相同的类型进行实例化。:如果模板函数以引用方式传递参数,并且存在以值传递的重载版本,则可能导致悬空引用问题。:如果没有精确匹配的非模板函数,编译器会尝试通过模板推导来找到最适合的模板函数。:如果存在一个非模板函数能够精确匹配传入的参数类型,则优先选择该函数。

2025-02-03 15:39:38 1186

原创 C++泛型编程06(默认模板实参)

考虑一个场景,需要根据不同的输入参数类型动态确定函数的返回类型。通过使用模板默认参数,我们可以简化这个过程,并提供一种自然的方式来处理不同类型间的转换。方法一:使用条件运算符a : b;这段代码利用了条件运算符来推断两个参数类型的共同类型,并且通过确保返回类型不是引用类型。然而,这种方法要求T1和T2必须具有无参数构造函数,这在实际应用中可能并不总是可行的。方法二:利用另一种更通用的方法是直接使用a : b;

2025-02-03 15:33:10 277

原创 C++泛型编程05 多模板参数

作为返回类型并且不使用尾置返回类型(trailing return type)意味着真实返回类型必须从函数体中的返回语句中推断。之前的讨论已经提到:模板实参推断(template argument deduction)使得调用函数模板和普通函数可以具有一样的语法形式,不需要显式指定模板参数的类型。如果将一个参数类型作为返回类型,另一个调用参数可能会转化为返回值类型,不管调用者是否有该意图。此处,使用了类型特性(type traits)并返回其成员类型(member type),它定义在标准库中的。

2025-02-03 15:23:39 889

原创 C++泛型编程指南04-(对默认调用参数的类型推断)

你提到的情况确实是一个常见的问题:在C++中,类型推断不适用于默认调用参数。这意味着如果你希望函数模板能够通过默认参数来实例化,你需要为模板参数提供一个默认类型。为了使函数模板能够在没有显式参数的情况下被调用,你可以为模板参数提供一个默认类型。这样,当没有提供实际参数时,编译器可以使用默认类型进行实例化。这个默认值与默认模板参数一起工作,确保在没有任何参数传递给函数时,函数仍然可以正确地实例化和调用。当你定义一个带有默认调用参数的函数模板时,如果仅使用默认参数进行调用,则编译器无法推断出模板参数的类型。

2025-02-02 22:42:27 436

原创 C++泛型编程指南03-CTAD

CTAD(Class Template Argument Deduction,类模板参数推导)是 C++17 引入的重要特性,允许编译器根据构造函数参数自动推导类模板参数类型。该特性通过用户自定义推导指引(User-defined Deduction Guides)实现模板参数类型的智能推导。template<模板参数列表>ClassName(构造函数参数类型列表) -> 目标模板实例化类型;// 用户自定义推导指引。

2025-02-02 22:26:37 930

原创 C++ 泛型编程指南02 (模板参数的类型推导)

类型推断指的是编译器根据函数调用时提供的参数自动确定模板参数的类型。这种机制允许我们编写更简洁和通用的代码,而无需显式地指定所有类型。然而,有时理解编译器是如何进行类型推断的可能并不直观,尤其是在处理引用、指针和常量等复杂情况时。你可以定义一个模板函数,该函数接受一个类型为的参数。这允许你传递一个由花括号{}// 打印类型信息。

2025-02-02 21:56:37 1023

原创 C++并发编程指南08

通过理解和应用“同步发生”和“先行发生”关系,我们可以确保多线程程序中的数据一致性和正确性。合理选择内存顺序也是至关重要的,它可以帮助我们控制操作的顺序并避免潜在的竞争条件。这些规则是编写高效、安全的多线程程序的基础,能够帮助我们在复杂的并发环境中管理数据共享和同步。希望这些解释和示例能帮助你更好地理解和应用这些概念。以下是经过优化排版后的5.3.3节内容,详细解释了C++中的原子操作内存序。每个部分都有详细的注释和结构化展示。通过理解和应用不同的内存序选项,可以在多线程编程中实现高效的同步和强制排序。

2025-01-30 16:57:23 1235

原创 C++并发编程指南07

是C++中的黑洞。一旦应用中有任何未定义的行为,就很难预料会发生什么事情。数据竞争绝对是一个严重的错误,要不惜一切代价避免它。另一个重点是:当程序对同一内存地址中的数据访问存在竞争时,可以使用原子操作来避免未定义行为。当然,这不会影响竞争的产生——原子操作并没有指定访问顺序——而原子操作会把程序拉回到定义行为的区域内。

2025-01-30 16:36:23 778

原创 C++并发编程指南06

函数化编程(Functional Programming, FP)是一种编程范式,其中函数的结果仅依赖于传入的参数,无副作用。C++标准库中的数学相关函数如sincos, 和sqrt都具有这种特性。纯粹的函数不会改变任何外部状态,限制了函数的返回值。虽然spawn_task函数没有直接出现在原始的快速排序示例中,但它提供了一种替代std::async的方法来实现异步任务。通过这种方式,你可以更灵活地控制线程的创建和管理,尤其是在需要自定义线程池或更复杂的任务调度机制时。希望这能帮助你更好地理解如何使用。

2025-01-30 16:26:12 709

原创 C++并发编程指南05

当然可以!条件变量()是C++标准库中用于线程间同步的重要工具。它允许一个或多个线程等待某个条件变为真,然后被其他线程通知继续执行。wait(): 阻塞线程,直到条件为真。wait_for(): 在一定时间内阻塞线程,直到条件为真或超时。: 在特定时间点前阻塞线程,直到条件为真或超时。: 唤醒一个等待的线程。: 唤醒所有等待的线程。这些函数共同构成了条件变量的核心功能,使得多线程编程中的同步变得更加高效和可靠。希望这些解释能帮助你更好地理解和使用条件变量!

2025-01-29 20:08:43 1152

原创 C++并发编程指南04

共享数据问题:当多个线程共享数据时,特别是当数据需要被修改时,会出现条件竞争问题。不变量:描述数据结构的某些属性,在修改过程中可能会被破坏。条件竞争:多个线程争夺对共享资源的访问权,可能导致程序错误或崩溃。避免恶性条件竞争的方法互斥量:使用互斥量保护共享数据结构,确保只有一个线程能进行修改。无锁编程:设计数据结构使其能完成一系列不可分割的变化。软件事务内存(STM):使用事务的方式处理数据结构的更新,确保一致性。

2025-01-29 18:50:28 1660 1

原创 C++并发编程指南03

基本参数传递:直接将参数作为构造函数的附加参数传递。动态变量指针传递:注意避免悬空指针问题,必要时先将数据转换为合适类型(如引用参数传递:使用std::ref将参数转换为引用形式。成员函数和对象指针传递:传递成员函数指针及对象指针作为第一个参数。支持移动语义的对象传递:使用std::move显式移动对象所有权。的特性:不可复制但可移动,允许灵活管理线程所有权。通过掌握这些参数传递技巧,可以更有效地利用C++标准库中的多线程功能。移动操作对象是可移动但不可复制的,允许在线程实例之间转移所有权。

2025-01-29 18:38:12 985

原创 C++并发编程指南02

通过掌握对象的创建、启动、等待和分离等基本操作,可以有效地管理并发任务。使用RAII模式可以确保即使在异常情况下也能正确释放线程资源。对于长时间运行的任务,分离线程提供了一种简便的方式来管理后台任务。

2025-01-29 18:28:50 398

原创 C++并发编程指南01

计算机的并发指在单个系统中同时执行多个独立任务。

2025-01-29 18:17:22 732

原创 FontConfig 关于字体属性

【代码】FontConfig关于字体属性。

2025-01-17 20:38:24 217

原创 16.扩展属性

扩展属性(EA)可以用于实现访问控制列表(ACLs)、文件能力等功能。此外,它们还可以记录文件的版本号、MIME类型、字符集信息或指向图标资源的指针等。命名空间:EA被划分为不同的命名空间,包括usertrustedsystem和security。每个命名空间有不同的用途和权限要求。user:非特权用户可以在权限允许的情况下读取和修改这些属性。trusted:需要特权进程才能修改。system:主要用于内核级别的操作,例如ACLs。security。

2025-01-13 01:35:17 320

vcpkg 文档 vcpkg是一款免费的C/C++包管理器,用于获取和管理库 从1500多个开源库中进行选择,只需一步即可下载和

vcpkg是一款免费的C/C++包管理器,用于获取和管理库。从1500多个开源库中进行选择,只需一步即可下载和构建,或者添加您自己的私有库以简化构建过程。 由Microsoft C+团队和开源贡献者维护。 为什么选择vcpkg? ·有超过2200个开 便于使用普遍的只需一步即可下载并构建常用库。无需担心上游依赖项或版本冲突。使用vcpkg可与您首选的操作系统、构建系统、目标架构、IDE、编辑器和特命令行操作或在可与您的存储库共存的清单中声明依赖项。获得开发团续集成流程配合使用。库是从源代码构建的,并且可以进行配置。 队、文档和活跃社区的支持。可靠的为了所有人保持本地开发人员和C工/CD工作流程之间的一致性。保留您首选的库版无论您是小型开源项目的单人团队,还是具有复杂构建和安全需求的大型本。将您的依赖生态系统与团队的其他成员同步。 企业,都可以利用最新的vcpkg功能来满足您的工作流程。缓存二进制文件以加快使用速度,避免钻石依赖解析问题,为所有开发人员、C工机器和容器重现相同的构建。自带库或使用流行的公共库。利用现有的Visual Studio和Visual Studio Code集成。

2024-07-20

SELinux:为任何Linux环境带来世界级的安全性! SELinux为Linux/UNIX集成商、管理员和开发人员提供了最

SELinux:为任何Linux环境带来世界级的安全性! SELinux为Linux/UNIX集成商、管理员和开发人员提供了最先进的平台,用于构建和维护高度安全的解决方案。既然SELinux已经包含在Linux 2.6内核中,并且默认情况下在Fedora Core、Red Hat Enterprise Linux和其他主要发行版中提供,那么利用它的好处比以往任何时候都要容易。 SELinux by Example是在生产环境中使用SELinux的第一个完整的实践指南。由三位领先的SELinux研究人员和开发人员撰写,它阐明了使用SELinux的各个方面,从其架构和安全对象模型到其策略语言。这本书彻底解释了SELinux示例策略-包括强大的新参考策略-展示了如何快速地使它们适应您独特的环境。它还包含一个全面的SELinux策略语言参考,并涵盖了Fedora Core 5和即将推出的Red Hat Enterprise Linux版本5中令人兴奋的新功能。 ·彻底理解SELinux的访问控制和安全机制·使用SELinux从头开始构建安全系统·获得对内核资源的细粒度控制·为类型强制、角

2024-01-16

SELinux by Example

1.内核策略语言部分旨在作为内核策略语言语句和规则的参考,并附有来自参考策略源的支持示例。此外,政策 DB 第 32 版的所有语言更新都应包含在内。如需更详细的策略语言解释,推荐阅读《SELinux by Example》一书。 《SELinux by Example》是一本专为理解和实践Security-Enhanced Linux(SELinux)安全模型而编写的指南性书籍。SELinux是Linux内核中的一个强制访问控制(MAC)系统,用于增强操作系统的安全性。 这本书通常会深入浅出地介绍SELinux的基本概念、架构以及如何配置和管理SELinux策略。书中通过实例和实际应用场景来帮助读者掌握SELinux的工作原理,内容可能包括: 1. **SELinux基础知识**:介绍SELinux的历史背景、目标、基本术语及工作模式(如`enforcing`、`permissive`和`disabled`)。 2. **策略构建与管理**:详细阐述如何创建、安装、更新和调试SELinux策略模块,使用工具如`semodule`、`checkpolicy`、`audit2all

2024-01-16

SELinux Notebook 是一本关于 SELinux 的开源书籍,最初由 Richard Haines创建并捐赠给 SE

SELinux Notebook 是一本关于 SELinux 的开源书籍,最初由 Richard Haines创建并捐赠给 SELinux 社区。该笔记本的目标是成为有关 SELinux 的最新、最全面的书籍,涵盖 Linux 内核组件、用户空间库和工具、策略工具链以及策略本身。 SELinux Notebook 是免费提供的,欢迎并鼓励社区做出贡献! 为 SELinux Notebook 做出贡献 直接在 GitHub 上查看笔记本 SELinux Notebook 有多种不同的格式,包括可以直接在 GitHub 上查看的在线格式,一次查看一个部分,从以下链接开始: SELinux 笔记本 离线查看笔记本 虽然 SELinux Notebook 是一本不断更新的活书,但我们偶尔也会发布具有各种格式的预构建版本的新版本,这些版本可以下载和离线阅读。我们的发布页面包含有关每个版本以及预构建笔记本的更多信息: https://github.com/SELinuxProject/selinux-notebook/releases 构建您自己的 SELinux 笔记本 BUILD.md

2024-01-15

第四章套接字通信博客的有图案的版本

博客上传本地图片太麻烦了,直接整了个pdf,大家结合博客一起看吧

2023-11-01

python Django web 联通用户管理系统实训代码

类似于客户管理系统,实现对管理员账户 部门账户 用户账户 靓号账户 任务发布 的增删查改,实现导入导出excel数据,生成pdf, 上传图片媒体资源。用户登录期间,随机图片验证码验证,登录账号的Cookie,Session保存。在增删删改期间,实现了 Ajax 页面无刷新上传数据。 在浏览数据信息方面,实现了模块级别的分页查询,实现了 e-chart 的数据可视化。在存储数据方面实现了md5 加密存储数据。Django 优点 1. 高度集成化:Django包含了很多常用功能,如自动化ORM系统、Form系统、Cache系统、Routing、Middleware、Template系统等,这样就能够很方便的使用这些功能,不需要自己来实现这些底层的功能。 2. 自动化Admin管理站点:Django自带一个基于Web的Admin管理站点,无需自行开发,可快速完成对模型的管理。 3. 强调面向对象编程思想:Django强调对模型、视图、控制器的封装,让开发人员更关注业务开发本身而不是技术层面,使代码结构更清晰。 4. 安全性较高:Django带有一些内置安全性功能,如防止跨站脚本攻击、C

2023-06-16

python Django web 实训项目的实验报告

python Django web 实训项目的实验报告 类似于客户管理系统,实现对管理员账户 部门账户 用户账户 靓号账户 任务发布 的增删查改,实现导入导出excel数据,生成pdf, 上传图片媒体资源。用户登录期间,随机图片验证码验证,登录账号的Cookie,Session保存。在增删删改期间,实现了 Ajax 页面无刷新上传数据。 在浏览数据信息方面,实现了模块级别的分页查询,实现了 e-chart 的数据可视化。在存储数据方面实现了md5 加密存储数据。 静态文件存放在 pms/app1/static Html文件存放在 pms/app1/template 验证码模块 md5加密模块 分页模块 bootstrap模块 form 模块在 pms/app1/utils Models 文件存放在 pms/app1/ Form上传的图片文件 存放在 pms/app1/city ModelForm 上传的图片 存放在 pms/app1/media Xxx.py 文件存放在 pms/app1/views Django 优点 1. 高度集成化:Django包含了很多常用功能,如自动化OR

2023-06-16

《C++17 完全指南》

本书为《C++17 the complete guide》(第一版) by Nicolai M. Josuttis的个人中文翻译版, 仅供学习和交流使用 C++17是现代 C++编程中的下一个版本,最新版本的gcc、clang和 Visual C++ 都至少已经部分支持它。尽管 迁移到 C++17 并不像迁移到 C++11一样是一个巨大的变化,但 C++17也包含了非常多很小但却很有价值的语言 和库特性。它们再一次改变了我们使用 C++编程的方式,无论是对应用程序员还是提供基础库的程序员来说都 是如此。

2023-01-21

MSVC C++ STL 源码解析系列.md

MSVC C++ STL 源码解析系列.md

2023-01-10

C# Asp MVC 五层 .net 学生管理系统main.tar

这套源码 适合毕业设计和课程设计,因为有足够的注释 ,所以理解简单。采用五层架构 ,符合高内聚,低耦合的设计规范。课程设计书里有 软件测试。 一.导入数据库 数据库文件一般在Data、DB或者App_Data文件夹内 有两种方法导入数据库,任选其一即可: 1.用sqlserver打开XXX.sql脚本,然后执行脚本,即可自动创建数据库。 2 用sqlserver附件mdf文件(此方法有版本限制,某些低版本sqlserver可能出现无法附件的情况)(推荐此方法) 二.运行项目 1.修改链接字符串 链接字符串在web.config文件内,一般使用默认配置即可无需修改, 修改也很简单,将你的数据库服务器名复制进来,替换掉链接字符串里的服务器名即可(就是这个点号)。操作请看图:。 2 用VS打开解决方案文件(即.sln文件),如果没有解决方案文件,就用VS打开网站,运行即可。如果运行起来后,没有自动显示页面,则需设置默认启动项,右键某个你想设置的.aspx文件,在弹出的界面中点击“设为启动项”即可,然后重新点击运行。

2022-09-13

网二维数组的动态创建和释放.pdf 网负号重载(1).pdf 网负号重载pdf 赋值号“==“重载(1).pdf 赋值号"==

网二维数组的动态创建和释放.pdf 网负号重载(1).pdf 网负号重载pdf 赋值号“==“重载(1).pdf 赋值号"== “重载.pdf 构造函数可以调用虚函数吗, 析构函数可... 后置加加(1).pdf 后置加加.pdf 网将模板声明为友元.pdf @静态数据成员(1).pdf 静态数据成员.pdf 拷贝构造函数.pdf 类的继承.pdf 类的组合.pdf 模板.pdf 模板的特化(具体化) .pdf 前置加加重载(1).pdf 前置加加重载pdf 國浅拷贝与深拷贝.pdf 输入输出函数重载(1).pdf 输入输出函数重载pdf 画委托构造函数.pdf 析构函数.pdf 虛表.pdf 网虛函数和多态.pdf 网虚析构函数.pdf 网友元函数(1).pdf 國友元函数.pdf 运算符重载(1).pdf 运算符重载pdf 指针函数和函数指针.pdf 网重载赋值号的问题?为什么不能自赋值1...

2022-07-21

this指针的笔记呀呀呀呀

this指针的笔记呀呀呀呀

2022-07-21

git reset 的三个参数.pdf

1.--soft: 仅仅移动本地库 原先是统一战线的,git reset --soft 版本号 如果是后退了,相当于 工作区、暂存区 前进了 如果是前进了,相当于 工作区、暂存区 后退了 这个时候 git status 会根... 2.--mixed:本地库和暂存区否会变 git reset --mixed 版本号 如果是前进 相当于工作区自己后退了 如果是后退,相当于工作区前进了 此时git status,也会相应的发生变化,比如 变红色、变绿色等

2022-06-13

C#实现的学生管理系统,期末实训报告

含有sql脚本,和期末实训报告。目 录 第一章 学生信息管理系统概述 1.1 系统的主要功能 1.2 设计方法概述 1.3 学生信息管理系统的现状分析 1.3.1 学生信息管理系统应用的现状 1.3.2 管理系统开发的目的 第二章 系统开发平台 2.1 数据库系统的选择 2.2 系统开发工具的选择 第三章 系统框架设计 3.1 系统开发梗概 3.2 系统开发的步骤 3.3 系统的逻辑体系结构 第四章 系统概要和数据库设计 4.1 系统功能模块图 4.2 功能的说明 5.1 数据库及表的设计 5.2 数据库中的数据库关系图 5.3 数据库中存储过程的设计 5.3.1 存储过程的含义 5.3.2 存储过程的应用 第五章 系统详细设计及实现 5.4 系统模块设计 5.4.1 主窗口的设计 5.4.2 查询 5.4.3 密码修改 5.4.4选修课选课 第六章 开发系统遇到的问题和获得的经验 6.1 系统开发过程中遇到的问题 6.1.1 数据库连接 6.1.2 数据库中的表设计 6.1.3用户权限问题 6.2 从系统开发中获得

2022-05-15

QT学生管理系统的数据库文件(SQLLite)

和学生管理系统配套使用

2022-04-28

qt学生信息管理系统(含有数据库源码)

qt学生信息管理系统(含有数据库源码)

2022-04-28

makefile 文件编写

makefile 文件编写

2022-04-05

mysql 基础 进阶 运维

我自己做了个学习笔记,放在网上,大家也可以参考参考,不算特别详细但是老师讲到的知识点都记录下来了,欢迎大家观看

2022-03-20

Linux教程.zip

Linux教程.zip

2022-03-20

群主-SQL.pdf

群主-SQL.pdf

2022-03-14

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除