自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 android中的动画

这里写代码片public class MainActivity extends Activity {}

2024-11-28 05:41:06 231

原创 android中的UI中的窗口之Window类介绍

WindowManager并不是什么“窗口管理器”,WindowManagerService才是窗口管理器,WindowManager主要管理一堆状态字。类似于面板窗口,绘制类似于顶层窗口,而不是宿主的子窗口。

2024-11-28 05:39:05 898

原创 Android中浅拷贝与深拷贝

NonNull@Override在这里我们创建了一个Response类,实现了Cloneable接口并重写了clone方法。Response类内部有一个属性为ResponseImpl类,该类并没有实现Cloneable接口。

2024-11-28 05:35:04 626

原创 Android中对图片的内存优化方法

另外,decodeStream 直接拿图片来读取字节码了,不会根据机器的各种分辨率来自动适应,使用了 decodeStream 之后,需要在 hdpi 和 mdpi,ldpi 中配置相应的图片资源, 否则在不同分辨率机器上都是同样大小(像素点数量),显示出来的大小就不对了。图片对象的本地数据占用的内存最大,而且与程序 Java 部分的内存是分开计算的。放大后的图片使用的 ARGB_8888 颜色模式,就算原图片是ARGB_4444 颜色模式也一样,而且没有办法在放大时直接指定颜色模式。

2024-11-28 05:33:03 487

原创 Android中实现日期时间选择器(DatePicker和TimePicker)

功能描述:实现日期时间选择器。

2024-11-28 05:31:03 873

原创 Android中实现定时器的3种解决方法

二、采用Handler的postDelayed(Runnable, long)方法,这个实现比较简单一些。// 线程暂停10秒,单位毫秒。三、采用Handler与timer及TimerTask结合的方法。1. 定义定时器、定时器任务及Handler句柄。4. 启动线程后,线程每10s发送一次消息。1. 定义一个Handler类。2. 初始化计时器任务。

2024-11-28 05:29:03 985

原创 Android中图片的三级缓存介绍及实现

Fresco在5.0以下的内存优化非常好,代价就是体积也非常的大,按体积算Fresco>Glide>Picasso不过在使用起来也有些不便(小建议:他只能用内置的一个ImageView来实现这些功能,用起来比较麻烦,我们通常是根据Fresco自己改改,直接使用他的Bitmap层)也就是这样的一个过程,下面用一个简单地demo来演示一下图片你的三级缓存,此demo中只有一个界面,界面上一个ImageView用来显示图片,一个按钮用来点击的时候加载图片。最后,简单粗暴的一句话概括:**

2024-11-28 05:27:02 949

原创 Android中再按一下返回键退出程序

【代码】Android中再按一下返回键退出程序。

2024-11-28 05:25:02 92

原创 Android中再按一下返回键退出程序(1)

【代码】Android中再按一下返回键退出程序(1)

2024-11-28 05:23:02 74

原创 Android中关于枚举的优化_android ordinal

}package enumsfun main() {val age: Int = getAge(People.CHILD);println(“ret: ${age}”)}fun getAge(p: People): Int {return when § {People.ADULT -> 30People.CHILD -> 18}}enum class People {ADULT,CHILD}查看字节码方式一:IDEA(可能有些地方编译失败)IDEA/AndroidStudio

2024-11-28 05:21:02 331

原创 Android中webview里js和java的相互调用--含代码demo解析

Toast.makeText(getBaseContext(), “js调用了本地java方法”, Toast.LENGTH_LONG).show();原因是在4.4.2中对JavascriptInterface安全性的要求更高更严格,需要标识出这个方法是能被js调用的方法,以增加安全性。

2024-11-28 05:14:55 767

原创 Android中View绘制各种状态的背景图片原理深入分析以及StateListDrawable使用

函数位于:frameworks\base\graphics\java\android\graphics\drawable\StateListDrawable.java 类中。//该函数位于 frameworks\base\graphics\java\android\graphics\drawable\Drawable.java 类中。其整体调用流程如下: View.java类中(//路径:\frameworks\base\core\java\android\view\View.java)

2024-11-28 05:12:55 945

原创 Android中TextView和EditView常用属性设置

android:drawablePadding设置text与drawable(图片)的间隔,与drawableLeft、drawableRight、drawableTop、drawableBottom一起使用,可设置为负数,单独使用没有效果。android:autoLink设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接。android:width设置文本区域的宽度,支持度量单位:px(像素)/dp/sp/in/mm(毫米),与layout_width的区别看这里。

2024-11-28 05:10:54 399

原创 Android FoldingLayout 折叠布局 原理及实现(二)

大家都知道,我们的ViewGroup有个方法叫做:dispatchDraw(Canvas)主要用来绘制子元素,我们可以对这个canvas进行设置matrix,以及重复调用dispatchDraw(Canvas)来实现类似上篇博客最后的效果,这样就完成了我们的可行性的分析。然后将需要初始化的一些东西,不依赖于宽度的,比如画笔什么的都放在构造中;上一篇博客中,我们实现了在一个自定义View种绘制我们的折叠图片,使用的是一个固定的图片,当然我们在实际使用中,希望可以折叠某一个布局而不是一张固定的图片。

2024-11-27 10:07:05 385

原创 Android FoldingLayout 折叠布局 原理及实现(一)

这里你可能会问,这才为0.5个像素的区域设置了渐变,不对呀,恩,是的,继续看接下来我们使用了setLocalMatrix(mShadowGradientMatrix);可以看到我们通过matrix.setPolyToPoly实现了图片的倾斜,那么引入到折叠的情况,假设折叠两次,大家有思路么,考虑一下,没有的话,继续往下看。那么绘制多次,每次显示肯定不是一整张图,比如第一次,我只想显示第一块,所以我们还需要clipRect的配合,说到这,应该以及揭秘了~~~起点(0,0)、终点(0.5f,0);

2024-11-27 10:05:04 582

原创 Android EventBus源码解析 带你深入理解EventBus

把当前的方法加入到队列,然后直接通过handler去发送一个消息,在handler的handleMessage中,去执行我们的方法。知道就行,非核心代码,主要用于isRegister的判断。其实不用发布者,订阅者,事件,总线这几个词或许更好理解,以后大家问了EventBus,可以说,就是在一个单例内部维持着一个map对象存储了一堆的方法;到此,我们完整的源码分析就结束了,总结一下:register会把当前类中匹配的方法,存入一个map,而post会根据实参去map查找进行反射调用。

2024-11-27 10:03:04 861

原创 Android EventBus实战 没听过你就out了

这个事件是为了让详细信息的Fragment去更新数据,不用说,按照上面的推测,详细信息的Fragment里面一个有个这样的方法: public void onEventMainThread(Item item);然后当子线程执行完毕,调用EventBus.getDefault().post(new ItemListEvent(Item.ITEMS))时,EventBus会根据post中实参的类型,去Map中查找对于的方法,于是找到了我们的onEventMainThread,最终调用反射去执行我们的方法。

2024-11-27 10:01:03 578

原创 android emulator虚拟设备之qemu pipe分析(三)

qemu_pipe_read和qemu_pipe_write都是使用qemu_pipe_read_write来实现的,注意access_ok和__get_user/__put_user对于用户空间指针的检测。写函数为pipe_dev_write,如果是写PIPE_REG_COMMAND,有专门的子函数pipeDevice_doCommand处理,如果是写PIPE_REG_ACCESS_PARAMS,相当于batch操作,传递了多个寄存器的值,然后去执行读写操作。

2024-11-27 09:59:03 768

原创 Android Drawable 那些不为人知的高效用法

代码很简单,但是可以看到,我们需要在getView里面中去使用调用setMessageReaded方法,当然了其他的一些状态,肯定也要手动触发,比如在ACTION_DOWN中触发pressed等。那么接下来,我们有个需求,类似于邮箱,邮件以ListView形式展示,但是我们需要一个状态去标识出未读和已读:so,我们自定义一个状态state_message_readed。可以看到,如果是已读的邮件,我们的图标是打开状态,且有个淡红色的背景。接下来,我们将利用Drawable改善我们的UI性能以及用户体验。

2024-11-27 09:57:02 672

原创 Android DownloadManager详细使用方法

我们可以查询到下载任务的各种细节,包括状态,你可以通过查询Download Manager来获得下载任务的状态,进度,以及各种细节,通过query方法返回一个包含了下载任务细节的Cursor。如果下载的文件希望被其他的应用共享,特别是那些你下载下来希望被Media Scanner扫描到的文件(比如音乐文件),那么你可以指定你的下载路径在。:在下载进行的过程中,通知栏中会一直显示该下载的Notification,当下载完成时,该Notification会被移除,这是默认的参数值。

2024-11-27 09:55:01 750

原创 android Dialog提示框。单选项dialog,多选项dialog

private String[] favor = {"美容 ", "汽车 ", "游戏 ", "社交 ", "体育 ", "阅读 ",map.put(“离线女声”, OfflineResource.VOICE_FEMALE);map.put(“离线度逍遥”, OfflineResource.VOICE_DUXY);map.put(“离线度丫丫”, OfflineResource.VOICE_DUYY);map.put(“离线男声”, OfflineResource.VOICE_MALE);

2024-11-27 09:53:00 275

原创 Android Dialer,Mms,Contacts源码修改笔记

当然也可以用find命令查找资源在xml中的位置,然后在根据xml布局文件的名字在java中查找。34.Cursor先获得制定列的下标,然后根据下标获得数据(不同系统的mmssms.db/sms标的列可能不同,i9250的原生4.3系统有17列,下标0-16.MTK的4.4.2有23列,下标0-22,多出几个自定义列)用来分析应用当前界面的View层次节点的,假设你现在是在用模拟器手机做调试,你用这个他就会构建一个你先在手机或模拟器显示界面的View的层次图,可以做一些性能的调优之类的。

2024-11-27 09:50:59 713

原创 Android DataBinding 从入门到进阶

和原始布局的区别在于多出了一个标签将原布局包裹了起来,标签用于声明要用到的变量以及变量类型,要实现 MVVM 的 ViewModel 就需要把数据(Model)与 UI(View)进行绑定,标签的作用就像一个桥梁搭建了 View 和 Model 之间的通道这里先来声明一个 Modle/**···在标签里声明要使用到的变量名、类的全路径如果 User 类型要多处用到,也可以直接将之进来,这样就不用每次都指明整个包名路径了,而包中的类会被自动导入,所以可以直接使用如果存在。

2024-11-27 09:48:56 581

原创 Android Dalvik虚拟机实战

Dalvik虚拟机是作用于特定架构的CPU上运行的,在设计之初采用了ARM架构,ARM架构的CPU本身继承了多个寄存器,Dalvik将部分寄存器映射到了ARM寄存器上,还有一个部分则通过调用栈进行模拟。3、返回指令指的是函数结尾时运行的最后一条指令。p 命名法对函数的局部变量寄存器命名没有影响,它的命名规则:函数中引入的参数命名从p0开始,依次递增。4、数据定义指令用来定义程序中用到的常量、字符串、类等数据。1、Java虚拟机运行的是java字节码,Dalvik虚拟机运行的是Dalvik字节码。

2024-11-27 09:46:56 861

原创 Android D8 编译器 和 R8 工具

Google在版本中引入D8编译器作为默认的DEX字节码文件编译器。通过在中新增开启D8编译器。

2024-11-27 09:44:55 911

原创 Android D8 编译器 和 R8 工具(2)

D8编译器作为默认的DEX字节码文件编译器,具有更好的性能;d` 是通过脱糖的方式来实现。D8编译器作为默认的DEX字节码文件编译器,具有更好的性能;

2024-11-27 09:42:54 704

原创 Android D8 编译器 和 R8 工具(1)

3.2 | 3.2.0 | 引入 R8、D8 脱糖默认开启 || 3.4 | 3.4.0 | 默认开启 R8 |

2024-11-27 09:40:53 986

原创 没想到!阿里技术大佬独家收藏的 pring 全家桶小册,竟被我意外发现!

*不管学习任何一门技术,都应该有个系统的学习!为什么一定要系统性学习?不管你是不是做 IT,其实都有系统性学习的必要。**系统性的学习一个知识点,可以让我们在遇到问题时考虑得更加全面,这也是一个成熟的工程师应该具备的特征;碎片化的学习则很容易让我们得出一些片面的、甚至错误的结论。

2024-11-21 16:38:04 438

原创 昨天还在for循环里写加号拼接字符串的那个同事,今天已经不在了,java技术支持面试常见问题

引言都说 StringBuilder 在处理字符串拼接上效率要强于 String,但有时候我们的理解可能会存在一定的偏差。最近我在测试数据导入效率的时候就发现我以前对 StringBuilder 的部分理解是错误的。后来我通过实践测试 + 找原理 的方式搞清楚了这块的逻辑。现在将过程分享给大家。测试用例我们的代码在循环中拼接字符串一般有两种情况:第一种就是每次循环将对象中的几个字段拼接成一个新字段,再赋值给对象第二种操作是在循环外创建一个字符串对象,每次循环向该字符串拼接新的内容。循环结束后得到拼接好的字符

2024-11-21 15:25:17 389

原创 数据库分库分表,分片配置轻松入门!,常考面试题

对于这类的表,在分片的情况下,当业务表因为规模而进行分片以后,业务表与这些附属的字典表之间的关联,就成了比较棘手的问题,所以 MyCat 中通过数据冗余来解决这类表的 join ,即所有的分片都有一份数据的拷贝,所有将字典表或者符合字典表特性的一些表定义为全局表。因为数据库分片之后,本来存储在一张表中的数据现在被分散到 N 张表中去了,但是在应用程序眼里,还是只有一张表,它也只操作这一张表,这张表并不真正存储数据,数据存储在 N 张物理表中,这个并不真正存储数据的表称之为逻辑表。

2024-11-21 14:18:51 911

原创 拼多多终面竟被“Out”了?春节宅家复习,备战金三银四拿offer,美的研发面试难不难

关于这次拼多多的三面,我也是一脸懵逼的,原以为顺顺利利,但却没有了下文,关键是自己也不自己自己挂在了哪里,问题都还答得算是顺利,对自己的表现也挺满意,可能我个人唯一的不足就是主观性比较强,所以交流过程中会给面试官不适感吧。实际上,根据我们的面经来看,是能够发现大厂的面试特点的,能够整理出一些核心技术知识点,面试时,面试官会有针对性的来提问。今年春节提前,相信2月就会提前进入招聘旺季,时间较短,比较紧促,所以最快的复习方式就是刷题,前端时间自己也整理了非常多的面试题,包括核心知识点、大厂面试集锦等等。

2024-11-21 13:06:38 490

原创 想进阿里、百度?面试前先搞定这些MySQL面试题(含答案解析),在线面试流程

索引实际上就是将数据组织为数据结构,比如B+树数据结构,组织的过程实际就是对数据按指定的字段进行排序,而指定的字段就是想建立索引的字段,所以索引底层实际上就是按指定字段将数据进行排序,而排序的过程则类似字符串的大小比较,比如想对a,b,c三个字段进行排序,实际会先比较a字段,a字段相等就会比较b字段,b字段相等就会比较c字段,依照这个规则将数据组织为一个棵B+树,当我们给定条件来查询数据时,实际上就是。查询优化器手写会针对SQL语句的条件进行简单的优化,比如常量传递,等值传递,移除没用的条件。

2024-11-21 11:43:52 401

原创 循序渐进学运维-服务篇V1版更新完毕,2024年最新java面试场景设计题目及答案

3.3 FTP服务3.4 DNS服务3.5 apache实战: 实战: 3.6 tomcat3.7 nginx3.8 zabbix/prometheus3.9 SVN。

2024-11-21 10:33:44 275

原创 就这一次,20张图带你彻底击溃Redis跳表,京东物流面试经验

字典保存着从member到score的映射。这个非常好理解,如果所在层索引结点只有1个,比如4层索引的结点16,只能顺着16向下遍历,无法向后跳到4层其他结点,因此当所在层索引结点数量等于2,则到达最高索引层,这个约束在分析跳表复杂度时很重要。从前面的分析可知,跳表的复杂度和索引层数m以及索引结点间隙d有直接关系,其中索引结点间隙理解为相隔几个结点出现索引结点,体现了对应层索引结点的稀疏程度,在无索引结点时只能遍历无法跳跃。跳表是一个概率型的数据结构,元素的插入层数是随机指定的。

2024-11-21 09:12:10 607

原创 基于微信小程序的食堂线上订餐系统(源码+LW)_基于微信小程序的食堂订餐平台

jdk版本:1.8 及以上ide工具:Eclipse或者 IDEA,微信小程序开发工具数据库: mysql5.7 (必须5.7)编程语言: Javajava框架:SSM详细技术:HTML+CSS+JAVA+SSM+MYSQL+VUE+MAVEN+微信开发工具。

2024-11-21 05:46:09 713

原创 基于java ssm springboot+mybatis酒庄内部管理系统设计和实现_酒店信息管理系统必须基于ssm框架技术(或mybatis+spring boot)实现

【代码】基于java ssm springboot+mybatis酒庄内部管理系统设计和实现_酒店信息管理系统必须基于ssm框架技术(或mybatis+spring boot)实现。

2024-11-21 02:32:39 239

原创 动态规划(浅层基础),字节跳动面经

若第i-1天已经买了,则不用管)找这两种情况的最大值,即最大利益,dp[i][1] = max(dp[i - 1][0] - prices[i], dp[i - 1][1]);若第i-1天已经卖了,则不用管)找这两种情况的最大值,即最大利益,dp[i][0] = max(dp[i - 1][1] + prices[i], dp[i - 1][0]);3,初始值是计算出所有的 dp[0] [0…

2024-11-20 23:08:33 846

原创 你知道吗?枚举单例模式是世界上最好的单例模式!!!,2024年最新java基础视频教程百度云

是一个静态内部类,当外部类被加载的时候,并不会创建实例对象。只有当调用方法时,才会被加载,这个时候才会创建instance。instance的唯一性、创建过程的线程安全性,都由JVM来保证。所以,这种实现方法既保证了线程安全,又能做到延迟加载。

2024-11-20 19:42:01 432

原创 三面蚂蚁惨败,面试官要求手写算法?看完你还觉得算法不重要?,阿里面试100%会问到的JVM

在本书中,发生如上转换行为的函数在估算额外空间复杂度的时候,笔者并没有把charArr的空间计算在内,这是因为如果不转换成char数组,而是选择直接使用原参数str,也是完全可以的,之所以选择转换,仅仅是为了让读者更容易读懂代码;但是只靠刷题去提升算法能力,进度太慢,而且还容易抓不住重点很难坚持,并且没有完整的学习体系,也没人指导,导致最后的结果就是一知半解,浪费了大量的时间成本。本书中的题目全面且经典,更重要的是,书中收录了大量独家题目和最优解分析,这些内容源自笔者多年来“死磕自己”的深入思考。

2024-11-20 16:23:56 291

原创 Spring5-DI-依赖注入(ioc获取类对象&&赋值)_类不注入spring中, 但类中的对象要赋值,怎么办

依赖注入–>##@Test//获取ioc容器//1.普通属性赋值System.out.println(“普通属性赋值:”);```测试代码(和第一种setter方式注入的代码一致,即通过id和类类型获取bean对象,不做展示)

2024-11-20 10:09:17 826

空空如也

空空如也

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

TA关注的人

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