iOS
暑假集训D9 2023.8.2 补题
A.「EZEC-10」排列排序 给你一个长度为 (n) 的排列 (p_1,p_2, cdots ,p_n)。你需要把它排序。 每次可以花区间长度,即 (r-l+1) 的代价,选择排列中的任意一段区间 ([l,r]),并将 ([l,r]) 从小到大排序。 现在你可以让他进行若干次这个操作,直到 (p) 中元素的值从 (1) 到 (n) 按升序排序,即对于 (1) 到 (n) 的每一个 (i),都有
metersphere性能压测执行过程
(1) 首先在controller层,通过RunTestPlanRequest接收请求参数 (2) 在PerformanceTestService中的run中进行具体的逻辑处理, 首先根据请求中ID来获取库中存储的测试用例信息(判空和运行状态判断) 后根据查出的用例信息中资源池id,判断此id资源池是否存在和状态有效,
c++11 std::unique_lock
std::unique_lock 用法类似lock_guard,离开作用域后自动unlock 定义的时候可以不需要mutex初始化,可以为空 可以手动调用lock(),unlock() 参考 https://en.cppreference.com/w/cpp/thread/unique_lock https://cplusplus.com/reference/mutex/unique_loc
[刷题笔记] Luogu P1853 投资的最大效益
Problem Solution 刚开始看这道题的时候不自主的想到了纪念品,但其实本题和纪念品还是有区别的。 纪念品规定了每次只能买一个纪念品,而本题可以买无限个 纪念品需要在原本的基础上买进卖出,钱有进有出,而本题时只有进,稳赚不赔。 本题和纪念品不同的第一点决定了它时完全背包,纪念品是01背包变形。第二点则决定了本题只需要记录最大利息即可,ans初始设置为初始的钱数,每年结束加上最大利息即
c++控制台时钟显示时间
在旧电脑上刷了ubuntu的服务器版本,开着的时候旧电脑(yoga)的屏幕就处于了无用的状态。为了更好的利用这个屏幕,简单使用c++写了一个显示时间的代码。 由于这台yoga的屏幕是可以360翻转的,所以给时间的显示也增加了一点翻转功能。 最终效果如下
122.成员函数里memset(this,0,sizeof(*this))会发生什么
122.成员函数里memset(this,0,sizeof(*this))会发生什么 有时候类里面定义了很多int,char,struct等c语言里的那些类型的变量, 可以在构造函数中将它们初始化为0,但是一句句的写太麻烦,所以直接就memset(this, 0, sizeof (*this));将整个对象的内存全部置为0。对于这种情形可以很好的工作, 某些人认为不应该在构造函数中使用this指针
121.static_cast比C语言中的转换强在哪里?
121.static_cast比C语言中的转换强在哪里? 更加类型安全:static_cast在执行类型转换之前会进行类型检查,如果转换不可行,编译时会产生错误或警告。这有助于及早发现潜在的错误并进行修复,而不是在运行时出现未定义的行为。 适用于指针和引用:static_cast可以用于指针和引用的类型转换,而C语言中的类型转换只能用于数值类型之间的转换。这使得static_cast可以更灵活地
Codeforces Round 887 (Div. 1)
Preface 补一篇好久之前打的CF的博客,说实话其实B题我当时怎么想的已经忘的七七八八了 这场第一眼看A没啥思路,就先去把B这个构造写了,中间想了挺久的大概40min才写出来 然后回头一看A发现可以倒着做,就是个丁真题了然后15min写完 后面看C刚开始以为是个贪心,后面又感觉是个DP,但状态数比我预计的多,搞来搞去也没写出来 后面看Tutorial才发现原来是带悔贪心,捏麻麻的好像自从ZJO
126.友元函数在类内部声明还是内外?
126.友元函数在类内部声明还是内外? 友元函数不一定要在类内声明,普通的友元函数可以在类外声明,也可以在类内声明。 只有友元工厂才必须用到类内声明友元函数。 友元函数可以在类的内部声明,也可以在类的外部声明。 1.如果友元函数是在类的内部声明的,那么它可以直接访问类的私有成员和保护成员,即使这些成员在类的外部是不可见的。这种声明方式可以使代码更加简洁,因为友元函数的声明和定义都放在了类的定义中。
1.类的对象存储空间?
1.类的对象存储空间? 非静态成员的数据类型大小之和。 编译器加入的额外成员变量(如指向虚函数表的指针)。 为了边缘对齐优化加入的padding。 空类(无非静态数据成员)的对象的size为1, 当作为基类时, size为0。 C++类是由结构体发展得来的,所以他们的成员变量(C语言的结构体只有成员变量)的内存分配机制是一样的。 首先,类计算大小与C语言中struct计算大小的规则是一样的,都
Linux pinctrl 子系统
文章代码分析基于linux-5.19.13,架构基于aarch64(ARM64)。 1. Linux 5.x官方参考文档 Documentationdevicetreebindingspinctrlpinctrl-bindings.txt 2. Pinctrl的引入 想要pinA、B用于GPIO,需要设置IOMUX让它们连接到GPIO模块;要想让pinA、B用于I2C,需要设置IOMU
5.C++中类的数据成员和成员函数内存分布情况
5.C++中类的数据成员和成员函数内存分布情况 非静态成员的数据类型大小之和。 编译器加入的额外成员变量(如指向虚函数表的指针)。 为了边缘对齐优化加入的padding。 空类(无非静态数据成员)的对象的size为1, 当作为基类时, size为0。 C++类是由结构体发展得来的,所以他们的成员变量(C语言的结构体只有成员变量)的内存分配机制是一样的。 首先,类计算大小与C语言中struct计
8.内存泄漏的后果?如何监测?解决方法?
8.内存泄漏的后果?如何监测?解决方法? 1.内存泄漏 1.1定义 内存泄漏是指由于疏忽或错误造成了程序未能释放掉不再使用的内存的情况。内存泄漏并非指内存在物理上消失,而是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制; 1.2种类 1.2.1C/C++程序中一般我们关心两种方面的内存泄漏: 1.堆内存泄漏(Heap leak) 堆内存指的是程序执行中依据须要分配通过malloc /
12.你知道空类的大小是多少吗?
12.你知道空类的大小是多少吗? 1.C++空类的大小不为0,不同编译器设置不一样,vs设置为1 2.C++标准指出,不允许一个对象(当然包括类对象)的大小为0,不同的对象不能具有相同的地址 3.带有虚函数的C++类大小不为1,因为每一个对象会有一个vptr指向虚函数表,具体大小根据指针大小确定 4.C++中要求对于类的每个实例都必须有独一无二的地址,那么编译器自动为空类分配一个字节大小,这样便保
14.this指针调用成员变量时,堆栈会发生什么变化?
14.this指针调用成员变量时,堆栈会发生什么变化? 当在类的非静态成员函数访问类的非静态成员时,编译器会自动将对象的地址传给作为隐含参数传递给函数,这个隐含参数就是this指针。 即使你并没有写this指针,编译器在链接时也会加上this的,对各成员的访问都是通过this的。 例如你建立了类的多个对象时,在调用类的成员函数时,你并不知道具体是哪个对象在调用,此时你可以通过查看this指针来查看
3.C++中NULL和nullptr区别
3.C++中NULL和nullptr区别 1.NULL是什么 在《NULL,0,'0',"0","0"的区别》一文中,我们已经知道了在C中NULL是什么,在C的头文件中,通常定义如下: 但是在C++中,它是这样定义的: 可以在stddef.h看到完整的这段: 也就是说,在C++中,NULL不过也是0罢了,把它当成空指针只是一个无可奈何的选择罢了。 那么为什么在C++和C中不一样呢?因为C++
c++11 std::condition_variable
std::condition_variable 需要配合unique_lock使用,wait(unique_lock<mutex>&) notify_one()调用时,只有随机一个wait()线程会得到通知 notify_all(),所有wait()线程会被通知并得到执行 wait()调用会阻塞当前线程 wait()线程中用到的unique_lock不会阻塞notify线程中
4.智能指针的原理、常用的智能指针及实现
4.智能指针的原理、常用的智能指针及实现 1.auto_ptr 当你在读这篇文章的时候,应该都有这样一个疑问?那就是为什么要使用智能指针。 我们先看这样一个示例: 这段程序如果乍一看是不是没有什么问题,也可以正常编译和运行。但这只是少量代码,体现不出来问题在哪。如果一涉及到工程级代码,那就很容易造成内存泄漏问题(真的是程序员最头疼的问题之一)。 对于上面问题,最简单的一个办法就是把string定
5.说一说你了解的关于lambda函数的全部知识
5.说一说你了解的关于lambda函数的全部知识 1.利用lambda表达式可以编写内嵌的匿名函数,用以替换独立函数或者函数对象; 2.每当你定义一个lambda表达式后,编译器会自动生成一个匿名类(这个类当然重载了()运算符),我们称为闭包类型(closure type)。那么在运行时,这个lambda表达式就会返回一个匿名的闭包实例,其实一个右值。所以,我们上面的lambda表达式的结果就是一
8.智能指针的循环引用
8.智能指针的循环引用 循环引用是指使用多个智能指针share_ptr时,出现了指针之间相互指向,从而形成环的情况,有点类似于死锁的情况,这种情况下,智能指针往往不能正常调用对象的析构函数,从而造成内存泄漏。举个例子: 从上面shared_ptr的实现中我们知道了只有当引用计数减减之后等于0,析构时才会释放对象,而上述情况造成了一个僵局,那就是析构对象时先析构sp2,可是由于sp2的空间sp1还
3.使用智能指针管理内存资源,RAII是怎么回事?
3.使用智能指针管理内存资源,RAII是怎么回事? 什么是RAII? RAII是Resource Acquisition Is Initialization(wiki上面翻译成 “资源获取就是初始化”)的简称,是C++语言的一种管理资源、避免泄漏的惯用法。利用的就是C++构造的对象最终会被销毁的原则。RAII的做法是使用一个对象,在其构造时获取对应的资源,在对象生命期内控制对资源的访问,使之始终保
5.说一下C++左值引用和右值引用
5.说一下C++左值引用和右值引用 C++11正是通过引入右值引用来优化性能,具体来说是通过移动语义来避免无谓拷贝的问题,通过move语义来将临时生成的左值中的资源无代价的转移到另外一个对象中去,通过完美转发来解决不能按照参数实际类型来转发的问题(同时,完美转发获得的一个好处是可以实现移动语义)。 在C++11中所有的值必属于左值、右值两者之一,右值又可以细分为纯右值、将亡值。在C++11中可以
P1125 [NOIP2008 提高组] 笨小猴
这题还是挺水的,跟着描述走就行。 为了统计字母出现的次数,需要定义一个数组,遍历字符串每次使数组对应字母的位置加一即可。 这里为了表示每个字母的对应位置,使用 字符-'a' 的方式。 接下来统计出现次数最多和最小的次数没什么好说的,仍然注意保证字符不为空 最后判断时注意特判(textup{maxn-minn})是否等于(textup{0})或(textup{1}) 完整代码如下: 忽然想到以后
7.简单说一下traits技法
7.简单说一下traits技法 traits技法利用“内嵌型别“的编程技巧与编译器的template参数推导功能,增强C++未能提供的关于型别认证方面的能力。常用的有iterator_traits和type_traits。 iterator_traits 被称为特性萃取机,能够方便的让外界获取以下5种型别: value_type:迭代器所指对象的型别 difference_type:两个迭代器之
HDU 多校 2023 Round #5 题解
HDU 多校 2023 Round #5 题解 (text{By DaiRuiChen007}) A. Typhoon Problem Link 题目大意 给一条 (n) 个点构成的折线,(q) 次询问某个点到折线的最短距离。 数据范围:(n,qle 10^4)。 思路分析 暴力枚举每一条线段,判断点到直线的垂足是否在线段上即可。 时间复杂度 (mathcal O(nm))。 代码呈现 B
2023-08-02:给定一棵树,一共有n个点, 每个点上没有值,请把1~n这些数字,不重复的分配到二叉树上, 做到 : 奇数层节点的值总和 与 偶数层节点的值总和 相差不超过1。 返回奇数层节点分配
2023-08-02:给定一棵树,一共有n个点, 每个点上没有值,请把1~n这些数字,不重复的分配到二叉树上, 做到 : 奇数层节点的值总和 与 偶数层节点的值总和 相差不超过1。 返回奇数层节点分配值的一个方案。 2 <= n <= 10^5 。 来自腾讯音乐。 答案2023-08-02: 大致步骤如下: 1.计算出1到n的总和sum。 2.确定两个目标值p1和p2,它们分别是sum