自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(74)
  • 资源 (3)
  • 收藏
  • 关注

原创 JNI学习笔记——(四)kotlin声明并调用Native函数、JNI异常

注:编码工具是Android Studio。目录kotlin声明并调用Native函数JNI异常案例一案例二案例三kotlin声明并调用Native函数KotlinJniActivity代码package com.android.jni.study.day22import android.os.Bundleimport android.util.Logimport androidx.appcompat.app.AppCompatActivityimport c

2021-12-23 21:37:32 3420

原创 JNI学习笔记——(三)动态注册、线程

注:编码工具是Android Studio。目录动态注册线程错误案例用JavaVM和GlobalRef动态注册 用Java_包名_类名_函数名形式声明JNI函数的方式是静态注册。 除了静态注册,还可以用动态注册方式实现JNI函数,具体方式是在JNI的JNI_OnLoad函数用JNIEnv.registerNatives函数注册JNI函数,JNI_OnLoad函数会在Java代码调用System.loadLibrary方法时调用。JniActiv...

2021-12-19 18:58:25 828

原创 JNI学习笔记——(二)Native操作Java对象

注:编码工具是Android Studio。目录Native打印Java传入的StringNative接收Java传入的基本类型数组打印并修改Native遍历打印Java传入的引用类型数组Native通过jclass创建Java类的对象局部引用和全局引用定义在函数外面的引用造成的crash用全局引用解决crash问题extern 声明变量和函数Native打印Java传入的StringJniActivity代码package com.

2021-12-16 23:10:47 4135

原创 JNI学习笔记——(一)入门

注:编码工具是Android Studio。目录创建Android Studio编写JNI代码环境JNI是什么?javah命令生成native方法签名案例一:Native修改Java类属性值案例二:Native调用Java类方法创建Android Studio编写JNI代码环境File -> New Project -> Native C++。JNI是什么? JNI是JDK提供的一种能够让Java和Native之间互相操...

2021-12-09 21:23:40 2275

原创 C++学习笔记——(十)智能指针,类型转换,宏

注:编码工具是CLion+Cygwin64智能指针 智能指针可以用于自动回收new方式创建的对象。使用前需要先导入memory头文件。shared_ptr#include <iostream>using namespace std;#include <memory>class Test{public: ~Test(){ cout << "Test析构函数" << endl; }};...

2021-12-01 18:56:14 1609

原创 C++学习笔记——(九)引用作为左值,线程

注:编码工具是CLion+Cygwin64目录引用作为左值线程用法main函数默认不等待线程pthread_join互斥锁条件变量引用作为左值#include <iostream>using namespace std;class RefTest{private: string prop;public: RefTest(string prop): prop(prop){} string & getProp

2021-11-28 17:27:43 233

原创 C++学习笔记——(八)map容器、for_each、预定义函数

注:编码工具是CLion+Cygwin64目录mapmultimapfor_each对象存入后和从容器中取出的细节预定义函数map map会对key进行排序。#include <iostream>using namespace std;// 先导入头文件#include <map>int main(){ map<int, string> m; // map的集中插入元素的方式 m...

2021-11-27 17:52:07 2518 1

原创 Kotlin学习笔记——(十三)协程异常处理

注:编码工具为IntelliJ目录Kotlin异常不处理的情况处理的情况协程异常处理launch方式启动的协程异常抛出和处理异常抛出常规处理:try-catch常规处理二:try-catch包裹整个协程,不起作用CoroutineExceptionHandler async方式启动的协程异常抛出和处理异常抛出处理异常CoroutineExceptionHandler全局协程异常处理器协同作用域与主从作用域异常处理的不同:针对协程嵌套协同..

2021-11-27 12:21:02 2386

原创 C++学习笔记——(七)STL(Standard Template Library)与函数谓词

注:编码工具是CLion+Cygwin64目录STL概念vector初始化添加元素访问元素修改元素删除元素遍历元素stackqueuepriority_queuelistset谓词STL概念 全称Standard Template Library,标准模板库,类似于Java的集合框架。 与Java的集合框架不同的是,Java集合框架把集合的所有功能全部封装在集合类中,而C++则把功能拆分到STL包、算法包...

2021-11-25 18:58:22 804

原创 Kotlin学习笔记——(十二)协程上下文

注:编码工具为IntelliJ概念及作用 协程上下文是一个有索引的Element实例集合,每个element在这个集合里有一个唯一的key; 协程上下文包含用户定义的一些数据集合,这些数据与协程密切相关; 协程上下文用于控制线程行为、协程的声明周期、异常以及调试。组成结构 协程上下文结构图如下:Job:用于控制协程的声明周期。CoroutineDispatcher:用于向合适的线程分发任务。CoroutineN...

2021-11-25 12:15:44 2090

原创 C++学习笔记——(六)多态、纯虚函数、模板函数

注:编码工具是CLion+Cygwin64目录类属性为对象时的初始化方式有继承关系时,子类和父类的构造和析构函数执行顺序多态几种常见说法动态多态(重写)静态多态(重载)纯虚函数类中函数部分为纯虚函数类中函数全部为纯虚函数全纯虚函数类模拟登陆回调模板函数类属性为对象时的初始化方式#include <iostream>using namespace std;class Pet{public: string name;

2021-11-24 21:43:16 1011

原创 Kotlin学习笔记——(十一)协程的基本使用

注:编码工具为IntelliJ目录依赖启动几种启动方式的区别阻塞与非阻塞返回值自定义作用域依赖使用协程前,需要导入协程依赖。implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.5.2'Android中需要额外导入依赖。implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.2'启动packa

2021-11-24 11:29:34 1539

原创 C++学习笔记——(五)操作符重载和类的继承

注:编码工具是CLion+Cygwin64目录操作符重载+/-前置++/后置++<<[]类的继承一般示例私有和公有继承多继承虚继承操作符重载 用操作符实现对象之间的运算,简化对象的操作。+/-#include <iostream>using namespace std;class Point{public: int x, y; Point(int x, int y): x(x),...

2021-11-14 22:03:05 725

原创 Kotlin学习笔记——(十)用高阶函数、扩展函数简单模仿声明式UI

注:编码工具为IntelliJ目录案例一:案例二:案例三:案例一:package step_tenfun main() { // 看到花括号,想到lambda, layout { // 看到lambda里面的花括号,想到类的成员函数时高阶函数,省略了this. textview { println("textview") } button { pri

2021-11-14 16:54:29 1531

原创 C++学习笔记——(四)可变参数、static关键字、this关键字、友元函数和友元类

注:编码工具是CLion+Cygwin64目录可变参数static关键字非类中static变量和函数类中的static变量和函数this关键字友元友元函数友元类可变参数#include <iostream>#include <cstdarg>using namespace std;void test(int count, ...) { // 第一步 va_list vl; // 第二步 va_

2021-11-13 22:10:40 455

原创 Kotlin学习笔记——(九)仿写内置函数

注:编码工具为IntelliJ目录lambda表达式作为lambda表达式参数模仿RxJava的链式调用阶段一:阶段二:lambda中it变为this阶段三:简化map、consume和create代码阶段四:将类成员函数变为扩展函数,进一步简化代码内置函数仿写applylet runwithalsotakeIf takeUnlessIterable的forEachrepeatthreadlambda表...

2021-11-13 17:32:18 1792

原创 C++学习笔记——(三)深拷贝和浅拷贝

注:编码工具是CLion+Cygwin64拷贝构造函数 C++在给一个对象引用赋值、函数返回对象或者对象作为函数参数传递的时候,会调用类的拷贝构造函数创建一个新的对象。赋值#include <iostream>using namespace std;class Student {public: char *name; Student(char *name) : name(name) { cout << "构造...

2021-11-13 12:36:59 827

原创 Kotlin学习笔记——(八)高阶函数案例

注:编码工具为IntelliJ目录Kotlin的lambda表达式实现原理高阶函数函数作为函数参数函数作为函数的返回值高阶函数使用案例回调高阶函数配合扩展函数使用函数作为最后一个参数的调用方式模仿监听Kotlin的lambda表达式实现原理 Kotlin内部定义了一系列FunctionX接口,在Function.kt文件中,开发者定义的lambda表达式(匿名函数),Kotlin底层会通过实现FunctionX接口的方式实现。package...

2021-11-12 21:55:32 1495

原创 C++学习笔记——(二)命名空间、构造函数、析构函数、拷贝构造函数、常量指针、指针常量、常量指针常量

注:编码工具是CLion+Cygwin64命名空间定义 命名空间内部可以定义变量和函数。#include <iostream>namespace metaspace{ char * name = "元空间"; void show(){ std::cout << "name = " << name << std::endl; }}内部成员的两种访问方式方式一:命名...

2021-11-10 21:39:38 621

原创 Kotlin学习笔记——(七)lambda表达式与高阶函数

注:编码工具为IntelliJ目录函数类型变量函数类型变量声明函数变量自动类型推断函数类型变量声明结合实现函数类型变量的两种调用方式某种数据类型的扩展函数类型变量正常定义的函数返回值将普通函数用函数引用赋值给变量嵌套高阶函数初探笔记二里面记录过匿名函数和lambda表达式,这节稍微展开记录一些相关的定义和使用。函数类型变量 Kotlin中函数可以作为一种类型,可以定义变量,可以将匿名函数,也即lambda表达式赋值给函数类型变量。函数...

2021-11-09 22:34:49 340 1

原创 C++学习笔记——(一)与C区别、常量、引用、函数重载、默认形参、类初探

注:编码工具是CLion+Cygwin64目录与C区别常量C语言C++引用与常量引用通过引用方式交换两个变量值常量引用函数重载C语言C++默认形参无形参变量名的特殊写法类初探C++的布尔类型与C区别C语言是面向过程的,C++是面向对象的。C语言环境不能运行C++代码,C++环境可以运行C代码。C语言的常量是伪常量,C++的常量是真常量。C语言不允许函数重载,C++允许函数重载。常量C语言 可以通过指针的...

2021-11-07 22:11:29 135

原创 Kotlin学习笔记——(六)接口、抽象类、泛型、扩展、集合操作符、与Java互操作性、单例

接口 接口默认是open的,接口成员默认也是open的。示例interface InterfaceTest { fun test()}class InterfaceTestImpl : InterfaceTest{ override fun test() { println("这是实现自InterfaceTest的方法") }}fun main() { InterfaceTestImpl().test()}输出:...

2021-11-07 19:13:08 1014 1

原创 C语言学习笔记——(六)文件

注:编码工具是CLion+Cygwin64文件的读写 fopen函数,以特定模式打开指定文件。 模式:r、w、rb、wb、rw。 读文件的时候,如果指定文件不存在会报错。 写文件的时候,如果指定文件不存在会创建文件。 fclose函数,文件操作完成后,要调用此函数关闭文件,释放资源。读文件...

2021-11-06 19:30:32 569

原创 Kotlin学习笔记——(五)类

注:编码工具为IntelliJ目录类的继承和方法重写智能转换:is asobject类型object表达式伴生对象:companion object嵌套类和内部类数据类型:data class自定义解构函数运算符重载枚举:enum class密封类:sealed class类的继承和方法重写 Kotlin的类和方法默认都是public final的,如果想要让类可以被继承、方法可以被重写,需要在类声明和方法声明前添加open关键字。...

2021-11-06 17:37:39 540

原创 C语言学习笔记——(五)结构体、枚举的简单示例

注:编码工具是CLion+Cygwin64目录结构体定义结构体及变量另一种定义结构体变量的方式结构体的两种成员变量初始化方式嵌套指针动态开辟数组别名枚举结构体定义结构体及变量struct Person{ char name[10]; int age; char gender;};int main(){ struct Person person; printf("name = %s, age = %d,

2021-11-06 12:35:52 170

原创 Kotlin学习笔记——(四)List、Set、Map、数组和类

注:编码工具为IntelliJList创建 List分为可变和不可变两种,之间可以相互转换。fun main() { val intList = listOf(1, 2, 3) // 创建可变List val intMutableList = mutableListOf(1, 2, 3)// 创建不可变List println(intList) println(intMutableList) println(intList.toMuta...

2021-11-01 22:33:44 636

原创 C语言学习笔记——(四)指针进阶——字符串操作

注:编码工具是CLion+Cygwin64目录字符串的两种定义方式自定义获取字符串长度方法方式一:方式二:字符串转数字比较查找和包含拷贝和拼接大小写转换字符串的两种定义方式 方式一:字符数组 此种方式需要在最后一个元素后面添加'\0',C语言的字符串以'\0'结尾。 方式二:字符指针 此种方式隐式添加'\0'。#include <stdio.h&...

2021-10-31 21:46:12 332

原创 Kotlin学习笔记——(三)空安全机制、异常、字符串和内置函数

注:编码工具为IntelliJ空安全机制 Kotlin定义任意数据类型变量,默认是不可空类型,不能赋值null给该变量。 Kotlin定义任意数据类型可空变量,需要在数据类型后面加问号(?),如:var str: String? = null。示例:fun main() { var str = "string" // str = null // 编译器报错:Null can not be a value of a non-null type ...

2021-10-31 16:25:39 264

原创 C语言学习笔记——(三)静态开辟内存和动态开辟内存

注:编码工具是CLion+Cygwin目录补充知识:C语言的布尔类型——非零即true。静态开辟内存静态开辟内存上限测试:静态开辟内存特点:静态开辟内存自动开辟和自动释放测试:动态开辟内存动态开辟内存特点:动态开辟内存的使用场景:动态开辟的内存未回收示例:动态开辟的内存用完回收示例:realloc补充知识:C语言的布尔类型——非零即true。NULL==0。#include <stdio.h>int main(){ i

2021-10-31 11:30:12 726

原创 Kotlin学习笔记——(二)匿名函数、函数类型和lambda表达式

注:编码工具为IntelliJ目录匿名函数入门示例函数类型和隐式返回定义函数类型变量的两种方式方式一:方式二:函数类型作为函数参数非内联函数内联函数函数引用函数作为函数的返回值匿名函数入门示例fun main() { val len = "KimuraTakuya".count { it == 'a' } println(len)}输出:3 示例中的{it == 'a'}就是一个匿名函数。 ...

2021-10-30 22:40:19 383

原创 C语言学习笔记——(二)指针运算和函数指针

注:编码工具是CLion+Cygwin64目录数组与数组指针多个操作系统平台兼容的for循环写法:C语言数组的定义与for循环遍历方式一:方式二:数组的内存地址与首元素内存地址C语言数组没有下标越界用指针方式遍历数组用指针方式给数组元素赋值指针类型有什么作用?函数指针案例一:案例二:多级指针 指针存放的是内存地址,一级指针存放的是普通变量的内存地址,二级指针存放的是一级指针的内存地址,三级指针存放的是二级指针的内存地址。//...

2021-10-30 21:07:50 195

原创 Kotlin学习笔记——(一)变量、语句和函数

注:编码工具为IntelliJ为什么要学习Kotlin? 我本身是Android开发工程师,Kotlin被Google宣布为Android第一开发语言,主要是为了避免诉讼问题,Oracle近年来因为Android未经授权使用JavaAPI对Google提起了多场诉讼,Google饱受侵权困扰。 Android后续新技术如jetpack越来越多的使用kotlin作为主要开发语言,为了跟上时代。 国外越来越多的开发者和三方库使用kotlin进行开发。...

2021-10-30 18:31:00 203

原创 C语言学习笔记——(一)基本数据类型、字符串、指针入门

注:编码工具是CLion+Cygwin64基本数据类型#include <stdio.h>// 基本数据类型int main() { short s = 255; char c = 'A'; int i = 1; long l = 13; float f = 3.0f; double d = 3.0; printf("s = %d\n", s); printf("c = %c\n", c); printf("

2021-10-30 12:31:52 120

转载 解决IllegalStateException: Can not perform this action after onSaveInstanceState

原址:http://www.cnblogs.com/zgz345/archive/2013/03/04/2942553.html今天使用Fragment的时候,出现了这个错误 IllegalStateException: Can not perform this action after onSaveInstanceState: E/AndroidRuntime

2017-06-30 11:58:47 409

转载 Android 4.4 kitkat以上及以下根据uri获取路径的方法

原址:http://www.2cto.com/kf/201502/376975.html今天我在做视频编辑的时候,遇到了这个问题,前后用了1个小时来发现并解决了这个问题,因为我一直认为是我记错了,后来发现,华为P6用的是Android4.4系统,然后我就恍然了。。。首先说说我在做什么,我在弄一个拍摄完视频之后,编辑视频的一个东东,这个东东其实不难,源码里有,你们是不是不敢信?!

2017-06-30 09:53:13 435

转载 Intellij IDEA 创建Web项目并在Tomcat中部署运行

原址:http://www.thinksaas.cn/topics/0/350/350000.htmlIntellij IDEA 创建Web项目并在Tomcat中部署运行一.创建Web项目1、File -> New Module,进入创建项目窗口  2.选择Java类型,在 Module name 处输入项目名,点击Next  3.勾选 Web Appl

2017-06-01 15:30:08 701

原创 Android 官网Train阅读记录——7

LZ阅读的是中文翻译版本:http://hukai.me/android-training-course-in-chinese/basics/activity-lifecycle/recreating.html,试验机系统版本7.1。10.4 增加搜索功能10.4.1 建立搜索界面从Android 3.0 开始,在ActionBar中使用SearchView作为Item,是在App中提

2017-05-11 11:41:40 386

原创 Android 官网Train阅读记录——6

LZ阅读的是中文翻译版本:http://hukai.me/android-training-course-in-chinese/basics/activity-lifecycle/recreating.html,试验机系统版本7.1。10、Android交互设计10.3 通知提示用户10.3.1 建立Notification以下的例子都是基于NotificationCompat.B

2017-05-11 11:12:36 223

原创 Android 官网Train阅读记录——5

LZ阅读的是中文翻译版本:http://hukai.me/android-training-course-in-chinese/basics/activity-lifecycle/recreating.html,试验机系统版本7.1。5、Android网络连接5.7 使用Volley执行网络数据传输Volley是一个HTTP库,能够帮助Android App更方便地执行网络操作,最重要

2017-05-09 17:16:22 238

原创 Android 官网Train阅读记录——4

LZ阅读的是中文翻译版本:http://hukai.me/android-training-course-in-chinese/basics/activity-lifecycle/recreating.html,试验机系统版本7.1。4、Android图像与动画4.1 高效显示Bitmap在Android应用中加载Bitmap的操作是需要特别小心处理的,有以下几个方面的原因:i、移

2017-05-08 21:07:35 225

DiskLruCache源码

DiskLruCache源码

2017-05-09

volley.jar

volley.jar

2017-05-09

DiskLruCache.java

DiskLruCache.java

2017-05-09

空空如也

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

TA关注的人

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