java篇
java编程方法、思想
了迹奇有没
刺客排行榜952712138,兼纸后端开发
展开
-
java 生成grpc调用service
在java中生成grpc调用service,供java或者kotlin中使用原创 2022-11-15 17:08:55 · 1097 阅读 · 0 评论 -
Java 只有引用类型(reference type)
学过java的朋友一定听过这个概念,java设计者将java的类型分为基本类型(int、string、double、long等)和引用类型(对象),基本类型使用时,是值传递,而对象类型使用时,是引用传递。但,这两者在本质上,真的有区别吗?其实,Java 只有引用类型(reference type)!为什么这么说呢?在java中,没有指针的概念,对于基本类型,引入了常量池的概念。这其实是为了效率的优化(叫做 inlining),在实现上,确实是通过值进行直接传递的。java不会对值进行改变,而是直接修改地址。原创 2022-06-30 11:17:57 · 701 阅读 · 0 评论 -
Springboot集成Kafka,看这篇就够了。Kafka消息事务处理,同步异步分区拦截。
SpringBoot集成Kafka生产者同步异步分区拦截、事务处理。原创 2022-06-11 16:04:06 · 3294 阅读 · 3 评论 -
Netty第一次建立连接实现url鉴权
我们的方案是将认证信息放在连接建立的url中,在第一次连接时进行鉴权,鉴权成功建立连接,不成功断开连接。原创 2022-05-23 10:18:09 · 3885 阅读 · 7 评论 -
netty报错 io.netty.util.IllegalReferenceCountException: refCnt: 0, decrement: 1
netty报错,报错信息如下:io.netty.util.IllegalReferenceCountException: refCnt: 0, decrement: 1这是因为SimpleChannelInboundHandler会自动释放内存(虽然这是一种软释放)即是refCnt引用数减一。在使用SimpleChannelInboundHandler作为Server端的时候,代码中手动释放了一次msg的内存,导致refCnt引用数为0,这个时候框架试图去释放一次,就报如上错误。释放代码如:msg.原创 2022-05-19 12:02:08 · 8581 阅读 · 0 评论 -
Java三种方式实现redis分布式锁
一、引入原因在分布式服务中,常常有如定时任务、库存更新这样的场景。在定时任务中,如果不使用quartz这样的分布式定时工具,只是简单的使用定时器来进行定时任务,在服务分布式部署中,就有可能存在定时任务并发执行,造成一些问题。在库存更新这样的场景中,我们服务对数据库同一条记录进行更新,并记录。对记录更新可以使用分布式锁,但对操作进行记录时,可能造成读未提交,造成记录错乱的情况。在以上的场景中,我们引入了分布式事务锁。二、分布式锁实现过程中的问题问题一:异常导致锁没有释放这个问题形成的原因就是程序原创 2022-04-28 14:04:37 · 20589 阅读 · 2 评论 -
Java springboot使用RedisTemplate操作RedisBitMap, RedisTemplate 使用 BitField命令
Java springboot使用RedisTemplate操作RedisBitMap, RedisTemplate 使用 BitField命令原创 2022-04-11 16:09:09 · 4029 阅读 · 0 评论 -
Spring体系下单例策略模式,java策略模式最佳实践
使用最常用的支付场景,轻松了解掌握策略模式。原创 2022-04-08 14:25:53 · 533 阅读 · 0 评论 -
springboot实现SSE服务端主动向客户端推送数据,java服务端向客户端推送数据,kotlin模拟客户端向服务端推送数据
SSE服务端推送服务器向浏览器推送信息,除了 WebSocket,还有一种方法:Server-Sent Events(以下简称 SSE)。本文介绍它的用法。在很多业务场景中,会涉及到服务端向客户端发起推送通知,但HTTP 协议无法做到服务器主动推送信息。如何实现呢? 很多人知道WebSocket,使用长连接,实现客户端与服务端的全双工通信。但在一些场景,如支付的回调功能,这时候我们的业务只有一个功能点需要用到服务器的推送,为了一个支付功能去建立长连接,从而实现服务器推送又有些过度设计,并不合理。但原创 2022-03-14 14:34:35 · 9722 阅读 · 1 评论 -
继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错? springboot 两种方式稳定解决跨域问题
继承WebMvcConfigurer 和 WebMvcConfigurerAdapter类依然CORS报错???springboot 两种方式稳定解决跨域问题! 之前我写了[一篇文章](https://blog.csdn.net/w_monster/article/details/118496270),来解决CORS报错,文中使用到的就是WebMvcConfigurer来进行跨域处理,在最近的项目调试中,我发现这种方法并不能完全覆盖跨域问题,所以我进行了探索,找了了以下两种方法进行补充。原创 2022-03-14 10:22:56 · 2798 阅读 · 0 评论 -
Java 获取当前时间之后的第一个周几,java获取当前日期的下一个周几
Java 获取当前时间之后的第一个周几,java获取当前日期的下一个周几原创 2022-02-08 14:46:50 · 2122 阅读 · 0 评论 -
在Dockerfile中设置G1垃圾回收器参数
在Dockerfile中设置G1垃圾回收器参数原创 2022-01-18 15:20:53 · 886 阅读 · 0 评论 -
redisson get()数据报错,missing type id property ‘@class’
redisson get()数据报错:com.fasterxml.jackson.databind.exc.InvalidTypeIdException: Missing type id when trying to resolve subtype of [simple type, class java.lang.Object]: missing type id property ‘@class’详细报错信息如下:com.fasterxml.jackson.databind.exc.Invalid原创 2021-11-29 18:04:42 · 13505 阅读 · 1 评论 -
IDEA远程调试linux上的SpringBoot项目
IDEA远程调试linux上的SpringBoot项目一、intellij idea配置打开idea中的run/debug configurations, 选择remote类型,地址配置为服务器地址,端口配置为上述配置参数中的address,如下图:正确选择远程主机ip(即Spring Boot应用部署的主机ip)及自定义的调试端口(调试端口,不是应用启动服务端口)正确选择JDK版本,不同的版本远程命令行参数不同(Command line arguments for remote JVM)。原创 2021-09-01 17:39:20 · 1097 阅读 · 0 评论 -
restTemplate http请求报错:no suitable HttpMessageConverter found for response type and content type
报错信息:org.springframework.web.client.UnknownContentTypeException: Could not extract response: no suitable HttpMessageConverter found for response type [class com.xxx] and content type [text/html;charset=utf-8]异常原因:RestTemplate请求不支持content type [text/html;原创 2021-08-31 15:51:07 · 2283 阅读 · 0 评论 -
SpringBoot部署脚本,拿走即用!
一个可以直接拿来使用的shell脚本,适用于springboot项目#!/bin/bash# 这里可替换为你自己的执行程序,其他代码无需更改,绝对路径相对路径均可。# 若使用jenkins等工具远程构建,则使用绝对路径,下面的日志输出路径同!APP_NAME=/root/webserver-0.0.1-SNAPSHOT.jar# 使用说明,用来提示输入参数 仅在输入错误时提示使用。usage() { echo "Usage: sh 脚本名.sh [start|stop|restart|sta原创 2021-07-23 19:31:20 · 846 阅读 · 0 评论 -
Java | Kotlin byte转Int
byte转Intjava中是value & 0xffkotlin中要先使用.toInt()然后再and 0xff(注意:不可直接as Int)如下:// javaint i = value & 0xff// kotlinval i = value.toInt() and 0xff原创 2021-07-12 12:13:46 · 919 阅读 · 0 评论 -
Java | kotlin 手动注入bean,解决lateinit property loginService has not been initialized异常
kotlin.UninitializedPropertyAccessException: lateinit property loginService has not been initialized注解类加载延迟导致的异常解决方法一:工厂模式建一个工厂类,如UserServiceFactory,使用该方法java版:public abstract class UserServiceFactory { private static UserService userService原创 2021-07-12 11:53:51 · 1368 阅读 · 2 评论 -
OpenAPI使用(swagger3),Kotlin使用swagger3,Java使用swagger3,gradle、Maven使用swagger3
OpenAPI使用(swagger3)一、背景及名词解释OpenAPI是规范的正式名称。规范的开发工作于2015年启动,当时SmartBear(负责Swagger工具开发的公司)将Swagger 2.0规范捐赠给了Open API Initiative,该协会由来自技术领域不同领域的30多个组织组成。此后,该规范被重命名为OpenAPI规范。 Swagger 是一个 API文档维护组织,后来成为了 Open API 标准的主要定义者。现在最新的版本为17年发布的 Swagger3(Open Api3)原创 2021-06-28 19:20:44 · 1684 阅读 · 2 评论 -
springboot设置文件上传大小(tomcat默认1M)
application.yml# 设置文件上传大小(tomcat默认1M)server: tomcat: max-http-form-post-size: -1spring: servlet: multipart: max-file-size: 100MB max-request-size: 500MB原创 2021-04-08 17:23:33 · 2233 阅读 · 0 评论 -
Java中的Hash值的计算方式,java哈希算法简单数据类型的具体实现
最近被提及Java中HashMap的一些实现及哈希冲突等,借鉴了一位老哥的部分解析,比较明白的展示hash算法的应用吧结论:对于String、Integer等类复写了Object中的hashCode方法的类来说,有各自的实现方法Object类中的hashCode()该方法是一个本地方法,Java将调用本地方法库对此方法的实现先上代码,public class Test { public static void main(String[] args) { String.转载 2021-02-24 10:51:12 · 6583 阅读 · 0 评论 -
springboot项目使用junit4进行单元测试,maven项目使用junit4进行单元测试
首先,maven项目中引入依赖<dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.11</version> <scope>test</scope></dependency><dependency> <原创 2021-02-23 16:43:10 · 1031 阅读 · 0 评论 -
快起床刷题去,别人把你offer拿走啦
好久没有上力扣刷题咯,又到了关键的时刻,却忘得零零散散,囧~话说,刷题、学算法、常用,这些技能才能长在身上!上一道刚刚遇到的正菜~题:给定一个整数数组 nums 和一个目标值 k,请实现一个方法判断 nums 中是否存在某个片段(即若干个相连元素)之和等于 k。要求时间复杂度为 O(n)。public boolean checkSum(int[] nums, int k) { // Write your code here.}首先分析题目,题目大意为:能否从一段数里找一段连续的数,组成原创 2021-01-22 20:50:27 · 1262 阅读 · 2 评论 -
Map的分类和不同的应用场景
java为数据结构中的映射定义了一个接口java.util.Map;它有四个实现类,分别是HashMap,Hashtable,LinkedHashMap和TreeMap可能很多人只使用过HashMap,但还是那句话,你可以不用,但你不能不懂。如果你也是这样,恭喜你发现了宝藏。首先是这个原始天尊-MapMap主要用于存储健值对,根据键得到值,因此不允许键重复(重复了覆盖了),但允许值重复。1. 大徒弟HashMapHashmap是一个最常用的Map,它根据键的HashCode值存储数据根据键可原创 2020-12-20 19:25:26 · 1052 阅读 · 0 评论 -
将文件上传至ftp服务器,FTP文件上传工具类,将文件上传至服务器指定目录
将文件上传至ftp服务器,传入File对象,将文件上传至ftp服务器需要配置修改的点:1. 服务器ip端口(服务器ip 端口22/21)。2. 服务器账号密码(服务器登录用户名密码)。3. 上传路径(写入的路径会去检查是否存在,若存在则在路径下继续深入,不存在则创建)。4. 下面的注释很全面很清楚,如遇问题,可留言。@Slf4j@Componentpublic class FtpUtils { /** * @param 文件 * @return原创 2020-12-19 17:22:00 · 1011 阅读 · 2 评论 -
java基本类型转换,随记
java基本类型转换:doubledouble 转 longdouble random = Math.round(Math.random()*10000); long l = new Double(random).longValue();原创 2020-12-09 16:27:15 · 126 阅读 · 0 评论 -
List元素互换,List元素转换下标,Java Collections.swap()方法实例解析
Java Collections.swap()方法解析jdk源码:public static void swap(List<?> list, int i, int j) { // instead of using a raw type here, it's possible to capture // the wildcard but it will require a call to a supplementary // private me原创 2020-11-11 15:42:53 · 1822 阅读 · 0 评论 -
数组截取方法-Arrays.copyOfRange()详解
Arrays.copyOfRange();public static <T> T[] copyOfRange(T[] original, int from, int to) { return copyOfRange(original, from, to, (Class<? extends T[]>) original.getClass());}入参:数组,开始下标,结束下标反参:数组功能描述:将一个原始的数组original,从下标from开始复制,复制到原创 2020-11-10 17:40:03 · 6274 阅读 · 0 评论 -
java1.8新增超实用Map方法——Map.getOrDefault()和Map.value()方法详解
1. Map.getOrDefault()/** * Returns the value to which the specified key is mapped, or * {@code defaultValue} if this map contains no mapping for the key. * * @implSpec * The default implementation makes no guarantees about synchro原创 2020-10-28 16:40:19 · 2814 阅读 · 0 评论 -
Java Calendar.add()方法的使用,参数含义。指定时间差。
cal.add()方法中的参数含义:第一个参数如果是1则代表的是对年份操作,2是对月份操作,3是对星期操作,5是对日期操作,11是对小时操作,12是对分钟操作,13是对秒操作,14是对毫秒操作。第二个参数则是加或者减指定的 年/月/周/日/时/分/秒/毫秒例如: Calendar calendar = Calendar.getInstance();calendar.add(5,1); 则表示对日期进行加一天操作下面是demo代码,可直接拿去测试和使用????Cal原创 2020-10-09 11:26:44 · 16717 阅读 · 2 评论 -
正则校验18位身份证号,拿走即用!
使用正则表达式判断大陆身份证号是否有效入参:身份证号反参:true(有效)、 false(无效)private boolean identityValidator(String id) { log.info("--校验身份证号"); String str = "[1-9]{2}[0-9]{4}(19|20)[0-9]{2}" + "((0[1-9]{1})|(1[1-2]{1}))((0[1-9]{1})|([1-2]{1}[0-9]{1原创 2020-09-12 17:14:27 · 2477 阅读 · 0 评论 -
IDEA中根据数据库自动生成实体类,并自定义所生成的实体类中的注解 @Table @Id @...
使用IDEA项目添加Hibernate扩展,生成实体类并配置实体类中的注解一、使用Hibernate自动生成实体类1.在项目上右键,选择Add Framework Support找到 Hibernate勾选 OK2.Ctrl+Alt+Shift+S 快捷键呼出Project Structure窗口,展开项目,选择Hibernate 点击图示的“+”号为Hibernate添加xml文件配置。3.在左侧会出现一个Persistence 点击后右键图示的Hibernate项选择最后一个4.选.原创 2020-09-08 17:15:04 · 2996 阅读 · 0 评论 -
伍六七带你学算法——栈的使用
大家都知道栈这种数据结构,它有非常多的应用场景。但如果我们不经常接触这些应用场景的话,就可能不太熟悉栈的用法。目录smd1.栈的创建和使用JAVA Stack类:2.栈的实际应用示范解题如下????1.栈的创建和使用JAVA Stack类:栈是Vector的一个子类,它实现了一个标准的后进先出的栈,栈本身最重要的就是 push 和 pop.堆栈只定义了默认构造函数,用来创建一个空栈。堆栈除了包括由Vector定义的所有方法,也定义了自己的一些方法Stack()除了由Vector定义的所有方法原创 2020-06-10 16:47:15 · 191 阅读 · 0 评论 -
UUID的使用及其原理
今天敲项目要用UUID,想起之前老师告诉UUID的使用,但没说具体的生成逻辑,于是我进行了百度首先,UUID的使用://生成随机的UUIDString uuid = UUID.randomUUID().toString().replaceAll("-", "");而它的原理呢??UUID由以下几部分的组合:(1)当前日期和时间,UUID的第一个部分与时间有关,如果你在生成一个UUID...原创 2020-02-10 10:38:34 · 4109 阅读 · 3 评论 -
利用dom4j将实体类转换为对应的xml报文
利用dom4j生成xml报文目标格式:<?xml version="1.0" encoding="GBK"?><Packet type="REQUEST" version="1.0"> <Head> <RequestType>C03</RequestType> <UserCode>BOCIJS<...原创 2020-01-10 16:25:32 · 1288 阅读 · 1 评论 -
Java Random()函数生成指定范围的随机数
java中随机生成数字(指定范围)//随机获得0到(i-1)的一个数int i = ThreadLocalRandom.current().nextInt(i);原创 2020-01-09 16:56:17 · 2087 阅读 · 1 评论 -
手把手教你JavaEE的分页查询、分页展示,有了这个,你的项目又多了一个谈资
前言:我们在写项目的时候,往往有一些项目的信息展示。而展示的数据量往往是很大的,这时候,加入一个分页的功能往往是最理想的选择。先简单描述一下功能:根据你的数据量和指定的页面展示数据条数,进行查询不同的数据,通过“首页”、“上页”、“下页”、“尾页”按钮进行跳转。首先展示一下效果,如下图:如何用纯代码实现上面的功能呢?一共主要有以下几步:1、创建分页对象2、在后台查询时使用数据...原创 2020-04-25 10:45:20 · 1149 阅读 · 0 评论 -
简单两步,spring aop上手即用即会
面向切面思想在于它的干净,对逻辑代码没有任何侵入性,只需要在想要切入的方法或者类之上加上自定义的注解即可。首先,就是自定义一个注解://这里我们定义一个名为 @MyPointer 的注解@Documented@Retention(RetentionPolicy.RUNTIME)@Target({ElementType.METHOD})//只能在方法上使用此注解public @int...原创 2020-04-07 14:21:06 · 194 阅读 · 0 评论