Java
文章平均质量分 51
记录Java相关内容
争渡hc
科技向善,技术致胜
展开
-
Java正则匹配和字符串提取
Java正则匹配和字符串提取原创 2023-02-08 15:07:54 · 281 阅读 · 0 评论 -
Java对象属性复制的几种方法
对比Java中几种对象复制方法的区别和速度原创 2023-02-08 14:47:48 · 2932 阅读 · 0 评论 -
在各种操作系统中安装JDK
文章目录1. 卸载当前系统中的旧版JDK2. 安装新的JDK1). 创建Java目录2). 解压安装包3). 配置Oracle JDK3. 检查是否安装和配置成功说明:文档写于2015-12-30。前几天在Ubunutu下编译 Android 4.4,苦于编译过程中各种关于JDK的错误,在网上查阅了各种资料,最后成功解决JDK的各种问题。因此写这篇文档,用于记录方便以后查阅,也能方便别人。1....原创 2020-04-22 17:33:03 · 716 阅读 · 0 评论 -
CentOS 7安装JDK 1.8和tomcat8.5
1. 安装JDK1). 卸载系统中的OpenJDKrpm -qa|grep jdk可能会看到java-1.8.0-openjdk-headless-1.8.0.65-3.b17.el7.x86_64java-1.7.0-openjdk-1.7.0.91-2.6.2.3.el7.x86_64java-1.7.0-openjdk-headless-1.7.0.91-2.6.2.3.e...原创 2020-04-23 18:30:31 · 353 阅读 · 0 评论 -
Java常用工具类HttpClient的简单使用
在日常的开发中,去请求别的三方接口,现在有了一个很便捷的工具类:HttpComponents中的1. 添加依赖包HttpClient类属于org.apache.httpcomponents包中<!-- httpclient 网络请求--><dependency> <groupId>org.apache.httpcomponents</g...原创 2020-04-24 14:19:04 · 613 阅读 · 0 评论 -
Lombok的简单使用,使JavaBean更简洁
1. 什么是lombok在初期我们写JavaBean的时候会写大量的Getter/Setter方法,以及toString, hashCode等方法。Lombok可以使用注解的方式简化这些代码,让JavaBean更简洁和方便阅读。Lombok的官方地址: https://projectlombok.org/2. 使用1). 添加依赖<dependency> <gr...原创 2020-04-26 10:20:09 · 205 阅读 · 0 评论 -
Spring Boot+Log4j2+Tomcat实现日志记录和日志分割
1. Spring boot集成外置Tomcat注意:Spring Boot 2.X要使用Tomcat 8及以上的版本。1.1 修改依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</...原创 2020-04-26 11:42:02 · 2136 阅读 · 0 评论 -
Spring boot+swagger+bootstrap ui自动化接口文档
1. 什么是Swagger现在测试都提倡自动化测试,那我们作为后台的开发人员,也得进步下啊,以前用postman来测试后台接口,那个麻烦啊,一个字母输错就导致测试失败,现在swagger的出现可谓是拯救了这些开发人员,便捷之处真的不是一点两点。下面我们看下如何在微服务中将springboot与swagger来结合吧。简单说下,它的出现就是为了方便进行测试后台的restful形式的接口,实现动态...原创 2020-04-26 11:47:34 · 461 阅读 · 0 评论 -
为什么说Java只有值传递
1. 值传递举例值传递:值传递发生在使用基本数据类型时,传递的是实参的真实的值,形参的改变不影响实参。如:public static void main(String[] a) { int b = 5; int c = changeInt(b); System.out.println("b = " + b); System.out.println("c = ...原创 2020-04-24 14:56:49 · 213 阅读 · 0 评论 -
Java实现微信WAP H5支付功能实现
公司APP目前用到了微信的H5支付功能,这里记录一下实现过程。这篇记录可能回因为微信商户平台的API的变动而变得不完全正确,但是大体流程时不会错的。1. 微信H5支付流程不管我这文档写的多漂亮,咋们还是按照微信官方文档来,下看流程图,了解支付的大概过程:一定要把这副图看懂再去阅读其他文档就方便了。简单解释一下就是:用户再浏览器下单—》传回商家后台—》商家后台保存订单,调用微信统一下单接口将订单提交到微信支付后台—》微信支付后台返回一个“URL”给商户后台—》商户后台将URL以重定向的方式返给浏原创 2020-05-25 15:10:23 · 2074 阅读 · 1 评论 -
Java实现微信APP支付实现记录
这个就直接贴代码了,反正暂时没法验证对错错误工具类import plugins.pay.wechat.domain.WechatPayError;import java.util.HashMap;import java.util.Map;/** * 错误工具类,这里用枚举类会更好,不过我真的懒得去看文档改了,这个类也不是很重要,不搞了 * @author zhang.shushan */public class WeChatPayErrorUtil { private static原创 2020-05-25 16:12:35 · 890 阅读 · 0 评论 -
Java实现支付宝APP支付实现记录
支付宝支付成功返回结果封装import com.alibaba.fastjson.annotation.JSONField;import java.math.BigDecimal;import java.util.Date;/** * APP支付返回业务参数 * * @author zhang.shushan * @date 2018年1月24日 */public class AlipayAppPayRet{ // 通知时间 @JSONField(format="yyyy-M原创 2020-05-25 16:41:04 · 1600 阅读 · 0 评论 -
Java实现支付宝H5支付实现记录
支付宝支付成功返回封装import com.alibaba.fastjson.annotation.JSONField;import java.math.BigDecimal;import java.util.Date;/** * APP支付返回业务参数 * @date 2018年1月24日 */public class AlipayAppPayRet{ // 通知时间 @JSONField(format="yyyy-MM-dd HH:mm:ss") private Date n原创 2020-05-25 16:52:23 · 742 阅读 · 0 评论 -
Java实现iOS内购实现记录
支付凭证解析工具import javax.net.ssl.*;import java.io.BufferedOutputStream;import java.io.BufferedReader;import java.io.InputStream;import java.io.InputStreamReader;import java.net.URL;import java.security.cert.CertificateException;import java.security.cer原创 2020-05-25 17:06:40 · 821 阅读 · 0 评论 -
Java使用com.google.zxing生成二维码在Linux环境中无法生成二维码问题
二维码在我们的日常生活中已经泛滥了,所以作为死开发的我也没能逃过给用户创建二维码这个功能的实现。好在轮子已经有大佬造好了。我的环境是:Spring boot项目CentOS 7.4Tomcat 8代码实现:import java.awt.Color;public class MatrixToLogoImageConfig { //logo默认边框颜色 public static final Color DEFAULT_BORDERCOLOR = Color.RED;原创 2020-06-14 13:02:19 · 1588 阅读 · 3 评论 -
@NotEmpty、@NotNull、@NotBlank的源码注释、区别
@NotEmpty/** * Asserts that the annotated string, collection, map or array is not {@code null} or empty. * * @author Emmanuel Bernard * @author Hardy Ferentschik */翻译过来是:断言,带注解的String,collection,map或数组不能为null,也不能为空。也就是只对上述4种类型参数进行判断,判断条件:obj != nu原创 2020-10-10 14:28:52 · 762 阅读 · 0 评论 -
SpringBoot+SpringSecurity+jwt实现前后端分离的权限认证(不用security的登陆和注销)
文章目录涉及到的文件介绍AjaxAccessDeniedHandlerAjaxAuthenticationEntryPointJwtUtilsJwtAuthenticationTokenFilterUrlFilterInvocationSecurityMetadataSourceUrlAccessDecisionManagerSpringSecurityConfig涉及到的文件介绍AjaxAccessDeniedHandler----用户权限不足时反给前端的数据AjaxAuthenticationEn原创 2020-10-20 18:43:23 · 1940 阅读 · 0 评论 -
JDK 6和JDK 7中substring的原理及区别(源码分析)
String是Java中一个比较基础的类,每一个开发人员都会经常接触到。而且,String也是面试中经常会考的知识点。String有很多方法,有些方法比较常用,有些方法不太常用。今天要介绍的substring就是一个比较常用的方法,而且围绕substring也有很多面试题。这里记录substring方法在JDK6和JDK7中的不同实现方式substring的作用substring(int beginIndex, int endIndex)方法截取字符串并返回其[beginIndex,endIndex-1原创 2020-11-12 17:30:00 · 157 阅读 · 0 评论 -
Java中字符串拼接的几种方式(源码分析)
字符串拼接是我们在Java代码中比较经常要做的事情,就是把多个字符串拼接到一起。我们都知道,String是Java中一个不可变的类,所以他一旦被实例化就无法被修改。不可变类的实例一旦创建,其成员变量的值就不能被修改。这样设计有很多好处,比如可以缓存hashcode、使用更加便利以及更加安全等。字符串拼接的几种方式1. 使用“+”号在日常的开发中,我们使用+进行拼接的频率是非常高的String s = "abc";s = s + "y";System.out.println(s);输出原创 2020-11-16 12:30:05 · 7634 阅读 · 0 评论 -
Swagger2开启验证,保证生产环境安全
最近接口经常被频繁访问,我估计是线上文档泄露了,所以今天看了看如何对swagger文档添加一个密码访问pom配置<!-- Swagger2 --><dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version></d原创 2020-11-18 18:58:24 · 3636 阅读 · 0 评论 -
Java工具类HttpComponents之HttpClient,使用HttpClient发送POST/GET请求
添加依赖<!-- httpclient 网络请求--><dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.2</version></dependency><!-- fastjson --><原创 2021-04-02 11:05:23 · 263 阅读 · 0 评论 -
Java中Map通过value进行排序
主要思路:将待排序Map中的所有元素置于一个列表中,接着使用Collections的一个静态方法 sort(List list, Comparator<? super T> c) 来排序列表,同样是用比较器定义比较规则。排序后的列表中的元素再依次装入Map,为了肯定的保证Map中元素与排序后的List中的元素的顺序一致,使用了LinkedHashMap数据类型。//Map根据value进行排序public static Map<String, Integer> valueUpSo原创 2021-04-02 11:12:53 · 5028 阅读 · 0 评论 -
Spring Boot返回Json数据,Long型字段精度丢失问题
最近在做一个项目的时候遇到了以Long型变量保持id的问题,以Json格式返回到前台就精度丢失了。造成这个问题的原因是:在JS中没用Long型的数据类型,所以回精度丢失。解决办法:import com.fasterxml.jackson.annotation.JsonInclude;import com.fasterxml.jackson.databind.ObjectMapper;import com.fasterxml.jackson.databind.module.SimpleModule;原创 2021-04-02 11:46:03 · 1079 阅读 · 0 评论 -
Java IO流
文章目录文件操作(File)构造方法常用方法字节输入输出流(FileInputStream和FileOutputStream)字节输入流(FileInputStream)构造方法常用方法代码示例字节输出流(FileOutputStream)构造方法常用方法代码示例字符输入输出流(FileReader和FileWriter)字符输入流(FileReader)代码示例字符输出流(FileWriter)代码示例对象输入输出流(ObjectInputStream和ObjectOutputStream)对象输出流(O原创 2021-08-30 18:38:49 · 89 阅读 · 0 评论 -
Java集合
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar原创 2021-08-30 15:25:29 · 63 阅读 · 0 评论 -
多线程(2):同步锁、等待唤醒机制、阻塞队列、同步数据、并发工具类
文章目录synchronized和ReentrantLock两种加锁方式synchronized加锁ReentrantLock加锁死锁问题等待唤醒机制wait()方法和sleep()方法的区别阻塞队列synchronized和ReentrantLock两种加锁方式synchronized加锁public class Ticket implements Runnable { private int ticketNum = 1000; private static final Object原创 2021-09-05 10:19:56 · 181 阅读 · 0 评论 -
多线程(1):创建线程的三种方式、Thread的常用方法和线程状态
文章目录创建线程的三种方式继承Thread类为什么不在main方法中直接调用run方法实现Runnable接口实现Callable接口三种创建线程的方式的区别创建线程的三种方式继承Thread类继承Thread类并重写run()方法,然后执行start方法启动线程:public class MyThread extends Thread { @Override public void run() { System.out.println("线程开始执行");原创 2021-08-30 19:01:22 · 101 阅读 · 0 评论 -
多线程(3):创建线程池
使用Executor创建线程池创建默认容量的线程池// 创建线程池ExecutorService executorService = Executors.newCachedThreadPool();// 向线程池中提交任务executorService.submit(() -> { System.out.println(Thread.currentThread().getName() + "正在运行");});// 关闭线程池executorService.shutdown();原创 2021-09-03 21:04:59 · 156 阅读 · 0 评论