- 博客(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安装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
原创 Android 面试必备 - http 与 https 协议
服务器收到客户端发来的数据之后,通过服务器自己的私钥进行解密客户端发来的数据(客户端的私钥),(这样双方都拥有私钥)再进行hash检验,如果结果一致,则将客户端发来的字符串(第3个步骤发送过来的字符串)通过加密发送给客户端。客户端收到服务器发来的证书(即公钥),开始验证证书的合法性,如果证书信任,则生成一串随机的字符串数字作为私钥,并将私钥(密文)用证书(服务器的公钥)进行加密,发送给服务器。客户端解密,如果一致的话,就使用之前客户端随机生成的字符串进行对称加密算法进行加密。HTTP1.0默认非持续性;
2025-01-10 09:00:35
252
原创 Android 英语考试系统APP——效果图展示
基本所有的功能就是这些了,还有一些小的但不和很核心的功能就不展示了。,如有侵权,请联系删除。阅读模块——仔细阅读。
2025-01-10 08:53:15
298
原创 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 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
原创 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关注的人