const

主机性能监控系统--4,5.获取进程和应用程序信息

只愿长相守 提交于 2020-03-12 01:53:13
在做这个程序的时候发现,功能需求说明书里面的进程和应用程序信息是有关联的,所以,我就把这两个功能点合并起来做了。同样的,效果图先上: 如图所示,在应用程序这个功能点上,我们需要做的是,获取当前正在运行的所有可见的应用程序的标题和这个应用程序的当前状态;在进程的功能点上,我们需要获取系统中正在运行的所有进程,需要获取的数据包括:进程ID,进程名称,进程的CPU使用率,进程占用的内存大小,进程的可执行文件路径。 根据以往的做法,需要有一个类,命名为:ProcessInfo,类图如下: 需要说明的一点是,这个类我没有采用以往那种一大堆属性的做法,尝试着用结构体的做法,在这个类里面构造了两个结构体,分别是进程信息和应用程序信息的结构体,而且,在获取数据方面,没有采用以往的WMI的方法来获取,转而采用了.NET FRAMEWORK自带的Process这个类和Windows API来获取信息。在这个功能点上,我借鉴了园里lemony朋友的《 用C#开发较完整的Windows任务管理器 》 在此表示感谢。 由于调试的时间比较少,代码上可能会出现些BUG,还望各位见谅哈。 OK,开始上代码,首先是ProcessInfo这个类的代码 ProcessInfo using System; using System.Collections.Generic; using System.Linq; using

const真香

守給你的承諾、 提交于 2020-03-11 14:28:00
这个const,用着用着,竟不断发现它有许多长处,对它的好感度日渐攀升,觉得它有这般价值和意义,实在值得拥有一篇自己的专栏 1.用 const限定数据 本身可以避免不小心修改这个数据。 2.用const 限定指针 ,保证指针永远指向这个值。 比如,把1和2合并起来用 const char * const char months [ 12 ] = { "January" , "Februry" , "March" , "April" , "May" , "June" , "July" , "August" , "September" , "October" , "Novenmber" , "December" } ; 这个数组保护的特别周全,两道屏障,第1个const保证了数组是常量数组,元素都是常量,即不能通过这个指针来修改数组元素的值;第2个const保证了指针是const常量,即永远指向这个数组的第一个字符串 这种常量数组通常都是定义为 外部变量 即全局变量的,所有文件的函数都可以访问。 3.用 const形参 使函数可以处理const和非const数据,但是普通形参只能处理非const数据。 4.用 const引用 可以使得函数在传入的参数类型不匹配或者类型对但是是常量值时,生成匿名的临时变量作为引用变量,保证函数正确完成任务。所以 通常直接把引用形参声明为const 。 5

面试题3

二次信任 提交于 2020-03-11 12:55:30
#include <stdio.h> /// 1 4 7 /// ret -1 前查找 /// ret 0 找到 /// ret -1 后查找 int compare(const void* src, const void* tar) { int data = *((int*)src); } typedef int (*compare)(const void*, const void*); int find(const void* arry[], const int count, const int size, compare com_func, const void *target) { void* src; int head, tail, mid, ret; head = 0; tail = (count - 1); while (head < tail) { mid = ((head + tail) / 2); src = arry + (mid * size); ret = com_func(src, target); if (ret == 0) return mid; else if (ret < 0) tail = mid; else head = mid; } if (head == tail) { src = arry + (head * size); ret =

[C++面试题]之预处理、const与sizeof

。_饼干妹妹 提交于 2020-03-11 06:29:56
大四了,开始找工作了,发现很多公司软件开发类的笔试题都是考C++的,所以最近总结一下看到的一些题。 然而,预处理、const和sizeof问题是C++语言中的几个重点也是难点,也是各大企业不论是笔试还是面试都喜欢出的题型,下面是个人从网上和书籍中收集或总结的一点资料。希望能跟和我一样在辛苦找工作的同学们共同分享,也愿以下资料能帮到你找到合适满意的工作。 1、用预处理指令#define声明一个常数,用以表明一年中有多少秒(忽略闰年的问题) 解析: 1.#define语法的基本知识(例如,不能以分号结束,括号的使用等) 2.要懂得预处理器将为你计算常数表达式的值,因此,写出你是如何计算一年中有多少秒而不是计算出实际的值,会更好意义。 3.意识到这个表达式将使一个16位机的整型数溢出,因此要用到长整形符号L,告诉编译器这个常数是长整型数。 如果表达式中用到UL(表示无符号长整型),那么你就有了一个好的第一印象了,记住,第一印象很重要。 答案: #define SECONDS_PER_YEAR(60*60*24*365)UL 2、写一个“标准”的宏MIN,这个宏输入两个参数并返回较少的一个 解析: 1.标识#define在宏中应用的基本知识,这是很重要的,因为知道嵌入操作符变为标准C的一部分,宏都是方便地产生嵌入代码的唯一方法。对伊嵌入 式系统来说,为了能达到要求的性能

const、define与sizeof

风格不统一 提交于 2020-03-11 05:27:17
一.const的用途 1.定义const常量 2.可以修饰函数的形参,返回值,以及函数体。被const修饰的内容可以受到强制保护,防止被意外修改,提高程序健壮性。 const 返回值 函数返回值为 const 只有用在函数返回为引用的情况。 函数返回值引用常量表示不能将函数调用表达式作为左值使用。例如前面讲的返回引用的函数 min( )。 int & min ( int &i, int &j); 可以对函数调用进行赋值,因为它返回的是左值:min ( a , b )=4; 但是,如果对函数的返回值限定为 const 的:const int & min ( int & i, int &j ); 那么,就不能对 min ( a, b ) 调用进行赋值了。 二.const与define的不同 1.const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查,而对后者没有类型安全检查,只有字符替换,并且在字符替换过程中可能产生意想不到的错误(边际效应) 2.有些集成化的调试工具可以对const常量进行调试,但是不能对宏常量进行调试 三.在类数据成员前用mutable修饰,就可以在const函数中对其进行修改(可应用于对某些特殊成员变量进行修改,而大多数成员变量禁止被修改的情景) 四.sizeof 定义 :判断数据类型在内存中所占用的字节数 注意 : 当数据类型为指针时

由树的中后序遍历求树的前层序遍历

眉间皱痕 提交于 2020-03-11 05:11:51
题目意思言简意赅 输入:输入第一行给出一个正整数 N( ≤ 3 0),是二叉树中结点的个数。第二行给出其后序遍历序列。第三行给出其中序遍历序列。数字间以空格分隔。 eg:input: 7 2 3 1 5 7 6 4 1 2 3 4 5 6 7output:4132657注意这个树非常丑陋:      4     / \    1   6     \ / \     3 5 7     /    2           首先是先序排列:根据后序的最后一个可以找到根的位置,然后再根据根在中序里面搜索,分为左右子树 详情可以参考这篇题解 https://www.luogu.org/blog/user21653/solution-p1030 这个输入输出有点区别,但原理是一样的 1 #include <bits/stdc++.h> 2 using namespace std; 3 const int inf=1<<30; 4 typedef long long ll; 5 typedef pair<int,int> P; 6 const double pi=acos(-1); 7 const int mod=1e8+7; 8 const int maxn=140; 9 const int maxm=6300; 10 int a[maxn],b[maxn];//a存后序遍历,b存中序遍历

不要再问我跨域的问题了

↘锁芯ラ 提交于 2020-03-11 03:53:57
写下这篇文章后我想,要不以后就把这种基础的常见知识都归到这个“不要再问我XX的问题”,形成一系列内容,希望大家看完之后再有人问你这些问题,你心里会窃喜:“嘿嘿,是时候展现真正的技术了!” 一、 不要再问我this的指向问题了 跨域这两个字就像一块狗皮膏药一样黏在每一个前端开发者身上,无论你在工作上或者面试中无可避免会遇到这个问题。为了应付面试,我每次都随便背几个方案,也不知道为什么要这样干,反正面完就可以扔了,我想工作上也不会用到那么多乱七八糟的方案。到了真正工作,开发环境有webpack-dev-server搞定,上线了服务端的大佬们也会配好,配了什么我不管,反正不会跨域就是了。日子也就这么混过去了,终于有一天,我觉得不能再继续这样混下去了,我一定要彻底搞懂这个东西!于是就有了这篇文章。 要掌握跨域,首先要知道为什么会有跨域这个问题出现 确实,我们这种搬砖工人就是为了混口饭吃嘛,好好的调个接口告诉我跨域了,这种阻碍我们轻松搬砖的事情真恶心!为什么会跨域?是谁在搞事情?为了找到这个问题的始作俑者,请点击 浏览器的同源策略 。 这么官方的东西真难懂,没关系,至少你知道了,因为浏览器的同源策略导致了跨域,就是浏览器在搞事情。 所以,浏览器为什么要搞事情?就是不想给好日子我们过?对于这样的质问,浏览器甩锅道:“同源策略限制了从同一个源加载的文档或脚本如何与来自另一个源的资源进行交互

js数组去重(最优方法)笔记

被刻印的时光 ゝ 提交于 2020-03-11 01:50:41
资料: js 世界-数组去重到底最快的是谁? Remove duplicate values from JS array [duplicate] 大致思路 遍历数组的各个项并判断某项是否重复。时间复杂度往往是 O(n^2) 优化:通过object,或者set,借助散列表查找的优秀性能来降低复杂度 下面记录几种方法 去重的是单一基础类型(number)可以用 遍历 + obj-keys 如果有多类型的话,可能会出现 1 和 字符串'1' 被认为是重复的问题 function merge2Array5(origin) { const result = []; const tagObj = {}; for (const i of origin) { if (!tagObj[i]) { result.push(i); tagObj[i] = 1; } } return result; } 去重的是多种基础类型 用 for + set function merge2Array6(origin) { const result = []; const set = new Set(); for (const i of origin) { if (!set.has(i)) { result.push(i); set.add(i); } } return result; } 代码量少的写法 //

C++并发编程(附录A)[ constexpr-04]

匆匆过客 提交于 2020-03-11 00:59:07
author: luixiao1223 title: 附录A A.4 constexpr functions const const int i=23; const int two_i=i*2; const int four=4; const int forty_two=two_i-four; Specify the bounds of an array: int bounds=99; int array[bounds]; //Error const int bounds2=99; int array2[bounds2]; Specify the value of a nontype template parameter template<unsigned size> struct test {}; test<bounds> ia; // Error test<bounds2> ia2; Provide an initializer for a static const class data member of integral type in the class definition: class X { static const int the_answer=forty_two; }; Provide an initializer for a built-in type or

【软工】个人项目作业——个人软件流程(PSP)

房东的猫 提交于 2020-03-10 19:01:53
【软工】个人项目作业——个人软件流程(PSP) 项目 内容 班级:北航2020春软件工程 006班(罗杰、任健 周五) 博客园班级博客 作业:设计程序求几何对象的交点集合 个人项目作业 个人课程目标 系统学习软件工程,训练软件开发能力 这个作业在哪个具体方面帮助我实现目标 实践个人软件开发流程(PSP) 项目地址 GitHub: clone/http 个人软件流程(PSP) PSP2.1 预估耗时(分钟) 实际耗时(分钟) Planning 20 20 · Estimate 20 20 Development 310 530 · Analysis 30 90 · Design Spec 10 30 · Design Review 10 10 · Coding Standard 10 10 · Design 40 90 · Coding 120 120 · Code Review 30 30 · Test 60 150 Reporting 50 50 · Test Report 20 20 · Size Measurement 10 10 · Postmortem & Process Improvement Plan 20 20 In Total 380 600 最终完成整个项目的时间远远超出了我的预计,其中与预期严重不符的项包括:分析需求、设计和测试。其中