![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
基础知识
文章平均质量分 75
money_yuan
多多学习,努力赚钱,给家人一个好的生活
展开
-
android binder通信实例
首先定义一个模块的android.mk和.rc文件,这里我的问题是。我只能手动去启动他,不能实现开机自启动android.mkLOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_SRC_FILES := \ main.cpp \ interface_test_binder.cpp \ test_binde...原创 2019-01-18 11:27:53 · 610 阅读 · 0 评论 -
【算法】【冒泡排序】
int main(){ int arr[] = {3,6,4,2,11,10,5}; int i = 0, j = 0 ; int len = sizeof(arr)/sizeof(arr[0]); int temp = 0; for(i=0; i<len; i++){ for(j=i; j< len; j++){ if(arr[i]>arr[j]){ ...原创 2018-09-28 21:41:08 · 140 阅读 · 0 评论 -
【二叉搜索树】后序遍历序列
左子树的元素都小于根节点,右子树都大于根节点#include<stdio.h>#define DEBUG 0static int tailtree(int *arr, int start, int end){ int i = 0; int ret = 0; #if DEBUG // debug for(i=start; i<end; i++){ pr...原创 2018-09-14 22:58:49 · 125 阅读 · 0 评论 -
【C++模板】【使用两个stack构成queue】【使用两个queue构成stack】
模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码。模板是创建泛型类或函数的蓝图或公式。库容器,比如迭代器和算法,都是泛型编程的例子,它们都使用了模板的概念。每个容器都有一个单一的定义,比如 向量,我们可以定义许多不同类型的向量,比如 vector <int> 或 vector <string>。您可以使用模板来定义函数和类,接下来让我们一起...原创 2018-08-28 22:19:47 · 303 阅读 · 0 评论 -
【C++】【剑指offer】
1、sizeof的概念定义一个空的类型,里面没有任何数据成员和变量,对该类型求sizeof得到的结果是什么?看具体的编译,空类型占用对少个size1、1为什么不是0?我们申明该类型的实例,或者说对象的时候,本身就要占一定内存空间,否则无法使用这些实例,具体占用的字节就是编译器决定的。在vs中空类型占1个字节。1、2如果在该类型中添加构造函数和析构函数也是一样调用构造函数...转载 2018-08-08 14:04:56 · 894 阅读 · 0 评论 -
【C++】【存储类】【thread_local】
在看存储类的时候遇到thread_local这个关键字,第一次知道了线程周期转自:https://www.cnblogs.com/pop-lar/p/5123014.htmlthread_localthread_local变量是C++ 11新引入的一种存储类型。它会影响变量的存储周期(Storage duration),C++中有4种存储周期:automatic static ...转载 2018-08-07 22:45:18 · 957 阅读 · 0 评论 -
【C++】【基本语法】
C++的特征 静态的 编译时执行类型检查 大小写敏感 编译式 不规则 面向对象 封装、抽象、继承、多态 过程化 范型编程...转载 2018-08-06 21:01:35 · 232 阅读 · 0 评论 -
【归并排序】【合并两个有序数组】
#include<stdio.h>#include<math.h>#include<stdlib.h>#include<string.h>#include<error.h>#define ERROR -22static int merge(int *a, int m, int *b, int n, int *c){ ...原创 2018-08-01 12:38:54 · 628 阅读 · 0 评论 -
【算法】【归并排序】
#include<stdio.h>static int merge(int *temp, int *arr, int start, int mid, int end){ int i = 0; int j = 0; int k = 0; i = start; j = mid+1; while(i<=mid&&j<=end){ if(ar...原创 2018-09-28 22:57:39 · 181 阅读 · 0 评论 -
【arm cpu架构体系】【armV8】【armv7】【A系列的CPU】
为了给大家介绍一个更直观的感受,请看下面这张图 如图所示,绿色的部分都是v7-A的架构,蓝色的是v8-A架构,基本上绿色都是可以支持到32和64位的,除了A32,只支持到32位。在右边的每个部分,比如说需要高效能的最上面的A15-A73这个部分是最高效的,接下来就是比较注重整个效率的部分了,中间那个部分是比较高效率的,最下面那栏的是效率最好的,在电池的效能方面达到了最好的标准。 如果...转载 2018-10-17 13:53:27 · 16728 阅读 · 0 评论 -
【memcopy】
完整的实现如下:#include<assert.h>#include<cstddef>#include<iostream>void *memcpy(void* dst,const void *src,size_t num){ assert((dst!=NULL)&&(src!=NULL)); size_t word_...转载 2018-10-30 22:34:21 · 911 阅读 · 0 评论 -
【越过VNDK检查】
1、development/vndk/tools/header-checker/header-abi-diff/src/header_abi_diff.cppmain函数无论如何返回return abi_util::CompatibilityStatusIR::Compatible;但是直接在这里修改编译不会生效,因为编译不到这里一种方法是修改makefile使得编到这里(这个没有...原创 2019-02-18 14:47:41 · 1475 阅读 · 0 评论 -
【应用数学与机器学习基础】
线性代数的知识1、标量:令x属于R 表示一条线的斜率,小写斜体表示,会表明他属于是哪种类型2、向量:小写粗体表示,也会标明属于是哪种类型S = {1; 3; 6} 指定x1,x3 和x6, 表示为Xs,,X-s表示x 中除x1,x3,x6 外所有元素构成的向量。3、矩阵:,Ai;: 表示A 中垂直坐标i 上的一横排元素。这也被称为A 的第i 行(row),A:;i 表示A ...翻译 2019-07-08 19:53:54 · 204 阅读 · 0 评论 -
too many open files(打开的文件过多)解决方法
一、产生原因too many open files(打开的文件过多)是Linux系统中常见的错误,从字面意思上看就是说程序打开的文件数过多,不过这里的files不单是文件的意思,也包括打开的通讯链接(比如socket),正在监听的端口等等,所以有时候也可以叫做句柄(handle),这个错误通常也可以叫做句柄数超出系统限制。引起的原因就是进程在某个时刻打开了超过系统限制的文件数量以及通讯链接数...转载 2019-08-13 14:07:30 · 1561 阅读 · 0 评论 -
const char * 、char const *、 char * const 三者的区别
C/C++ 中关于以下三种定义:const char *ptr;char const *ptr;char * const ptr;整理三者之间的区别与联系。一、const char *ptr;定义一个指向字符常量的指针,这里,ptr是一个指向 char* 类型的常量,所以不能用ptr来修改所指向的内容,换句话说,*ptr的值为const,不能修改。但是ptr...翻译 2019-09-26 16:57:53 · 261 阅读 · 0 评论 -
C++标准转换运算符static_cast
虽然const_cast是用来去除变量的const限定,但是static_cast却不是用来去除变量的static引用。其实这是很容易理解的,static决定的是一个变量的作用域和生命周期,比如:在一个文件中将变量定义为static,则说明这个变量只能在本Package中使用;在方法中定义一个static变量,该变量在程序开始存在直到程序结束;类中定义一个static成员,该成员随类的...翻译 2019-09-27 11:21:25 · 2654 阅读 · 0 评论 -
C++ explicit关键字详解
首先, C++中的explicit关键字只能用于修饰只有一个参数的类构造函数, 它的作用是表明该构造函数是显示的, 而非隐式的, 跟它相对应的另一个关键字是implicit, 意思是隐藏的,类构造函数默认情况下即声明为implicit(隐式).那么显示声明的构造函数和隐式声明的有什么区别呢? 我们来看下面的例子:class CxString // 没有使用explicit关键字的类声明...转载 2019-09-27 11:41:54 · 346 阅读 · 0 评论 -
【单例模式】
单例模式的单线程实现:将构造函数和静态实例设置为private#include<iostream>using namespace std;class singleton{protected: singleton(){}private: static singleton* p;public: static singleton* instanc...转载 2018-08-09 18:45:05 · 188 阅读 · 0 评论 -
【快速排序】【求数组的前k个最小的数】【出现次数超过一半的数】
转自:https://blog.csdn.net/vayne_xiao/article/details/53508973为什么快速排序一定要先从右边开始while(arr[j]>=temp&&i<j){ j--; } while(arr[i]<=temp&&i<j){ i++; }这里两个while的顺序是不能改变的,...转载 2018-07-27 11:24:42 · 247 阅读 · 0 评论 -
【链表】给定两个已排序的表L1和L2 只使用基本的表操作编写计算L1∩L2的过程和L1UL2
交集的部分。这里利用已经排好序的这个条件来适当的减少时间复杂度static void CommonData(List head1, List head2){ Position position1 = head1; Position position2 = head2; while(position1!=NULL){ while(position2!=NULL){ if(posit...原创 2018-04-29 11:05:45 · 4225 阅读 · 0 评论 -
【链表】通过只调整指针(不是数据)来交换两个相邻的元素:单链表和双链表实现
单链表的实现:实际上将position->Next执行position->Next->Next之后,空出来的指针position->Next的操作类似于在节点之前插入一个指针元素。基于之前已经创建好的单链表。static void swip(Position position_ahead, Position position){ Position position_ne...原创 2018-04-28 17:45:48 · 3162 阅读 · 0 评论 -
【链表】由一个链表元素指定另一个链表对应位置的元素输出,计算运行时间
基于上一篇博客创建的链表,这里使用static局部变量巧妙地将时间复杂度由m*n转换成了m+nstatic Position FindPosition(Position position, NodeElement element){ // static 将时间复杂度由m×n变成了m+n static NodeElement index = 0; while( position!=NULL ...原创 2018-04-28 16:34:00 · 345 阅读 · 0 评论 -
【单链表】常见操作
创建和遍历头文件.h在头文件中申明文件类型和函数typedef struct Node *PtrToNode;typedef PtrToNode Position;typedef PtrToNode List;typedef int NodeElement;struct Node { NodeElement element; Position Next;};...原创 2018-04-28 14:48:16 · 185 阅读 · 0 评论 -
【查找二叉树】清空、查找、插入、删除
查找二叉树:也叫排序二叉树,搜索二叉树。具有以下特点(百度百科)二叉排序树或者是一棵空树,或者是具有下列性质的二叉树:(1)若左子树不空,则左子树上所有结点的值均小于或等于它的根结点的值;(2)若右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值;(3)左、右子树也分别为二叉排序树;查找二叉树的创建和基本二叉树的创建无差异二叉树的清空,实际上就是后序遍历删除// 想要改变指针的值还是需要...原创 2018-05-03 22:28:44 · 7598 阅读 · 0 评论 -
【排序】插入排序
插入排序将数据分为了两部分,前一部分是已经排序好的,后一部分是未排序好的。将N个元素从后依次插入到已经排好序的部分中。如下未直接插入排序#include <stdlib.h>#include <stdio.h>#include <string.h>#include <sys/time.h>#include <errno.h>#i...原创 2018-05-09 23:27:51 · 150 阅读 · 0 评论 -
【表达式树】后序表达式构造表达式二叉树
之前在栈的数据结构中有见到将中序表达式转换成后序表达式的方法,现在来看看如何用后序表达式构造一个表达式二叉树static DoubleTree CreatExpressTree(char *express){ unsigned int len = strlen(express); DoubleTree statck[len];//C99允许数组的大小为变量 int top = 0; fo...原创 2018-05-02 23:02:58 · 1219 阅读 · 0 评论 -
【堆】Insert和DeleteMin
堆实际上是二叉堆,二叉堆是优先队列的一种实现方式,最常用的使用数组来实现。堆具有如下两个性质:结构性和堆序性1、结构性堆是一个被完全填满的二叉树(底层有例外)2、堆序性子节点元素值都小于父节点元素值既然堆是优先队列就满足priority queue的基本性质,Insert和DeletMin堆的初始化typedef int ElementType;typedef struct HeapStruct...原创 2018-05-08 22:47:47 · 1589 阅读 · 0 评论 -
【树】计算一个目录大小的例程
先序遍历:在处理儿子的节点之前已经处理了父节点的工作(输出文件的目录结构)后续遍历:处理父节点在子树节点之前(计算目录大小)也觉得这个例程不正宗// 后续排序static void ListDirTreeAfter(Tree tree, int index){ Tree tree_node = tree->FirstChild; while(tree_node){ //Lis...原创 2018-04-30 19:22:06 · 161 阅读 · 0 评论 -
【排序】希尔排序
希尔排序实际上是分组的直接插入排序#include <stdlib.h>#include <stdio.h>#include <string.h>#include <sys/time.h>#include <errno.h>int main(){ int arr[]={59,20,17,36,98,14,23,83,13,...原创 2018-05-14 23:35:13 · 131 阅读 · 0 评论 -
【算法】【将字符串转换成int】
之前还使用过递归来计算,不过现在已经记不起来了#include <stdio.h>#include <error.h>#include <math.h> #define ERROR -22 #define DEBUG 0static int CheckValid(char *str){ // debug #if DEBUG prin...原创 2018-07-23 22:45:33 · 508 阅读 · 0 评论 -
【数据结构】【哈希表】【第一次出现一次的字符】
这个主要是利用的是哈希表,不明白的是时间复杂度是O(N)思路1:遍历,也就是从头开始取字符串中的一个字符,将其与其后的所有字符比较,如果有相同的字符,那么就证明它不是只出现一次的字符。当第一次出现遍历完其后字符并且没有重复时,表明这个字符就是“第一个只出现一次的字符”。思路2:我们可以定义哈希表的键值(Key)是字符的ASCII值,而值(Value)是该字符出现的次数。同时我们需要扫描两次...原创 2018-07-26 21:59:47 · 142 阅读 · 0 评论 -
【递归优化】【斐波那契】
f(n) = f(n-1)+f(n-2)1,2,3,5,8.....自顶向下使用的递归层次比较多,在n取值较大的情况下,效率很低(时间维度)所以可以使用数组来替换多重递归调用,即以空间来置换时间(intersting)#include <stdio.h>#include <error.h>#include <math.h>#include...原创 2018-07-25 20:32:22 · 312 阅读 · 0 评论 -
【算法】【动态规划】【连续子数组和最大】
设sum[i]为以第i个元素结尾且和最大的连续子数组。假设对于元素i,所有以它前面的元素结尾的子数组的长度都已经求得,那么以第i个元素结尾且和最大的连续子数组实际上,要么是以第i-1个元素结尾且和最大的连续子数组加上这个元素,要么是只包含第i个元素,即sum[i] = max(sum[i-1] + a[i], a[i])。可以通过判断sum[i-1] + a[i]是否大于a[i]来做选择,而这实际...翻译 2018-07-19 20:27:52 · 575 阅读 · 0 评论 -
【算法】【数据在排序数组中出现的次数】
#include<stdio.h>#include<iostream>#include<exception>using namespace std; class Arrayexception: public std::exception{ virtual const char *what() const throw() { return "...翻译 2018-07-19 19:48:27 · 186 阅读 · 0 评论 -
【算法】【求链表中的倒数第K个元素】
在程序的鲁棒性上,我对链表的长度没有考虑在内#include <stdio.h>#include <error.h>#include <math.h>#include <stdlib.h>#include <time.h> #define ERROR -22 #define DEBUG 0typedef str...原创 2018-07-24 20:56:20 · 320 阅读 · 0 评论 -
【基础】int在计算机中的取值范围
转自:https://blog.csdn.net/u010812084/article/details/46636537在程序的错误处理中时常会用到要想判断int类型的取值范围,首先要知道: 1.int类型所占字节数; 2.整型变量数据在内存中以什么方式存储;获得int型所占字节数#include<stdio.h>int main(){ printf(...转载 2018-07-24 17:43:59 · 12012 阅读 · 0 评论 -
【算法】【旋转数组最小值】
#include<stdio.h>#include<iostream>#include<exception>using namespace std; class Arrayexception: public std::exception{ virtual const char *what() const throw() { return "...翻译 2018-07-18 22:59:53 · 155 阅读 · 0 评论 -
【递归】【递归的优化】
递归算法在工作或者各种数据结构中使用比较频繁,递归算法的简化常见有自顶向下还有备忘录法自顶向下:#T(N) = T1(N) + T2(N) + T3(N) + 25C #T1(N) = [(R11P1 + R12P2 + R13P3 + R14P4 + R15P5 + R16P6 + R17P7 + R18P8 + R19P9) - T1(N-1)] x Tau1 +...原创 2018-07-24 11:00:58 · 519 阅读 · 0 评论 -
【编程语言】【const】
转自:https://blog.csdn.net/bianlongpeng/article/details/77199272问题:如果函数需要传入一个指针,面试官可能会问是否需要为该指针加上const,把const加在指针不同位置有什么区别;如果写的函数需要传入的参数是一个复杂类型的实例,面试官可能会问传入值参数或者引用参数有什么区别,什么时候需要为传入的引用参数加上const?1、con...转载 2018-07-18 18:38:14 · 354 阅读 · 0 评论 -
【树】列出分级文件系统中的目录列程
第一次写树的数据结构,可能还存在一些小bug首先是创建树:每个节点包含了第一个孩子和他的兄弟姐妹typedef char * TreeElement;typedef struct TreeNode * PtrToNode;typedef PtrToNode Tree;struct TreeNode { TreeElement element; PtrToNode FirstChi...原创 2018-04-30 13:46:08 · 204 阅读 · 0 评论