java

mybatis-plus IdWorker生成的Id和返回给前台的不一致的解决

2021-03-02
问题描述 今天在公司项目中修改id的生成策略为mybatis-plus自带的IdWorker策略时,发现返回给前台的id竟然和数据库不一致.费解得很呐. package net.mshome.twisted.tmall.entity; import com.baomidou.mybatisplus.annotation.FieldFill; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatis

JAVA发送HTTP请求的四种方式总结

2021-03-02
源代码:http://github.com/lovewenyo/HttpDemo 1. HttpURLConnection 使用JDK原生提供的net,无需其他jar包: HttpURLConnection是URLConnection的子类,提供更多的方法,使用更方便. package httpURLConnection; import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamRe

Java8中LocalDateTime与时间戳timestamp的互相转换

2021-03-02
Java8 LocalDateTime与timestamp转换 将timestamp转为LocalDateTime public LocalDateTime timestamToDatetime(long timestamp){ Instant instant = Instant.ofEpochMilli(timestamp); return LocalDateTime.ofInstant(instant, ZoneId.systemDefault()); } 将LocalDataTime转为t

如何手写一个Spring Boot Starter

2021-03-02
何为 Starter ? 想必大家都使用过 SpringBoot,在 SpringBoot 项目中,使用最多的无非就是各种各样的 Starter 了.那何为 Starter 呢?你可以理解为一个可拔插式的插件(组件).或者理解为场景启动器. 通过 Starter,能够简化以前繁杂的配置,无需过多的配置和依赖,它会帮你合并依赖,并且将其统一集成到一个 Starter 中,我们只需在 Maven 或 Gradle 中引入 Starter 依赖即可.SpringBoot 会自动扫描需要加载的信息并启动

详解Java 中泛型的实现原理

2021-03-02
泛型是 Java 开发中常用的技术,了解泛型的几种形式和实现泛型的基本原理,有助于写出更优质的代码.本文总结了 Java 泛型的三种形式以及泛型实现原理. 泛型 泛型的本质是对类型进行参数化,在代码逻辑不关注具体的数据类型时使用.例如:实现一个通用的排序算法,此时关注的是算法本身,而非排序的对象的类型. 泛型方法 如下定义了一个泛型方法, 声明了一个类型变量,它可以应用于参数,返回值,和方法内的代码逻辑. class GenericMethod{ public <T> T[] sort(T[]

spring 整合kafka监听消费的配置过程

2021-03-02
前言 最近项目里有个需求,要消费kafka里的数据.之前也手动写过代码去消费kafka数据.但是转念一想.既然spring提供了消费kafka的方法.就没必要再去重复造轮子.于是尝试使用spring的API. 项目技术背景,使用springMVC,XML配置和注解相互使用.kafka的配置都是使用XML方式. 整合过程 1. 引入spring-kafka的依赖包 <dependency> <groupId>org.springframework.kafka</groupId&

java中static的用法及注意点

2021-03-02
在关键词的使用上,我们已经对static方法有所了解,为了防止在使用时出现一些不必要的错误,了解它的使用范围是每个人都要掌握的.本篇把static的使用注意点分为两个方面,一个是访问的范围,另一个是有关方法调用的注意,下面我们一起来看看完整的static使用注意点吧. 1.使用static方法的时候,只能访问static声明的属性和方法,而非static声明的属性和方法是不能访问的. package com.jk.ref; class People{ String name; private s

IDEA中的HTTP Client使用教程

2021-03-02
介绍 IDEA RESTful WebServices是一个类似jmeter,postman的工具.可以使用纯文本编辑. 官网介绍地址:https://www.jetbrains.com/help/idea/restful-webservices.html 该工具是idea的一个组件,在Tools->Http client下:当然goland也是相同:低版本是Test Restful WebService,新版本的idea已经提示改功能废弃,建议使用new HTTP Client也就是我们此教程

Java自动拆箱空指针异常的解决

2021-03-02
公司搬迁,临时充当装修工,提前两个小时到公司忙着拆卸设备.结果接到客户反映,某部分功能偶尔不能用.于是参与救火,与写这段代码的小伙伴一起排查原因. 最终发现导致业务偶尔不能使用是由Long类型自动拆箱导致空指针异常引起的.下面就带大家分析一下Java中基础类型的包装类在拆箱和装箱过程中都做了什么,为什么会出现空指针异常,以及面试过程中会出现的相关面试题. 问题重现 下面通过一个简单的示例才重现一下异常出现的场景. public class BoxTest { public static void

SpringBoot Test类注入失败的解决

2021-03-02
如下所示 本来 bookService的引用一直是null. 导致每次测试都报空指针异常. 然后现在继承相应的 ApplicationTests类,然后使用@Component将该类注册为组件.就可以正常注入了. 补充:关于springboot test @Mapper ,@Autiwired注入无效的问题 @SpringBootTest() @RunWith(SpringRunner.class) public class ProductMapperTest { @Autowired Prod

springboot连接Redis的教程详解

2021-03-02
创建springboot项目 在NoSQL中选择Redis 项目目录 pom.xml中还需要加入下面的jar包 org.springframework.boot spring-boot-starter-json 在application.properties文件中添加Redis服务器信息 spring.redis.host=192.168.5.132 spring.redis.port=6379 剩下4个test类,我直接以源码的方式粘出来,里面有些代码是非必须的,我保留了测试的验证过程,所以里

Java 使用线程池执行多个任务的示例

2021-03-02
在执行一系列带有IO操作(例如下载文件),且互不相关的异步任务时,采用多线程可以很极大的提高运行效率.线程池包含了一系列的线程,并且可以管理这些线程.例如:创建线程,销毁线程等.本文将介绍如何使用Java中的线程池执行任务. 1 任务类型 在使用线程池执行任务之前,我们弄清楚什么任务可以被线程池调用.按照任务是否有返回值可以将任务分为两种,分别是实现Runnable的任务类(无参数无返回值)和实现Callable接口的任务类(无参数有返回值).在打代码时根据需求选择对应的任务类型. 1.1 实现

java swing实现简单的五子棋游戏

2021-03-02
用java swing写的一个简单的五子棋游戏. 下面是Main.java. package com.crossing.main; import com.crossing.view.GameWindow; public class Main { /** * @param args */ public static void main(String[] args) { GameWindow gameWindow = new GameWindow(); } } 下面是GameWindow.java.

python 与HFSS联合仿真的教程讲解

2021-03-02
看了很多其他人写的,python与HFSS联合仿真的博客,但说实话,都没有说到点子上.今天,给大家说说我的思路. python与HFSS联合仿真,有3种思路.下边一一介绍. 第一种 在HFSS中,选择tools-->record script to file ,选择导出到py文件即可.HFSS就会将你接下来的操作,转换为代码. 而你以后使用的时候,只需要改一下参数就可以了. 需要注意的是,这个python不可以直接用python编译器运行的,因为ScripEnv库,是HFSS自己的库. 如果要仿

Java List的sort()方法改写compare()实现升序,降序,倒序的案例

2021-03-02
本文旨在通过重写Comparator接口的compare()方法实现对List的升序.降序.倒序排序. 首先明确一点: compare(Integer o1, Integer o2){}中,o1代表的是List容器中的后一个元素,o2代表的是List容器中的前一个元素! 通过以下例子可以清晰了解这一点: public static void main(String[] args) { List<Integer> list = new ArrayList<Integer>(); li

解决springboot遇到autowire注入为null的问题

2021-03-02
这个问题困扰了很久,有些类不是controller在使用autowired注入的类显示为空,找到网上的方法是在类初始化时主动注入被Autowired的类,如下图 这样的方法是可行的,最后引用时使用上图中doubleTeachSendMsg.doubleTeachService.sendMsg();方法即可,但是使用起来未免太麻烦,而且也不是spring依赖注入的原则,这个出现原因其实就是此类是在bean加载之前被调用,或者springboot在加载时没有识别到此类,所以注入为空,要想使此类被识别

spring boot 常见http请求url参数获取方法

2021-03-01
在定义一个Rest接口时通常会利用GET.POST.PUT.DELETE来实现数据的增删改查:这几种方式有的需要传递参数,后台开发人员必须对接收到的参数进行参数验证来确保程序的健壮性 GET:一般用于查询数据,采用明文进行传输,一般用来获取一些无关用户信息的数据 POST:一般用于插入数据 PUT:一般用于数据更新 DELETE:一般用于数据删除:一般都是进行逻辑删除(即:仅仅改变记录的状态,而并非真正的删除数据) 1.@PathVaribale 获取url中的数据 请求URL:localhos

解决RedisTemplate的key默认序列化器的问题

2021-03-01
redis的客户端换成了spring-boot-starter-data-redis,碰到了一个奇怪的问题, 在同一个方法中 1.先hset,再hget,正常获得数据. 在不同的方法中 先hset,再hget获取不到数据,通过redis的monitor监控发现了命令的问题: 实际我的key为JK_HASH:csrk,hashkey为user,但是根据上图所示,实际执行的命令多了好多其他字符,这是什么原因呢? 在服务器端先确认发现实际有这个Hash,通过hset可以得到正确的数据,所以第一次执行h

springboot-jpa的实现操作

2021-03-01
JPA全称为Java Persistence API(Java持久层API),它是Sun公司在JavaEE 5中提出的Java持久化规范. 它为Java开发人员提供了一种对象/关联映射工具,来管理Java应用中的关系数据,JPA吸取了目前Java持久化技术的优点,旨在规范.简化Java对象的持久化工作. JPA对于单表的或者简单的SQL查询非常友好,甚至可以说非常智能.他为你准备好了大量的拿来即用的持久层操作方法.甚至只要写findByName这样一个接口方法,他就能智能的帮你执行根据名称查找实

解决SpringBoot 测试类无法自动注入@Autowired的问题

2021-03-01
原来的测试类的注解: @RunWith(SpringRunner.class) @SpringBootTest 一直没法自动注入,后来在@SpringBootTest, 加入启动类Application后就可以了 @RunWith(SpringRunner.class) @SpringBootTest(classes = Application.class) 补充:spring boot项目单元测试时,@Autowired无法注入Service解决方式 首先确认: 测试类所在包名要和启动类一致