C++
文章平均质量分 78
sesiria
这个作者很懒,什么都没留下…
展开
-
Windows10 + Nodejs调用C++语言Dll
一、安装环境首先需要安装nodejs环境安装NodeJS解释器:https://nodejs.org/dist/v14.17.1/node-v14.17.1-x64.msi需要安装ms_build环境,因为node14需要匹配VS2015。执行一下命令:C:Windows\System32\>npm install --global --production windows-build-tools --vs2015等待几分钟安装需要的环境经过实验,不需要额外安装MSB原创 2021-06-24 09:27:37 · 1894 阅读 · 0 评论 -
动态规划-背包问题
背包问题是一种组合优化的NP完全问题。有N个物品和容量为W的背包,每个物品都有自己的体积w和价值v,求拿哪些物品可以使得背包所装下的物品的总价值最大。如果限定每种物品只能选择0个或1个,则问题称为0-1背包问题;如果不限定wu'pi...原创 2021-06-17 08:51:41 · 2406 阅读 · 3 评论 -
Windows 应用生成MiniDump文件的方法笔记
Windows应用在yu// 创建Dump文件 void CreateDumpFile(LPCTSTR lpstrDumpFilePathName, EXCEPTION_POINTERS *pException){ HANDLE hDumpFile = CreateFile(lpstrDumpFilePathName, GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL); // Dump信息 MINID原创 2021-06-03 14:45:26 · 1461 阅读 · 0 评论 -
数据流压缩之应用篇zlib库
关于数据流压缩的原理,lz77以及huffman编码可以参考上一篇:https://blog.csdn.net/sesiria/article/details/116835301本篇将包含以下内容:1. gzip格式分析2. zlib库函数API分析3. zlib库实战(压缩和解压文件)gzip格式采用deflate算法来实现数据的压缩一、deflate采用了改进版的lz77算法即:三个字节以上重复才进行编码,否则不进行编码;即对滑动窗口进行查询的时候最短的匹配大..原创 2021-05-23 17:58:29 · 2566 阅读 · 2 评论 -
数据流压缩原理实现(huffman编码,LZ77压缩算法)
1. 压缩原理deflate算法 a) LZ77 算法原理 b) Huffman算法原理 c) Huffman算法测试实例2. gzip格式分析3. zlib库函数API分析4. zlib库实战(压缩和解压文件)一、数据压缩的原理规则压缩:已知数据的排列组合模式,通过抽象用数学公式来表示。比如矢量图,3D模型的顶点数据等。对于未知规则的数据:则是采用一种更高效的编码来代替原有数据的编码。一种方法是找出数据中那些重复出现的字符串,然后用更短的符号代替...原创 2021-05-23 09:07:14 · 6465 阅读 · 2 评论 -
哈希表与布隆过滤器
一,背景问题1.在使用Word文档的时候,word是如何判断某个单词是否拼写正确的?2.网络爬虫程序,怎么让它不去爬相同的URL页面?通过哈希表来查询(时间复杂度O(1))3. 缓存穿透问题如何解决?*描述缓存场景,为了减轻落盘数据库(mysql)的访问压力,在server端与mysql之间加入一层缓冲数据层(用来存放热点数据);*缓存穿透发生的场景是server端向数据库请求数据时,缓存数据库(redis)和落盘数据库(mysql)都不包含该数据,数据请求压力全部涌向落盘数据库原创 2021-04-19 22:37:54 · 810 阅读 · 0 评论 -
Algorithm: Maximum Flow Problem
reference 【Introduction to Algorithm Chapter 26】Problem SettingWe wish to compute the greatest rate at which we can ship material from the source to the sink without violating any capacity constra...原创 2021-04-05 22:53:21 · 574 阅读 · 0 评论 -
C++ 后端开发工程师的技术栈整理
C++ 后台开发岗位知识技能树一、语言:a)C/C++ 语言,对象生命周期,垃圾回收,标准库,错误与异常的处理,日志,面向对象的理解,设计模式,GDB的使用,代码高内聚低耦合二、数据结构与算法:a)线性表:链表,队列,栈b)树:二叉树,红黑树,字典树,线段树等c)图:图搜索,dijkstra算法,最小生成树d)递归e)排序:希尔,归并,快排,堆排序,桶排序f)算法:贪心,动态规划g)跳表,散列表,布隆过滤器三、数据库a)持久型mySqli.MySql安装与配置ii原创 2021-04-04 22:55:12 · 6662 阅读 · 3 评论 -
Disjoint Union Set 并查集
Equations are given in the format A / B = k, where A and B are variables represented as strings, and k is a real number (floating point number). Given some queries, return the answers. If the answer d...原创 2019-12-11 14:28:43 · 395 阅读 · 0 评论 -
C++并发编程之读写锁(C++17)
STL 和 Boost 都提供了 shared_mutex 来解决「读者-写者」问题(必须使用C++17或者后续版本)。shared_mutex 这个名字并不十分贴切,不如 pthread 直呼「读写锁」。所谓「读写锁」,就是同时可以被多个读者拥有,但是只能被一个写者拥有的锁。而所谓「多个读者、单个写者」,并非指程序中只有一个写者(线程),而是说不能有多个写者同时去写。下面看一个计数器的例...原创 2019-10-19 09:09:38 · 3083 阅读 · 0 评论 -
C/C++浮点数的存储方式 IEEE-754标准,以及实现一个ftoa函数将浮点数转换为字符串
浮点数的存储格式转载自 :http://www.cnblogs.com/dolphin0520/archive/2011/10/02/2198280.html C/C++浮点数在内存中的存储方式 任何数据在内存中都是以二进制的形式存储的,例如一个short型数据1156,其二进制表示形式为00000100 10000100。则在Intel CPU架构的系统中...原创 2019-10-14 11:44:44 · 4010 阅读 · 0 评论 -
将输入字符串中的空格替换为指定字符串
假设输入的字符串还有足够的空间,将输入串内的空格替换为%20例如:输入: “Mr John Smith ”, 13输出: “Mr%20John%20Smith”采用队列实现该算法,空间复杂度最大O(n), 最好O(1)时间复杂度O(n)代码如下:#include <iostream>#include <string>#inclu...原创 2019-07-12 07:46:16 · 740 阅读 · 0 评论 -
打印整数列a^3 + b ^ 3 = c ^ 3 + d ^ 3
Print all positive solutions ot the equationa^3 + b ^ 3 = c ^ 3 + d ^ 3 where a , b, c, and d are integers between 1 and 1000.optimized solution: by c++#include <iostream>#include &...原创 2019-07-06 22:05:27 · 327 阅读 · 0 评论 -
一个神奇的数据结构
Linklist HashTablehttps://github.com/ez8-co/linked_hash/blob/master/linked_hash.hpp今天在群里有一位群友分享了一个数据结构。通常大家都会使用到数据结构链表。但是链表由于不具备常数级的查找复杂度,有时候需要借助hashTable来做索引方便查找。这常用与缓存中。(其实,队列,二叉树这些都可以借助哈希表来提高其常数级的查...原创 2018-04-13 15:16:54 · 578 阅读 · 0 评论 -
数据结构 - 链表的合并
今天有童鞋在群里问怎么合并两个有序链表。尝试写了一下,递归方式比较直观而且不容易出错,非递归的话代码可读性差一点而且也容易写错。这里提供一下主要代码。注意:如果是双向链表会更加复杂需要同时维护每个节点的两个指针,为了避免出错。双向链表强力建议增加头尾的哨兵节点。定义一个链表的节点如下:template <typename Comparable>struct Node { Compa...原创 2018-04-18 10:47:38 · 3115 阅读 · 0 评论 -
Windows API 下载http文件
打开http链接下载文档流程。#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <tchar.h>#include <windows.h>#include <wininet.h>#include <string>//加入连接库#pragma comment(...原创 2018-03-29 13:30:11 · 2934 阅读 · 1 评论 -
《Data Structure And Algorithm Analysis In C++》读书笔记六
Chapter 6 Priority Queues(Heaps)* Efficient implementation of the priority queue ADT.* Use of priority queues.* Advanced implementations of priority queues.6.1 Modelpriority queue ADT interface:insert...原创 2018-04-12 13:02:02 · 462 阅读 · 0 评论 -
一个打印目录树的例子
输入一个多行的字符串,表示目录树。对其进行解析,并按层次结构打印出目录/** n_number_sum_equal_m.cpp**/#include<iostream>#include <map>#include <string>#include <vector>#include <string.h>#include ...转载 2018-03-14 14:46:22 · 997 阅读 · 0 评论 -
Algorithms : Trapping Rain Water II
The problem is from leetcode 407.https://leetcode-cn.com/problems/trapping-rain-water-iiGiven an m x n matrix of positive integers representing the height of each unit cell in a 2D elevation map, ...原创 2019-09-06 14:52:29 · 207 阅读 · 0 评论 -
《Data Structure And Algorithm Analysis In C++》读书笔记五
Chapter5 HasingHasing, intertions, deletions, and finds in constant average time.findMin, findMax and print in sorted order are not supported.* See several methods of implementing the hash table.* Com...原创 2018-04-09 17:02:00 · 509 阅读 · 0 评论 -
转:字典树(前缀树)
转载自:https://blog.csdn.net/weixin_39778570/article/details/81990417什么是字典树?叫前缀树更容易理解字典树的样子Trie又被称为前缀树、字典树,所以当然是一棵树。上面这棵Trie树包含的字符串集合是{in, inn, int, tea, ten, to}。每个节点的编号是我们为了描述方便加上去的。树中的每一条边上都标识...转载 2019-08-06 22:12:18 · 170 阅读 · 0 评论 -
Algorithm for build order of some projects
Problem from the textbook.You are given a list of projects and a list of dependencies(which is a list of pairs of projects, where the second project is dependent on the first project). All of a proj...原创 2019-08-24 22:52:39 · 164 阅读 · 0 评论 -
智能指针与数组
有的时候需要由local函数在heap中alloc 一个数组空间并返回给外部使用。例如在windows编程中常常需要转换编码,转换编码返回值常常是alloc 在heap中如果例如返回一个char *. 如果外部在使用完以后不做删除操作就容易造成内存泄漏。本质上char* 在heap中是一个char[] 。可以将返回值存在智能指针中,来自动销毁(shared_ptr, unique_ptr)原创 2016-06-06 22:20:21 · 8059 阅读 · 0 评论 -
LRU Cache Implementation
Design and implement a data structure for Least Recently Used (LRU) cache. It should support the following operations: get and put.get(key) - Get the value (will always be positive) of the key if th...原创 2019-10-09 09:34:24 · 204 阅读 · 0 评论 -
Algorithm : Dijkstra's algorithm and Bellmon-Ford Paths algorithm
The Dijkstra's Algorithm for network GraphProblem:There are N network nodes, labelled 1 to N.Given times, a list of travel times as directed edges times[i] = (u, v, w), where u is the source nod...原创 2019-09-14 14:24:52 · 201 阅读 · 0 评论 -
Algorithms: Kruskal's algorithm and Prim's algorithm for Minimum-spanning-tree
Reference: introduction to algorithmKruscal Algorithm O(ElgV) by Binary HeapsPrim's algorithm O(E + VlgV) by Fibonacci heapsA problem os a spanning treefor connected, undirected graph G=(V,E...原创 2019-09-12 17:40:19 · 532 阅读 · 0 评论 -
Algorithms : N-Queens problem with BackTracking Algorithms
The n-queens puzzle is the problem of placing n queens on an n×n chessboard such that no two queens attack each other.Given an integern, return the number ofdistinct solutions to then-queens pu...原创 2019-09-11 14:29:24 · 179 阅读 · 0 评论 -
Algorithms : Sort linklist
Sort a linked list inO(nlogn) time using constant space complexity./** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x)...原创 2019-09-05 12:38:23 · 191 阅读 · 0 评论 -
Algorithms: Is Graph Bipartite
Given an undirectedgraph, return true if and only if it is bipartite.Recall that a graph is bipartite if we can split it's set of nodes into two independentsubsets A and B such that every edge in ...原创 2019-09-02 17:04:58 · 150 阅读 · 0 评论 -
Algorithms : enum the Binary Search Tree sequences
Input a datastructre of the binary search tree. and print all of the generated sequences of the binary search tree.for example. input: 21 32 is the root, 1 is the left subtree, 3 is the r...原创 2019-08-30 13:10:51 · 117 阅读 · 0 评论 -
引用成员不会被父类的析构销毁
一,成员引用的方式。将某个成员申明为类的引用方式,(其实就是指针)发现类的析构函数并不会销毁引用成员。#include <iostream>class A{ public: A() { std::cout << "create A" << std::endl; } A(const A& a) ...原创 2018-04-03 01:11:27 · 1312 阅读 · 0 评论 -
一个C++的矩阵运算库
Armadillo:C++下的Matlab替代品 Eigen3:强大且只需头文件 OpenCV:方便的计算机视觉计算库 ViennaCL:并行矩阵计算 PETSc:大规模并行科学计算 其他的矩阵计算库和资料最近在几个地方都看到有人问C++下用什么矩阵运算库比较好,顺便做了个调查,做一些相关的推荐吧。主要针对稠密矩阵,有时间会再写一个稀疏矩阵的推荐。欢迎关注我的独立博客:http://cvnote....原创 2018-02-08 18:31:46 · 5970 阅读 · 0 评论 -
一道算法题 计算任意输入的一个基于10 的CheckSum
这是一个对于10进制数的checksum算法。公式如下代码如下:#define _CRT_SECURE_NO_WARNINGS#include #include #include class checkDigit{public: checkDigit(){}; ~checkDigit(){}; static int getCheckDigit(int原创 2017-09-15 09:57:21 · 509 阅读 · 0 评论 -
两款用于检测内存泄漏的软件
一 Purify www.rational.com二 Insure++ (www.parasoft.com)原创 2017-06-01 12:09:45 · 389 阅读 · 0 评论 -
C++ 对比 Scheme(Lisp)
看了一下SICP的第一课 MIT 6.001 86年版的,用Scheme来解决实际问题确实是一种非常具有“美学”的语言。C++11 也开始支持lambda表达式了,可以在对象或者函数里定义函数。类“Function-Orient Programming”于是自己把第一课的例子用Scheme和C++11写了一下。先是Lisp(define (average x y)(/ (+原创 2016-08-26 09:54:49 · 1088 阅读 · 0 评论 -
一套Windows上C/C++的编码转换函数
在开发文档编辑器经常会遇到各种编码转换的问题要解决,虽然windows api有相关的函数。但是参数多,使用复杂每次都要查手册,很容易出错。所以把常用的转换封装一下,用C的语法实现。支持c/c++注意这些函数都会在堆中创建并返回新的字串,所以返回的字符串在使用完以后要显示销毁使用free(xxx)否则会造成内存泄漏。第一条宏是取消烦人的VS编译器强制要求使用xxx_s函数的宏。如...原创 2016-08-11 10:07:51 · 2235 阅读 · 0 评论 -
利用gdb在汇编指令级调试C程序
关于GDB调试C程序的常用命令与手段就不多说了,这里主要介绍一下如何对C程序做到汇编指令级别的调试。首先是获取汇编代码,这可以通过disassemble命令或x命令或类似的命令:12345678910111213141516171819202122232425转载 2016-07-30 21:25:42 · 876 阅读 · 0 评论 -
《C++ Concurrency in Action》读书笔记四 c++内存模型和原子类型
本章概要* C++11的内存模型* C++ STL提供的原子类型* 原子类型的操作* 如何使用这些操作了进行线程同步1. 内存模型基础内存模型分为两方面,一个是基础的结构方面,一个是并发方面1)对象和内存地址* 每个变量都是一个对象,包括对象的成员变量* 每个对象都有至少一个内存地址* 基本类型int, char等都有一个内存地址无论他们的尺寸,或者即便他们原创 2016-05-26 16:45:27 · 793 阅读 · 0 评论 -
一个关于c/c++语言内存数据类型的实验
今天在群里有朋友问到编译器是怎么识别不同数据类型和处理他们的。如果学过汇编或者编译原理应该很好理解。没学过的话也没关系,这里大概讲解一下。在计算机内部其实是没有变量类型的,只有由 段地址+偏移地址构成的内存地址 和各种寄存器标识符。计算机并不知道每个内存地址中存储的是什么数据类型(里面只是一堆由0,1,0,1……构成的数据),这需要用户编写实际的代码告诉他如何去操作这些数据类型。而原创 2016-06-27 14:57:06 · 886 阅读 · 0 评论 -
c++11 内存模型解读
关于乱序说到内存模型,首先需要明确一个普遍存在,但却未必人人都注意到的事实:程序通常并不是总按着照源码中的顺序一一执行,此谓之乱序,乱序产生的原因可能有好几种:编译器出于优化的目的,在编译阶段将源码的顺序进行交换。程序执行期间,指令流水被 cpu 乱序执行。inherent cache 的分层及刷新策略使得有时候某些写读操作的从效果上看,顺序被重排。以上乱序现象虽然来源不同转载 2016-06-03 21:50:55 · 437 阅读 · 0 评论