自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 收藏
  • 关注

原创 [MIT算法导论]笔记全集

目录算法时间复杂度归并排序主方法算法时间复杂度归并排序排序步骤:n为1时,已经完成排序。n大于1时,递归的对A[1~┏n/2┓]这部分以及A[┏n/2┓+1~n]这部分排序。(┏ ┓表示向上取整)将排序好的两个表合并,比较两个表,依次取出最小者到输出序列中。主方法case 1:f(n)=O(n^(log(b)a-ε)) (ε>0)=>T(n)=Θ(n^log(b)a)case 2:f(n)=Θ (n^log(b)a·(lgn)^k)(k>=0)=>T

2020-09-11 17:30:28 1952 3

原创 [编译原理]用flex和bison生成逻辑表达式的求值工具

文章目录实验内容逻辑表达式的求值工具词法分析语法分析bison使用文法优先级和结合律文法设计短路次数统计语义处理错误处理编译及运行编译结果运行结果实验内容逻辑表达式的求值工具​ 输入一个包含数值的逻辑表达式,输出计算其真值,和因短路操作而跳过的数值比较的次数。输出格式为Output: [true or false], [次数]。注意,逻辑表达式的计算符合短路算法。其中,!计入逻辑运算次数,而 == 或 != 只用于非布尔型的数值比较。词法分析​ Flex器是一个开源的词法分析器,编译器将开发者

2021-06-27 11:44:34 2487 2

原创 [Objective-C]Xcode打开僵尸对象实时检查机制

僵尸对象:一个已经释放的对象,但是这个对象所占的空间还没有分配给其他对象,这样的对象就叫做僵尸对象。所以通过野指针访问僵尸对象时,可能会出现问题,也可能不会出现,就取决于所占的空间是否已被分配。编程时,我们想要僵尸对象无论如何都不允许被访问了,可以在Xcode中打开Enable Zombie Object机制。在项目左上角,打开Edit Scheme。2. 选择左侧的Run,上方的Diagnostics,勾选Zombie Object即可。...

2021-06-12 21:27:32 1134

原创 [C++]STL源码剖析:template specialization requires ‘template<>‘报错

报错:template specialization requires ‘template<>’为了使编译器将该语句认定为template specialization,我们需要在前面加上template<>关键字:报错消失。参考:https://stackoverflow.com/questions/15723850/why-does-this-code-give-the-error-template-specialization-requires-templa

2021-05-04 22:28:04 1314

原创 [算法]各公司面试/笔试算法题(不断更新)

文章目录腾讯腾讯(面试现场写)标号1-n的n个人首尾相接,1到3报数,报到3的退出,求最后一个人的标号。采用循环链表作为数据结构。#include <iostream>#include <unordered_map>using namespace std;struct link{ int num = 0; link* next;};int lastNum(int n){ link* l = new link(); l -&g

2021-04-09 15:18:49 206

原创 [算法]LRU(最近最少使用) 缓存机制O(1)时间复杂度的C++实现

腾讯面试真题:口述如何实现LRU算法。我自己用优先队列和小顶堆两种方法实现的,面试官问我有没有O(1)的方法,我不知道,然后发给我一个链接让我研究研究,说这个方法知道的人并不多…(这么耐心的面试官 录我吧5555)...

2021-03-30 11:28:50 271

原创 [数据库]数据科学OLAP实验

文章目录实验要求实验过程模型建表注入数据数据仓库分析型查询实验要求本实验是一个简单的数据仓库模型,事实表保存销售记录,维表保存用户、时间、产品、销售人员、商店等信息,这些维表具有维度的层次结构。比如时间维度的年、月、日等。在这个数据仓库上,我们可以运行数据仓库分析查询,获得一些汇总结果,帮助我们对业务有所了解,以便安排后续的商业活动。本实例的目的是让读者对关系数据库、OLAP、事实表、维表、维度层次结构等,有进一步的认识。实验过程模型销售表为事实表,周围有5个维表,分别表示销售人员、产品、

2021-03-22 00:03:38 627

原创 [数据库]ERROR 3948 (42000): Loading local data is disabled; this must be enabled on报错

使用sql的load语句时,可能出现如下错误:ERROR 3948 (42000): Loading local data is disabled; this must be enabled on解决方案:修改全局变量的值:mysql> SET GLOBAL local_infile=1;Query OK, 0 rows affected (0.00 sec)设置成功后可以看到:mysql> select @@local_infile;+---------------

2021-03-21 23:57:58 1282

转载 [数据结构]C++栈与队列面试问题剖析

文章目录1. C++中stack 是容器么?2.我们使用的stack是属于哪个版本的STL?3. 我们使用的STL中stack和queue是如何实现的?4. stack/queue 提供迭代器来遍历stack/queue空间么?1. C++中stack 是容器么?栈是以底层容器完成其所有的工作,对外提供统一的接口,底层容器是可插拔的(也就是说我们可以控制使用哪种容器来实现栈的功能)。所以STL中栈往往不被归类为容器,而被归类为container adapter(容器适配器)。2.我们使用的sta

2021-03-21 19:56:24 255

转载 [Leetcode]707.设计链表(添加链表的功能接口)

题意:在链表类中实现这些功能:get(index):获取链表中第 index 个节点的值。如果索引无效,则返回-1。addAtHead(val):在链表的第一个元素之前添加一个值为 val 的节点。插入后,新节点将成为链表的第一个节点。addAtTail(val):将值为 val 的节点追加到链表的最后一个元素。addAtIndex(index,val):在链表中的第 index 个节点之前添加值为 val 的节点。如果 index 等于链表的长度,则该节点将附加到链表的末尾。如果 index

2021-03-20 21:26:38 138

原创 [C#]“System.InvalidOperationException”类型的未经处理的异常在 System.Console.dll 中发生

错误提示:“System.InvalidOperationException”类型的未经处理的异常在 System.Console.dll 中发生 : ‘Cannot read keys when either application does not have a console or when console input has been redirected. Try Console.Read.’在OmniSharp Visual Code docs里找到了答案:Console (te

2021-03-19 15:04:12 5819 2

原创 [算法]面试真题:n个整数的无序数组,找到每个元素后面比它大的第一个数,要求时间复杂度为O(n)(C++实现)

题目:n个整数的无序数组,找到每个元素后面比它大的第一个数,要求时间复杂度为 O(n)C++代码实现:#include <iostream>#include <vector>#include <stack>using namespace std;vector<int> findMax(vector<int>num){ if(num.size()==0) return num; vector&l

2021-03-16 10:45:53 542

转载 [C++]C++11移动构造函数及std::move()函数(将左值强制转换为右值)详解

文章目录C++11移动语义是什么C++移动构造函数(移动语义的具体实现)C++11移动语义是什么在 C++ 11 标准之前(C++ 98/03 标准中),如果想用其它对象初始化一个同类的新对象,只能借助类中的复制(拷贝)构造函数。通过《C++拷贝构造函数》一节的学习我们知道,拷贝构造函数的实现原理很简单,就是为新对象复制一份和其它对象一模一样的数据。需要注意的是,当类中拥有指针类型的成员变量时,拷贝构造函数中需要以深拷贝(而非浅拷贝)的方式复制该指针成员。有关深拷贝和浅拷贝以及它们的区别,读者可阅读

2021-03-08 22:01:55 749

原创 [数据库]数据科学OLTP实验

文章目录实验要求实验准备实验过程模型建表1. 客户表2. 账户表3. 交易明细表初始数据插入 3 个用户插入 3 个开户记录插入一些交易记录转账事务处理存款取款开户销户查询交易明细查询余额转账转账和回滚参考资料实验要求在MySQL上(必选)或者Spark SQL上(可选)完成实验,包括数据导入和查询实验, 设计销户。(本人采用的是MySQL)实验准备OLTP(on-line transaction processing)为联机事务处理,主要是对数据的增删改。安装Mysql(Macboo

2021-03-07 11:32:46 509 2

原创 [编译原理]Stanford斯坦福CS143第四周第七章

文章目录(Predictive Parsing)(Predictive Parsing)

2021-01-23 16:08:14 269

原创 [编译原理]Stanford斯坦福CS143第三周第六章

文章目录错误处理(Error Handling)错误处理的要求错误处理的类型Panic Mode(恐慌模式)Error ProductionsAutomatic local or global correction错误处理(Error Handling)编译器的主要目标:检测无效程序编译有效程序有很多种程序可能产生的错误,拿C语言举例:错误类型举例检测器Lexical(词法错误)…$…Lexer(词法检测阶段)Syntax(语法错误)…x*$…Parse

2021-01-22 14:58:15 668

原创 [编译原理]Stanford斯坦福CS143第三周第五章

网课链接:https://www.bilibili.com/video/BV1NE411376V?p=20文章目录Introduction to ParsingContext+Free+GrammarsDerivationsAmbiguityIntroduction to ParsingContext+Free+GrammarsDerivationsAmbiguity参考资料:

2021-01-19 15:41:00 286

原创 解决浏览器上右键无法下载的图片的问题

在你想要的图片的网页界面上,点击电脑的f12键(有触控条的macbook没有f那一排功能键,按住fn然后触控条上就会出现f按键)。切换到Element模块,如下图。点击左上角的小箭头进入界面选择模式。在界面上点击你想要下载的图片, 右面的网页源代码就会跳转到这张图片的代码部分,图片的scr=属性就是图片的链接,右击链接点击Open in new tab(在新的标签页显示)。5. 成功显示后右击图片点击图片另存为即可。方法来源:HTML5教程2020版 1000集完全入门 达到web.

2021-01-03 19:20:31 2883

原创 [图形学]OpenGL实现斯坦福兔子(Stanford Bunny)实验代码

文章目录项目整体文件结构兔子数据main.cppbunny.fs 兔子面元着色器bunny.vs 兔子顶点着色器lamp.fs 灯光面元着色器lamp.vs 灯光顶点着色器camera.h 相机头文件parser.h 读取数据头文件parser.cpp 读取数据源文件select.fs 选取面元着色器select.vs 选取顶点着色器shader.h 着色器头文件运行结果:参考:作者运行环境:XCode Version 12.3 (12C33)需要先自行配置opengl,glfw,glad,glm的环境

2020-12-23 16:27:24 5856 2

原创 [算法]分支界限法——C++实现用优先队列求解任务分配问题

[问题描述]有n(n≥1)n(n≥1)n(n≥1)个任务需要分配给n个人执行,每个任务只能分配给二个人,每个人只能执行一个任务,第iii个人执行第jjj个任务的成本是C[i][j](1≤i,j≤n)C[i][j](1≤i, j≤n)C[i][j](1≤i,j≤n)。 求出总成本最小的一种分配方案。#include <queue>#include <iostream>using namespace std;#define INF 0x3f3f3f3f#define MA

2020-12-14 23:15:13 1205

原创 [算法]动态规划题目C++代码实现

题目来源:https://www.cnblogs.com/hithongming/p/9229871.html文章目录编号动态规划:最大不下降子序列划分动态规划数轴动态规划:0-1背包前缀动态规划:最长公共子序列(LCS)编号动态规划:最大不下降子序列从序列中选出若干个数组成一个新的序列,不改变他们的队伍的顺序,要求新的序列里xi≤xi+1≤xi+1…举个例子{4,6,5,7,3},最长不下降子序列就是{4,6,7}。#include <iostream>#include &l.

2020-12-13 19:55:59 611

原创 [Opengl]OpenGL图形编程项目实战1-4章代码

目录第一章 计算机图形学概论第二章 图形变换第三章 图形建模绘制二维几何体绘制奥运五环运行环境:系统:macOSBigSur11.0.1macOS Big Sur 11.0.1macOSBigSur11.0.1IDE:Xcode Version12.2(12B45b)Xcode\ Version 12.2 (12B45b)Xcode Version12.2(12B45b)采用的OpenGL第三方库:GLUTGLUTGLUT第一章 计算机图形学概论调用OpenGL提供的茶壶、

2020-12-08 12:19:29 4344

原创 [openGL]光栅化画100000条直线,分别采用直接画线法、中点画线法和Bresenham算法

采用的环境是Xcode Version 12.2 (12B45b)。#ifdef __APPLE__/* Defined before OpenGL and GLUT includes to avoid deprecation messages */#define GL_SILENCE_DEPRECATION#include <OpenGL/gl.h>#include <GLUT/glut.h>#else#include <GL/gl.h>#include

2020-11-25 15:41:32 693

原创 [Linux]页框和伙伴算法+slab机制

目录页框和伙伴算法slab机制页框和伙伴算法页框定义内核使用struct page结构体描述每个物理页,也叫页框。场景:内核在很多情况下,需要申请连续的页框,而且数量不定,比如4个,5个,9个等。伙伴算法实现:Linux把所有的空闲页框分组成为11个块链表,每个链表上的页框块是固定的。在第i条链表中每个页框块都包含2的i次方个连续的物理页。该算法用于申请多个连续的物理块。最多可以申请的连续物理块的个数为2102^{10}210,一个页面是4K大小,所以申请的连续内存大小为4M4M4

2020-11-14 17:27:15 566

原创 [算法]给出一种方法求无环带权连通图(所有权值非负)中从顶点s到顶点t的一条最长简单路径

问题描述:给出一种方法求无环带权有向连通图(所有权值非负)中从顶点s到顶点t的一条最长简单路径思路:Bellman_Ford算法和SPFA算法都可以适用于存在负边权的图求单源最短路径(无回路),因此可以将图中所有边的权值都设置为相反数,求出从顶点s到顶点t的一条最短简单路径,他就是原来图中s到t的最长路径。下面代码采用的是SPFA算法,Bellman_Ford算法相比之下复杂度较高,不过同样可行。代码的不足之处为:虽然能解决问题,但是完全照搬了SPFA算法,求出了s到所有顶点的最短路径,浪费

2020-11-12 10:34:35 901

原创 [算法]两种水果杂交出一种新水果,现在给新水果取名,要求这个名字中包含了以前两种水果名字的字母,并且这个名字要尽量短。

问题:两种水果杂交出一种新水果,现在给新水果取名,要求这个名字中包含了以前两种水果名字的字母,并且这个名字要尽量短。也就是说以前的一种水果名字arr1是新水果名字arr的子序列,另一种水果名字arr2也是新水果名字arr的子序列。设计一个算法求arr。例如:输入以下3组水果名称:apple peachananas bananapear peach输出的新水果名称如下:appleachbananaspearch分析:先求arr1arr1arr1和arr2arr2arr2的最长公共

2020-11-11 19:03:28 3615 1

原创 [HTML]解决html5中设置的颜色和浏览器显示的颜色不一致的问题

用html写网页的时候发现我设置的颜色和Chrome浏览器显示的颜色不同,主要原因在目前的html5已经不兼容之前html用bgcolor参数来设置颜色,而需要使用css的方式来设置背景颜色。原来html设置背景色的方式:<body bgcolor="#74759b">应该显示的颜色:实际chrome显示的颜色:(非常迷惑)虽然没有报错,但是有如下警告(Visual Studio Code作为IDE):Background color for the document. Th

2020-10-23 15:38:29 3794 1

原创 [机器学习]评价指标:召回率(Recall)、准确率(Precision)、f1-score、Hit Ratio(HR)、NDCG、MAP(MARR)

目录召回率(Recall)精确率(Precision)F1-scoreHit Ratio(HR)Normalized Discounted Cummulative Gain(NDCG)平均精度均值MAP(Mean Average Precision)在人工智能算法中,算法实现,训练模型完成后,为了判定算法的好坏,需要对训练的模型进行评价,本文介绍一些用于时空数据挖掘(STDM)中POI预测的评价标准。场景假设假如某班有女生20人,男生80人,共计100人.目标是找出所有女生,某人(分类器)挑选出

2020-10-11 14:08:51 22810

原创 [算法] 采用递归回溯法设计一个算法求1~n的n个整数中取出m个元素的排列,要求每个元素最多只能取一次。

采用递归回溯法设计一个算法求1~n1~n1~n的nnn个整数中取出mmm个元素的排列,要求每个元素最多只能取一次。例如,n=3n=3n=3,m=2m=2m=2的输出结果是(1,2),(1,3),(2,1),(2,3),(3,1),(3,2(1,2),(1,3),(2,1),(2,3),(3,1),(3,2(1,2),(1,3),(2,1),(2,3),(3,1),(3,2)。思路:先从nnn个数中取出mmm个数(组合问题)。再对mmm个数进行全排列。输出排列。C++实现如下:////

2020-10-10 15:43:03 3872 1

原创 关于解决VScode文件无法编辑的问题

很多时候我们用VSCode打开其他人发来的文件或者修改配置文件时,会发现文件不可以修改。其实并不是文件不可以修改,只是VSCode编辑采取了类似于Vim编辑器的模式,键入i才可以进行修改,修改完成后键入Command+S(MacOS)或Control+S(Windows)是没有办法保存的,需要键入 esc,再键入wq才可以保存。详细的vim编辑器的使用操作可以参考[MIT公开课(计算机教育中缺失的一课)]3.编辑器(Vim)。...

2020-10-08 00:39:02 11725 2

原创 [算法]对于大于1的正整数n,可以分解为n=x1*x2*…*xm,其中xi≥2,设计一个算法求n的不同分解式个数。

问题:对于大于1的正整数nnn,可以分解为n=x1∗x2∗…∗xmn=x1*x2*…*xmn=x1∗x2∗…∗xm,其中xi≥2xi≥2xi≥2。例如,n=12n=12n=12时有8种不同的分解式:12=12,12=62,12=43,12=34,12=322,12=26,12=232,12=223,设计一个算法求nnn的不同分解式个数。思路:分治递归。求分解数即求n的所有因数的不同分解数之和。设f(n)f(n)f(n)为n的不同分解数之和,有:C++代码如下:# include <iostre

2020-09-28 16:53:38 5090

原创 [Python]距离量度(欧氏距离、曼哈顿距离、切比雪夫距离、夹角余弦距离)

目录欧氏距离(Euclidean Distance)曼哈顿距离(Manhatttan Distance)切比雪夫距离夹角余弦距离(Cosine Distance)欧氏距离(Euclidean Distance)代码:import numpy as npx=np.array([1,1])y=np.array([4,5])from math import *def e_disdance(x,y): return sqrt(sum(pow(a-b,2) for a,b in zip(x

2020-09-28 11:34:08 3387 1

原创 [Python机器学习]强化学习笔记(嵩天礼欣老师mooc第三周)

目录强化学习定义马尔科夫决策过程基本元素值函数最优值函数最优控制Q-Learning强化学习定义举例:目标:在每种状态下采取最优的动作。学习目标:获得最优策略以使累计奖励最大(即score)。马尔科夫决策过程马尔科夫决策过程(MDP:Markov Decision Process)通常用来描述一个强化学习问题。智能体agent根据当前对环境的观察采取动作获得环境的反馈并使环境发生改变的循环过程。基本元素值函数值函数V表示执行策略π能得到的累计折扣奖励。状态动作值函数Q(s

2020-09-27 16:07:17 217

原创 [OpenGL]解决MacOs上Xcode报错“‘glTranslatef’ is deprecated: first deprecated in macOS 10.14”

10.9以上的MacOS系统OpenGL有了新的API来替代之前的GLUT库,之前的GLUT库里很多函数被标记为了deprecated,即将废弃的,但是考虑兼容性,当前系统版本还是支持的。下面介绍如何消除这些警告提示。报错如下:'glTranslatef' is deprecated: first deprecated in macOS 10.14 - OpenGL API deprecated. (Define GL_SILENCE_DEPRECATION to silence these warn

2020-09-25 18:20:47 5393 2

原创 [MIT公开课(计算机教育中缺失的一课)]10.大杂烩

上一讲:安全和密码学下一讲:目录

2020-09-04 09:14:02 465

原创 [MIT公开课(计算机教育中缺失的一课)]9.安全和密码学

(该系列文章大部分内容来源于MIT课程笔记,加入了个人的理解、原笔记中没有的细节和其他的需要理解的内容,公开课地址:https://www.bilibili.com/video/BV14E411J7n2?p=1)上一讲:元编程下一讲:目录熵散列函数密码散列函数的应用密钥生成函数密钥生成函数的应用对称加密对称加密的应用非对称加密非对称加密的应用密钥分发案例分析这一讲我们将关注比如散列函数、密钥生成函数、对称/非对称密码体系这些安全和密码学的概念是如何应用于前几节课所学到的工具(Git和SSH)中的

2020-09-02 16:56:19 741 2

原创 [MIT公开课(计算机教育中缺失的一课)]8.元编程

(该系列文章大部分内容来源于MIT课程笔记,加入了个人的理解、原笔记中没有的细节和其他的需要理解的内容,公开课地址:https://www.bilibili.com/video/BV14E411J7n2?p=1)上一讲:调试及性能分析下一讲:目录构建系统我们今天要讲的东西,更多是关于流程 ,而不是写代码或更高效的工作。本节课我们会学习构建系统、代码测试以及依赖管理。必须要指出的是,“元编程” 也有用于操作程序的程序 之含义,这和我们今天讲座所介绍的概念是完全不同的。构建系统...

2020-09-02 15:20:49 316

原创 [MIT公开课(计算机教育中缺失的一课)]7.调试及性能分析

(该系列文章大部分内容来源于MIT课程笔记,加入了个人的理解、原笔记中没有的细节和其他的需要理解的内容,公开课地址:https://www.bilibili.com/video/BV14E411J7n2?p=1)上一讲:版本控制(git)下一讲:目录调试代码打印调试法与日志颜色输出格式参数含义第三方日志系统调试器专门工具静态分析性能分析计时调试代码打印调试法与日志调试代码的第一种方法往往是在您发现问题的地方添加一些打印语句,然后不断重复此过程直到您获取了足够的信息并找到问题的根本原因。另外

2020-09-01 15:31:22 333

原创 [MIT公开课(计算机教育中缺失的一课)]6. 版本控制(git)

(该系列文章大部分内容来源于MIT课程笔记,加入了个人的理解、原笔记中没有的细节和其他的需要理解的内容,公开课地址:https://www.bilibili.com/video/BV14E411J7n2?p=1)上一讲:命令行环境下一讲:目录Git 的数据模型快照版本控制系统 (VCSs) 是一类用于追踪源代码(或其他文件、文件夹)改动的工具。顾名思义,这些工具可以帮助我们管理代码的修改历史;不仅如此,它还可以让协作编码变得更方便。VCS通过一系列的快照将某个文件夹及其内容保存了起来,每个快照都

2020-08-31 16:16:36 510

原创 [MIT公开课(计算机教育中缺失的一课)]5.命令行环境

上一讲:数据整理下一讲:目录

2020-08-29 15:25:41 471

空空如也

空空如也

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

TA关注的人

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