自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

XAVI的博客

Android小学生

  • 博客(46)
  • 资源 (3)
  • 收藏
  • 关注

转载 在Ubantu系统上使用Docker搭建LDAP

前提是ubantu系统上已经安装好docker环境。

2022-07-22 18:52:38 410

转载 Ubantu 20.04.1 LTS 虚拟机 安装docker

ubantu 虚拟机安装 docker 环境

2022-07-22 18:38:36 427

原创 sendBroadCast 时 AMS 的checkBroadcastFromSystem方法

每日一记 sendBroadCast 时 AMS 的checkBroadcastFromSystem方法(Android版本11.0.0)private void checkBroadcastFromSystem(Intent intent, ProcessRecord callerApp, String callerPackage, int callingUid, boolean isProtectedBroadcast, List receivers) { /

2021-07-02 18:52:55 640

原创 sendBroadCast 时经过 AMS 的 verifyBroadcastLocked方法

每日一记 sendBroadCast 时经过 AMS 的 verifyBroadcastLocked方法(Android版本11.0.0)public final int broadcastIntentWithFeature(IApplicationThread caller, String callingFeatureId, Intent intent, String resolvedType, IIntentReceiver resultTo, int

2021-07-02 10:46:03 256

原创 framework 判断广播aciton isProtected

每日一记 framework 判断广播的aciton 是否 isProtected** @Override public boolean isProtectedBroadcast(String actionName) { // allow instant applications synchronized (mProtectedBroadcasts) { if (mProtectedBroadcasts.contains(actionName

2021-07-01 17:05:50 140

原创 记录源码 android.util.Singleton

android 源码中 用来实现单例的 工具类package android.util;import android.compat.annotation.UnsupportedAppUsage;/** * Singleton helper class for lazily initialization. * * Modeled after frameworks/base/include/utils/Singleton.h * * @hide */public abstract cla

2021-06-30 16:39:02 185

原创 Android measureSpec 怎么通过位运算 把两个值 放到一个int变量中

都知道 measureSpec 分为 mode 和sizemode 占2位,size占30位,组成一个 32位 的int 类型两个值 放到一个int 变量中的愿意是 view 会频繁测量 ,这样可以节省 内存空间mode 有三种/** * Measure specification mode: The parent has not imposed any constraint * on the child. It can be whatever size it w

2020-10-29 22:38:14 320

原创 使用 adb命令 写出抓取log 的小工具

ADB简介:ADB,即 Android Debug Bridge,它是 Android 开发/测试人员不可替代的强大工具,也是 Android 设备玩家的好玩具。安卓调试桥 (Android Debug Bridge, adb),是一种可以用来操作手机设备或模拟器的命令行工具。它存在于 sdk/platform-tools 目录下。虽然现在 Android Studio 已经将大部分 ADB 命令以图形化的形式实现了,但是了解一下还是有必要的。是Android 开发必备小技能Android studi

2020-10-22 19:29:13 1641

原创 java 怎么使用 设计模式对业务进行解耦(一)

最近非常头疼 ,到新公司碰到了 非常没有经验的产品,感觉产品经理和说相声一样,门槛很低,进了门才发现 楼梯在门里面,一层比一层难爬我是做Android开发的,目前还是使用java 作为开发语言,所以以java为例,归纳一下我的java 使用经验移动端的社交分享功能大家应该都用过,有一些公司早就 提供了免费的社交分享集成SDK,比如友盟,shareSdk为什么 已经有了 集成好的sdk 还会头疼呢,因为产品在 一个简单的分享功能上强行制造了 非常多逻辑分支,思维导图如下(还是我 为了抽象代码自己画的,产

2020-07-29 17:31:16 3394 1

原创 Windows下Jmeter压测端口占用问题

转载 李亚飞 大佬的文章:https://www.lyafei.com/前言今天测试和我分别压测了HTTP接口,他使用的是测试专用的8核16G压测服务器,所装系统是Windows,我使用的是开发机2核4G,运行环境是 CentOS,走内网压测不存在网络瓶颈,使用相同的测试计划,我压测出来的结果并发数是他的3倍,并且他的测试结果伴有1.7%错误,查看错误发现并不是接口返回,而是Jmeter报出来的。查了一波资料,发现 Windows 环境下的端口循环回收需要消耗2~4分钟。由此猜测可能是由于 Wind.

2020-07-15 20:40:00 5344

转载 Piwik在代理后端获取真实IP

转载 李亚飞 大佬的文章:https://www.lyafei.com/运维前几天把piwik切换到了Nginx后端,并且服务器加了HA 代理分发,piwik主机仅负责收集数据,包括数据库读写分离,但今天看了下数据发现所有来源IP都是代理IP,因为要对接大数据组,所以抓取丢给kafka的用户ip也都是代理ip,被大数据组骚扰了两天,今天就排查了下问题。首先是服务器location / { proxy_pass http://xxxx_piwik; proxy_set_.

2020-07-09 11:29:57 4866

转载 Konga管理GUI操作

转载 李亚飞 大佬的文章:https://www.lyafei.com/Konga管理GUI简介安装之前简单介绍安装了 Konga,并且进行了账号注册和设置连接,这篇就详细讲述下 Konga 的一些页面信息和使用操作。附上:Kong 官网:https://konghq.com/Kong GitHub地址:https://github.com/kong/kongkonga GitHub地址:https://github.com/pantsel/kongaKonga操作Dashboard.

2020-07-08 10:56:32 5635 1

转载 Kong网关工作原理及核心概念

转载 李亚飞 大佬的文章:https://www.lyafei.com/Kong网关简介安装之前简单介绍安装了 Kong,这篇就是深入 Kong 详细讲述下它的一些工作原理、核心概念。附上:Kong 官网:https://konghq.com/Kong GitHub地址:https://github.com/kong/kongKong的工作原理Kong默认开放的端口接收客户端流量的端口,proxy 部分:8000 —— http 端口:8443 —— https 端口adm.

2020-07-08 10:32:56 9808 1

转载 Konga管理GUI简介安装

转载 李亚飞 大佬的文章:https://www.lyafei.com/Kong网关简介安装前文介绍了 Kong 以及如何安装,Kong 虽然很强大,但是在管理方式上比较单一只能通过 API 请求来管理,那么有没有一个GUI 界面的管理工具呢?这里就要说到 Kong 的管理 GUI Konga。Why Konga?当前 Kong 的社区版是没有 dashboard 的,但是付费的企业版是有带的,并且还有一些企业版才能使用的插件以及升级后的企业版插件。所以对于使用社区版的用户而言,排除自己去撸一个.

2020-07-08 10:24:59 6061

转载 Kong网关简介安装

转载 李亚飞 大佬的文章:https://www.lyafei.com/背景我们有批设备卖给了海外的服务商,老外请了第三方检测机构,检测设备与我们系统的安全性,结果找到了近 40+ 的安全漏洞,有很大一部分的安全漏洞提炼出来,其实可以统一解决掉,因为涉及服务和安卓组件太多,如果一个一个修改,不管是时间还是人力投入都很巨大,那快速并且改动最小的方法就是从网关上解决这些问题。网关是微服务中不可或缺的一部分,它承载了所有请求流量入口,参数验证拦截,用户权限验证等,但是除了 JAVA 的 spring c.

2020-07-08 10:15:45 5754

转载 超实用压力测试工具-ab工具

转载 李亚飞 大佬的文章:https://www.lyafei.com/前言在学习ab工具之前,我们需了解几个关于压力测试的概念 。吞吐率(Requests per second)概念:服务器并发处理能力的量化描述,单位是reqs/s,指的是某个并发用户数下单位时间内处理的请求数。某个并发用户数下单位时间内能处理的最大请求数,称之为最大吞吐率。计算公式:总请求数 / 处理完成这些请求数所花费的时间,即Request per second = Complete requests / Time.

2020-07-07 11:18:03 5422

转载 Kong网关插件使用

转载 李亚飞 大佬的文章:https://www.lyafei.com/授权验证在接口请求中权限验证是一个恒久不变的话题,Kong 自带了6种加密方式先创建一个 Basic Auth,直接确认即可此时页面访问 http://dev.lyafei.com:8000/dev 会弹出登录框,让你输入用户名密码,若取消则会返回{“message”:“Unauthorized”},若输入用户名和密码后确认会返回 {“message”:“Invalid authentication credential.

2020-07-06 10:50:14 5695

转载 谈Kong网关插件

转载 李亚飞 大佬的文章:https://www.lyafei.com/今天的一个重点就是要加强对 Kong API Gateway 网关的研究,对于 Kong 网关之前写过两篇文章,今天重点谈下 Kong 网关的插件支持能力。从上面图可以看到,Kong 网关是基于 OpenResty 应用服务器,OpenResty 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web.

2020-07-06 10:08:52 5940

转载 CentOS下php安装mcrypt扩展

转载 李亚飞 大佬的文章:https://www.lyafei.com/安装mcrypt先确认你的php和pecl版本[root@lyafei ~]# php -vPHP 7.2.26 (cli) (built: Dec 31 2019 17:01:19) ( NTS )Copyright (c) 1997-2018 The PHP GroupZend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies[root@lyafei .

2020-07-06 09:59:51 5290 1

转载 Kong插件开发向导

转载 李亚飞 大佬的文章:https://www.lyafei.com/简介前面洋洋洒洒写了那么多文章,Kong搭建、Konga搭建、Kong插件开发工具包、Lua算法实现等等,就为了这篇Kong插件开发铺垫,在进一步讨论之前,有必要再简要阐述下 Kong 是如何构建的,特别是它如何与 Nginx 集成,以及它与 Lua 脚本之间的关系。使用 lua-nginx-module 模块可以在 Nginx 中启用 Lua 脚本功能,Kong 与 OpenResty 一起发布,OpenResty 中已经包.

2020-07-04 10:29:18 5565

转载 Kafka consumer频繁reblance

转载 李亚飞 大佬的文章:https://www.lyafei.com/其实文章名可以叫 记一次线上 Kafka 问题排查,但觉得稀松平常,弄些术词显得硬核点,hhh,言归正传,线上一个 Go 服务是一组 Kafka 的消费者,在运行了很多天之后,Kafka 数据突然积压了,查看 Kafka 服务正常,查看 Go 服务也运行正常,进到 Go 服务容器内部查看日志,发现消费者的 Go 服务频繁 rebalance 并且大概率返回失败。因为我们所使用的 Kafka 分配的分区为3,所以 Go 服务 一个 .

2020-07-04 10:07:11 8238

转载 浅谈Laravel5框架的优化

浅谈Laravel5框架的优化转载 李亚飞 大佬的文章:https://www.lyafei.com/archives/14/前言Laravel是一个功能强大的框架,组件很多,代码也很庞大,它的易用方便是牺牲了性能的,即便如此它仍然是一个优秀的框架,性能一直是 Laravel 框架为人诟病的一个点,所以调优 Laravel 程序算是一个必学的技能。接下来分享一些开发的最佳实践,还有调优技巧,大家有别的建议也欢迎留言讨论。1. 配置信息缓存使用以下 Artisan 自带命令,把 config

2020-07-03 15:58:13 4935

转载 Kong的Url重写(rewrite)自定义插件

转载 李亚飞 大佬的文章:https://www.lyafei.com/archives/299/Kong的Url重写(rewrite)自定义插件昨天写了个地址重写的 Kong 自定义插件,跟大家分享下,话不多说,上代码schema.luareturn { no_consumer = true, fields = { regex = { type = "string" }, replacement = { type = "string" }, .

2020-07-03 15:40:44 7328 1

转载 Kong的日志记录(log)自定义插件

Kong的日志记录(log)自定义插件前天写了一个日志记录的插件,是将接口请求和返回的一些相关内容,以指定的数据格式写入到文件,方便大数据使用 Filebeat 读取,并显示在 ELK,话不多说上代码。schema.lualocal typedefs = require "kong.db.schema.typedefs"return { name = "file-log", fields = { { protocols = typedefs.protocols_http },

2020-07-03 11:55:32 8402 1

原创 AndroidX 使用 Activity Result API 替代 startActivityForResult()

AndroidX 使用 Activity Result API 替代 startActivityForResult()启动另一个 Activity(无论是您应用中的 Activity 还是其他应用中的 Activity)不一定是单向操作。您也可以启动另一个 Activity 并接收返回的结果。例如,您的应用可启动相机应用并接收拍摄的照片作为结果。或者,您可以启动“通讯录”应用以便用户选择联系人,并且您将接收联系人详细信息作为结果。虽然所有 API 级别的 Activity 类均提供底层 startAct

2020-06-30 17:48:44 6831

原创 Android Room 数据库迁移,或者说升级

迁移 Room 数据库当你在应用中添加和更改功能时,需要修改实体类以反映这些更改。当用户更新到您应用的最新版本时,你不想让他们丢失所有现有数据,尤其是在您无法从远程服务器恢复数据时。借助 Room 持久性库,您可以编写 Migration 类,以这种方式保留用户数据。每个 Migration 类均指定一个 startVersion 和 endVersion。在运行时,Room 会运行每个 Migration 类的 migrate() 方法,以按照正确的顺序将数据库迁移到更高版本。...

2020-05-28 11:34:38 6812 2

原创 修改Android Studio配置 ,处理Android Studio 占用内存过大

配置 Android StudioAndroid Studio 提供诸多向导和模板,可用于验证系统要求(例如 Java 开发工具包 (JDK) 和可用 RAM)和配置默认设置(例如经过优化的默认 Android Virtual Device (AVD) 模拟和更新后的系统映像)。本文档介绍了您可能需要使用的其他配置设置,以便您自定义对 Android Studio 的使用方式。您可以通过 Android Studio 的 Help 菜单访问下面这两个配置文件:studio.vmoptions:自定义

2020-05-19 14:24:27 14782

转载 android studio 使用 Memory Profiler 查看 Java 堆和内存分配(一)

转载 https://developer.android.google.cn/studio/profile/memory-profiler#profiler-memory-leak-detection?utm_source=androidweekly.io&utm_medium=website使用 Memory Profiler 查看 Java 堆和内存分配Memory Profile...

2020-04-27 19:57:00 7590

原创 Android开发利器之Data Binding Compiler V2,databind和livedata的结合 (2)

Data Binding Compiler V2我们要说的主角就是,Data Binding Compiler V2 。什么是Data Binding Compiler呢?Data Binding Compiler是Data Binding的编译器,它的主要作用就是编译出我们在使用Data Binding时需要使用的辅助代码。例如:ActivityxxxBinding格式的类文件就是由Dat...

2020-04-20 17:01:00 5298 2

原创 Android开发利器之Data Binding Compiler V2,databind和livedata的结合 (1)

前言: Android常用的架构有:MVC、MVP、MVVM,而MVVM是唯一一个官方提供支持组件的架构,我们可以通过Android lifecycle系列组件、DataBinding或者通过组合两者的形式来打造一个强大的MVVM架构。而DataBinding Compiler V2就是为了解决目前的MVVM架构中的缺点而诞生的。Data Binding和LiveData的兼容问题在DataB...

2020-04-20 16:55:23 5049

原创 Android 数据结构 SafeIterableMap

SafeIterableMap是个链表、假Map,它不是线程安全的这个类支持升序、降序以及支持迭代期间添的式迭代器它在androidx.arch.core.internal包,估计很少直接用到Entry从SafeIterableMap开始看起:public class SafeIterableMap<K, V> implements Iterable<Map.Entry...

2020-04-18 11:23:45 5195

原创 android room 返回rxjava2 Flowable类型数据的时候,应该注意的点

android.arch.persistence.room:runtime:1.1.1 版本room 用gradle 插件生成的 impl 类,根据注解 生成具体的 实现方法return RxRoom.createFlowable返回的 Flowable 已经调用了 observerOn操作符 ,所以再调用 subscribeOn 操作符没有用了不能返回 observable 类型的...

2020-04-17 16:21:02 6060

原创 JAVA8 之StringJoiner

JAVA8之StringJoiner作用:运用了StringBuilder的一个拼接字符串的封装处理示例:StringJoiner sj = new StringJoiner("-", "[", "]");sj.add("name").add("kevin").add("cool");String result = sj.toString();输出:[name-kevin-cool]...

2020-04-17 09:58:28 4879

转载 Android中 tools:replace 的使用

转载:http://bcoder.com/java/use-tools-replace-in-android当我们的项目的某些属性和第三方库中的属性有冲突时或者我们想修改第三方库中某些资源的属性时,我们就需要使用tools:replace来处理。有冲突的情况比如第三方库中也定义了application@icon, application@label属性,则会与你的项目发生冲突,编译时报如...

2020-04-16 10:11:01 13260

原创 Java 使用静态工厂方法替代构造方法

1. 考虑使用静态工厂方法替代构造方法一个类允许客户端获取其实例的传统方式是提供一个公共构造方法。 其实还有另一种技术应该成为每个程序员工具箱的一部分。 一个类可以提供一个公共静态工厂方法,它只是一个返回类实例的静态方法。 下面是一个 Boolean 简单的例子(boolean 基本类型的包装类)。 此方法将 boolean 基本类型转换为 Boolean 对象引用:public static...

2020-04-13 09:35:06 5028

原创 Java 使用私有构造方法或枚类实现 Singleton 属性

3. 使用私有构造方法或枚类实现 Singleton 属性单例是一个仅实例化一次的类。单例对象通常表示无状态对象,如函数 (条目 24) 或一个本质上唯一的系统组件。让一个类成为单例会使测试它的客户变得困难,因为除非实现一个作为它类型的接口,否则不可能用一个模拟实现替代单例。有两种常见的方法来实现单例。两者都基于保持构造方法私有和导出公共静态成员以提供对唯一实例的访问。在第一种方法中,成员是 ...

2020-04-12 20:50:48 5000 3

原创 Java 当构造方法参数过多时使用 builder 模式

2. 当构造方法参数过多时使用 builder 模式静态工厂和构造方法都有一个限制:它们不能很好地扩展到很多可选参数的情景。请考虑一个代表包装食品上的营养成分标签的例子。这些标签有几个必需的属性——每次建议的摄入量,每罐的份量和每份卡路里 ,以及超过 20 个可选的属性——总脂肪、饱和脂肪、反式脂肪、胆固醇、钠等等。大多数产品只有这些可选字段中的少数,且具有非零值。应该为这样的类编写什么样的构...

2020-04-11 10:48:01 5196 1

翻译 Android FlexboxLayout使用方式

官方demo 地址FlexboxLayout是一个Library,将CSS Flexible Box Layout Module的类似功能 引入了Android。安装将以下依赖项添加到build.gradle文件中:dependencies { implementation 'com.google.android:flexbox:2.0.1'}从1.1.0版开始,该库与And...

2020-04-07 10:18:49 5705

原创 Android Studio3.6.1设置Gradle Offline Mode的方法

Android Studio3.6.1设置Gradle Offline Mode的方法Android Studio 3.6正式版已经发布https://android-developers.googleblog.com/2020/02/android-studio-36.html增加了新功能的同时,对原有功能有一些调整。例如 3.5 我们可以这样设置Gradle的Offline:3.6 ...

2020-04-04 15:03:36 9517 1

原创 SurfaceView 和 TextureView 的区别与联系

android: View, SurfaceView, GLSurfaceView, TextureView 区别与联系区别与联系View: 显示视图,内置画布,提供了图形绘制函数、触屏事件、按键事件函数等,必须在UI主线程内更新画面,速度较慢;SurfaceView: 基于view视图进行拓展的视图类,更适合2D游戏的开发,是view的子类,使用了双缓冲机制,即:允许在子线程中更新...

2020-03-04 18:17:04 9851

车载 加油app 智慧加油项目

车载 加油app,Android 系统 车载app, 智慧加油项目

2020-07-06

oushang-market.zip

车载flutter 开发,应用市场app,使用flutter 技术开发,车载app 应用市场,一种 尝试

2020-07-06

PickView-sun.zip

DatePickerPopWin pickerPopWin = new DatePickerPopWin.Builder(MainActivity.this, new DatePickerPopWin.OnDatePickedListener() { @Override public void onDatePickCompleted(int year, int month, int day, String dateDesc) { Toast.makeText(MainActivity.this, dateDesc, Toast.LENGTH_SHORT).show(); } }).textConfirm("CONFIRM") //text of confirm button .textCancel("CANCEL") //text of cancel button .btnTextSize(16) // button text size .viewTextSize(25) // pick view text size .colorCancel(Color.parseColor("#999999")) //color of cancel button .colorConfirm(Color.parseColor("#009900"))//color of confirm button .minYear(1990) //min year in loop .maxYear(2550) // max year in loop .showDayMonthYear(true) // shows like dd mm yyyy (default is false) .dateChose("2013-11-11") // date chose when init popwindow .build();

2020-05-28

空空如也

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

TA关注的人

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