- 博客(108)
- 资源 (1)
- 收藏
- 关注
原创 MVP + Dagger2 + Kotlin 随笔
这些工具的使用入门门槛还是挺高的,属于架构设计层次。所以边学习边记录一些学习过程的知识。其中涉及大量转载知识点。MVP+Dagger2 + + KotlinMVPDagger2引入插件和依赖Dagger2注解的一些规约Dagger2结构简单描述插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出
2020-07-20 19:40:59
230
转载 Weex跨平台前端实现原理
以前用的多的技术定义webview,通过webview和native进行交互,实现跨平台。后续出现phonegap/cordova等。但其效果依旧有所欠缺。所以近期出现大量使用RN和Weex方案为了解决跨平台浏览器不流畅的问题。像web实现,是基于浏览器进行渲染。流畅度不高。换个思路,把前端映射成native组件,就流畅多了。来看一下Weex如何实现。 ...
2018-08-16 20:05:09
1813
转载 Android热修复原理(二)
阿里系底层热修复方案特点:修复时,立即生效。但同时带来各种rom兼容问题,也不能做新增field的修复。如Sophix Andfix阿里系的修复方案:底层替换所操作的指针,实际上是ArtMethod,在类被加载,类中的每个方法都会有对应的ArtMethod,它记录了方法包括所属类和内存地址信息,Andfix正是通过篡改ArtMethod,将补丁方法ArtMethod的成员值逐一赋给旧方法,...
2018-08-14 16:52:55
364
转载 Android热修复原理(一)
一、热修复主要用来干啥?应用场景:当出现BUG需要修复时,在APP解决完问题后,需要更新时重新打包成各渠道进行发布。为了使用一种不需要进行重复操作打包发布,插件化及热修复应运而生。插件化和热修复不是同一个概念,虽然站在技术实现的角度来说,他们都是从系统加载器的角度出发,无论是采用hook方式,亦或是代理方式或者是其他底层实现,都是通过“欺骗”Android 系统的方式来让宿主正常的加载和运...
2018-07-09 17:03:31
203
转载 单例解析
1、普通单例public class Singleton { //用一个静态变量来记录Singleton类的唯一实例 private static Singleton uniqueInstance; private Singleton() {} //注意这个方法也是静态的 public static Single
2016-12-27 16:12:15
331
转载 Android源代码结构及Linux编译Android源码
Android源代码结构Android代码的工程分为3个部分核心工程(Core Project):建立Android 系统的基础,在根目录的各个文件夹中扩展工程(External Project):使用其他开源项目扩展的功能,在external 文件夹中。包(Package):提供Android 的应用程序和服务,在package 文件夹中。Android 的核心工程 Android 的核心
2015-09-08 12:04:28
577
转载 Android Touch事件传递机制
Touch事件传递等级事件的传递分为ViewGroup、View、Activity三个等级 顺序为ViewGroup->View->Activity布局结构如下,最外层为Activity:<EventLinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width
2015-07-22 12:36:48
424
转载 MarkDown语法
为项目编写Readme.MD文件了解一个项目,恐怕首先都是通过其Readme文件了解信息。如果你以为Readme文件都是随便写写的那你就错了。github,oschina git gitcafe的代码托管平台上的项目的Readme.MD文件都是有其特有的语法的。称之为Markdown语法。在线编辑器:stackedit网址:https://stackedit.io/
2015-07-14 10:53:13
539
转载 Android 屏幕适配相关解决方案
什么是屏幕尺寸、屏幕分辨率、屏幕像素密度? 什么是dp、dip、dpi、sp、px?他们之间的关系是什么? 什么是mdpi、hdpi、xdpi、xxdpi?如何计算和区分?在下面的内容中我们将介绍这些概念。屏幕尺寸屏幕尺寸指屏幕的对角线的长度,单位是英寸,1英寸=2.54厘米比如常见的屏幕尺寸有2.4、2.8、3.5、3.7、4.2、5.0、5.5、6.0等
2015-07-08 17:47:11
1112
转载 JNI开发
第一部分,介绍和指南(Part One: Introduction and Tutorial)第一章介绍"JNI"是"Java"平台的一个强大的功能。使用"JNI"的应用程序能能混合用例如"C"和"C++"语言编写的本地代码(nativecode),和用Java编程语言编写的代码。"JNI"允许编程人员,在不丢弃在传统编码上的投入,来利用Java平台功能。因为"JNI"是"Java"平
2015-07-07 15:08:17
1087
转载 Android Studio 生成.so文件及 Android.mk文件解析
在NDK开发中生成.SO文件在app路径的build.gradle 的defaultconfig中添加ndk{ moduleName "MyJni" //设置库(so)文件名称 ldLibs "log", "z", "m" //添加系统库 abiFilters "armeabi", "armeabi-v7a", "x86" //生成3中类的.so文件}
2015-07-06 18:39:45
5311
原创 Android Studio使用笔记(随时添加)
AndroidStudio使用笔记1、导入.jar文件方式一:新建工程-> 左上角Projectl栏目->APP目录->libs目录->新建一个子目录->复制/移动.jar文件至此目录即可方式二: 新建工程-> 左上角Projectl栏目->APP目录-> build.gradle->在dependence下添加.jar文件路径即可 2、 自动compile 设置Setti
2015-07-06 18:20:32
471
转载 Android Studio 中的NDK开发
1、在Android Studio 中创建一个项目,项目配置中新建一个类(Activity或者任意一个类)。在新建的类中定义本地的方法:public native String getStringFromNative(); 2、生成.class文件build -> Make Project 编译生成.class文件。.class文件的路径:项目目录\build\app\bu
2015-07-06 17:32:49
306
转载 Git的分支管理
在版本回退里,你已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。一开始的时候,master分支是一条线,Git用master指向最新的提交,再用HEAD指向master,就能
2015-07-01 17:14:35
1038
转载 使用GitHub
第1步:创建SSH Key。在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:$ ssh-keygen -t rsa -C "youremail@example.com"rsa是一种密码算法,还有一种是dsa
2015-07-01 15:03:58
385
转载 初探Git
CVS及SVN都是集中式的版本控制系统,而Git是分布式版本控制系统,下面简单介绍一下分布式的系统和其优势点。集中式版本控制系统,版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。中央服务器就好比是一个图书馆,你要改一本书,必须先从图书馆借出来,然后回到家自己改,改完了,再放回图书馆。集中
2015-06-30 16:49:01
406
转载 反编译与调试APK
0×01前言这年头,apk全都是加密啊,加壳啊,反调试啊,小伙伴们表示已经不能愉快的玩耍了。静态分析越来越不靠谱了,apktool、ApkIDE、jd GUI、dex2jar等已经无法满足大家的需求了。那么问题就来了,小伙伴们真正需要的是什么?好的,大家一起呐喊出你内心的欲望吧,我们的目标是——“debug apk step by step”。0×02那些不靠谱的工具
2015-06-30 16:26:17
7659
转载 Android 自定义View
自定义View的步骤:1、自定义View的属性,布局中使用自定义的View2、在View的构造方法中获得我们自定义的属性3、重写onMesure 4、重写onDraw一、在values建立一个属性的xml文件attr.xml > format的类型:string,color
2015-06-29 11:16:17
474
转载 GitHub Android 开源项目
Android开源项目分类汇总目前包括:Android开源项目第一篇——个性化控件(View)篇 包括 ListView、 ActionBar、 Menu、 ViewPager、 Gallery、 GridView、 ImageView、 ProgressBar、 TextView、 ScrollView、 TimeView、 TipView、 FlipView、 Colo
2015-06-24 12:04:34
1057
转载 自定义控件开发流程
1、写一个类继承View或你想扩展功能的控件(比如TextView)。 public class CustomView extends View { };2、在/res/value下创建一个attr.xml文件。没有这个文件自定义控件照样能显示出来,但只能使用所继承的父类中包含的属性,有了这个文件可以增加自定义的命名空间,来设置自定义的属性(其中format可
2015-04-30 17:15:39
362
转载 left join,right join,inner join,outer join的用法
通俗的讲: join 和 left outer join 的区别" title="left join 和 left outer join 的区别" style="margin:0px; padding:0px; border:0px; list-style:none"> A left join B 的连接的记录数与A表的记录数同 join 和 left oute
2015-04-14 16:56:30
523
转载 POJO和JavaBeans的区别
POJO你当成JavaBeans的一种,一个特例:简单的实体类。就是一个数据载体。区别一:POJO就是一个数据载体 一般是没有业务处理能力。区别二:POJO是new创建,由GC回收。JAVABEAN一般由容器来管理,比如你看到的scope属性,设个范围比如session,谁去帮你管?不是GC不是你自己,而是容器。举个例子 不算太标准的例子,但是便于你理解:
2015-03-12 18:19:40
709
转载 用Gradle 构建你的android程序
前言android gradle 的插件终于把混淆代码的task集成进去了,加上最近,android studio 用的是gradle 来构建项目, 下定决心把android gralde 构建项目的用户指南全部看完, 让不会用gradle 的人也用gradle构建android项目,让打包(注意,打包和构建是两码事)多版本android不再痛苦。最后,题外话:珍惜生命,远离ant....
2015-03-12 18:03:04
339
转载 gradle工具
在 Eclipse 下利用 gradle 构建系统在 eclipse 下利用 gradle 构建系统基本开发环境操作系统:本教程使用的为 Windows Vista Enterprise, 如果您的系统是 Linux 的,请选择下载对应版本的其他工具,包括开发工具、Java EE 服务器、Apache Ant、SoapUI。开发工具:Eclipse IDE
2015-03-12 17:57:13
579
转载 SSH之Spring
在Struts + Hibernate项目中整合Spring整合Spring将Spring内libs目录下包含所有的jar包(不需要复制结尾为sources和javadoc的jar包)到SSHProject项目的lib目录下。编写Spring的配置文件applicationContext.xml。路径:src目录下,需要在web.xml配置context-param指定路径,或
2015-03-12 16:40:02
396
转载 SSH之Hibernate
hibernatel Hibernate是一个开源ORM框架。l ORM全称Object Relation Mapping,即对象关系映射。它是一种用来完成对象模型到关系模型的映射技术。就是把应用程序中的对象数据持久化到关系数据库的表的一种技术。l 简单的说:ORM能利用面向对象的思想开放基于关系型数据库的应用程序,它的主要工作是将对象数据保存到关系数据库的表中,以及将关系
2015-03-12 15:08:10
366
转载 SSH之Struts(三)
创建Struts项目创建工程在Eclipse中创建一个Dynamic Web Project,本文项目名称为SSHProject。把Struts内apps文件夹下的struts2-blank war包用压缩工具解压,然后把WEB-INF/lib内的jar包和WEB-INF下的web.xml文件分别复制到SSHProject项目下的WEB-INF/lib内和WEB-INF下。在s
2015-03-12 14:42:06
358
转载 SSH之Struts(二)
Struts的Vaildation.xml验证当使用struts的validation.xml进行验证时,需要注意如下几个方面:首先应该注意validation.xml的名字,一定要以Action的类名加“-validation.xml”作为文件名。如LoginAction-validation.xml。validation.xml 的命名规则和放置路径: 文件名:
2015-03-12 11:39:18
339
转载 SSH之Struts(一)
Struts2的环境要求 Apache Struts2的环境需求如下: Servlet API 2.4JSP API 2.0Java 5需要提醒的是,在Struts中会用到Annotation,所以请将JDK版本升级到1.5以上Struts2环境搭建Struts的下载 从游
2015-03-09 10:46:54
402
原创 myeclipse的web项目转为eclipse项目相关问题
首先将项目转为动态web项目,如下:然后修改web文件夹名称,myeclipse为WebRoot,eclipse为WebContent这样工程就转好了。正常情况下一切OK,但是有时候因web项目所使用的lib包和jdk版本关系会导致一些问题:使用myeclipse自带Tomcat运行项目可以运行,但发布到浏览器却无法访问,同时eclipse也无法访问。本人遇到的问题是使用w
2015-03-03 13:46:01
477
转载 二维码的生成细节和原理
二维码又称QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型:比如:字符,数字,日文,中文等等。这两天学习了一下二维码图片生成的相关细节,觉得这个玩意就是一个密码算法,在此写一这篇文章 ,揭露一下。供好学的人一同学习之。关于QR Code Specification,可参
2015-02-16 10:17:37
417
转载 Java 中对象转XML,JSON解析,JSON转XML相关包
xstream,http://xstream.codehaus.org下载XStream的最新版本将对象序列化为XML到这一步,我们就可以将一个Java对象序列化为一个XML文件了,我们先声明一个Person对象,然后加入两条电话号码对象:Person person = new Person("Chen", "Tao");joe.setPhone(new PhoneNumber
2015-01-20 11:44:15
3858
转载 serialVersionUID JAVA的序列化机制
serialVersionUID适用于JAVA的序列化机制。简单来说,Java的序列化机制是通过判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常,即是InvalidCastEx
2015-01-19 11:37:18
480
转载 IOS关于self.用法的一些总结
关于什么时间用self. , 其实是和Obj-c的存取方法有关, 不过网上很多人也都这么解答的, 那它为什么和存取方法有关? 怎么有关的? 进入正题, 我们经常会在官方文档里看到这样的代码:MyClass.h?123456[/lang]@interf
2015-01-13 15:56:23
429
转载 引用计数(retainCount)
iPhone系统中的Objective-C的内存管理机制是比较灵活的,即可以拿来像C/C++一样用,也可以加个AutoreleasePool让它升级为半自动化的内存管理语言。当然,也不能拿JAVA虚拟机中的全自动化GC来比〜一,引用计数是实例对象的内存回收唯一参考引用计数(retainCount)是Objective-C管理对象引用的唯一依据。调用实例的release方法后,此属性减一
2015-01-13 15:44:07
490
转载 IOS atomic与nonatomic,assign,copy与retain的定义和区别
atomic和nonatomic用来决定编译器生成的getter和setter是否为原子操作。 atomic 设置成员变量的@property属性时,默认为atomic,提供多线程安全。 在多线程环境下,原子操作是必要的,否则有可能引起错误的结果。加了atomic,setter函数会变成下
2015-01-13 11:16:35
389
转载 try、catch 相关问题
try {int x = 0;float y = 0;float z = x / y;System.out.println("11");try {int a[] = new int[3];a[3] = x;System.out.println("22");return;} catch (Exception e) {System.out.println("
2014-12-16 12:02:10
419
转载 new一个类对象和使用类名创建一个对象有什么区别?LinkList和ArrayList的区别
存储空间上不同。 new出来的在堆上 直接定义的在栈上 .用法似乎高手都喜欢用new,因为堆的内存大嘛,我喜欢用栈,方便点,不用指来指去,还要回收内存.栈在递归可能会遇到溢出,因为内存有限制.而且new出来的可以用很多动态重载的特性.
2014-12-16 11:11:26
946
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人