Java
二仪式
写一些自己研究过的东西。
展开
-
DecimalFormat 在多语言环境下的crash及解决方案
问题场景当使用decimalFormat传入字符串参数进行格式设置,但是需要注意字符串是会根据语言环境自动进行修改的,在某些特定的语言环境下,字符串会变成意想不到的结果。比如波斯语,阿拉伯语,德语演示代码DecimalFormat df = new DecimalFormat("0.0000");String res = df.format((float) 1 / itemCount);在德语环境下".“会被自动修改成”,"导致df.format函数报错在阿拉伯语环境下"#"会被自动修改成别原创 2020-08-21 11:20:31 · 741 阅读 · 0 评论 -
简单工厂模式 工厂模式和抽象工厂模式
看了其他人的很多博客,死记硬背了很多术语,表达的时候总是有问题。念念不忘,终有回想,某一刻,灵光闪现,总结了几句这三种工厂模式的描述,可以供大家参考简单工厂模式在业务逻辑里面根据参数直接new不同的数据,也就是数据层和逻辑层直接交互工厂模式工厂模式,就是在数据层和业务逻辑中间加了一层,通过工厂类new具体的数据对象,返回给逻辑层抽象工厂模式其实就是在工厂模式的基础上,把多个类型的数据...原创 2020-04-30 11:02:22 · 277 阅读 · 0 评论 -
快速生成单例代码模版
目的最好的程序员一定是最懒的程序员,当你厌烦了敲样板代码,不想让宝贵的时间浪费在已经滚瓜烂熟的语句,那么不妨试一下使用模版代码。效果原理实际就是用了android studio自带的liveTemplate功能。步骤首先打开Settings->Editor->Live Template->点击红色圆圈处新增将以下代码复制到 Template text:编辑框中...原创 2020-03-12 20:55:37 · 368 阅读 · 1 评论 -
RxJava 错误处理操作符知识点总结
RxJava的错误处理机制感谢 RxJava 错误处理操作符(Error Handling Operators)RxJava中的错误处理操作符分为两种,catch,retryJava把Throwable分为两种,a. 一种是比较严重的系统问题,Error,比如OutOfMemoryErrob. 另外一种是异常,Exception,比如RuntimeException。c. 使用...原创 2020-01-06 14:52:38 · 277 阅读 · 1 评论 -
检查json字符串用gson反序列化之后是否有空对象
使用场景gson转换之后的对象如果不经过检查就使用,很容易导致空指针错误。json中的每一个数据都单独做检查,就会导致代码冗长,而且不利于维护,因此我做了一个小工具,用来在gson对字符串转换完成之后进行校验,避免在使用对象的过程中出现问题。原理主要利用的是反射的方法,使用getClass()函数获得对象的类型,getDeclaredFields函数可以获得这个类的所有成员变量,包括私有的变...原创 2019-05-31 10:30:55 · 1000 阅读 · 0 评论 -
RxJava学习笔记
RxJava学习RxJava学习笔记是什么异步比喻:就好比警察和小偷,警察是观察者,小偷是被观察者,小偷实行偷窃的行为就是事件,警察给小偷进行了改造,导致小偷在偷窃的时候就会通知警察过来抓捕优点简洁四大组件observable,被观察者observer观察者,subscriber观察者subscribe,订阅操作onNext,onError,onComplete,也就是事...原创 2019-04-17 18:26:55 · 206 阅读 · 0 评论 -
RxAndroid 学习笔记
这篇博客是学习RxAndroid过程中做的笔记,学习的博客为优美的异步nicolelili1的Rx相关文章概念FuncX X表示参数个数emit 发射retrofit 改造<? extends T>表示上界通配符,表示T和它的子类<? super T>表示下界通配符,表示T和它的父类响应式编程A=B+C A经过赋值之后,如果B的值改变了,A的...原创 2019-01-07 15:40:04 · 318 阅读 · 0 评论 -
兔子生兔子的Java解决方式
最近在学python,其中有这样一道题 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?没有做出来,先用笔在纸上算的时候也是稀里糊涂的。后来想办法建模运算,毕竟Java语言号称模拟自然界,向来是有办法解决的,过程中遇到了很多问题,也有一些思考,现在把我认知到的内容分享给大家,希望对大家有帮助 第一原创 2016-12-09 17:08:56 · 5048 阅读 · 3 评论 -
Object类的方法
前言Java语言不同于C++语言,是一种单根继承结构语言,也就是说,Java中所有的类都有一个共同的祖先。这个祖先就是Object类。object类的结构 如图可知,Object类有12个成员方法,按照用途可以分为以下几种 1,构造函数 2,hashCode和equale函数用来判断对象是否相同, 3,wait(),wait(long),wait(long,int),notify(),not原创 2016-12-05 18:20:05 · 64206 阅读 · 7 评论 -
Java虚拟机结构
Java虚拟机基本知识Java虚拟机的执行过程为1,加载类,加载的实际上是class文件 2,执行引擎 3,垃圾回收机制Java虚拟机中的分块1,堆,存储所有的对象,被所有的对象共享 2,Java方法栈,存放Java的代码调用流程,每个线程都有自己对应的栈 3,本地方法栈,存放native代码的调用流程,每个线程都有自己对应的栈 4,方法区,又叫静态区,所有线程共享,存储所有的class,原创 2016-12-05 16:14:07 · 310 阅读 · 0 评论 -
子网掩码和prefixlength
Prefix Length:前缀长度,mask长度,即子网掩码为1的位数。 有一些情况下会返回前缀长度,但是需要的是子网掩码,需要代码进行转换。 代码如下String[] parts = addr.split("/"); String ip = parts[0]; int prefix; if (parts.length < 2) { prefix = 0原创 2016-09-08 15:35:27 · 16150 阅读 · 0 评论 -
Java多线程中的final和static
看Android的多线程发现其实是Java的多线程。我找了一本Java编程思想学习Java的并发机制。写了一个demo,遇到一些问题,虽然最后想明白了,但是也暴露了我的Java基础差劲的事实。之后我会通过写博客的方式来提高Java水平。现在说一下我的问题吧。 问题链接这个问题最后答案的核心是: Java的静态变量在应用时只会初始化一次,但是可以多次赋值,下面贴出两个回答的代码片段来说明这个问题原创 2016-08-12 15:36:28 · 3375 阅读 · 0 评论 -
Java代码的执行顺序
public class FatherClass{ static { System.out.println("father static block"); } { System.out.println("father block"); } public FatherClass() { Syste原创 2016-08-12 16:39:57 · 279 阅读 · 0 评论 -
Java synchronized
synchronized关键字用于给资源加锁。资源可以是函数。所有的对象都自动含有单一的锁。也就是说锁是以对象为单位进行配置的。如果对象中有两个函数加了锁。那么如果一个线程调用一个函数,耗时比较长,那么另外一个函数也会阻塞。如果这两个函数位于Android应用的主线程中,那么很有可能会造成ANR错误。原创 2016-08-23 16:58:57 · 200 阅读 · 0 评论 -
Lock API文档翻译
Lock是一个接口,英文api中的介绍如下: Lock implementations provide more extensive locking operations than can be obtained using synchronized methods and statements. They allow more flexible structuring, may have qu翻译 2016-09-13 17:13:14 · 511 阅读 · 1 评论