自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

you-know-who的博客

机械电子之于C++

  • 博客(56)
  • 资源 (5)
  • 收藏
  • 关注

原创 PCA相关

参考博客matlab自带的实现方式[COEFF,SCORE,latent,tsquare] = princomp(X)在n行p列的数据集X上做主成分分析。X的每行表示一个样本的观测值,每一列表示特征变量。COEFF是一个p行p列的矩阵,每一列包含一个主成分的系数,列是按主成分变量递减顺序排列。(COEFF是X矩阵所对应的协方差阵V的所有特征向量组成的矩阵,即变换矩阵或称投影矩阵,COE...

2018-11-12 10:01:25 361

原创 PCA例子

 PCA(Principal Components Analysis)即主成分分析,是图像处理中经常用到的降维方法。例子具体步骤1、原始数据:为了方便,我们假定数据是二维的,借助网络上的一组数据,如下:x=[2.5, 0.5, 2.2, 1.9, 3.1, 2.3, 2, 1, 1.5, 1.1]Ty=[2.4, 0.7, 2.9, 2.2, 3.0, 2.7, 1.6, 1.1...

2018-11-05 16:05:18 6919 1

原创 muduo学习笔记(二)

TCP分包对于短连接,只要发送方主动关闭连接,就表示一条消息发送完毕。长连接有四种方法:消息长度固定; 使用特殊的字符或者字符串作为消息边界,如http协议的headers以"\r\n"为字段的分隔符 每条消息的头部加一个长度字段 利用消息本身的格式分包muduo的IO模型应用程序只管生成数据,不应该关心到底数据是一次性发送还是分几次发送,这些是网络库操心的。必须要有o...

2018-10-13 13:41:28 288

原创 muduo学习笔记(一)

单线程服务器编程模型reactor模式:non-blocking IO + IO multiplexing模型这种模型的程序基本结构:一个事件循环(event loop),以事件驱动(event-driven)和事件回调的方式实现业务逻辑:while(!done){ int timeout_ms=max(1000,getNextTimedCallback()); ...

2018-10-13 09:50:45 707

原创 网络通信协议笔记(四)

可靠传输的工作原理1.超时重传:每次发送完一个分组,设置一个超时计时器。如果超时计时器到期之前收到对方的确认,就撤销已设置的超时计时器。note:发送方在发送完一个分组,必须暂时保留已发送的分组的副本(为发生超时重传使用)。只有收到相应确认才清除暂存的分组副本。 分组和确认分组都必须进行编号。这样才知道哪一个发送出去的分组收到了确认。 超时计时器设置的重传时间应该比数据在分组传...

2018-09-17 11:23:39 303

原创 二叉树那些非递归遍历

#include<iostream>#include<stack>using namespace std;class TreeNode{public: TreeNode(char val):val(val),left(nullptr),right(nullptr){} char val; TreeNode* left,*right;};void pr...

2018-09-05 16:15:14 144

原创 网络通信协议笔记(三)

原作者阮一峰。http://www.ruanyifeng.com/blog/2017/06/tcp-protocol.htmlTCP 协议的作用互联网由一整套协议构成。TCP 只是其中的一层,有着自己的分工。▲ TCP 是以太网协议和 IP 协议的上层协议,也是应用层协议的下层协议最底层的以太网协议(Ethernet)规定了电子信号如何组成数据包(packet),解决了子网内...

2018-08-31 10:05:08 487

原创 网络通信协议笔记(二)

参考网络编程懒人入门(二):快速理解网络通信协议http://www.52im.net/thread-1103-1-1.html切换到用户的角度,看看用户是如何从上至下,与这些协议互动的。网络通信就是交换数据包。电脑A向电脑B发送一个数据包,后者收到了,回复一个数据包,从而实现两台电脑之间的通信。数据包的结构,基本上是下面这样:发送这个包,需要知道两个地址:* 对方的MAC地址...

2018-08-30 23:26:01 413

原创 网络通信协议笔记(一)

主要参考:网络编程懒人入门(一):快速理解网络通信协议(上篇)几种计算机网络体系结构互联网的实现,分成好几层。每一层都有自己的功能,就像建筑物一样,每一层都靠下一层支持。用户接触到的,只是最上面的一层,根本没有感觉到下面的层。要理解互联网,必须从最下层开始,自下而上理解每一层的功能。每一层都是为了完成一种功能。为了实现这些功能,就需要大家都遵守共同的规则。大家都遵守的规则,就叫做"...

2018-08-30 22:45:58 3363

原创 c++语言基础总结

1.strlen和sizeof区别?sizeof是运算符,并不是函数,结果在编译时得到而非运行中获得;strlen是字符处理的库函数。  sizeof参数可以是任何数据的类型或者数据(sizeof参数不退化);strlen的参数只能是字符指针且结尾是'\0'的字符串。因为sizeof值在编译时确定,所以不能用来得到动态分配(运行时分配)存储空间的大小。sizeof (type)si...

2018-08-30 15:43:36 251

原创 页面置换算法

1.最优页面置换算法不可能实现。把未来一段时间内最晚才会访问到的页面置换出去。2.最近未使用(NRU)OS为每一页面设置了两个状态位,这些位设置在页表,每次访问内存时由硬件更新这些位。页面分为4类:第三类页面在他的R位被时钟中断清零后变成第一类,不清除M类是因为决定一个页面是否需要写回磁盘时将使用这些信息。NRU算法随机从类编号最小的非空类挑选一个页面淘汰。...

2018-08-11 10:08:23 1671

原创 存储管理

人们提出“分层存储器体系”的概念,在这个体系中,计算机有若干兆高速缓存,数千兆内存,几T磁盘存储,另外还有诸如DVD和USB等可移动存储装置。操作系统的工作是将这个存储体系抽象为一个有用的模型并管理这个抽象模型。操作系统中管理分层存储器体系的部分称为存储管理器。他的任务是有效管理内存。最底层的高速缓存由硬件完成。几种存储管理方案:无存储器抽象最简单的存储器抽象就是没有抽象。每一...

2018-08-11 00:09:01 204

原创 中断

任何操作系统都必须对计算机上的硬件设备进行有效管理。处理器的速度跟外围设备的速度不在一个数量级上,硬件的响应速度慢,内核应该在此期间处理其他事物,等到硬件真正完成请求操作再对他进行处理。轮询不是好主意,有一种好的机制:让硬件在需要的时候向内核发出信号,这就是中断机制。(变内核主动为硬件主动)中断本质上是一种特殊的电信号,由硬件发向处理器。特定的中断总是与特定的设备相关联,并且内核知...

2018-08-07 20:17:37 180

原创 进程管理

进程定义进程是处于执行期的程序(目标代码存放在某种存储介质上)。进程不局限于一段可执行程序代码(代码段),通常还包含其他资源,像打开的文件,挂起的信号,内核内部数据,处理器状态,一个或多个具有内存映射的内存地址空间及一个或多个执行线程,存放全局变量的数据段等。线程,进程中活动的对象,拥有独立的程序计数器和一组进程寄存器。内核调度对象是线程。同一个进程的线程之间共享虚拟内存,但每个都拥有各自...

2018-08-05 23:10:46 160

转载 c++中的static和extern

看到一个大神写的非常简单明了的回答,特地转载过来链接:https://www.zhihu.com/question/265415085/answer/293495989//是说这个变量是存在,但是不在(可能)当前的编译单元,后续链接时会在哪里发现//大家共用这个全局变量//如果在链接的时候,没有在任何地方发现这个变量的定义//即没有不带 extern 的 int x,报链接错误ex...

2018-08-03 21:46:31 587

原创 c++中extern关键字

extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。 声明函数或全局变量的作用范围的关键字,其声明的函数和变量可以在本模块或者其他模块中使用,记住它是一个声明不是定义! 链接指定。当它与"C"一起连用时,如: extern "C" void fun(int a, int ...

2018-08-03 21:05:09 7368 5

原创 udp多线程服务器demo

//服务器代码#include <sys/socket.h>#include<sys/types.h>#include <netinet/in.h>#include <arpa/inet.h>#include <pthread.h>#include<string.h>#include<stdio.h>

2018-05-16 19:44:16 2678

转载 我收集一些帖子

https://blog.csdn.net/zhu2695/article/details/51511554

2018-05-15 21:21:36 184

转载 卡尔曼滤波

大家好,转载别人的卡尔曼滤波,这是源地址1.简介(Brief Introduction)在学习卡尔曼滤波器之前,首先看看为什么叫“卡尔曼”。跟其他著名的理论(例如傅立叶变换,泰勒级数等等)一样,卡尔曼也是一个人的名字,而跟他们不同的是,他是个现代人!卡尔曼全名Rudolf Emil Kalman,匈牙利数学家,1930年出生于匈牙利首都布达佩斯。1953,1954年于麻省理

2018-01-01 15:24:40 459 2

原创 effective c++ 关于异常安全

假设有个class用来表现夹带背景图案的GUI菜单,用于多线程,有个互斥器作为并发控制class PrettyMenu{public:...void changeBackground(std::istream& imgSrc); //改变背景...private:Mutex mutex; //互斥器Image * bgImage; //目前背景图案int imageCh

2017-11-02 20:43:41 266

原创 最长上升子序列

求最长上升子序列的内容,典型的dp问题解法如下#include#include#includeusing namespace std;int longestIncreasingSubsequence(const vector&v){ if(v.empty())return 0; vectorret(v.size(),1); for(int i=1;i!=ret.size()

2017-10-28 15:48:17 146

原创 DP:钢条切割问题

某公司出售一段长度为i英寸的钢条价格为pi(i=1,2,...)。钢条长度为整英寸。价格表如程序段变量p给出。现在给定一段长度为n英寸钢条和价格表p,求切割方案,使得销售收益r最大,注意如果长度为n英寸的钢条价格p足够大时,就不需要切割。#include#includeusing namespace std;vectorp{0,1,5,8,9,10,17,17,20,24,30}; /

2017-10-17 14:52:30 411

原创 关于二分查找的相关问题

查到目标点所在区间 in soreted arrayclass Solution {public: vector searchRange(vector& nums, int target) { vectorret(2,-1); if(nums.empty())return ret; int beg=-1,end=nums.size();

2017-10-14 15:36:55 257

原创 关于移除元素的题目

移除元素把0搬移到数组尾部#include#includeusing namespace std;void moveZeros(vector&v){ int last=0; auto sz=v.size(); for(int i=0;i!=sz;++i){ if(v[i]!=0)swap(v[i],v[last++]); }}int removeElement

2017-10-13 11:07:23 228

原创 leetcode 15. 3sum && 16. 3Sum Closest && 18. 4Sum

题目在这代码如下:class Solution {public: vector> threeSum(vector& nums) { vector>ret; auto sz=nums.size(); if(sz<3)return ret; sort(nums.begin(),nums.end()); f

2017-10-11 10:48:43 165

原创 leetcode 8. String to Integer (atoi)

把一个字符串转换为一个整型数,题目描述在这里代码贴在这里:#include#include#include#includeusing namespace std;int myAtoi(string str) { //跳过前面的空格字符,直到遇上数字或正负号才开始做转换, if(str.empty())return 0; //而再遇到非数字或字符串时

2017-08-27 15:38:44 188

原创 leetcode 5. Longest Palindromic Substring(回文和Manacher算法)

#include#include#include#includeusing namespace std;class Solution {public: string longestPalindrome(string s) { if(s.empty())return s; string temp; for(int i=0;i<s.s

2017-08-25 15:22:53 286

原创 effective c++:写出一个不抛出异常的swap函数

考虑写出一个不抛出异常的swap函数假设Widget和WidgetImpl都是class:class WidgetImpl{ //针对Widget数据而设计的classpublic:  ...private:  int a,b,c; //可能很多数据  std::vectorv; //意味复制时间很长};当Widget被置换时真正该做的是置换内部指针

2017-08-06 12:51:26 227

原创 effective c++:让接口容易被正确使用,不易被误用

让接口容易被正确使用,不易被误用1)许多客户端错误可以因为导入新类型而获得预防。一旦正确的类型定位,限制其值有时候是通情达理的。考虑下面的例子表现日期:class Date{public:  Date(int month,int day,int year);  ...};Date d(20,30,1997); //20月不存在的改进:stru

2017-08-06 10:50:17 243

原创 effective c++:资源管理相关

以对象管理资源许多资源被动态分配与heap内而后被用于单一区块或函数内。他们应该在控制流离开那个区开或函数时被释class Investment{...};//投资类型继承体系中的root classInvestment* createInvestment();    //返回指针,指向Investment继承     //体系内的动态分配对象,调用者有责任删除它void

2017-08-05 11:45:20 215

原创 effective c++ item04:确定对象被使用之前以先被初始化

Item04 确定对象被使用之前已被初始化Class PhoneNumber{...};Class ABEntry{Public:  ABEntry(const std::string& name,const std::string& address,  const std::list& phones);Private:  Std::string theName;  Std::s

2017-08-04 12:01:04 221

原创 effective c++ item2总结:以编译器替换预处理器

Item 2:以编译器替换预处理器(以const,enum,inline替换#define):#define不被视为语言的一部分,那正是他的问题所在。sam1:#define ASPECT_RATIO 1.534替换为:Const double AspectRatio=1.534;名称记号ASPECT_RATIO也许从未被编译器看见:可能在编译器开始处理源码之前就被

2017-08-04 09:28:13 264

原创 stack in c++

stack在c++stl中作为特殊容器存在,其实现多为单纯地把各项操作转化为内部容器的对应调用下面是其简单实现头文件#ifndef _STACK_H#define _STACK_H#include#includetemplate class Stack{ protected: std::deque c; public: class ReadEmptySta

2017-07-22 09:41:24 418

原创 c++ stl算法

这里是一些stl常用算法,搭配迭代器、function object、lambda有强大的功能#include#include#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing n

2017-07-21 21:53:46 203

原创 c++ stl容器相关操作

#include#include#include#include#include#include#include#include#include#include#include#include#include#includeusing namespace std;templatevoid PRINT_ELE(const Container& t){ for(au

2017-07-21 21:49:33 229

转载 典型的C++程序员成长经历

1.  完整的学一遍 C++ 所有语言特性,典型书籍 "The C++ Programming Language" Part1, Part2, "C++ Primer"    感觉 C++ 像大杂烩(多编程范型),各种精妙的语法特性 (friend, virtual/RTTI, const/mutable, exception, template),太多精妙的东西容易导致记忆琐碎化,学

2017-06-25 14:22:51 1010

原创 c++ 一个元素是string的vector容器

写了一个元素是string的vector容器,用到了不少知识点头文件#ifndef _StrVec_H#define _StrVec_H#include#include#include#include#includeclass StrVec{public: StrVec():element(nullptr),first_free(nullptr),cap(nullptr

2017-05-29 15:58:05 698

原创 c++ 关于decltype和auto的一点小总结

最近再看C++primer 5th,正好总结一下decltype和auto的用法,方便复习auto定义的变量必须有初始值使用auto可以在一条语句声明多个变量,但一条声明语句只能有一个基本数据类型auto i=0,*p=&i;auto sz=0,pi=3.2; //错误 sz和pi类型不一致真正参与初始化的其实是引用对象的值,编译器以引用对象的类型作为auto的类型int

2017-05-11 19:07:12 336

原创 关于const的一点个人总结 C++

我想简单总结一个const 的用法,方便我自己复习只能在const类型的对象上执行不改变其内容的操作,const int和普通int一样都能参与算术运算,也能转化为一个布尔值。int i=42;const int ci=i;int j=ci;在拷贝一个对象的值时并不会改变他。const的引用const int ci=9;const int &r1=ci;

2017-05-11 15:05:49 230

原创 不相交集 C实现

不相交集基本历程头文件#ifndef _disjSet_H#define _disjSet_Htypedef int* disjSet;void initial(disjSet S,int size);void setUnion(disjSet S,int root1,int root2);int find(disjSet S,int i);#endif源文件#i

2017-04-19 11:14:39 299

操作系统概念(第七版)

久负盛名的os书籍恐龙书就在这里了,通俗易懂,豆瓣评分相当高喽

2018-01-11

30天自制操作系统—川合秀实

一步一步教你写一个小的操作系统,非常适合自学的人,一窥os奥妙

2018-01-11

北京大学os课件

北京大学os课件(参考书籍现代操作系统可搭配mooc视频学习)

2017-12-16

空空如也

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

TA关注的人

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