自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

breakpoints_的博客

做更好的自己

  • 博客(89)
  • 收藏
  • 关注

原创 gcc的一个bug,GCC strict aliasing

这是个gcc编译器bug,且只在-O2时发生。在板子上试验发现带O2的编译确实有此问题,O0则可以,一个long*指针,强转为int*并传给check函数,因为h与k都指向同一块地址,按理说,在。这个传递过程中,编译器把(int*)k与k处理成了两个不同的地址!这句之后,*h应该被改为了6,但读出来却旧仍然是5,意思是。

2023-03-21 16:48:06 191

原创 动态链接库与静态链接库的区别

动态链接库与静态链接库的区别库文件的概念 库文件是计算机上的一类文件,提供给使用者一些开箱即用的变量、函数或类。库文件分为静态库和动态库,静态库和动态库的区别体现在程序的链接阶段:静态库在程序的链接阶段被复制到了程序中;动态库在链接阶段没有被复制到程序中,而是程序在运行时由系统动态加载到内存中供程序调用。使用动态库系统只需载入一次,不同的程序可以得到内存中相同的动态库的副本,因此节省了很多内存,而且使用动态库也便于模块化更新程序。本质上来说库是一种可执行代码的二进制形式,可以...

2021-04-26 18:38:10 6836 8

原创 把Parcel序列化到Parcelable用例

背景:A B C三个进程,A通过B调用C的函数,通过ADIL接口,AIDL接口声明要调用的函数名称(ID)用Parcel传输要调用函数参数。B相当于一个服务,提供给A,C两个进程,我们不希望B频繁编译。根据需求,我们知道Parcel传递参数,经常是一个函数一个parcel文件,因为参数不一样,协议也就不同,B要求不编译,那常规做法就不能实现需求,那么,我们能不能做一个基类,然后每次把Pa...

2020-01-04 11:40:54 441

原创 机器学习(3)-支持向量机(SVM)含python代码

支持向量机(SVM)定义:支持向量机:英文名supportvectormachine,一般简称SVM。通俗来讲,它是一种二类分类模型,其基本模型定义为特征空间上的间隔最大的超平面(线性分类器),其学习策略便是间隔最大化,最终可转化为一个凸二次规划问题的求解。超平面方程式: ,其中X为多维向量,W也为...

2019-12-30 19:13:46 3233

原创 机器学习(2)-K-Means(含代码)

K-Means算法介绍什么是K-Means?K-Means方法是一种非监督学习的算法,它解决的是聚类问题。K 是聚类算法中簇的个数Means 是均值算法(聚类中对象的均值) 如上图,当k=2时,可以看出利用K-Means算法可以分成蓝色...

2019-12-27 11:59:11 697

原创 机器学习(1)-贝叶斯(朴素贝叶斯,贝叶斯网络)

贝叶斯算法由于小组内项目需要,出于技术储备,小组每个人学习一个机器学习算法,做成ppt,然后给出训练数据,用python写出代码,并运行看效果,我抽到的是贝叶斯算法,大学的时候学习过,整个组都讲完了,是时候整理一下了~贝叶斯算法基本概念:贝叶斯分类算法是统计学的一种分类方法,它是一类利用概率统计知...

2019-12-26 16:34:40 1379

原创 android studio读按行文本文件(txt)

之前我是用c/c++的比较多,所以在用android studio(java)开发项目的时候,我就想着只是换了套语言,应该思路是一样的,于是乎,我就搜了一些java按行读取文件的api,直接就开始在android studio上写了,总是提示错误(no such file or directory),换了各种姿势总是不行,总是提示这个错误,实在找不出问题,最后我在想是不是android studi...

2019-12-26 14:12:07 2423

原创 java线程通知机制Object.notify

记录一下,因为项目需求,所以上手了java(android studio)其中要实现的一个功能是,线程1不停地MockLocation,线程2每隔500ms向线程1发送一组需要Mock的GPS数据这样就可以模拟定位,骗过谷歌地图等软件上代码全局变量private double lat =0.0;//维度private double lng =0.0;//经度private...

2019-12-26 13:54:57 209

原创 android studio 使用Mocklocation虚拟定位总结

首先需要在 AndroidManifest.xml 文件中添加「获取模拟定位信息」权限。 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.INTERNET"/&...

2019-12-21 14:42:35 7455 1

原创 android studio 配置 protobuff

1:首先,我们需要在全局的build.gradle文件中添加上protobuf工具插件:2:然后,要app/build.gradle文件中添加上此插件:3:然后我们需要在app/build.gradle下添加依赖:4:接下来在app/build.gradle里添加上proto的编译5:然后在src/main目录下创建proto文件夹,将你的.proto文件放置在proto目录下,并...

2019-12-12 19:08:28 671

原创 安卓Service com.example.service_app.AdapterService has leaked ServiceConnection 解决方案

E/ActivityThread: Service com.example.service_app.AdapterService has leaked ServiceConnection com.example.service_app.AdapterService$AdapterBinder$1@c11115 that was originally bound here android....

2019-11-20 18:02:43 632

原创 安卓编译错误:build stopped: subcommand failed/File format not recognized的解决办法

安卓编译遇到如下的错误:prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9/bin/x86_64-linux-android-strip:out/target/product/generic_x86_64/symbols/system/bin/devmem2: File format not recognized[ 0% 4/74...

2019-11-04 20:09:44 1703

原创 判断一个链表是循环链表

循环链表是另一种形式的链式存贮结构。它的特点是表中最后一个结点的指针域指向头结点,整个链表形成一个环。如果去遍历循环链表,则是死循环。 这里判断循环链表的方法是; 用两个指针,一个指针是块指针(跳一个节点遍历),遍历快(p=p->netxt->next),一个指针逐步遍历,慢指针。 如果在遍历当中,如果发现这两个指针有可能是出现N...

2019-08-06 10:51:17 1314 2

原创 LeaveCriticalSection内存死锁问题

某天下午双眼迷离的用vs写着代码,一不小心报了个错,转到了mlock.c文件/**** _unlock - Release multi-thread lock**Purpose:* Note that it is legal for a thread to aquire _EXIT_LOCK1* multiple times.**Entry:* ...

2019-07-31 15:13:23 943

原创 vs2008下配置postgresql连接

假设postgresql安装目录为:C:\ProgramFiles(x86)\PostgreSQL\9.0将以下文件拷贝到工程根目录:C:\ProgramFiles(x86)\PostgreSQL\9.0\lib: libpq.dll libpq.libC:\ProgramFiles(x86)\PostgreSQL\9.0\bin: li...

2019-07-26 09:52:06 333

原创 关于Microsoft visual Studio中添加Visual Assist 小番茄破解版本失效问题

小番茄VA可以帮助我们自动提示补全代码以及代码错误提醒等功能。网上有很多很多如何破解的VA的,但是都是需要输入注册码key的,但是提供的注册码已经无法进行注册.所以,果断采取了直接替换文件的方式:1:在网上下载小番茄,相应的版本自我查询(我的是VS2015,对应的是VA是2074),在下载的文件中一定要包含VA_X.dll 文件,否则下面的就不用看了。2:解压,点击VA_X_Se...

2019-07-23 14:27:55 2048 1

原创 有了malloc/free 为什么还要new/delete

malloc 与free 是C++/C 语言的标准库函数,new/delete 是C++的运算符。它们都可用于申请动态内存和释放内存。对于非内部数据类型的对象而言,光用maloc/free 无法满足动态对象的要求。对象在创建的同时要自动执行构造函数, 对象在消亡之前要自动执行析构函数。由于malloc/free 是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函...

2019-07-03 20:41:05 458

原创 free 和delete 把指针怎么啦?

别看 free 和delete 的名字恶狠狠的(尤其是delete),它们只是把指针所指的内存给释放掉,但并没有把指针本身干掉。用调试器跟踪示例1,发现指针p 被free 以后其地址仍然不变(非NULL),只是该地址对应的内存是垃圾,p 成了“野指针”。如果此时不把p 设置为NULL,会让人误以为p 是个合法的指针。如果程序比较长,我们有时记不住p 所指的内存是否已经被释放,在继续使用...

2019-07-02 17:35:55 173

原创 指针参数是如何传递内存的

如果函数的参数是一个指针,不要指望用该指针去申请动态内存。示例1 中,Test 函数的语句GetMemory(str, 200)并没有使str 获得期望的内存,str 依旧是NULL,为什么?void GetMemory(char *p, int num){ p = (char *)malloc(sizeof(char) * num);}void Test(void...

2019-07-02 17:13:50 159

原创 c++组合跟继承的区别及混合使用时构造函数的执行顺序

类的继承与组合: 对象(Object)是类(Class)的一个实例(Instance)。如果将对象比作房子,那么类就是房子的设计图纸。所以面向对象设计的重点是类的设计,而不是对象的设计。对于 C++程序而言,设计孤立的类是比较容易的,难的是正确设计基类及其派生类。本章仅仅论述“继承”(Inheritance)和“组合”(Composition)的概念。注意,当前面向对象技术的...

2019-07-02 15:48:02 444

原创 hash表原理及代码实现

百度定义: 散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash...

2019-07-01 14:10:56 323

原创 C++虚函数能不能模板化

虚函数不能模板化 编译器在编译一个类的时候,需要确定这个类的虚函数表的大小。一般来说,如果一个类有N个虚函数,它的虚函数表的大小就是N,如果按字节算的话那么就是4*N。 如果允许一个成员模板函数为虚函数的话,因为我们可以为该成员模板函数实例化出很多不同的版本,也就是可以实例化出很多不同版本的虚函数,那么编译器为了确定类的虚函数表的大小,就必须要知道我们一共为该成...

2019-06-27 14:42:13 2721

原创 C++类中的数据成员初始化问题

首先我们先来看一个简单的类:class Test{public: Test();private: int a; int &b; const int c; static int d; static const int e;};类的数据成员的属性大概包括:普通成员变量,引用成员变量,常成员变量,静态成员变量,静态常成员变量。普...

2019-06-27 11:38:22 3312 1

原创 c++的虚函数如果是private的,该如何实现多态

关于虚函数的回顾: 1) :虚函数的地址存放于虚函数表之中。运行期多态就是通过虚函数和虚函数表实现的。 2):类的对象内部会有指向类内部的虚表地址的指针。通过这个指针调用虚函数。 3):虚函数的调用会被编译器转换为对虚函数表的访问 。当虚函数是public的,这个时候实现多态的方式:class Base {public: virtual...

2019-06-27 10:36:25 1093

原创 设计推特

设计一个简化版的推特(Twitter),可以让用户实现发送推文,关注/取消关注其他用户,能够看见关注人(包括自己)的最近十条推文。你的设计需要支持以下的几个功能:postTweet(userId, tweetId): 创建一条新的推文 getNewsFeed(userId): 检索最近的十条推文。每个推文都必须是由此用户关注的人或者是用户自己发出的。推文必须按照时间顺序由最近的开始排序。 ...

2019-04-29 14:57:38 542

原创 二叉树的序列化与反序列化

您将获得一个双向链表,除了下一个和前一个指针之外,它还有一个子指针,可能指向单独的双向链表。这些子列表可能有一个或多个自己的子项,依此类推,生成多级数据结构,如下面的示例所示。扁平化列表,使所有结点出现在单级双链表中。您将获得列表第一级的头部。示例:输入: 1---2---3---4---5---6--NULL | 7---8---9---...

2019-04-19 20:44:50 99

原创 二叉树的序列化与反序列化(LeetCode297 )

序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。示例:你可以将以下二叉树: ...

2019-04-18 14:56:52 99

原创 LeetCode-279完全平方数(广度优先搜索)

给定正整数n,找到若干个完全平方数(比如1, 4, 9, 16, ...)使得它们的和等于 n。你需要让组成和的完全平方数的个数最少。示例1:输入: n = 12输出: 3 解释: 12 = 4 + 4 + 4.示例 2:输入: n = 13输出: 2解释: 13 = 4 + 9.思路较为简单,直接上代码int numSquares(int n) ...

2019-04-04 15:36:22 155

原创 LeetCode-179最大数

给定一组非负整数,重新排列它们的顺序使之组成一个最大的整数。示例 1:输入: [10,2]输出: 210示例2:输入: [3,30,34,5,9]输出: 9534330说明: 输出结果可能非常大,所以你需要返回一个字符串而不是整数。一道烧心的题,重新写一个排序,[3 30], 两个数怎么排,是看组合在一起330 大还是303大,那思路来了,一个数粘在另一个数字后...

2019-04-03 15:24:13 122

原创 LeetCode-236二叉树的最近公共祖先

给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉树: root =[3,5,1,6,2,0,8,null,null,7,4]示例 1:输入: root =...

2019-04-02 11:07:42 117

原创 LeetCode-221最大正方形(动态规划)

在一个由 0 和 1 组成的二维矩阵内,找到只包含 1 的最大正方形,并返回其面积。示例:输入: 1 0 1 0 01 0 1 1 11 1 1 1 11 0 0 1 0输出: 4思路:考虑上面矩形,每个点跟他的左上角,左边,上边构成正方形,如果左边或者上面,或者左上角是0那个这个包含此点的正方形是不是要从它本身开始考虑了,动态规划:如果这个点是1 那么有 d[i][...

2019-04-01 12:13:33 318

原创 LeetCode-287(寻找重复数)

给定一个包含n + 1 个整数的数组nums,其数字都在 1 到 n之间(包括 1 和 n),可知至少存在一个重复的整数。假设只有一个重复的整数,找出这个重复的数。示例 1:输入: [1,3,4,2,2]输出: 2示例 2:输入: [3,1,3,4,2]输出: 3说明:不能更改原数组(假设数组是只读的)。 只能使用额外的 O(1) 的空间。 时间复杂度...

2019-03-29 15:06:58 154

原创 深度优先搜索(DFS)---LeetCode47(全排列II)

此前,也写过一篇用dfs解决全排列问题的博客,今天又遇到一个变形,于是忍不住就撸了一把代码。题目描述:给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2]输出:[ [1,1,2], [1,2,1], [2,1,1]]这跟之前的思路类似,还是以每一个数为根深度优先搜索其他的数,每条路径即是一条解法,但是也有差别,之前不重复的序列,...

2019-03-26 19:58:39 197

原创 LeetCode-两数之和

今天闲着无聊,问朋友在干嘛,他说在刷LeetCode,出于好奇便注册了个账户。第一道题必须发个博客记录一下.题目描述:给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], ...

2019-03-19 21:07:55 97

原创 jsoncpp详解

JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,和xml类似。Jsoncpp是个跨平台的开源库,下载地址:http://sourceforge.net/projects/jsoncpp/。json中仅支持两种结构: 1)name->value键值对(pair)的集合,一般称为对象(object)。 2)值的有序表,...

2019-03-19 11:04:32 952

原创 jsoncpp输出顺序

最近在做一个NLU相关的项目,需要对json文件进行读取,wins vs2008环境,需要引入第三方库json.h,需要工程导入jsoncpp的静态数据连接库json_vc71_libmtd.lib,详细的教程可以自行百度。在输出的json文件我发现不是按着list添加顺序的,它是按照字母表给排序过的, json内部存储object元素是用map存储的,map的特性就是会对每次in...

2019-03-18 20:09:56 4761 2

原创 C++11 std::unique_lock & std::lock_guard

C++多线程编程中通常会对共享的数据进行写保护,以防止多线程在对共享数据成员进行读写时造成资源争抢导致程序出现未定义的行为。通常的做法是在修改共享数据成员的时候进行加锁--mutex。在使用锁的时候通常是在对共享数据进行修改之前进行lock操作,在写完之后再进行unlock操作,经场会出现由于疏忽导致由于lock之后在离开共享成员操作区域时忘记unlock,导致死锁。 ...

2019-03-13 16:26:54 210

原创 C++11 std::thread 多线程框架

C++11标准在标准库中为多线程提供了组件,这意味着使用C++编写与平台无关的多线程程序成为可能,而C++程序的可移植性也得到了有力的保证。并发与并行的区别: 并发指的是两个或者多个独立的活动在同一时间段内发生, 例如在跑步的时候你可能同时在听音乐;在看电脑显示器的同时你的手指在敲击键盘。这时我们称我们大脑并发地处理这些事件,只不过我们大脑的处理是有次重点的:有时...

2019-03-12 18:15:31 1534 1

原创 C++实现string类

先来看一下面试经常遇到的问题:实现strcpy函数char *strcpy(char *strDest, const char *strSrc) { if (strDest == NULL || strSrc == NULL) { return NULL; } if (strDest == strSrc) { return strDest; }...

2019-03-08 15:29:47 709

原创 C++之深拷贝&浅拷贝

关于拷贝的错误: 对一个已知对象进行拷贝,编译系统会自动调用一种构造函数——拷贝构造函数,如果用户未定义拷贝构造函数,则会调用默认拷贝构造函数。以下有一个学生类:#include &lt;iostream&gt; using namespace std; class Student{private: int num; char *name;pu...

2019-03-06 18:18:13 240

空空如也

空空如也

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

TA关注的人

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