java
w366549434
一个基本自由的android开发者
展开
-
日常踩坑----java中类的加载
先上代码public class Test extend TestParent { Runnable mRun = new Runnable(){ public void run(){ System.out.println("运行Runnable接口"); } } public Test(){ super(); //do somethings... }原创 2020-08-14 14:40:04 · 145 阅读 · 0 评论 -
java中volatile关键字的作用和原理
在之前的一篇博客中挖过坑,今天来填一下。之前挖坑的博客在那篇博客中,我提到了volatile关键字,它是用于解决多线程环境下数据不一致问题的(也就是线程不安全问题)。首先我们来看一段代码...原创 2020-07-01 18:26:44 · 543 阅读 · 0 评论 -
Android中的Gradle知识学习记录(一)
目前Android Studio创建项目的时候都是依赖于Gradle的,每个项目都有两个build.gradle,一个是app.gradle另一个是项目gradle。项目gradle就是用来配置整个项目的基础资源引用,包括gradle版本的依赖,google、jcenter、阿里云镜像之类的库依赖,类似是这样:// Top-level build file where you can add configuration options common to all sub-projects/modu原创 2020-06-25 21:41:08 · 273 阅读 · 0 评论 -
在Android开发中不要再用new Thread的方式开启线程啦
正如标题所言,如果直接使用new Thread的方法创建一个线程,很大概率就会导致内存泄漏。因为一个内部类始终会持有外部类的引用,如果这个内部类恰好是一个Thread对象,它拿着外部类的引用跑在另一个线程中,这就很容易导致外部类在应该释放的节点无法被释放,从而导致内存泄漏。为了杜绝这类情况,还是建议大家不要再代码中直接使用new Thread这种粗暴的方式创建线程,而是使用HandlerThread来管理子线程,亦或者是自己写一个线程池控制类来管理好各个子线程。可以参见我之前的博客->Andr原创 2020-06-22 11:55:45 · 5801 阅读 · 0 评论 -
Java中的IO框架设计思想
写在前面首先本篇是参照知乎某匿名用户的回答而写的,在征求TA的同意之后,我将他的回答与我的个人理解综合起来写成本篇博客,如果存在不清楚、不明白甚至是错误的内容,请评论指出或私信给我也行,我会及时改正的。正文 首先在理解Java的IO框架之前,我们先复习一下计算机的构成。冯·诺依曼计算机模型:运算器:计算机中执行各种算术和逻辑运算操作的部件。运算器的基本操作包括加、减、乘、除四则运算,与、或、非、异或等逻辑操作,以及移位、比较和传送等操作,亦称算术逻辑部件(ALU) 控...原创 2020-05-28 15:39:15 · 400 阅读 · 0 评论 -
今天学到一个新姿势(划掉)知识
当我们要对某一个对象进行一系列操作的时候,通常要怎么做呢?比如对一个“电脑”对象进行打字操作,一般的流程是这样的:computer.power();//通电开机computer.setInputMethod();//设置输入法computer.pressKey();//敲击键盘打字这类操作写下来。。。代码就变得不优雅了呀!!!而且随着你的操作越来越多,这些代码会越来越长。并且如...原创 2020-04-27 17:38:34 · 181 阅读 · 0 评论 -
Dialog的弹出位置控制
Dialog一般出现都是屏幕中心,但有的时候我们希望它能在屏幕左侧,或者右侧亦或者是屏幕顶部。这时候我们就需要用的Dialog.getWindow().getAttributes()方法啦dialog = new Dialog(getActivityContext());dialog.setContentView(localView); //下面的几个属性可能也会经常用...原创 2020-03-25 19:08:51 · 10266 阅读 · 0 评论 -
Java基本功之i++、i--、++i、--i
今天敲代码的时候被基础给击倒了(难受 while (i < j) { res = height[j] > height[i] ? Math.max(res, height[i++] * (j - i)): Math.max(res, height[j++] * (j ...原创 2020-03-19 10:35:48 · 890 阅读 · 0 评论 -
LeetCode解题记录之队列最大值
题目:请定义一个队列并实现函数 max_value 得到队列里的最大值,要求函数max_value、push_back 和 pop_front 的均摊时间复杂度都是O(1)。若队列为空,pop_front 和 max_value需要返回 -1public class MaxQueue{ public MaxQueue(){ } publ...原创 2020-03-08 15:14:05 · 333 阅读 · 0 评论 -
Android中的System.currentTimeMillis和SystemClock类
最近在看Handler源码的时候发现了Android系统中对于获取时间的不同方法。首先是我们比较常用的System.currentTimeMillis,它计算的是从1970年1月1日开始的时间,以毫秒为单位。使用这个方法的存在一定的风险,因为它是以系统时间为基准的,而我们可以通过SystemClock.setCurrentTimeMilis来设置系统时间。比如说我们设置了一个定时任务在...原创 2020-03-06 10:52:41 · 3351 阅读 · 1 评论 -
java中类的加载和线程使用所导致的变量值异常情况
占坑原创 2020-03-01 21:12:20 · 343 阅读 · 0 评论