- 博客(38)
- 收藏
- 关注
原创 cJSON解析嵌套json报错问题记录
1.cJSON的使用参照博客 https://blog.csdn.net/lintax/article/details/509939581),下载源码: 可以从如下网站来下载:https://sourceforge.net/projects/cjson/2),包含cJSON的源码: 下载下来,解压后,从里面找到两个文件(cJSON.c、cJSON.h),复制到我们的工程里面。只需在函数中包含头文件(#include “cJSON.h”),然后和cJSON.c一...
2021-02-03 10:08:06 730 1
原创 ubuntu 16.04安装报错--Could not get lock /var/lib/dpkg/lock
1. 通过apt-get install安装报错“Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable)”搜索到的解决方法:操作之后无效原因解析:在上一次下载资源时,由于网络问题,下载失败。当换一个较好一点网络环境之后,下载失败报错。原因在于,上一次不正常的关闭下载,导致资源被锁不可用,删除异常的资源,重新下载即可。解决方案:运行以下命令,删除资源:sud
2021-01-14 09:22:09 209
原创 安卓源码c++文件中TRESPASS()函数
文件media/stagefright/foundation/ADebug.h函数宏定义为#define TRESPASS(...) \ LOG_ALWAYS_FATAL( \ __FILE__ ":" LITERAL_TO_STRING(__LINE__) \ " Should not be here. " __VA_ARGS_
2020-09-29 11:20:02 301
原创 SharedPreferences最后一次写入断电不保存问题记录
现象:连续几次将数据写入SharedPreferences保存后断电。断电前可以看到/data/data/package_name/shared_prefs/*.xml 文件内容已修改为最后一次写入数据。上电后在执行读取数据操作前,/data/data/package_name/shared_prefs/*.xml的内容始终为最后一次写入内容,但执行读取操作时,xml中内容改变,变为最后一次写入之...
2020-04-29 10:07:45 1555 1
转载 安卓使用MediaPlayer播放音乐,换曲会跳曲问题。MediaPlayer报错 Error(0,38)
出现mediaplayer的(-38, 0)报错,这种方法可以解决问题。 // 因为直接切歌会发生错误,所以增加错误监听器。返回true。就不会回调onCompletion方法了。 player.setOnErrorListener(new OnErrorListener() { @Override p...
2020-03-18 17:53:21 691 1
原创 Android使用MediaPlayer实现音乐播放,Android10读写权限问题记录
1.Android10申动态请读写权限时需要在<application/>标签添加android:requestLegacyExternalStorage="true"<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/a...
2020-03-17 18:19:55 2146 1
原创 Android使用MediaPlayer实现音乐播放mPlayer.setLooping(true)无作用问题记录
问题:初次打开app时,没有音乐在播放,直接设置setLooping(true),用isLooping()得到的仍是flase。解决:记录当前操作,播放时重新设置setLooping(true) ******* if(mode == REPEAT1) { if(!mPlayer.isLooping()) { ...
2020-03-17 18:08:53 2677
转载 Caused by: android.view.InflateException: Binary XML file line #9: Binary XML...问题记录
1.尝试练习实现自定义TextView时,运行报错代码及xml如下:@SuppressLint("AppCompatCustomView")public class MyTextView extends TextView { private Paint mPaint1; private Paint mPaint2; public MyTextView(Cont...
2020-02-09 16:45:19 1504 1
原创 Android Adapter的notifyDataSetChanged更新listView显示,第一次进入包含list的Activity时可以更新,后续进入Activity更新无效
list内容放于listItems中 public class ListItem { private int list_left; private int list_right; public ListItem(int left, int right) { this.list_left = left; this.list_r...
2020-01-03 12:59:49 292
原创 RecyclerView实现list,item分两段的分区域按下问题记录
list显示效果如图,list item分左右两个部分,左边部分按下会变色,右边部分点击无效果。一些item只有左边部分 list item布局如下,左右部分都为ImageView实现 一个item包括左右两个ImageView,无图预览: 左边部分想通过ImageButton显示,但没找到在list中如何监听左边ImageButton的方法。只能监听整个item(刚学习Andr...
2019-12-27 18:01:47 334
原创 文件编程相关函数(一)
1.creat 建立文件或创建文件函数原型:int creat(const *pathname,mode_t mode);函数入参:pathname 要建立的文件路径字符串 “/home/hello.c” mode 建立文件的权限函数的返回值:成功返回文件描述符,出错返回-1头文件:#include
2016-12-05 17:01:29 212
转载 递归
如何快速正确的写出递归函数?写一个递归函数是非常程式化的东西,只要按照一定的规则来写,就可以很容易地写出递归函数。写递归函数有三步:①写出迭代公式;②确定递归终止条件;③将①②翻译成代码。以求n!为例:①写出迭代公式:n!的迭代公式为②确定递归终止条件:1!=1就是递归终止条件③将①②翻译成代码:将迭代公式等号右边的式子写入return语句中,即return (fact
2016-12-02 23:18:19 232
转载 sizeof与strlen
strlen(char*)函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个'\0',如果你只定义没有给它赋初值,这个结果是不定的,它会从aa首地址一直找下去,直到遇到'\0'停止。 char aa[10];cout char aa[10]={'\0'}; cout char aa[10]="jun"; cout 而sizeof()返回的是变量声明后所占的内存数,
2016-11-29 22:32:29 188
原创 辗转相除法求最大公约数与最小公倍数
1.由于辗转相除是不断通过余数来作为除数的,所以刚输入的数据,一定是大除以小。为了保证数据的严密,需要比较调整一下两数大小。if (a{c=a;a=b;b=c;}保证了a>=b。2.辗转相除求最大公约数while (b!=0){c=a;a=b;b=c%b;}此时,a为最大公约数。3.求最小公倍数有了最大公约数,最小公倍
2016-11-25 22:22:42 834
转载 typedef与define
typedef是一种在计算机编程语言中用来声明自定义数据类型,配合各种原有数据类型来达到简化编程的目的的类型定义关键字。 #define是预处理指令。下面让我们一起来看。typedef是C语言语句,其功能是用户为已有数据类型取“别名”。 例如: typedef int INTEGER; 这以后就可用INTEGER来代替int作整型变量的类型说明了,如: INTEGER a,b;
2016-11-24 22:00:48 188
转载 关键字inline
1 inline只是个编译器建议,编译器不一定非得展开Inline函数。 例如: Inline函数地址引用 inline在递归函数中使用2 inline必须用于函数定义,对于函数声明,inline不起作用 例如: inline max(int,int); //没有Inline作用 只有 i
2016-11-23 22:48:46 311
转载 volatile关键字
1.volatile的本意是“易变的” 因为访问寄存器要比访问内存单元快的多,所以编译器一般都会作减少存取内存的优化,但有可能会读脏数据。当要求使用volatile声明变量值的时候,系统总是重新从它所在的内存读取数据,即使它前面的指令刚刚从该处读取过数据。精确地说就是,遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问;如果不使用valatile,则
2016-11-22 21:35:36 159
原创 关键字register、static、extern、const作用
1,、register:只能修饰局部变量,不能修饰全局变量和函数,请求编译器尽可能地将频繁使用的变量(如,循环变量)存放在CPU寄存器中,所以修饰的变量不能通过取地址获取地址,也省去了cpu从内存中抓取数据的时间,但修饰的变量一定是处理器支持的类型。2、static:既能修饰变量也能修饰函数,修饰变量时既能修饰全局变量也能修饰局部变量;修饰全局变量时只能在本文件使用,修饰局部变量时延长
2016-11-21 22:57:56 211
转载 Linux密码隐藏输出 *
代码如下:#include#include // curses.h为图形函数库 编译时加 - lcursesint main(){ int i,j=0; char ch; initscr(); //使用curses库,程序开始时要加 initscr()来初始化屏幕,退出程序前要加 endwin()
2016-11-17 22:30:32 595
原创 数组相关
一维数组: 数组名是指针常量,保存数组首元素的地址。 a[4] ; a 数组首元素地址,&a 数组的地址; *(&a)= a;对一维数组地址取值 = 数组首元素地址;二维数组: int a[ ][2] = {1,2,3,4} 二维数组名,指针常量,保存首个一维数组的地址; a + i ;第 i - 1 个一维数组的地
2016-11-16 22:42:36 162
原创 避免野指针
养成良好的编码习惯:1.当指针没有指向时置为NULL;2.指针指向空间赋值时,是否分配空间 char *ptr =(char *)malloc(sizeof(char) * 100) malloc返回值为void * ,(char *)为强制类型转换。3.检查ptr 是否等于NULL,分配是否成功;if(ptr == NULL){ printf(“ m
2016-11-15 22:48:40 253
转载 malloc,ralloc,calloc工作原理及区别
(一):malloc.原型extern void *malloc(unsigned int num_bytes);头文件#include #include 功能 请求系统动态分配num_bytes个字节的空间,如果分配成功则返回第一个字节的地址,并且可以进行强制类型转换,告诉系统分配 空间中存储的是那种类型的数据。否则返回空指针NULL。
2016-11-14 22:05:52 318
原创 小数进制转换
1.十进制小数→二进制小数 方法:“乘2取整”对十进制小数乘2得到的整数部分和小数部分,整数部分既是相应的二进制数码,再用2乘小数部分(之前乘后得到新的小数部分),又得到整数和小数部分.如此不断重复,直到小数部分为0或达到精度要求为止.第一次所得到为最高位,最后一次得到为最低位如:0.25的二进制0.25*2=0.5 取整是00.5*2=1.0 取整是1即0.2
2016-11-11 22:57:16 5156 4
转载 函数返回值
在一个函数的内部,return的时候返回的都是一个拷贝,不管是变量、对象还是指针都是返回拷贝,但是这个拷贝是浅拷贝。1. 如果返回一个基本类型的变量,比如:int a;a = 5;return a;那么就会a的一个拷贝,即5返回,然后a就被销毁了。尽管a被销毁了,但它的副本5还是成功地返回了,所以这样做没有问题。2. 但是对于非动态分配(new/
2016-11-09 22:44:31 501
转载 形参和实参
1、形参 变量只有在被调用时才分配 内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在 函数内部有效。 函数调用结束返回主调用函数后则不能再使用该形参 变量。2、 实参可以是 常量、 变量、 表达式、 函数等,无论实参是何种类型的量,在进行 函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值。3、 实参和形参
2016-11-08 21:12:12 188
转载 printf相关
1) 类型:类型字符用以表示输出数据的类型,其格式符和意义如下表所示: 格式字符 意义 d 以十进制形式输出带符号整数(正数不输出符号) o 以八进制形式输出无符号整数(不输出前缀0) x,X 以十六进制形式输出无符号整数(不输出前缀Ox) u 以十进制形式输出无符号整数 f
2016-11-07 21:41:28 158
原创 C语言位运算
1 “按位与”运算符(&) 按位与是指:参加运算的两个数据,按二进制位进行“与”运算。如果两个相应的二进制位都为1,则该位的结果值为1;否则为0。按位与运算: 00000011&00000101 = 00000001由此可知3&5=1(1)清零 :原来的数中为1的位,新数中相应位为0。然后使二者进行&运算,即可达到清零目的。(2)保留指定位:与一个数
2016-11-06 23:24:15 209
原创 11.5笔记
1.bit (32位系统)字节 = 8bit 半字 = 16bit 字 = 32bit int = 4字节; short = 2 ; double = 8 ; float = 4 ; char = 1 ; long = 4 ; (指针变量为4字节,地址长度固定 )2.unsigned char : 0 ~ 255 ;
2016-11-05 22:28:26 214
原创 进制转换
1.2进制从最后一位开始(从右向左),把每一位数字分别乘以2^0,2^1,2^2,2^3...然后全部加起来就是对应的10进制数了2.2进制转成8进制,从右向左,每三位一组隔开(最左边那组可能不到3位),然后用计算10进制的方法,计算每一组的三位二进制数所对应的数字,然后把每一组的结果,从右向左写出来,比如(110110)2进制=(110|110)2进制=(66)8进制3.2进
2016-11-04 22:23:09 280
转载 C语言常用运算符优先级
一.1级(左结合) ( ) 圆括号;[ ]下标运算符;->指向结构体成员运算符;. 结构体成员运算符。2级(右结合) “ ! ”逻辑非运算符;“ ~ ”按位取反运算符;“ ++ ”前缀增量运算符;“ -- ”前缀减量运算符; “ - ”负号运算符;(类型)类型转换运算符;“ * ”指针运算符;“ & ”地址运算符。3级(左结合) “ * ” 乘法
2016-11-03 22:43:01 439
原创 数组指针与指针数组
1.指针数组:array of pointers,即用于存储指针的数组,也就是数组元素都是指针。数组指针:a pointer to an array,即指向数组的指针。2.int* a[4] 指针数组 表示:数组a中的元素都为int型指针 元素表示:*a[i] *(a[i])是一样
2016-11-02 22:35:04 187
原创 二维数组
1.二维数组A[m][n],这是一个m行,n列的二维数组。设a[p][q]为A的第一个元素,即二维数组的行下标从p到m,列下标从q到n。二维数组又称为矩阵,本质上是以数组作为数组元素的数组。 int a [3][4]总共是12个元素,可以当做3行4列看待,这12个元素的依次是a [0][0] a [0][1] a [0][2] a [0][3]a [1][0] a [1][1] a
2016-11-01 22:27:35 530
原创 c语言变量声明
1.右左法则int a;整型变量int *a;整型指针变量int **a;整型指针的指针变量int a【10】;整型数组int *a【10】;整型指针数组int (*a【10】)(int);函数指针数组2.int * (* (*fp1) (int) ) [10]; fp1:是一个函数指针变量,指向一个形参为int ,返回值为数组指针,该指针指向一个整型指
2016-10-31 22:35:34 290
原创 动态库与静态库
1.库文件:用来保存变量、文件,可以使用但看不到实现。/lib 系统库/usr/lib 程序库2.静态库(后缀 .a )系统在编译过程中将程序的目标文件和所需的函数库文件链接在一起;是在执行程序之前就已经加入到执行代码中,成为执行程序的一部分来执行的。3.动态库( .so )程序在运行过程中需要使用时才链接函数库;在执行程序启动时加载到执行代
2016-10-29 22:29:10 221
转载 C语言函数的递归
1.递归条件 采用递归方法来解决问题,必须符合以下三个条件: 1、可以把要解决的问题转化为一个新问题,而这个新的问题的解决方法仍与原来的解决方法相同,只是所处理的对象有规律地递增或递减。 说明:解决问题的方法相同,调用函数的参数每次不同(有规律的递增或递减),如果没有规律也就不能适用递归调用。 2、可以应用这个转化过程使问题得到解决。 说明:使用其他的办法比较麻烦或很
2016-10-28 22:36:13 338
转载 c语言指针
在计算机科学中,指针(Pointer)是编程语言中的一个对象,利用地址,它的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”。意思是通过它能找到以它为地址的内存单元。[1] 在高级语言中,指针有效地取代了在低级语言,如汇编语言与机器码,直接使用通用暂存器的地方,但它可能只适用于合法地址之
2016-10-27 22:03:22 186
原创 linux部分命令笔记
1.su - 用户名 切换用户 如: su - root 切换到超级用户adduser 用户名 添加用户 。 adduser yy 添加用户 yypasswd yy 为yy用户添加口令ls -l 查看详细内容 [root@localhost ~]# #超级用户 ~ 当前用户的工作目录 [yy@localhost
2016-10-26 22:26:29 222
转载 linux系统根目录各文件的作用
1.root 系统管理员的主目录,存放管理员相关文件。2.home 存放普通用户相关文件的目录 3.bin 常用命令目录4.boot 存放引导相关的文件,/boot目录存放引导加载器(bootstrap loader)使用的文件5.dev /dev 目录存放设备文件,即设备驱动程序,用户通过这些文件访问外部设
2016-10-24 22:24:18 1013
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人