java

最新文章

Java Predicate接口的使用

Java 8新增了Predicate接口,它是一个函数接口,提供的test函数会接收一个参数,并返回一个bool值,我们可以用它来做过滤,检测类等功能。源码说明@FunctionalInterfacepublic interface Predicate<T> { /** * 具体过滤操作 需要被子类实现. * 用来处理参数T是否满足要求,可以理解为 条件A

Java判断ip是否属于指定的ip网段

同一网段的ip是有相同的网络标识。ip地址和子网掩码做“与”运算的到的结果为网络标识比如两个IP:172.16.1.100(子网掩码:255.255.0.0)和172.16.2.100(子网掩码:255.255.0.0)。首先把ip地址和子网掩码转换为二进制,做与运算,然后转换为十进制,得到的结果为:172.16.0.0。所以可以说这两个ip是属于172.16.0.0网段。网段表示方式172.16

笔记示例

欢迎使用码经笔记,简单用法如下:1、编辑器工具栏在哪里?请随便选择文本试一下。2、怎么上传图片?请回车换行试一下。3、发布点击右上角的发布按钮发布笔记。建议和问题可以发邮件到pr@majing.io。期待您的参与和宝贵意见。Enjoy it!!!

java

雪花算法实现-分布式系统

一、订单id的特殊性订单数据非常庞大,将来一定会做分库分表。那么这种情况下, 要保证id的唯一,就不能靠数据库自增,而是自己来实现算法,生成唯一id。二、雪花算法这里的订单id是通过一个工具类生成的,而工具类所采用的生成id算法,是由Twitter公司开源的snowflake(雪花)算法。三、简单原理雪花算法会生成一个64位的二进制数据,为一个Long型。(转换成字符串后长度最多19位) ,其基本

123123

123123123123123

SSM redis数据源配置

<!-- redis配置开始 --> <!-- 配置JedisPoolConfig实例 --> <bean id="redisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"> <property name="maxIdle&

棋牌游戏;打麻将经常赢的这些技巧你知道几个?

​1. 该脱手时就脱手当手气不怎样好的时候,别人出的牌只管去碰,由于如许本应该是别人拿的牌就酿成本人的牌,从而别人的手气就发作的变革,运气天然就变革了。2. 兵不厌诈打麻将也能够用上孙子兵书中的兵不厌诈。明显本人曾经听牌了,却装出本人还未听牌,如许好让对方放松警觉,为本人点炮。反之便是本人还未听牌,装出曾经听牌,好让对方摸不着头脑。3. 听牌舍小取大要是手中曾经听牌,或是行将听牌时,而又有差别的和

Shell脚本使用curl命令发送JSON数据

在Linux使用命令行工具curl发送JSON数据需要把content-type设置为“application/json”。-H "Content-Type: application/json示例curl -H "Content-Type: application/json" -X POST -d '{"username":"jack","age":10}' http://example.com/

Java关键字transient

transient修饰的属性将不被串行化。使用transient:实现接口Serilizable的对象序列化是,添加了transient的属性不会被添加到序列化的对象中。它只会在内存里使用。transient只能修饰类成员变量,不能修饰类方法和方法内的变量对于静态变量,不管是否使用了transient修饰,都不会被序列化对于实现Externalizable的类,它的所有内容都不会自动序列化,它需要

Java 8忽略大小写排序字符串

假如有一个Student对象的列表students,现在需要对Student对象的name名字不区分大小写排序。方法一在java 8里可以使用列表的sort方法,也可以使用stream().sorted,并结合Comparator.comparing做排序List<Student> students = ...students.sort(Comparator.comparing(Stu

Java转换List为JSON格式

使用GSON可以很简单实现list转换为json格式。添加依赖<dependencies> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version

JUnit 5 @BeforeAll和@AfterAll的用法

JUnit 5的@BeforeAll和@AfterAll注释分为两种情景使用:静态方法和实例方法。静态方法@BeforeAll和@AfterAll默认是添加到静态方法上,@BeforeAll注释的静态方法会在执行所有测试用例之前调用,@AfterAll注释的静态方法会在所有的测试用例完成后调用。它们是在应用级别,应用于所有实例对象。示例:import org.junit.jup

Java判断LocalTime是否在午夜

判断LocalTime是否在午夜,可以判断时间是否在23:59和00:01之间。代码如下:private final LocalTime ONE_MINUTE_BEFORE_MIDNIGHT = LocalTime.of(23, 59, 0); private final LocalTime ONE

Java验证公私密钥对

验证过程:创建一个足够长的随机字节数,称为challenge使用密钥签名challenge使用公钥验证challenge示例代码:KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");  //密钥生成器 keyGen.initialize(2048); Ke

Java zip压缩与unzip解压

这里主要使用java.util.zip.*来实现zip和unzip:zip压缩public static void zip(String[] files, String zipFile) throws IOException {     BufferedInputStr

Java 9数组转换为List

Java 9使用List.of在Java 9,List新增了of()的工厂方法用来产生不可变的列表。返回一个空列表List list = List.of(); 多个元素生成列表List<Integer> list = List.of(1,2,3,4,5); 数组转换为列表Integer[] arr

Java版RSA的加密和解密

代码演示如何使用java来做RSA的加密和解码。import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.NoSuchAlgorithmException; import java.security.PrivateKey; import java.security.Pu

Java 10 var的使用及限制

在Java 10的众多特性里,局部变量的类型推断是比较受大家关注的特性之一。这里简单介绍下它的使用以及限制。在Java 7,声明一个列表我们会这样做:List<String> list = new ArrayList<String>(); Java 8/9可以改写为:List<String>&

Java 10:类型推断局部变量var

Java 10将新增特性:类型推断的局部变量声明var。java9以及之前的版本,声明一个局部变量需要显式声明它的类型。Java 10引入了新的变量声明关键词var,使用它不需要我们显式声明局部变量的类型,它会自动推断出局部变量的类型。Java 9示例:import java.util.*; public class Java9&nbs

Java使用Gradle依赖配置compile,implementation和api的区别

这个主要看Java项目所使用的Gradle的版本。Gradle3.4新增了Java-library插件,java-library插件使用了新的依赖配置implementation和api。旧的依赖配置compile被废弃。Gradle3.4之前的版本java插件apply plugin: 'java' 添加依赖dependencies { compile '

Java 9的Process和ProcessHandler

Java 9给Process API引入了多种改进,其中新增了ProcessHandler类,它提供了进程相关的信息,如pid,父进程,子进程,进程开始时间以及累计cpu时间等。这里使用Java 9的jshell简单演示下Process的使用:jshell> Process p = new ProcessBuil

设置Log4j显示的日期格式

一个简单的log4j配置如下:log4j.rootLogger=DEBUG, console log4j.appender.console=org.apache.log4j.ConsoleAppender log4j.appender.console.Target=System.out log4j.appender.console.layout=org.apache.log4j.Patt

Java 8使用Collectors.partitioningBy分割列表

有这样一个集合:List<Integer> integers = [ 1,2,3,4,5,6,7,8,9] 现在需要把集合按奇偶数分割为两个列表。这种情况下,我们可以使用Collectors.partitioningBy来分割:Map<Boolean, List<Integer>> map =

Java 8使用parallel Stream测试StringBuilder线程安全

我们知道StringBuilder不是线程安全的,但如何证明它非线程安全呢?测试StringBuilder是否线程安全一个简单的思路如下:模拟多个线程并发向StringBuilder实例添加字符,最后检测builder.toString().length()的值是否为添加字符的次数,如果非线程安全会出现builder.toString().length()的值与添加字符的次数不一致。Java&nb

Java 8/9使用Stream获取字符出现在字符串的索引列表

需求是这样的:输入一个字符串和一个字符,返回此字符出现在字符串里的所有索引。可以使用for循环迭代字符串可以实现此需求。考虑了下java8和java9的实现方案。java 8使用IntStream的实现方案public static List<Integer> getIndexes(String s, char c)

Java使用nio的Files新建文件并写入内容

Java 7新增的java.nio.file.Files提供了很简单并且效率高的新建文件并写入内容的方法。直接写入字节Charset utf8 = StandardCharsets.UTF_8; try {     Files.write(Paths.get("file1.txt"),&n

Java源码分析:产生随机数Random与ThreadLocalRandom的区别

Java用于产生随机数的方法主要有两种:java.util.Random和java.util.concurrent.ThreadLocalRandom。Random从Jdk 1.0开始就有了,而ThreadLocalRandom是Jdk1.7才新增的。简单从命名和类所在的包上看,两者的区别在于对并发的支持。RandomRandom是一个伪随机数生成器,它内置了一个种子数seed。获取随机

Java获取受信任的根证书列表的方法

import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.security.InvalidAlgorithmParameterException; import java.security.KeyStore; import java.security.KeySt

Java使用DecimalFormat将数字四舍五入到后几位

Java的DecimalFormat类可以对数字做格式化,如设置小数后指定位数。基本用法DecimalFormat df = new DecimalFormat("#.#####"); df.format(0.912356); 取后五位,默认不对数字的最后一位做四舍五入,返回结果为0.91235 对数字最后一位做四舍五入如果要对数字最后一

Java检查非null值有必要同时使用@NonNull和Objects.requireNonNull()吗

Java的@NonNull和Objects.requireNonNull()常常会被用来限制值为非null值,它们有什么不同呢?@NonNull在引入@NonNull之前,我们要求使用非null值时,往往需要在javadoc里做说明。编译器是没有办法对javadoc进行干预。使用注解类型@NonNull后,编译器就可以在编译时对代码做检查。这也有利于一些ide根据注解类型,对null值的代码给出提

Spring Boot设置服务器的端口

Spring Boot默认内嵌的web服务器为tomcat,端口为8080。如果想修改内嵌tomcat插件的端口有三种方式:在application.properties里修改在java的启动脚本里设置在java代码里设置在application.properties设置server.port=9999 如果是application.yml,设置如下:server:  &nbs