Java

最新文章

Dubbo启动报错:qos-server can not bind localhost:22222

在同一台服务器上启动两个dubbo服务,第二个dubbo服务报错:main [server.Server] 102 [ERROR] [DUBBO] qos-server can not bind localhost:22222, dubbo version: 2.6.4, current host: 169.254.68.252java.net.BindException: Address al

Spring Cloud集成ZooKeeper注册中心绑定指定ip,解决UnknownHostException

Spring Cloud集成Zookeeper作为注册中心,从网关Spring Cloud GateWay转发给微服务里,在微服务里看到发送请求过来是以主机别名为url,如主机别名是server1.cluster,那么访问的地址是http://server.cluster/xxx。在GateWay有时会导致找不到服务。报类似如下的错误:500 Server Error for HTTP GET "

Java反射获取方法的参数名,Maven/IDEA/Eclipse配置

从JDK8开始,反射类添加了Parameter,通过Parameter类,我们可以从.class编译后的文件中获取方法上参数名。获取参数名的方法:Parameter.getName()示例:public static List<String> getParameterNameJava8(Class clazz, String methodName) { List<String&g

Java使用Map.computeIfAbsent()方法简化初始不存在的key

我们在开发过程中,经常会遇到值为Map的Map。这种情况下我们需要先把key的值取出来,然后判断是否为null。如果值为null,则初始化值并把它存放进Map。示例代码:String childKey="2020-01";User user = new User();Map<String,Map<String,User>> parentMap = new HashMap()

Maven使用本地jar包

Maven导入本地的jar包,有下面两种方法。方法一:使用mvn安装本地jar包到本地仓库mvn install:install-file \ -Dfile=<path-to-file> \ -DgroupId=<group-id> \ -DartifactId=<artifact-id> \ -Dversion=<version>

Java使用IOUtils转换InputStream为String

Apache commons是一个强大的Java辅助工具包。它提供的IOUtils可以让我们很便捷的实现InputStream转换为String。StringWriter writer = new StringWriter();IOUtils.copy(inputStream, writer, encoding);String theString = writer.toString();首先把in

Java 11报错:java.lang.NoClassDefFoundError: javax/xml/bind/JAXBException

Java 11 删除了Java EE 模块,其中包括了java.xml.bind (JAXB) - REMOVEDjaxb在Java各个版本支持如下:Java 8 - 可用Java 9 - 废弃Java 10 - 废弃Java 11 - 移除解决方法方法一:可以通过Java EE技术的替代版本来解决此问题。只需添加包含所需类的Maven依赖项。<dependency> <gro

笔记示例

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

123

123

SpringBoot项目集成maven-shade-plugin

因为项目是基于springboot搭建的,按springboot的教程,打包只需要在pom添加以下即可:<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId></plugin>

Kotlin与Java相互调用

Kotlin的设计过程中就考虑到了与Java的互操作性。在Kotlin中可以直接调用既有的Java代码, 反过来在Java中也可以很流畅地使用Kotlin代码。Kotlin 调用 Java一、大多数Java代码,可以直接调用:fun () { val list = ArrayList<string>() list.add("hello world")}二、特殊的调用规则以下

JIT的分层编译和逃逸分析

JIT到底在Java的运行中发挥了什么作用呢?根据查阅到的资料,一个作用是做分层编译,一个是做对象的逃逸分析。对于循环体中的代码,循环到一定的程度的时候,就会被再次被编译,编程执行速度更加迅速的代码。对于新建的对象,讲过逃逸分析,如果数据不会逃逸,则将数据放在栈上,不再在heap上新建这个对象。这样的好处是:避免了在堆上新建的锁堆导致的资源损耗不需要GC

Java定位代码导致的CPU过高问题

相信大家肯定遇到过java程序cpu一直居高不下的情况,那么我来简单介绍在linux系统下如何定位java进程cpu过高的代码位置。 首先,使用命令top,找到cpu过高的pid;接着,使用top -Hp pid 找到对应的线程 tid;我们知道jstack可以查看当前java进程的堆栈状态;由于线程在堆栈信息的使用16进制的。那么,printf "%x" tid 可以获取16进制的 tid16。

Semaphore信号量用法示例

概要 ​ Semaphore当前在多线程环境下被扩放使用,操作系统的信号量是个很重要的概念,在进程控制方面都有应用。Java 并发库的Semaphore可以很轻松完成信号量控制,Semaphore可以控制某个资源可被同时访问的个数,通过 acquire()获取一个许可,如果没有就等待,而release()释放一个许可。用来控制资源同时访问个数 ​ 以一个停车场运作为例。假设停车场只有三个车位,一开

JAVA三大特性之多态

1、介绍 多态是同一个行为具有多个不同表现形式或形态的能力 多态就是同一个接口,使用不同的实例而执行不同操作 多态性是对象多种表现形式的体现。 2、多态存在的必要条件 继承 子类重写父类方法 父类引用指向子类对象 比如:Parent parent = new Child();  3、代码示例 ①、基于继承实现的多态public class {

Java 14新特性:instanceof的模式匹配

Java中instanceof是用来判断对象的类型是否是目标类型。如果是返回true,不是返回false。在Java 14之前,示例如下:if (obj instanceof String) { String str = (String) obj; .. str.contains(..) ..}else{ str = ....}obj instanceof String已经为

Tomcat 8.5新安装环境初步配置优化

下载安装Tomcatwget http://mirrors.hust.edu.cn/apache/tomcat/tomcat-8/v8.5.37/bin/apache-tomcat-8.5.37.tar.gztar zxf apache-tomcat-8.5.37.tar.gz -C /usr/localmv /usr/local/apache-tomcat-8.5.37 /usr/local/t

Java14新特性:Switch表达式

Java 14正式发布switch表达式特性。在之前的两个 Java 版本Java12,Java13,switch特性只是预览版。新的switch表达式有助于避免一些bug,因为它的表达和组合方式更容易编写。switch新的表达式有两个特点:支持箭头表达式返回。支持yied和return返回值。Java 14之前switch语法:switch (day) { case MONDAY:

Ubuntu 18.10 LTS上安装JDK 11.0.6

下载JDK首先到Oracle官网下载JDK,JDK 11的下载地址:https://www.oracle.com/java/technologies/javase-jdk11-downloads.html下载的是linux通用版本:jdk-11.0.6_linux-x64_bin.tar.gz,如图: 安装JDK安装压缩包版本的jdk比较简单,创建一个安装路径,然后把压

Java防止非静态内部类内存泄漏

内存泄漏一个不会被使用的对象,因为另一个正在使用的对象持有该对象的引用,导致它不能正常被回收,而停留在堆内存中,从而导致内存泄漏。最坏的情况下,由于大量的内存泄漏,最终导致jvm的内存耗尽,致使程序奔溃。也可能会导致内存空间不足,jvm出现频繁的GC。代码示例import java.util.ArrayList;class OuterClass{ private int[] data; p

Redis用法

1、使用RedisTemplate访问Redis数据结构redisTemplate.opsForValue(); //操作字符串redisTemplate.opsForHash(); //操作hashredisTemplate.opsForList(); //操作listredisTemplate.opsForSet(); //操作setredisTemplate.opsForZSet()

java8新特性

 1、list<Dto>转List<String> List<String> openIdList = list.stream().map(o -> o.getOpenId()).collect(Collectors.toList());  2、List转map Map<String, SearchActivityCustome

RocketMQ在Windows安装

RocketMQ下载地址及相关文档下载地址:http://rocketmq.apache.org/dowloading/releases下载版本 rocketmq-all-4.6.0-bin-release.zip解压后目录结构,bin目录下存放可运行的脚本RocketMQ自身分为 NameServer 和 Broker 两个部分,因此,用作本机开发调试用的最小应用,应该分别启动一个NameSer

箭头函数

廖雪峰网站https://www.liaoxuefeng.com/wiki/1022910821149312/1031549578462080ES6标准新增了一种新的函数:Arrow Function(箭头函数)。为什么叫Arrow Function?因为它的定义用的就是一个箭头:x => x * x上面的箭头函数相当于:function (x) { return x * x;}箭头函

IDEA的 debug调试

F9:恢复程序Alt+F10:显示执行断点F8: 跳到下一步F7:进入到代码Alt+shift+F7:强制进入代码Shift+F8:跳到下一个断点Atl+F9:运行到光标处ctrl+shift+F9:debug运行java类ctrl+shift+F10:正常运行java类Alt+F8:debug时选中查看值

笔记示例

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

Java 正则表达式不区分大小写

Java里使用正则表达式默认是区分大小写的,如果想要做不区分大小写匹配,有两种方式:表达式前加上前缀(?)在调用Pattern.compile()时,通过参数指定不区分大小写。表达式前加前缀(?)示例:Pattern pattern = Pattern.compile("(?)hello:\\s(.*)");调用Pattern.compile()时,通过参数指定不区分大小写示例:Pattern.c

Sonar Java默认扫描规则

规则如下:".equals()" should not be used to test the values of "Atomic" classes:equals()方法不应该用在原子类型的数据上(如:AtomicInteger, AtomicLong, AtomicBoolean)."=+" should not be used instead of "+=":"=+"不可以替代 “+=”."=

Java把LocalDate转换为Date

有时需要在LocalDate和Date之间互转。LocalDate转换为DateLocalDate localDate = LocalDate.now();System.out.println("LocalDate = " + localDate);Date date = Date.from(localDate.atStartOfDay(ZoneId.systemDefault()).toInst

Java 8使用Collections toMap实现List转换为Map

Collections提供了toMap()来实现集合转换为Map。方法如下:Collector<T, ?, Map<K,U>> toMap(Function<? super T, ? extends K> keyMapper, Function<? super T, ? extends U> valueMapper) keyMapper:实现键的

Object.wait()与Thread.sleep()的区别

Object.wait()方法Object.wait()与Object.notify(),Object.nofityAll()需要搭配使用,协作线程之间的通信。线程获取到对象锁后,当它调用锁的wait()方法,就会释放对象锁,同时线程挂起,直到其他线程获取到对象锁并执行notify()后,线程重新开始运行。示例final static Object lock = new Object();

Java Predicate接口的使用

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