04 2020 档案
摘要:共5题,其中某一题如下 题目:设设 n! 末尾0个个数为Q,现给出Q,求满足条件的最小正整数n($1 \leq Q \leq 10^{18}$) 分析: 给出n求 n! 末尾0的个数,有规律: ll func(ll n) { ll res = 0; while(n >= 5) { n /= 5; r
阅读全文
摘要:共三题,第一题签到题,第二题字符串处理,不是很复杂的那种,第三题将数组分割使得最小值最大。 数组分割使最小值最大:二分最小值,同时check是否有k组大于最小值。题目还要求有多个答案时,第一个分组尽可能地大,如果第一个分组也有多种情况,要使第二个分组尽可能地大,可以贪心处理,从后往前。 #inclu
阅读全文
摘要:通常,人们习惯用可读性好的字符串来表示IP,比如用点分十进制字符串表示IPv4,以及用十六进制字符串表示IPv6地址。但在编程中我们需要把它们转换成整数(二进制)才能使用。而记录日志则相反,我们要把整数表示的IP地址转换成可读的字符串 #include<arpa/inet.h> #include<s
阅读全文
摘要:1. 饿汉模式 #include<iostream> class singleton { private: static singleton* p; singleton(){} public: static singleton* getInstance() { return p; } }; sing
阅读全文
摘要:最常见的进程/线程的同步方法有互斥锁(或称互斥量Mutex),读写锁(rdlock),条件变量(cond),信号量(Semophore)等。在Windows系统中,临界区(Critical Section)和事件对象(Event)也是常用的同步方法。 简单地说,互斥锁保护了一个临界区,在这个临界区中
阅读全文
摘要:单例模式可能是使用最广泛的设计模式,其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点。 单例模式有很多实现方法,在C++中,甚至可以直接用一个全局变量做到这一点,但是这样的代码显得很不优雅。《设计模式》一书中给出了一种很不错的实现,定义一个单例类,使用类的私有静态指针变量指向类的唯一实例
阅读全文
摘要:webbench的标准测试可以向我们展示服务器的两项内容:每秒钟响应请求数和每秒钟传输数据量。 webbench不但能具有便准静态页面的测试能力,还能对动态页面(ASP,PHP,JAVA,CGI)进 行测试的能力。 他支持对含有SSL的安全网站例如电子商务网站进行静态或动态的性能测试。 Webben
阅读全文
摘要:假设 words.txt 内容如下: the day is sunny the the the sunny is is 你的脚本应当输出(以词频降序排列): the 4 is 3 sunny 2 day 1 你需要使用一行unix pipes实现 方法一: awk '{for(i = 1;i <=
阅读全文
摘要:转载自:https://www.jianshu.com/p/84d96a6385b0 我们的源代码通过预处理,编译,汇编,链接后形成可执行文件,)那么当我们在cmd窗口敲出指令$test argv1 argv2\n 后,操作系统是怎么将我们的可执行文件加载并运行的呢? 首先知道,计算机的操作系统的启
阅读全文
摘要:在C++中,什么叫做菱形继承问题(也可以叫钻石问题),怎么避免它? 假设我们有类B和类C,它们都继承了相同的类A。另外我们还有类D,类D通过多重继承机制继承了类B和类C。因为上述图表的形状类似于钻石(或者菱形),因此这个问题被形象地称为钻石问题(菱形继承问题)。现在,我们将上面的图表翻译成具体的代码
阅读全文
摘要:转载自:https://blog.csdn.net/qq_36359022/article/details/818702 C++虚函数表是支撑C++多态的重要技术,它是C++动态绑定技术的核心。 一、内存分布 假设有一个基类ClassA,一个继承了该基类的派生类ClassB,并且基类中有虚函数,派生
阅读全文
摘要:面试中被问到了,但是当时没答出来,后来发现挺简单的。 指明域就可以了 例如, #include<iostream> class Base{ public: virtual void f() { std::cout << "base" << std::endl; } }; class Test : p
阅读全文
摘要:先说结论: class默认的是private,struct默认的是public public继承:子类可以访问父类除私有成员以外的所有成员 private继承:子类不能访问父类的任何成员 如果是动态创建对象,必须用public继承,否则创建的时候就会失败。 #include<iostream> cl
阅读全文
摘要:先说结论: 构造: 基类成员对象的构造函数 基类的构造函数 子类成员对象的构造函数 子类的构造函数 析构: 子类的析构函数 子类成员的析构函数 基类的析构函数 基类成员的析构函数 借一幅图(https://blog.csdn.net/wq_1996/article/details/78219479)
阅读全文
摘要:虽然是道简单题,但还是翻车了,没有看到题目的有序条件。 方法一: 公式法,O(n) class Solution { public: int missingNumber(vector<int>& nums) { int sum = accumulate(nums.begin(), nums.end(
阅读全文
摘要:题目:给出一个区间集合,求合并所有重叠后的区间。 分析:区间处理先上套路,按左端点作第一维,右端点作第二维进行排序。依次考察每个区间,假设前面所有区间合并后是[left, right],若当前区间的左端点小于等于right,right=max(right, 当前区间的右端点);否则说明有空格,将[l
阅读全文
摘要:leetcode542 01矩阵 给定一个由 0 和 1 组成的矩阵,找出每个元素到最近的 0 的距离。 分析:很容易想到dp[i][j] = min(dp[i-1][j], dp[i][j+1], dp[i+1][j], dp[i][j-1]),出口是若m[i][j] = 0,则dp[i][j]=
阅读全文
摘要:string addStrings(string num1, string num2) { int n = num1.size(), m = num2.size(); // 补齐 if(n < m) for(int i = n;i < m;i++) num1 = '0' + num1; else f
阅读全文
摘要:一、什么是共享内存 不同进程之间共享的内存通常安排为同一段物理内存。进程可以将同一段共享内存连接到它们自己的地址空间中,所有进程都可以访问共享内存中的地址,就好像它们是由用C语言函数malloc分配的内存一样。而如果某个进程向共享内存写入数据,所做的改动将立即影响到可以访问同一段共享内存的任何其他进
阅读全文
摘要:转载自:https://blog.csdn.net/qq_36829091/article/details/80138836 每一个进程来说这个进程看到属于它的一块内存资源,这块资源是它所独占的,所以进程之间的通信就会比较麻烦,原理就是需要让不同的进程间能够看到一份公共的资源。所以交换数据必须通过内
阅读全文
摘要:在已经凉了的字节面试中被问到,为什么 C++ 有指针了还要引用? 的确,引用的底层也是指针实现的,引用和指针在编译结束之后汇编指令是一样的,引用会占用和指针相同大小的数据空间。 引用传递,只是明面上,没有使用值传递,值传递本身是不可避免的。编译器,暗地里通过指针(或者其他可以替代指针的数据类型)的值
阅读全文
摘要:需要考虑内存重叠的情况 #include<bits/stdc++.h> using namespace std; void *memcpy(void *dst, const void *src, size_t len) { if(NULL == dst || NULL == src){ return
阅读全文
摘要:C++默认的拷贝构造函数和赋值构造函数都是浅拷贝,所以当遇到成员含有指针变量时,需要自己实现深拷贝。 写个简单的String就是很好的例子。 #include<bits/stdc++.h> using namespace std; class String{ public: // 默认构造函数 St
阅读全文
摘要:问题:一群人开舞会,每人头上都戴着一顶帽子。帽子只有黑白两种,黑的至少有一顶。每个人都能看到其它人帽子的颜色,却看不到自己的。主持人先让大家看看别人头上戴的是什幺帽子,然 后关灯,如果有人认为自己戴的是黑帽子,就打自己一个耳光。第一次关灯,没有声音。于是再开灯,大家再看一遍,关灯时仍然鸦雀无声。一直
阅读全文
摘要:听说是字节的面试题, 小明和小红打乒乓球,已知小明每一局胜的概率55%,那么那种方式对小明更有利,是五局三胜还是三局两胜? 分别计算两种规则下小明获胜的概率: “三局两胜制”: 只有2种情况:比赛2场2场小明胜,比赛3场最后一场小明胜,前面两场中有一场胜。 $$g(p) = p^2 + C_2^1p
阅读全文
摘要:C语言转换形式: ... std::string str; int i = atoi(str.c_str()); ... 其参数只能是字符数组,不能是string类型,还有一类函数strtod atof() 将字符串转换为双精度浮点型值 atoi() 将字符串转换为整型值 atol() 将字符串转换
阅读全文
摘要:注意:本文基于MySQL的InnoDB引擎说明。 一、什么是最左前缀原则 对于该表,如果按照name字段来建立索引的话,采用B+树结构,大概的索引如下: 如果要进行模糊查找,查找name 以“张"开头的所有人的ID,即 sql 语句为: select ID from table where name
阅读全文
摘要:InnoDB InnoDB 中 B+ 树的数据结构中存储的都是实际的数据,这种索引又被称为聚集索引。 由于 InnoDB 利用的数据库主键作为索引 Key,所以 InnoDB 数据表文件本身就是主索引。 所以使用 InnoDB 作为数据引擎的表需要有个主键 如果没有显式指定的话 MySQL 会尝试自
阅读全文
摘要:先说结论: 栈大小:VS中默认1M,ubuntu中默认8M 堆大小:堆的话,理论上内存有多大,就可以建多大.但32位的程序在64位系统上运行的时候,一个进程的堆大小应该是不可以超过4G(虚拟地址空间大小为4G)的. 栈大小 linux下查看和修改: ulimit -a #显示当前用户的栈大小 uli
阅读全文
摘要:镜像就类似于我们使用虚拟机前需要下载的系统镜像文件,比如iso文件、img文件等这样的镜像文件; 容器可以比作正在运行的虚拟机,镜像通过run方法启动; tar文件类似于VM使用过程中的vmdk文件,我们可以将一个镜像文件保存成tar文件,别人通过load指令可以重新加载成一个镜像; Dockerf
阅读全文
摘要:Redis是一个开源的使用ANSI C语言编写的、可基于内存亦可持久化的日志型、Key-Value数据库 五种数据结构 redis有5种数据结构: 每一种都是以string作为key,value可以是以上5种。 string->string 1. 增加 set k1 v1 2. 获取 get k1
阅读全文
摘要:#include<bits/stdc++.h> using namespace std; const int maxn = 100000; int heap[maxn], n; void SHIFT_DOWN(int i) { while(2*i <= n) { i = 2*i; if(2*i+1
阅读全文