- 博客(24)
- 收藏
- 关注
原创 H264视频编码基础
H.264是MPEG(Moving Picture Experts Group)和 VCEG(Video Coding Experts Group)联合开发的一个比早期研发的MPEG 和 H.263 性能更好的视频压缩编码标准,这就是被命名 为 AVC(Advanced Video Coding),也被称为 ITU-T H.264 建议和 MPEG-4 的第 10 部分的标准,简称为 H.264/AVC 或 H.264。这个国际标准已经与 2003 年 3 月正式被 ITU-T 所通过并在国际上正式颁布。
2023-05-11 20:29:29 1123
原创 Git相关总结
你已经用 git push 将代码提交 gerrit 审核了,这时你发现代码中有疏漏,修改了一下,执行 git commit --amend, 再次推送还可以成功. 这就是因为 gerrit 检查到两次 push 的 commit 有同一个 change-id, 就认为是同一个提交,因此可以 amend。rebase操作前后,最终的提交内容是一致的,但是,我们本地的commit修改内容已经变化了,它们的修改不再基于。这就是rebase操作的特点:把分叉的提交历史“整理”成一条直线,看上去更直观。
2023-05-09 10:06:49 188
原创 Java-反射基础
1、啥是反射定义:JAVA 反射机制是在程序运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为 java 语言的反射机制。作用: 动态(运行时)获取类的完整结构信息&调用对象的方法。 我们或多或少都听说过设计框架的时候会用到反射,例如 Spring 的 IOC 就用到了工厂模式和反射来创建对象,BeanUtils 的底层也是使用反射来拷贝属性。所以反射无处不在。 尽管我们日
2022-05-22 17:14:27 240
原创 Gradle7.0 降到Gradle4.2出现的问题
1、问题1Settings file 'G:\Android_project\MyApplication5\settings.gradle' line: 1问题1解决方式:dependencyResolutionManagement { repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS) repositories { google() mavenCentral() j
2021-11-03 09:25:31 3342 1
原创 Could not load wrapper properties from解决方法,Android Studio打不开以前项目
Android Studio不知道咋回事,突然打不开以前的项目,新建项目却可以。问题描述:1、进入Studio出现以下提示:2、点击trust project后出现:Could not load wrapper properties from ‘G:\Android_project\MyApplication7\gradle\wrapper\gradle-wrapper.properties’.右下角还有一个Unable to save settings解决方式:退出Android S.
2021-11-03 09:17:28 6902 1
原创 Kotlin高阶函数和内联函数
1、定义如果一个函数接收另一个函数作为参数,或者返回值的类型是另一个函数,那么该函数就称为高阶函数。不同于定义一个普通的字段类型,函数类型的语法规则是有点特殊的,基本规则如下:(String, Int) -> Unit->左边的部分就是用来声明该函数接收什么参数的,多个参数之间使用逗号隔开,如果不接收任何参数,写一对空括号就可以了。而->右边的部分用于声明该函数的返回值是什么类型,如果没有返回值就使用Unit,它大致相当于Java中的void。现在将上述函数类型添加到某个函数的
2021-10-17 11:24:34 347
原创 Kotlin扩展函数和运算符重载
1、扩展函数首先看一下什么是扩展函数。扩展函数表示即使在不修改某个类的源码的情况下,仍然可以打开这个类,向该类添加新的函数。语法结构fun ClassName.methodName(param1: Int, param2: Int): Int { return 0}相比于定义一个普通的函数,定义扩展函数只需要在函数名的前面加上一个ClassName.的语法结构,就表示将该函数添加到指定类当中了。向String类中添加一个扩展函数,因此需要先创建一个String.kt文件。文件名虽然并没
2021-10-17 11:23:52 161
原创 Kotlin标准函数(let,with,run,apply)
0、let函数// 作用1:使用it替代object对象去访问其公有的属性 & 方法object.let{ it.todo()}// 作用2:判断object为null的操作object?.let{//表示object不为null的条件下,才会去执行let函数体 it.todo()}// 注:返回值 = 最后一行 / return的表达式1、with函数with函数接收两个参数:第一个参数可以是一个任意类型的对象,第二个参数是一个Lambda表达式。with函数
2021-10-17 11:23:14 338
原创 Kotlin泛型和委托
1、泛型1.1 基本语法泛型主要有两种定义方式:一种是定义泛型类,另一种是定义泛型方法,使用的语法结构都是。当然括号内的T并不是固定要求的,事实上你使用任何英文字母或单词都可以,但是通常情况下,T是一种约定俗成的泛型写法。如果我们要定义一个泛型类,就可以这么写:class MyClass<T> { fun method(param: T):T { return param }}此时的MyClass就是一个泛型类,MyClass中的方法允许使用T类型的
2021-10-17 11:22:11 609
原创 Kotlin协程
1、什么是协程它其实和线程是有点类似的,可以简单地将它理解成一种轻量级的线程。要知道,我们之前所学习的线程是非常重量级的,它需要依靠操作系统的调度才能实现不同线程之间的切换。而使用协程却可以仅在编程语言的层面就能实现不同协程之间的切换,从而大大提升了并发编程的运行效率。举一个具体点的例子,比如我们有如下foo()和bar()两个方法:fun foo(){ a() b() c()}fun bar(){ x() y() z()}在没有开启线程的情况
2021-10-17 11:20:43 17301 7
原创 Kotlin数据类、单例类
1、数据类:在class前面添加data关键字就会自动生成equals()、hashCode()、toString()等方法,减少开发代码量data class Cellphone(val brand: String, val price: Double)fun main(){ val cellphone = Cellphone("Xiaomi", 4999.0) val cellphone2 = Cellphone("Huawei", 5999.0) println(cel
2021-10-17 11:19:47 268
原创 Kotlin面向对象
1、创建Person类:class Person { var name = "" var age = 0 fun eat(){ println(name + " is eating. He is " + age + "years.old.") }}main()中使用:fun main(){ val p = Person() p.name = "Jack" p.age = 22 p.eat()}2、继承(1)在
2021-10-17 11:15:23 157
原创 Kotlin变量和函数(方法)
1、变量:只有两个关键字:var和valvar: (varible简写) 用来声明一个可变的变量,对应Java中的非Final变量。val: (value简写) 用来声明一个不可变得变量,对应Java中的Final变量。fun main(){ var a = 10 println("a = " + a)}除此之外,还可以显示声明变量类型:fun main(){ var a: Int = 10 a = a * 10 println("a = " +.
2021-10-17 11:02:30 255
原创 最新干货!使用ViewPager2
ViewPager2简介距离ViewPager2正式版的发布已经一年多了,目前ViewPager早已停止更新,官方鼓励使用ViewPager2替代。ViewPager2底层基于RecyclerView实现,因此可以获得RecyclerView带来的诸多收益:抛弃传统的PagerAdapter,统一了Adapter的API。通过LinearLayoutManager可以实现类似抖音的纵向滑动。支持DiffUtil,可以实现局部刷新。支持RTL(right-to-left),对于一些有
2021-08-27 16:55:49 2564
原创 使用Jetpack导航栏
参考链接:安卓navigation系列——入门篇1、组成三要素Navigation graph一个包含所有导航相关信息的 XML 资源NavHostFragment一种特殊的Fragment,用于承载导航内容的容器NavController管理应用导航的对象,实现Fragment之间的跳转等操作2、基本使用(1)引入依赖dependencies { // Java implementation "androidx.navigation:navigation-f.
2021-08-23 18:55:16 361
原创 打开项目失败Gradle-Could not determine java version from ‘11‘
参考博客:https://blog.csdn.net/qq_32452623/article/details/83341750问题描述打开同事发来的项目,打开之后出现像下图差不多的问题:问题解决Android Studio打开setting选择Plugins >> 在插件商店搜索Choose Runtime >> 安装这个插件Ctrl+Shift+A 打开并搜索Choose Runtime打开上图中第一个,选择jdk1.8即可..
2021-08-16 19:28:53 1303 2
原创 使用ViewModel
创建一个类:继承ViewModelpublic class MyViewModel extends ViewModel { private MutableLiveData<String> name; public LiveData<String> getName(){ //这里要判断name是否为空,如果空就要new一个LiveData并返回 if(name == null){ name = new Muta
2021-08-14 17:26:00 227
原创 Fragment间实时传递数据 - 使用ViewModel
Fragment的通信方式,网上搜了那么多方法,基本全都是使用接口回调。如果是两个Fragment需要即时传数据,还需要先在Activity获得f1传过来的数据,再传到f2,相当麻烦。简单方便的方法来自谷歌官方文档:谷歌官方文档,说明看官方文档还是相当有用的,官方文档也有Activity与Fragment间通信,一样的方法,有需要自己去看。谷歌文档有个坑,关于ViewModelProviders弃用后最新用法:https://blog.csdn.net/weixin_43888181/articl.
2021-07-26 18:11:41 2975 7
原创 didn‘t find class “cn.bmob.v3.util.bmobcontentprovider“ on path
didn’t find class “cn.bmob.v3.util.bmobcontentprovider” on path项目中使用Bmob自动导入SDK报错,解决方法:将build.gradle中的okhttp、okio、gson更新到最新版本dependencies { //Bmob implementation 'cn.bmob.android:bmob-sdk:3.7.8' implementation "io.reactivex.rxjava2:rxjava:
2021-01-09 16:11:44 718
原创 Android Studio布局文件中输入没有提示和自动补全
昨晚还好好的,今天电脑突然死机,然后出现了这样的问题。Android Studio布局文件中输入没有提示:比如我想输入android:id ,后面没有提示自动补全。经过一番搜索后,发现有一篇博客的评论区出现了解决方法,对我有用,记录一下。解决方法:1、关闭AS。 2、打开你电脑的.AndroidStudio3.5.3(以你电脑AS版本号为主)文件夹。 3、删除缓存文件(路径为:C:\Users\user.AndroidStudio3.5.3\system) 4、重启AS。...
2020-11-29 16:56:32 4304
转载 Linux实验 :实验1 Linux 的常用命令
0.在虚拟机上安装 Ubuntu此部分从略。提示:仔细观察屏幕上的每一个元素的内容。提示:在开机时,会显示一个紫色屏幕且底部有「键盘 = 人」 符号,此时按下任意键即可打开语言选择菜单,用方向键移动光标选择即可。提示:安装结束后,在虚拟机设置里断开光驱,在虚拟机内按下回车以结束安装并重启虚拟机。如果希望在实体机上安装 Ubuntu, 见扩展 1.1.创建自己的账户此部分不需要操作,因...
2019-03-26 21:34:35 435
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人