首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

盘点历届 Java 语言关键字,一定有你不认识

在Java虚拟机进行浮点运算时,如果没有指定strictfp关键字时,Java编译器以及运行环境在对浮点运算表达式是采取一种近似于我行行为完成这些操作,以致于得到结果往往无法令人满意。...而一旦使用了strictfp声明一个类、接口或者方法时,那么声明范围内Java编译器以及运行环境会完全依照浮点规范IEEE-754执行。...因此如果想浮点运算更加精确,而且不会因为不同硬件平台执行结果不一致的话,那就请用关键字strictfp。...静态方法只能继承,不能重写(Override),因为重写是用于表现多态,重写只能适用于实例方法,而静态方法是可以不生成实例直接用类名调用,这就会与重写定义冲突,与多态冲突,所以静态方法不能重写...可以不使用完全限定类名引用导入类。 当多个包包含同名类时,许多 Java 程序员只使用特定 import 语句(没有“*”)避免不确定性。

18410

Java编码规范

大家好,又见面了,是全栈君 1. Java 命名约定 除了以下几个特例之外,命名时应始终采用完英文描述符。此外,一般应采用小写字母,但类名、接口名以及任何非初始单词第一个字母要大写。...注释哪些部分 类 类目的、即类完成功能,注释出采用不变量。 接口 设置接口目的、它应如何被使用以及如何不被使用。...n JSP文件命名 采用完英文描述说明JSP完成功能,尽可能包括一个生动动词,第一个字母小写,如:viewMessage.jsp、editUser.jsp或者forumChooser.jsp等...当我们在构造字符串时候,我们应该用 StringBuffer 实现大部分工作,当工作完成后将 StringBuffer 对象再转换为需要 String 对象。...比如:如果有一个字符串必须不断地在其后添加许多字符完成构造,那么我们应该使用 StringBuffer 对象和它 append() 方法。

90640
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Java面试手册:线程专题 ④

    不可剥夺条件:是指进程已获得资源,在未完成使用之前,不可被剥夺,只能在使用完后自己释放 环路等待条件:在死锁发生时,必然存在一个“进程-资源环形链”。...这是一个严重问题,因为死锁会程序挂起无法完成任务,死锁发生必须满足以下四个条件: 互斥条件:一个资源每次只能被一个进程使用。...循环等待条件:若干进程之间形成一种头尾相接循环等待资源关系。...避免死锁最简单方法就是阻止循环等待条件,将系统中所有的资源设置标志位、排序,规定所有的进程申请资源必须以一定顺序(升序或降序)做操作避免死锁。这篇教程有代码示例和避免死锁讨论细节。...这样你你,最后两个线程都无法使用资源。 5、Java中活锁和死锁有什么区别? 活锁和死锁类似,不同之处在于处于活锁线程或进程状态是不断改变,活锁可以认为是一种特殊饥饿。

    68610

    Swift 中 asyncawait

    这是一个非常简化描述,但它应该你知道 Swift 中并发性对你应用程序性能是多么重要。有了新 async 方法和 await 语句,我们可以定义方法进行异步工作。...执行数据请求 } 在如今Swift版本中,使用完成闭包定义方法仍然是可行,但它有一些缺点,async 却刚好可以解决。 你必须确保自己在每个可能退出方法中调用完成闭包。...与结构化并发相比,对执行顺序推理并不那么容易。 需要使用弱引用weak references避免循环引用。 实现者需要对结果进行切换以获得结果。无法从实现层面使用 try catch 语句。...在进行这样大规模重构时,最好考虑暂时维护旧实现,这样你就不必在知道新实现是否足够稳定之前更新所有的代码。这与SDK中被许多不同开发者和项目使用废弃方法类似。...然而,一旦async-await 采用率越来越高,就不会惊讶地看到它被废弃。就个人而言,除了完成回调,没有在其他地方使用结果枚举。

    3.5K30

    Swift 中 asyncawait ——代码实例详解

    这是一个非常简化描述,但它应该你知道 Swift 中并发性对你应用程序性能是多么重要。有了新 async 方法和 await 语句,我们可以定义方法进行异步工作。...执行数据请求 } 在如今 Swift 版本中,使用完成闭包定义方法仍然是可行,但它有一些缺点,async 却刚好可以解决。 你必须确保自己在每个可能退出方法中调用完成闭包。...与结构化并发相比,对执行顺序推理并不那么容易。 需要使用弱引用 weak references 避免循环引用。 实现者需要对结果进行切换以获得结果。无法从实现层面使用 try catch 语句。...在进行这样大规模重构时,最好考虑暂时维护旧实现,这样你就不必在知道新实现是否足够稳定之前更新所有的代码。这与 SDK 中被许多不同开发者和项目使用废弃方法类似。...然而,一旦 async-await 采用率越来越高,就不会惊讶地看到它被废弃。就个人而言,除了完成回调,没有在其他地方使用结果枚举。

    2.7K10

    操作系统学习笔记-4:进程同步与进程互斥(一)

    四个原则: 更加具体细节,我们需要用四个原则约束这个互斥过程: 空闲进:临界区空闲时,说明没有进程使用临界资源,此时应该想要进入临界区进程立刻进来 忙则等待:如果已经有进程进入临界区,则其它同样想要进入进程只能等着...用一个生活案例解释,可能更好理解: 甲乙两个人同时去图书馆借一本书,甲说:”很想看这本书,但是你想看的话,不介意你先看“,而乙也说:”也很想看这本书,但是你这么谦让都不好意思了,还是你先看吧...到最后甲也累了,于是在听到乙再次说了”你先看“之后,甲拍了拍乙肩膀,同时把书拿了过来,说:”好吧,那我先看吧,看完,你再看。...“ Peterson 算法解决了空闲进、忙则等待、有限等待问题,但还是没有解决权等待问题。也就是说,进程无法进入临界区时候,依然会占用处理机,不会让给其它进程。...和 TSL 指令一样,Swap 指令也无法解决“权等待”问题。 那么,是否有更加完善方法解决这个问题呢?

    4.7K32

    3个月面试近300人,发现大部分人回答不出来这道题重点!

    大家好,是冰河~~ 在Java中提供了synchronized关键字保证只有一个线程能够访问同步代码块。...不可剥夺条件 线程所获得资源在未使用完毕之前,不能被其他线程强行夺走,即只能由获得该资源线程自己释放(只能是主动释放)。...循环等待条件 在发生死锁时必然存在一个进程等待队列{P1,P2,…,Pn},其中P1等待P2占有的资源,P2等待P3占有的资源,…,Pn等待P1占有的资源,形成一个进程等待环路,环路中每一个进程所占有的资源同时被另一个申请...synchronized局限性 如果我们程序使用synchronized关键字发生了死锁时,synchronized关键是是无法破坏“不可剥夺”这个死锁条件。...也就是说,我们在设计锁时候,要如何解决synchronized局限性问题呢?这里,觉得可以从三个方面思考这个问题。 (1)能够响应中断。

    200

    亚马逊用传送带当机器手,解决快递分拣“最后一公里”问题

    一种可伸缩薄金属刮刀可以在臂端工具展开之前进入储物箱,并在必要时四处移动物品以腾出空间。...,然后执行正确动作实现所有这些。...当你沿着决策树向下移动时,你会到达某些分支和叶子,这些分支和叶子太复杂而无法使用一组启发式方法,这就是我们使用机器学习预测事情地方,比如,如果扫过这个点云,有多少空间可能在储物格里?...IEEE Spectrum:是什么你使用运动基元方法而不是更通用学习技术? Parness:我会给你一个诚实答案——从来没有被强化学习吸引。...但运动基元策略不再怀疑机器人是否能完成这项工作,并想,“哦,是的,就是这样。我们必须为此努力。”

    21510

    JAVA多线程使用场景和注意事项简版

    线程退出 有的run方法执行完成后,线程就会退出。但有的run方法是永远不会结束。结束一个线程肯定不是通过Thread.stop()方法,这个方法已经在java1.2版本就废弃了。...isInterrupted()){……} 对于InterruptedException,比如Thread.sleep抛出,我们一般是补获它,然后静悄悄忽略。...一种是必须要捕获,比如InterruptedException,否则无法通过编译;另外一种是可以处理也可以不处理,比如NullPointerException等。...假如线程存活时间长,我们要保证每次使用完ThreadLocal,都调用它remove()方法(具体来说是expungeStaleEntry),清除数据。...每当一个线程完成了自己任务后,计数器值就会减1。当计数器值到达0时,它表示所有的线程已经完成了任务,然后在闭锁上等待线程就可以恢复执行任务。

    1.1K30

    亚马逊用传送带当机器手,解决快递分拣“最后一公里”问题

    一种可伸缩薄金属刮刀可以在臂端工具展开之前进入储物箱,并在必要时四处移动物品以腾出空间。...,然后执行正确动作实现所有这些。...当你沿着决策树向下移动时,你会到达某些分支和叶子,这些分支和叶子太复杂而无法使用一组启发式方法,这就是我们使用机器学习预测事情地方,比如,如果扫过这个点云,有多少空间可能在储物格里?...IEEE Spectrum:是什么你使用运动基元方法而不是更通用学习技术? Parness:我会给你一个诚实答案——从来没有被强化学习吸引。...但运动基元策略不再怀疑机器人是否能完成这项工作,并想,“哦,是的,就是这样。我们必须为此努力。”

    28220

    操作系统之进程管理(下),同步互斥死锁问题,看看操作系统怎么解决

    如何解决这种异步问题,就是 “进程同步”讨论内容。 同步亦称直接制约关系,它是指为完成某种任务而建立两个或多个进程,这些进程因为需要在某些位置上协调它们工作次序而产生制约关系。...优点:实现简单,无需像软件实现方法那样严格检查是否会有逻辑漏洞;适用于多处理机环境 缺点:不满足“权等待”原则,暂时无法进入临界区进程会占用CPU并循环执行TSL指令,从 而导致“忙等”。...优点:实现简单,无需像软件实现方法那样严格检查是否会有逻辑漏洞;适用于多处理机环境 缺点:不满足“权等待”原则,暂时无法进入临界区进程会占用CPU并循环执行TSL指令,从 而导致“忙等”。...,进入管程而无法继续执行进程阻塞自己....循环等待条件:存在一种进程资源循环等待链,链中每一个进程已获得资源同时被下一个进程请求。 死锁处理策略 三个策略: 预防死锁。破坏死锁产生四个必要条件中一个或几个。 避免死锁。

    76410

    一文看懂临界区、互斥锁、同步锁、临界区、信号量、自旋锁等名词!

    关于线程安全专有名词有一大堆。你们突然之间问我这个名词是什么意思,那个名词是什么意思还真不一定能给你准确回答。这还别说一门语言一堆名词。其实有些名词叫法不同,实际上就是一个意思。...但锁变量不是线程安全。因为“检查-占锁”这个动作不具备“原子性”。 TSL:“TSL指令”就是原子性地完成“检查-占锁”动作。...管程:把互斥量交给程序员使用太危险,有些编程语言实现了“管程”特性,从编译器层面保证了临界区互斥,比如Javasynchronized关键字。...互斥锁、独占锁、内置锁:并没有“同步锁”这个名词,Javasynchronized正确叫法应该是“互斥锁”,“独占锁”或者“内置锁”。但有的人“顾名思义”叫它同步锁。 下面我们简单扩展一下。...如果并发线程不像进程调度那样在时间片用完以后会自动切换上下文,就会形成死锁。所以最好在条件不满足时候,让出线程控制权,其他线程有机会执行来使条件满足。

    5.5K20

    Java高级开发必会50个性能优化细节(珍藏版)

    尽量避免随意使用静态变量 当某个对象被定义为static变量引用,那么GC通常是不会回收这个对象所占有的内存,如 ?...尽量避免过多过常地创建Java对象 尽量避免在经常调用方法,循环中new对象,由于系统不仅要花费时间创建对象,而且还要花时间对这些对象进行垃圾回收和处理,在我们可以控制范围内,最大限度地重用对象,...最好能用基本数据类型或数组替代对象。...上面这个就没必要了,随着方法test()执行完成,程序中obj引用变量作用域就结束了。但是如果是改成下面: Java代码 ?...当一个类从另一个类派生时,这一点尤其应该注意,因为用new关键字创建一个对象时,构造函数链中所有构造函数都会被自动调用。

    58240

    Java编程性能优化一些事儿

    尽量避免随意使用静态变量 要知道,当某个对象被定义为static变量引用,那么GC通常是不会回收这个对象所占有的内存,如 ?...尽量避免过多过常创建Java对象 尽量避免在经常调用方法,循环中new对象,由于系统不仅要花费时间创建对象,而且还要花时间对这些对象进行垃圾回收和处理,在我们可以控制范围内,最大限度重用对象,...最好能用基本数据类型或数组替代对象。...上面这个就没必要了,随着方法test()执行完成,程序中obj引用变量作用域就结束了。但是如果是改成下面: Java代码 ?...当一个类从另一个类派生时,这一点尤其应该注意,因为用new关键字创建一个对象时,构造函数链中所有构造函数都会被自动调用。

    65000

    Java高级开发必会50个性能优化细节(珍藏版)

    尽量避免随意使用静态变量 当某个对象被定义为static变量引用,那么GC通常是不会回收这个对象所占有的内存,如 ?...尽量避免过多过常地创建Java对象 尽量避免在经常调用方法,循环中new对象,由于系统不仅要花费时间创建对象,而且还要花时间对这些对象进行垃圾回收和处理,在我们可以控制范围内,最大限度地重用对象,...最好能用基本数据类型或数组替代对象。...上面这个就没必要了,随着方法test()执行完成,程序中obj引用变量作用域就结束了。但是如果是改成下面: Java代码 ?...当一个类从另一个类派生时,这一点尤其应该注意,因为用new关键字创建一个对象时,构造函数链中所有构造函数都会被自动调用。

    1.3K30

    Java开发50条编码习惯,代码不在慢慢吐吐

    尽量避免随意使用静态变量 当某个对象被定义为static变量引用,那么GC通常是不会回收这个对象所占有的内存,如 ?...尽量避免过多过常地创建Java对象 尽量避免在经常调用方法,循环中new对象,由于系统不仅要花费时间创建对象,而且还要花时间对这些对象进行垃圾回收和处理,在我们可以控制范围内,最大限度地重用对象,...最好能用基本数据类型或数组替代对象。...当需要创建一个 Exception 时,JVM 不得不说:先别动,想就您现在样子存一份快照,所以暂时停止入栈和出栈操作。栈跟踪不只包含运行时栈中一两个元素,而是包含这个栈中每一个元素。...当一个类从另一个类派生时,这一点尤其应该注意,因为用new关键字创建一个对象时,构造函数链中所有构造函数都会被自动调用。

    89710

    编程语言之问:何时该借用,何时该创造?

    为什么 C 语言不把两种写法统一起呢?这不得而知了,而 Guido 在两种写法中,选择了后一种非主流却更好用写法。想对他说,你“偷”得好啊!...普通可迭代对象只有 __iter__() 魔术方法,而不像迭代器一样拥有 __next__() 魔术方法,这意味着它无法实现 自遍历 过程,同时在经过 for 循环 它遍历 后,也不会破坏原有的结构。...相同关键字,相似的循环思想与写法,但是,带来影响却有差别。...这种结构肯定不是从 C 语言中借用来,至于是否为 Python 独创,不确定(大概率是,姑且认为是吧),如果有知情同学,烦请告知。...这封邮件反驳意见是,改成 then 会引入新关键字,因此不好。 认为这个说法有些牵强(从使用者角度),还记得本文开头内容么,elif 就是新引入关键字啊,看看它现在是多受欢迎。

    78120

    java线程

    线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程其他线程共享进程有的全部资源。 2.线程和进程有什么区别?...当run() 或者 call() 方法执行完时候线程会自动结束,如果要手动结束一个线程,你可以用volatile 布尔变量退出run()方法循环或者是取消任务中断线程。...这是一个严重问题,因为死锁会程序挂起无法完成任务,死锁发生必须满足以下四个条件: 互斥条件:一个资源每次只能被一个进程使用。...请求与保持条件:一个进程因请求资源而阻塞时,对已获得资源保持不放。 不剥夺条件:进程已获得资源,在末使用完之前,不能强行剥夺。 循环等待条件:若干进程之间形成一种头尾相接循环等待资源关系。...最简单方法就是阻止循环等待条件,将系统中所有的资源设置标志位、排序,规定所有的进程申请资源必须以一定顺序(升序或降序)做操作避免死锁。这篇教程有代码示例和避免死锁讨论细节。

    1.1K30

    Go 语言调度(二): goroutine 调度器

    这就表示 Go 程序里有 8 个虚拟 core(P) 可以使用,系统线程并行。...异步网络系统调用完成后,G1 又被放回到了 P LRQ中。一旦 G1 可以被切换到 M 上,处理网络请求结果相关 Go 代码又能被执行了。这里最大优势在于,执行网络系统调用,不需要额外 M。...如果 M2 因为以前切换操作已经存在了,那么这次转换就要比重新创建一个 M 要快。 ? 上图中,由 G1 执行阻塞式系统调用完成了。此时,G1 可以被放回到 LRQ 并等待被 P 在此调度。...所有的这些上下文切换和状态转换都需要时间执行,这影响了工作被完成速度。...因为这些线程被绑定在不同核上,因缓存无法被命中而导致额外开销可能性也很大。 让我们用 Go 调度器调度 Goroutine 完成通用操作。 ?

    90240

    iOS内存管理

    我们另外还有一种办法,就是对象 A 在构造完对象 M 之后,始终不销毁对象 M,由对象 B 完成对象 M 销毁工作。...对于 ARC 盲目依赖 iOS 新人们,由于不知道引用计数,他们问题主要体现在: 过度使用 block 之后,无法解决循环引用问题。...例如在开源 YTKNetwork 网络库中,网络请求回调 block 是被持有的,但是如果这个 block 中又存在对于 View Controller 引用,就很容易产生从循环引用,因为: Controller...举个例子来说,两个 ViewController A 和 B,ViewController A 需要弹出 ViewController B,用户输入一些内容,当用户输入完成后,ViewController...弱引用实现原理 弱引用实现原理是这样,系统对于每一个有弱引用对象,都维护一个表记录它所有的弱引用指针地址。

    98080
    领券