前言
阅读此篇前,可先阅读后缀数组
LCP
LCP 就是最长公共前缀,在后缀数组中,(LCP(i,j)) 就代表从 (sa_i) 开始的后缀和从 (sa_j) 开始的后缀的最长公共前缀。
height 的定义
(height[i]=LCP(sa[i],sa[i-1])),即从 (i) 开始的后缀与
什么是后缀数组
后缀数组主要是用来处理字符串的,分为两种方法:倍增法以及 DC3,但由于倍增法通俗易懂,码量小,常数小,所以今天这篇文章我就只介绍倍增法(不可能是因为我不会 DC3)
前缀知识
No.1 基数排序
毕竟sort排序需要 (O(nlog n)),所以并不适合后缀数组,我们便想到了 (
前几天和一个身在美国的码农聊天,一时对中美两国的程序员差异产生了兴趣,于是就跑去收集整理了国内外近5年的开发者统计数据。这算不上一篇技术文章,但我想,了解国外同行的一些潮流或者趋势,或许对我们有所启发,毕竟根据以往的经验,湾区的风也常常吹到国内。
✎ 数据来源包括StackOverflow、CSD
某日二师兄参加XXX科技公司的C++工程师开发岗位第31面:
面试官:什么是锁?有什么作用?
二师兄:在C++中,锁(Lock)是一种同步工具,用于保护共享资源,防止多个线程同时访问,从而避免数据竞争和不一致。
面试官:有哪些锁?
二师兄:从种类上分,可以分为普通锁、读写锁、递归锁等种类。
二师
最简单的C++程序
#include <iostream>
using namespace std;
int main()
{
cout << "hello C++" << endl;
system("pause");
retur
一、常见图形界面框架(DirectUI、GUI)
1.题外话,纯属扯O
举两个常用的开发框架,MFC和Qt Widget里面每个控件都是Window,这是和DirectUI最大的区别。下面简单梳理下这个DirectUI与GUI之前错综复杂的爱恨情仇:
① 在侏罗纪时期,传统的Handle式GUI框
C#.NET Framework 使用BC库(BouncyCastle) RSA 公钥加密 私钥解密 ver:20230706
环境说明:
.NET Framework 4.6 的控制台程序 。
2020年以后 ,有部分PKCS8私钥(openssl生成)无法用RsaUtil.LoadPr
1 .让自己习惯C++
条款01 视C++为一个语言联邦
C
Object-Oriented C++
Template C++
STL
C++高效编程守则视情况而变化,取决于你使用C++的哪一部分。
条款02 尽量与const,enum,inline替换#define
对于单纯常量,最好以cons
最近又有个奇奇怪怪的题目,数据为 (n le 1 times 10^7),并且还要用到排序,普通的排序肯定会超时,然后就发现了一种 (O(n))
介绍
基数排序(Radix Sort)是桶排序的扩展,它是将整数按位数切割成不同的数字,然后按每个数位分别比较以此来排序。
说详细点,也就是将所有数字统
一:背景
1. 讲故事
很多朋友可能会有疑问,C# 是一门托管语言,怎么可能会有非托管句柄泄露呢? 其实一旦 C# 程序与 C++ 语言交互之后,往往就会被后者拖入非托管泥潭,让我们这些调试者被迫探究 非托管领域问题。
二:非托管句柄泄露
1. 测试案例
为了方便讲述,我们上一个 Event 泄露
一、编译和链接的过程
1、GCC生成可执行文件的总体过程
在日常的开发过程中,IDE总是会帮我们将编译和链接合并,一键式的执行,即使在liunx中,使用命令行来编译一个源文件也只是简单的一句"gcc hello.c"。我们并没有过多的关注编译和链接的运行机制和机理,我想从本质出发,深入了解这些机制
内存模型
C++在执行程序的时候,将内存方向划分为4个区域:
代码区:存放二进制代码,由操作系统进行管理
全局区:存放全局变量、静态变量、常量,程序结束后由操作系统释放
栈区:存放函数参数、局部变量,由编译器自动分配和释放
堆区:由开发者申请分配和释放,若程序员不释放,程序结束由操
C++ 惯用法之 Copy-Swap 拷贝交换
这是“C++ 惯用法”合集的第 3 篇,前面 2 篇分别介绍了 RAII 和 PIMPL 两种惯用法:
RAII: Resouce Acquistion Is Initialization
PIMPL:Pointer To Implemetatio
[洛谷]P3378 【模板】堆
方法一 手写堆
最小堆插入
从新增的最后一个结点的父结点开始,用要插入元素向下过滤上层结点(相当于要插入的元素向上渗透)
void siftdown(int i) //传入一个需要向下调整的结点编号i,这里传入1,即从堆的顶点开始向下调整
{
int t
RAII(Resource Acquisition Is Initialization)资源获取即初始化,是 C++ 中最基本、应用最广范的惯用法(idiom)之一。
RAII 的基本思想是通过构造/析构函数,对资源的获取/释放进行封装,然后借助局部对象的自动生命周期来管理资源。使用 RAII 可
前言
前段时间微软发布了适用于VS Code的C#开发工具包(注意目前该包还属于预发布状态但是可以正常使用),因为之前看过网上的一些使用VS Code搭建.NET Core环境的教程看着还挺复杂的就一直没有尝试使用VS Code来编写.NET Core。不过听说C# 开发工具包提供了一系列功能
Qt deleteLater作用及源码分析
个人经验总结,如有错误或遗漏,欢迎各位大佬指正
引自:https://blog.csdn.net/weixin_43795921/article/details/127224633
template <typename IdentifierType, class AbstractProduct, class Produc
一.在Windows上,网上流传的几种方法可以打开目录并定位到指定文件:
1.使用系统调用:
使用system()函数执行操作系统的命令行命令。
在命令行命令中,使用explorer /select, 文件路径来打开目录并选中指定文件。例如:
#include <cstdlib>
2023年7月11日 .NET 8 Preview 6,.NET 团队在官方博客发布了系列文章:Announcing .NET 8 Preview 6[1]ASP.NET Core updates in .NET 8 Preview 6[2]Announcing .NET MAUI in .NET