Java
文章平均质量分 80
主要是以Java为主的知识管理
小山研磨代码
最强的男人要有迷离的眼神
展开
-
Android知识大纲梳理
五一了,列个大纲,准备梳理一下Android相关技术的深度与广度。这个系列是个大工程,从现在开始。一、Java部分1.1 基础语法与高级特性1.2 并发编程1.3 文件操作1.4 网络编程基础1.5 动态编程(反射、类加载、动态代理)1.6 JVM二、Android基础2.1 四大组件相关2.2 View体系2.3 Jetpack三、Android进阶3.1 Framework3.2 高级UI3.3 性能调优3.4 Android中网络编程的深入理解四、Kotlin相关4原创 2022-05-03 18:31:29 · 3084 阅读 · 0 评论 -
Java里的final关键字
final 是 Java 中一个常见关键字,表示的意思也很简单,就是“这个东西不能变”。许多程序设计语言都有自己的办法告诉编译器某个数据是“常数”。常数主要应用于下述两个方面:(1) 编译期常数,它永远不会改变(2) 在运行期初始化的一个值,不希望它发生变化对于编译期的常数,编译器(程序)可将常数值“封装”到需要的计算过程里。也就是说,计算可在编译期间提前执行,从而节省运行时的一些开销。在 Java 中,这些形式的常数必须属于基本数据类型( Primitives),而且要用 final 关键字原创 2021-12-09 18:10:29 · 706 阅读 · 0 评论 -
Android中的RxJava
最近准备梳理一下Kotlin,先复习一遍RxJava思想,做个学习笔记+伪代码,整个脉络分为三个部分。(一)使用场景RxJava是重量级、最复杂的框架(没有之一),JakeWharton 的巅峰之作,操作符非常丰富、特别庞大,学关键的内容,学思维方式,看PPT资料,学两遍。为什么要学习RxJava?改变思维(Rx思维)来提升效率,响应式编程/异步事件流编程Rx思维:起点(分发事件)—>…—>终点(消费事件),中间不会断掉且可以做拦截,链条式思维学习资料源码:JakeWhar.原创 2021-10-03 18:13:28 · 748 阅读 · 0 评论 -
Android序列化(1)Serializable
概念说到Java,万物皆对象。对象,是一个比较抽象的概念,他就是类存活在内存中的一个实例,有状态和行为,一旦JVM停止运行,对象的状态也会随之丢失。那么如何将这个对象当前状态进行一个记录,使其可以进行存储和传输呢?这就要用到序列化了。序列化(Serialization)把对象转换为字节序列的过程称为对象的序列化,把对象的状态保持下来,写入到磁盘或者其他介质中。在此过程中,先将对象的公共字段和私有字段以及类的名称(包括类所在的程序集)转换为字节流,然后再把字节流写入数据流。在随后对对象进行反序列原创 2021-04-23 18:15:32 · 331 阅读 · 0 评论 -
Java多态与泛型 ,动态绑定,静态绑定
(一)多态1.概念简单理解就是,一个对象可以表现出多种状态。可以看做是对抽象对象的逆过程,具体化抽象对象的行为。而它是如何实现这种表现出多种状态功能的呢。从Java语法上来讲有如下两种方式:1.1 使用继承:将父对象(更抽象的对象/或者说基类)设置成为一个或更多的他的子对象相等的技术,赋值之后,父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作。class Aninal{ void sound(发出声音);}//sound是动物的一个叫声方法class cat extend Anima原创 2021-04-19 11:49:26 · 1003 阅读 · 0 评论 -
Java源码分析之HashMap
本文基于Java 8HashMap使我们在开发过程中经常用到的数据结构,在面试过程中也会经常问到,本篇博文就基于JDK1.8具体分析一下HashMap的实现。首先看一下HashMap中的静态变量和一些类变量:// 默认最大容量static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16// HashMap的最大容量static final int MAXIMUM_CAPACITY = 1 << 30;// 默转载 2021-04-16 19:03:57 · 139 阅读 · 2 评论 -
Java语言高级特性(1)——泛型
你没看错,这个题目是2021年写下的。Android现在主推Kotlin,还有flutter的Dart语言,还有必要深扣“过气的”Java吗?当然还是要学的,今天第一篇先总结泛型相关的知识点,后期会做一个系列出来:SDK还是改成Java,Kotlin也需要编译成为Java运行;目前大量的第三方库和继承与接手公司既有代码都是Java所写的;Java语言应用不仅仅在Android,在后台开发中也是一个最流行的语言;大公司面试都要求我们有扎实的Java语言基础。所以,请大家不要轻视提高自己Java.原创 2021-04-04 18:09:24 · 253 阅读 · 0 评论 -
关于Java的多继承
文章目录一、为什么Java不支持多重继承?1.1 Java不支持多重继承1.2 为什么Java不支持多重继承?1.2.1 简单1.2.2 很少使用二、如何给女朋友解释为什么Java不支持多继承?2.1 继承2.2 多继承2.3 Java不支持多继承2.4 Java 8支持多继承三、实现多重继承3.1 接口3.2 内部类四、知乎帖子最近在学习NDK和JNI相关,讲到了C++多继承问题,想的Java是不支持多继承的,就顺带看看这些资料,做个记录。做股票软件,画K线图的时候看源码,又发现了他们定义的接口e转载 2021-03-20 12:41:24 · 630 阅读 · 1 评论 -
腾讯股票接口API(4)——计算分时线平均值
以茅台为例,通过上一篇《腾讯股票接口API(3)——根据股票代码获取分时数据》中获取到了股票的分时数据:{"code":0,"msg":"","data":{"sh600519":{"data":{"data":["0930 2000.00 925","0931 1981.01 1321","0932 1984.88 1754","0933 1980.03 2033","0934 1988.98 2243","0935 1979.03 2694","0936 1981.01 3102","0937 198原创 2021-03-17 17:58:11 · 6825 阅读 · 3 评论 -
Android定时任务
1. TimerTimer 是 JDK 自带的定时任务执行类,可以直接使用 Timer 来实现定时任务。这种实现方式比较简单,可以指定首次执行的延迟时间、首次执行的具体日期时间,以及执行频率,能满足日常需要。Timer 是线程安全的,因为背后是单线程在执行所有任务。Timer 是基于绝对时间调度的,而不是基于相对时间,所以它对系统时间的改变非常敏感。1.1 它的使用代码如下:import java.util.Date;import java.util.Timer;import java.util.原创 2021-03-17 11:34:28 · 815 阅读 · 0 评论 -
Java/Android中ScheduledExecutorService定时器任务
ScheduledExecutorService是专门用来执行定时任务的一个线程池,使用如下:import java.util.Random;import java.util.concurrent.Executors;import java.util.concurrent.ScheduledExecutorService;import java.util.concurrent.TimeUnit;/** * 测试定时任务 */public class Test { public s原创 2021-03-17 10:30:39 · 893 阅读 · 1 评论 -
腾讯股票接口API(3)——根据股票代码获取分时数据
前几天调用了一些腾讯股票的其他接口,很稳,免费而且不限制次数,需要的话大家可以参考:腾讯股票接口API(1)——根据股票代码获取详情腾讯股票接口API(2)——根据股票代码获取K线数据一、获取分时数据有点坑,找了好久么有满足美股的参数。一般沪深和港股请求如下:// 请求茅台数据为例https://web.ifzq.gtimg.cn/appstock/app/minute/query?code=sh600519获取数据为:{"code":0,"msg":"","data":{"sh600原创 2021-03-13 16:53:02 · 25329 阅读 · 14 评论 -
腾讯股票接口API(1)——根据股票代码获取详情
获取股票简要信息,找来找去也没有找到官方的文档,都是复制粘贴的,这里先简单记录一下。1.简要信息以贵州茅台为例:http://qt.gtimg.cn/q=s_sh600519 // sh600519是贵州茅台的股票代码,根据自己的关键字拼接URL可以直接在Android项目中请求,会得到如下一串字符串:v_s_sh600519="1~贵州茅台~600519~2075.95~42.95~2.11~38930~794942~~26078.04~GP-A";这里v_s代表简要信息,sh600519原创 2021-03-05 13:42:00 · 57031 阅读 · 16 评论 -
腾讯股票接口API(2)——根据股票代码获取K线数据
一、使用腾讯股票API,获取上证指数的日k数据:参考:腾讯股票API获取上证指数// 1. https://web.ifzq.gtimg.cn/appstock/app/fqkline/get 固定访问链接// 2. param=代码,日k,开始日期,结束日期,获取多少个交易日,前复权// 2.1 usAAPL.OQ 股票代码,这里是us是美股,AAPL是苹果,“.OQ”是美股拼接后缀,其他不需要拼接// 2.2. 500代表获取多少个交易日,500实际查出来的是501条数据,多一条//原创 2021-03-10 17:18:48 · 29991 阅读 · 3 评论 -
Realm(Java)数据库使用文档(测试与调试)
文章目录15.1 Android Studio调试15.2 NDK调试Realm(Java)数据库使用文档(目录)有关如何将Realm与JUnit 3,JUnit4,Robolectric,Mockito和PowerMock结合的信息,请参见unitTest示例。15.1 Android Studio调试使用Android Studio或IntelliJ时,需要注意一个小“陷阱”:调试器会...翻译 2020-03-29 19:08:59 · 289 阅读 · 0 评论 -
Realm(Java)数据库使用文档(第三方类库)
文章目录14.1 GSON14.2 序列化Serialization14.3 原始清单Primitive lists14.4 故障排除Troubleshooting14.5 Jackson 数据绑定14.6 Kotlin14.7 Parceler14.8 Retrofit14.9 Robolectric14.10 RxJavaRealm(Java)数据库使用文档(目录)本节介绍如何将Realm...翻译 2020-03-29 18:35:07 · 400 阅读 · 0 评论 -
Realm(Java)数据库使用文档(Threading)
文章目录13.1 线程示例13.2 跨线程使用Realm13.3 Android框架线程13.3.1 异步任务13.3.2 IntentService13.4 多进程支持13.5 冻结对象Realm(Java)数据库使用文档(目录)Realm使得在多个线程上处理数据变得毫不费力,而不必担心一致性或性能,因为 对象 objects 和 查询 queries 始终在自动更新。您可以对不同线程中的活...翻译 2020-03-29 15:31:17 · 312 阅读 · 0 评论 -
Realm(Java)数据库使用文档(加密Encryption)
Realm(Java)数据库使用文档(目录)请注意我们许可的“出口合规性”部分,因为如果您位于受到美国出口限制或禁运的国家/地区,则会对使用Realm施加限制。通过使用RealmConfiguration.Builder.encryptionKey将512位加密密钥(64字节)传递给配置,可以在磁盘上对Realm文件进行加密:byte[] key = new byte[64];new ...翻译 2020-03-29 14:39:11 · 395 阅读 · 0 评论 -
Realm(Java)数据库使用文档(通知Notifications)
可以注册一个侦听器以接收有关Realm或其实体更改的通知。当Realm整体发生变化时,将发送领域通知;更改、添加或删除单个对象时,将发送收集通知。通过调用removeChangeListener或removeAllChangeListeners方法来停止通知传递。如果注册侦听器的对象被垃圾回收,或者其Realm实例已关闭,则通知也将停止。只要您需要通知,就应该对正在听的对象保持强烈的参考。//...翻译 2020-03-27 20:10:31 · 385 阅读 · 0 评论 -
Realm(Java)数据库使用文档(迁移Migrations)
Realm(Java)数据库使用文档(目录)使用任何数据库时,您的model类(即数据库架构)很可能会随着时间而改变。由于Realm中的model类被定义为标准对象,因此更改架构就像更改相应RealmObject子类的接口一样容易。9.1 本地迁移对于未同步到服务端的Realms,执行迁移需要对RealmConfiguration进行两项更改:设置新的架构版本,以及编写代码以执行迁移。...翻译 2020-03-27 19:49:16 · 427 阅读 · 0 评论 -
Realm(Java)数据库使用文档(查询Queries)
文章目录8.1 筛选8.2 逻辑运算符8.3 排序8.4 结果限制8.5 唯一值8.6 链式查询(Chaining queries)8.7 关联查询(Link queries)8.8 自动更新结果8.9 聚合8.10 迭代和快照8.11 删除8.12 异步查询Realm(Java)数据库使用文档(目录)All fetches (including queries) are lazy in R...翻译 2020-03-27 19:31:31 · 1179 阅读 · 0 评论 -
Realm(Java)数据库使用文档(Writes)
文章目录7.1 创建对象7.2 交易区块7.3 异步事务7.4 更新strings和字节数组byte arrays7.5 批量更新Realm(Java)数据库使用文档(目录)与读取操作不同,Realm中的写入操作必须包装在事务中。在写操作结束时,您可以提交事务或取消事务。提交事务会将所有更改写入磁盘(如果Realm已同步,则将其排队以便与Realm对象Server同步)。如果取消写事务,则所有...翻译 2020-03-25 20:58:09 · 258 阅读 · 0 评论 -
Realm(Java)数据库使用文档(模式Schemas)
Realm(Java)数据库使用文档(目录)Realm的默认架构只是项目中的所有Realm模型类。但是,您可以更改此行为-例如,您可能希望限制Realm仅包含类的子集。为此,请创建一个自定义RealmModule。// 创建module@RealmModule(classes = { Person.class, Dog.class })public class MyModule {}...翻译 2020-03-25 19:40:32 · 347 阅读 · 0 评论 -
Realm(Java)数据库使用文档(Relationships)
文章目录5.1 多对一5.2 多对多5.3 逆关系5.4 基元列表(Lists Of Primitives)Realm(Java)数据库使用文档(目录)您可以将任何两个RealmObject链接在一起。在Realm中关系很轻便:遍历链接在速度或内存方面并不占用过多资源。让我们探索一下Realm允许您在对象之间进行定义的不同类型的关系。5.1 多对一要建立“多对一”或“一对一”关系,请给mo...翻译 2020-03-25 19:29:10 · 282 阅读 · 0 评论 -
Realm(Java)数据库使用文档(RealmObjects)
文章目录4.1 自动更新对象4.2 自定义对象4.3 RealmModel 接口4.4 JSON4.5 适配器Adapters4.6 意图IntentsRealm(Java)数据库使用文档(目录)4.1 自动更新对象RealmObjects是实时的,可自动将视图更新为基础数据。 您无需刷新对象。 对对象的更改会立即反映在查询结果中。realm.executeTransaction(new ...翻译 2020-03-25 19:05:38 · 575 阅读 · 0 评论 -
Realm(Java)数据库使用文档(Models)
文章目录3.1 字段类型3.2 必填字段3.3 主键3.4 索引属性3.5 忽略属性3.6 计数器Counters3.7 覆盖属性名称Realm(Java)数据库使用文档(目录)通过继承RealmObject基类来创建Realm模型:public class User extends RealmObject { private String name; p...翻译 2020-03-23 21:39:43 · 329 阅读 · 0 评论 -
Realm(Java)数据库使用文档(入门)
文章目录1.1 基本要求1.2 安装1.2.1 示例代码1.3 查看Realm数据库1.3.1 Realm Studio1.3.2 Stetho Realm1.4 Realm初始化1.1 基本要求Android Studio 1.5.1+JDK 7.0+Android SDK最新版本最新的Realm 7.0版本: Android API 16+ (Android 4.1+).说明:...翻译 2020-03-19 21:26:11 · 777 阅读 · 0 评论 -
Realm(Java)数据库使用文档(Realms)
文章目录2.1 初始化2.1.1 Realm配置2.2.2 默认Realm2.2 打开一个同步的Realm2.3 只读Realms2.4 内存Realms2.5 动态Realms——DynamicRealm2.6 关闭Realms2.7 自动刷新Realm是移动设备数据库的实例。 Realm可以是本地的或同步的。同步的Realm使用Realm Object Server透明地将其内容与其他设备同...翻译 2020-03-23 03:54:55 · 822 阅读 · 0 评论 -
Realm(Java)数据库使用文档(目录)
Realm 数据库提供了Java、Kotlin、Swift、Object-C、JavaScript、.NET平台,本系列是Java平台(7.0.0-beta)。我会尽量按照官方文档给出的顺序往下逐步翻译,有需要的小伙伴请关注。一、入门二、Realms三、Models四、使用RealmObjects五、Relationships六、Schemas七、Writes八、Queries...翻译 2020-03-19 21:12:41 · 376 阅读 · 0 评论 -
CMD命令下输入cd命令切换路径并没有切换过去
奇葩问题,如题。记录一下,希望帮到大家。输入cd命令切换路径并没有切换到目标路径下,如下:Microsoft Windows [版本 10.0.18362.418](c) 2019 Microsoft Corporation。保留所有权利。C:\Users\Administrator>cd d:\Java\jdk8\binC:\Users\Administrator>...原创 2019-10-13 19:16:26 · 21475 阅读 · 17 评论 -
Fresco介绍 - 一个新的android图片加载库
在Android设备上面,快速高效的显示图片是极为重要的。过去的几年里,我们在如何高效的存储图像这方面遇到了很多问题。图片太大,但是手机的内存却很小。每一个像素的R、G、B和alpha通道总共要占用4byte的空间。如果手机的屏幕是480*800,那么一张屏幕大小的图片就要占用1.5M的内存。手机的内存通常很小,特别是Android设备还要给各个应用分配内存。在某些设备上,分给Facebook App的内存仅仅有16MB。一张图片就要占据其内存的十分之一。翻译 2015-04-10 17:44:28 · 1518 阅读 · 1 评论 -
Android图片上传(头像裁切+原图原样)
还是那句话,最近项目比较忙拖了很久这篇文章终于完成了!先看一下效果图:(一)头像裁切、上传服务器(效果图)一般都是有圆形显示头像的,这里我自定义了一个ImageView,页面很干净但是看着很上档次吧!点击头像从底部弹出一个对话框,提示用户头像来自相机或者相册,这都是常规流程。上传完成后默认的“程序员头像”换成了萌妹子(二)普通图片上传服务器(效果图)原创 2015-01-18 15:21:03 · 17718 阅读 · 30 评论 -
桌面便签程序详解
小子,当你看到本文章时尼玛就是幸运儿啦!桌面便签软件听过吗?见过吗?没错,就是android上常用的软件之一,比如曾经的Sticky Note,就曾非常流行,Sticky Note的介绍可以参见 http://www.tompda.com/c/article/11778/ 而实际上使用android平台对widget开发的支持,桌面便签类软件是非常易于开发的。本文通过逐步实现原创 2011-08-02 07:50:46 · 1655 阅读 · 1 评论 -
Android 底部TabActivity(0)——开篇(界面分析|系列文章目录)
当下主流的软件没有一个统一明确的风格,App框架什么样的都有,但个人钟情于页面底部Tab分签架构,移动设备的屏幕虽然越来越大,但是显示的内容还是有限,为了能展示更多的内容,方便简洁的操作习惯中Tab架构是不二选择,分为顶部Tab和底部Tab。所以小山准备出一系列关于Tab的Blog,作为自己代码备份,也希望能帮到大家扩展开发思路,那就更是功德无量了。由于是Blog讲解,代码尽量简单为好,不会大量的原创 2014-09-29 01:42:19 · 2520 阅读 · 3 评论 -
Android基础控件使用细节——ListView
这个系列准备了很久,由于项目比较紧,一直没时间写博客。ListView是Android开发中使用比较广泛的控件了,这里会结合实际开发中的问题,做一个汇总,并不断更新补充,希望以后可以帮到更多需要的朋友!有时候为了精简代码,不使用xml布局文件了,直接setContentView(mListView);,这时就要用到代码里硬编码设置ListView的样式了,本人开发时遇到一个原创 2015-01-07 00:07:47 · 2122 阅读 · 2 评论 -
Android 底部TabActivity(2)——ActivityGroup|顶部底部均有Tab标签之一
今天这篇文章记述一下页面上下均有Tab的特殊需求!使用了过时的ActivityGroup。再看一下整个Project的结构,如下下面逐一介绍一下实现过程,具体实现还是看注释吧,代码也不是很多,就不啰嗦了。step1:首先是主界面MainActivity.java原创 2014-12-09 17:24:22 · 3303 阅读 · 0 评论 -
Android 底部TabActivity(3)——ActivityGroup|顶部底部均有Tab标签之二
上一篇使用过时的ActivityGroup简单实现了顶部底部均有Tab标签的效果,是页面底部只有文字的样式,今天想完善一下效果,底部实现文字加图标的样式。本文属于半成品,本来想着放弃的,想着先放博客吧,好歹也是一种思路,以后作参考用!追求完美效果的可以忽略本篇,我会在后续文章中实现更优的效果!先看下效果图首先是主页面MainActivity.java,这种方式其实不是真原创 2014-12-10 21:42:43 · 2274 阅读 · 1 评论 -
Android基础控件使用汇总
平时写代码总会遇到一些问题,准备写一个比较基础的控件使用汇总系列!本系列持续不定期更新,希望能够帮到需要的朋友!get!Android基础控件使用细节——TextViewAndroid基础控件使用细节——ButtonAndroid基础控件使用细节——EditTextAndroid基础控件使用细节——ImageViewAndroid基础控件使用细节——WebVie原创 2014-12-23 09:04:38 · 1508 阅读 · 0 评论 -
在Eclipse统计项目的代码行数
使用Eclipse可以方便的统计工程或文件的代码行数,方法三个步骤如下: 1、选中需要统计的项目或文件夹,在Eclipse顶部菜单栏打开Search,然后选择File...2、勾选使用正则表达式(Regular expression),在搜索文本框输入“\n” ,在文件名规则中输入*或*.java ,在搜索范围里选中Enclosing projects原创 2015-11-13 15:06:02 · 33866 阅读 · 0 评论 -
新的目标,新的开始【开篇词】
掐指算来,从10年开始已经入行到现在6个年头。现在身边工作的都是90后,感觉自己压力蛮大的,吼吼吼^O^ ~ 回头看看之前的日志列表,说不出的一种感觉,有失落、有遗憾。一路磕磕碰碰走来,一直在各大论坛索取,只是偶尔零零星星在论坛帖子下面讨论一下、简单做个回复,没能坚持下来分享点什么,觉得很遗憾。一来文章组织能力写作水平有限,二来技术不自信没有太深入的研究探索,这次鼓起勇气觉得应该有个新的开始,希望原创 2016-04-26 00:34:53 · 1270 阅读 · 0 评论