- 博客(245)
- 资源 (41)
- 收藏
- 关注

原创 项目实战①—高仿知乎日报(0)-->NDK将私密数据隐藏起来
在安卓如此流行NDK的情况下,在不加入NDK就out了,看完这篇帖子 几分钟就搞定NDK环境配置,为你的APP的安全性提高一个等级
2014-12-05 17:28:16
6475
1

原创 为什么一些2年的开发人员竟然和应届毕业生一样的思考
让我先说一件事,在没找工作的时候,我在想为什么程序员也会有两个极端,一个做了两年的开发人员,那人工资竟然会比现在一些应届毕业生是一个薪资,甚至低一点。
2014-11-24 22:50:22
3367
1
原创 2021 安卓逆向学习思路
逆向对于以后的发展基本处于两个方向,建议新手多发展协议分析,脱壳这个东西难度就在于门槛协议分析抓包:推荐小肩膀的抓包系列,因为这里分很多种情况1、https/http 协议抓包2、客户端不走代理 什么情况3、http单向,双向验证,脱证书 导入证书 解密https4、以及搭配什么软件使用5、websocket 抓包等等Java层代码分析:建议使用jadx-gui,如果代码混淆还原不行建议使用jeb 强大的很 配合使用棒棒哒So 代码分析:ida pro 这个软件 破解版 Mac 最
2021-11-17 10:33:38
880
原创 九、View事件传递机制
事件传递机制:责任链机制,从上到下,然后冒泡回到起点事件传递围绕这三个方法进行dispatchTouchEvent -事件的分发onInterceptTouchEvent - 阻止分发,返回true子view都接受不到事件onTouchEvent -在dispatchTouchEvent使用,用来处理点击事件,返回结果表示是否消费传递流程PhoneWindow -> Dec...
2019-03-01 14:46:50
335
原创 八、BroadcastReceiver知识速览
文章目录1、BroadcastReceiver 定义和作用2、注册方式:静态方式、动态方式2.1、静态注册2.2、动态注册3、BroadcastReceiver注册与取消的时机4、BroadcastReceiver的不同类型1、BroadcastReceiver 定义和作用消息型组件,用于在不同组件乃至不同应用之间传递消息2、注册方式:静态方式、动态方式2.1、静态注册使用方式:配置文件...
2019-03-01 14:45:20
461
原创 七、Service知识速览
1、Service的定义及作用Service(服务)是一个一种可以在后台执行长时间运行操作而没有用户界面的应用组件1.1、作用例子:播放音乐下载即使如此也要记住他依然是运行在主线程的东西,他依赖于进程,进程关闭,他也随着关闭2、启动方式和生命周期2.1、bindService-交互任务当应用组件通过调用 bindService() 绑定到服务时,服务即处于“绑定”状态。绑定服...
2019-02-28 23:52:06
406
原创 六、Activity生命周期与启动模式
文章目录1、生命周期1.1 、正常使用的周期方法1.1 、非正常周期方法 onSaveInstanceState() 与 onRestoreInstanceState()1.3、来个例子实战下2、启动模式关于activity的主要就是生命周期和启动模式,这两个贯穿你开发的整个周期关键词联想:两两对应,普通,栈顶内独1、生命周期先看图,以前开发一直百度找这张图1.1 、正常使用的周期...
2019-02-28 14:38:03
266
原创 二、Java数据结构实现之链表
文章目录1、单链表1.1、数据结构:1.2、链表头添加元素:1.3、链表头删除元素:1.4、查找指定元素2、双向链表2.1、数据结构:2.2、添加节点:线性表:零个或多个数据元素的有限序列首先他是一个序列,也就是说元素之间是有顺序的,若元素存在多个,则第一个无前驱,最后一个元素无后驱,其他元素都有一个前驱后驱,同时元素也是有限的。如图先从最简单的开始吧1、单链表单向链表只可向一个...
2019-02-26 23:53:46
229
原创 二、Android View绘制流程
[TOC]PhoneWindow 是 Android 系统中最基本的窗口系统,每个 Activity 会创建一个。PhoneWindow 是 Activity 和 View 系统交互的接口。DecorView 本质上是一个 FrameLayout,是 Activity 中所有 View 的祖先PhoneWindow是Window的子类DecorView是整个ViewTree的最顶层Vi...
2019-02-26 18:17:15
229
原创 javascript忍者秘籍之第五章笔记(闭包)
什么是闭包:是一个函数在创建时允许该自身函数访问并操作该自身函数以外的变量时所创建的作用域闭包可以让函数访问该函数声明时作用域的所有变量和函数书中例子我看的莫名其妙….甚至觉得理所当然….还是写出来吧 var outValue='ninja'; var later; function outFunction() { var innerValue='sa
2018-01-21 18:59:35
380
原创 javascript忍者秘籍之第四章笔记(函数进阶)
匿名函数:就是没有名字的函数如:function(){assert(true,'power!')}var ninja={shot:function(){assert(true,'Ninja!')}}ninja.shot();setTimeout(function(){assert(true,'Forever!')},500)以上都是匿名函数,有些地方不需要函数名字基本匿名
2018-01-20 00:27:03
701
原创 javascript忍者秘籍-第三章笔记(函数的基础)
javascript忍着秘籍笔记函数调用传递的两个隐式参数argument,this隐式:意味着这些参数不会显示列在函数签名里,但是它们默默地传递给函数并存在函数作用域内。在函数内部他们可以像卡显示命名参数一样使用 如果在你浏览器中调试时,你就会发生他们是真实存在对象中的arguments参数他只是一个类数组,只是拥有部分特性,你能数组形式去获取(argume
2018-01-19 10:21:30
416
原创 从接手开发传统桌面端才想起Vue的好
接手进行一个老项目的代码,才能想起新一代的js框架的好处…小菜鸟写文章有错误请指正….先说说Vue的好处双向绑定:传统实现,需要大量的js和html的交互,随着项目越来越大,新开发的入场,造成维护和学习成本大大提升,有时候为了找一个点击事件和业务逻辑,往往需要人与人的沟通或者代码得关键词搜索才能看懂,这是不可持续开发的一种如:传统实现jq对于dom操作往往就可以对于全局的d
2018-01-13 13:39:05
712
原创 jquery-内容和缓存框架探索
设置和获取innerHTMLinnerHTML:属性设置或返回表格行的开始和结束标签之间的 HTML function html(context, value){ var doms = $$.$all(context); //设置 if(value){ for(va
2018-01-09 17:17:43
312
原创 jquery-属性框架探索
jq中对于属性操作:属性操作 新增 var element = $("p").eq(1) element.attr("name",'神仙');属性操作 删除 element = $("p").eq(1) element.removeAttr("name");属性操作 - addClass ele
2018-01-09 16:34:02
291
原创 jquery-css框架探索
jq样式框架包含两大部分:获取元素的样式的值,设置样式的值来看看jq有哪些方法看看jquery中如何获取元素的值css(key,value)height widthinnerHeight innerWidthouterHeight outerWidthoffset offetParentpositionscollLeft scollRight scollTop scrol
2018-01-09 11:56:15
346
原创 jquery-选择器框架探索
选择框架包含id,tag,class,多组,层次,多组+层次, 表单元素,过滤(基本,属性,内容,子元素,表单元素,隐藏显示,伪类)1、选择id function $id(id) { return document.getElementById(id); }2、选择tag function $tag(tag) { return document.ge
2018-01-09 10:16:57
424
原创 js面向对象-复习一
1、面向对象四种创建方式1.1 传参形式 function Product(name){ this.name = name } Product.prototype={} var iphone = new Product('iphone8s')1.2 默认值 function Product(){
2018-01-08 12:14:54
359
原创 jquery-事件框架探索
从移动端工作内容转到桌面端(网页),突然想起了 老夫写代码就是一把梭真的就是,代码中就只有了jquery,什么框架都没用,如React,angular,Vue,也可能是代码是老一代的程序员写的吧,没办法了,对于我们这种只用过框架的人,都无从下手,任务下来后,还是捋起袖子开干啊。在熟悉代码中,我发现,原来不用框架还可以这么写的….当然从angular->react->jq,我只
2018-01-07 23:06:22
619
原创 自定义View的基础
自定义View的基础0.View的大家族先来看一张图,认识认识他们接着我一个一个介绍PhoneWindow:大家都知道每个Activity都包含一个Window对象,而Window对象就是由PhoneWindow实现的,同时PhoneWindow对象中包含了一个东西是整个应用窗口的根Viewpublic class PhoneWindow extends Window implements Menu
2017-11-16 14:39:16
464
原创 Java多线程之AtomicReference,CAS
首先明白一个知识点,乐观锁和悲观锁是啥乐观锁:每次不加锁而是假设没有冲突而去完成某项操作,如果因为冲突失败就重试,直到成功为止悲观锁:通过使用一致的锁定协议来协调对共享状态的访问,可以确保无论哪个线程持有共享变量的锁,都采用独占的方式来访问这些变量乐观锁的代表就是CAS,而悲观锁的代表就是synchronized悲观锁比较简单重点就在于乐观锁玩法比较多CAS:CAS是项乐观锁技术,当多个线程尝试使用
2017-11-15 18:27:38
1985
原创 十、Jvm结构和泄露溢出
Java不像C/C++自己掌握对象的释放,一般都是jvm包管了而内存泄露是怎么发生的呢那到底java内存结构是怎么样的呢?Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则是依赖用户线程的启动和结束而建立和销毁。我们先看看jvm内存结构吧1. java运行时数据区域1.1
2017-11-15 16:24:27
449
1
原创 android基础之ClassLoader类加载器
0.前言:大家都知道安卓系统运行APP流程Java类会被编译成一个或者多个字节码文件(.class)然后打包到JAR文件Java虚拟机会从相应的CLASS文件和JAR文 件中获取相应的字节码通过一个工具(dx)将应用所有的 CLASS文件转换成一个DEX文件Dalvik虚拟机会从其中读取指令和数据如果想知道jvm和Dalvik可以看看我之前写的Java基础之Dalvik和JVM的认识而加载
2017-11-14 11:46:11
613
原创 android 5.0 6.0 7.0 8.0预测新特性
Android5.0新特性1.代号为Lollipop(棒棒糖),采用了Google最新推行的Material Design设计语言,用户切换activity时,有无缝的过度位移动画.2.运行机制改为更新的ART。相比Dalvik,ART的处理机制完全不同,它会在应用程序安装时就把程序代码转换成机器语言,让程序成为真正的本地应用。这样做的好处是程序的启动时间被极大的提高,运行速度也会更快。电量消耗的更
2017-11-13 15:37:38
1046
原创 Java数据结构之HashMap(五)
0. 前言今天来介绍下HashMap,之前的List,讲了ArrayList、LinkedList,就前两者而言,反映的是两种思想:ArrayList以数组形式实现,顺序插入、查找快,插入、删除较慢LinkedList以链表形式实现,顺序插入、查找较慢,插入、删除方便那么是否有一种数据结构能够结合上面两种的优点呢?有,答案就是HashMap。它是基于哈希表的 Map 接口的实现,以key-va
2017-11-13 10:45:01
547
原创 四、Java数据结构之ArrayList
ArrayList1. 类结构 public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, java.io.Serializable1.1 实现接口1.1.1 RandmoAccess接口:是java中用来被List实现,为List提供快速访问功能的。在ArrayList中,我们即可以通
2017-11-12 22:34:37
667
原创 我们来聊聊String、StringBuffer与StringBuilder
我们来聊聊String、StringBuffer与StringBuilderString:字符串常量StringBuffer:字符创变量StringBuilder:字符创变量首先常量,也就是不可改变的对象那String怎么拼接字符串的呢,你肯定以前听过你自己的老大说String效率低,频繁创建对象!我们先开始聊聊String看一个例子:String str = "love";String
2017-11-11 23:16:05
375
原创 Java数据结构之阻塞队列(3)
1.阻塞队列的使用 阻塞队列 (BlockingQueue)是Java util.concurrent包下重要的数据结构,BlockingQueue提供了线程安全的队列访问方式:当阻塞队列进行插入数据时,如果队列已满,线程将会阻塞等待直到队列非满;从阻塞队列取数据时,如果队列已空,线程将会阻塞等待直到队列非空。并发包下很多高级同步类的实现都是基于BlockingQueue实现的。操作Api:可
2017-11-10 14:05:18
535
原创 三、Java数据结构实现之二叉树
嗯,今天开始在leetcode刷关于树的题目先前以为树很难,确实比基础的数据结构难,如二叉树的删除,尼玛简直是盯着算法(第四版)看了半个小时,最后还是半懂不懂,当然最后还是刷题去把知识打扎实二叉树呢,特点左节点一定会比右节点小,先这样,边刷题边总结下面是用Java实现二叉树public class BST<Key extends Comparable<Key>, Value> { priva
2017-11-10 09:29:37
414
原创 一、Java数据结构实现之队列
最近在刷leetcode,打算还是做一下笔记吧队列,特点,先进先出,比较基础的数据结构 mark一下public class Queue<Item> implements Iterable<Item> { private Node<Item> first; private Node<Item> last; private int n; private static
2017-11-09 18:10:28
447
原创 android优化-UI优化总结
嗯,这是一篇总结,内容主要是从我思维导图中记录的内容前言不卡顿的情况是60fps-16ms,如果绘制时间超过了这个点,人眼就会发现UI动画效果有点延迟(卡顿了)大多数导致情况的原因是:overdraw,有大量过度绘制部分,可以用gpu选项查看UI卡顿的原因人为的在UI线程做了轻微的耗时操作布局过于复杂,导致在16ms内完成绘制 同一时间内执行的动画过多,导致CPU/GPU负担过重View过度
2017-11-09 17:29:14
456
原创 简单的多线程多点下载
简单的多线程多点下载一直奇怪IDM的下载为啥那么牛逼,最近正好复习下载就记录下。首先你要了解多线程下载就得明白一个牛逼的IO流RandomAccessFile1 RandomAccessFile 主要功能是完成随机读取功能,可以读取指定位置的内容1.1 Api:close()//关闭操作read(byte[] b)//将内容读取到一个byte数组之中readByte()//读取一个字节
2017-11-09 16:47:12
646
原创 android什么是ANR,如何定位和避免
什么ANR造成ANR的原因哪些操作是在主线程怎么解决1.什么ANR主线程执行了耗时操作,造成无响应的弹框的出现2.造成ANR的原因线程被IO操作阻塞(4.0以后网络IO不能再主线程执行) 主线程存在耗时操作3.哪些操作是在主线程activity所有生命周期都执行在主线程Service默认是执行在主线程广播的Onreceve回调也是默认在主线程没有使用子线程的Looper的handl
2017-11-03 10:46:44
685
原创 android 安全机制
android 安全机制Android开发者应该建立五道防线来保护android系统的安全第一道防线:代码混淆proguard他可以混淆关键代码,替换命名让破坏者阅读困难,同时也压缩了代码,优化编译后的Java字节码第二道防线 应用接入权限控制 androidMainifest文件权限声明,权限检查机制任何应用在使用andrid受限资源的时候,都需要显示向系统声明所需要权限。只有当一个应用具有相应权
2017-11-03 10:12:34
313
原创 五、跨进程通信的代表Binder
android 跨进程通信的代表BinderBinder为什么能跨进程通信?android为什么选择binder而不是Socket 再开始本文之前,这两个问题你可以先思考下,这两个问题在Binder及其重要前言想想如果在同一进程,你想访问对方内部的函数变量是很简单的。但是一旦不在一个进程,如Application1进程去访问AMS进程的东西,你就无法”直接”访问,你需要一个东西帮你转接一下。
2017-11-02 22:53:59
403
原创 三、基础之Dalvik和JVM的认识
先介绍两个名词的意思:寄存器:CPU内部用来存放数据的一些小型存储区域栈:内存….内分分为堆和栈想知道更多可以看看下面文章栈式虚拟机和寄存器式虚拟机的对比为什么寄存器比内存快? 在说Dalvik和JVM区别我觉得区别就在一个是Dalvik 基于寄存器,而 JVM 基于栈,出生不同决定以后用处不同程序运行过程Java类会被编译成一个或者多个字节码文件(.class)然后打包到JAR文件Jav
2017-11-01 17:11:35
399
原创 四、Java基础之GC垃圾回收的历史
垃圾回收思路:发现无用信息对象回收被无用对象占用的内存空间,使该空间可被程序再次使用。我们先来看看JVM的内存结构Ⅰ Jvm(Java虚拟机)主要管理两种类型内存:堆和非堆。堆:运行时数据区域,所有类实例和数组的内存均从此处分配,由垃圾回收器的自动内存管理系统回收堆内存分为两大部分:新生代和老年代。比例为1:2。老年代:主要存放应用程序中生命周期长的存活对象。新生代:一个Eden区和两个Sur
2017-11-01 16:33:35
1274
原创 java之最简单和最复杂的排序算法
冒泡排序:当前元素和next元素对比大小如果从小到大排序,大的往后排,如果从大到小小的往后排直到交换到最后一位,则是整个数据中最大(最小的)则继续开始下一轮比较ok 看看代码public class BubleSort { public static int[] bubbleSort(int[] arr){ int size = arr.length; for
2017-11-01 13:23:57
580
原创 问答法学习单例模式
最近一直在刷数据结构(leetcode),嘿嘿,看看之前写的专栏一直没有动手,哎,不是我不想写,是因为积累确实没到如同军人没经历过几场百团大战,你能让他去带军大战么,这不是纸上谈兵么好了回归正题:单例其实很简单,但其实里面还是有很多知识点可以学习,比如static修饰的东西(方法或者变量),在程序中是什么时候加载的?多线程中的volatile,synchronized?内部类在java中的加载
2017-10-31 17:55:16
677
原创 Java基础之重写和重载谁是谁
重写show 代码public class MethodFather { void max(int a, int b) { System.out.println("父类:Using Int"); System.out.println(a 重写:子类实现父类已经存在的方法,如果不需要父类方法逻辑去除super();也可实现自己的逻辑注意事项:子类中的方法与父
2017-10-31 09:26:03
413
5.0效果的EditText.rar
2015-04-28
ButtonFlow
2015-02-17
程序锁修复版
2014-12-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人