首页 文章 精选 留言 我的

精选列表

搜索[android jetpack],共10000篇文章
优秀的个人博客,低调大师

我要做 Android 之面笔试

二:如何进制转换 二进制 → 十进制 方法:二进制数从低位到高位(即从右往左)计算,第0位的权值是2的0次方,第1位的权值是2的1次方,第2位的权值是2的2次方,依次递增下去,把最后的结果相加的值就是十进制的值了。 例:将二进制的(101011)B转换为十进制的步骤如下: \1. 第0位 1 x 2^0 = 1; \2. 第1位 1 x 2^1 = 2; \3. 第2位 0 x 2^2 = 0; \4. 第3位 1 x 2^3 = 8; \5. 第4位 0 x 2^4 = 0; \6. 第5位 1 x 2^5 = 32; \7. 读数,把结果值相加,1+2+0+8+0+32=43,即(101011)B=(43)D。 八进制 → 十进制 方法:八进制数从低位到高位(即从右往左)计算,第0位的权值是8的0次方,第1位的权值是8的1次方,第2位的权值是8的2次方,依次递增下去,把最后的结果相加的值就是十进制的值了。 八进制就是逢8进1,八进制数采用 0~7这八数来表达一个数。 例:将八进制的(53)O转换为十进制的步骤如下: \1. 第0位 3 x 8^0 = 3; \2. 第1位 5 x 8^1 = 40; \3. 读数,把结果值相加,3+40= (二) (十进制) → (二、八、十六进制) 04.png (Figure3:十进制转换为其它进制) 十进制 → 二进制 方法:除2取余法,即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数。 例:将十进制的(43)D转换为二进制的步骤如下: \1. 将商43除以2,商21余数为1; \2. 将商21除以2,商10余数为1; \3. 将商10除以2,商5余数为0; \4. 将商5除以2,商2余数为1; \5. 将商2除以2,商1余数为0; \6. 将商1除以2,商0余数为1; \7. 读数,因为最后一位是经过多次除以2才得到的,因此它是最高位,读数字从最后的余数向前读,101011,即(43)D=(101011)B。 05.png (Figure4:图解十进制 → 二进制) 十进制 → 八进制 方法1:除8取余法,即每次将整数部分除以8,余数为该位权上的数,而商继续除以8,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数起,一直到最前面的一个余数。 例:将十进制的(796)D转换为八进制的步骤如下: \1. 将商796除以8,商99余数为4; \2. 将商99除以8,商12余数为3; \3. 将商12除以8,商1余数为4; \4. 将商1除以8,商0余数为1; \5. 读数,因为最后一位是经过多次除以8才得到的,因此它是最高位,读数字从最后的余数向前读,1434,即(796)D=(1434)O。 06.png 43,即(53)O=(43)D。 算法实现: public static void toBin(int num){ StringBuffer sb = new StringBuffer(); while(num>0){ sb.append(num%2); num = num / 2; } System.out.ptintln(sb.reverse()); } 三:如何正确结束 Java 线程 使用标志位 很简单地设置一个标志位,名称就叫做 isCancelled。启动线程后,定期检查这个标志位。如果 isCancelled = true,那么线程就马上结束。 public class MyThread implements Runnable { private volatile boolean isCancelled; public void run() { while(!isCancelled){ //do something } } public void cancel() { isCancelled=true; } } 注意的是,isCancelled 需要为 volatile,保证线程读取时 isCancelled 是最新数据。 我以前经常用这种简单方法,在大多时候也很有效,但并不完善。考虑下,如果线程执行的方法被阻塞,那么如何执行isCancelled的检查呢?线程有可能永远不会去检查标志位,也就卡住了。 使用中断 Java提供了中断机制,Thread类下有三个重要方法。 public void interrupt() public boolean isInterrupted() public static boolean interrupted(); // 清除中断标志,并返回原状态 每个线程都有个boolean类型的中断状态。当使用Thread的interrupt()方法时,线程的中断状态会被设置为true。 下面的例子启动了一个线程,循环执行打印一些信息。使用isInterrupted()方法判断线程是否被中断,如果是就结束线程。 public class InterruptedExample { public static void main(String[] args) throws Exception { InterruptedExample interruptedExample = new InterruptedExample(); interruptedExample.start(); } public void start() { MyThread myThread = new MyThread(); myThread.start(); try { Thread.sleep(3000); myThread.cancel(); } catch (InterruptedException e) { e.printStackTrace(); } } private class MyThread extends Thread { @Override public void run() { while (!Thread.currentThread().isInterrupted()) { try { System.out.println("test"); Thread.sleep(1000); } catch (InterruptedException e) { System.out.println("interrupt"); //抛出InterruptedException后中断标志被清除,标准做法是再次调用interrupt恢复中断 Thread.currentThread().interrupt(); } } System.out.println("stop"); } public void cancel() { interrupt(); } } } 对线程调用interrupt()方法,不会真正中断正在运行的线程,只是发出一个请求,由线程在合适时候结束自己。 例如 Thread.sleep 这个阻塞方法,接收到中断请求,会抛出 InterruptedException,让上层代码处理。这个时候,你可以什么都不做,但等于吞掉了中断。因为抛出 InterruptedException 后,中断标记会被重新设置为false!看 sleep() 的注释,也强调了这点。 记得这个规则:什么时候都不应该吞掉中断!每个线程都应该有合适的方法响应中断! 所以在InterruptedExample例子里,在接收到中断请求时,标准做法是执行Thread.currentThread().interrupt()恢复中断,让线程退出。 从另一方面谈起,你不能吞掉中断,也不能中断你不熟悉的线程。如果线程没有响应中断的方法,你无论调用多少次interrupt()方法,也像泥牛入海。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册