java
文章平均质量分 80
moon-sky
这个作者很懒,什么都没留下…
展开
-
关于泛型的类型擦除
关于泛型的类型擦除什么是泛型?在探讨类型擦除之前,我们还是先了解一下,泛型的概念。泛型是为了参数化类型,定义方法时传入形参,而调用方法时使用形参,参数化类型就是由确定的类型参数化,改为不确定的类型,而在调用时使用具体类型的参数,从而实现解耦。这种参数类型可以用于类、接口、方法中,分别被称为泛型类、泛型接口和泛型方法。为什么使用泛型参考文章这里的栗子是别人写的,个人觉得挺形象的,粘贴一下试想你需要一个简单的容器类,或者说句柄类,比如要存放一个苹果的篮子,那你可以这样简单的实现:class Fr原创 2021-11-04 14:18:27 · 374 阅读 · 0 评论 -
【源码学习】关于Activity的启动模式
【源码学习】关于Activity的启动模式我们都知道Activity的启动模式作为android的基础问题经常在面试中反复被提及。那么究竟这个启动模式到底是什么?什么时候会用到?怎么用?启动模式是什么?我们知道activity作为android应用的四大组件之一,也是作为用户交互界面的承载者,从一个Activity A跳转到另外一个Activity B的时候,以及从Activity B点击返回键的时候,在底层上到底发生了吗?这里我们先来了解一下几个概念:ActivityRecord TaskRecor原创 2021-04-02 11:08:02 · 130 阅读 · 0 评论 -
【性能优化】android应用内存优化那些事
【性能优化】android应用内存优化那些事android GC机制内存被管理的环境(例如ART或Dalvik虚拟机)会跟踪每个内存分配。一旦确定程序不再使用内存,便将其释放回堆,而无需程序员干预。在托管内存环境中回收未使用的内存的机制称为垃圾回收。垃圾回收有两个目标:在程序中查找将来无法访问的数据对象;(可达性分析算法)回收那些对象使用的资源。(垃圾回收算法)回收哪些内存?引用的分类强引用:代码中普遍存在的,只要强引用还存在,垃圾收集器就不会回收 掉被引用的对象。软引用:SoftRe原创 2021-03-30 22:15:04 · 129 阅读 · 0 评论 -
【性能优化】启动优化那点事
【性能优化】启动优化那点事冷启动、热启动和温启动冷启动(cold start)冷启动是指应用程序从头开始:系统进程还没有创建应用进程的前提下,开始创建应用程序的进程。自启动设备启动后或系统终止应用程序启动后首次启动应用程序时,就会发生冷启动。这种类型的启动在最小化启动时间方面提出了最大的挑战,因为与其他启动状态相比,系统和应用程序要做的工作更多。在冷启动的前期,系统执行三个任务:加载并开始运行APP启动后立即显示空白window页面用于后续页面显示创建App进程一旦系统创建了应用程序流程原创 2021-03-29 21:31:19 · 205 阅读 · 0 评论 -
【源码学习】关于IdleHandler
【源码学习】关于IdleHandlerIdleHandler,不知道你们是否了解,反正对于我来说比较陌生,在我的业务里好像从来没有用过,而一些面试官却会问到的知识点。真是’面试是学习的最好方式‘,既然别人问到了,那我们就来了解一下,这到底是什么怎么样的一个存在,保持好奇心。IdleHandler是什么它是一个接口它存在于MessageQueue中,被定义为发现一个线程开始进入等待消息的状态的回调接口 /** * Callback interface for discovering wh原创 2021-03-24 16:39:03 · 186 阅读 · 0 评论 -
[源码学习]ViewModel是什么?
[源码学习]ViewModel是什么?ViewModel是Android架构组件包Jetpack的一个组件,它也是MVVM应用架构中的核心(Model-View-ViewModel),所以我们有必要学习一下ViewModel的基本原理学习源码,我们还是老规矩,先看类结构图。你没看错,ViewModel作为一个抽象类,只有一个空方法,我们来看看这个类的介绍(Google developer官网介绍)ViewModel类旨在以生命周期感知的方式来存储和管理UI相关的数据。ViewModel允许数据原创 2021-03-23 17:45:29 · 977 阅读 · 0 评论 -
OkHttp源码分析自学
OkHttp源码学习过程记录本篇主要用于记录自己学习OkHttp源码的过程,如果大家看到有错误的地方,请一定指正,发布文章最怕的就是误导别人。我会按照我个人总结的步骤来一步步学习源码,可能方式上也不是最好的,也请大家多多包涵。OkHttp的优点以下来自okHttp官网说明HTTP/2允许指向同一个Host的请求共享一个socket连接池减少请求延迟GZIP压缩下载大小通过缓存请求返回结果减少重复请求使用简单,它支持同步和异步请求针对优点逐个分析HTTP/2允许指向同一个host的原创 2021-03-23 14:46:23 · 245 阅读 · 0 评论 -
[源码学习]ReentrantLock那些事
[源码学习]ReentrantLock那些事作为面试中肯定避免不了会被问到的多线程处理机制,ReentrantLock也是出场率很高,我们先列出几个问题,然后有针对性的从源码中找到答案ReentrantLock的实现原理ReentrantLock相较于Synchronized的优势我个人习惯看一下官方文档的说明,下面简单翻译一下具有与使用同步方法和语句访问的隐式监视器锁相同的基本行为和语义的可重入互斥锁,但具有扩展功能。这句话比较简单,不过里面的关键词也是我们经常面试的重点,例如什原创 2021-03-22 15:44:54 · 80 阅读 · 0 评论 -
【源码学习】线程池源码自学篇
【源码学习】线程池源码自学篇线程池作为项目中经常用到的类,也在面试中备受青睐,个人对于源码也只是读过一些,很多知识点都是一知半解,借此机会自己再温故一下。我是在边自学边写这些东西,可能语言上或者逻辑上不太完善,请大家不要介意。认识线程池线程池是什么?官网解释:线程池主要解决两个问题在需要执行大量线程的场景,减少创建每个线程带来的开销,从而提升软件性能它提供了一些方法来约束和管理执行任务集合时消耗的资源(包括线程)我们先看一下这个ThreadPoolExcutor的类图,简单有一个原创 2021-03-19 14:38:47 · 116 阅读 · 0 评论 -
Java Lambda 表达式
Java Lambda 表达式[翻译]原文链接http://tutorials.jenkov.com/java/lambda-expressions.html#single-method-interface如有侵权,请告知。Java Lambdas和单一方法接口匹配Lambda到接口具有默认和静态方法的接口Lambda表达式与匿名接口实现Lambda类型推断Lambda...翻译 2019-02-21 10:28:08 · 173 阅读 · 0 评论 -
为什么要用RxJava
关于为什么要用RxJava原文链接https://guides.codepath.com/android/RxJava#handling-configuration-changes如果有侵权问题,请告知!概述RxJava官方描述为“使用可观察序列构建异步和基于item的程序的库”。但这究竟意味着什么呢?让我们来一起聊一聊这个库。编写健壮的Android应用程序的挑战之一是不断变化的输...翻译 2019-02-26 15:02:29 · 932 阅读 · 0 评论 -
为什么要在Android研发中使用RxJava
为什么要在Android研发 中使用RxJava【翻译】原文链接https://medium.com/@lpereira/why-should-we-use-rxjava-on-android-c9066087c56c如有侵权,请立即告知!Reactive Extensions(Rx)是一组接口和方法,它们为开发人员提供了一种快速解决问题,简单维护和易于理解的方法。RxJava提供了一...翻译 2019-02-21 18:54:23 · 293 阅读 · 0 评论 -
第一个servlet学习
First Servlet(Servlet 学习日记)前期准备IDE: MyEclipse 2014详细步骤新建一个web project右键新建servlet 3.代码详细如下import java.io.DataOutputStream;import java.io.IOException;import java.io.PrintWriter;import javax.servle原创 2015-08-01 12:47:34 · 658 阅读 · 0 评论 -
JAVA异常处理机制
JAVA异常处理机制原则调用者关心,则throw出去;不关心则try……catch 并且内部处理 有返回值的则throw,没有返回值的则try……catch 不让catch方法体为空尽早捕获Use checked expections for recoverable conditions and runtime exceptions for programming errors (Fro原创 2015-09-09 18:48:45 · 89 阅读 · 0 评论 -
代码整洁之道(2)
代码整洁之道-学习2原创 2015-10-13 20:46:50 · 575 阅读 · 0 评论 -
代码整洁之道(4)
代码整洁之道(4)最重要的部分 第十七章是Bob大叔对于代码整洁的原则的总结。对于我们很有指导意义。希望大家以后可以参考着对于自己的项目来进行一次整理。注释C1不恰当的信息: 让注释传达本该更好地在源代码控制系统、问题追踪系统或者任何其他记录系统中保存的信息,是不恰当的。例如修改历史记录只会用大量过时而无趣的文本搞乱源代码文件 。通常,作者、最后修改时间、SPR数等元素不该在注释中出现。注原创 2015-10-15 18:54:29 · 599 阅读 · 0 评论 -
AES+JNI 加密方案
首先Aes加密方案比较简单,也比较高效。至于它的优点,大家自己去网上搜索吧。我这里只是说一种android上应用AES的方案。 至于AES的代码大家也可以从网上搜索到,我这里直接贴上吧package com.turingfac.encryptiondemo;import java.security.SecureRandom;import javax.crypto.Cipher;import ja原创 2015-12-04 14:38:12 · 2694 阅读 · 0 评论 -
Java 关于 equals与操作符==的区别
在java语言中,经常容易引起大家疑惑的一个部分就是 equals 与 ==的区别,到底他们都有哪些区别呢?我们首先来追本溯源,看看equals到底是从哪里来的?它最原本的机制是什么样子的? 在java中所有对象的都有一个父类就是Object,既然针对每个对象都可以调用equals,那么自然这个equals也是父类应该有的方法。(实在不知道这个注释怎么粘贴,凑合看吧)public boolean原创 2017-08-01 20:24:46 · 269 阅读 · 0 评论 -
Heap And Stack 堆与栈的区别
交代一下背景,最近一直在看C++的相关知识,今天刚好看到“引用”这一部分。于是好奇心驱使,我想知道它与java的引用到底有什么不同,于是开始搜索大法,java的引用更加与c++的指针更加类似,但是也不一样,当然这不是重点。然后搜索的时候,突然又想知道在内存中的存储情况,于是开始搜索……,搜索……。对于heap与stack的区别我又模糊了,于是到了今天的重点,顺便记录一下自己搜索的成果。英文好的同学原创 2017-08-03 22:36:53 · 4212 阅读 · 0 评论 -
一种更快的针对Java对象深拷贝的方法(翻译)
一种更快的针对Java对象深拷贝的方法(翻译) 翻译自Faster Deep Copies of Java ObjectsThe java.lang.Object root superclass defines a clone() method that will, assuming the subclass implements the java.lang.Cloneable in翻译 2018-01-24 17:39:53 · 575 阅读 · 0 评论 -
关于java分包原则
关于java分包原则 对于软件分包是架构一个代码的基础工作,也是每个工程师需要面对的问题。究竟按照什么方式来进行分包,也是众说纷纭,我这里也只是说一下自己的分包策略,请轻拍。首先,我先说一下两个原则:横向纵向那么接下来说一下,如何为横向。横向就是按照业务划分,例如我要做一个微信,微信中有聊天对话界面、设置界面、摇一摇界面等,那么针对这些需求,我会把创建几个包,方便归纳逻原创 2018-01-11 21:28:20 · 4329 阅读 · 0 评论 -
关于String 这个类
再JAVA 中 String 这个类比较特殊,凡是新的String 对象并且赋值过,则不能改变该对象的值。可以参考Java API中关于String的APIThe String class represents character strings. All string literals in Java programs, such as "abc", are implemented原创 2015-04-11 20:08:59 · 756 阅读 · 0 评论