解释器模式案例源码Demo
解释器是一种用的比较少的行为模式,其提供了一种解释语言的语法,或者表达式的方式。该模式定义了一个表达式的接口。
设计模式之命令模式
将请求封装成一个对象,从而让用户使用不同的请求把客户端参数化。请求排队或者记录请求日志,以及支持可撤销的操作
责任链模式
虽然是Android项目,但可以将java文件拷贝出来运行。
使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系,将这些对象形成一条链,并沿着这条链传递该请求,直到有对象处理它为止。
面向切面设计AOP
把我们某个方面的功能提取出来与一批对象进行隔离,这样与一批对象之间降低耦合性,对某个功能进行编程
建造者模式
安卓项目,但是java代码,拷贝java文件即可。通俗的讲,将对象的复杂创建和对象的使用分离开,这样对象的创建时可以定制不同的类型的属性,而对象的使用只关注于调用。
单例模式(饿汉模式、懒汉模式、DCL单例模式、枚举)
饿汉模式、懒汉模式、DCL单例模式、枚举;不同情况下使用不同的单例创建模式
Prototype Pattern原型模式
原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。
ListViewSuspend
ListView滚动悬浮效果;(1)ListView外面套一层相对布局,隐藏一个标题
(2)监听ScrollView的滚动
Suspenion滚动效果
ScrollView实现悬浮效果;ScrollView上滑时,ScrollView中内容标题会“固定住”,下滑时,滚动一段距离标题又随着ScrollView滚动
Picasso加载圆角图片
Picasso加载网络图片设置圆角
DialogActivity
DialogActivity,Activity设置成dialog样式,设置圆角,背景,区域外不可点击
CycleViewPager
ViewPager实现轮播图效果,可无限向左向右滑动,Pager切换动画正常,代码封装,2行代码引入使用
弹出框SnackBar
SnackBar简单使用,改变SnackBar样式,改变SnackBar位置
列表Item拖拽和滑动删除
ItemTouchHelper、RecyclerView、列表长按移动、左右滑动删除
RecycleViewAddHeadandFoot
RecycleView添加头部和底部,支持GridLayout模式
RecycleViewDivider
RecycleView添加分割线的两种方法:item布局实现;ItemDecoration实现
HelloRecyclerview
Recyclerview的基本使用,三种LayoutManger,加载更多,点击事件
ViewPager动画
ViewPager翻转动画,启动页面动画,视觉动画,3D翻转,缩放,卡牌效果
ViewPager切换动画
ViewPager切换动画,启动页动画,3D翻转动画,视觉动画,卡牌效果
FlowLayout
流式布局,搜索标签,搜索结果
JNI编程指南与规范.zip
JNI程序员指南与规范.pdf + 06 JNI编程指南.pdf
NDK开发汇总
https://blog.csdn.net/baopengjian/article/details/104615972
THIS book covers the Java™ Native Interface (JNI). It will be useful to you if
you are interested in any of the following:
• integrating a Java application with legacy code written in languages such as C
or C++
• incorporating a Java virtual machine implementation into an existing application written in languages such as C or C++
• implementing a Java virtual machine
• understanding the technical issues in language interoperability, in particular
how to handle features such as garbage collection and multithreading
makeFile编译.zip
- 有minus.c、multi.c、plus.c、divi.c 四个文件实现了加减乘除,声明在include/common.h;
- main.c声明common.h并使用了plus.c中的方法
- 要求将上述的文件打包成一个可执行文件
GNU_Make_3.80_cn.zip
1970年问世以来已经度过了45年的时光而魅力不减,
makefile是在打包apk过程中所用到的一个工具,他是来生成so的。
在很多大型项目中
GifPlayerDemo(无bug).rar
系统源码层打造性能极致播放
利用系统源码类库播放gif
利用像素算法遍历绘制图形
创建Movie实例,绘制每一帧图片来达到Gif动态效果。
部分Gif图片不能自适应大小,
播放速度比实际播放速度快,
如果要显示的gif过大,
还会出现OOM的问题。
系统关键服务是如何进行守护.zip
## 知识点:
- init进程源码详解
- init.rc配置文件分析
- 系统服务的加载原理
- init进程如何使用SIGCHLD信号
- 系统服务杀死后如何启动原理分析
- 系统服务守护过程中 socket执行原理
Socket进程守护.zip
创建ServerSocket对象绑定监听端口
通过accept()方法监听客户端的请求
建立连接后,通过输入输出流读取客户端发送的请求信息。
NDK20_线程轮询实现双进程守护
1. app主进程什么时候被杀死 如何监听
2. 因为我们的进程是fork出来的,fork出来的进程父进程是app进程号当app被kill掉时,子进程被孤儿init领养 变成了空进程。怎样在监听自己变成死亡进程:
在Linux系统下,如果使用sigaction将信号SIGCHLD的sa_flags中的SA_NOCLDSTOP选项打开,当子进程停止(STOP作业控制)时, 不产生此信号(即SIGCHLD)。不过,当子进程终止时,仍旧产生此信号(即SIGCHLD)。
3. 如何重启服务
- am命令
NDK14_Linux基础:Shell命令,用户权限管理
**文件比较**
```bash
-d 检查是否存在,并且是一个目录
-e 检查file是否存在
-f 检查是否存在,并且是一个文件
-r 检查是否存在,并且可读
-w、-x
file1 -nt file2 file1比file2新
file1 -ot file2 file1比file2旧
```
## 4 case命令
NDK14_C++基础:友元,模板方法,模板类,类型转换
一 友元
类似 java 中享元模式:实例的共享(ImageLoader Lru 算法 存储图片)
友元:类或函数的共享
优点:提高效率、表达清晰
缺点:破坏封装性
特征:
友元函数不能被派生类继承
友元函数不能使用this
Extension.zip
一 继承
一个最简单的继承案例
继承的权限
继承的二义性 多继承 虚继承
二 虚函数
虚函数引发的内存泄漏:
纯虚函数(抽象类)
三 多态
NDK13_C++基础:构造函数、拷贝构造函数、浅拷贝与深拷贝.zip
adb shell 进入,命令: dumpsys meminfo 包名
MyTeacher teacher;
1
C++中 这个语句执行完毕,在当前的堆内存内 初始化并且赋值好该对象
在java中执行这个语句,只是开辟了一块内存空间,并没初始化和赋值对象,
必须用new关键字,来进行初始化和赋值
————————————————
版权声明:本文为CSDN博主「鱼包子Ray」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/baopengjian/article/details/105101785
Project2.zip
右键项目-在文件资源管理器中打开文件夹
项目文件夹下创建两个文件夹(如:ConsoleApplication1\ConsoleApplication1 下 新建include、src文件夹)
头文件-添加现有项-选择include文件夹-创建一个.h文件,添加新的cpp文件到src目录
属性-C/C+± 常规- 附加包含目录-选择新建的.h文件夹(如include)-应用-确定
————————————————
版权声明:本文为CSDN博主「鱼包子Ray」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/baopengjian/article/details/105101703
Dn_lsn_9.zip
动态注册native方法
文件拆分
文件合并
JNI多线程
static int registerNatives(JNIEnv* engv)
{
LOGI("registerNatives begin");
jclass clazz;
clazz = (*engv) -> FindClass(engv, "com/dn/tim/dn_lsn_9/FileUtils");
if (clazz == NULL) {
LOGI("clazz is null");
return JNI_FALSE;
}
if ((*engv) ->RegisterNatives(engv, clazz, gMethods, NELEM(gMethods)) < 0) {
LOGI("RegisterNatives error");
return JNI_FALSE;
}
return JNI_TRUE;
}
————————————————
NDK09_JNI编译过程及AS新建一个JNI项目
https://blog.csdn.net/baopengjian/article/details/104957181
1 新建项目
2 初始化
3 声明一个native 方法,生成.h头文件
4 实现.h定义的方法
NDK08_JNI访问数组、引用、异常、缓存
一 JNI访问数组
二 访问引用数据类型的数组
三 JNI引用
四 异常
五 缓存
六 缓存策略和弱引用联合使用带来的问题
lsn07_JNI获取String.zip
https://blog.csdn.net/baopengjian/article/details/104875418
NDK07_JNI读取和返回字符串
JNI获取Java中类方法、构造函数
JNI获取Java中类方法、构造函数
一 定义native方法,编译生成ray_JniTest.h头文件
二 c中实现,生成 dll文件
lsn6_1.zip
定义Native方法
生成h文件
class文件中命令行查看方法的签名
c中实现h文件的具体方法,生产dll库
lsn6_JNI的简单调用
编写native 方法
复制.h 头文件到cpp 工程
实现.h 头文件中的声明函数
生成一个dll 动态库文件
在java中加载动态库
安装包性能优化.zip
安卓包性能优化,改写apk内的资源名称,修改映射
系统编译完成apk文件以后:
映射关系:res/drawable/ic_launcher.png ----- > 0x7f020000
再做“混淆”:要实现将res/drawable/ic_launcher.png图片改成a.png
drawable文件的名字
String文件的名字
layout的名字
比如:R.string.description—>R.string.a
res/drawable/ic_launcher.png图片改成a.png