自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android学习--JNI

JNI学习

2023-08-17 15:24:16 1998 1

原创 音视频学习-音视频基础

数字音频信号如果不加压缩地直接进行传送,将会占用极大的带宽。如此大的带宽将给信号的传输和处理都带来许多困难和成本(阿里云服务器带宽大于5M后,每M价格是100元/月),因此必须采取音频压缩技术对音频数据进行处理,才能有效地传输音频数据。数字音频压缩编码在保证信号在听觉方面不产生失真的前提下,对音频数据信号进行尽可能大的压缩,降低数据量。数字音频压缩编码采取去除声音信号中冗余成分的方法来实现。所谓冗余成分指的是音频中不能被人耳感知到的信号,它们对确定声音的音色,音调等信息没有任何的帮助。

2023-08-16 14:52:09 1108

原创 C++学习一C++11

一个函数运行期间可能产生异常。在函数内部对异常进行处理未必合适。因为函数设计者无法知道函数调用者希望如何处理异常。告知函数调用者发生了异常,让函数调用者处理比较好用函数返回值告知异常不方便。

2023-08-15 23:17:15 222

原创 C++学习一STL

1)顺序容器2)关联容器3)容器适配器对象被插入容器中时,被插入的是对象的一个复制品。许多算法,比如排序,查找,要求对容器中的元素进行比较,有的容器本身就是排序的,所以,放入容器的对象所属的类,往往还应该重载 == 和 < 运算符。是个对象,但是用起来看上去象函数调用,实际上也执行了函数调用。public://重载 () 运算符//函数对象// average.operator()(3,2,3) 用起来看上去象函数调用return 0;

2023-08-15 18:17:33 193

原创 C++学习一string类

使用string类要包含头文件string对象的初始化:错误的初始化方法:// 错// 错// 错// 错可以将字符赋值给string对象– string s;– s = ‘n’;string s;s='n';return 0;HelloxxxxxxxxMarchnstring 对象的长度用成员函数 length()读取;string 支持流读取运算符string 支持getline函数– string s;

2023-08-13 23:15:10 68

原创 C++学习一模板(泛型)

任意从 template <class T1,class T2>ostream & operator<< (ostream & o,const Pair<T1,T2> & p)生成的函数,都是任意Pair摸板类的友元。在有多个函数和函数模板名字相同的情况下,编译器如下处理一条函数调用语句。函数模板可以重载,只要它们的形参表或类型参数表不同即可。例如:求数组最大元素的MaxElement函数模板。类模板示例: Pair类模板。不通过参数实例化函数模板。函数模版作为类模板成员。

2023-08-13 22:33:56 61

原创 C++学习一IO操作

istream是用于输入的流类,cin就是该类的对象。ostream是用于输出的流类,cout就是该类的对象。ifstream是用于从文件读取数据的类。ofstream是用于向文件写入数据的类。iostream是既能用于输入,又能用于输出的类。fstream 是既能从文件读取数据,又能向文件写入数据的类。从输入流中读取bufSize-1个字符到缓冲区buf,或读到碰到‘\n’为止(哪个先到算哪个)。从输入流中读取bufSize-1个字符到缓冲区buf,或读到碰到delim字符为止(哪个先到算哪

2023-08-13 19:17:16 102

原创 C++学习一多态

编译时即可确定,调用的函数是自己的类或基类中定义的函数,不会等到运行时才决定调用自己的还是派生类的函数。在面向对象的程序设计中使用多态,能够增强程序的可扩充性,即程序需要修改或增加功能的时候,需要改动和增加的代码较少。如果一个类从抽象类派生而来,那么当且仅当它实现了基类中的所有纯虚函数,它才能成为非抽象类。在抽象类的成员函数内可以调用纯虚函数,但是在构造函数或析构函数内部不能调用纯虚函数。在非构造函数,非析构函数的成员函数中调用虚函数,是多态.抽象类的指针和引用可以指向由抽象类派生出来的类的对象。

2023-08-13 16:43:21 48

原创 C++学习--继承和派生

二、派生类对象的内存空间派生类对象的体积,等于基类对象的体积,再加上派生类对象自己的成员变量的体积。在派生类对象中,包含着基类对象,而且基类对象的存储位置位于派生类对象新增的成员变量之前。派生类可以定义一个和基类成员同名的成员,这叫覆盖。在派生类中访问这类成员时,缺省的情况是访问派生类中定义的成员。要在派生类中访问由基类定义的同名成员时,要使用作用域符号::。例如:四、类的保护成员基类的private成员:可以被下列函数访问基类的public成员:可以被下列函数访问基类的protected成

2023-08-11 17:48:22 59

原创 C++学习一类与对象

成员函数的一种名字与类名相同,可以有参数,不能有返回值(void也不行)作用是对对象进行初始化,如给成员变量赋初值如果定义类时没写构造函数,则编译器生成一个默认的无参数的构造函数默认构造函数无参数,不做任何操作如果定义了构造函数,则编译器不生成默认的无参数的构造函数对象生成时构造函数自动被调用。对象一旦生成,就再也不能在其上执行构造函数一个类可以有多个构造函数构造函数执行必要的初始化工作,有了构造函数,就不必专门再写初始化函数,也不用担心忘记调用初始化函数。

2023-08-08 14:22:04 41

原创 C++学习一基础

C++基础学习

2023-08-06 22:29:55 130

原创 Android-App启动流程

文章目录一、Application和Activity创建1.Application2.Activity二、UI绘制流程1.继承Activity加载xml文件2.继承AppCompatActivity加载xml文件三、View的绘制流程总结一、Application和Activity创建ActivityThread :其中的main方法 就是程序的入口,本质是一个handler,继承ClientTransactionHandler,ClientTransactionHandler里面有各种applica

2021-08-24 22:22:15 742 1

原创 Android插件化

Android插件化学习文章目录Android插件化学习前言一、双亲委托机制1.结构2.加载过程3.测试打印classLoader二、插件化加载1.类的加载2.反射3.插件化方案第一种:加载外部dex文件4.插件化方案第二种:加载外部apk文件1.加载单个具体文件2.加载包里有多个文件,编写apk加载类总结:加载流程图前言什么是插件?免安装运行的apk,这个apk就属于插件能解决的问题:1.原始app体积太大,使用插件化可以减少app体积大小2.解耦3.方法数超过65535 app占用

2021-08-24 16:28:46 310

原创 Retrofit源码学习

Retrofit源码学习文章目录Retrofit源码学习前言一、动态代理二、retrofit源码学习1.retrofit写法2.源码学习三、仿retrofit手写请求总结前言1.为什么不用OKHTTP,而要用retrofit因为OKHTTP需要自己做线程切换操作,还需要拼接参数,这些功能retrofit都实现了2.retrofit是什么是一个restful的http网络请求框架的封装,网络请求的工作本质是由Okhttp完成的,而retrofit仅负责网络请求接口的封装一、动态代理1

2021-08-18 18:38:55 169 1

原创 Android grade语法,多渠道打包

Android grade语法,多渠道打包文章目录Android grade语法,多渠道打包一、groovy语法二、自动打包切换测试正式环境三、gradle多渠道打包总结一、groovy语法以下代码需要 在build.grade文件中操作,具体打印日志在build中查看//字符串拼接task StringText{ def str1 = "woshishuangyinhao" def str2 = "woshidanyinhao" println str1+str

2021-08-17 17:25:40 693 2

原创 RxJava操作符应用

RxJava操作符应用引入库: api("io.reactivex.rxjava3:rxjava:3.1.0") api('io.reactivex.rxjava3:rxandroid:3.1.0')文章目录RxJava操作符应用操作符分类一、创建操作符1.create2.just和from3.defer操作符4.range操作符5.interval操作符6.7.8.9.10.11.二、使用步骤1.引入库2.读入数据总结操作符分类创建操作符 复杂数据遍历 just f

2021-08-12 09:59:02 122

原创 flutter学习之权限申请相关,选择本地图片,视频,拍照

flutter学习之权限申请相关,选择本地图片,视频,拍照在flutter中权限申请和拍照视频都是依赖一些库实现。相关的库如下:# 获取设备信息 device_info_plus: ^2.1.0#动态权限申请 permission_handler: ^8.1.4+2#选择相册 image_picker: ^0.8.3+2# 视频播放 video_player: ^2.1.12 chewie: ^1.2.2可以自己在https://pub.flutter-io.cn/上

2021-08-10 15:27:45 3072

原创 Glide源码学习-三大缓存

Glide源码学习-三大缓存文章目录Glide源码学习-三大缓存Lru算法一、Glide执行流程二、三大缓存1.活动缓存2.内存缓存3.磁盘缓存图片加载流程(三级缓存):Lru算法Lru算法基于linkedHashmap,有一个最大长度值,如果添加元素的已经元素已经满了,就会把最不常使用的元素移除,里面的元素只要使用过,就会放到最近的位置,方便调用,Gilde框架中,内存缓存和磁盘缓存都是使用的Lru算法LinkedHashMap<String,Integer> map = new

2021-08-04 16:26:26 1229 2

原创 Glide源码学习-with,load,into

Glide源码学习-with,load,intowith主线:1 给我们New了一个glide对象2 创建一个空的fragment 并且绑定fragment3 把生命周期传导出去load主线:初始化url或byte等,注册机注册,返回RequestBuilder对象into:除了生命周期 所有的的功能都是into做的相当复杂,网络请求、线程切换、数据渲染、不同尺寸图片等文章目录Glide源码学习-with,load,into一、with二、load三、info四、生命周期的意义总结一

2021-08-04 11:20:17 470

原创 flutter学习之网络请求

flutter学习之网络请求文章目录flutter学习之网络请求JSON字符串和Map类型的转换一、dio做网络请求1.引入库2.get请求3.Post请求三、下拉加载、上拉加载更多1.下拉刷新数据2.上拉加载更多3.混合实现数据列表页面四、加载html,加载网页1.加载html2.加载网页总结JSON字符串和Map类型的转换 Map map ={"name":"张三","age":20}; String jsonData = '{"name":"李四","age":21}';

2021-08-04 10:19:59 376

原创 flutter学习之基础组件(八)

flutter学习之基础组件(八)本节主要记录三方库轮播图的使用和Dialog相关组件,以及自定义dialog文章目录flutter学习之基础组件(八)一、轮播图1.引导页轮播2.Banner轮播3.卡片轮播4.其他轮播5.使用数据二、弹窗Dialog组件1.引入库2.读入数据总结一、轮播图如果您使用的是Flutter2.2.0以及Flutter2.2.0之后的版本请使用flutter_swiper_null_safety,如果您使用的是Flutter2.2.0之前的版本请使用flutter_

2021-08-02 13:50:02 737 1

原创 Glide源码学习-生命周期

Glide源码学习-生命周期Glide优缺点优点:1、多样化媒体加载2、生命周期集成3、高效缓存策略4、内存开销小缺点:使用方法复杂由于其功能强大,所以使用的方法非常多,源码比较复杂,比较大文章目录Glide源码学习-生命周期前言一、Glide生命周期1.查看Activity和Fragment的生命周期2.读取生命周期相关源码二、Glide内存检测三、Glide监听网络变化四、Glide缓存fragment总结前言Glide加载本质也是调用系统的网络控件HttpURLConne

2021-07-31 12:49:10 220 2

原创 flutter学习之基础组件(七)

flutter学习之基础组件(七)本节主要学习输入框和选择控件以及日期组件文章目录flutter学习之基础组件(七)一、TextField文本输入框二、Checkbox、CheckboxListTile多选框组件1.Checkbox2.CheckboxListTile三、Radio、RadioListTile单选按钮组件和Switch开关组件1.Radio2.RadioListTile3.Switch四、混合实现一个学员信息上报系统五、Flutter日期和时间戳1.flutter自带日期组件和时间组件

2021-07-30 17:21:36 437 2

原创 flutter学习之基础组件(六)

flutter学习之基础组件(六)本次主要学习一些Flutter中的常见的按钮组件以及自定义按钮组件文章目录flutter学习之基础组件(六)一、Flutter中的按钮组件介绍二、各种按钮使用三、FloatingActionButton实现底部中间bottomNavigationBar总结一、Flutter中的按钮组件介绍Flutter里有很多的Button 组件很多,参考下表1.0和2.0的区别就是,1.0的好的属性需要在外部配置,2.0都是放在style里面去配置了二、各种按钮使用

2021-07-27 16:18:17 196 1

原创 Android简易动态加载-批量替换资源包实现换肤

Android简易动态加载-批量替换资源包实现换肤动态加载技术:核心是想是动态调用外部的dex文件,极端情况下,Android APK自身带有的dex文件只是一个程序的入口(或者是空壳),所有的功能都是通过服务器下载最新的dex文件完成应用在运行的适合去加载一些本地的可执行文件实现一些特定的功能动态加载那些文件:动态加载so库动态加载dex ,jar,apk文件简单实现方式:1、获取包的管理器,获取资源包信息类,找到资源对象2、通过反射获取AssetManager对象以及addAsset

2021-07-27 11:53:28 651 1

原创 flutter学习之基础组件(五)

flutter学习之基础组件(五)本节主要学习Tab组件和抽屉组件的使用文章目录flutter学习之基础组件(五)一、AppBar自定义顶部按钮,图标,颜色二、TabBar实现顶部Tab切换1.使用DefaultTabController实现Tab切换2.使用TabController实现Tab三、Drawer侧边栏(抽屉布局)1.使用DrawerHeader定义侧边栏顶部2.使用UserAccountsDrawerHeader实现侧边栏头部总结一、AppBar自定义顶部按钮,图标,颜色Ap

2021-07-25 21:28:37 200 2

原创 flutter学习之基础组件(四)

flutter学习之基础组件(四)本节主要记录StatefulWidget有状态组件和bottomNavigationBar组件实现主页面tab切换以及路由跳转,命名路由跳转。文章目录flutter学习之基础组件(四)一、StatefulWidget 有状态组件1.使用StatefulWidget 实现一个简单的计数器2.使用StatefulWidget 动态添加列表二、bottomNavigationBar组件1.BottomNavigationBar常见的属性2.BottomNavigationB

2021-07-24 16:02:13 153

原创 flutter学习之基础组件(三)

flutter学习之基础组件(三)一、Padding组件是常见的布局标签,Flutter 中很多 Widget是没有padding属性。这个时候我们可以用Padding组件处理容器与子元素直接的间距,具体属性如下:/** * Padding组件设置边距 */class HomeContets extends StatelessWidget { @override Widget build(BuildContext context) { return Container(

2021-07-22 17:39:09 609 1

原创 flutter学习之基础组件(二)

flutter学习之基础组件(二)本章学习ListVew列表组件,GridView网格组件Flutter 中我们可以通过 ListView 来定义 列表项,支持垂直和水平方向展示。通过一个属性就可以控制列表的显示方向。列表有一下 分类:1、垂直列表2、垂直图文列表3、水平列表4、动态列表5、矩阵式列表1-4是Listview实现的,5是GridView实现的一、ListView组件1.参数2.普通列表/** * 普通列表使用 */class HomeContent ext

2021-07-22 16:08:49 420 1

原创 flutter学习之基础组件(一)

flutter学习之基础组件(一)主要学习Center 组件、Text 组件、MaterialApp 组件、Scaffold 组件、Image组件(以代码为主)文章目录flutter学习之基础组件(一)前言一、Flutter 目录结构二、Flutter 入口文件、入口方法三、Center 组件四、自定义组件五、件用 MaterialApp、Scaffold、Container、Text组件装饰App1.MaterialApp2.Scaffold3.Text4.Container六、图片组件Img

2021-07-20 18:10:05 158 1

原创 flutter学习之Dart基础

flutter学习之Dart基础看完了dart基础,发现里面既有java基础的影子,也有kotlin的影子,面向对象思想,会java基础的,学习dart基础就当复习了。目录flutter学习之Dart基础前言一、Dart 变量 常量 命名规则1.变量2.常量3.Dart的命名规则二、数据类型1.字符串String2.整数型3.布尔型 bool4.List(数组/集合)5.Maps(字典)6.Dart判断数据类型--- is 关键字三、运算符和数据类型转换1.算术运算符2.关系运算符3.逻辑运算符4.赋值

2021-07-20 14:38:19 135

原创 单例模式-java and Kotlin

单例模式单例模式的使用场景单例模式的几种写法定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点单例模式的使用场景在一个系统中,要求一个类有且仅有一个对象,它的具体使用场景如下:• 整个项目需要一个共享访问点或共享数据。• 创建一个对象需要耗费的资源过多,比如访问I/O或者数据库等资源。• 工具类对象。单例模式的几种写法1.饿汉式//javapublic class Singleton { private static Singleton instence = new Si

2021-03-30 15:41:22 85

原创 Android 自定义View

Android 自定义View继承系统控件的自定义View继承View 实现自定义控件组合控件---自定义titleBar自定义ViewGroup自定义View划分,分为三大类,第一种是自定义 View,第二种是自定义 ViewGroup,第三种是自定义组合控件。 其中自定义View又分为继承系统控件(比如TextView)和继承View两种。自定义ViewGroup也分为继承 ViewGroup 和继承系统特定的 ViewGroup(比如 RelativeLayout)继承系统控件的自定义

2021-03-23 18:19:56 87

原创 Android View移动和Kotlin动画

Android View移动和Kotlin动画坐标系View的移动属性动画坐标系Android系统中有两种坐标系,分别为Android坐标系和View坐标系1.Android坐标系将屏幕左上角的顶点作为Android坐标系的原点,这个原点向右是X轴正方向,向下是Y 轴正方向。另外在触控事件中,使用getRawX()和getRawY()方法获得的坐标也是 Android坐标系的坐标。2.View坐标系View坐标系是相当于Android坐标系的存在,两者存在,更好的控制View通过图,就能算

2021-03-15 17:35:48 824

原创 Android JS交互-记录我所遇到的

Android JS交互-记录我所遇到的android 和javascript相互android 调取JS方法JS调取Android方法JS image标签上传图片WebView本地加载复文本标签配置JS视频同时播放问题JS视频全屏播放问题android 和javascript相互android 和javascript交互很多,尤其是新闻类app,有的新闻是由复文本编辑的,需要直接加载复文本,会遇到很多问题,记录一下android 调取JS方法有两种调取方法:1、loadUrl()2、eval

2021-03-05 15:56:38 459

原创 二、Kotlin标准函数和静态函数

1、标准函数with、run和applylet : 函数,配合?.进行辅助判空处理with : 连续调用同一个对象的多个方法,让代码变得更加简洁 val list = listOfNotNull("apple","banana","orange","li") //正常处理 val stringBuilder = StringBuilder() stringBuilder.append("start eat fruit.\n") for (i in list){

2021-02-16 11:40:27 339 2

原创 一、入门Kotlin

入门Kotlinkotlin基础入门,与java对比变量函数(方法)逻辑语句面向对象Lambad编程空指针kotlin基础入门,与java对比学习kotlin最主要的知识点包含变量、函数(实际就是方法)、逻辑控制语句、面向对象编程、Lambda编程、空指针检查机制等变量java中如果想要声明一个变量,需要在其前面声明这个变量的类型kotlin 只有两个字段声明一个变量 val和var val a: Int = 10; val b = 20L var e = "1231231

2021-02-09 19:43:25 329

Android学习-JNI示例代码

JNI示例代码

2023-08-17

空空如也

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

TA关注的人

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