自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 操作系统面经汇总

每次调度时,把CPU分配给队首进程,并令其执行一个时间片,时间片的大小从几ms到几百ms,当执行的时间片用完时,由一个计时器发出时钟中断请求,调度程序便据此信号来停止该进程的执行,并将它送往就绪队列的末尾。该算法既可用于作业调度,也可用于进程调度,当在作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。信号可以在任何时候发给某一进程,而无需知道该进程的状态,如果该进程当前未处于执行状态,则该信号由内核保存起来。

2023-02-27 00:07:56 367

原创 java之JVM

JVM主要包括类加载器,运行时数据区以及执行引擎类加载器:用来加载一个类运行时数据区执行引擎:解释器,即时编译器。

2023-02-21 23:22:35 439

原创 计算机网络

如果遇到重传计时器溢出,就将慢开始门槛变成阻塞时候窗口值的一半,阻塞窗口变为1。遇到三次ACK的情况采用FRR算法(图中4情况)ssthresh变为阻塞窗口的一半,阻塞窗口也变为一半,所以直接开始阻塞避免算法。比如你请求某个用户的信息,服务端并没有找到指定的用户。502 Bad Gateway :我们的网关将请求转发到服务端,但是服务端返回的却是一个错误的响应。一般用来针对非法请求。201 Created :请求被成功处理并且在服务端创建了一个新的资源。接收窗口的大小是根据接收端处理数据的速度动态调整的。

2023-02-10 17:09:40 870

原创 java面经汇总

AQS 核心思想是,如果被请求的共享资源空闲,则将当前请求资源的线程设置为有效的工作线程,并且将共享资源设置为锁定状态。如果被请求的共享资源被占用,那么就需要一套线程阻塞等待以及被唤醒时锁分配的机制,这个机制 AQS 是用 CLH 队列锁 实现的,即将暂时获取不到锁的线程加入到队列中。HashMap 在解决哈希冲突时有了较大的变化,当链表长度大于阈值(默认为 8)时,将链表转化为红黑树(将链表转换成红黑树前会判断,如果当前数组的长度小于 64,那么会选择先进行数组扩容,而不是转换为红黑树)

2023-02-09 10:43:06 351

原创 leetcode之动态规划

动态规划就是现在的状态由上一个状态推导而来。

2023-02-04 14:16:42 83

原创 leetcode回溯法总结

回溯算法可以抽象为树形结构,回溯法解决都是在集合中递归查找子集,集合的大小构成树的宽度,递归的深度构成树的深度。for循环横向遍历、递归纵向遍历,回溯不断调整结果集。

2022-11-19 20:21:46 406

原创 leetcode字符串

在Java中String是引用数据类型。注意比较相等与否使用equals函数。寻找前缀表,构建next数组。

2022-11-02 15:59:31 195

原创 leetcode哈希表

首先调用key1所在类的hashcode计算哈希值,此哈希值经过某种算法计算后,得到在entry数组中存放的位置。预设一个数组空间存储,首先计算哈希值,通过哈希值确定存在数组空间的位置,然后位置冲突之后再比较哈希值和equals,位置冲突时以链表形式存。如果哈希值存在相同的情况,则比较equals,如果不一样,则添加成功,如果一样,使用value1替换原value值。涉及到扩容问题,超过临界值并且要添加的位置不为空的时候扩容,默认的扩容方式扩容为原来的2倍。哈希函数是把传入的key映射到符号表的索引上。

2022-11-01 22:45:46 217

原创 leetcode之链表

环形链表:判断是否是环形,一个slow指针,一个fast指针,slow每次加一,fast每次加二,若相等就有环。然后设置一个index指向链表头节点,这个指针和相遇节点的指针一起同步next然后就会在入口相遇。链表相交:双指针法,如果链表相交,则肯定是末尾对齐的,这样遍历找交点。删除倒数第N个节点:双指针法,两个指针中间隔N。一些技巧:虚拟头结点。

2022-10-26 23:04:35 138

原创 leetcode记录专题一数组

滑动窗口的精妙之处在于根据当前子序列和大小的情况,不断调节子序列的起始位置。注意循环不变量,左闭右闭,left

2022-10-21 23:39:42 70

原创 操作系统pagetable

MMU(内存管理单元),MMU负责将虚拟内存映射到物理内存,page table是存在内存中而不是MMU中,page table的地址存在cpu寄存器satp中,所以MMU并不会保存page table,它只会从内存中读取page table,然后完成翻译。MMU是硬件的一部分而不是操作系统的一部分。三级结构的缺点是,CPU必须从内存加载三个PTE,才能将虚拟地址转化为物理地址,因此设置TLB,(translation look-aside buffer),将最近使用过的虚拟地址的翻译结果缓存。

2022-10-16 22:55:22 874

原创 操作系统Organization and System Calls

操作系统要满足的要求:多路复用、隔离和交互微内核。

2022-10-08 16:55:42 205

原创 计算机基础-重定位

先使用静态链接器生成部分链接的可执行目标文件,然后通过动态链接器在存储空间中生成完全链接的可执行目标。共享库:Windows中.dll文件,Linux中.so文件。静态库有一些缺点:主要是资源浪费以及更新困难。在第一次加载并运行时进行。在已经开始运行后进行。

2022-10-05 16:36:39 226

原创 计算机基础--符号及符号表

注意局部变量分配在栈中,不在过程外被引用,不算符号定义。强符号:函数名以及已经初始化的全局变量名;E:将被组成可执行文件的目标文件集合。.symtab节记录符号表信息。弱符号:未初始化的全局变量名;全局符号、外部符号、局部符号。U:当前未解析的引用符号集合。D:当前所有定义符号集合。

2022-10-03 19:29:52 2428

原创 计算机基础学习记录

相比可重定位文件来说,ELF头中多了执行程序地址;多了程序头表,记录段的信息,描述可执行文件中的节与虚拟地址中的存储段的映射关系;多了init节,初始化,少了重定位节。深色部分都是要占用虚拟内存空间的,注意bss不占用磁盘空间,就是在可重定位文件中,他不占空间,只是在节头表中记录起始地址和长度。然后可执行文件再将其映射到虚拟内存空间地址。经过编译和链接两个过程生成可执行文件。可重定位文件链接得到可执行文件。记录每一个节所对应的信息。映射关系:注意对齐方式。ELF可执行文件生成。

2022-10-02 20:48:50 113

原创 操作系统lab:Xv6 and Unix utilities

xv6环境配置,教程。注意事项,在配置的过程中出现问题,infinite-recursion错误。error.实现sleep:主要考察知识点,读取命令行参数,以及调用系统调用sleep实现pingpong:主要考察知识点,建立fork和pipe,以及父进程中wait的使用,等待子进程退出。fork()可以创建子进程,子进程会完整的拷贝父进程的内存参数等。pipe是一个建立在内存中的管道,用来进行数据传输,主要的方法有read以及write。注意管道分为读出端和写入端,分别是不同的文件描述符。

2022-10-02 20:34:28 311

原创 操作系统学习记录

6.S081著名网课学习记录。课程链接,

2022-09-29 19:48:32 137

原创 盲人智能眼镜手机APP开发之目标识别的移植

目标识别模型导入关于目标识别模型的导入,过程中也存在很多问题,踩了很多坑,尝试过基于pytorch的yolo模型,尝试过基于paddlepaddle框架的ssd模型,都存在一些问题。最终还是采用基于paddle-lite的moblile_net ssd模型成功导入。记录一下探索的过程,以及在此期间遇到的问题。一.pytorch框架向android studio 的移植问题一:pytorch框架的版本问题,pytorch与android studio之间的平台移植是最近才开发的技术,所以还存在一些问

2021-06-08 11:46:44 600

原创 简单记录:VSCODE连接远程服务器

记录一下vscode连接实验室远程服务器,过程比较简单。一:开启SSH确保自己电脑可以正常使用ssh连接服务器二: 添加插件添加插件remote-ssh,详情参考三:遇到的问题遇到无法建立连接的问题,解决方法...

2021-04-09 16:19:03 208

原创 ROS问题记录(持续更新)

python节点无法使用roslaunch正常启动问题描述网上查找有说是因为交叉编译的原因,但是没有给出具体的解决方法,然后就根据问题描述自行进行修改。解决办法在python文件开头加上#!/usr/bin/python路径,告诉系统使用此解释器编译此脚本文件。...

2021-03-22 11:07:05 141

原创 视觉SLAM十四讲(一)--配置vscode编译环境

最近打算系统学习一下SLAM的知识,高翔博士的《视觉SLAM十四讲》是一本不错的入门课程,于是打算开个专题记录一下学习过程中出现的问题以及学习心得。配置vscode C++编译环境由于此教程的大部分代码都是由C++完成,为了方便在ubuntu系统下进行编程实践,所以使用Vscode集成环境进行代码编写,之前已经进行过简单的编译环境的配置,现在主要记录一下,当需要一个新的头文件的时候如何添加到编译环境中。vscode环境的配置主要有三个比较重要的文件,tasks.json,launch.json以及c_

2021-03-19 15:23:04 1502

原创 ROS与Web的交互---编写websocket客户端

主控和语音控制模块之间预计使用websocket进行通信,其中主控作为服务端,所以需要在语音控制模块部分编写一个websocket客户端与主控进行连接,记录一下探索过程。rosbridge最初的探索焦点集中于ros系统上,目标是寻找合适的ros功能包能够直接与websocket相连接,参考此教程发现rosbridge功能包是一个专门为ros与web交互所创建的功能包。不过在探索中发现,rosbridge提供的功能只有websocket服务端,不能直接写客户端,和我们的需求有所不同。不过也还是有使用的价值

2021-03-10 18:04:28 2545 1

原创 探索使用科大迅飞语音包控制机器狗(五)--实现基础语音播报功能

已经实现了的功能:实时语音流控制机器狗的运动预期实现的功能还有将机器狗的状态进行语音播报,先记录一下实现过程。我的设计思路是这样的,首先进行snowboy语音唤醒,然后唤醒后进入语音识别功能,之后运动控制部分订阅语音识别的消息进行相应的动作,并且发布消息给语音合成模块进行状态的播报。移植语音合成SDK首先要先移植语音合成SDK,所使用的还是科大讯飞SDK,移植方式和之前的语音识别部分类似,也是将给的源码修改成cpp文件即可,并编写订阅器接收话题消息。主要需要修改回调函数和主函数部分。void

2021-02-24 17:20:57 715 1

原创 ubuntu下配置vscode环境编译运行C/C++

在ubuntu下使用vscode编译器来编写代码更加方便,记录一下简单的环境配置过程。

2021-02-03 18:49:55 565

原创 roboware的使用

安装roboware相当于一个专门适配ROS的vscode,功能性十分强大,几乎所有与ROS相关的操作都可以在IDE中完成。目前官网已经挂掉,可以选择百度云安装:https://pan.baidu.com/s/1D169dFyf2OD3SFBZVZy3pQ密码:3iuk或者去github上下载安装。安装参考教程。值得注意的是,我在进行安装包解压的时候遇到了问题:安装依赖有问题。解决方法:安装完成效果:...

2021-01-29 17:34:43 2845

原创 树莓派snowboy在ROS中的使用

Snowboy移植到ROS中之前已经单独测试过snowboy模块的使用,唤醒效果还是很好的,但是在与科大讯飞的语音识别SDK相结合的时候出现了问题。我一开始的想法是直接在原工作区间创建一个功能包,然后把snowboy移植过去,再编写一个发布器在语音唤醒后发布消息,然后语音识别接收到消息开始工作就可以。不过移植过去后编译一直出现问题。然后我在网上找到了一个成功移植的案例,按照此方案成功的进行了移植。记录一下出现的问题找不到功能包,因为述方案使用了另外的音频捕获功能包,所以需要单独下载。解决方法

2021-01-27 17:25:35 827 1

原创 实时语音流控制机器狗

问题记录启动文件的时候遇到了问题,经过排查,iat_sub节点无法启动的原因是在Cmake文件中没有创建链接。不过python文件的节点是不用专门在编译文件中链接的,经过排查,不能启动节点的原因是脚本文件的权限不够,没有把其设为可执行文件。最终成功解决问题:演示效果:...

2021-01-19 18:18:11 210

原创 树莓派使用实时语音流实现语音识别

实时语音流树莓派之前的语音识别模块是通过识别录制文件工作的,录制音频文件使用的是USB麦克风,效率相对比较低。树莓派自带的声卡是不具备实时语音流的功能的,甚至不具备录制音频的功能。所以需要购置另外的声卡进行语音的交互功能。使用材料目前所使用的声卡的型号以及麦克风和扬声器的类型。声卡采用的是耳麦分离款免驱动USB声卡,麦克风和扬声器都是3.5mm接口,其中扬声器另外接USB进行供电。初始时遇到的问题是因为树莓派默认声卡设置不成功,预计的效果的是使用外置声卡可以进行实时语音识别的功能,但是将外置声卡设

2021-01-17 20:17:46 4236 3

原创 SLAM文章调研

进行了近年来的各大顶会的与SLAM相关的论文调研工作,将论文资料整理如下CVPRCVPR 2020题目:Neural Topological SLAM for Visual Navigation论文相关工程环境CVPR 2019题目:An Efficient Schmidt-EKF for 3D Visual-Inertial SLAM题目:BAD SLAM: Bundle Adjusted Direct RGB-D SLAMgithub开源代码CVPR 2018

2020-12-31 09:06:44 316

原创 树莓派离线语音唤醒snowboy

语音唤醒为了节约树莓派资源,延长使用时间,考虑使用语音唤醒服务。初步有两种解决方案,一个是使用一直在用的科大讯飞语音服务,一个是使用snowboy语音唤醒引擎,来分析比较一下两者的优劣。科大讯飞重新进行SDK的申请,值得注意的是,语音唤醒词和SDK是捆绑的,要是想要更换语音唤醒词的话必须要重新下载SDK文件。这次我下载的SDK文件和上次的有所不同,选择了离线命令词识别,离线语音合成以及语音唤醒服务,探索想要达成的服务功能是进行语音唤醒然后命令词控制机器狗作不同的动作并且作出语音反馈。不过科大讯飞的

2020-11-27 09:10:08 3539 1

原创 学习编写ubuntu控制shell脚本---自动循环

shell脚本承接机器狗的需求,继续探索学习编写shell脚本文件的写法,参考教程。要想达成自动循环的效果我的想法是设置一个while循环一直自动执行。#!/bin/bashcd /home/liuda/spotmicro/src/spotMicro/robot_voice/bin/wavwhile truedo sudo arecord -D "plughw:1,0" -d 5 -r 16000 -c 1 -t wav -f S16_LE test.wav rostopic pub /voi

2020-11-24 16:49:56 1440

原创 探索使用科大讯飞语音包控制机器狗(四)--初步成果以及问题

语音控制初步达成通过usb麦克风进行语音控制小狗运动的效果。iat_publish.cpp修改由于我们想要达成的效果是向麦克风说话来控制机器狗,所以不再需要多余的选择文件等输入。我之前的代码全部默认wakeupFlag等于1,即时刻处于唤醒状态,然后通过键盘输入来选择识别哪个音频文件。本次代码修改了wakeupFlag,使其需要被唤醒,唤醒之后就立即去识别刚刚录入的音频文件。 int main(int argc, char* argv[]) { // 初始化ROS

2020-11-24 15:13:00 536

原创 树莓派语音交互--语音输入识别

音频输入之前的树莓派语音识别所用的输入源全都是提前使用电脑PC端进行音频文件的制作然后进行的识别。当时购置了专用的usb麦克风但是录制的音频文件格式有问题导致识别成功率很低,不过又重新探索了一下usb麦克风的使用方法,实现了通过树莓派自身硬件完成音频文件的录制和识别并控制机器狗运动的功能。参考教程基础usb麦克风的配置,修改录入音频文件格式。录制命令sudo arecord -D "plughw:1,0" -d 5 -r 16000 -c 1 -t wav -f S16_LE test.wav

2020-11-24 09:45:50 3041

原创 ubuntu系统上传github项目

github是一个十分有用的开源社区,之前对其的应用一直停留在git clone阶段,最近想要记录一下自己的代码项目,做一个备份。参考教程进行项目上传,经过实际验证可以使用。

2020-11-23 10:57:52 112

原创 探索使用科大讯飞语音包控制机器狗(三)--控制小狗移动(语音控制脚本)

之前已经初步探索了语音识别的可能性以及单独控制机器狗运动的脚本编写,现在探索使用语音识别初步控制小狗运动,由于树莓派收声部分还有些问题,所以初步探索使用录入的音频文件进行识别。编写发布器编写发布器发布语音识别的结果。源码只展示主函数的部分,需要注意的地方是,对于音频文件的存放路径int main(int argc, char* argv[]){ ros::init(argc, argv, "voiceRecognition"); ros::NodeHandle n;

2020-11-22 16:01:57 1628

原创 探索使用科大讯飞语音包控制机器狗(三)--控制小狗移动(控制脚本修改)

上一篇文章尝试了将语音识别SDK移植到机器狗树莓派主控上,最终也是出现了一些问题,但是验证了语音识别的可行性。本篇文章主要来改写机器狗的控制脚本,为接下来的语音控制作铺垫。编写启动文件因为原先的启动步骤比较繁琐,所以尝试编写一个launch文件启动所有节点。<?xml version="1.0" encoding="utf-8"?><!-- Launch file --><launch> <!-- Defining the node and exe

2020-11-20 10:25:31 1548

原创 探索使用科大讯飞语音包控制机器狗(三)--控制小狗移动(语音识别移植)

上一章进行了初步的源码阅读以及简单修改移植,本章的目标是将SDK文件同机器狗的控制文件相结合,达到语音控制小狗运动的效果。

2020-11-18 11:30:28 954

原创 探索使用科大讯飞语音包控制机器狗(二)--代码修改

上一篇文章进行了简单的SDK移植应用,但是我想达成的效果同示例的功能还是有区别,所以这篇文章探讨记录一下代码的实现原理和修改方法。语音合成代码1.官方源码/** 语音合成(Text To Speech,TTS)技术能够自动将任意文字实时转换为连续的* 自然语音,是一种能够在任何时间、任何地点,向任何人提供语音信息服务的* 高效便捷手段,非常符合信息时代海量数据、动态更新和个性化查询的需求。*/#include <stdio.h>#include <string.h&gt

2020-11-12 17:33:21 1741 1

原创 探索使用科大讯飞语音包控制机器狗(一)--SDK移植

项目介绍基于开源社区spotmicro四足机器狗以及科大讯飞语音识别SDK进行机器狗语音控制的初步探索。目标实现的功能:语音控制:发布指令可以控制狗的动作语音交互:机器狗将其状态通过语音播报语音导航:发布地点信息,机器狗自动寻路科大迅飞语音包的配置1.下载与安装安装教程2.功能测试语音识别:参考教程问题描述:在第四步时发生报错检测不到头文件,不知道是不是我的ubunut版本的问题,我使用的是ubuntu18.04,将头文件都添加到include文件夹下时检测不到,所以我直接简单粗

2020-11-11 21:06:32 1316

原创 ROS探索记录1

ROS探索记录从小白开始记录自己学习ROS的过程,主要记录自己的学习历程以及出现的问题,方便自己以后的查阅。检查ROS版本不同的ubuntu系统适配不同的ROS版本,不同的ROS版本的命令控制有所不同,如果忘记的话可以使用如下命令进行查阅。打开终端输入roscore打开一个新的终端输入rosparam list继续输入rosparam get /rosdistro...

2020-09-21 16:34:52 128

空空如也

空空如也

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

TA关注的人

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