自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(192)
  • 资源 (14)
  • 收藏
  • 关注

转载 自定义view的基本流程

要自定义View首先需要继承View或者其子类,如果需要实现的效果比较复杂,通常需要继承View,有时候我们需要的是系统的控件再加上一些特殊的效果则可以继承View的子类(如TextView)如果是要自己设计一种布局或者要组合其他控件,这时候就需要继承ViewGroup或者LinearLayout、FrameLayout等系统自带的布局首先需要新建res/values/custom_view_attrs.xml,并在里面声明如下然后就可以在xml布局文件中声明了。

2023-04-24 22:14:47 273 1

原创 Java终止线程

一般任何进行加锁的代码块,都是为了保护数据的一致性,如果在调用 thread.stop() 后导致了该线程所持有的所有锁的突然释放(不可控制),那么被保护数据就有可能呈现不一致性,其他线程在使用这些被破坏的数据时,有可能导致一些很奇怪的应用程序错误。在Thread中提供了一个interrupt()方法,从名字看表示中断,但实际上并不像stop()方法一样直接中断线程,而是向子线程发送一个中断的通知。当使用interrupt()方法时,中断标志就会置true,和使用自定义的标志来控制循环是一样的道理。

2023-04-23 22:58:37 556

原创 插件化之APK动态加载

插件化相关概念:根据组件化与插件化的区别来了解一下概念组件化和插件化的区别组件化:是将一个APP分成多个模块,每个模块都是一个组件(module),开发的过程中我们可以让这些组件相互依赖或者单独调试部分组件,但是最终发布的时候将这些组件合并成一个统一的APK。插件化:是将整个APP拆分成很多模块,每个模块都是一个APK(组件化的每个模块是一个lib),最终打包的时候将宿主APK和插件APK分开打包,插件APK通过动态下发到宿主APK。插件化的优点减小安装APK的体积,按需下载模块

2023-04-17 15:12:20 1347

原创 android hook(Toast BadTokenException案例)

hook 技术又叫做钩子函数,在系统没有调用该函数之前,钩子程序先捕捉该消息,钩子函数先得到控制权,这时钩子函数即可以加工处理(改变)该函数的执行行为,还可以强制结束消息的传递。简单来说,就是把系统的程序拉出来,变成我们自己执行的代码片段。

2023-04-16 15:48:43 343

转载 Android插件化开发指南——类加载器

曾在JVM虚拟机知识点浅析总结中提到过在Java中的类加载器。我们知道Java中类的加载由类加载器完成,类加载器通常由JVM提供,这些类加载器也是前面所有程序运行的基础,JVM提供的这些类加载器通常被称为系统类加载器。除此之外,开发者可以通过继承ClassLoader基类来创建自己的类加载器。启动类加载器(Bootstrap ClassLoader);主要负责加载 jre\lib\rt.jar 中的JDK文件。扩展类加载器(Extension ClassLoader);

2023-04-10 17:30:11 349

原创 APK瘦身

知道了APK打包流程后想要瘦身,其实无非就是把整个APK的一些文件进行一个瘦身。看下apk的这个文件。包括class、资源,资源生成arsc(资源映射表),manifest清单,再就是meta。对这些文件如果能缩小的话,就能达到缩小apk的目的。

2023-04-09 17:52:36 431 1

原创 APK打包流程

Dex工具会把class文件,还有我们的第三方的这样的依赖库和.class文件,进行编译生成.dex文件,.dex主要是用来在我们的虚拟机运行,当然这个过程也会去消除一些冗余信息、压缩常量值等等做这样的一些简单的处理,相当于简单的优化一下。首先,安卓APP的资源这一块,会通过aapt进行一个编译,这个工具编译的时候,会首先会把我们的这个xml文件生成这一个R.java,然后再就是像manifest清单文件,它会通过编译把生成一个二进制文件,资源文件,他会去生成一个。zipalign(release模式)

2023-04-09 07:29:30 417

原创 Java注解详解

Java注解又称Java标注,是在 JDK5 时引入的新特性,注解(也被称为元数据)。Java注解它提供了一种安全的类似注释的机制,用来将任何的信息或元数据(metadata)与程序元素(类、方法、成员变量等)进行关联。Java注解是附加在代码中的一些元信息,用于一些工具在编译、运行时进行解析和使用,起到说明、配置的功能。

2023-04-08 17:34:18 1008

转载 Java动态代理

部分内容偷懒复制转载自少量内容根据自己的理解有所完善补充。

2023-04-03 22:09:10 184

原创 Java反射机制详解

是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意属性和方法;这种动态获取信息以及动态调用对象方法的功能称为 java 语言的反射机制。

2023-04-02 22:11:34 565

原创 Java中的CAS详解

CAS(Compare-And-Swap)是比较并交换的意思,它是一条 CPU 并发原语,用于判断内存中某个值是否为预期值,如果是则更改为新的值,这个过程是原子的。CAS机制当中使用了3个值:内存地址V,旧的预期值A,计算后要修改的新值B两个线程同时对内存值V进行操作,V初始值为1线程1、线程2都对V加1计算,预期值A=1,新值B=2线程2先提交,预期值A==V,更新成功,将V更新为2线程1提交时4,发现预期值A=1,V=2,A!=V,提交失败,重新获取内存值V=2。

2023-04-01 20:29:22 855

转载 ConcurrentHashMap

因为 ConcurrentHashMap 是用于多线程的 ,如果ConcurrentHashMap.get(key)得到了 null ,这就无法判断,是映射的value是 null ,还是没有找到对应的key而为 null ,就有了二义性。ConcurrentHashMap 的迭代器创建后,就会按照哈希表结构遍历每个元素,但在遍历过程中,内部元素可能会发生变化,如果变化发生在已遍历过的部分,迭代器就不会反映出来,而如果变化发生在未遍历过的部分,迭代器就会发现并反映出来,这就是弱一致性。

2023-04-01 09:38:34 123

原创 主线程与子线程之间相互通信(HandlerThread)

平时,我们一般都是在子线程中向主线程发送消息(要在主线程更新UI),从而完成请求的处理。那么如果需要主线程来向子线程发送消息,希望子线程来完成什么任务。该怎么做?这就是这篇文章将要讨论的内容。

2023-03-24 14:59:48 3031

原创 Listview 和 Recyclerview 的区别

listview的用法继承BaseAdapter,需要重写四个方法不强制使用viewholder可以直接使用item的点击事件不用单独设置分隔线不可以定向刷新某一条数据@Override@Override@Override@Override} else {recycleview的用法继承的是Recycleview.Adapter必须使用viewholder,封装了view的复用。

2023-03-21 17:29:22 331

原创 AIDL 详细介绍及使用

从某种意义上说AIDL其实是一个模板,因为在使用过程中,实际起作用的并不是AIDL文件,而是据此而生成的一个IInterface的实例代码,AIDL其实是为了避免我们重复编写代码而出现的一个模板。方法入手,在上面的代码中可以看到,主要的作用就是根据传入的Binder对象转换成客户端需要的 IMyAidlInterface 接口。服务端的代码差不多就这些,下面我们来看看客户端的,客户端也是需要 AIDL 文件的,可以从服务端中复制过来。看完上面方法的介绍,我们回过头来看看 AIDL 例子中实现的流程。

2023-03-20 18:47:19 3126

转载 Android WorkManager使用介绍

新建一个MyWork类继承Worker类,重写dowork()方法,在其中添加希望由WorkManager 运行的工作任务@NonNull@Override//任务的具体行为doWork()将返回执行结果Result,会通知WorkManager服务工作是否成功,以及工作失败时是否应重试工作。Result.success():工作成功完成。Result.failure():工作失败。Result.retry():工作失败,应根据其重试策略在其他时间尝试。

2023-03-20 11:51:42 471

原创 Java线程同步synchronized和Lock锁

指令重排序是编译器优化代码的一种操作,我们大部分写的代码中,彼此的顺序(不会影响程序逻辑),谁在前谁在后无所谓~编译器会通过调整代码的前后顺序从而提高程序效率。许多线程可能是可运行状态但只能有一个线程在运行该线程将持续运行直到它自行终止或者是由于其他的事件导致阻塞亦或者是出现高优先级线程成为可运行的则该线程失去CPU的占用权。- 所谓的非公平锁是指,线程获取锁的顺序不是按照访问的顺序先来先到的,而是由线程自己竞争,随机获取到锁。想要得到的结果是0但是最终的结果却不是我们想要的也不是我们可以控制的。

2023-03-19 11:51:57 541

原创 HashMap和Hashtable的区别

HashMap和Hashtable它的底层存储机制都是数组加列表的结构,但是在jdk 1.8版本之后HashMap增加了一个新的结构叫做红黑树。

2023-03-17 10:26:39 267

原创 模块化开发的application问题

模块化开发是为了实现解耦,加速打包,模块调试等

2023-03-16 16:22:23 179

原创 四大组件之广播

广播是程序组件之间的传输消息的机制,广播的内容是一个intent,在其中携带数据,他没有用户界面。

2023-03-15 14:25:44 217

原创 SurfaceView与普通view的区别

SurfaceView第一印象它是一个view,因为它继承了View,有两个直接子类GLSurfaceView,VideoView。但根据SDK文档SurfaceView和普通的view又有较大区别。最显著的区别就是普通view和它的宿主窗口共享一个绘图表面(Surface),SurfaceView虽然也在View的树形结构中,但是它有属于自己的绘图表面,Surface 内部持有一个Canvas,可以利用这个Canvas绘制。

2023-03-14 22:53:58 501

原创 Android逆向之旅-Android Studio的调用So文件极简教程

函数是需要生成so文件被调用的。

2023-03-13 10:54:40 2661

转载 ViewModel解析

ViewModel原理

2023-03-07 20:16:45 406

原创 同模块设置不同应用主题方案

设置主题

2023-03-07 11:09:20 254

转载 Android与JS交互详解

先来说说什么是JS交互:说的俗一点就是通过我们项目中的控件来调用HTML里的JS代码,也可以通过JS来调用项目中的代码。

2023-03-01 14:27:45 5184

原创 RN踩坑:java.lang.RuntimeException: Unable to load script from assets ‘index.android.bundle‘.

1、报错提示:Unable to load script.Make sure you're either running a metro server( run 'react-native start' ) or that your bundle 'index.android.bundle' is packaged correctly for release.

2023-02-15 14:52:56 625

转载 线程池详解

拒绝策略提供顶级接口 RejectedExecutionHandler ,其中方法 rejectedExecution 即定制具体的拒绝策略的执行逻辑。

2023-02-09 19:54:48 497

原创 线程池核心数与最大线程数问题

线程池核心数与最大线程数问题

2023-01-29 11:33:49 1827

原创 本地存储介绍

本地存储介绍

2022-12-07 10:38:45 697

转载 移动端网页特效

移动端网页特效

2022-12-05 11:18:16 74

转载 PC 端网页特效

PC 端网页特效

2022-11-28 18:55:28 64

原创 Web APIs——BOM

Web APIs——BOM

2022-11-26 10:48:21 536

原创 ViewPager2+TabLayout

ViewPager2+TabLayout

2022-11-23 19:53:20 8525

转载 JS中addEventListener的使用

触发事件,在子元素事件触发的时候,父元素的事件会在子元素事件触发完成之后触发,这便是事件冒泡

2022-11-20 17:56:02 572

原创 Web APIs——DOM

Web APIs——DOM

2022-11-20 17:45:51 286

原创 CSS三角绘制

网页中常见一些三角形,使用 CSS 直接画出来就可以,不必做成图片或者字体图标。

2022-11-15 14:12:33 44

转载 Flutter 与 RN对比

2022-11-14 10:52:24 3195

原创 rem适配布局(rem+less+媒体查询 和 rem+flexible.js)

css3 新语法。

2022-11-14 08:41:01 1747

原创 Flex布局

如果一个项目的该属性设置为0,则空间不足时该项目也不缩小。如果设置为一个固定的值,则该项目在容器中占据固定的大小。采用flex布局的元素被称作容器,在flex布局中的子元素被称作项目。flex属性是 flex-grow属性、flex-shrink属性、flex-basis属性的简写。3、flex-flow属性是flex-deriction和flex-wrap属性的简写,默认值为[row nowrap];Flex是Flexible Box的缩写 ,flex布局表示弹性布局,可以为盒状模型提供最大的灵活性。

2022-11-13 20:44:20 103

原创 移动web技术方案

移动端浏览器基本以webkit为主,对h5和css3支持度比较高,同时浏览器私有前缀只要考虑添加webkit即可。

2022-11-13 19:41:02 928

app-debug.apk

测试apk,用于个人测试地图,导航功能演示。测试专用。

2020-08-02

基于深度学习的计算机视觉

基于深度学习的计算机视觉,现在深度学习越来越贴近生活,对于专业人员或者初学者都是很好的书籍,在小象这是收费课程,在此免费开放给大家,供大家参考学习。

2018-10-19

opencv3+python人脸检测和识别 完整项目

opencv3+python人脸检测和识别 完整项目 识别视频《欢乐颂》中人物

2018-10-19

ggplot2从理论到实践

本资源包含Ggplot2 Elegant Graphics for Data Analysis第二版、Learn Ggplot2 Using Shiny App以及ggplot2包的理论依据The Grammar of Graphics。

2018-10-19

手机采集摄像头视频socket实时传播

手机采集摄像头视频socket实时传播 相关内容 供参考

2018-10-19

基于C#.NET的高端智能化网络爬虫

样例实现,抓取携程所有城市酒店信息,包括城市,酒店地址等。

2018-10-19

标准建模语言UML教程》(中文版)

最新《标准建模语言UML教程》(中文版),很好的一本书,包括pdf教程及演示讲稿

2018-10-18

《Tensorflow:实战Google深度学习框架》 PDF版

《Tensorflow:实战Google深度学习框架》为使用TensorFlow深度学习框架的入门参考书,旨在帮助读者以最快、最有效的方式上手TensorFlow和深度学习。书中省略了深度学习繁琐的数学模型推导,从实际应用问题出发,通过具体的TensorFlow样例程序介绍如何使用深度学习解决这些问题。《Tensorflow:实战Google深度学习框架》包含了深度学习的入门知识和大量实践经验,是走进这个最新、最火的人工智能领域的首选参考书。

2018-10-18

白话深度学习与TensorFlow

TensorFlow最初由Google大脑小组(隶属于Google机器智能研究机构)的研究员和工程师们开发出来,用于机器学习和深度神经网络方面的研究,但这个系统的通用性使其也可广泛用于其他计算领域。

2018-10-18

小甲鱼教程Python 源码软件包+课件

包括1-96集《0基础入门学习python》教程的所有代码、课件、安装包等文件。一文在手,python我有

2018-10-18

深度学习入门:基于Python的理论与实现

深度学习入门:基于 Python 的理论与实现》原书的 PDF 格式加书内例子代码,适用于想要入门学习深度学习的读者

2018-10-18

机器学习实战、文档+代码

机器学习是人工智能研究领域中一个极其重要的研究方向,在现今的大数据时代背景下,捕获数据并从中萃取有价值的信息或模式,成为各行业求生存、谋发展的决定性手段,这使得这一过去为分析师和数学家所专属的研究领域越来越为人们所瞩目。, 本书第一部分主要介绍机器学习基础,以及如何利用算法进行分类,并逐步介绍了多种经典的监督学习算法,如k近邻算法、朴素贝叶斯算法、Logistic回归算法、支持向量机、AdaBoost集成方法、基于树的回归算法和分类回归树(CART)算法等。第三部分则重点介绍无监督学习及其一些主要算法:k均值聚类算法、Apriori算法、FP-Growth算法。第四部分介绍了机器学习算法的一些附属工具。, 全书通过精心编排的实例,切入日常工作任务,摒弃学术化语言,利用高效的可复用Python代码来阐释如何处理统计数据,进行数据分析及可视化。通过各种实例,读者可从中学会机器学习的核心算法,并能将其运用于一些策略性任务中,如分类、预测、推荐。另外,还可用它们来实现一些更高级的功能,如汇总和简化等。

2018-10-11

空空如也

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

TA关注的人

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