JAVA
文章平均质量分 55
梦想不只是梦与想
这个作者很懒,什么都没留下…
展开
-
Java对象大小计算
结合第一章《理论篇》的知识,猜想一下,在64位虚拟机下,Java对象的大小。这是在代码中打印对象大小的方法。在 Maven 项目的。学习和掌握该知识,有助于分析。“应用系统的堆到底该设置为多大?3.1 指针压缩的 JVM 参数。3.2 借助 jol-core。本文计算的是Java对象在。2.1 Object对象大小。2.2 包含实例数据的对象。对齐填充(数组对象才有的)打印对象大小的 API 是。转载 2023-03-02 21:42:43 · 1041 阅读 · 0 评论 -
Java泛型全解析
无论为泛型的类型形参传入哪一种类型的实参,对于Java来说,他们依然被当成同一个类处理,在内存中也只占用一块内存空间,可以灵活的封装,并且同时有可以限定类型,泛型的接口和类更像是一种通用的模型,模型内部的类型由使用者自己限定。"用于操作具体的某个泛型类的时候,还未确定最终使用时,采用的对象类型,就用问号作为占位的含义。使用泛型接口或类的时候,虽然可以不加部分,但是推荐加上,不然还要强制类型转换等麻烦操作。可以有多个限定条件,存在多个限定条件的时候,使用&连接。使用类型通配符的类是各种该类的泛型的父类。原创 2023-01-17 18:54:05 · 524 阅读 · 0 评论 -
java多态的理解
多态方法调用的优先级: this.show(O(o )、super.show(O(O )、this.show )、super.show (super )、super (o ) )对象后,用该父类引用调用子类重写的方法,此时多态就出现了。多态是方法的多态,不是属性的多态(多态与属性无关)。多态的存在要有3个必要条件:继承,方法。,父类引用指向子类对象。原创 2022-09-16 10:31:57 · 101 阅读 · 0 评论 -
taskAffinity详解
一个Android应用程序功能通常会被拆分成多喝Activity,而各个Activity之间通过Intent进行连接,而Android系统,通过栈结构来保存整个App的Activity,栈低的元素是整个任务栈的发起者。一个合理的任务调度栈不仅是性能的保证,更是提供性能的基础。当一个App启动时,如果当前环境中不存在App的任务栈,那么系统就会创建一个任务栈。原创 2022-08-25 10:18:49 · 1276 阅读 · 0 评论 -
Annotation Processor
当我们依赖一些第三方的库时,可能会遇到com.android.support冲突的问题,就是因为开发者使用的compile或api依赖的com.android.support包与我们本地所依赖的com.android.support包版本不一样。RetentionPolicy.SOURCE表示修饰的注解只在源码中保留,编译后就被遗弃了,也就是class文件中就不存在了。该依赖方式会传递所依赖的库,当其他module依赖了该module时,可以使用该module下使用api依赖的库。...原创 2022-07-25 16:17:11 · 4060 阅读 · 0 评论 -
时间转换 2021-08-03T06:06:41Z
fun formatDateTime(value: String?, format: String = "yyyy-MM-dd HH:mm"): String { if (TextUtils.isEmpty(value)) return "" return try { //系统类 DateTime(value).toString(format) } catch (e: Exception) { "" }}也是好不容易找到.原创 2022-05-16 15:37:43 · 311 阅读 · 0 评论 -
发布aar包到maven仓库
Android:发布aar包到maven仓库以及 maven插件 和 maven-publish 插件的区别在日常开发中,不可避免的需要把自己的 library 发布到 maven 仓库中,这样使用起来也更加方便。发布 aar 包到 maven 仓库,主要是使用 Gradle 提供的插件: maven 插件(旧版),在 Gradle 6.2 之后,就完全被弃用了(增加了@Deprecated注解) maven-publish 插件 maven插件,是 Gradle 1.0 的..转载 2021-10-12 13:40:21 · 2312 阅读 · 0 评论 -
非静态内部类不能定义静态成员变量和静态方法
非静态内部类不能有静态成员!成员内部类必须先实例化外部类对象然后再实例化成员内部类;非static的内部类,在外部类加载的时候,并不会加载它,所以它里面不能有静态变量或者静态方法。1、static类型的属性和方法,在类加载的时候就会存在于内存中。2、要使用某个类的static属性或者方法,那么这个类必须要加载到jvm中。基于以上两点,可以看出,如果一个非static的内部类如果具有static的属性或者方法,那么就会出现一种情况:内部类未加载,但是却试图在内存中创建static的属性和方..转载 2021-09-04 10:08:52 · 920 阅读 · 0 评论 -
maven设置每次构建获取最新jar包版本号
一般开发过程中,版本都是SNAPSHOT版本的。在跨工程引用的时候,获取最新版本的jar。经常就是不断的更新版本,通过版本变更来获取最新版本的jar。其实是可以声明变化版本,让gradle每次编译都去获取最新时间戳版本的jar(目前只可以解决相同分支jar问题,如果是多分支合作,代码获取会存在问题)。build.gradle中的依赖是通过设置maven依赖实现。我们知道,maven可以说是通过一个坐标定位来确定唯一一个包的,所说的坐标定位分别是groupId,artifactId和versi...原创 2021-03-17 11:55:08 · 3002 阅读 · 0 评论 -
小米手机电量和性能的白名单
小米手机Note 3有个“电量和性能”设置,如果没有把app设置为无限制,侧app在后台很容易被杀,导致每次重新启动app,针对该情况,做了个判断/** * 电池优化设置 */object BatteryOptimization { /** * 判断当前APP是否有加入电池优化的白名单(目前只限于小米 Note3手机) */ fun isIgnoreBatteryOptimization(activity: Activity?):...原创 2021-02-03 14:20:30 · 3202 阅读 · 2 评论 -
hashcode方法的重写
重写hashCode()方法的基本规则a、注意事项1、同一个对象多次调用hashCode()方法应该返回相同的值2、两个对象通过equals()方法比较返回true时,这两个对象的hashCode()方法应返回相等的值3、对象中用作equals()方法比较标准的Field,都应该用来计算hashCode值b、计算步骤 1、各数据类型field的计算方式Field类型 计算方式 boolean hashCode = (f?0:1); 整数类型(byte、sho..原创 2021-01-10 21:54:24 · 1956 阅读 · 0 评论 -
正确理解ThreadLocal
ThreadLocal是在Thread类之外实现的一个功能(java.lang.ThreadLocal), 但它会为每个线程分别存储一份唯一的数据。正如它的名字所说的,它为线程提供了本地存储,也就是说你所创建出来变量对每个线程实例来说都是唯一的。和线程 名,线程优先级类似,你可以自定义出一些属性,就好像它们是存储在Thread线程内部一样,是不是觉得酷?不过先别高兴得太早了,有几句丑话得先说在前 头。创建ThreadLocal有两种推荐方式:要么是静态变量,要么是单例实例中的属性,这样可以是非静态的。注意转载 2020-08-03 23:22:48 · 138 阅读 · 0 评论 -
CPU个数、CPU核心数、CPU线程数
CPU个数、CPU核心数、CPU线程数 我们在选购电脑的时候,CPU是一个需要考虑到核心因素,因为它决定了电脑的性能等级。CPU从早期的单核,发展到现在的双核,多核。CPU除了核心数之外,还有线程数之说,下面文本就来解释一下CPU的核心数与线程数的关系和区别。CPU个数即CPU芯片个数CPU的核心数是指物理上,也就是硬件上存在着几个核心。比如,双核就是包括2个相对独立的CPU核心单元组,四核就包含4个相对独立的CPU核心单元组。线程数是一种逻辑的概念,简单地说,就是模拟出的CPU核..转载 2020-07-15 22:39:30 · 909 阅读 · 0 评论 -
Android 系统常用Intent意图
(1)闹钟创建闹钟(ACTION_SET_ALARM)示例Intent:public void createAlarm(String message, int hour, int minutes) { Intent intent = new Intent(AlarmClock.ACTION_SET_ALARM) .putExtra(AlarmClock.EXTRA_MESSAGE, message) //用于标识闹钟的自定义...转载 2020-05-20 15:16:51 · 1257 阅读 · 0 评论 -
Native与H5交互的那些事
Andorid浏览器:Native与H5交互的那些事目录一,简介二,WebView,WebSettings、WebViewClient、WebChromeClient方法三,Native与Js交互四,腾讯浏览服务X5内核五,X5内核WebView +全屏视频 + JsBridge框架一,简介这部分主要介绍下 WebView,WebView 是一个用来显示 Web 网页的控...转载 2019-11-28 19:11:46 · 752 阅读 · 0 评论 -
关于android 动画坐标百分比问题
最近在做一个需要实现动画的项目,发现算动画的坐标百分比事件很痛苦的事情,按常理逻辑去设置它的进出百分比老是不能实现预期的效果,这让我很费解!例如我用translate的时候,想去实现一个从下到上的动画,在设置进入的动画的时候用<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.an...转载 2019-11-08 09:51:50 · 261 阅读 · 0 评论 -
阿里代码规范检查工具的安装使用
阿里巴巴于 10 月 14 日在杭州云栖大会上,正式发布众所期待的《阿里巴巴 Java 开发规约》扫描插件!简单了解一下这插件该插件由阿里巴巴 P3C 项目组研发。代码已经开源,GitHub:https://github.com/alibaba/p3c阿里介绍文章:https://mp.weixin.qq.com/s/IbibsXlWHlM59kfXJqRvZA#rd插件支持了I...原创 2018-09-17 17:05:15 · 803 阅读 · 0 评论 -
Class的 getSuperclass与getGenericSuperclass区别
一、getSuperclass 返回直接继承的父类(由于编译擦除,没有显示泛型参数)Class<? super T> getSuperclass() 返回表示此Class所表示的实体(类、接口、基本类型或 void)的超类的Class。 返回表示此Class所表示的实体(类、接口、基本类型或 void)的超类的Class。...转载 2019-06-01 19:52:34 · 1108 阅读 · 0 评论 -
"码农"的营销基本课
1、在职业生涯某个时刻,会发现自己的技术水平已经能达到顶级开发人员,要想再提升会变的异常困难;只有通过“自我营销”才能让自己脱颖而出,这样不仅可以提高收入,还能拥有更多的机会。即便是“菜鸟”,也不妨碍开始自我营销。事实上,试图找出自我营销的方法,可以让自己成为专家,或者从事某一特定领域的软件开发工作。不要让“不是专家”成为放弃自我营销的借口。无论身处职业生涯的哪个阶段,都可以从营造和传播自...原创 2019-06-22 10:16:13 · 140 阅读 · 0 评论 -
判断Intent是否存在
在intent跳转的时候,如果没有使用UncaughtExceptionHandler类来处理全局异常,有时会出现ActivityNotFoundException错误,为了更好的用户体验,可以在跳转之前先判断Intent是否存在。 比如Activtiy的跳转检查:public static boolean isIntentAvailable(Context c...原创 2019-06-22 14:55:15 · 787 阅读 · 0 评论 -
String 为什么不可变 ?
众所周知, String 是一个不可变的,由 final 修饰的类。那么它的不可变性体现在哪里呢? 看下面一段简单的代码: String str= "123"; str = "456";相信应该没人会觉得这段代码是错误的,那么这符合 String 的不可变性吗?String 的不可变性是如何体现的? 不可变性的好处是什么?带着这些疑问,read the fuck source c...转载 2019-07-03 13:40:22 · 113 阅读 · 0 评论 -
animated-selector状态改变的动画效果
先看效果图:在res/drawable/目录下创建一个animator_selector.xml文件<?xml version="1.0" encoding="utf-8"?><animated-selector xmlns:android="http://schemas.android.com/apk/res/android"> <item ...转载 2019-07-05 23:58:26 · 2548 阅读 · 0 评论 -
StateListAnimator状态切换动画
先看一张效果图手指触碰控件后,控件在Z方向上的高度抬升了,而且控件放大了,手指离开之后,控件又恢复原状。这只是StateListAnimator能实现的众多效果之一。通过各种动画的搭配,我们能为不同状态下的控件提供各种动画效果。有一点需要说明,StateListAnimator是在API21之后才加入的。接下来进入正题,讲如何使用StateListAnimator。1. ...转载 2019-07-06 00:07:40 · 1338 阅读 · 0 评论 -
Gradle 通用小技巧
1、Log开关控制。定义动态编译生成对象,通过 buildConfigField控制,然后在Java文件中通过BuildConfig.enableLog来获取,代码如下:buildTypes { release { buildConfigField("boolean","enableLog","true") } ...原创 2019-07-06 14:43:51 · 142 阅读 · 0 评论 -
形参个数可变的方法(可变参数使用)
从JDK1.5之后,Java允许定义形参个数可变的参数,从而允许为方法制定数量不确定的形参。1、使用方式:在最后一个形参类型后增加三点(...),则表示该形参可以接受多个参数值,多个参数值是被当成数组传入。/** * 可变参数 */ public void test(String a,int... b){ for (int i : b) {...原创 2019-07-21 17:34:07 · 4513 阅读 · 0 评论 -
Android中Fragment的用法总结
Fragment是activity的界面中的一部分或一种行为,下面这篇文章主要给大家介绍了关于Android中Fragment的基本用法的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下前言fragment 可认为是一个轻量级的Activity,但不同与Activity,它是要嵌到Activity中来使用的,它用来解决设备屏幕大小的不同,主要是充分利用界面上的空间,如平板上多...转载 2019-08-21 10:36:31 · 694 阅读 · 0 评论 -
Android9.0 WebView空白页面
最近遇见线上客户部分手机9.0系统,在使用到webview的页面,都是空白,无法正常加载出页面。。。原因是:在安卓9.0版本中有一个新特性如下所有应用都使用HTTPS 这是对Android安全用户的肯定。AndroidPie上的所有应用程序默认都使用HTTPS。Android关心您的隐私。也就是说从Android 9.0(API级别28)开始,默认情况下禁用明文支持。因此http的...原创 2019-09-02 13:33:18 · 1702 阅读 · 0 评论 -
Android自定义权限
1、申明权限:在Manifest文件中使用Permission标签定义自己的权限:<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.costom.permission">...原创 2019-09-28 15:04:11 · 444 阅读 · 0 评论 -
java的重载、覆盖和隐藏的区别
重载:方法名相同,但参数不同的多个同名函数 注意:1.参数不同的意思是参数类型、参数个数、参数顺序至少有一个不同 2.返回值和异常以及访问修饰符,不能作为重载的条件 3.main方法也是可以被重载的覆盖:子类重写父类的方法,要求方法名和参数类型完全一样(参数不能是子类),返回值和异常比父类小或者相同(即为父类的子 类),访问修饰符比父类大...原创 2019-05-22 20:52:05 · 234 阅读 · 0 评论 -
Java内部类详解
说起内部类这个词,想必很多人都不陌生,但是又会觉得不熟悉。原因是平时编写代码时可能用到的场景不多,用得最多的是在有事件监听的情况下,并且即使用到也很少去总结内部类的用法。今天我们就来一探究竟。下面是本文的目录大纲: 一.内部类基础 二.深入理解内部类 三.内部类的使用场景和好处 四.常见的与内部类相关的笔试面试题 一.内部类基础 在Java中,可以将一个类定义在...转载 2019-05-24 20:36:03 · 99 阅读 · 0 评论 -
kotlin学习小记6--重载、默认参数
1、重载(overloads):方法名相同、参数不同(与返回值没有关系,因为jvm默认会为每个方法生成一个签名,而这个签名是由方法名和参数列表生成)fun smaile():Unit{ Log.i("wangsen", "smaile:");}fun smaile(str:String):Unit{ Log.i("wangsen", "smaile:");}上面的...原创 2018-10-01 22:11:37 · 298 阅读 · 0 评论 -
kotlin学习小记5--伴生对象
1、伴生对象companion objectclass Demo(var height:Int, var wieth:Int) { companion object { public var temp:String = "111" fun getMax(){} }}这样定义的方法和属性,就会类似于jav...原创 2018-10-01 21:18:37 · 169 阅读 · 0 评论 -
kotlin学习小记4---成员变量、方法
1、成员变量默认权限修饰符为public2、var、val都可以声明属性3、类的内部可以定义属性、构造方法参数中var/val修饰的都是属性(注意:如果构造方法的参数无var/val修饰,则是构造方法的一个普通参数)4、属性的初始化尽量在构造方法中完成,如果无法在构造方法中初始化,可以设置为局部变量5、var可以用lateinit延迟初始化,val可以用by lazy(lazy{}...原创 2018-09-26 23:52:45 · 264 阅读 · 0 评论 -
kotlin学习小记3---常量、变量和函数
1、常量、变量 const 修饰的量为编译期常量,在编译的时候就能够确定它的值,如果有引用它的地方,会在编译时直接替换为它的值,相当于java中final修饰; val 修饰的量虽然不可以修改,但不属于编译时常量,而属于运行时常量,也就是不可以重复赋值;类似于java中的final; var 修饰的量为变量,如:var str: String = “abc”;...原创 2018-09-25 23:54:22 · 139 阅读 · 0 评论 -
kotlin学习小记2---空类型和智能类型转换
1、空类型fun getName():String{ return null;}fun main(args: Array<String>){val name = getName()println(name?.length)//表示如果name为null,则返回null,不会调用length属性,避免空指针 //也可以如下调用val name = ...原创 2018-09-19 22:46:11 · 131 阅读 · 0 评论 -
kotlin学习笔记1---构造方法
1、所有类都最终继承自Any;2、一个类如果有构造方法,标准的写法如下:class Demo constructor(var name: String, var age: String){}如果该类中只存在一个构造方法时(如果构造方法前面constructor前面有其他修饰或者注解,constructor关键字是不可以省略的),可以简写为:class Demo(var name...原创 2018-09-18 23:00:54 · 127 阅读 · 0 评论 -
studio下载插件超时
有时候会发现studio 插件下载不下来。这是因为由于一些公司内外网比较严禁,因此我们访问时候需要设置代理。 先说下无法下载的额几种解决方式:第一种: 找到andorid studio的 plugins文件路径 C:\Users\smilemolj.AndroidStudio3.0\config\plugins 发现多余的plugins文件夹 C:\Users\smilemo...转载 2018-09-17 17:02:31 · 376 阅读 · 0 评论 -
onstartcommand 返回值
START_STICKY 粘性的 service强制杀死后,会尝试重新启动service,不会传递原来的intent(null)START_NOT_STICKY 非粘性的 service强制杀死后,不会尝试重新启动serviceSTART_REDELIVER_INTENT service强制杀死后,会尝试重新启动service,会传递原来的intent...原创 2018-09-15 17:01:11 · 653 阅读 · 0 评论 -
android ANR发生的原因总结和解决办法
android ANR发生的原因总结和解决办法 ANR的全称是application not responding,意思就是程序未响应,类似于我们在windows上见到的程序未响应。ANR发生会使用户觉得我们的程序不友好,那么什么情况会导致ANR的发生呢?首先ANR的发生是有条件限制的,分为以下三点:1.只有主线程才会产生ANR,主线程就是UI线程;2.必须发生某些输入事件或特...转载 2018-07-26 20:30:42 · 663 阅读 · 0 评论 -
设置ViewPager 自动滑动时间,方便展示动画
ViewPager.setCurrentItem(position),即使已设置动画,但是自动轮播的话没有动画效果;原因:因为ViewPager滑动之前的时间间隔太短,可以通过反射,去修改ViewPager自动滑动时间, 这样修改不会影响手动滑动时间通过反射重新为ViewPager设置Scrollerprivate void setViewPagerScroller() { try { F...转载 2018-07-03 21:15:27 · 1070 阅读 · 0 评论