自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 redis 生产命令禁用

redis 生产为什么要禁用keys *

2024-02-27 00:00:11 294

原创 redis大key,bigkey处理

redis bigkey处理

2024-02-26 23:40:24 378

原创 redis集群模式

redis集群模式实操

2024-02-23 12:20:42 282

翻译 netty - 简单使用与介绍

问题现在我们使用通用应用程序或库来相互通信。例如,我们经常使用HTTP客户端库从web服务器检索信息,并通过web服务调用远程过程调用。然而,通用协议或其实现有时不能很好地扩展。这就像我们不使用通用的HTTP服务器来交换巨大的文件、电子邮件消息和接近实时的消息,如金融信息和多人游戏数据。需要的是一个高度优化的协议实现,专门用于特殊目的。例如,您可能希望实现一个针对基于ajax的聊天应用程序、媒体流或大文件传输进行优化的HTTP服务器。您甚至可以设计和实现一个完全适合您需要的全新协议。另一个不可避免的情况是

2021-10-27 10:49:19 386

翻译 Java命令 - 关于jvm性能优化与gc优化相关参数设置

java 工具的介绍java - 启动java程序简介Windows: javaw命令与java相同,除了javaw没有相关的控制台窗口。当您不希望出现命令提示符窗口时,请使用javaw。然而,如果启动失败,javaw启动器将显示一个带有错误信息的对话框。要启动一个类文件:java [options] mainclass [args...]要在JAR文件中启动主类:java [options] -jar jarfile [args...]要在模块中启动主类:java [option

2021-10-26 15:16:04 1649

翻译 Javap—反汇编程序

介绍Javapjavap 反汇编一个或多个类文件javap [options] classes...options 命令行选项。参见javap的选项。classes 指定一个或多个用空格分隔的类,用于处理注释。您可以指定一个可以在类路径中通过其文件名、URL或其完全限定类名找到的类。例子path/to/MyClass.classjar:file:///path/to/MyJar.jar!/mypkg/MyClass.classjava.lang.Object描述javap

2021-10-18 22:01:07 367

翻译 Javac - 编译器

您可以使用基础的JDK工具和命令来创建和构建应用程序。以下部分描述了可以用来创建和构建应用程序的工具和命令:介绍 javacjavac - 读取Java类和接口定义,并将它们编译成字节码和类文件javac [options] [sourcefiles]options 命令行选项。sourcefiles 要编译的一个或多个源文件(如 MyClass.java)或为注释处理的源文件(如MyPackage.MyClass)。描述javac命令读取用Java编程语言编写的类和接口定义,并将它们

2021-10-18 21:41:26 1007

翻译 编写和组合比较器Comparators

使用Lambda表达式创建和组合比较器用Lambda表达式实现比较器多亏了函数式接口的定义,JDK 2中引入的老式Comparator接口也变成了函数式接口。因此,可以使用lambda表达式实现比较器。下面是Comparator接口的唯一抽象方法:@FunctionalInterfacepublic interface Comparator<T> { int compare(T o1, T o2);}...

2021-10-15 13:39:52 713

翻译 整合Lambda表达式

从函数式接口中利用默认和静态方法您可能已经注意到java.util.function包的函数式接口中存在默认方法。添加这些方法是为了允许组合和链接lambda表达式。你为什么要这么做?只是为了帮助您编写更简单、更可读的代码。使用默认方法链接Predicates假设您需要处理一个字符串列表,只保留非null、非空且小于5个字符的字符串。这个问题的表述方式如下。对给定字符串有三个测试:非null;非空;少于5个字符。每个测试都可以很容易地用非常简单的一行predicate编写。还可以将这三个

2021-10-14 20:26:57 121

翻译 编写Lambda表达式作为方法引用

编写Lambda表达式作为方法引用您看到,lambda表达式实际上是方法的实现:函数式接口的唯一抽象方法。有时人们称这些lambda表达式为“匿名方法”,因为它只是:一个没有名称的方法,你可以在应用程序中传递,存储在一个字段或变量中,作为参数传递给一个方法或构造函数,并从一个方法返回。有时你会编写lambda表达式,只是调用在其他地方定义的特定方法。事实上,当你写下面的代码时,你已经做到了:Consumer<String> printer = s -> System.out.prin

2021-10-14 19:52:36 246

翻译 在你应用程序中使用lambda表达式

探索java.util.function包在Java SE 8中引入lambda表达式时,JDK API进行了重大重写。JDK 8在引入lambda之后更新的类比JDK 5在引入泛型之后更新的类更多。由于函数式接口的定义非常简单,许多现有的接口无需修改就能实现功能。对于您现有的代码也是如此:如果您的应用程序中有在Java SE 8之前编写的接口,那么它们可能不需要修改就可以正常运行,这使得使用lambda实现它们成为可能。JDK 8还引入了一个新的包:java.util.function,其中提供了可

2021-10-13 22:39:34 209

翻译 一、编写您的第一个Lambda表达式

编写Lambda 表达式在2014年,Java SE 8引入了lambda表达式的概念。如果您还记得Java SE 8发布之前的日子,那么您可能还记得匿名类的概念。也许您听说过lambda表达式是另一种在某些情况下编写匿名类实例的更简单的方法。如果您不记得那些日子,那么您可能听说过或读过匿名类,并且可能害怕这种晦涩的语法。好的,好消息是:您不需要通过匿名类来理解如何编写lambda表达式。而且,在许多情况下,由于在Java语言中添加了lambda,您不再需要匿名类了。编写lambda表达式可以分为三

2021-10-12 21:36:52 418

翻译 并行流-Parallelizing Streams

优化流计算流API的一个非常令人兴奋的特性是流能够并行处理数据。与Stream API并行处理数据非常简单,只需在任何现有流上调用parallel()方法即可。int parallelSum = IntStream.range(0, 10) .parallel() .sum();输出:parallelSum = 45这个和实际上是并行计算的。不过,您可能不会注意到在这样一个小示例上有任何性能提升。为什么要并行计算数据呢?可能是

2021-10-11 21:19:01 538

翻译 使用可选项Optionals

支持不能产生结果的方法我们已经介绍了Optional类的几种用法,特别是在没有标识元素的流上调用终端操作的情况下。这种情况不容易处理,因为您不能返回任何值,包括0,返回null将使您的代码不得不在您不希望它的地方处理null值。对于无法生成值的情况,能够使用Optional类为更好的模式提供了许多机会,特别是更好地处理错误。这是您应该使用选项对象的主要原因:它们表示方法在某些情况下可能不会产生结果。在字段、列表、映射中存储可选实例的实例,或将其作为方法参数传递,并不是创建的选项。如果您设计的方法返回可

2021-10-10 23:43:42 242

翻译 实现Collector接口

为什么要实现Collector接口?有三种方法可以创建您自己的收集器。我们在本教程中研究了第一个。它包括将现有收集器与collector工厂类提供的不同机制相结合,即将一个收集器作为下游收集器传递给另一个收集器,或者使用collectingAndThen()收集器的完成器。您还可以调用collect()方法,该方法接受构建收集器所需要的三个元素。这些方法在基本类型流和对象流中都可用。它们采用了我们在前几节中介绍的三个参数。supplier :用于创建在其中积累流元素的可变容器accumulato

2021-10-09 11:17:26 258

翻译 创建自己的Collector

理解Collector的工作原理如前所述,收集器工厂类只处理对象流,因为以收集器对象为参数的collect()方法只存在于Stream中。如果您需要收集数字流,那么您需要了解收集器的构建元素是什么。简而言之,收集器是建立在四个基本组件之上的。前两个用于收集流的元素。只有平行流才需要第三个。第四个是某些类型的收集器所需要的,这些收集器需要对构建的容器进行后处理。第一个组件用于创建容器,流的元素将在其中收集。这个容器很容易辨认。例如,在前一部分讨论的案例中,我们使用了ArrayList类、HashSet类

2021-10-08 17:33:21 179

翻译 使用Record 建模不可变数据

用不可变类建模不可变数据Java语言提供了几种创建不可变类的方法。最简单的方法可能是创建一个final类,其中包含final字段和一个初始化这些字段的构造函数。下面是这样一个类的例子。public class Point { private final int x; private final int y; public Point(int x, int y) { this.x = x; this.y = y; }}现在已

2021-10-08 17:15:10 159

翻译 使用Collector作为最终操作

使用Collector来收集流元素

2021-10-08 13:58:21 539

翻译 寻找流的特征

流的特征Stream API依赖于一个特殊的对象,Spliterator接口的一个实例。这个接口的名字来源于这样一个事实:在Stream API中,spliterator 的角色与在Collection API中迭代器的角色相似。此外,因为Stream API支持并行处理,所以spliterator对象还控制流如何在处理并行化的不同cpu之间分割元素。名称是split和iterator的缩写。详细介绍这个spliterator对象超出了本教程的范围。你需要知道的是这个spliterator对象带有流的特

2021-09-30 15:19:46 120

翻译 在Stream上添加终端操作

避免使用reduce() 方法如果流没有以终端操作结束,则它不处理任何数据。我们已经介绍了终端操作reduce(),在其他示例中还看到了几个终端操作。现在让我们展示可以在流上使用的其他终端操作。使用reduce()方法并不是整合流的最简单方法。你需要确保提供的二元运算符是关联的,然后你需要知道它是否有标识元素。需要检查许多点,以确保你的代码是正确的,并生成期望的结果。如果可以避免使用reduce()方法,那么你绝对应该避免,因为使用它很容易出错。幸运的是,Stream API提供了许多其他方法来整合流

2021-09-27 22:07:15 217

翻译 整合stream

整合stream到现在为止,在本教程中看到的包括聚合数据在内的整合stream看起来像sql语言所做的一样。在示例中,你已使用了collect(Collectors.toList())来聚合元素。所有的这些操作称为终端操作,包括整合stream。在整合stream 时有两点需要注意:没有终端操作的流不会处理任何数据,如果你的代码中使用了这样的操作,将会是一个bug。一个流有且只有一个中间调用或终端调用,如果你重用一个流,将会抛出IllegalStateException异常。使用Binary

2021-09-26 22:21:31 84

翻译 创建流Stream

创建一个流创建流有好几种方法:第一类方法是使用工厂方法。使用这些工厂方法,可以使用以下元素来创建stream:可变长度的参数一个supplier一个unary operator ,从前一个元素生成下一个一个构建器之前用的都是使用集合来生成一个stream,可以用迭代器生成stream,可以使用数组来生成stream。还有以下的方式来创建stream:字符串的字符文本文件的行数用正则表达式分割字符串所创建的元素使用随机变量生成的随机数字也可以使用构建器创建stream。使用集合

2021-09-26 09:58:26 610

翻译 在stream上增加中间操作

将一个stream映射成另一个stream使用map()方法将一个流映射到另一个流,该方法将此函数作为参数。映射流意味着该流处理的所有元素都将使用该函数进行转换。List<String> strings = List.of("one", "two", "three", "four");Function<String, Integer> toLength = String::length;Stream<Integer> ints = strings.stream()

2021-09-24 10:41:26 812

翻译 使用stream在内存中处理数据

使用stream在内存中处理数据stream编程产生背景:随着互联网行业的兴起,数据来源不再是单一的数据库。可能是缓存,数据库,消息中间件,es等。在对数据进行处理时,需要进行整合数据,原有的编写sql关联查询等方式不再适用复杂数据的处理。在此应用场景下,stream编程应运而生。Stream介绍stream是java Se8 除lambda外的又一重要属性,stream基于lambda构建和使用。stream是集合框架的伙伴框架,同样在内存中处理数据,stream’有着高效的处理过程。stream

2021-09-23 13:08:48 1297

原创 JVM垃圾回收机制

引用计数法要了解JVM的垃圾回收机制,首先要了解一下其他系统的垃圾回收机制。什么是引用计数法呢?当我创建了一个对象,Person p = new Person();p就叫做Person对象的一个引用,引用计数法的原理是,对象上有一个标记数字,用来记录对象被引用的次数,当一个对象被引用一次的时候,该标记数字会加一,当该对象的一个引用失效的时候,该标记数字会减一,如果该数字减为0,那么该...

2019-10-26 18:49:48 93

原创 关于kafka的安装与使用

kafka的安装windows下的kafka安装首先要安装jdk安装jdk1.8的地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html下载安装并配置环境变量,成功以后进行下一步第二步:安装zookeeper因为kafka是依赖于zookeeper的所以也要安装zookeeper,当然也可以使用kaf...

2019-10-14 13:52:00 228 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除