自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android Native 开发 要点记录

target_link_libraries 链接 jniLibs 中的库文件,jniLibs 文件夹位置如图所示,里面可以把需要的架构库进行添加。2. find_library 搜索指定的库文件,并将其链接到目标文件中,示例如下。4. build.gradle 配置 CMakeLists.txt 路径。1. target_link_libraries 链接操作。5. build.gradle 配置 Cmake 编译选项。Android Studio 中写 C++ 代码。CMakeLists.txt 讲解。

2023-10-11 12:04:17 318 1

原创 多源汇最短路问题—Floyd算法

对于求多源汇最短路的问题,我们使用Floyd算法。这个算法的实现思路也是很简单的,网上的题解也很多。简单来总结以下,这个算法是基于动态规划的,我们定义d[k, i ,j]为i点到j点途径k点的最短路径,i, j, k的取值范围为1~n,即图中的每一个点。那么这个状态怎样转化来呢,很简单d[k, i, j] = d[k - 1, i, k] + d[k - 1, k, j],这就是Floyd的状...

2020-05-05 11:39:25 416

原创 存在负权边的单源最短路问题—Bellman-Ford算法及其优化SPFA算法

1、Bellman-Ford算法是用来处理图中存在负权边的最短路情况,当图中有负权边时,Dijkstra()就不能用了,计算出的最短路会有问题。这里要注意若图中存在负权回路,最短路很可能不存在(在负权回路不影响我们想要走过的路径时,不影响结果),Bellman-Ford算法的思路是非常简单的,其应用场景也比较有限。首先在进行松弛操作的时候,需要注意,要用上一次更新过的距离来更新其他节点,即需要...

2020-05-05 10:57:21 3359

原创 单源最短路问题(1)—朴素Dijkstra算法及其堆优化

常见的最短路问题分为两类:单源最短路(从一个点到其他所有点)、多源汇最短路(任意两点)1、在单源最短路问题中,若所有的边都是非负数,使用Dijkstra算法;若存在负权边,那么可以使用Bellman-Ford算法,SPFA是对前者优化。关于算法原理的介绍有很多,这里不再详述。(1)朴素Dijkstra算法,时间复杂度O(n ^ 2),通常在稠密图的时候使用(边的数量级大概为点的数量级的平方...

2020-05-04 23:31:14 548

原创 关于树

大部分学习所得来自:《STL源码剖析》侯捷首先,STL中的容器分为序列式容器和关联式容器。在后者中set、map、multiset、multimap,底层机制以RB-tree(红黑树)完成;hash_set、hash_map、hash_multiset、hash_multimap,底层机制由hashtable完成。一般而言,关联式容器的内部结构是一个balanced binary tree...

2020-04-30 11:38:57 209

原创 哈希表实战经验

哈希表的作用:简单来说就是将一个庞大的值域(复杂的数据结构)映射到一个较小的空间(例如0 ~ N,N 为1e5或1e6等比较小的数)通常写哈希函数最简单方法就是:例如:h(x) = x mod 10^5,将很大的x映射到10^5内。但是往往会面临冲突,因为值域太大,经过哈希函数的计算映射的值相同。那么如何处理冲突呢?线性探测、二次探测、开链这里介绍哈希表的两种存储结构:(1)开放寻址法(这...

2020-04-29 18:23:37 273

原创 Jetsonnano上手:人脸识别的智能门铃应用

例程完整代码参看http://tiny.cc/doorcam。上手jetsonnano不久,这里将跑过的一个例程贴出来,用于记录和填坑。该例程应用人脸识别跟踪每一个走到家门口的人。CSI摄像头的使用:https://github.com/JetsonHacksNano/CSI-Cameraface_recognition:https://github.com/ageitgey/face...

2019-11-06 10:01:13 1641

原创 ROS 介绍:定义、架构、通信机制

ROS介绍ROS是什么:ROS是一个用于编写机器人软件的灵活框架,它集成了大量的工具、库、协议,提供了类似操作系统所提供的功能,包括硬件抽象描述、底层驱动程序管理、共用功能的执行、程序间的消息传递、程序发行包管理,可以极大简化繁杂多样的机器人平台下的复杂任务创建与稳定行为控制。ROS的架构ROS的架构设计分为三层,下面通过介绍两代ROS之间的设计变化来引出通信机制。1. OS层...

2019-10-30 11:27:11 9241

原创 ROS两节点通信 可同时订阅与发布消息

在处理ROS节点通信时,节点a发布消息,节点b进行订阅。这时常常会有需要将节点b接收到的消息进行处理之后,重新发布,a进行订阅。本人是新手,简单代码如下:node_a:#include <ros/ros.h>#include "std_msgs/String.h"#include <string>#include <sstream> vo...

2019-10-29 11:05:33 2524

原创 C++ 运算符重载与类型转换

1、当一个重载的运算符是成员函数时,this绑定到左侧运算对象。成员运算符函数的(显式)参数数量比运算对象的数量少一个。通常情况下,不应该重载逗号、取地址、逻辑与和逻辑或运算符。关于重载运算符的返回类型(应与其内置版本的返回类型兼容):逻辑和关系运算符应该返回bool,算术运算符应该返回一个类类型,赋值运算符和复合赋值运算符应该返回左侧运算对象的一个引用。关于将运算符定义为成员...

2019-10-26 16:02:43 562

原创 C Primer 拷贝控制

1、拷贝构造函数的基本概念:如果构造函数的第一个参数是自身类类型的引用,且其他所有参数(如果有的话)都有默认值,则此构造函数是拷贝构造函数。使用情况:拷贝初始化(用=定义变量)、其他拷贝初始化的情况(将一个对象作为实参传递给一个非引用类型的形参、从一个返回类型为非引用类型的函数返回一个对象、用花括号列表初始化一个数组中的元素或一个聚合类中的成员、初始化标准库容器或是调用其insert或...

2019-10-24 22:32:38 175

原创 C++ Primer 12章 动态内存 学习笔记

12.1、动态内存与智能指针静态内存:用于保存局部static对象、类static数据成员以及定义在任何函数之外的变量。(static对象在使用之前分配,程序结束销毁。)栈内存:用来保存定义在函数内的非static对象。(栈对象,仅在程序块运行时存在)分配在静态或栈内存中的对象由编译器自动创建和销毁。智能指针:shared_ptr(允许多个指针指向同一个对象),unique_ptr...

2019-10-15 17:27:18 159

原创 第十一章 关联容器 学习笔记

11.1、使用关联容器//11.4单词计数程序,程序扩展,忽略大小写和标点#include<iostream>#include<fstream>#include<map>#include<string>#include<algorithm>using namespace std;string &tran...

2019-10-11 09:45:19 160

原创 C++ Primer5 第十章 学习笔记

10.2、初识泛型算法1、只读算法//对vec中的元素求和,和的初值是0,头文件是numericint sum = accumulate(vec.cbegin(), vec.cend(), 0);//将vector中所有的string元素连接起来string sum = accumulate(v.cbegin(), v.cend(), string(""));//equal...

2019-10-08 11:17:37 233

原创 第九章 顺序容器 方便查询

顺序容器概述关于容器关系运算符的使用关系运算符左右两边的运算对象必须是相同类型的容器,且必须保存相同类型的元素。两个vector的capacity不会影响相等性的判定vector<int> ivec = {1,2,3,4,5,6,7};vector<int> ivec1 = {1,2,3,4,5,6,7};//ivec1添加、删除元素导致扩容,...

2019-10-02 19:53:32 166

原创 C++ Primer5 第七章课后题 练习笔记

关于class和struct唯一区别:默认访问权限不同。类可以在它的第一个访问说明符之前,定义成员,对这种成员的访问依赖于类的定义方式。对于struct关键字,定义在第一个访问说明符之前的成员是public的,class则相反。关于默认的拷贝和赋值含有指针数据成员的类一般不宜使用默认的拷贝和赋值操作,如果类的数据成员都是内置类型,则不受干扰。Screen类练习#include...

2019-09-23 11:22:04 204

原创 C++ Primer5 第六章课后练习 学习笔记

传值参数与传引用参数#include<iostream>using namespace std; void a(int); //传值参数void b(int&); //传引用参数int main(){ int s = 0, t = 10; a(s); // 1 cout <<...

2019-09-21 10:04:52 194

原创 C++ Primer5 第五章课后练习 部分内容

关于switch语句(1)case需要注意是否添加break (2)若在多个分支使用了同一个变量,应该将该变量定义在switch语句之前 (3)一个case语句只能对应一个值 (4)case标签的内容只能是整型常量表达式,若不能使用字面值,应用const去定义。关于do-while循环do{ //...}while(int ival = get_reponse()) //...

2019-09-17 22:36:21 183

原创 C++ Primer5 第四章课后练习 笔记

典型算术运算规则:C++11标准规定,两整数相除,商一律向0取整。取余:m%(-n)等于m%n,(-m)%n等于-(m%n)编写程序,使用条件运算符从vector<int>中找到哪些元素是奇数,然后将这些数翻倍#include<iostream>#include<vector>#include<ctime>#include&l...

2019-09-17 17:36:39 156

原创 C++ primer 第五版 第三章 课后练习

string类的输入字符和getline函数分别是如何处理空白字符的标准库string的输入运算符自动忽略字符串开头的空白(包括空格符、换行符、制表符等),从第一个真正的字符开始读起,直到遇见下一处空白为止。getline可保留输入时的空白,直到遇到换行符为止,此时换行符也被读进来,但是并不存储在最后的字符串中。小贴士:cin.clear();//更改cin的状态标识符cin....

2019-09-17 10:19:04 276

原创 C++ Primer 5 第二章 课后题练习 部分内容

C++ Primer 5课后题练习关于变量初始值std::string global_str;int global_int;int main(){ int local_int; std::string local_str;}string类型本身接受无参数的初始化方式,所以不论变量定义在函数内还是函数外都被默认初始化为空串。对于内置类型int来说,变量global_in...

2019-09-12 14:56:56 168

原创 C++ 学习笔记

for循环和while循环两种形式的优缺点:for循环在循环次数已知的情况下,形式更为简洁。while用于循环次数未知的情况,使用特定条件判断循环是否执行,循环体内执行的语句可能导致判定条件发生变化。如下所示:读取数量不定的输入数据,while要比for循环简单。#include<iostream>int main(){ std::cout << ...

2019-09-09 11:17:57 106

原创 JDBC常用组件

1、DriverManager:这个类管理数据库驱动程序的列表。内容是否符合从java应用程序使用的通信子协议正确的数据库驱动程序的链接请求。识别JDBC在一定子协议的第一个驱动器将被用来建立数据库连接。(加载启动,创建与数据库的连接)常用方法:(1)DriverManager.registerDriver(new Driver())(2)DriverManager.getConnec

2016-05-26 23:46:51 2671

原创 JDBC初识

JDBC代表Java数据库连接,这对Java编程语言和广泛的数据库之间独立于数据库的连接标准的Java API。JDBC库包含的API为每个通常与数据库的使用相关联的任务:使得连接到数据库;创建SQL或MySQL语句;执行SQL或MySQL的查询数据库;查看和修改结果记录JDBC架构:DBC API支持两层和三层处理模型进行数据库访问,但在一般的JDBC体系结构

2016-05-24 22:41:23 439

原创 初识数据库

数据:是指所有能输入到计算机中并被计算机程序处理的符号的总称数据处理:是指各种形式的数据进行收集,储存,加工和传播的一系列活动的综合。其目的是从大量的原始的数据中抽取推导出对人们有用的信息。数据库是这样的数据集合:长期储存在计算机(数据库服务器)内——保障安全;有组织的管理,具有较小的冗余——有效管理,数据独立;可共享,多个用户可以对包含的数据进行共享——并发控制,权限

2016-04-24 00:27:28 648

原创 多线程

线程:一、线程与进程1、线程:程序中单独顺序的控制流。线程本身依靠程序进行运行,线程是程序中的顺序控制流,只能使用分配给程序的资源和环境。2、进程:执行中的程序一个进程可以包含一个或多个线程。一个进程至少要包含一个线程。3、单线程程序中只存在一个线程,实际上主方法就是一个主线程。4、多线程多线程是在一个程序中运行多个任务。多线程的目的是更好的使用CPU资

2016-03-08 20:28:40 399

原创 集合框架

集合:Collcetion是一个接口类,其继承了JAVA的迭代接口Iterable。Collection接口有两个主要的子接口List和Set,Map不是Collection的子接口。Collection中可以存储的元素无序,可以重复组各自独立的元素,即其内的的每个位置仅有一个元素,可以允许同时由多个null对象。Collection接口中的方法如下:size():inti

2016-03-07 23:10:33 342

原创 Android学习笔记day12

JAVA反射机制:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。获取class对象的方式:1.通过Object类的getClass()方法。例如:Class c1 = new String("").getCl

2016-03-04 19:40:04 359

原创 Android学习笔记day11

第八天作业题编程题:1.定义一个乐器(Instrument)接口,其中有抽象方法   void play();在InstrumentTest类中,定义一个方法   void playInstrument(Instrument ins);   并在该类的main方法中调用该方法。要求:分别使用下列内部类完成此题。成员内部类局部内部类匿名类package

2016-03-02 21:36:26 1185

原创 Android学习笔记day10

认识泛型:1、泛型是在JDK1.5之后增加的新功能。泛型(Generic)2、泛型可以解决数据类型安全性问题。他的主要原理是在,类声明的时候通过一个标识表示类中某个属性的类型或者是某个方法的返回值及参数类型。3、格式访问权限 class类名称{属性方法}4、对象的创建类名称  对象名称 = new  类名称();在构造方法中使用泛型:

2016-02-28 22:59:06 311

原创 Android学习笔记day9

fianl关键字:1、final在JAVA中被称为完结器,表示最终的意思。2、final能声明类、方法、属性。使用final声明的类不能被继承。使用final声明的方法不能被重写。使用final声明变量变成常量,常量是不可以被修改的。抽象类:1、抽象类概念:包含一个抽象方法的类就是抽象类。2、抽象方法;声明而未被实现的方法,抽象方法必须使用abstract关键字

2016-02-28 13:32:57 546

原创 Android学习笔记day8

继承的限制:1、在JAVA中只允许单继承。2、子类不能直接访问父类的私有成员。子类对象的实例化过程:1、在子类对象实例化之前,必须先调用父类中的构造方法,之后调用子类构造方法。方法的重写:1、在继承中也存在着重写的概念,其实就是子类定义和父类同名的方法。2、定义:方法名称相同,返回值也相同,参数也相同。3、重写限制:被子类重写的方法不能有比父类更加严格的访问

2016-02-27 23:06:48 403

原创 Android学习笔记day7

day2程序题1编写一个圆类Circle,该类拥有: ①一个成员变量 Radius(私有,浮点型);  // 存放圆的半径;        ②两个构造方法           Circle( )                 // 将半径设为0           Circle(double  r )         //创建Circle对象时将半径初始化为r      

2016-02-27 22:07:51 608

原创 Android学习笔记day6

this关键字的使用;1、表示类中属性和调用方法。2、调用本类中的构造方法。3、表示当前对象。static关键字:1、使用static声明属性(static声明全局属性)2、使用static声明方法(直接通过类名调用)3、注意点:使用static方法的时候,只能访问static声明的属性和方法,而非static声明的属性和方法是不能访问的。JAVA递归算法的小例子:

2016-02-25 16:03:38 315

原创 Android学习笔记day5

类的创建以及类与对象的关系:1、class 类名称{属性方法}类名称的首字母大写。2、类是对某一类事物的描述,是抽象的,概念上的意义。对象是实际存在的该类对象的一个个体,也被称为实例。代码:(通过对象去调用类里面的方法)package com.jikexueyuan.ch02;class Person{String name = null;int

2016-02-24 17:01:44 295

原创 Android学习笔记day4

继续JAVA基础部分的知识!布尔变量的定义:boolean isPass小类型向大类型转换:自动完成,由JVM负责。(隐式类型转换)自动转换的规则:符号位自动扩展,负数补1,整数补0.自动转换类型包含的情况:(1)byte->short->int->long->flout->double.(2)int和char类型的数据在某些情况下可以自动相互转换。整数转换为浮点数时会

2016-02-23 11:11:58 466

原创 Android学习笔记day3

今天继续!基本数据类型的包装类:1、为什么要使用包装类:(1)包装里中封装了一些很实用的方法和常量。(2)包装类在集合中用来定义集合元素的类型。2、包装类的常用方法和常量:(1)integer.MIN_VALUE:int类型的最小值:-2^31。(2)integer.MAX_VALUE:int类型的最大值:2^31-1(3)int integer parselent

2016-02-23 00:03:23 588

原创 Android学习笔记day2

正式开始了解JAVA!JAVA编程语言简介:简单、完全面向对象、分布式、解释性、健壮、安全与系统无关、可移植、高性能、多线程和动态的编程语言、撰写跨平台应用软件。JRE简介:运行JAVA程序所必须的环境的集合,包括JVM标准实现以及JAVA核心类库,仅能完成JAVA的运行而无法完成JAVA的编译、调试。JDK简介:JAVA语言的软件开发工具包,是面向JAVA开发者发布的开发套件。

2016-02-21 18:28:23 366

原创 Android学习笔记day1

今天第一天接触JAVA,有点蒙。    首先是看了学姐分享的寒假前的作业任务,简单了解了一下git,同时开始写博客。接下来开始配置JAVA的运行环境,不断的百度,连连出错,幸好在我眼皮撑不住之前配置完成了。期间看了学姐前几天的作业题目,由于并没有什么JAVA的基础,完全不知道该怎样写(其实感觉就是用C我也会很费劲)。    第一天,出师不利,没有实质性的进展,有的只是学姐学长在交流群里的技

2016-02-20 23:01:16 360

空空如也

空空如也

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

TA关注的人

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