自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

孙朝阳的博客

逆水行舟,不进则退!

  • 博客(100)
  • 资源 (7)
  • 收藏
  • 关注

原创 Android开发技巧总结

1、获取全局Context 编写Application public class MyApplication extends Application { private static Context context; @Override public void onCreate() { //获取Context co...

2018-09-03 15:29:49 557

原创 Sqlite3知识总结二(高级用法)

现有两张表用于下面的演示:company、department.多表查询SQLite 的 Join 子句用于结合两个或多个数据库中表的记录。JOIN 是一种通过共同值来结合两个表中字段的手段。SQL 定义了三种主要类型的连接:交叉连接 - CROSS JOIN、内连接 - INNER JOIN、外连接 - OUTER JOIN。1、交叉连接(CROSS JOIN)把第一个表的每一行与第二个表的每一行进行匹配。如果两个输入表分别有 x 和 y 行,则结果表有 x*y 行。select emp_id

2020-06-12 19:55:31 1048

原创 Sqlite3知识总结一(基础知识及相关要点)

like和glob的区别like不区分大小写, glob区分大小写。like: 百分号(%)代表零个、一个或多个数字或字符。下划线(_)代表一个单一的数字或字符。glob: 星号(*)代表零个、一个或多个数字或字符。问号(?)代表一个单一的数字或字符。...

2020-05-29 15:26:38 566

原创 Android热修复原理

基本概念热修复是针对apk而言的,所以先来看看apk里都有些什么东西assets:保留工程中的assets目录,这些文件是原始文件,包含其他jar里的assets文件lib:so文件META-INF:签名相关文件resources.arsc:资源文件索引,包含了所有文件的索引,以及他们具体的ID值和类型信息,实际资源还在res里res:工程的资源文件,以主工程为主,其他文件(jar...

2019-12-24 18:18:11 334

原创 Java线程池

线程池的定义管理一组工作线程,通过线程池复用线程有以下几点优点:1、减少资源创建 =》减少内存开销,创建线程占用内存2、降低系统开销 =》创建线程需要时间,会延迟处理请求3、提高稳定性 =》避免无限创建线程引起的OutOfMemoryErrorExecutors创建线程池的方式ThreadPoolExecutor有四个构造函数,但最终调用的都是同一个: public ThreadPo...

2019-11-29 11:48:11 175

原创 FFmpeg的使用

FFmpeg库介绍FFmpeg一共包含8个库:1、avcodec:编解码(最重要的库)2、avformat:封装格式处理3、avfilter:滤镜特效处理4、avdevice:各种设备的输入输出5、avutil:工具库(大部分库都需要这个库的支持)6、postproc:后加工7、swresample:音频采样数据格式转换8、swscale:视频像素数据格式转换FFmpeg解码函...

2019-11-25 10:16:10 311

原创 NDK系列文章(三)JNI基础

Java和C/C++ 中的基本类型的映射关系下表中的数据为JNI基本数据类型及对应的长度d如何配置cmakelist.txt 配置编译动态库和静态库add_library(jinInterface SHARED library.c library.h)// SHARED 表示是动态库add_library(jinInterface STATIC library.c library.h)/...

2019-09-29 16:20:40 229

原创 NDK系列文章(二)C语言基础

函数及参数传递函数还有很多叫法,比如方法、子例程或程序,等等。内部函数:内部函数又称静态函数。使用内部函数,可以使函数的作用域只局限于所在文件。即使在不同的文件中有同名的内部函数,也互不干扰。提高了程序的可靠性。static int max(int a,int b)外部函数:如果在定义函数时,在函数的首部的最左端加关键字 extern,则此函数是外部函数,可供其它文件调用。C 语...

2019-09-18 15:59:02 182

原创 NDK系列文章(一)—— NDK概览

JNI 简介名称:Java Native Interface 即Java本地接口作用:使得Java与本地其他类型语言(如C、C++)交互JNI是Java调用Native语言的一种特性,JNI属于Java的,与Android无直接关系Java通过JNI可以调动由C/C++实现的驱动,从而扩展Java虚拟机实现步骤:在java中声明Native方法(即需要调用的本场方法)编译上述J...

2019-09-09 16:31:20 331

原创 如何卸载Android手机内置应用

1、查看当前打开应用报名adb shell dumpsys window | grep mCurrentFocus2、根据包名卸载应用adb shell pm uninstall [-k] [--user USER_ID] 包名-k 卸载应用且保留数据与缓存,如果不加 -k 则全部删除。--user 指定用户 id,Android 系统支持多个用户,默认...

2019-08-20 09:58:09 5112 1

原创 搭建IPC通信框架(RPC)

Android进程通讯方式有很多,如Socket、ContentProvider、共享文件(这种方式的缺点是不支持并发写,同时需要手动操作IO)、AIDL、Messenger(底层实现也是AIDL)等。关于AIDL和Messenger的使用详见Android知识点总结(四)进程间通信可以发现Android中IPC方式的使用不是有诸多限制,就是使用起来比较麻烦,所以搭建一套简单易用的IPC框架是很...

2019-07-29 17:57:53 1911

原创 OverScroller的一些重要方法和属性

OverScroll与Scroll类类似,都是实现弹性滑动、惯性滑动的辅助类,只不过OverScroll出现的比较晚,功能更全面一些,可以实现边界回弹等。之所以说它是一个辅助类,是因为它本身并不能移动View,真正移动View的实现需要我们在回调方法computeScroll()中自己实现。基础方法getStartX()和getStartY()getStartX() 滑动的起点x坐标 ,对...

2019-07-02 18:36:07 4332

原创 关于手动添加RecyclerView列表项导致Item里的EditText数据混乱的问题

如果没有手动添加Item这个功能,比较好处理一些,最简单的方法禁止复用holder.setIsRecyclable(false);,但如果有手动添加Item,或者要监听EditText的addTextChangedListener,这时就是禁止复用也没有效果。此时,就得使用绑定tag的方法:第一、为列表实体类添加一个属性uid,作为一个唯一标志,再创建实体类Data的时候,为这个属性设置一个唯...

2019-06-27 15:28:44 657

原创 实现子view滑动一段距离后,让父view进行滑动

思路分析前期子view需要滑动,所以要获取事件,即此时父view不能拦截事件后期父view需要滑动,此时父view需要进行拦截,获取事件将上面的分析转化为伪代码://子view @Override public boolean dispatchTouchEvent(MotionEvent event) { switch (event.getAction(...

2019-06-05 12:50:55 767

原创 sourceinsight安装、查看android源码

下载安装破解版https://pan.baidu.com/s/1-OdZf2gmkUn7_P2loLabXg提取密码:fy3s安装sourceinsight_4.0.86.0-setup.exe用sourceinsight4.exe替换掉安装路径里的同名文件运行出现一下弹框,选择第三个,导入下载包里的si4.pediy.lic文件即可查看android源码打开sourcein...

2019-05-28 10:39:47 2695

原创 Android知识点总结(五)进程间通信之Binder连接池

Android知识点总结(四)进程间通信上一篇文章记录了Messenger及AIDL的使用。其中AIDL的使用是最广泛的,其大致流程:首先创建一个Service和一个AIDL接口接着创建一个类继承自AIDL接口中的Stub类并实现Stub中的抽象方法(也可以直接使用匿名内部类的方式实现),在Service的onBind方法中返回这个类的对象然后客户端就可以绑定服务端Service,建立连...

2019-04-11 14:43:13 288

原创 Android知识点总结(四)进程间通信

进程间通讯方式Android进程通讯方式有很多,如Socket、ContentProvider、共享文件(这种方式的缺点是不支持并发写,同时需要手动操作IO)、AIDL、Messenger(底层实现也是AIDL)等。使用MessengerMessenger是一种轻量级的IPC方案,可以在不同进程中传递Message对象。不适用与并发服务场景。下面是其常用方法源码 /** *...

2019-04-01 16:35:38 521

原创 AndroidStudio编译报错org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:proces

AndroidStudio编译报错:org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:processDebugResources'.finished with non-zero exit value 1Android resource compilation failed Output...

2019-03-20 16:32:45 53006 2

原创 从零开始手写一个组件化demo

根据上篇Android组件化学习文章,编写一个组件化demo,其结构如下:APP:主moduleLogin:登录组件Pay:支付组件,支付时需要判断是否登录Common:基础组件,包含基础库、公共页面等CommonBase:包含各个组件对外提供访问自身数据的接口、抽象方法等1、使用AS创建一个工程,同时创建Login、Pay、Common、CommonBase四个Libray效...

2019-03-01 18:45:55 541

原创 Android组件化学习

组件化思想是对模块化的进一步演变,相对与模块化,组件化更加灵活,可以在application与library之间相互转换!无论是组件化还是模块化,都是对大型项目的一种耦合度的解耦,方便团队协作开发!上面是组件化的基本架构图,可以看到组件化一个很明显的特点就是分层!还有一个重点就是通信。架构图从下到上依次为基础层、组件层和应用层!基础层主要包含一些基础库如图片加载框架、网络框架等;组件层就是...

2019-02-21 23:49:32 407

原创 Java函数式编程四之并行化操作

Java函数式编程三并行和并发并发 和并行是两个不同的概念,它们的作用也不一样。并发是两个任务共享时间段,并行则是两个任务在同一时间发生,比如运行在多核 CPU 上。如果一个程序要运行两个任务,并且只有一个 CPU 给它们分配了不同的时间片,那 么这就是并发,而不是并行。两者之间的区别如图:数据并行化本文主要讨论数据并行化。数据并行化是指将数据分成块,为每块数据分配单独的处理单元。...

2019-01-03 15:31:47 383

原创 Java函数式编程三之收集器

Java函数式编程二本文主要介绍高级集合类和收集器方法引用Lambda 表达式有一个常见的用法:Lambda 表达式经常调用参数,如:student -> student.getName()java8提供了一个简写语法,叫做方法引用,在这里插入代码片...

2018-12-20 20:00:05 253

原创 Java函数式编程二之常用流操作

函数式开发旨在帮助程序员写出更好的代码,如Java8新引入的流(Stream)使程序员得以站在更高的抽象层次对集合进行操作!Stream 是用函数式编程方式在集合类上进行复杂操作的工具。传统循环操作有很多弊端如需要写很多样板代码、行为意图不清晰等,嵌套循环更严重,另外传统操作对于并行开发也很麻烦!使用Stream对集合进行操作,可以避免这些。如:计算集合中大于8的元素个数 List&amp

2018-12-20 17:05:39 236 1

原创 Java函数式编程一之基础介绍

2018-12-13 15:57:35 230

原创 Gradle相关知识总结

Gradle简介Gradle,是一个基于 JVM 的富有突破性构建工具,基于 groovy,其 build 脚本使用 groovy dsl 编写!任何一个 Gradle 构建都是由一个或多个 project组成。每个 project 包括许多可构建组成部分,由多个 tasks 组成。每个 task 都代表了构建执行过程中的一个原子性操作,如编译,打包等。构建简单Tasktask hello...

2018-12-07 10:20:56 220

原创 Java深入解析笔记

关键字与标识符goto、const、true、false、nullgoto是Java里的保留字(不使用的关键字),在java里使用标签实现跳转:public class Test1{ public static void main(String[] args) { int[][] arr = { {1,20,28}, ...

2018-11-06 13:44:49 251

原创 AndroidStudio出现的问题总结

1、AndroidStudio出现Read Timed out去项目外层的build.gradle中 repositories添加mavenCentral()maven { url 'https://maven.google.com' }如图:

2018-10-21 15:30:08 712

原创 Android的Drawable

Drawable是一个抽象类,它有众多子类如ShapeDrawable BitmapDrawable等. 它有一个重要的参数是内部宽高,通过getIntrinsicWidth和getIntrinsicHeight获取! 内部大小不等于它的大小,一般来说Drawable没有大小,当其作为View的背景时,Drawable会被拉伸至View的同等大小!Drawable的分类及层次关系 ...

2018-09-05 18:45:54 910

原创 主module或其它module模块 无法引用另一个module里面的依赖

原因是我将所有的module里面的comile全都更换成了implementation,因为编译的时候官方一直推荐使用后者替代前者,但是implementation声明的依赖只能在本module模块内使用,跨module使用就要使用api声明! 如: api 'com.jakewharton:butterknife:7.0.1'...

2018-09-04 14:51:15 9034 3

原创 Android知识点总结(三)自定义View

ViewRoot和DecorView

2018-08-16 18:32:26 344

原创 Android知识点总结(二)View的事件体系

VIEW的基础知识MotionEvent和TouchSlopMotionEvent getX/getY: View相对于父容器的x和y坐标 getRawX/getRawY: 相对于屏幕左上角的x和y坐标TouchSlop TouchSlop是系统能识别的滑动的最小距离! 和设备有关,不同设备的值可能不一样,通过ViewConfiguration.get(getContext).g...

2018-08-01 11:03:49 363

原创 Android知识点总结(一)

onPause操作里为什么不能做耗时操作 android在onPause里面不应该做耗时操作,因为跳转页面时,先调用当前页面的onPause,再去调用创建,所以这里如果做了耗时操作,就会出现卡顿!onSaveInstanceState、onRestoreInstanceState状态存储相关 @Override protected void onSaveInstanceS...

2018-07-06 10:28:30 528

翻译 Dart2学习笔记

官网教程,也是我的学习参照! 基本Dart程序先来一个基本的Dart程序://比较简单的英语就不翻译了// Define a function.printInteger(int aNumber) { print('The number is $aNumber.'); // Print to console.}//这里是主函数 This is where the app s...

2018-06-01 18:27:05 16389 11

原创 Ubuntu18.04上遇到的一些问题及解决方案

Ubuntu下安装淘宝npm镜像后出现“未找到 ‘cnpm’ 命令” 原因是没有建立软连接,解决方案:sudo ln -s /home/scy/ruanjian/nodejs/node-v10.2.0-linux-x64/bin/cnpm /usr/local/bin/然后就可以了: ...

2018-05-27 14:59:34 14270 2

转载 CSDN-markdown编辑器 官方介绍

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I...

2018-05-27 14:44:34 274

原创 RxJava2.x学习教程(三)常用操作符

上一篇文章介绍了,创建、转化类、过滤类、合并类的操作符RxJava2.x学习教程(二)常用操作符,本文接着学习其余操作符,如错误处理类操作符、工具类操作符,条件和布尔操作符,综合操作符,连接操作符等!ConcatMap concatMap和flatMap的区别在于 它能保证顺序 Observable.fromArray(1,10,20) .co...

2018-05-25 15:55:45 1416

原创 RxJava2.x学习教程(二)常用操作符

**操作符 ** 操作符官方doc Create Create — create an Observable from scratch by calling observer methods programmatically 最常用的操作符,用于创建一个被观察者(发射事件)...

2018-05-19 19:01:55 1689

原创 RxJava2.x学习教程(一)基本概念

RxJava (本文所有RxJava全都代指RxJava2)在 GitHub 主页上的自我介绍是:RxJava – Reactive Extensions for the JVM – a library for composing asynchronous and event-based programs using observable sequences for the Java VM. ...

2018-05-19 12:14:28 414

原创 gradlew常用命令、adb常用命令、adb shell常用命令

gradlew下面全是针对 windows 操作系统的。如果是 Linux / Mac 请直接用 ./ 前缀。gradlew clean //类似Clean Projectgradlew -v //查看Gradle、Groovy、Ant、JVM等的版本gradlew build --info //编译并打印日志gradlew dependencies --info //查看详细...

2018-05-14 23:48:31 7023

原创 win10 安装运行angular5.x

win10 安装运行angular5.x遇到一些坑,如命令无效、找不到module等,网上也找不到解决方案,坑了一下午,终于解决,特此记录!首先全局安装angular 下面全程使用cnpm,苦逼的win,在开始就有一个坑,安装angular需要全局安装,否则会引出一系列无法填平的巨坑!cnmp i -g @angular/cli通过ng -v 出现下面情况,就安装成功了: 创建...

2018-05-13 22:32:44 1085

Android组件化demo

这是一篇关于Android组件化的demo,解决了组件化的大部分问题,如组件间的通讯、页面跳转、组件的单独运行和集成调试的切换、通过面向接口编程实现了组件数据的分享等。

2019-03-04

apk反编译工具 apktool dex2jar-2.0 jd-gui

apk反编译工具 包含apktool(可以反编译资源文件,修改源码) dex2jar-2.0 jd-gui(这两个可以查看源码), 及其下载网址

2018-04-22

软件设计师视频2015下半年的

这是个百度云链接 包含2015年下半年的软件设计师视频以及相关资料

2018-04-02

React Native Demo

一个关于react-native 的demo, 各种控件比较齐全,基于2018-2-22最新的RN写就!

2018-02-22

相册-服务器版

使用express nodejs fecth技术开发 具有服务器功能的相册,前端部分使用ajax fetch请求数据,后端使用express nodejs书写!

2018-01-18

纯JS开发的简易相册

纯JS开发的简易相册 可增减相册,增删图片。无后天 无缓存!

2017-12-29

强制下线功能

实现仿QQ 强制下线功能

2017-07-02

空空如也

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

TA关注的人

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