- 博客(107)
- 资源 (10)
- 收藏
- 关注
原创 VS上查看某个类中各个成员变量所占用的内存空间
例子class CTest{ char a; int b; double c;};int main(){ cout << sizeof(CTest) << endl; return 0;}输入命令 cl ConsoleApplication1.cpp /d1reportSingleClassLayoutCTes...
2024-11-18 21:30:00
256
原创 【QA系列】程序的指令和数据为啥分开存放?
指令区域对于进程来说是只读的,可以防止程序指令被修改指令区和数据区域分离提高程序局部性,提高缓存命中率程序中运行多个程序的副本时,指令都是一样的,在内存中只需要保存一份就行了,节省空间。...
2024-11-17 22:06:00
250
原创 229. 求众数 II
思路:利用两个变量分别保存可能满足条件的数并记录其对应的个数若当前数与两个变量保存的数都不同,则变量对应的个数都减1拓展:找出出现次数超过 [ n/k ] 次:用k-1个变量保存可能满足条件的数及对应的个数class Solution {public: vector<int> majorityElement(vector<int>& nums) { int r1, r2, c1 = 0, c2 = 0; //r1,r2:两个..
2021-09-08 22:17:59
157
原创 148. 排序链表
思路:归并排序自底向上:从长度为1开始,两两归并每次长度*2/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode() : val(0), next(nullptr) {} * ListNode(int x) : val(x), next(nullptr) {} * ListNode(int x..
2021-09-06 23:45:05
150
原创 169. 多数元素
思路:记录保存数及其次数;①如果当前数与保存数不一致,次数减一,次数减为0,则保存当前数②如果当前数与保存数一致,次数加一class Solution {public: int majorityElement(vector<int>& nums) { int r = nums[0], c = 1; for(int i=1; i<nums.size(); i++) { if(r != nu..
2021-09-05 23:08:55
116
原创 179. 最大数
179. 最大数思路:自定义排序规则:a < b 等价于 to_string(a)+to_string(b) < to_string(b)+to_string(a)class Solution {public: string largestNumber(vector<int>& nums) { sort(nums.begin(), nums.end(), cmp); string s; for(aut
2021-09-05 09:08:30
123
原创 MVVM简单应用实践(二)
上一小节已经通过自行实现Commands完成预期功能。但目前仍存在如下几点缺陷:对应“加、减、乘、除”不同的操作,分别实现了PlusCommand、MinusCommand、MultiplicationCommand、DivisionCommand。而这四种操作对应的代码大体相同。xxxCommand与CaculatorVM耦合度高,比如修改了CaculatorVM中的Add方法,则要去修改PlusCommand内Execute方法。可以通过内置委托(Predicate、Action、Func)进
2020-08-31 18:05:09
165
1
原创 MVVM简单应用实践(一)
0. MVVM介绍及前置知识上图来自维基。组成要素:Model:表示具体数据内容(represents real state content)View:界面展示View Model:View的抽象,提供公共属性和命令(an abstraction of the view exposing public properties and commands)Binder:(a view directly binds to properties on the view model to send and
2020-08-31 18:00:32
311
原创 图论系列(六)——图的广度优先遍历及应用2
1. 二分图检测import java.util.LinkedList;import java.util.Queue;public class BipartitionDetection { private Graph G; private boolean[] visited; private int[] colors; //colors[i]:节点i的颜色:0...
2020-03-30 17:05:32
326
原创 图论系列(四)——图的深度优先遍历的应用2
1. 图的环检测无向图有环:当前点的邻接节点已经被访问过被访问过的邻接节点不是当前节点的上个访问import java.util.ArrayList;import java.util.Collections;public class CycleDetection { private Graph G; private boolean[] visited; ...
2020-02-15 21:06:07
352
原创 图论系列(三)——图的深度优先遍历的应用1
1. 联通分量统计一个图中联通分量个数判断两点是否联通求每个联通分量中包含点编号import java.util.ArrayList;//Connected Component —— 联通分量public class CC { private Graph G; private int[] visited; //将 boolean型改为 int...
2020-02-15 21:04:19
608
原创 图论系列(二)——图的深度优先遍历
1. 树的深度优先遍历与图的深度优先遍历对比2. 代码实现(递归版)import java.util.ArrayList;public class GraphDFS { private Graph G; private boolean[] visited; private ArrayList<Integer> order = new ArrayLis...
2020-02-08 20:26:23
358
原创 图论系列(一)——图的基本概念和基本表示
1. 图的分类2. 图的基本概念(联通分量、联通图的生成树)3. 图的基本表示(无向无权图为例)实现代码:import java.io.File;import java.io.IOException;import java.util.ArrayList;import java.util.Scanner;public class AdjMatrix { priv...
2020-02-08 14:53:23
666
原创 算法基础——高精度加、减、乘、除
1. 思想大整数——将数字从个位开始存储高精度乘法:高精度除法:2. 模板高精度加法#include<iostream>#include<vector>using namespace std;vector<int> add(vector<int>& v1, vector<int>& v2)...
2020-02-03 11:54:55
171
原创 算法基础——二分
1. 思想2. 模板3. 应用数的范围题目链接#include <iostream>using namespace std;const int N = 1e6+10;int arr[N];int main(){ int n, q; scanf("%d %d", &n, &q); for(int i=0;...
2020-01-28 22:26:20
121
原创 算法基础——归并排序
1. 思想分治法:选择中间点递归排序左边、右边归并2. 模板#include <iostream>using namespace std;const int N = 1e6+10;int arr[N],tmp[N];void mergeSort(int *arr, int l, int r){ if(l >= r) return ;...
2020-01-27 20:23:16
116
原创 算法基础——快速排序
1. 思想分治法选择分界点(arr[l]、arr[mid]、arr[r])调整数组区间(左半部分 < 分界点,右半部分 > 分界点)递归处理左半部分,递归处理右半部分2. 模版#include <iostream>#include <algorithm>using namespace std;const int N = 1e6 +...
2020-01-26 21:45:18
132
原创 深度探索c++对象模型(四)补充
1. 普通成员变量的存储顺序按照在类中定义的顺序class A{public: int m_i; static int m_si; int m_j; static int m_sj; int m_k; static int m_sk;};int main(){ A a; a.m_i = 2; a.m_k = 5; a.m_j = 3; return 0;...
2019-11-10 13:39:22
105
原创 深度探索c++对象模型(五)
1. 虚继承的引入(解决访问二义性)class A{public: int m_a;};class B:public A{public: };class C :public A{public: };class D :public B, public C{public: };int main(){ D d; d.m_a = 5; //error...
2019-09-05 22:23:55
114
原创 深度探索c++对象模型(四)
单一继承下数据成员布局引入继承关系后,可能会带来内存空间的额外增加class A{public: int a; int b; char c; char d;};int main() { cout << sizeof(A) << endl; return 0;}结果:class A{public: int a; int...
2019-09-04 08:07:21
148
原创 六大高并发模型
文章目录1.多进程2.多线程3.线程池4.select、poll、epoll1.多进程缺点:启动和关闭子进程带来很大的开销系统创建线程有上限命令:ulimit -u简单实现2.多线程缺点:与多进程相似简单实现3.线程池基本思想:事先创建一定数量的工作线程,当任务队列中有任务时就唤醒阻塞等待的工作线程;用一个管理者线程来管理何时需要创建新线程、销毁多余线程。简单实现...
2019-08-28 19:31:01
691
原创 深度探索c++对象模型(三)
1. 验证vptr指针位置环境:vs2019结果2. 通过对象的vptr指针来手动调用虚函数结果注意点:若将类A中的虚函数改为private,运行结果相同。(不管公有还是私有,只要是虚函数,它的函数地址都会放在虚函数表vftable中)3....
2019-08-27 19:50:43
142
原创 线程同步技术——条件变量
条件变量一些注意点pthread_cond_wait函数虚假唤醒若条件变量条件产生只发生一次,确保在调用pthread_cond_signal或pthread_cond_broadcast函数之前,首先有线程调用pthread_cond_wait函数,确保条件变量信号不丢失。参考链接...
2019-08-17 16:08:47
90
原创 深度探索c++对象模型(二)
成员初始化列表何时必须使用成员是个引用成员是const类型继承的基类有一个有参的构造函数有类类型的成员变量,并且该类的构造函数带有参数注意:若该类的构造函数带有参数并且参数带有默认值,可以不用参数列表初始化列表的好处没用初始化列表初始化类类型成员变量结果使用初始化列表结果结论:提高效率注意点:初始化列表中变量的初...
2019-08-16 14:05:49
144
原创 深度探索c++对象模型(一)
vs调试技巧:F5调试F9加断点shift+F9 :查看变量内存地址1. 对象1.1 sizeof(空类)== 11.2 类的成员函数不占用 类对象 的内存空间1.3 静态成员变量属于类,不占用 类对象 的内存空间1.4 虚函数虚函数表一般是保存在可执行文件中的,在程序执行的时候载入到内存中来...
2019-08-16 14:05:35
152
原创 LeetCode典型题——字符串
1.常用方法to_string()atois.substr( size_type pos = 0, size_type count = npos )2. 题目class Solution {public: string countAndSay(int n) { string s = "1"; for(int i=2...
2019-08-08 17:03:41
278
原创 LeetCode典型题——递归与回溯
递归和回溯class Solution {public: vector<string> letterCombinations(string digits) { vector<string> ret; if(digits.length() == 0) return ret;...
2019-08-07 10:47:36
179
原创 LeetCode典型题——二分查找
目录1. 思想2. 模板题目1. 思想寻找一个标准,可以使原始数据具有两段性2. 模板情况一:按照某种性质将数据分为两类,target在后半部分若此时mid > target,则R = mid;否则L = mid + 1int bsearch_1(int l, int r){ while(l < r) { int mid...
2019-07-16 14:13:08
249
原创 剑指offer(五)
文章目录41. 和为S的两个数字42. 左旋转字符串43. 翻转单词顺序列44. 扑克牌顺子45. 圆圈中最后剩下的数46. 求1+2+3+…+n47. 不用加减乘除做加法48. 把字符串转换成整数49. 数组中重复的数字50. 构建乘积数组41. 和为S的两个数字a+b=sum,a和b越远乘积越小a+b=sum;a+n+b-n=sum;(a+n)(b-n)=ab+n(b-a)>...
2019-07-10 21:02:53
85
原创 剑指offer(四)
31.整数中1出现的次数32.把数组排成最小的数对数组进行排序排序规则:将int a, int b转为string若 a+b<b+a a排在在前class Solution {public: string PrintMinNumber(vector<int> numbers) { sort(numbers.beg...
2019-07-05 15:51:54
343
原创 剑指offer(三)
21. 栈的压入、弹出序列class Solution {public: bool IsPopOrder(vector<int> pushV,vector<int> popV) { int i = 0; int j = 0; for(; i<pushV.size(); i...
2019-06-27 15:15:18
201
原创 STL——容器
文章目录1. list2. vector3. deque3.1 push_back3.2 push_front3.3 重新配置map4. queue、stack1. list2. vector在扩容时会调用大量的拷贝构造函数、析构函数指向原vector的迭代器失效3. deque3.1 push_back3.2 push_front3.3 重新配置map配置更大的,...
2019-06-25 09:59:31
117
原创 LeetCode典型题——动态规划
class Solution {private: vector<int> memo; int breakInteger(int n){ if(n == 1) return 1; if(memo[n] != -1) return memo[n]; int re...
2019-06-23 17:18:52
214
原创 进阶算法04
无后效性问题:不管通过什么方式到达某个状态,其返回值都一样。1. 换钱的方法数暴力递归以arr = [5, 10, 25, 1],aim = 15为例:节点中的内容表示:从下标为[i~j]的数组中取任意张,可以换到aim的方法数class Solution{public: int coins(int *arr, int len, int aim)...
2019-06-23 17:17:25
256
原创 剑指offer(二)
11.二进制中1的个数class Solution {public: int NumberOf1(int n) { int ret = 0; for(int i=0; i<sizeof(int)*8; i++) //不能使用 while(n != 0) ...
2019-06-22 15:58:28
98
原创 UML
文章目录1.用例图泛化关系包含关系扩展关系2. 类图泛化关系实现关系依赖关系关联关系1.用例图泛化关系子用例指向父用例包含关系扩展关系偶尔会执行另外一个功能2. 类图+表示公有-表示私有#表示保护泛化关系类与类的继承关系实现关系类与接口之间的实现关系依赖关系Car被Person类中的成员函数作为参数使用关联关系Car作为...
2019-06-22 13:36:15
253
原创 剑指offer(一)
文章目录1.二维数组中的查找2.替换空格3.从尾到头打印链表1.二维数组中的查找解法1:class Solution {public: bool Find(int target, vector<vector<int> > array) { int m = array.size(); int n = array[0].si...
2019-06-19 20:48:11
118
原创 LRU实现
LRU(Least Recnetly Used)最近最少使用淘汰最长时间未被使用的页面思路:依次插入A,B,C:插入A:先从哈希表中查找到A的value,存储的是该节点的地址;在双端队列中将该A节点移到末尾插入D:取出head指向的节点,取出其中的key为B;删除head指向的节点,同时在哈希表中删除;将D插入到末尾class LRUC...
2019-06-16 20:04:05
422
原创 Net——EventLoopThread类
文章目录1. 作用2.成员变量3.测试用例 Reactor_test06.cc1. 作用创建了一个线程,并线程函数中创建了一个EventLoop对象2.成员变量3.测试用例 Reactor_test06.ccinclude <muduo/net/EventLoop.h>#include <muduo/net/EventLoopThread.h>#in...
2019-06-08 16:12:59
165
win7安装中文语言包
2020-02-25
算法笔记上机训练实战指南
2018-03-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人