Java
文章平均质量分 56
mawei7510
stay hungry,stay foolish!
展开
-
SpringBoot获取pom文件中的版本号,已验证
在pom文件中配置plguin和resource.yml文件中采用@@获取版本号。一、pom文件中配置。原创 2022-09-02 11:11:03 · 3543 阅读 · 0 评论 -
SpringBoot集成Nacos动态读取配置文件及服务发现
ApplicationListener并实现其方法,空方法即可。问题:程序里面有定时任务,定时任务读取的配置如果发生动态变化后,定时任务不执行。PS: 在程序里面所有用到定时任务的类中都要实现上述接口。在需要引用配置的类中加入注解@RefreshScope。可以通过http url来验证动态配置是否生效。原因:定时任务读取配置文件懒加载的方式。解决:在定时任务所在的类,实现一个接口。1.新建namespace。3) 在nacos管理界面配置。...原创 2022-08-29 15:29:37 · 4269 阅读 · 0 评论 -
springboot中使用线程池最简单方式
关于线程和线程池的学习,我们可以从以下几个方面入手: 第一,什么是线程,线程和进程的区别是什么 第二,线程中的基本概念,线程的生命周期 第三,单线程和多线程 第四,线程池的原理解析 第五,常见的几种线程池的特点以及各自的应用场景 一、什么是线程线程,程序执行的最小执行单位,是行程中的实际运作单位,经常容易和进程这个概念混淆。那么,线程和进程究竟有什么区别呢?首先,进程是一个动态的过程,是一个活动的实体。简单来说,一个应用程序的运行就可以被看做是一个进程,原创 2021-11-09 17:16:08 · 695 阅读 · 0 评论 -
Vert.x 事务处理
Vert.x中处理数据库事务,需要手动关闭自动提交事务,不多说,直接上代码。Demo.javapackage com.test; import com.test.utils.Runner;import io.vertx.core.*;import io.vertx.core.http.HttpServerRequest;import io.vertx.core.json.Json;import io.vertx.core.json.JsonObject;import io.vertx转载 2021-07-22 10:09:07 · 840 阅读 · 0 评论 -
Windows、Linux对Socket KeepAlive参数配置
Linux系统对于TCP连接来说,如果客户端由于一些异常情况导致断网,从而未能向服务器发起FIN关闭消息,服务端在没有设置存活检测的情况下,该连接会在一定时间内保持存在,有可能会使服务器接入资源耗尽,导致accept失败。 解决这个问题,可以通过使用心跳包的方法来检测连接是否存活。socket 中存在 SO_KEEPALIVE 选项,可以用来解决刚刚提到的问题。使用 SO_KEEPALIVE 将会检测对方主机是否崩溃,避免服务器永远阻塞于TCP连接的输入。设置该选项后,如果2小时内在此套接口的任一方原创 2021-06-24 16:37:00 · 1805 阅读 · 0 评论 -
解决linux下tomcat停止进程任存在问题
在Linux下(之所以强调linux下,是因为在windows下正常),执行tomcat ./shutdown.sh 后,虽然tomcat服务不能正常访问,但是ps -ef |grep tomcat 后,发现tomcat对应的java进程未随web容器关闭而销毁,进而存在僵尸java进程。多次shutdown以后会发现系统内存溢出,然后需要一个一个把tomcat的进程杀掉问题原因在Linux系统中当有非守护线程(即User Thread)存在,jvm不会退出(当JVM中所有的线程都是守护线程的时候,原创 2021-03-16 16:21:46 · 449 阅读 · 0 评论 -
java使用JNA框架调用dll动态库
这两天了解了一下java调用dll动态库的方法,总的有三种:JNI、JNA、JNative。其中JNA调用DLL是最方便的。java使用 JNI来调用dll动态库的调用,工作量略大,一般情况下开发人员会选用JNA或JNative。使用JNative调用DLL除了要引入jar包外还需要额外引入一个dll文件,而JNA只需要引入jar即可使用。使用JNA框架调用DLL动态库,步骤如下:1.导入JNA支持的jar包添加jna-4.x.x.jar、jna-platform-4.x.x.jar原创 2021-02-22 10:17:48 · 1042 阅读 · 0 评论 -
tomcate部署多个war包
说明:环境基于windows系统,linux配置相同。#1.将war放在webapps目录下: manage_web_1.war manage_web_2.war 说明:tomcate启动时会自动解压webapps目录下的war包,不用手动解压,放入即可。#2.修改conf目录下的service.xml文件,新增如下配置,放在<Server></Server>标签中================================...原创 2020-12-10 17:29:42 · 1191 阅读 · 0 评论 -
intellij idea spring boot工程 AES加密解密报错 java.security.InvalidKeyException: Illegal key size
今天在使用idea打包maven项目时,出现这个错误:java.security.InvalidKeyException: Illegal key size。(测试也可能会出现这个问题)貌似是因为加密出现了问题。产生错误原因:为了数据代码在传输过程中的安全,很多时候我们都会将要传输的数据进行加密,然后等对方拿到后再解密使用。我们在使用AES加解密的时候,在遇到128位密钥加解密的时候,没有进行什么特殊处理;然而,在使用256位密钥加解密的时候,如果不进行特殊处理的话,往往会出现这个异常java.secu原创 2020-11-17 15:14:35 · 961 阅读 · 0 评论 -
记一次RocketMq和Vert.x冲突问题,导致Http接口服务访问不了
问题: 此问题说来话长,自从地球有了人类。。。。呵呵,好吧,长话短说。 项目用的是Vert.x框架,后来集成了RocketMq后,运行项目,Http接口访问失败。 具体表现是 telnet ip port是通的,但是网络访问服务的http接口就是不通。vert.x的createHttpServer也是成功的。但就是用访问接口不通。分析: telnet ip port是通的,说明创建http服务部分成功。结合之前没有集成RocketMq时,ht...原创 2020-08-18 17:10:08 · 920 阅读 · 1 评论 -
Intellij idea把工具类打Jar包,并混淆jar包之初体验(二)
Intellij idea把工具类打Jar包,并混淆jar包之初体验(一)代码混淆神器 Allatori准备工作此次案例使用官方 Demo,不使用任何插件环境:windows 101.Allatori简介Allatori 是第二代 Java 混淆器,可为您的知识产权提供全方位的保护。尽管大多数第二代混淆器都提供了值得保护的级别,但我们已经在Allatori中开...转载 2019-12-27 17:42:25 · 4172 阅读 · 2 评论 -
Intellij idea把工具类打Jar包,并混淆jar包之初体验(一)
一、生成不带Manifest文件的Jar(不可以直接执行Jar)1,首先打开Project Structure(Command+;)然后选择左边的Artifacts,再点上方的“+”号,来新建一个Artifact(按照Maven的说法,所有生成的东西都可以叫作Artifact,当然也包括Jar)。2,在弹出的选择框里,选择Jar -> Emtpy。3,选择完Empty后,会新建一...转载 2019-12-27 17:39:47 · 2462 阅读 · 0 评论 -
Intellij Idea开发: 手把手教你将Jar包打包成可执行的exe,可以在无jre环境下运行
前言: 如果你不知道怎样开发java gui程序,不知道怎样将gui程序打包成jar包,可以参考我的上一篇文章,亲测有效Intellij Idea开发: 手把手教你Java GUI开发,并且打包成可执行Jar程序先说说大概流程吧: 1.用exe4j软件将jar包转换为可执行的exe程序 2.用inno setup将exe程序及相关文件夹,制作成安装文件xxx.exe 3.将xxx...原创 2019-04-29 15:51:06 · 18220 阅读 · 16 评论 -
Intellij Idea开发: 手把手教你Java GUI开发,并且打包成可执行Jar程序
虽然说java gui已经淘汰了,很少有人用来开发桌面应用,但是作为一个java开发者来说, 如果你不会python等其他语言的话, 会java gui开发,是一件非常爽的事情, 可以开发一些桌面小工具用用. 反正我是抱着这个心态,来学习了解java gui的, 花了一天的时间,从建工程,到打包成可执行jar包. 所以记录一下,免得以后忘记,及给需要的人帮助! 转...原创 2019-04-28 15:43:34 · 28614 阅读 · 27 评论 -
java机制:类的加载详解(静态类,静态变量,静态方法,静态代码块,构造代码块,成员变量,成员方法,父类...)
“代码编译的结果从本地机器码转变为字节码,是存储格式发展的一小步,却是变成语言发展的一大步”,这句话出自《深入理解JAVA虚拟机》一.源码编译 代码编译由JAVA源码编译器来完成。主要是将源码编译成字节码文件(class文件)。字节码文件格式主要分为两部分:常量池和方法字节码。二.类的加载 类的生命周期是从被加载到虚拟机内存中开始,到卸载出内存结...原创 2018-10-26 14:25:16 · 5649 阅读 · 2 评论 -
Java: 浅拷贝和深拷贝的理解和实现方式
Java中的对象拷贝(Object Copy)指的是将一个对象的所有属性(成员变量)拷贝到另一个有着相同类类型的对象中去。举例说明:比如,对象A和对象B都属于类S,具有属性a和b。那么对对象A进行拷贝操作赋值给对象B就是:B.a=A.a; B.b=A.b;在程序中拷贝对象是很常见的,主要是为了在新的上下文环境中复用现有对象的部分或全部 数据。Java中的对象拷贝主要分为:浅拷贝(Shal...转载 2018-10-29 17:43:36 · 144 阅读 · 0 评论 -
Java中System.setProperty()用法
Java中System.setProperty()用法/* * 设置指定键对值的系统属性 * setProperty (String prop, String value); * * 参数: * prop - 系统属性的名称。 * value - 系统属性的值。 * * 返回: * 系统属性以前的值,如果没有以前的值,则返回 null。 * * 抛出: * Secu...转载 2018-11-03 14:19:19 · 2445 阅读 · 0 评论 -
解决CHM文档,打开后内容空白,或者点击目录没有内容显示
现象描述: 打开从网上下载的jdk1.8中文文档的chm文件, 有目录显示, 但是点击目录后,右侧没有相应内容显示 问题原因: chm文件被锁定了 解决办法: 关闭chm文档,邮件chm文档,选择属性-->解除锁定-->重新打开chm文档即可...原创 2018-11-12 10:29:08 · 2557 阅读 · 0 评论 -
java基本数据类型byte short int long float double char
byte 是 Java 原始类型。byte类型简称“字节型”,用于表示整数。 int 是 Java 原始类型。 int类型简称“整型”,用于表示整数。 short是java原始类型。 short类型简称“短整型”,用于表示整数。 long是java原始类型。 long类型简称“长整型”,用于表示整数。 byte、short、int、long...转载 2018-12-11 09:31:50 · 1814 阅读 · 0 评论 -
java8新特性:深入理解Java8 Lambda表达式
一、Lambda表达式是什么?Lambda表达式有两个特点:一是匿名函数,二是可传递。匿名函数的应用场景是:通常是在需要一个函数,但是又不想费神去命名一个函数的场合下使用Lambda表达式。lambda表达式所表示的匿名函数的内容应该是很简单的,如果复杂的话,干脆就重新定义一个函数了,使用lambda就有点过于执拗了。可传递使用场景是:就是将Lambda表达式传递给其他的函数,...原创 2019-01-10 14:35:08 · 563 阅读 · 0 评论 -
java/android: 保留小数点2位,四舍五入,小于2位原样输出
Talk is cheap , show you the code!!!!double xx = 1.2222; System.out.println("保留两位小数:"+String.format("%.2f",xx));//输出两位,四舍五入 DecimalFormat df1 = new DecimalFormat("#.00"); //输出两位,四舍五入 Deci...原创 2019-02-22 10:08:35 · 678 阅读 · 0 评论 -
java/android 通过经纬度坐标计算两点之间的距离
android 开发中使用到通过两个经纬度坐标计算位置,记录一下。talk is cheap , show you the code!返回距离计算结果:单位/千米 private static final double EARTH_RADIUS = 6378.137; private static double rad(double d) { return d * Math.PI ...原创 2019-02-20 16:48:56 · 818 阅读 · 0 评论 -
Intellij IDEA 修改项目名称
复制了一份之前的项目,直接在文件夹中修改了项目的名称,但是发现idea显示还是没有变化想要修改显示名称原创 2019-04-26 10:21:05 · 3040 阅读 · 0 评论 -
Intellij IDEA删除recent project记录
方法一:进入Manage Projects一个个删除方法二:找到IDEA配置文件.IntelliJIdea2018.2\config\options\recentProjects.xml在其中进行删除原创 2019-04-26 10:28:40 · 4044 阅读 · 0 评论 -
java 测试单例中的成员方法是否线程安全
这个是作为单例的类:这个是测试主程序入口:如果程序能够自动退出,就说明多线程下调用单例的方法,是线程不安全的;也就是说会导致线程A中的变量,被线程B改变。测试结果为:单例中的成员方法,在不涉及成员变量的使用时,是线程安全的。原因是由于java在调用类对象的方法的时候,是创建的临时存储区域进行的运算,也就是说虽然是一个对象,但是每次调用的方法实际却是多个独立的内存区域。(应...转载 2019-04-23 11:23:28 · 786 阅读 · 0 评论 -
Java: HashMap、HashTable、LinkedHashMap和TreeMap用法和区别
Java为数据结构中的映射定义了一个接口java.util.Map,它有四个实现类,分别是HashMap、HashTable、LinkedHashMap和TreeMap。本节实例主要介绍这4中实例的用法和区别。关键技术剖析:Map用于存储键值对,根据键得到值,因此不允许键重复,值可以重复。l (1)HashMap是一个最常用的Map,它根据键的hashCode值存储数据,根据键可以直接获取...转载 2018-10-29 14:44:19 · 173 阅读 · 0 评论