自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

FlushHip

现在的自己不开心也不难过,只为寻求心灵上的一丝成就感。

  • 博客(301)
  • 资源 (6)
  • 论坛 (3)
  • 问答 (1)
  • 收藏
  • 关注

原创 2021计算机考研408计算机学科专业基础综合冲刺复习提纲

背景我是2020年8月份中旬开始复习的,快考试的时候整理出来的这篇文档,本意是帮助自己冲刺复习用的,再加上我是计算机科学与技术专业的,所以很多知识平时都要用到,所以对我来说,需要了解的东西就会少很多,下面这些内容是我觉得需要注意的,原文档我放在GitHub上:408冲刺复习提纲.md,大家如果有补充可以提PR,能帮助到有需要的人就最好了。复习不易,大家加油。数据结构KMP算法,next数组:对应位置前缀和后缀的最长公共部分长度排序排序算法关键字比较次数与原始序列无关:简单选择排序、二分插入排

2021-01-04 13:10:37 115

原创 聊聊C++标准库,准标准库中关于时间的概念和用法

概要在实际C++业务开发中,经常需要使用系统API或者标准库去获取时间,计算时间的需求,其中,时间按概念又分时间段,时间点;按表达形式又分系统时间,本地时间;其实,获取到了时间,如何通过日志的方式把时间恰当表现出来。而我这边使用Windows下开发较多,因此,这里主要介绍Windows和标准库及Boost准标准库关于时间的相关概念和用法。标准库打开标准库关于时间的命名空间chrono https://en.cppreference.com/w/cpp/chrono可以看到三个概念:clock

2020-07-23 13:20:31 433

原创 Windows下C++得到一个空闲的端口API

这个东西,并不太常用,客户端弄一个Tcp连接,也不需要你去指定端口,系统会自动找一个空闲的端口给你;但是,如果在服务器端,手动得到一个空闲端口是很重要的,毕竟这个端口要固定,因此需要你自己指定一个空闲的端口。那么在Windows下,如何利用C++得到一个空闲的端口呢,答案是Windows的API。要用的Windows系统API如下:#include <tcpmib.h>#in...

2020-05-20 16:45:16 1958

原创 Windows下C++动态监测网络变化(对标Windows网络托盘图标)

背景把Windows网络托盘小图标移植到应用程序中来。使得应用界面显示网络状态,状态包括无网络、有线网、无线网(需要显示WiFi信号强度)方案动态监测托盘图标变化(没有采用)动态监测网络状态变化(利用Windows的API和COM接口,也可以采用轮询)问题点获取Windows网络的活动连接列表获取活动连接的网络适配器类型注册网络状态变化的通知,避免轮询获取WiFi信号强度...

2020-05-20 16:44:56 2102 3

原创 Windows中文件和文件夹的链接类型(快捷方式、软链接、硬链接、符号链接)

链接四大类型There are three types of file links supported in the NTFS file system: hard links, junctions, and symbolic links.快捷方式软链接硬链接符号链接快捷方式(Shortcut)A Shell link is a data object that contai...

2020-05-20 16:44:28 1345 1

原创 Windows获取本地安装软件详细信息(对标卸载程序控制面板)

背景在做C++客户端的一些业务时,需要采集本地计算机上已经安装的软件,上传至云端,供后台做数据分析,数据展示等功能,这里需要对标控制面板中的卸载程序列表,做到采集到的软件列表中的信息和控制面板中的保持一致。控制面板中的信息结构名称发布者安装时间版本大小获取信息的方式注册表WMI这里推荐使用注册表,WMI貌似不能完全对标上控制面板中的软件列表。不过可以了解下WMI是怎...

2020-03-02 18:23:00 1192

原创 C++中操控器Manipulator控制IO格式浅析
原力计划

背景对于从C语言过渡到C++的筒子来说,输出流的格式控制是个头痛的事,printf的字符串格式控制不香吗?确实香,很多C++的开源类库都实现了printf的格式控制,函数签名大概类似Format(const std::string &, ...),甚至其他语言都借鉴了printf这种格式控制方式。而C++的输入输出是基于流的方式,类似于std::cout << "Flush...

2020-02-26 12:46:21 277 1

原创 Visual Studio远程调试Windows上C++程序的几种方式

背景远程调试(Remote Debugging)的原理可以见下图:可以看到,远程调试是通过网络进行通信(使用TCP协议)的,将远程程序的运行信息和Visual Studio的控制信息通过网络互传。如果一些特殊的BUG发生在没有网络的情况下,那么远程调试就派不上用场了。其次,远程调试需要在被调试的目标机器上部署一个程序(Remote tools),这个程序msvsmon.exe的版本必须要和...

2020-01-19 10:10:17 1754 1

原创 IsDebuggerPresent和DebugBreak在Windows项目中的应用

首先要从一篇文档说起,https://docs.microsoft.com/zh-cn/windows/win32/debug/basic-debugging,这篇文档介绍了Windows调试的相关内容,比如相关的调试术语Debugging Terminology,可以看一下,举个例子,为什么调试器可以动态修改变量的值,这里Process Functions for Debugging就给出了解释...

2019-12-03 18:45:31 297

原创 LoadLibrary下错误返回126错误码排查过程

在开发一些Windows下的应用程序过程中,经常会手动加载一些DLL,使用的就是LoadLibrary这个函数,而这个函数一旦失败,返回的错误码基本都是126,126错误码的意思是找不到指定的模块,这不,我就遇到了这个问题,而且挺诡异的,就是Debug模式下一点问题没有,Release模式下就必出这个错误码。先介绍下问题的环境,一个应用程序需要加载一个IoT模块的DLL,这个DLL又依赖了一些D...

2019-07-21 13:02:26 5039

原创 线段树浅析及其指针式C/C++写法

hihocoder 19 - 22线段树节点的数据结构typedef struct Node { int data; Node *lchs, *rchs; Node (int data = 0, Node *lchs = nullptr, Node *rchs = nullptr) : data(data), lchs(lchs), rchs(r...

2019-04-23 16:33:40 373

原创 C++实现URL的UTF8转码

urlurlurl不能出现中文,导致不能传输中文数据,解决方法有下面两个:统一使用base64base64base64转换一下;把中文用UTF-8存储,然后对其进行可视化编码,这也是浏览器的做法。先来看下,一条urlurlurl在浏览器中会被转化成什么样,可以用在线的网址转一下。before :https://blog.csdn.net/FlushHip?type=1&amp;nam...

2019-03-15 17:11:26 1089 1

原创 从一道多线程题来看C++11中条件变量std::condition_variable的使用和原理

现在有一道笔试题是下面这样子的。有两个线程,一个线程循环输出A,另一个线程循环输出B,如何让这两个线程在控制台稳定输出ABABAB…。不用思考太多,我们肯定会定义一个标志变量isTurnA,isTurnA为true输出A,同理输出B,这是一种最简单的有限状态机,只要按照这个状态机进行,那么肯定能答应出答案。isTurnA是共享数据,因此用原子变量或者互斥锁来保护,这里用互斥锁std::mu...

2019-03-07 17:26:01 308

原创 利用googletest命令行参数简化单元测试

首先看看gtest如何写:#include &lt;gtest/gtest.h&gt;int main(int argc, char **argv){ testing::InitGoogleTest(&amp;argc, argv); return RUN_ALL_TESTS();}TEST(main, minor){}可以看到,main中的命令行参数传入了g...

2019-02-26 18:05:35 2443

原创 小米OJ - 灯 - 仔细分析找规律

题目描述链接:Here。一个屋子有 nnn 个开关控制着 nnn 盏灯,但奇怪的是,每个开关对应的不是一盏灯,而是 n−1n-1n−1 盏灯,每次按下这个开关,其对应的 n−1n-1n−1 盏灯就会由亮变灭,或者由灭变亮。保证不会有两个开关控制同样的 n−1n-1n−1 盏灯。现在刘同学想把灯全部开好,但是这些灯一开始的状态非常乱,刘同学想知道最少需要按多少次开关才能使所有灯全部亮起。输入...

2019-02-15 16:22:35 479 1

原创 小米OJ - 找到第 N 个数字 II - 等差数列求和及其通项然后二分

题目描述链接:Here。假如有一组字符串符合如下规律:S1=1S2=12S3=123S4=1234⋯S9=123456789S10=12345678910⋯S18=123456789101112131415161718 \begin{array}{}S_{1} =1\\S_{2} =12\\S_{3} =123\\S_{4} =1234\\\cdots \\S_{9} =123...

2019-01-25 12:19:48 719 1

原创 聊聊C++标准库中优先队列priority_queue的源码

C++标准库提供了优先队列priority_queue,顾名思义,就是可以按照优先级出队的队列,而且时间复杂度为O(logn)O(logn)O(logn),算法中有很多优化项就是用优先队列来优化的。C++11的标准库是怎么构造出优先队列的呢?优先队列是用堆来构造的。所以,优先队列其实并不能叫队列,它的完整定义应该是这样的:优先队列是用堆来构造,包装成队列的适配器。其实想一想,堆确实适合构造优先...

2019-01-02 20:47:33 986

原创 聊聊C++11标准库中堆(heap)算法的源码

STL中支持堆操作,对外暴露了`std::make_heap`,`std::push_heap`,`std::pop_heap`,`std::sort_heap`,`std::is_heap`,`std::is_heap_until`这6个函数,详细的使用方法可以参见[图解STL中算法的分类、简介及其Demo](https://blog.csdn.net/FlushHip/article/details/82858933#t37)。

2018-12-29 16:25:21 1022

原创 2019年全国研究生入学考试计算机学科专业基础综合(408)数据结构编码题

有一个带头节点的单向链表(a1,a2,…,an−1,an)(a_1, a_2,\dots,a_{n-1},a_n)(a1​,a2​,…,an−1​,an​),nnn为偶数,使用空间复杂度为O(1)O(1)O(1)的算法使其变成(a1,an,a3,an−2,…,a4,an−1,a2)(a_1, a_{n},a_3,a_{n-2},\dots,a_4,a_{n-1},a_2)(a1​,an​,a3​,...

2018-12-25 14:15:37 7375 9

原创 Windows/Linux下C++对于UUID的跨平台封装

Universally Unique Identifier,UUID,通用唯一识别码。是用于计算机体系中以识别信息数目的一个128位标识符,这个东西很有用,在分布式系统中经常用于标识一个结点。根据标准方法生成,不依赖中央机构的注册和分配,UUID具有唯一性,这与其他大多数编号方案不同。重复UUID码概率接近零,可以忽略不计。UUID是128位,16个字节,可以用32个HEX进制的数字表示。标准的...

2018-12-19 16:29:28 2441 1

原创 Windows下C++程序实现单例运行

在Windows下,有些程序是需要单例运行的,比如QQ和Wechat吧。QQ可以打开多个Wechat只能打开一个可以自己在Windows下点一点就知道了。那么在Windows下如何实现单例运行呢?这个单例运行和代码的单例设计模式是不是一个东西呢?一一来回答。首先单例模式和这个肯定是不一样的,单例设计模式解决的是在一个进程中只能有一个类实例问题;而程序单例运行是值系统中只能运行该程序的...

2018-12-17 19:36:38 1319

原创 Go利用windres.exe和.rc文件在Windows下生成的程序带有版本、版权、产品名称、图标等属性信息

用Go在Windows下写了一个.exe的程序,这个程序默认是不带版本,版权,产品名称以及图标的,因此,这些东西我们要自己去生成。Go对于程序版本这方面已经有了开源的包,见GitHub - https://github.com/josephspurrier/goversioninfo。你可以自己在Go的代码中引入这个包,并且在生成.syso文件,这样子是可以的。既然提到了.syso,那么可以...

2018-12-13 12:22:18 2465 1

原创 C++中实现HMAC单向散列类

HMAC的维基百科解释是:hash-based message authentication code,其实就是加了盐的单向散列算法。而HMAC的重点就是如何给要散列的数据加盐。加盐公式如下:解释一下上面的符号:⊕\oplus⊕表示异或运算;mmm表示要散列的数据;a∣∣ba || ba∣∣b表示把aaa加入bbb,其实就是用散列算法把aaa算一下,紧接着把bbb算一下;ipadi...

2018-12-05 14:34:28 976

原创 Windows关机重启API封装

这纯属记录下代码,Windows系统在程序中关机和重启电脑。大体上就是两个步骤:- 拿关机权限- 关机需要注意的点,一定要在`ExitWindowsEx`中加上`EWX_FORCE`参数,不然,在Windows锁屏界面下是关不了机或者重启不了的。

2018-11-30 16:15:40 866

原创 C++中std::string与C-String字符数组的互相转换

C语言中只有字符数组这一说法,没有C++专门封装的字符串类std::string。而字符数组C-String以\0作为结束符。std::string其实还是存储了C-String这个指针,只不过不同的编译期对std::string中的存储结构都做了不同的处理,这里我们不讨论std::string的实现,只关心一件事,那就是C-String和std::string的相互转换。C-String 2 ...

2018-11-27 14:30:00 4227

原创 招商银行信用卡中心2019秋招IT笔试(AI、开发、测试开发方向)第二批

X游戏题目我们称一个数 X 为好数, 如果它的每位数字逐个地被旋转 180 度后,我们仍可以得到一个有效的,且和 X 不同的数。要求每位数字都要被旋转。如果一个数的每位数字被旋转以后仍然还是一个数字, 则这个数是有效的。0, 1, 和 8 被旋转后仍然是它们自己;2 和 5 可以互相旋转成对方;6 和 9 同理,除了这些以外其他的数字旋转以后都不再是有效的数字。现在我们有一个正整数 N, ...

2018-11-19 22:32:07 2592

原创 招商银行信用卡中心2019秋招IT笔试(AI、开发、测试开发方向)第三批

员工考勤记录题目给定一个字符串来代表一个员工的考勤纪录,这个纪录仅包含以下两个字符:‘A’ : Absent,缺勤‘P’ : Present,到场如果一个员工的考勤纪录中不超过两个’A’(缺勤),那么这个员工会被奖赏。如果你作为一个员工,想在连续N天的考勤周期中获得奖赏,请问有多少种考勤的组合能够满足要求输入描述:考勤周期的天数N(正整数)输出描述:这N天里能获得奖赏的考勤组合...

2018-11-19 12:09:41 4639 2

原创 招商银行信用卡中心2019秋招IT笔试(AI、开发、测试开发方向)第一批

鸡鸭分类问题题目农场有n只鸡鸭排为一个队伍,鸡用“C”表示,鸭用“D”表示。当鸡鸭挨着时会产生矛盾。需要对所排的队伍进行调整,使鸡鸭各在一边。每次调整只能让相邻的鸡和鸭交换位置,现在需要尽快完成队伍调整,你需要计算出最少需要调整多少次可以让上述情况最少。例如:CCDCC-&amp;amp;amp;amp;amp;amp;amp;gt;CCCDC-&amp;amp;amp;amp;amp;amp;amp;gt;CCCCD这样就能使之前的两处鸡鸭相邻变为一处鸡鸭相邻,需要调整队形两次。输入

2018-11-19 00:10:17 4633 2

原创 聊聊实现C++跨平台ping函数及ICMP请求回显数据包解析

ping我们经常使用,大多数的时候是在命令行ping下IP地址,然后一堆输出。程序中有时候也会用ping函数,那么ping是如何实现的呢。计算机网络告诉我们,ping函数是基于ICMP协议实现的,而ICMP协议又是基于IP协议弄的(ICMP作为IP协议的数据部分传输)。ping通过ICMP协议中的类型8和代码0来搞的,这个类型和代码的组合在ICMP协议中表示请求回显。如果能正常回显,那么返回...

2018-11-12 17:26:59 1358

原创 Windows/Linux中C++对于系统函数发生错误时的调试方法(调试Windows/Linux下创建原始socket失败返回-1)

调用系统API时,经常会由于操作不当导致系统函数调用发生错误,而系统API也是比较友好的,会给你一些特殊的返回值,普遍返回-1,同时,会设置一些变量,表示错误类型。在Windows中,调用GetLastError,可以得到最近的调用失败的错误码;在Linux中,“全局变量”errno记录了最近调用失败的错误码。这里纠正一下,errno其实并不是全局变量,errno的作用是thread local...

2018-11-12 16:02:57 714

原创 快手2019秋季校园招聘算法笔试B卷编程题 - 题解

快手算法笔试题,一个签到题,一个动态规划,一个二分答案。其中二分答案有个数据有问题。题目链接:点这儿。字符串排序题目月神拿到一个新的数据集,其中每个样本都是一个字符串(长度小于100),样本的的后六位是纯数字,月神需要将所有样本的后六位数字提出来,转换成数字,并排序输出。月神要实现这样一个很简单的功能确没有时间,作为好朋友的你,一定能解决月神的烦恼,对吧。输入:每个测试用例的第一行是...

2018-11-07 20:31:12 2952 1

原创 快手2019秋季校园招聘算法笔试A卷编程题 - 题解

快手算法笔试题,两个动态规划,一个签到题。数据太恶心了,魔法深渊那题,没给模,后来是我自己根据结果猜出来的,模是100000000310000000031000000003,居然还不是常规的100000000710000000071000000007;善变的同伴那题,应该是卡常数了,而且代码一会过一会不过。。。题目链接:点这儿。魔法深渊题目前几个月放映的头号玩家简直火得不能再火了,作为一个...

2018-11-07 14:31:01 6708 1

原创 聊聊C++跨类通信机制之消息总线及其实现

如果没有怎么写过项目,更确切地说是没有用面向对象的语言写过项目。就不会明白跨类通信这个需求是多么刚需。为什么要跨类通信?把所有的逻辑都写在一个类中,都是一家人,那就不需要通信了啊。是,确实是这样,当功能不是很多的时候,这样做确实好。但是,随着项目的规模增大,各种功能堆积,各种模块的增加,会使得这个类非常臃肿与庞大。臃肿庞大就意味着不好维护和扩展。因此,我们需要把功能划分出来,把模块划分得细一些...

2018-11-06 18:02:53 1480 2

原创 360公司2017春季招聘编程题 - 题解

做了这么多的笔试编程题,觉得这次的笔试题很有质量,两个动态规划,其中一个还是一个简单的区间动态规划(笔试几乎不考,不是说”最难不过二叉树”吗)。原题链接:点这儿.第一题:分金子题目: A、B两伙马贼意外地在一片沙漠中发现了一处金矿,双方都想独占金矿,但各自的实力都不足以吞下对方,经过谈判后,双方同意用一个公平的方式来处理这片金矿。处理的规则如下:他们把整个金矿分成n段,由A

2018-11-03 23:07:23 718 1

原创 聊聊C++任务定时器的设计与具体实现

在项目中,经常会遇到这种场景:在特定的时间点去执行一些任务,这就是定时任务。如何实现定时任务呢?如果不用任何技巧,我们可以把当前线程睡一睡,睡到特定的时间点再起来执行特定任务。看起来是解决了这个问题,但是,如果在睡一睡的这个过程,我还想执行一些其他的任务,怎么办?好像也可以解决,开一条新的线程去睡;如果在睡的过程中我不想再执行这个任务了,怎么办,直接中断线程?C++11没有这个机制,虽然这个机制...

2018-11-03 22:29:10 5998 11

原创 Windows利用WTS API获取锁屏状态

下面的这个函数可以获取Windows是否处于锁屏状态:代码来自stackoverflow,C++: check if computer is locked。#include &lt;Windows.h&gt;#include &lt;WtsApi32.h&gt;bool IsSessionLocked(){ typedef BOOL(PASCAL * WTSQuerySessi...

2018-10-18 09:21:48 2139 1

原创 数据结构经典例题解析C/C++代码实现(二)

第一题题目编一C程序,它能把读入的整数依次插入到一个初始为空的二叉排序树中,一直读到-9999为止(-9999不插入该二叉排序树)。输出该二叉排序树的前序序列、后序序列及叶结点的个数。(输入时,两个相邻的整数用空格隔开)。解析C语言C++第二题题目编一C程序,它能对输入的一串整数(不多于1000个,以-9999为结束标记)到数组a中,再对a的元素进行直接插入排序(从小...

2018-10-13 11:08:24 558

原创 数据结构经典例题解析C/C++代码实现(一)

考研需要吧,虽然挺基础的,但是还是要练习下的,而且,还可以帮助一些其他同样需要这些代码的朋友。第一题题目编一C程序,它能根据读入的数据构造有向图G,并输出G的邻接矩阵及G的拓扑序列。图的输入形式为 i0&amp;amp;amp;ThickSpace;j0&amp;amp;amp;ThickSpace;i1&amp;amp;amp;ThickSpace;j1&amp;amp;amp;ThickSpace;i2&amp;amp;amp;ThickSpace;j2

2018-10-13 09:13:27 1571

原创 Linux/Windows下C++设置线程名字方便多线程调试

C++多线程编程,调试是一个大问题,原因之一就是,线程名字继承了父进程的名字,因此导致同一段代码的不同线程名字一样;而且还会导致线程的名字怪怪的,不好看。因此,如果在代码中可以设置线程的名字就好了,这样在调试中就可以看到期望的线程名字,这样便于调试。由于编写跨平台代码,因此,线程设置名字对Windows和Linux来说都很重要,这里分别来讲下。Windows在Visual Studio调试...

2018-10-12 11:12:51 3290

原创 Windows下C++调用系统软键盘及其需要注意的点

Windows下系统软键盘的程序名是osk.exe,系统软键盘在有键盘的时候一点用都没有,但是没有键盘的时候想要输入点东西,系统软键盘就至关重要了。osk.exe为微软系统自带的虚拟键盘程序,功能与真的键盘差不多.只需要在运行中输入"osk"即可启动虚拟键盘。Window8开始,Windows开始采用扁平化设计,还有一个系统软键盘叫TabTip.exe,这个待会再说。先来看看这两个软键盘在...

2018-10-11 13:07:57 5713

滴滴出行2017秋招笔试真题-编程题汇总 - 题解

滴滴出行2017秋招笔试真题-编程题汇总 - 题解 滴滴的题考经典算法比较多啊,两道经典动态规划,一道经典搜索题,一道编程之美原题(听别人说是编程之美上的,自己并不清楚),两道水题.

2017-10-31

蘑菇街2016研发工程师在线编程题 - 题解

蘑菇街2016研发工程师在线编程题 - 题解 个人的解答,不喜勿碰.

2017-10-03

2017CSUFT第十届ACM程序设计大赛

题目、题解、数据、代码都有

2017-05-21

gdb官方使用手册

2016-12-01

凸包做题模板

POJ上做的一个凸包的题,可作为凸包的模板。

2016-03-19

CSUFT_ACM日常上课安排

提供我们协会日常上课安排

2016-03-19

FlushHip的留言板

发表于 2020-01-02 最后回复 2020-01-02

FFT求解两个集合中各元素相乘然后相加的最大和

发表于 2016-09-24 最后回复 2019-12-22

请管理员帮我恢复下被删除的博客,谢谢谢谢

发表于 2017-12-14 最后回复 2018-11-13

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除