- 博客(191)
- 资源 (1)
- 收藏
- 关注
原创 系统工程原理(持续更新):3.方法论--霍尔“三维结构”模型
方法:方法是用于完成一个既定任务的具体技术和操作方法论:方法论是进行研究和探索的一般途径,是对方法如何使用的指导系统工程方法论:系统工程方法论是研究和探索(复杂)系统问题的一般规律和途径系统工程方法论包括系统分析和组织管理系统分析涉及:问题、方法、流程组织管理涉及:时间、资源、决策3.1还原论:定义:将物质的高级运动形式(如生命运动)归结为低级运动形式(如机械运动),用低级运动形式的规律代替高级运动形式的规律的形而上学方法。特点:还原论是把事物分割开来,进行实验,然后再综合起来。还原论是西方科学的灵魂。3.
2022-07-03 22:09:57
3904
1
原创 系统工程原理(持续更新):2.系统科学体系
20世纪40年代末,美国贝尔公司首次提出SE一词;1957年,E.W.Engstriom的《SE--一个成长的新概念》发表在美《电工工程》杂志上;1957年,Gooode和Machol合作出版SE第一本书《SE》1958年,美海军特种计划局在北极星导弹潜艇研制中创造了“PERT”(Program Evalation and Review Technique),使该计划提前两年完成,轰动了美国1962年,麦氏任美国防部长时,提出PPBS(Planning Programming Budgeting Syste
2022-07-03 21:14:34
695
原创 搞懂ZMQ:轻量级进程间通信
“ZMQ是一个简单好用的传输层,像框架一样的一个socket library,他使得Socket编程更加简单、简洁和性能更高。是一个消息处理队列库,可在多个线程、内核和主机盒之间弹性伸缩。ZMQ的明确目标是“成为标准网络协议栈的一部分,之后进入Linux内核”。现在还未看到它们的成功。但是,它无疑是极具前景的、并且是人们更加需要的“传统”BSD套接字之上的一 层封装。ZMQ让编写高性能网络应用程序极为简单和有趣。”...
2022-07-03 14:16:38
4034
原创 搞懂DDS数据分发服务
数据分发服务(DDS™)是一个由对象管理组(OMG)发布的以数据为中心的中间件协议和API标准。采用分布式发布/订阅体系架构,以中间件的形式提供通信服务,强调以数据为中心。DDS中间件是一个软件层,从操作系统、网络传输和底层数据格式的细节中抽象出应用。相同的概念和api提供给不同的编成语言,使得应用在不同的操作系统、编成语言和处理体系架构之间交换信息。底层细节包括数据传输格式、发现、连接、可靠性和、协议、Qos策略等由中间件来管理。...
2022-07-03 12:51:02
5308
原创 系统工程原理(持续更新):1.系统和系统工程概述
背景1.科技飞速进步和社会生产力的巨大提高使得“空间便狭窄”、“时间相对缩短”2.大工程、大科学、大经济出现:“只见森林、不见树木”--->"只见树木,不见森林"------>”既见树木又见森林“原本不相关的事物联系起来 各种系统性问题的解决需要综合运用多学科的知识和各种专业技术的成果研究对象变成了“系统”,产生了从“系统”角度来分析、解决问题的观点、理论、方法、手段,这就是系统工程。一.系统(一)系统的定义系统是由相互作用和相互依赖的若干组成部分(元素)结合成的
2022-03-18 10:25:33
6143
3
转载 【好文转载】谈谈CNN中位置和尺度问题
前言前段时间看到了几篇有意思的文章,也参考了一些相关的讨论,这里想对CNN中的平移和尺度的不变性和相等性,以及CNN对于目标相对和绝对位置、深度的预测原理进行探讨。这些内容对于一些特定任务很重要,比如目标检测、目标分割、深度估计、分类/识别以及单目标跟踪中的置信图预测等。1 CNN是否存在平移和尺度的不变性和相等性1.1 不变性和相等性的定义在介绍卷积神经网络(CNN)之前,我们对于不变性和相等性的理解可能来自于传统图像处理算法中的,平移、旋转、光照和尺度等不变性,比如HOG梯度方向直方图,
2021-12-14 10:19:03
440
原创 相机成像模型、内参矩阵、外参矩阵
相机针孔成像模型基本的小孔成像过程:X坐标系是针孔所在坐标系,Y坐标系为成像平面坐标系,P为空间一点,小孔成像使得P点在图像平面上呈现了一个倒立的像,俯视图如下:由三角相似关系可以得到:初步相机矩阵相机成像的本质:就是三维空间坐标到二维图像坐标的变换,这是一个投影过程。相机矩阵就是建立这种三维到二维的投影关系。如果我们用[xw yw zw ]来表示一个空间点的坐标,用[x y]来表示对应于成像平面上的一个图像点的坐标(不是像素坐标),那么这两个点肯定...
2021-11-09 11:09:21
4836
原创 物联网技术-RFID
射频识别(Redio Frequency Identification),简称RFID又称无线射频识别,RFID是物联网的其中一种终端技术。RFID是一种通信技术,可通过无线电信号耦合识别特定目标并读写相关数据,而又无需识别系统与特定目标建立机械或光学接触。RFID正被广泛用于采购分配、商业贸易、生产制造、物流、防伪以及军事用途上。RFID主要位于典型物联网架构中的感知层,位于整个物联网系统的最底层,是与物体链接的媒介之一。由于它具有非接触的特点,其应用非常广泛,且随着不同应用场景的出现,RFID协
2021-10-12 21:03:44
4004
原创 软考中级-软件设计师:体系结构重要知识(二)[层次化存储结构]
5.存储结构5.1 层次化存储结构局部性原理是层次化存储结构的支撑从上往下:速度快(容量小)-------->速度慢(容量大)CPU:寄存器,最快,但容量小,成本高 Cache:按内容存取 内存(主存):分两类:随机存储器(RAM)、只读存储器(ROM) 外存:硬盘、光盘、U盘等5.2 cache在计算机的存储系统体系中,Cache是访问速度最快的层次(若有寄存器,则寄存器最快) 使用Cache改善系统性能的依据是程序的局部性原理 如果以h代表对Cache的访问命令率,
2020-12-25 16:04:34
297
原创 软考中级-软件设计师:体系结构重要知识(一)[数值表示、计算机结构、体系结构、流水线]
分值占比占6分左右数据得表示(****) 运算器与控制器(****) Flynn分类法(**) CISC与RISC(**) 流水线技术(****) 存储系统(****) 总线系统(*) 可靠性(*) 校验码(***)1.数据的表示1.1 R进制转十进制R进制转十进制使用按权展开法,其具体操作方式为:将R进制数的每一位数值用R^k形式表示,k与该位和小数点之间的距离有关。当该位位于小数点左边,K值是该位和小数点之间数码的个数,而当该位位于小数点右边,k值是负值,其绝对值是该位
2020-10-03 20:53:44
348
原创 操作系统重要知识清单:线程
为什么要进入线程?有的进程可能需要”同时“做很多事,而传统得进程只能串行地执行一系列程序。为此,引入了”线程“,来增加并发度。线程是一个基本得CPU执行单位,也是程序执行流得最小单位。引入线程之后,不仅是进程之间也可以并发,从而进一步提升了系统得并发度,使得一个进程内页可以并发处理各种任务。引入线程后,进程只作为除CPU之外得系统资源得分配单元(如打印机、内存地址空间等都是分配给进程得)线程得属性线程是处理机调度得单位 多CPU计算机中,各个线程可占用不同得CPU 每个线程都有一
2020-09-08 18:09:18
136
原创 操作系统重要知识清单:一起来搞懂进程呀!!
相关概念进程定义程序:程序就是一个指令序列引入多道程序技术之后:为了方便操作系统管理,完成各程序并发执行,引入了进程、进程实体的概念。内存中同时放入多道程序,各个程序的代码、运算数据存放的位置不同。擦欧总系统要怎么才能找到各个程序的存放位置呢?系统为每个运行的程序配置一个数据结构,称为进程控制块(PCB),用来描述进程的各种信息(如程序代码存放位置)PCB、程序端、数据段三部分构成了进程实体(进程映像)。一般情况下,把进程实体就简称为进程;例如:所谓创建进程,市值上是创建进程实体中的
2020-09-07 16:56:53
2424
原创 操作系统重要知识清单:系统调用
“系统调用”是操作系统提供给应用程序(程序员/编程人员)使用的接口,可以理解为一种可供应用程序调用的特殊函数,应用程序可以发出系统调用请求来获得操作系统的服务。问:操作系统为什么要提供“系统调用”功能?答:应用程序通过系统调用请求操作系统的服务。系统中的各种共享资源都由操作系统统一掌管,因此在用户程序中,凡是与资源有关的操作(如存储分配、I/O操作、文件管理等)都必须通过系统调用的方式向操作系统提出服务请求,由操作系统代为完成。这样就可以保证系统的稳定性和安全性,防止用户进行非法操作。..
2020-09-07 16:19:58
360
原创 操作系统重要知识清单:中断和异常
中断的概念和作用引入中断机制,实现了多道程序并发执行;本质:发生中断就意味着需要操作系统介入,开展管理工作。1.当中断发生时,CPU立即进入核心态2.当中断发生后,当前运行的进程暂停运行,并由操作系统内核对中断进行处理3.对于不同的中断信号,会进行不同的处理发生了中断,就意味着需要操作系统接入,开展管理工作。由于操作系统的管理工作(比如进程切换、分配I/O设备等)需要使用特权指令,因此CPU要从用户态转为核心态。中断可以使CPU从用户态切换为核心态,使操作系统获得计算机的控制权。有个
2020-09-07 16:02:05
309
原创 操作系统重要知识清单:操作系统的运行机制与体系结构
运行机制1.两种指令指令:就是处理器(cpu)能识别、执行的最基本命令;一条高级语言的代码翻译过来可能会对应多条指令特权指令:如内存清零指令...特权指令是不允许用户程序使用的非特权指令:如普通的运算指令2.两种处理器状态CPU如何判断当前是否可以执行特权指令?用户态(目态):此时CPU只能执行非特权指令核心态(管态):此时CPU既可以执行非特权指令,也可以执行特权指令。操作系统用程序状态寄存器(PSW)中的某标识位来标识当前处理器处于什么状态。如0为用户态,1为核心态
2020-09-07 15:29:41
180
原创 操作系统重要知识清单:一些基础和概念
操作系统的定义OS是指控制和管理整个计算机系统的硬件和软件资源,并合理地组织调度计算机的工作和资源分配,以提供给用户和其他软件方便的接口和环境,他是计算机系统中最基本的系统软件操作系统的功能1.作为系统资源的管理者提供的功能:处理机管理、存储器管理、文件管理、设备管理目标:安全、高效2.作为用户和计算机硬件之间的接口命令接口:允许用户直接使用程序接口:允许用户通过程序间接使用GUI:现代操作系统中最流行的图形用户接口3.作为最接近硬件的层次需要提供的功能和目标:实
2020-09-07 15:06:54
145
原创 计算机网络重要知识清单:应用层(这个资料的应用层讲的太浅了,后续更新一个深入的http专题)
应用层概述应用层对应用程序的通信提供服务。应用层协议定义:应用进程交换的报文类型,请求还是响应?各种报文类型的语法,如报文中的各个字段及其详细描述。字段的语义,即包含在字段中的信息的含义。进程何时、如何发送报文,以及对报文进行响应的规则。应用层的功能:文件传输、访问和管理电子邮件虚拟终端查询服务和远程作业登录应用层的重要协议:FTPSMTP、POP3HTTPDNS网络应用模型客户/服务器模型(Client/Server)P2P模
2020-08-28 16:39:31
145
原创 计算机网路重要知识清单:传输层
传输层概述传输层是只有主机才有的层次,为应用层提供通信服务,使用网络层的服务。传输层的功能:1.传输层提供进程和进程之间的逻辑通信。(网络层是主机和主机间的逻辑通信)2.复用和分用:复用是指发送方不同的进程都可以使用同一个传输层的协议来传输数据;而分用指得是传输层在接收这些数据后能够送给正确的进程。3.传输层对收到的报文进行差错检测。(网络层的首部校验和只是校验了首部,没有校验数据部分;所以数据部分的检错需要传输层来做) 传输层+网络层的差错检测就可以实现可靠传输4.传输层的两种协.
2020-08-27 16:11:59
482
原创 计算机网络重要知识清单:网络层(三)
IPV6为什么要有IPV6?32位的IPV4地址空间已经分配殆尽。。。前面讲过的CIDR和NAT技术只是延缓了ipv4消耗的时间,是治标不治本的!IPV6可以从根本上解决地址耗尽问题改进首部格式快速处理/转发数据报支持QoS(Quality of Service,服务质量)指一个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力,是网络的一种安全机制,是用来解决网络延迟和阻塞等问题的一种技术IPv6数据报格式 版本:指明了协议版本,总是6优先级:..
2020-08-25 22:20:46
634
原创 计算机网络重要知识清单:网络层(二)
IP地址分类得IP地址特殊IP地址私有IP地址网络地址转换(NAT)路由器对目的地址是私有IP地址得数据报一律不进行转发。网络地址转换NAT(Network Address Translation):在专用网连接到因特网的路由器上安装NAT软件,安装了NAT软件的路由器叫NAT路由器,他至少有一个有效的外部全球IP地址。子网划分和子网掩码...
2020-08-23 22:33:42
241
原创 计算机网络重要知识清单:网络层(一)
网络层概述网络层的主要任务是把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务。网络层传输单位是数据报。功能一:路由选择与分组转发最佳路径功能二:异构网络互联功能三:拥塞控制若所有结点都来不及接受分组,而要丢弃大量分组的话,网络就要处于拥塞状态。因此要采取一定措施,缓解这种拥塞。解决办法1:开环控制(静)解决办法2:闭环控制(动)数据交换方式网络的核心----路由器为什么要数据交换数据交换方式电路交换报文交换分组交换:数据报方式、
2020-08-20 22:10:35
398
原创 计算机网络重要知识清单:数据链路层(三)
1.局域网1.1局域网基本概念局域网(Local Area Network):简称LAN,是指在某一区域内由多台计算机互联成得计算机组,使用广播信道。特点1:覆盖地理范围较小,只在一个相对独立得局部范围内联,如一座或集中得建筑群内。特点2:使用专门铺设得传输介质(双绞线、同轴电缆)进行联网,数据传输速率高(10Mb/s-10Gb/s)特点3:通信延迟时间短,误码率低,可靠性较高特点4:各站为平等关系,共享传输信道。特点5:多采用分布式控制和广播式通信,能进行广播和组播。决定局
2020-08-20 11:40:38
353
原创 计算机网络重要知识清单:数据链路层(二)
后退N帧协议(GBN)停止-等待协议的弊端发送方大部分时间都在等待接收方的回复。。。信道利用率很低一个改善方法:流水线技术后退N帧协议中的滑动窗口对于发送方来说,窗口内后面的“2,3,4,5,6”可以直接发送也可以选择暂时不发送GBN发送方必须响应的三件事1.上层的调用上层要发送数据时,发送方先检查发送窗口是否已满,如果未满,则产生一个帧并将其发送;如果窗口已满,发送方只需将数据返回给上层,暗示上层窗口已满。上层等一会再发送。(实际实现中,发送方可以忽略这些数据,
2020-08-18 22:27:57
381
原创 计算机网络重要知识清单:数据链路层(一)
数据链路层基本概念结点:主机、路由器链路:网络中两个结点之间的物理通道,链路的传输介质主要有双绞线、光纤和微波。分为有线链路、无线链路。数据链路:网络中两个结点之间的逻辑通道,把实现控制数据传输协议的硬件和软件加到链路上就构成数据链路。帧:链路层的协议数据单元,封装网络层数据报数据链路层负责通过一条链路从一个结点向另一个物理链路直接相连的相邻结点传送数据报数据链路层功能概述数据链路层在物理层提供服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻
2020-08-17 22:31:47
481
原创 计算机网络重要知识清单:物理层
1.物理层基本概念物理层解决如果在连接各种计算机得传输媒体上传输数据比特流,而不是具体得传输媒体。物理层主要任务:确定与传输媒体接口有关得一些特性------>定义标准1.机械特性:定义物理连接得特性,规定物理连接时所采用的规格、接口形状、引线数目、引脚数量和排列情况2.电气特征:规定传输二进制位时,线路上信号得电压范围、阻抗匹配、传输速率和距离限制等。3.功能特性:指明某条线上出现得某一电平表示何种意义,接口不见得信号线得用途。4.规程特性:也叫过程特性,定义各条物理线路得工
2020-08-16 22:21:42
223
原创 刷题笔记:再写几个剑指Offer中得题!(未完)
#剑指Offer36.二叉搜索树与双向链表/*// Definition for a Node.class Node {public: int val; Node* left; Node* right; Node() {} Node(int _val) { val = _val; left = NULL; right = NULL; } Node(int _val, Node* _lef
2020-07-27 14:48:00
80
原创 刷题笔记:极小化极大专题(太难了,等有空再研究!!!!)
#292.Nim游戏找到数学规律:class Solution {public: bool canWinNim(int n) { int base=3; if(n%(base+1)==0){ return false; } else{ return true; } }};也可以用博弈的动态规划思想:状态转移方程:f(n) = !(f(n-
2020-07-27 09:41:25
159
原创 刷题笔记:LeetCode精选TOP面试题(3)
#218.天际线问题经典分治算法,虽然是困难题但值得研究一下!!public List<List<Integer>> getSkyline(int[][] buildings) { if(buildings.length == 0){ return new ArrayList<>(); } return merge(buildings, 0, buildings.length - 1);}private List&
2020-07-25 10:43:46
147
原创 刷题笔记:LeetCode精选TOP面试题(2)
#101.对称二叉树递归法:class Solution {public: bool check(TreeNode *p, TreeNode *q) { if (!p && !q) return true; if (!p || !q) return false; return p->val == q->val && check(p->left, q->right) &&
2020-07-22 21:52:28
238
原创 刷题笔记:扫描线思想
#1288.删除被覆盖区间官方题解:class Solution {public: int removeCoveredIntervals(vector<vector<int>>& intervals) { int n = intervals.size(); sort(intervals.begin(), intervals.end(), [](const vector<int>& u, const vec
2020-07-22 11:37:26
172
原创 刷题笔记:Random专题 在某大厂的3轮面试中遇到了2次本类型的题!!
#470 用Rand7()实现Rand10()// The rand7() API is already defined for you.// int rand7();// @return a random integer in the range 1 to 7class Solution {public: int rand10() { while(true){ int a=rand7(); int b=rand7();
2020-07-21 22:03:39
254
原创 刷题笔记:回溯、递归、分治
#78.求子集递归法:位运算法:#90.求子集2#40.组合数之和2#22.生成括号class Solution {public: vector<string> generateParenthesis(int n) { vector<string> result; int lc=0,rc=0; DFS(result,"",n,lc,rc); return resu.
2020-07-20 15:41:52
115
原创 刷题笔记:LeetCode精选TOP面试题
#1.两数之和暴力求解:时间复杂度O(n^2) 空间复杂度O(1)class Solution {public: vector<int> twoSum(vector<int>& nums, int target) { vector<int> result; for(int i=0;i<nums.size();i++){ for(int j=i+1;j<nums.size();j++){..
2020-07-18 21:48:25
226
1
原创 刷题笔记:高级数据结构专题(第一遍刷搞懂每道题的解法;第二遍刷搞懂这一类题通用的思想和策略;第三遍刷思考什么样的题属于这个类别
Trie树(字典树)概述#define TRIE_MAX_CHAR_NUM 26struct TrieNode{ TrieNode *child[TRIE_MAX_CHAR_NUM]; bool is_end; TrieNode():is_end(false){ for(int i=0;i<TRIE_MAX_CHAR_NUM;i++){ child[i]=0; } }}...
2020-07-16 21:55:25
191
原创 刷题笔记:动态规划专题(第一遍刷搞懂每道题的解法;第二遍刷搞懂这一类题通用的思想和策略;第三遍刷思考什么样的题属于这个类别
动态规划概述动态规划是运筹学的一个分支,是求解决策过程最优化的数学方法。它是一种最优化原理,利用各阶段之间的关系逐个求解,最终求得全局最优解。在设计动态规划算法时,需要确认原问题与子问题、动态规划状态、边界状态结值、状态转移方程等关键要速。动态规划原理确认原问题与子问题 确认状态 确认边界状态的值 确定状态转移方程例1:爬楼梯(LeetCode70-简单)题目:假设你正在爬楼梯。需要n阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?..
2020-07-15 22:18:01
351
原创 刷题笔记:链表
反转链表class Solution {public: ListNode* reverseList(ListNode* head) { ListNode* result=NULL; while(head) { ListNode* temp=head->next; head->next=result; result=head; head=t
2020-07-13 10:36:32
148
原创 刷题笔记:队列、栈、堆
队列实现栈class mystack {public: void push(int x) { queue<int> temp_queue; temp_queue.push(x); while (!_data.empty()) { temp_queue.push(_data.front()); _data.pop(); } while (!temp_queue.empty()) { _data.push(temp_queue.front())
2020-07-13 10:36:24
115
原创 linux重要知识清单:进程管理
相关的系统调度fork(): 用于创建进程,Linux中进程的创建者与被创建者是父子关系 clone():克隆,真正实现创建进程的操作,fork()是不带参数的,clone()是带参数的,通过不同的参数后,可以不仅仅做fork(),也能做其他的创建进程的方式 exec():加载外部存储器的一段代码,把一个可执行文件,加载到当前的进程执行环境中。往往是和fork()和clone搭配使用的。 exit():退出;进程生命周期结束就会执行exit(),消亡时exit()会把这个信息通知父进程,父进程根.
2020-07-01 21:30:38
215
原创 C++ STL源码分析(五):deque、stack\queue
deque得底层并不是连续空间,但通过deque iterator中得函数重载模拟出了连续空间得效果。stack 和queue直接内置一个deque来实现对应功能。list也可以作为stack 和queue的容器,
2020-07-01 20:15:37
219
原创 C++STL源码分析(四):vector 其实不太容易忘记,所以先简单记录吧,等有空了再好好得整理!!
vector基本就是一个数组,但当数组用完后会自动扩充。但不可能在原地进行扩充,因为后面得连续空间不一定够用。所以它会以某一种策略找一块新得内存空间进行分配二倍增长得过程中会大量调用拷贝构造函数和析构函数...
2020-06-30 21:40:39
144
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人