Java基础
RikkaTheWorld
一个OTAKU
展开
-
Android性能调优之需要掌握的JVM知识
今天开始学习性能调优,跟着网上大神的blog整理。性能调优有分很多种:绘制优化内存优化电量优化启动优化存储优化流量优化图片优化Apk包体优化…既然要深入到这些优化去,仅仅是掌握一些工具 TraceView、Lint、LeakCanary是不够的,我们要去学习更多的知识、框架,从系统源码、虚拟机即低层的角度去看待这些优化。所以在去学工具框架之前,我们有必要从头梳理一遍An...原创 2020-01-20 14:03:05 · 1535 阅读 · 2 评论 -
Java算出两个坐标间所有的点,并补齐点保证BFS可以搜索
这几天工作遇到了一个问题。一个区域做分割,两个点连成一个连线后,需要算出分成两个区域后的每个区域的面积。算面积需要BFS八个方向,所以需要保证连的线必须是封闭,且形成后的区域的点,八个方向都搜不到另一个区域去。所以这个时候需要把 线变得更加“厚”一点,因为之前的做法一条斜线是一定能从斜上方过去的。 public ArrayList<Integer> getLineValue(P...原创 2020-01-07 10:30:33 · 669 阅读 · 0 评论 -
浅学设计模式之状态模式 (8/23)
1、状态模式的概念状态模式(State),当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类状态模式是对一个对象所处的状态作分析。在不同的状态下表现不同的行为。状态模式就是对不同状态的行为进行解耦。2、使用场景这里还是举大话设计模式的例子。就拿一个人一天工作的行为来说吧,这个人一天有五种状态,上午、中午、下午、傍晚、晚上各一种。 然后又有个参数是 是否完成工作,...原创 2019-07-11 15:51:00 · 311 阅读 · 0 评论 -
浅学设计模式之观察者模式 (7/23)
1、观察者模式的概念观察者模式:定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。观察者模式的编程核心就是监听一个对象的行为,在行为改变时通知所有的订阅者对象观察者模式也是面向对象编程中的一种很重要的模式。它所衍生出来的编程风格又称为 发布-订阅(Publish/subscribe)模式,响应...原创 2019-07-11 11:34:49 · 163 阅读 · 0 评论 -
浅学设计模式之建造者模式 (6/23)
1、建造者模式建造者模式(Builder),将一个复杂对象的构建与它的表示分离,是的同样的构建过程可以创建不同的表示建造者在Android中,至少也是23种设计模式使用频率能排进前三的模式了吧。因为这个模式太常用了所以我就画个UML图和写写模板代码就好了…2、UML图建造模式中,主要是Builder为一个创建入口,它可以通过方法初始化数据。在实际开发中,其实分出Buidler和Co...原创 2019-07-10 17:07:12 · 153 阅读 · 0 评论 -
浅学设计模式之外观模式 (5/23)
1、外观模式的概念外观模式(Facade),为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。定义就是这么晦涩的。可以把这句话拆成几个属性来理解:子系统就是我们自己是用的类子系统的一组接口这个类会使用的 多个接口,每个接口都有它的方法要去实现一个高层接口,为这些接口提供一致界面通过连接这个高层接口,就相当于连接了之前的那些...原创 2019-07-10 16:26:39 · 185 阅读 · 0 评论 -
浅学设计模式之模板方法模式 (4/23)
1、模板方法模式的概念定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤如果能够看懂上面这句话,那么你一定会觉得:模板方法模式的理解真是太TM简单了!它不就是我们Android应用、Java应用的基类吗!?我TM的?使用场景都不用说了…2、UML图使用场景还是大致说一下,比如我们在Android应用中,因...原创 2019-07-09 19:31:31 · 188 阅读 · 0 评论 -
浅学设计模式之原型模式 (3/23)
今天浅学一下设计模式中比较常用而且重要的工厂模式。这边参考的blog为:分类工厂模式按照实际的需求大致分为三大类:简单工厂模式工厂方法模式抽象工厂模式我们分别对它们进行解读,并分析其优缺点,首先要搞懂整个工厂模式是做什么的1、工厂模式的概念工厂模式分了那么多种,但是本质就是一句话:它是一个实例化对象的模式,工厂方法替代new至于为什么这么讲,我们就看看它们具体的实现吧...原创 2019-07-09 17:06:04 · 176 阅读 · 0 评论 -
泛型详解
今天跟着frank大神的blog 传送门学习泛型的知识。首先看一下下面代码List<String> l1 = new ArrayList<String>();List<Integer> l2 = new ArrayList<Integer>(); System.out.println(l1.getClass() == l2.getClas...原创 2019-03-21 15:45:46 · 210 阅读 · 0 评论 -
Java中的几种锁机制
今天跟着blog整理一下几种锁,比如说 乐观锁和悲观锁,可重入锁和不可重入锁,自旋锁…乐观锁和悲观锁悲观锁:总是假设最坏的情况,每次去拿数据的时候总是会假设自己在修改数据的时候别人也会修改数据,所以在每次获取数据的时候都会上锁。传统的关系型数据库就会用到锁机制,比如行锁、表锁、读锁、写锁等等。Java中 synchronized 和 ReentrantLock 等独占所就是悲观锁的思想。乐...原创 2019-03-15 19:41:39 · 893 阅读 · 0 评论 -
Java反射机制
今天跟着blog传送门复习下反射机制。反射的概念在运行状态中,对于任意一个类,都能够获取到这个类的所有属性和方法。对于任意的对象,都能够调用它的任意一个方法和属性,这种动态的获取信息以及动态调用对象方法的功能就被称为反射机制。想要使用反射机制,必须先要获取该类的字节码文件对象(.class),通过字节码文件对象就能获得该类方法中我们想要获取的信息,每一个类对应一个字节码文件也就是对应一个...原创 2019-03-15 15:07:56 · 189 阅读 · 0 评论 -
Synchronized的锁优化
今天跟着CSDN的一篇blog来学习锁的四种优化1. 锁消除原理:JVM在JIT(即时编译)的时候,扫描上下文,去除掉那些不可能发生共享资源竞争的锁,从而而节省了线程请求这些锁的时间。例子:StringBuffer的append方法是一个同步方法,如果StringBuffer类型的变量是一个局部变量,则该变量就不会被其它线程所使用,即对局部变量的操作是不会发生线程不安全的问题。在这种情景下...原创 2019-03-11 00:03:08 · 675 阅读 · 0 评论 -
GC算法与种类
今天跟着一篇CSDN的blog学习GC垃圾回收器机制是由Garbage Collection来实现的。GC是后台的守护进程,它是低优先级进程,但是根据内存的使用情况动态的调整它的优先级,因此,它是内存低到一定程度的时候才会自动运行,所以回收时间不确定。GC处理的数据主要在运行时数据区域的堆中(所有对象化的实例都在这里),当一个对象不再被引用时,就会回收这个引用下面为GC算法:引用计数法简...原创 2019-03-10 22:25:41 · 756 阅读 · 0 评论 -
Java ClassLoader总结
今天跟着大神的blog来总结一下java中的classloaderJava类装载方式有两种:隐式装载,程序在运行过程中当碰到new等方法生成出来的对象时,隐式调用类装载器加载对应类到jvm中显示装载,通过Class.forname()方法,显示加载需要的类。类加载的动态体现:一个应用有许多个类组成,java程序启动时并不是一股脑的加载完所有的类,而是加载程序启动必须要的基础的类,剩...原创 2019-03-14 15:45:00 · 148 阅读 · 0 评论 -
java中==、equals和hashcode的区别
equals equals的作用是判断两个对象是否相等。 通过判断两个对象的地址是否相同来判断。== ==一般用于基本类型数据的比较,判断两个值是否相同 也可以用于类的比较,同样也是比较两个对象的内存地址。(就是两个对象都是同一个对象) 所以在equals没覆盖的情况下,==和equals是等价的。 ( 我们可以通过覆盖equals来让相同内容的对象来返回true。)hashco...原创 2018-07-24 00:36:26 · 402 阅读 · 0 评论 -
StringBuffer和StringBuilder的区别
这里整理一下StringBuffer StringBuilder(还有String)的区别 String是不可变类的数据类型,每当改变String改变就会产生新的String对象 而StringBuffer和StringBuilder的作用几乎一致,只在于运行速率和线程是否安全有区别 StringBuilder使用了Synchronized修饰,所以能支持高并发,线程安全。 StringB...原创 2018-06-30 10:15:54 · 158 阅读 · 0 评论