首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏java一日一条

    8种常见的Java不规范代码

    在工作上,我最近对一个现有的Java项目代码进行了清理。完成之后,我发现了一些反复出现的不规范代码。所以,我把它们整理成了一个列表出来分享给我的同行希望能引起注意并改善代码的质量和可维护性。 要做到这个,在Eclipse中,到 Window -> Preferences -> Java -> Editor -> Save Actions并启用 Perform the selected actions 在代码块周围使用大括号: 永远不要忘记在块类型语句(如:if,for,while)周围使用大括号。这可以减少代码歧义并且避免在你修改代码块的时候产生新的bug。 不推荐 ? 下面的代码: ? 为程序员提供最优质的博文、最精彩的讨论、最实用的开发资源;提供最新最全的编程学习资料:PHP、Objective-C、Java、Swift、C/C++函数库、.NET Framework类库、J2SE

    1K10发布于 2018-09-19
  • 来自专栏程序员备忘录

    代码实现java8元空间溢出

    因为我们知道元空间在java8中替代的是java7中的永久代,永久代就是存储类信息,我们用到的类都要存放到这块空间。但是在java8中元空间在堆外。 我们知道java的动态代理会生成代理类,代理类的特点就是类名后边很多莫名其妙的字符。所以我们的元空间导致的问题很大原因上还是使用了动态代理。 编写一段代码: @RestController @RequestMapping("/v") public class UserController { Logger logger= LoggerFactory.getLogger 使用java visualVm进行载入类数量和元空间变化情况。 查看报错日志: 切断jmeter连接中断报错。 小结:通过上述代码,我们可以得出的结论就是我们编写对访问量有要求的系统的时候要主要避免采用动态代理。至于我们组项目线上的报错本人还没研究透彻,虽然解决了问题。

    77910编辑于 2022-08-11
  • 来自专栏Java学习网

    Java8读文件方法代码学习

    Java8读文件方法代码学习   JDK7中引入了新的文件操作类java.nio.file.File,它包含了很多有用的方法来操作文件,比如检查文件是否为隐藏文件,或者是检查文件是否为只读文件。 而且,Java8重写了此方法,无需指定字符集,直接使用UTF-8编码进行字符串转换。 使用forEach()方法,可以只用一行Java代码实现把文件的所有内容输出到控制台,如下面第三个代码片段。 ) throws IOException { // 一行代码搞定读文件,默认是UTF-8编码 out.println(new String(readAllBytes(get("d:/jd.txt ")))); } }   如果使用JDK8,那么还可以使用流API来读写文件,这样代码更简洁、高效。

    1.9K100发布于 2018-02-27
  • 来自专栏技术文献

    Java8——行为参数化传递代码

    简单的解决办法就是重复写一个方法,再改条件为红苹果,但是,要筛选的颜色有多种的情况,这样写会导致代码十分冗余,所以我们第一步尝试将其抽象化。 ,即使匿名类处理在某种程度上改善了为一个接口声明好几个实体类的啰嗦问题,但是还是不能令人满意,自java8引入的lambda表达式——一种更简洁的传递代码的方式解决了这个问题。 -> "red".equals(apple.getColor())); 不得不承认,使用lambda表达式改写之前的代码确实干净很多,因为它看起来更像问题陈诉本身了,解决了啰嗦的问题 8、第七次尝试:将 行为参数化可以让代码更好的适应不断变化的要求,减轻未来的工作量。 传递代码,就是将新行为作为参数传递给方法,但是在java8之前实现起来很啰嗦。 为接口声明许多只用一次的实体类而造成的啰嗦代码,在java8之前可以用匿名类来减少。 java API 包含很多可以用不同行为进行参数化的方法,包括排序、线程等。

    68430发布于 2020-09-02
  • 来自专栏JAVA乐园

    巧用 Java 8 的 Stream 来优化代码

    Java8的新特性主要是Lambda表达式和流,当流和Lambda表达式结合起来一起使用时,因为流申明式处理数据集合的特点,可以让代码变得简洁易读 放大招,流如何简化代码 如果有一个需求,需要对数据库查询到的菜肴进行一个处理 vegetarian; private int calories; private Type type; // getter and setter } Java8 Java8以前的实现方式 private static Map<Type, List<Dish>> beforeJdk8(List<Dish> dishList) { Map<Type, Stream,再也不用担心复杂集合处理需求 Java8以后的实现方式 private static Map<Type, List<Dish>> afterJdk8(List<Dish> dishList ,同时提高了代码可读性,赶紧在项目里用起来;使代码更加简洁、优雅。

    50110编辑于 2023-09-14
  • 来自专栏java一日一条

    8种常见的Java不规范代码

    在工作上,我最近对一个现有的Java项目代码进行了清理。完成之后,我发现了一些反复出现的不规范代码。所以,我把它们整理成了一个列表出来分享给我的同行希望能引起注意并改善代码的质量和可维护性。 要做到这个,在Eclipse中,到 Window -> Preferences -> Java -> Editor -> Save Actions并启用 Perform the selected actions 在代码块周围使用大括号: 永远不要忘记在块类型语句(如:if,for,while)周围使用大括号。这可以减少代码歧义并且避免在你修改代码块的时候产生新的bug。 不推荐 ? 下面的代码: ? 为程序员提供最优质的博文、最精彩的讨论、最实用的开发资源;提供最新最全的编程学习资料:PHP、Objective-C、Java、Swift、C/C++函数库、.NET Framework类库、J2SE

    1.1K30发布于 2018-09-14
  • 来自专栏java一日一条

    8种常见的Java不规范代码

    在工作上,我最近对一个现有的Java项目代码进行了清理。完成之后,我发现了一些反复出现的不规范代码。所以,我把它们整理成了一个列表出来分享给我的同行希望能引起注意并改善代码的质量和可维护性。 要做到这个,在Eclipse中,到 Window -> Preferences -> Java -> Editor -> Save Actions并启用 Perform the selected actions 在代码块周围使用大括号: 永远不要忘记在块类型语句(如:if,for,while)周围使用大括号。这可以减少代码歧义并且避免在你修改代码块的时候产生新的bug。 不推荐 ? 下面的代码: ? 猿圈 (ID: CodePush )(←长按复制) 为程序员提供最优质的博文、最精彩的讨论、最实用的开发资源;提供最新最全的编程学习资料:PHP、Objective-C、Java、Swift、C/C

    76110发布于 2018-09-19
  • 来自专栏小工匠聊架构

    Java8 - 避免代码阻塞的骚操作

    ---- Pre Java8 - 使用工厂方法 supplyAsync创建 CompletableFuture 接着上面的例子 假设非常不幸,无法控制 Shop 类提供API的具体实现,最终提供给你的API String.format("%s price is %.2f",shop.getName(), shop.getPrice(product))) .collect(toList()); } 好吧,这段代码看起来非常直白 此外,也请记录下方法的执行时间,通过这 些数据,我们可以比较优化之后的方法会带来多大的性能提升,具体的代码清单如下。 运行代码,与V·1.0的执行结果相比较,发现了新版 findPrices 的改进了吧。 所有这些整合在一起,你就可以重新实现 findPrices 了,具体代码如下 public List<String> findPrices(String product) { List<CompletableFuture

    84750发布于 2021-08-17
  • 来自专栏开发工具

    Java 8 的 Stream 来写代码,干净优雅!

    Java8的新特性主要是Lambda表达式和流,当流和Lambda表达式结合起来一起使用时,因为流申明式处理数据集合的特点,可以让代码变得简洁易读 1 流如何简化代码 如果有一个需求,需要对数据库查询到的菜肴进行一个处理 Java8以前的实现方式 private List<String> beforeJava7(List<Dish> dishList) { List<Dish> lowCaloricDishes Java8之后的实现方式 private List<String> afterJava8(List<Dish> dishList) { return dishList.stream() >的结果 这要是放在jdk8之前肯定会头皮发麻 Java8以前的实现方式 private static Map<Type, List<Dish>> beforeJdk8(List<Dish> dishList 还好jdk8有Stream,再也不用担心复杂集合处理需求 Java8以后的实现方式 private static Map<Type, List<Dish>> afterJdk8(List<Dish>

    91120发布于 2021-11-21
  • 来自专栏ImportSource

    Java8的Predicate,让代码更简洁

    在我们的代码中,经常会编写是否为真的代码,比如用户名是否存在,客户是否存在等。类似如下代码: public boolean exist(Long userId){ ... 但你需要了解一个java8的Predicate。通过Predicate可以让你的代码更加的简洁。学习下Predicate吧。 Predicate是一个函数接口。 Predicate不仅可以单独在代码中使用,也可以在测试代码中用来做判断,同时还可以被用在Stream的filter中,用来做过滤。 ? 使用Predicate可以让你的判断逻辑代码更加的简洁和解耦,增加了可读性、可测试性,同时符合DRY原则。 一句话:别写重复代码 现在你的代码看起来已经很炫酷了。但别急,接下来的几个操作会让你的代码看起来更加的清晰而明了。当你写了一个“大于20”的条件时,此时需求变了,需要一个新的条件20<x<30。

    6.8K30发布于 2019-05-06
  • 来自专栏Java开发

    java最新版和java8的区别,用代码展示

    Java 8 是一个具有里程碑意义的版本,引入了Lambda表达式、Stream API等重要特性,而后续的新版本(如Java 9至Java 21)则在此基础上持续增加了许多新功能和改进。 以下是Java 8与最新版本(以Java 21为例)的一些主要区别及代码示例:var关键字(Java 10+)// Java 8String message = "Hello, World!" (Java 15+,正式特性)// Java 8String html = "<html>\n" + " <body>\n" + " class Circle extends Shape { // 类定义}记录(Records,Java 16+)// Java 8public class Point { private Java 8与新版本之间的一部分区别。

    72010编辑于 2025-10-12
  • 来自专栏全栈程序员必看

    java冒泡排序经典代码_Java 8大经典排序算法(含源代码),必须收藏!

    原标题:Java 8大经典排序算法(含源代码),必须收藏! 今天小编帮大家整理了Java8种经典算法。不论是笔试还是面试,都是非常实用的干货。不论你是菜鸟还是高手,非常值得一看! 不转发也是挺可惜的~ 8种排序之间的关系: 1,直接插入排序 (1)基本思想:在要排序的一组数中,假设前面(n-1)[n>=2] 个数已经是排 好顺序的,现在要把第n个数插到前面的有序数中,使得这n个数 (3)用java实现 import java.util.Arrays; public class HeapSort { int a[]={49,38,65,97,76,13,27,49,78,34,12,64,5,4,62,99,98,54,56,17,18,23,34,15,35,25,53,51 将中间数组中的内容复制回原数组 while(tmp<=right){ data[tmp]=tmpArr[tmp++]; } System.out.println(Arrays.toString(data)); } } 8、 (2)实例: (3)用java实现 import java.util.ArrayList; import java.util.List; public class radixSort { int

    65120编辑于 2022-09-08
  • 来自专栏Java3y

    Java 8的Stream代码,你能看懂吗?

    本文来源公众号:Hollis 本文作者:Hollis 今天在读公司代码的时候,发现用了Java 8 Stream的特性,而且比较复杂(即便用了Stream也写了15行代码)。 相比之下,关系型数据库中也同样有这些操作,但是在Java 8之前,集合和数组的处理并不是很便捷。 不过,这一问题在Java 8中得到了改善,Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。本文就来介绍下如何使用Stream。 Stream API可以极大提高Java程序员的生产力,让程序员写出高效率、干净、简洁的代码。 2 Stream的创建 在Java 8中,可以有多种方法来创建流。

    75020发布于 2019-05-08
  • 来自专栏Kirito的技术分享

    JAVA拾遗 — JMH与8代码陷阱

    前言 JMH (http://openjdk.java.net/projects/code-tools/jmh/) 是 Java Microbenchmark Harness(微基准测试)框架的缩写(2013 我会从 Java Developer 角度来谈谈一些常见的代码测试陷阱,分析他们和操作系统底层以及 Java 底层的关联性,并借助 JMH 来帮助大家摆脱这些陷阱。 这是由于 JIT 擅长删除“无效”的代码,这给我们的测试带来了一些意外,当你意识到 DCE 现象后,应当有意识的去消费掉这些孤立的代码,例如 return。JMH 不会自动实施对冗余代码的消除。 死码消除这个概念很多人其实并不陌生,注释的代码,不可达的代码块,可达但不被使用的代码等等,我这里补充一些 Aleksey 提到的概念,用以阐释为何一般测试方法难以避免引用对象发生死码消除现象: Fast 陷阱8:多线程测试 ?

    1.8K40发布于 2018-09-30
  • 来自专栏tea9的博客

    java1-7和1-8的排序代码

    Tomas Berdych", "Juan Martin Del Potro"}; List<String> players = Arrays.asList(atp); // java1.7 String o1, String o2) { return o1.compareTo(o2); } }); System.out.println(players); // java1.8

    25730编辑于 2022-07-16
  • 来自专栏开发者技术前线

    Java 8 一行代码解决了空指针问题

    JAVA8提供了Optional类来优化这种写法,接下来的正文部分进行详细说明 API介绍 先介绍一下API,与其他文章不同的是,本文采取类比的方式来讲,同时结合源码。 address.getCity(); } } } throw new Excpetion("取值错误"); } JAVA8 =null){ dosomething(user); } JAVA8写法 Optional.ofNullable(user) .ifPresent(u->{ dosomething }else{ user = new User(); user.setName("zhangsan"); return user; } } java8 不过采用这种链式编程,虽然代码优雅了。但是,逻辑性没那么明显,可读性有所降低,大家项目中看情况酌情使用。

    64510发布于 2021-10-20
  • 来自专栏须臾之余

    Java8实战——通过行为参数化传递代码

    简单的解决办法就是重复写一个方法,再改条件为红苹果,但是,要筛选的颜色有多种的情况,这样写会导致代码十分冗余,所以我们第一步尝试将其抽象化。 ,即使匿名类处理在某种程度上改善了为一个接口声明好几个实体类的啰嗦问题,但是还是不能令人满意,自java8引入的lambda表达式——一种更简洁的传递代码的方式解决了这个问题。 )-> "red".equals(apple.getColor())); 不得不承认,使用lambda表达式改写之前的代码确实干净很多,因为它看起来更像问题陈诉本身了,解决了啰嗦的问题 8、第七次尝试 行为参数化可以让代码更好的适应不断变化的要求,减轻未来的工作量。 传递代码,就是将新行为作为参数传递给方法,但是在java8之前实现起来很啰嗦。 为接口声明许多只用一次的实体类而造成的啰嗦代码,在java8之前可以用匿名类来减少。 java API 包含很多可以用不同行为进行参数化的方法,包括排序、线程等。

    97030发布于 2020-08-11
  • 来自专栏阿杜的世界

    Java 8原生API也可以开发响应式代码

    asphalt-automobile-automotive-1172105.jpg 前段时间工作上比较忙,这篇文章一直没来得及写,本文是阅读《Java8实战》的时候,了解到Java 8里已经提供了一个异步非阻塞的接口 Future模式除了在get()调用的时候会阻塞外,还有其他的局限性,例如:没有使用Java Lambda表达式的优势,对一连串的异步调用可以支持,但是写出来的代码会比较复杂。 在Dubbo最新的master代码中,我知道了Dubbo的异步结果的定义,它的类图如下,可以看出AsyncRpcResult是一个CompletableFuture接口的实现。 exception.printStackTrace(); } }); } } 上面这个案例的执行结果如下图所示: 执行结果 ---- 本号专注于后端技术、JVM问题排查和优化、Java

    1.1K20发布于 2019-08-12
  • 来自专栏一个会写诗的程序员的博客

    在Kotlin代码中要慎用Java 8 的 Stream API

    测试代码: 1.Java 中直接使用 Java 8 的 Stream API: package i; import java.util.ArrayList; import java.util.List ; import java.util.Random; /** * @author: Jack * 2020-05-06 16:20 */ public class StreamParallelDemo 8 的 Stream API: package i import java.util.* /** * @author: Jack * 2020-05-06 16:03 */ fun main 8 的 parallel Stream API,似乎没有明显的性能提升(猜测:中间有Java-Kotlin互转带来的性能损耗?)。 3.直接使用Kotlin的 List的API: package i import java.util.* /** * @author: Jack * 2020-05-06 16:03 */

    2K10发布于 2020-05-08
  • 来自专栏Lvshen的技术小屋

    Java8用起来,你的代码将会简化很多

    Java8已经诞生好几年了,但我相信很多小伙伴并不熟悉Java8的特性,并将这些特性使用到工作中去。下面介绍一些我使用Java8的一些经验,真的将我的代码简化了很多。 冥思苦想之际,突然灵光一闪,Java8有个Optional类好像可以解决这个问题。 将对象组装成List 如果你需要将多个Member组装成List,你可能会这么写 上面这么写也没什么不好,但如果你使用了Java8的Stream,组装集合简直是一气呵成。 如何用Java8的stream()过滤元素? <String, Member> entry : entries) { System.out.println(entry.getKey()+":"+entry.getValue()); } Java8

    89020编辑于 2022-05-05
领券