自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(42)
  • 收藏
  • 关注

原创 Android 中高级面试题:Activity是如何实现LifecycleOwner的?_activity 获取lifecycleowner

通过源码分析Activity对于LifecycleOwner的实现后,我们得到以下结论:1、Activity不直接调用HandleLifecycleEvent进行生命周期的分发,而是通过ReportFragment实现。2、ReportFragment的注入和过程全程无侵,值得我们借鉴和学习。3、同一个Activity,其LifecycleOwner与Fragment的生命周期回调实际并不一致,需要特别注意。

2025-01-20 10:48:54 653

原创 2024想跳槽大厂的你这些会吗?(java基础,数据结构,网络,Android相关等等)

内部类可直接访问外部类的属性Java中内部类主要分为成员内部类、局部内部类(嵌套在方法和作用域内)、匿名内部类(没构造方法)、静态内部类(static修饰的类,不能使用任何外围类的非static成员变量和方法, 不依赖外围类)

2025-01-20 09:16:21 969

原创 Netflix:如何打造开放协作的实时 ETL 平台?

Elliot 之前有一个需求是在 Stream Processing 的过程中,比如从不同的 Topic 中去读取数据,出现问题的情况下可能需要在 Kafka 中操作,也可能需要在数据仓库中操作,面对该问题,其需求是在不改动代码的情况下切换不同的 Source,而目前平台提供的UI很方便地完成该需求。另外数据每天都在增加,保证实时更新的数据的一致性比较困难,这本质上是分布式微服务系统的特点导致,不同的微服务选择使用的数据库可能不同,这给数据一致性的保证又增加了一定的复杂度。

2025-01-18 09:46:32 534

原创 Nestjs联合Typeorm操作Mysql数据库_nestjs typeorm where like

【代码】Nestjs联合Typeorm操作Mysql数据库_nestjs typeorm where like。

2025-01-18 09:44:30 372

原创 【带你吃透C++】模板详解

class 类模板名//类内成员声明举例:template//普通类:类名就是类型;//类模板: 类名不是类型,类型是Stackpublic:,_top(0){}~Stack()// 类里面声明,类外面定义private:T* _a;int _top;//类外面定义template//类模板中的成员函数若是放在类外定义时,需要加模板参数列表//…模板不支持把声明写到.h ,定义写到.cpp这种声明和定义分开的方式,会报链接错误 ,原因我们在。

2025-01-14 17:49:41 961

原创 【嵌入式系统】DMA工作原理与常用函数解析_dma函数

首先配置DMA_CCR。由于DMA控制器一次只能开启一个通道,因此若同一时间有多个来自不同通道的外设进行DMA请求,就需要通过通道优先级来使能高优先级通道(当优先级相同时,通道标号小的优先使能)。例如图1所示,APB2上挂载的某个外设发起DMA请求,当DMA由CPU使能后开启相应的DMA通道,于是外设通过DMA通道、总线矩阵直接进行了对内存的读或写操作。大容量STM32 MCU有两个DMA控制器,共12个通道(DMA1有7个通道,DMA2有5个通道),通道的基本属性如图2所示。图2 DMA通道属性。

2025-01-14 17:42:19 473

原创 Linux常用的指令(38条基本)_linux下常见指令

2、常用指令。

2025-01-11 23:42:41 356

原创 Linux安装Mysql(按步骤,一次成功)

说明:centos7默认不支持mysql(原因大家都懂),默认支持的是mariadb,mariadb是mysql一个开源分支。所以安装mysql前一定要卸载mariadb,否则安装mysql会出现冲突。yum remove 第一步查找出来的所有名称(evenyone)说明:若想安装新的mysql,必须先卸载干净旧的mysql。输入grep的mysqld.log的最后面的字符即是密码。验证mysql是否卸载干净。

2025-01-11 23:39:00 750

原创 Linux基础命令

四、Linux内核及发行版。

2025-01-11 23:35:19 196

原创 Android 面试必备 - http 与 https 协议

服务器收到客户端发来的数据之后,通过服务器自己的私钥进行解密客户端发来的数据(客户端的私钥),(这样双方都拥有私钥)再进行hash检验,如果结果一致,则将客户端发来的字符串(第3个步骤发送过来的字符串)通过加密发送给客户端。客户端收到服务器发来的证书(即公钥),开始验证证书的合法性,如果证书信任,则生成一串随机的字符串数字作为私钥,并将私钥(密文)用证书(服务器的公钥)进行加密,发送给服务器。客户端解密,如果一致的话,就使用之前客户端随机生成的字符串进行对称加密算法进行加密。HTTP1.0默认非持续性;

2025-01-10 09:00:35 252

原创 android 解析本地中国城市列表的辅助类

【代码】android 解析本地中国城市列表的辅助类。

2025-01-10 08:56:55 191

原创 Android 英语考试系统APP——效果图展示

基本所有的功能就是这些了,还有一些小的但不和很核心的功能就不展示了。,如有侵权,请联系删除。阅读模块——仔细阅读。

2025-01-10 08:53:15 298

原创 Dubbo进阶(七)—— Dubbo服务管理和监管

【代码】Dubbo进阶(七)—— Dubbo服务管理和监管。

2024-12-20 17:41:40 525

原创 Docker系列教程03-Docker私有仓库搭建(registry)

1、下载docker hub官方镜像。3、上传镜像到私有仓库。

2024-12-20 17:37:59 276

原创 docker快速安装Es和kibana_docker安装es和kibana

在工作过程中,经常需要测试环境搭建Es环境,本文基于Es V8.12.2来演示如何快速搭建单节点Es和kibana。我们可以用docker compose管理es和kibana。kibana就不挂载了,其配置文件。,也可以挂载出来做一些配置。,按需拉取镜像即可。

2024-12-20 17:34:18 291

原创 docker安装以及问题解决

windows镜像系统和docker镜像的区别docker的核心概念docker主机(Host):安装了Docker程序的机器(Docker直接安装在操作系统之上);docker客户端(Client):连接docker主机进行操作;docker仓库(Registry):用来保存各种打包好的软件镜像;docker镜像(Images):软件打包好的镜像;放在docker仓库中;docker容器(Container):镜像启动后的实例称为一个容器;容器是独立运行的一个或一组应用。

2024-12-20 17:26:50 604

原创 Docker 从入门到实践系列一 - 什么是Docker

虚拟机和容器虚拟机和容器都属于虚拟化技术。虚拟机是在一套硬件上,虚拟出一个完整的操作系统,在该系统上再运行所需的应用进程。容器不是虚拟出一个完整的操作系统,而是对进程的隔离。下面的图片比较了 Docker 和虚拟机的不同之处,可见容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而虚拟机则是在硬件层面实现。

2024-12-20 17:19:22 662

原创 Android 安卓DataBinding(一)·基础

DataBinding 是谷歌官方发布的一个框架,其作用是实现数据绑定(Data binding),同时,也是因为有它,可以在安卓(Android)上实现MVVM架构。这样布局这边就算完事了,但是呢PeopleBean少了点什么呢,没错,就是他的信息,现在PeopleBean中所有的信息都还是null呢!但是,这样有时候避免不了import导入不同路径而相同的类名,此时呢,就要在import标签中用到alias属性了,就比如以下情况。在你的布局中找到最外层的布局,将光标放在如图位置。

2024-12-20 02:22:32 863

原创 Android 圆形头像的两种实现方式

/在缓存中取出bitmap//拿到Drawable//获取drawable的宽和高= null)//创建bitmap//创建画布//按照bitmap的宽高,以及view的宽高,计算缩放比例;因为设置的src宽高比例可能和imageview的宽高比例不同,这里我们不希望图片失真;// 如果图片的宽或者高与view的宽高不匹配,计算出需要缩放的比例;缩放后的图片的宽高,一定要大于我们view的宽高;所以我们这里取大值;} else。

2024-12-20 02:18:51 897

原创 Android 卡顿,ANR分析

所以我们可以自定义Printer对象,让Handler的日志都通过我们自定义的Printer进行打印,然后收集日志信息,匹配Dispatching to和Finished to字段,如果在设定的某个时间内只有Dispatching to字段而没有Finished to字段,那么就说明发生了卡顿。所以我们需要高频率的收集日志信息,高频率的收集对后端有一定的压力,而我们高频收集的信息有很大一部分也是重复的,所以就需要日志去重操作。发生ANR到弹框在不同的组件之间时间定义是不一样的,按键是5秒。

2024-12-20 02:15:10 224

原创 Android ViewPager+轮播图

/“10000”表示轮播图的第一图片开始延迟时间后轮播。// 给iv设置数据。

2024-12-20 02:07:43 464

原创 Android Studio系列-Activity单元测试

代码解释:继承ActivityUnitTestCase类创建一个针对具体Activity的单元测试类,这里只是针对LoginActiivty,其他Activity的测试也是类似的。里面创建了两个测试方法,testLoginButton_labelTest测试登录按钮的文本是否跟期望的值一致,testLoginActivityMoveToIndex方法测试点击按钮之后的跳转。// 这一句是判断你在跳转后有没调finish()// 去判断是否为空,如果为空就说明跳转失败。// 测试Button的点击事件。

2024-12-20 02:04:01 345

原创 Android SDK对应版本号

Android 的开发于 2003 年由 Android, Inc.开始,该公司于 2005 年被 Google 收购。Android 1.0 的首次公开发布发生在 2008 年 10 月 T-Mobile G1(又名 HTC Dream)的发布。Android 1.0 和 1.1 并未以特定代号发布。代号“Astro Boy”和“Bender”在一些早期 1.0 之前的里程碑版本中被内部标记,并且从未用作操作系统 1.0 和 1.1 版本的实际代号。

2024-12-20 02:00:20 912

原创 Android R WindowManagerService模块(4) Window的定位过程

prepareSurfaces()方法将会对每个WindowContainer的Surface做最后的准备工作,各个Surface位置、大小、是否显示在屏幕上等,都将通过这个方法来进行设置,并在关闭事务后,提交给SurfaceFlinger进行显示。相比前面几个函数接口都是针对WindowState进行遍历,该方法则针对所有的WindowContainer进行遍历,遍历方式是由父容器→ 子容器进行,遍历路径如下图:[外链图片转存中…(img-rUCSQ82Y-1734630989220)]

2024-12-20 01:56:39 871

原创 Android OkHttp完全解析 是时候来了解OkHttp了

看到这,你可能会奇怪,竟然还能拿到返回的inputStream,看到这个最起码能意识到一点,这里支持大文件下载,有inputStream我们就可以通过IO的方式写文件。不过也说明一个问题,这个onResponse执行的线程并不是UI线程。的确是的,如果你希望操作控件,还是需要使用handler等,例如:@Override@Override});

2024-12-20 01:52:58 811

原创 Android MVVM框架搭建(五)Navigation + Fragment + BottomNavigationView

这里面有一个图标ic_splash_logo.png,我这里贴一下,不过你最好到我的源码去找,这样不会有水印,而且图片格式也是对的。针对于启动页我特别弄了一个主题样式,在themes.xml下增加如下代码样式:然后我们修改AndroidManifest.xml中的代码,因为之前的启动Activity是LoginActivity,需要改一下。如下图所示:下面我们增加一个动画的帮助工具类,在utils包下新建一个EasyAnimation类,里面的代码如下:/**开始眨眼动画。

2024-12-20 01:49:15 886

原创 Android logd日志原理___android_log_buf_write

一句话总结就是Log.i()最终是通过调用write()向logd守护进程的socket(“/dev/socket/logdw”)端写入需要打印的日志信息。这就意味着某个buffer中的log行数越多,或者log占用内存越大,则需要裁剪的日志行数越多。每次裁剪日志行数等于总行数的10%,并且需要大于等于4行,且不超过256行。sizes代表对的是当前buffer的log总大小。通过调用pthread_create创建完线程,在新创建的线程中执行threadStart()过程。

2024-12-20 01:45:32 610

原创 Kubernetes集群部署Nginx服务_kubesphere nginx

k8s默认使用NodePort对外映射端口为30000-50000如需要映射其他端口需要修改配置文件/opt/kubernetes/cfg/kube-apiserver,修改端口范围。PS:使用NodePort启用端口对外提供服务,如果对外映射多个端口需要在port参数下加参数name定义名称,单个端口无需设置参数name。本次使用了本机挂载hostPath挂载配置文件及根目录,生产环境最好使用pvc挂载。启动的Nginx使用默认的配置文件和默认的网站根目录,需要使用volume挂载。

2024-12-17 21:05:06 417

原创 Kubernetes之配置与自定义DNS服务_kubernetes resolv

1、请求首先发送到kube-dns缓存层。

2024-12-17 21:01:25 638

原创 Kotlin可能带来的一个深坑,我先收藏为敬_kotlin耦合度高吗

是ARouter是阿里巴巴开源的Android平台中对页面、服务提供路由功能的中间件,提倡的是简单且够用。主要用作组件化通信集中式的URL管理:谈到集中式的管理,总是比较蛋疼,多人协同开发的时候,大家都去AndroidManifest.xml中定义各种IntentFilter,使用隐式Intent,最终发现AndroidManifest.xml中充斥着各种Schame,各种Path,需要经常解决Path重叠覆盖、过多的Activity被导出,引发安全风险等问题。

2024-12-17 20:57:41 905

原创 Kotlin从头开始(一):lambda表达式和高阶函数 一

fun getString(input: String) : String {}函数,一般包括两个部分,一部分是函数的声明,另一个部分是函数的实现。上述写的getString方法中,fun getString(input: String) : String是函数的声明,括号中的就是函数的实现。那么Kotlin中, 怎么写一个函数的声明呢?var getString : (String) -> String是不是看的一头雾水,如果写出对应的Java函数的话,应该是如下的样子:public String get

2024-12-17 20:53:59 370

原创 k8s集群部署上线web静态网站

需要将/usr/local/apache/htdocs目录当成nfs的共享目录挂载到其他节点上。6)进入容器的/usr/local/apache2/htdocs目录,查看文件是否拷贝成功,并且将原本的index,html文件移走或者删除 否则访问的就是此文件下的内容。4)创建目录/usr/local/apache2/htdocs ,然后上传一个静态资源包,我这里上传一个飞机大战的小游戏。5)将以上文件全部拷贝到 3)步骤的容器里面的/usr/local/apache2/htdocs目录下。

2024-12-17 20:50:14 296

原创 Android 面试黑洞——当我按下 Home 键再切回来,会发生什么?

很多 Android 工程师在投简历找工作之前,会去补习一下 Activity 的启动模式(launchMode),因为面试的时候经常会考。但真正把它搞懂的人是很少的——包括不少拿它做面试题的面试官。就像我在视频标题里说的,当用户在使用 App 的时候按下了 Home 键,然后再切回来,或者在多个 App 之间切来切去,App 的内容会不会改变、会怎么改变、要怎么让它按你的需求去变或不变,这些问题都需要你对 launchMode 有足够的了解。

2024-12-17 04:06:39 696

原创 Android 面试主题集合整理

内部类可直接访问外部类的属性Java 中内部类主要分为成员内部类、局部内部类(嵌套在方法和作用域内)、匿名 内部类(没构造方法)、静态内部类(static 修饰的类,不能使用任何外围类的 非 static 成员变量和方法, 不依赖外围类)

2024-12-17 04:02:57 607

原创 Android 自定义listview滑到顶部标题固定 轻松实现360软件详情页效果

【代码】Android 自定义listview滑到顶部标题固定 轻松实现360软件详情页效果。

2024-12-17 03:59:16 867

原创 Android 短信加密,联系人字母侧边栏定位

public void deleteMsgByThreadId(int threadId) { // NOTE_COL_ID改为NOTE_COL_THREAD_ID。洗衣机坏了,有时候按一会儿就可以启动了,今天怎么弄都没效果,大概是启动电容的问题吧,悲剧。洗衣机坏了,有时候按一会儿就可以启动了,今天怎么弄都没效果,大概是启动电容的问题吧,悲剧。下午去看公司部门间的球赛,我们队再胜一局,维持不败战绩,作为拉拉队员还是很开心的。下午去看公司部门间的球赛,我们队再胜一局,维持不败战绩,作为拉拉队员还是很开心的。

2024-12-17 03:55:35 537

原创 Android 相关源码分析

Glide 把这些图片资源的类型抽象为 model,由对应的 ModelLoader 负责加载load 会返回 ,它的泛型 表示交给目标的编码类型,如 Drawable。每个 都会持有当前 以便进行资源请求图片加载库所加载图片的目标一般是 ImageView,但也可能是其他自定义 View,甚至没有明确目标。Glide 把目标都抽象成 ,所以即使是 ImageView 也要被封装成 into 不但负责设置 Target,还负责构建并开始 Target 的图片请求、清理 Target 的资源并重置请求、

2024-12-17 03:51:52 792

原创 Android 添加系统服务的方法

系统服务是Android中非常重要的一部分, 像ActivityManagerService, PackageManagerService, WindowManagerService, 这些系统服务都是Framework层的关键服务, 本篇文章主要讲一下如何基于Android源码添加一个系统服务的完整流程, 除了添加基本系统服务, 其中还包含添加JNI部分代码和App通过AIDL调用的演示Demo, 调用包含App调用服务端, 也包含服务端回调App, 也就是完成一个简单的双向通信.

2024-12-17 03:48:11 474

原创 Android 架构MVC MVP MVVM+实例

MVP的优点1.复杂的逻辑处理放在Presenter进行处理,减少了Activity的臃肿。2.解耦。Model层与View层完全分离,修改V层不会影响M层,降低了耦合性。3.可以将一个Presenter用于多个视图,而不需要改变Presenter的逻辑。4.Presenter层与View层的交互是通过接口来进行的,便于单元测试。MVP的缺点维护困难。

2024-12-17 03:44:28 585

原创 Android 抽屉侧栏的实现(NavitionView + DrawerLayout + Toolbar)

NavigationView 必须是Drawerlayout的子控件,可以通过app:headerLayout=”@layout/headerlayout”为NavigationView添加相应的头布局。使用toolbar代替actionbar,可以在style.xml中把主题改为NoActionBar。通过setSupportActionBar(mToolbar)设置toolbar为actionbar。或者使用代码getActionBar().hile()隐藏actionbar。

2024-12-17 03:40:47 629 1

空空如也

空空如也

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

TA关注的人

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