自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android ViewGroup事件分发机制(1)

小编这些年深知大多数初中级Android工程师,想要提升自己,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!资料⬅专栏获取5、总结====

2024-06-20 02:24:06 782

原创 Android MVVM框架使用(十一)(功能开发)记事本

小编这些年深知大多数初中级Android工程师,想要提升自己,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!资料⬅专栏获取} else {

2024-06-20 01:56:17 891

原创 Android D8 编译器 和 R8 工具

小编这些年深知大多数初中级Android工程师,想要提升自己,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。[外链图片转存中…(img-69dI6kBE-1718818092885)]一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人。

2024-06-20 01:28:24 761

原创 98%Android开发者已收藏的“80”个开源库

小编这些年深知大多数初中级Android工程师,想要提升自己,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。因此我收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!资料⬅专栏获取。

2024-06-20 00:37:07 696

原创 找工作再也不愁之面试技巧全覆盖-这样面试保证拿Offer

我个人是比较看重面试者的个人形象的,注意理发,洗澡,做到干净整洁大方的穿着,不能邋遢,也不要穿着太过于正式,不建议男生喷香水,女生穿着不要太暴露(你说面试官是看还是不看,不看又先看,看又不好意思),不要化浓妆,香水味不要太浓。你得让自己看起来像个程序员呀。另外穿一套自己最喜欢的衣服可以增加自己的自信哦。去面试咯头天晚上应该查询好面试路线,设置好闹钟。注意不要迟到,也不建议太早到公司,预估提前半个小时左右能到公司就行,个人建议在预定时间前5到10分钟进入公司面试,不要太早进去,否则你可能会等很久,千万不要迟到

2024-06-19 04:36:05 432

原创 Android组件化和插件化开发简单介绍(1)

随着APP版本不断的迭代,新功能的不断增加,业务也会变的越来越复杂,APP业务模块的数量有可能还会继续增加,而且每个模块的代码也变的越来越多,这样发展下去单一工程下的APP架构势必会影响开发效率,增加项目的维护成本,每个工程师都要熟悉如此之多的代码,将很难进行多人协作开发,而且Android项目在编译代码的时候电脑会非常卡,又因为单一工程下代码耦合严重,每修改一处代码后都要重新编译打包测试,导致非常耗时,最重要的是这样的代码想要做单元测试根本无从下手,所以必须要有更灵活的架构代替过去单一的工程架构。

2024-06-19 04:32:40 445

原创 Android架构组件Room的使用

创建图书表= “”) {表注解解释1.如果想给一个表设置表名就在@Entity的后面添加(tableName = “book”),不是设置默认采用类名2.声明表的主键 @PrimaryKey(autoGenerate = true)3.更改表的属性列名@ColumnInfo(name = “bookname”),默认类的字段名1.定义Dao类@Dao@Insert@Delete。

2024-06-19 03:59:34 1051

原创 Android开发项目实战:实现折叠式布局

TextView以上就是实现一个折叠式布局的典型模板布局代码,一个简简单单的布局就实现了这样的效果,但是必须要注意在AndroidMnifest.xml必须要给Activity指定它的theme为NoActionBar的样式代码如下:

2024-06-19 03:27:48 947

原创 定时任务执行sh脚本中含有的expect脚本方法

原因就不多说了,经过反复测试,证明带有expect的sh脚本以这种格式放在定时任务中可用,手动执行脚本的方式放定时任务,会各种报错。下面脚本为测试脚本,真实sh脚本里面的expect执行很多,这只是放出部分内容仅供参考。#跑一次脚本则自动吧当天df -h全部情况写入到该日期文件中。就不做说明了,注意后面的执行方式就行。#每周六,日——自动执行巡检脚本。

2024-06-19 03:14:39 217

原创 Android应用加固原理

风险名称风险解决方案1.App防止反编译被反编译的暴露客户端逻辑,加密算法,密钥,等等加固2.java层代码源代码反编译风险被反编译的暴露客户端逻辑,加密算法,密钥,等等加固 ,混淆3.so文件破解风险导致核心代码泄漏。so文件加固4.篡改和二次打包风险修改文件资源等,二次打包的添加病毒,广告,或者窃取支付密码,拦截短信等资源文件混淆和校验签名的hash值5.资源文件泄露风险获取图片,js文件等文件,通过植入病毒,钓鱼页面获取用户敏感信息资源混淆,加固等等。

2024-06-19 02:54:59 1026

原创 大数据基础处理框架

Apache Hadoop是一种专用于批处理的处理框架。Hadoop是首个在开源社区获得极大关注的大数据框架。基于谷歌有关海量数据处理所发表的多篇论文与经验的Hadoop重新实现了相关算法和组件堆栈,让大规模批处理技术变得更易用。新版Hadoop包含多个组件,即多个层,通过配合使用可处理批数据。| 组件名称 | 说明 || — | — || HDFS | HDFS是一种分布式文件系统层,可对集群节点间的存储和复制进行协调。

2024-06-19 02:33:13 600

原创 Android基础知识:项目架构基础概述

内容本身比较简单,就是基础概念的总结。对于开发架构的选择来说,没有最好的架构只有最合适的架构,规模大业务多的项目不选择好合适的架构,项目开发将无法顺利进行,功能单一内容简单的项目也没必要什么技术架构都往项目里上,徒增开发成本。只有使用最合适自己项目的架构才能保证项目开发能快速、高效、顺利的进行。如果你看到了这里,觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言。一定会认真查询,修正不足。Android架构设计。

2024-06-19 02:23:58 746

原创 Android五大基本组件

针对不同的组件,Intent所包含的消息内容有所不同,且不同组件的激活方式也不同, 且不同类型组件有传递Intent的不同方式。a)只有当Intent请求中所有的Category与组件中的某一个IntentFilter的category完全匹配,才会让该Intent请求通过测试,IntentFilter中的多余category声明并不会导致匹配失败。e)取消时,Service会调用unbind方法,若Service是通过bindService来启动的,还会调用onDestroy方法来停止服务。

2024-06-19 01:54:44 555

原创 图文详解!从代理模式中搞定JDK-Proxy、Spring-AOP,你觉得难?

小红现在只是代理香水,如果小明需要找小红买法国红酒,那小红就需要代理法国红酒了,但是静态代理去扩展代理功能,后面会详细分析。如果小明需要找小红代理红酒,我们,实例化新的类,通过一些转换即可让小红了。

2024-06-19 01:53:07 624

原创 Android-第五节Menu菜单详解

一、Menu背景手机毕竟和电脑不同,它的屏幕空间非常有限,因此充分地利用屏幕空间在手机界面设计中就显得非常重要了。如果你的活动中有大量的菜单需要显示,这个时候界面设计就会比较尴尬,因为仅这些菜单就可能占用屏幕将近三分之一的空间,这该怎么办呢?不用担心,Android 给我们提供了一种方式,可以让菜单都能得到展示的同时,还能不占用任何屏幕空间。二、Menu使用步骤1.创建menu首先在res 目录下新建-一个menu文件夹,右击res 目录→New→Directory,输入文件夹名menu,点击OK。

2024-06-19 01:20:53 381

原创 Android 面试精华题目总结

在一个Activity中, 访问另一个Service中的某个对象, 需要先将对象转化成AIDL可识别的参数(可能是多个参数), 然后使用AIDL来传递这些参数, 在消息的接收端, 使用。可以放在不同的Task中。这些参数组装成自己需要的对象.AIDL的IPC的机制和COM或CORBA类似, 是基于接口的,但它是轻量级的。当然了,不排除是Android很早期的。内存优化:Android中容易内存溢出的部分,就是图片的加载,我们可以使用图片的压缩加上使用LruCache缓存的目的来控制图片所能够使用的内存。

2024-06-19 00:51:15 780

原创 分布式事务与分布式系统(1)

在第二阶段中,当协调者向发送 commit 消息请求之后,发生了局部网络异常或者发送 commit 请求过程中协调者发生了故障,会出现部分参与者接收到 commit 消息并进行提交,而其他参与者未收到 commit 消息则无法提交,于是整个事务中就会出现数据不一致的现象。在扣减库存而言,则解冻该库存数量。第一阶段 预处理阶段:事务协调者(事务管理器)给每个参与者(资源管理器)发送 Prepare 消息,每个参与者要么直接返回失败 ,要么在本地执行事务,写本地的 redo 和 undo 日志,但不提交。

2024-06-19 00:49:41 465

原创 Android 百度地图 SDK v3

基本就是包含一些cityName , cityId, size 等等API在百度的帮助文档中也很详细,下面会在代码中使用这些API。

2024-06-19 00:22:38 588

原创 优秀代码的格式准则

而再看看反例,注释简直画蛇添足,隔断了两个实体变量间的联系,我们不得不移动头部和眼球,才能获得相同的理解度。对于那些关系密切、放置于同一源文件中的概念,他们之间的区隔应该成为对相互的易懂度有多重要的衡量标准。我们希望一个项目中的代码拥有相似甚至相同的风格,像默契无间的团队所完成的艺术品,而不是像一大票意见相左的个人所堆砌起来的残次品。这样,程序就有自然的顺序。在某些较长的函数中,变量也可能在某代码块的顶部,或在循环之前声明。代码的格式关乎沟通,而沟通是专业开发者的头等大事,所以良好代码的格式至关重要。

2024-06-18 12:34:24 770

原创 主流的四种限流策略,我都可以通过redis实现,干货仅此一篇

所以我们的接口需要对流量进行限制。俗称的QPS也是对流量的一种描述针对限流现在大多应该是令牌桶算法,因为它能保证更多的吞吐量。除了令牌桶算法还有他的前身漏桶算法和简单的计数算法下面我们来看看这四种算法固定时间窗口算法固定时间窗口算法也可以叫做简单计数算法。网上有很多都将计数算法单独抽离出来。但是笔者认为计数算法是一种思想,而固定时间窗口算法是他的一种实现包括下面滑动时间窗口算法也是计数算法的一种实现。因为计数如果不和时间进行绑定的话那么失去了限流的本质了。就变成了拒绝了。

2024-06-18 08:47:13 1062

原创 一天一个偷懒小技巧(十六)最详细的图文教程帮你解决GitHub下载慢或下载失败问题(2024

写这篇文章缘由,是下载一个机器学习课程的课件,想去GitHub上下载,结果下载速度居然只有几k,并且还老是下载失败。然后去百度解决办法,基本上都是让修改hosts文件,修改完成后发现效果并不明显(其。实下载速度并没多大变化,从个位数变成了十位而已),于是找到了另一种方法来高速下载GitHub上的项目。1、首先需要一个码云账户,如果你没有,这个是官网地址——https://gitee.com/。4.找到你的GitHub网站,选择clone下的网址,复制。3.选择导入已有仓库。

2024-06-18 08:10:26 180

原创 【Redis实战】集合类型(Set)

SREM命令用来从集合中删除一个或多个元素,并返回删除成功的个数。由值于元素“d”在集合中不存在,所有只删除了一个元素,返回值为1。

2024-06-18 07:32:11 587

原创 「阿里Java面试解析」Spring灵魂拷问100题解析,让你吊打面试官

Spring MVC 的控制器是不是单例模式,如果是,有什么问题,怎么解决?Spring Boot 的核心注解是哪个?Spring Boot 的核心配置文件有哪几个?Spring Boot 可以兼容老 Spring 项目吗,如何做?如何在 Spring Boot 启动的时候运行一些特定的代码?在 Spring AOP 中,关注点和横切关注的区别是什么?你如何理解 Spring Boot 中的 Starters?请介绍你熟悉的 Spring 核心类,并说明有什么作用?哪些是重要的 Bean 生命周期方法?

2024-06-18 06:57:56 1059

原创 《零基础》MySQL 连接(四)

使用mysql二进制方式连接您可以使用MySQL二进制方式进入到mysql命令提示符下来连接MySQL数据库。

2024-06-18 06:21:07 886

原创 《算法日记-玩出新花样》- 两数求和

通过上面的代码,你会发现问题规模函数f(n) = n(即只存在一层循环,随着n的增到,循环次数也会增大),通过大O记法可推断出时间复杂度为O(n),上面的算法中引入了Hashtable,目的就是将数组中的值存储起来,减少内层循环,这个就是空间换时间的一种方式。上面的方案我们使用的是暴力破解的方式,最差情况是两个循环到最后一个元素才能够找到符合题目的答案,既然我们知道了运行时间都花费在if条件的比较逻辑上,是否能够通过减少比较逻辑达到减少运行时间呢,没错,确实存在可以优化的方法,下面先来看看优化后的代码吧。

2024-06-18 05:44:13 996

原创 《剑指offer》之重建二叉树

例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7,2,1,5,3,8,6},则重建二叉树并返回。如果左节点上还有子节点,就接着找自己点的根节点,左节点,左节点这样。那么前序的第一个元素就是根节点,然后在中序的数组中找到根节点的位置,那么根节点左边的,都是左节点,右边的都是右节点。就是先遍历左右节点,最后是根节点,如果左右节点还有子节点,就先遍历子节点的左节点、然后右节点,然后根节点。中序边临是先找树的左节点,如果左节点还有子节点,就接着找子节点的左节点,然后根节点,然后右节点。

2024-06-18 05:10:51 554

原创 《RocketMQ实战专栏》为什么是你学习RocketMQ的最佳资料

RocketMQ业界主流的消息中间件之一,承载公司核心业务消息的流转。对RocketMQ核心原理的理解与最佳实践成了开发与运维同学的必备技能。听很多同学抱怨,在学习中苦于缺少参考资料、遇到问题缺少专家指点、看源码掉入细节耗费大量时间精力、缺乏指引的最佳实践。我们在使用RocketMQ发送时会碰到System busy、Broker busy,导致发送超时。发生这种现象的背后原理是怎样的?我们有什么解决方案?

2024-06-18 04:34:47 720

原创 《Java并发编程的艺术》读后笔记-Executor框架简介(第十章)

当我们把Runnable接口或Callable接口的实现类提交(submit)给ThreadPoolExecutor或 ScheduledThreadPoolExecutor时,ThreadPoolExecutor或ScheduledThreadPoolExecutor会向我们返回一个FutureTask对象。CachedThreadPool是大小无界的线程池,适用于执行很多的短期异步任务的小程序,或者是负载较轻的服务器。是一个接口,它是Executor框架的基础,它将任务的提交与任务的执行分离开来。

2024-06-18 04:05:12 569

原创 “最粉嫩”的JVM垃圾回收器及算法,抗极限面试,倒背如流

大家在面试的时候不同程度会被问到JVM的垃圾回收,看面试官水平,有些就背个书就行,比如GC的工作原理,有哪些GC算法和回收器,分别优点和缺点等等,有些面试官估计自己也就背书水平,都没个追问;开始做一个快照,当B引用C的关系消失的时候要把这个引用推到GC的堆栈中,保证C还能被GC扫描到,最重要的是要把这个引用推到GC的堆栈,是灰色对象指向白色的引用,如果一旦某一个引用消失掉了,就会把它放到栈(GC方法运行时数据也是来自栈中),JVM其实还是能找到它的,下回直接扫描它就行了,那样白色就不会漏标。

2024-06-18 03:29:35 816

原创 TCP 拥塞窗口原理

❞拥塞窗口对于设备来说是本地的,并且永远不会在连接上共享,这与在每个段中发送的接收器窗口不同。在任何给定时间,设备最多可以发送由接收器窗口和拥塞窗口之间的最小值指定的字节数,如下面的公式所示:这意味着如果拥塞窗口小于接收窗口,则设备可以在等待确认之前传输多达拥塞窗口中定义的字节数。相反,如果接收窗口小于拥塞窗口,则设备可以在等待确认之前最多传输接收器窗口中定义的字节数。拥塞窗口根据网络拥塞动态变化。每次未确认段时,都假定是由于网络拥塞。拥塞窗口随时间演变的方式被定义为一个算法,这取决于实现。

2024-06-18 02:14:06 482

原创 SpringIOC源码解析(8)—— 注解配置的资源定位、加载、解析、注册全链路概览

小括号里的this展开之后会发现有一个内置的beanFactory,这时已经创建出来了,它是DefaultListableBeanFactory实例,前面xml方式中它是在refresh()方法中才创建出来的实例,所以注解的内置容器是先于xml创建出来的,之所以要提前创建出来是因为注解容器启动时会有一些系统自带的BeanDefinition注册到系统中,所以要先创建出来DefaultListableBeanFactory实例以提供对这些系统BeanDefinition的注册。构造方法传入的参数this是。

2024-06-18 01:41:11 859

原创 Spring-AOP

System.out.println(“执行了” + target.getClass().getName()System.out.println(“---------方法执行前---------”);System.out.println(“---------方法执行后---------”);System.out.println(“---------方法执行前---------”);System.out.println(“---------方法执行后---------”);

2024-06-18 01:11:45 326

原创 Spring Boot 2(1)

如果有这样的需求也是可以用的,但是原则上还是推荐以上面的典型结构来定义,这样也可以少写一些注解,代码更加简洁。通常我们会在应用主类中做一些框架配置扫描等配置,我们放在root package下可以帮助程序减少手工配置来加载到我们希望被Spring加载的内容。这种方法在业务开发的时候并不是特别推荐,更适合用于框架封装等场景,关于更多封装上的技巧,后面我们在进阶教程中详细讲解。中的Controller定义,就无法初始化Controller中定义的接口。中,所以按照上面的规则定义的所有其他类都处于。

2024-06-17 21:36:13 244

原创 Redis中的发布订阅和事务

1.2.3.4.5.6.发布订阅redis的发布订阅系统有点类似于我们生活中的电台,电台可以在某一个频率上发送广播,而我们可以接收任何一个频率的广播,Android中的broadcast也和这类似。订阅消息的方式如下:“c1”“c2”“c3”这个表示接收c1,c2,c3三个频道传来的消息,发送消息的方式如下:当c1这个频道上有消息发出时,此时在消息订阅控制台可以看到如下输出:“message”“c1”在redis中,我们也可以使用模式匹配订阅,如下:“c*”

2024-06-17 21:05:16 509

原创 mysql面试题

InnoDB存储引擎是Mysql的默认存储引擎。InnoDB存储引擎提供了具有提交、回滚、崩溃恢复能力的事务安全。但是对比MyISAM的存储引擎,InnoDB写的处理效率差一些,并且会占用更多的磁盘空间以保留数据和索引。MyISAM 不支持事务、也不支持外键,其优势是访问的速度快,对事务的完整性没有要求或者以SELECT、INSERT为主的应用基本上都可以使用这个引擎来创建表。

2024-06-17 20:29:32 564

原创 mybatis与spring的集成

2) 自动扫描com/javaxl/ssm/\*\*/mapper下的所有XxxMapper接口(其实就是DAO接口),并实现这些接口,hibernate使用声明式事务:配置四项(开启动态代理,切面,定义事务的属性,事务管理器)没有定义规则,方法名可以自己取,当对应方法需要使用注解时,添加注解@transaction。mybatis使用注解式事务 :配置三项(开启动态代理,事务管理器,事务管理器扫描驱动)设置为-1时,如果没有可用连接,连接池会一直无限期等待,直到获取到连接为止。

2024-06-17 20:01:16 858

原创 LeetCode10-正则表达式匹配

解释: 因为 ‘*’ 表示零个或多个,这里 ‘c’ 为 0 个, ‘a’ 被重复一次。因此可以匹配字符串 “aab”。解释: "._” 表示可匹配零个或多个(’*’)任意字符(’.’)。// 方法三 动态规划升级版本。// 方法二 动态规划。

2024-06-17 19:31:40 460

原创 Java项目中如何更优雅的处理空值?

基于此,我们将它进行优化://guava类库提供的方式对于接口,它一定会返回List,即使没有数据,它仍然会返回List(集合中没有任何元素);通过以上的修改,我们成功的避免了有可能发生的空指针异常,这样的写法更安全!

2024-06-17 19:00:38 284

原创 Java正则表达式笔记总结

例如:正则表达式00\d可以匹配"007",“008”,它不能匹配"00A",“0077”,因为\d仅限单个数字字符。匹配常用符我们使用\w匹配一个字母、数字或下划线。例如:正则表达式java\w可以匹配"javac",“java9”,“java_”,它不能匹配"java#",“java”,因为\w不能匹配#,空格等字符。匹配空格字符我们使用\s来匹配一个空格字符,注意空格字符不但包括空格,还包括tab字符。例如:正则表达式a\sc可以匹配a c,但是不能匹配"ac",“abc”。

2024-06-17 18:31:23 822

原创 Java基础面试每日3题:day01

引进的,它和StringBuffer的方法完全相同,区别在于它是在单线程环境下使用的,因为它的所有方法都没有被synchronized修饰,因此它的效率也比StringBuffer更高。重写要求子类被重写方法与父类被重写方法有相同的返回值类型,比父类重写方法更好访问,不能比父类被重写的方法声明更多的异常(里氏替换原则)。方法的重写和重载都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。重写:在继承关系,方法名相同、参数列表相同、返回值类型相同、方法功能不同。

2024-06-17 18:03:06 408

空空如也

空空如也

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

TA关注的人

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