自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 资源 (5)
  • 收藏
  • 关注

原创 重修设计模式-结构型-组合模式

组合模式(Composite Pattern)也叫部分-整体模式(Part-Whole), 用来描述部分与整体的关系,主要是用于处理树形结构数据。

2024-09-20 11:19:00 356

原创 重修设计模式-概览

借助设计模式,可以利用更好的代码结构,将大块复杂代码拆分成职责更单一的小类,让其满足开闭原则、高内聚松耦合等特性,以此来控制和应对代码的复杂性,提高代码的可扩展性。

2024-09-19 20:21:31 541

原创 重修设计模式-设计原则

设计原则是软件编码时所遵循的规则,旨在帮助开发者创建出既满足功能需求又易于维护、可扩展且美观的设计,理解设计原则可以提升代码质量、减少错误以及促进团队协作,但对设计原则的理解要灵活,不要拿原则当真理,生搬硬套会适得其反。

2024-09-19 20:16:02 987

原创 重修设计模式-结构型-门面模式

门面模式(Facade Pattern),也称作外观模式,主要用于为复杂的子系统提供一个统一的、更简洁的接口,使得子系统更加容易使用,并减少系统的相互依赖,提高系统的灵活性和可维护性。

2024-09-18 18:26:12 889

原创 重修设计模式-结构型-适配器模式

适配器模式(Adapter Pattern)允许将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。简单来说,适配器解决的就是接口不兼容问题,引入适配器充当中间桥梁,从而让不兼容接口协同工作。

2024-09-18 10:38:57 948

原创 重修设计模式-结构型-装饰器模式

装饰器模式(Decorator Pattern)允许在不修改原有类代码的情况下,通过创建一系列包装类来给对象动态地添加一些额外的功能,且增强的功能支持相互叠加。装饰器模式将“组合优于继承”的思想体现的淋漓尽致,当原始类需要增加额外功能时,相比直接生成子类的实现方式,这种模式更为灵活。

2024-09-13 19:08:35 842

原创 重修设计模式-结构型-桥接模式

举个例子,应用性能监控的告警系统:根据告警规则,触发不同级别的消息通知,如SEVERE(严重)、URGENCY(紧急)、NORMAL(普通)。可见 notify 方法中每个分支中的代码逻辑都比较复杂,发送通知的所有逻辑都扎堆在 NotificationOld 类中,如果新增消息级别和通知渠道,则又要改动分支代码,可能影响原有逻辑,也不符合开闭原则。桥接模式(Bridge Pattern)的主要目的是解耦,创建一个抽象层来隔离接口与实现,让它们之间的依赖关系可以通过对象的组合来替代继承,从而达到解耦的目的。

2024-09-12 18:24:52 993

原创 重修设计模式-结构型-代理模式

代理的实现有两种方式,一是实现同一接口,二是直接继承。代理又分为静态代理和动态代理,动态代理的动态指的是不需要提前创建代理类,只需要用面向切面的思想,单独考虑增强的逻辑即可,代理类会在运行时由系统动态创建。代理模式是一种非常有用的设计模式,通过引入代理对象来控制对目标对象的访问,可以在不修改目标对象的前提下增加额外的功能,提高系统的灵活性和可扩展性。

2024-09-11 13:03:15 915

原创 重修设计模式-创建型-建造者模式

具体实现中,通常会定义一个 Builder 类,它拥有产品类的所有属性,并定义一系列链式调用的 set 方法,用于修改产品类属性,最后通过 build() 方法集中校验并创建产品类对象。如果不在意对象是否可变和短暂无效状态,set 方式也是可以使用的,毕竟 Builder 中的重复代码和建造者对象也会造成一些损耗,具体还是要视需求复杂程度而定,在软件编码原则和需求契合度之间做折中。允许用户通过链式调用方法来逐步构建复杂对象,让复杂对象的构建与它的表示分离,即对象的表示和对象的构造过程解耦。

2024-09-09 17:59:12 1008

原创 重修设计模式-创建型-工厂模式

抽象工厂模式使用抽象的接口来创建一系列相关或相互依赖的对象,而无需指定它们具体的类。这种方式主要用于创建一组相互依赖或关联的对象,而不需要指定它们具体的类。//抽象工厂//大文件解析器//再这里创建不同维度的产品类//小文件解析器//..省略//..省略//..省略//可根据具体业务,通过抽象工厂创建不同的产品类,无须关心实现类抽象工厂模式是工厂方法模式的升级版本,在有多个业务品种、业务分类时,通过抽象工厂模式产生需要的对象是一种非常好的解决方式。

2024-09-06 18:52:07 1190

原创 详解线程安全机制—CAS

从思想上来说,synchorized 属于悲观锁,悲观的认为程序中的并发多,所以严防死守,CAS机制属于乐观锁,乐观的认为程序中并发少,所以线程不断的去尝试更新。

2024-09-05 12:13:32 592

原创 重修设计模式-创建型-单例模式

比如线程A通过了第一次检测,此时切换到线程B,由于 sInstance 还没被赋值,线程B也通过了第一次检测,此时无论哪个线程进入加锁代码,另一个线程都会等待锁释放后再进入加锁代码,这时就会导致重复初始化。单例的主要使用场景有两个,一是使用单例控制全局的资源访问,也就是用单例封装一些工具类,比如日志写入工具;这里用 Java 举例,会将实例初始化过程使用 synchronized 锁住,但加锁是非常损耗性能的操作,所以非常不推荐这样去写,更常见的写法应该是下面的双重检测。

2024-08-21 19:09:01 999

原创 重修设计模式-创建型-原型模式

利用已有对象来创建新对象的方式,就叫做原型模式。原型模式的核心是对象的拷贝,对象拷贝又分为浅拷贝和深拷贝,其中浅拷贝会共用引用类型对象,而深拷贝会创建新的引用对象。

2024-08-13 14:08:35 613

原创 重修设计模式-行为型-状态模式

状态机三要素:状态(State)、事件(Event)、动作(Action),事件驱动状态的流转,并触发动作的执行。实现状态及三种方式:分支判断法:优点:实现简单,适合状态较少的简单场景。缺点:大量 if-else 或 switch-case 代码,可读性和可扩展性差,不适合复杂逻辑。查表法:优点:代码中只需维护好状态流转表即可,代码比较直观,适合状态较多,且增加频繁的场景。

2024-08-12 13:47:10 806

原创 Android Studio新版UI常用设置

新版UI固然好看,但启用后一些常用的功能也被初始化了,下面会说明如何设置一些常用的功能。

2024-08-07 17:36:43 442

原创 Mac快速配置ADB环境变量

ADB是进行 Androd 开发时很常用的调试工具,Android SDK 中就包含了该工具,所以如果安装了SDK那只需要在环境变量中配置 Android SDK 的路径即可,本文的环境配置也基于这种场景。

2024-08-07 16:28:34 605

原创 解决:xxx.xxx/res/modules/.ds_store: error: the file name must end with .xml 问题

该问题是由于Android Studio校验到布局文件中存在不以.xml后缀名结尾的文件,这个文件就是.DS_store,它是Mac上系统自动创造的隐藏文件,把该文件删除就可以了。

2024-07-30 19:56:16 239

原创 分享一种 ConstraintLayout 让TextView 自适应的同时,还不超出限制范围的方式

不知道大家有没有遇到这种布局需求:上图布局很简单,ImageView + 中间的TextView + View + ImageView,需求是中间的 TextView 宽度需要根据内容来展示,但长度超出屏幕时,需要将 TextView 进行…的折叠展示,同时它后面的 View 和 ImageView 不能被推出屏幕。当TextView 超长时:这种需求看起来简单,但暗藏玄机。这种需求下,常规方案是达不到效果的。

2022-12-14 17:52:05 3120 3

原创 Android项目网络请求支持Brotli压缩记录

Brotli Google 官方库Brotli 是 Google 推出的一种无损压缩算法,通过变种的LZ77算法、Huffman编码以及二阶文本建模等方式进行数据压缩,与其他压缩算法相比(如zip,gzip等),无论是压缩时间,还是压缩体积上看,它都有着更高的效率。Brotli 如此高的压缩比率,得益于其使用一个预定义的字典,该字典包含超过 13000 个来自文本和 HTML 文档的大型语料库的常用字符串,预定义的算法可以提升较小文件的压缩密度,而压缩与解压缩速度则大致不变。...

2022-08-03 11:01:24 1800 3

原创 Mac版JDK环境配置及Java多版本切换

Mac版JDK环境配置及Java多版本切换一、下载JDK包JDK 各版本可通过 ORACLE 官网下载 ,下载较慢,可以百度搜索 Java Development Kit Mac 找下国内资源 传送门。选择.dmg 文件,安装,一路 next 即可。安装之后窗口就消失了,好像什么都没发生过…那么 Jdk 安装到哪了?我们来找一下:首先打开终端:command + 空格,输入**terminal**,选中 终端 并回车)终端输入命令:移动到根目录:cd /访达中打开(访达类似

2022-02-18 18:22:11 7220 4

原创 记一次WebView加载带定位网址导致的闪烁bug

描述项目中封装好的 WebView 页面,在传入一个饿了么链接后(其他链接正常展示,如:https://www.baidu.com),无法正常展示并且开始疯狂闪烁,在 shouldOverrideUrlLoading 打印了下重定向的 url ,发现有两个 url 地址在循环跳转,也就是:问题链接 -> 链接1 -> 链接2 -> 链接1 -> …,使用微信和QQ都正常展示,问题排查范围可以锁定在WebView的使用上了。问题链接:https://s.click.ele.me/

2022-02-15 20:10:03 1725

原创 使用android.os.Build来查看设备的信息

使用 android.os.Build 来查看设备信息 //看一下设备信息 private fun printDeviceInfo() { val deviceInfo = arrayOf( "产品:${android.os.Build.PRODUCT}", "制造商:${android.os.Build.MANUFACTURER}", "型号:${android.os.Build.MODEL}",

2021-04-10 13:54:35 2063

原创 Charles抓包指南(Mac电脑 + Android手机)

背景Charles功能强大,不仅可以用来抓包,还可以进行断点、map、rewrite等操作, 适用多种场景。我之前虽然也也用过Charles进行过抓包,不过一年半载后就忘记怎么操作了,这几天去网上翻文章,重新捋流程,踩了一些坑,浪费一堆事件才重新掌握最基础的抓包操作(时间已溜走,只剩两行泪)。为了防止以后再忘,记录一下Charles抓http/https包的设置方式。工具Charles正版下载地址:https://www.charlesproxy.com/貌似收费,不过网上资源无限…抓Http包

2021-02-05 17:30:42 4426 4

原创 驾考——科一,三笔记

这里写自定义目录标题科一考试考点1. 高速公路2. 车辆故障停车3. 驾驶机动车不能有下列行为4. 交通肇事致一人以上重伤,并有如下行为者,构成***交通肇事罪***:5. 酒驾标准:6. 假一,吊二,撤三,醉五,逃终生7. 注销机动车驾驶证情况8. 驾驶证审验内容:9. 没有交通灯的交叉路口10. 危险驾驶罪11. 左右转向灯12. 不能停车情况13. 扣留处罚14. C1驾照还可驾驶车辆15. 高速车道16. 不超过30公里时速的14. 扣分标准15. 罚款标准其他科一考试考点1. 高速公路高

2020-07-06 12:13:12 896

原创 Android 7.0拍照FileProvider与xml文件对应关系(Failed to find configured root that contains)

从Android 7.0禁止了在应用外部公开file://URL,如果一项包含文件的URI的intent离开应用,则会抛出FileUriExposeException异常。要在应用间共享数据,在7.0及以上系统上要使用FileProviert类授予content:// URI临时访问权限。这一改动,主要影响了应用的拍照后照片存储路径的功能。要使用FileProviert,要在AndroidManifest.xml清单文件中注册内容提供者,并指向xml下的一个路径,这个路径与拍照时照片存储位置要保持一致,

2020-05-30 12:44:54 436

原创 gradle配置默认apk名字

app下gradle文件中,android节点内加入以下gradle代码: //默认apk名字 alpha beta release applicationVariants.all { variant -> variant.outputs.all { outputFileName = "文和友直播${variant.versionName}.apk" } }...

2020-05-30 11:18:28 942

原创 关于Design库迁移到AndroidX记录

关于Design库迁移到AndroidX记录结论design控件库以前地址:implementation ‘com.android.support:design:28.0.0’迁移到androidx地址:implementation ‘com.google.android.material:material:1.0.0’过程今天新建了一个项目,在引入design库的时候遇到了以下提示:大致意思是说28.0.0是design控件库在support的最后一个版本,需要推荐迁移到Andr

2020-05-22 10:57:08 4428 1

原创 FlexboxLayout全攻略(Google官方灵活实现流式布局控件)

一、FlexboxLayout是什么FlexboxLayout是Google开源的一个强大的控件,直接继承ViewGroup,效果类似于加强版的LinearLayout,但与LinearLayout并无关联。官方原话是:FlexboxLayout is a library project which brings the similar capabilities of CSS Flexib...

2020-04-14 17:02:18 6585 2

原创 自定义View之Paint和Canvas常用方法一览

文章结构自定义View之Paint和Canvas常用方法一览`Paint` 画笔????️Paint常用操作速查表线条形状设置线头形状 : setStrokeCap()设置拐角形状 : setStrokeJoin()设置尖角补充延长线最大值 : setStrokeMiter()setShader() :ShadersetColorFilter() :ColorFiltersetXfermode() :X...

2020-03-17 17:36:19 725

原创 javax.net.ssl.SSLHandshakeException: Chain validation failed 异常解决

javax.net.ssl.SSLHandshakeException: Chain validation failed 异常解决描述在项目中使用RxJava,OkHttp和Retrofit封装的网络请求,再测试时一切正常,但修改为https的线上正式服务器后就报了异常:javax.net.ssl.SSLHandshakeException: Chain validation failed...

2020-01-07 17:02:10 23156 1

原创 NestedScrollView中嵌套RecyclerView发生切换后自动滑动到底部问题

文章目录描述解决描述再一次app的开发中,主Activity是由 Activity + 四个Fragment来组成的,首页Fragment用的是NestedScrollView嵌套其他View + RecyclerView,当由首页Fragment切换到其他Fragment,然后再切换回来之后,在华为手机上会出现首页Fragment自动滑动到底部的问题。解决1.在NestedScrol...

2019-12-03 11:46:29 2697 1

原创 Android Studio项目中文件错乱问题

文章目录问题描述解决方法问题描述今天打开Android Studio,发现项目中一些文件都变得错乱了,就像这样:左侧图片是在文件夹中使用NotePad++打开的,右侧是Android Studio中相同的文件,可见文件发生了错乱。既然工程文件没问题,那么就一定是Android Studio的缓存问题了。解决方法清理Android Studio缓存:File -> Inva...

2019-11-22 10:44:23 3488

原创 ConstraintLayout控件使用全攻略

ConstraintLayout控件使用浅析标签(空格分隔): Android文章目录ConstraintLayout控件使用浅析介绍位置约束**1.相对位置****2.强制约束****3.基线对齐****4.圆心定位****5.百分比约束****6.Chains(链)****7.指定控件宽高百分比大小****8.goneMargin(隐藏边距)****9.指定宽高比**辅助类Group群组...

2019-11-12 16:27:27 1794 1

转载 Dialog居中显示

最新使用Dialog时,发现在以下低版本系统中会出现Dialog弹窗在左上角显示的情况,搜索了一下,发现了这个方法,记录一下。 //dialog 居中显示 Window window = dialog.getWindow(); if (dialog != null && window != null) { WindowManager.LayoutParams attr = ...

2019-08-29 10:17:06 2584

原创 在Android Studio下如何引用*.jar、*.aar和.so文件

引用.jar文件在新建项目时,Android Studio已经默认支持jar文件的引用了,因为有了如下这句话: implementation fileTree(dir: 'libs', include: ['*.jar'])所以要引用.jar文件,只需将jar包复制到libs下,然后sync一下gradle文件就好。或者,直接在jar文件上 鼠标右击 -> add As Liba...

2019-05-17 12:23:44 2017 2

原创 流式布局标准实现:FlexboxLayout使用指南

FlexboxLayout是什么FlexboxLayout是Google开源的一个强大的控件,直接继承ViewGroup,效果类似于加强版的LinearLayout,但与LinearLayout并无关联。官方原话是:FlexboxLayout is a library project which brings the similar capabilities of CSS Flexible...

2019-05-15 15:27:22 19096 2

原创 制定当前学习目标与学习方法

title: ‘制定当前学习目标与学习方法’date: 2019-04-22 09:39:23tags: Androidcategories: Android前言最近很迷茫,早晨到公司打开电脑之后都不知道要做些什么,在没有公司任务的时候,甚至不知道应该去学一些什么,感觉技术已经达到了瓶颈。在工作闲暇之余,先是想要学习JetPack,于是参考了郭神的开源项目:酷派天气学习了JetP...

2019-05-07 09:11:12 935

原创 Mac上使用Hexo搭建个人博客记录

Mac上通过Hexo搭建个人博客记录引早就想搭建自己的博客来记录点滴了,之前学习的过程中,笔记有记在有道云笔记上的,有直接用txt文档来记录的,还有写在作业部落的。现在整理起来真是无从下手。之前也用过CSDN和微信公众号,但CSDN是在有些丑,微信公众号编辑起来又太麻烦了,愁…有幸在Github上逛的时候,打开了JingBin大神的博客,这样清爽简洁的风格一下子吸引了我,碰巧在他的博客中还...

2019-05-06 14:09:24 748

原创 今日头条适配方案代码

今日头条适配方案代码 /** * 今日头条适配方案 最终版 适配比例 以宽为纬度,360dp来适配 */ private static float sNoncompatDensity; private static float sNoncompatScaledDensity; private static void setCustomDensity(...

2019-04-09 13:49:49 932

原创 JVM、Dalvik和ART的区别

JVM、Dalvik和ART的区别总的来说传统的Java虚拟机是JVM,后来Google自己又专门为Android平台设计了Java虚拟机,那就是Dalvik和ART,而ART又是对Dalvik的全面升级。现在问题集中在了Dalvik与ART的身上了,这两者都是Android平台上虚拟机,Android应用程序使用的是后缀名为.apk的压缩文件,我们首先来分析一下Apk文件。Apk文件主要包括...

2019-03-14 16:59:46 736

Brotli网络压缩Android支持

用于支持Android平台Brotli压缩实现,达到优化网络请求的目的。 同时将Brotli压缩逻辑封装成Okhttp的拦截器,使用时只需将该拦截器添加到项目中即可。

2022-08-03

apk反编译工具.zip

windows版apk反编译工具下载,截止到2021.01.11时最新版本,包括apktool.jar,apktool.bat,dex2jar,jd-GUI

2021-01-11

apk反编译必备工具包(macOS平台)

apk文件反编译必备工具包,包括反编译apk的apktool,将dex转jar文件的dex2jar,以及查看jar源码的gui工具

2020-12-29

最新maxOS平台反编译工具apktool v2.5.0

https://ibotpeaches.github.io/Apktool/install/ 最新的maxOS平台反编译工具apktool v2.5.0

2020-12-29

AndroidOpenGLDemo.zip

OpenGL ES 2.0开发Demo源码,包括图形绘制、图片处理(黑白、模糊、色调调整等)、图形变换、相机美颜、压缩纹理动画、FBO使用、EGL后台处理、3DOBJ模型、OBJ+MTL模型加载、VR效果、颜色混合和光照等都有代码实现

2020-01-15

空空如也

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

TA关注的人

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