java
b_just
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java中找出缺失的数字
给定一组连续的整数,例如:10,11,12,……,20,但其中缺失一个数字,试找出缺失的数字 1 import java.util.*; 2 3 public class Main { 4 public static void main(String[] args) { 5 // 构造从start到end的序列: 6 final int start = 10; 7 final int end = 20; 8 Li...转载 2021-06-24 17:37:21 · 3189 阅读 · 0 评论 -
Google Guava学习 -Guava cache
谷歌Guava缓存Guava介绍Guava是Google guava中的一个内存缓存模块,用于将数据缓存到JVM内存中。实际项目开发中经常将一些公共或者常用的数据缓存起来方便快速访问。Guava Cache是单个应用运行时的本地缓存。它不把数据存放到文件或外部服务器。如果不符合需求,可以选择Memcached、Redis等工具。@Componentpublic class LocalCache { private Cache<String,Object> ...原创 2021-03-15 17:49:29 · 302 阅读 · 0 评论 -
Google Guava学习 -Guava Range类
1.功能:数据范围处理2.代码:package com.example.google.guava.demo.clazz; import com.google.common.collect.ContiguousSet;import com.google.common.collect.DiscreteDomain;import com.google.common.collect.Range;import com.google.common.primitives.Ints; /** *转载 2021-03-15 16:35:32 · 356 阅读 · 0 评论 -
java list 深度克隆
public static <T> List<T> deepCopy(List<T> src) throws IOException, ClassNotFoundException { ByteArrayOutputStream byteOut = new ByteArrayOutputStream(); ObjectOutputStream out = new ObjectOutputStream(byteOut); out..原创 2020-12-25 15:43:11 · 737 阅读 · 0 评论 -
内存溢出+CPU占用过高:问题排查+解决方案+复盘(超详细分析教程)
前言最近刚上线了一款社交项目,运行十多天后(运营持续每天推量),发现问题:系统OOM(资源不能被释放)导致服务器频繁且长时间FGC导致服务器CPU持续飚高 日志中内存溢出:java.lang.OutOfMemoryError: Java heap space 程序十分卡顿,严重影响用户使用从以下方面,为大家分享此次问题解决流程问题出现现象 临时解决方案 复现问题 定位问题发生原因 优化代码 优化后进行压测,上线 复盘学完本博文,你的收获排查内存溢出的思路 排查内存转载 2020-12-08 10:57:23 · 791 阅读 · 0 评论 -
@Inherited注解的作用
看到很多注解都被@Inherited进行了修饰,但是这个@Inherited有什么作用呢?查看@Inherited代码描述:Indicates that an annotation type is automatically inherited. If an Inherited meta-annotation is present on an annotation type declaration, and the user queries the annotation type on a clas转载 2020-11-23 17:09:57 · 878 阅读 · 1 评论 -
JAVA-简单实现文本相似度计算-余弦相似度
计算文本相似度方法文本的相似度计算方法可以分为两大类:基于深度学习的方法和基于非深度学习的方法。虽然小的我在自然语言处理与交互部,但我只是个开发,不是算法,所以这里采用简单的非深度学习的方法。常用的几个计算方法:余弦相似度、最小编辑距离。。。。。由于场景比较简单,所以并没有对文本进行分词,如果有需要,可以用jieba,hanlp等等余弦相似度private static double getSimilarity(String doc1, String doc2) { if (Stri转载 2020-11-23 11:27:36 · 1632 阅读 · 0 评论 -
Java后台获取Cookie
Cookie概念:Cookie服务器发送给浏览器的一小段文本信息Java后台获取Cookie正常操作:Cookie[] cookies = request.getCookies();if(cookies != null && cookies.length > 0){ for (Cookie cookie : cookies){ return cookie.getName() + " " + cookie.getValue(); } }转载 2020-11-02 17:26:16 · 12288 阅读 · 0 评论 -
Google Guava学习 - Guava Range类 - Sharding范围分片使用
1.功能:数据范围处理2.代码: package com.example.google.guava.demo.clazz; import com.google.common.collect.ContiguousSet; import com.google.common.collect.DiscreteDomain; import com.google.common.collect.Range; import com.google.com...原创 2020-10-28 12:13:10 · 600 阅读 · 0 评论 -
Java 根据两个经纬度坐标计算距离
publicclassDistance{privatestaticfinaldoubleEARTH_RADIUS=6378137;privatestaticdoublerad(doubled) {returnd*Math.PI/180.0; }/** *根据两点间经纬度坐标(double值),计算两点间距离,单位为米 *@paramlng1 *@paramlat1...转载 2020-09-09 11:12:48 · 1352 阅读 · 1 评论 -
centos7开机自启动java脚本
方法一:(rc.local)1、因为在centos7中/etc/rc.d/rc.local的权限被降低了,所以需要赋予其可执行权chmod +x /etc/rc.d/rc.local2、赋予脚本可执行权限假设/usr/local/script/autostart.sh是你的脚本路径,给予执行权限chmod +x /usr/local/script/autostart.sh3、打开/etc/rc.d/rc.local文件,在末尾增加如下内容/usr/local/script/a原创 2020-08-26 17:52:55 · 1090 阅读 · 0 评论 -
Java连接ftp服务器并实现文件上传下载删除
① 创建客户端FTPClient ftpClient= new FTPClient();② 客户端 连接登陆ftp服务器ftpClient.connect(hostname, port); //连接ftp服务器ftpClient.login(username, password); //登录ftp服务器③ 判断是否成功登陆int replyCode = ftpClient.getReplyCode(); //replyCode表示的是返回的状态码。FTPReply.is...转载 2020-08-19 15:41:12 · 620 阅读 · 0 评论 -
Java 使用EasyExcel读取Excel中多个sheet方法及示例代码
本文主要介绍Java中,使用EasyExcel读取Excel文件中多个Sheet的方法,以及使用示例代码。1、读取数据的实体对象@Datapublic class DemoData { private String string; private Date date; private Double doubleData;}2、保存数据的Listener(监听器)// 有个很重要的点 DemoDataListener 不能被spring管理,要每次读取ex.转载 2020-08-17 11:04:50 · 20348 阅读 · 6 评论 -
JAVA 快速构建树形结构
话不多说直接上代码JDK 1.8+ Node 中pid 为 0 的是根节点public class Node { private int id; private int pid; private String name; private List<Node> sub = new ArrayList<>(); public Node(int id, int pid) { this.id = id; .转载 2020-06-11 18:00:48 · 1174 阅读 · 0 评论 -
Semaphore 的使用思路
1、Semaphore的初步使用 Semaphore是什么,能做什么? Semaphore 是 synchronized 的加强版,作用是控制线程的并发数量。就这一点而言,单纯的synchronized 关键字是实现不了的。 直接看例子吧,这个例子包含3个类,一个是线程类,一个是 Semaphore 关键代码类,一个类是主main方法类:package com.cd.concurrent.semaphore;public class MyThread extends T.转载 2020-06-05 09:19:59 · 256 阅读 · 0 评论 -
高并发下接口幂等性解决方案
一、幂等性概念在编程中.一个幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。例如,“getUsername()和setTrue()”函数就是一个幂等函数. 更复杂的操作幂等保证是利用唯一交易号(流水号)实现.我的理解:幂等就是一个操作,不论执行多少次,产生的效果和返回的结果都是一样的。二、幂等性场景1、查询操作:查询一次和查询多次,在数据不变转载 2020-06-04 09:43:08 · 252 阅读 · 0 评论 -
@Retention 注解的作用
注解@Retention可以用来修饰注解,是注解的注解,称为元注解。Retention注解有一个属性value,是RetentionPolicy类型的,Enum RetentionPolicy是一个枚举类型,这个枚举决定了Retention注解应该如何去保持,也可理解为Rentention 搭配 RententionPolicy使用。RetentionPolicy有3个值:CLASS RUNTIME SOURCE按生命周期来划分可分为3类:1、RetentionPolicy.SOURCE:注解...转载 2020-06-03 16:58:47 · 822 阅读 · 0 评论 -
java元注解 @Target注解用法
@Target: @Target说明了Annotation所修饰的对象范围:Annotation可被用于 packages、types(类、接口、枚举、Annotation类型)、类型成员(方法、构造方法、成员变量、枚举值)、方法参数和本地变量(如循环变量、catch参数)。在Annotation类型的声明中使用了target可更加明晰其修饰的目标。 作用:用于描述注解的使用范围(即:被描述的注解可以用在什么地方) 取值(ElementType)有 1 2 3转载 2020-06-03 16:58:16 · 932 阅读 · 0 评论 -
countDownLatch
1.背景:countDownLatch是在java1.5被引入,跟它一起被引入的工具类还有CyclicBarrier、Semaphore、concurrentHashMap和BlockingQueue。 存在于java.util.cucurrent包下。2.概念countDownLatch这个类使一个线程等待其他线程各自执行完毕后再执行。 是通过一个计数器来实现的,计数器的初始值是线程的数量。每当一个线程执行完毕后,计数器的值就-1,当计数器的值为0时,表示所有线程都执行完毕,然后在闭锁上等待转载 2020-06-02 16:25:08 · 205 阅读 · 0 评论 -
SpringBoot cookie工具类
import javax.servlet.http.Cookie;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class CookieUtil { public static String getCookie(HttpServletRequest request, String cookieName){ Cookie[] .原创 2020-05-14 14:13:12 · 686 阅读 · 0 评论 -
jacksonUtil工具类
import com.fasterxml.jackson.core.JsonProcessingException;import com.fasterxml.jackson.databind.JavaType;import com.fasterxml.jackson.databind.ObjectMapper;import java.util.List;import java.util...原创 2020-05-06 14:36:50 · 3781 阅读 · 0 评论 -
【设计模式】策略模式与状态模式
策略模式与状态模式在实现上有共同之处,都是把不同的情形抽象为统一的接口来实现,就放在一起进行记录。2个模式的UML建模图基本相似,区别在于状态模式需要在子类实现与context相关的一个状态行为。 状态模式的的思想是,状态之间的切换,在状态A执行完毕后自己控制状态指向状态B。状态模式是不停的切换状态执行。 策略模式的思想上是,考虑多种不同的业务规则将不同的算法封装起来,便于调用者选择调...转载 2020-04-27 16:43:35 · 415 阅读 · 0 评论 -
BlockingQueue及其实现
1. 前言BlockingQueue即阻塞队列,它是基于ReentrantLock,依据它的基本原理,我们可以实现Web中的长连接聊天功能,当然其最常用的还是用于实现生产者与消费者模式,大致如下图所示:在Java中,BlockingQueue是一个接口,它的实现类有ArrayBlockingQueue、DelayQueue、 LinkedBlockingDeque、LinkedBlo...转载 2020-04-26 15:05:29 · 2643 阅读 · 0 评论 -
Spring 中使用责任链设计模式
本片文章不是讲Spring源码中使用责任链的设计实例,而是会讲在Spring中如何设计自己的责任链并且如何调用。责任链设计模式作为我们常用的设计模式之一,用途非常的广,例如在一些流程化的执行中、或者是一些动态拦截中我们都可以使用责任链设计模式进行设计需求,从而使我们的项目无论是可用性还是可扩展性都会非常的好。大家对于责任链还有不了解的可以看我之前的博文设计模式——责任链模式。如何定义链...转载 2020-04-24 17:10:44 · 2259 阅读 · 0 评论 -
Java内存模型
在介绍Java内存模型之前,先来看一下到底什么是计算机内存模型,然后再来看Java内存模型在计算机内存模型的基础上做了哪些事情。要说计算机的内存模型,就要说一下一段古老的历史,看一下为什么要有内存模型。内存模型,英文名Memory Model,他是一个很老的老古董了。他是与计算机硬件有关的一个概念。那么我先给你介绍下他和硬件到底有啥关系。CPU和缓存一致性我们应该都知道,计算机在执行程...转载 2020-04-21 16:42:43 · 142 阅读 · 0 评论 -
Java中的String,StringBuilder,StringBuffer三者的区别
Java中的String,StringBuilder,StringBuffer三者的区别 最近在学习Java的时候,遇到了这样一个问题,就是String,StringBuilder以及StringBuffer这三个类之间有什么区别呢,自己从网上搜索了一些资料,有所了解了之后在这里整理一下,便于大家观看,也便于加深自己学习过程中对这些知识点的记忆,如果哪里有误,恳请指正。 这三个类之间的...转载 2020-04-17 10:54:30 · 140 阅读 · 0 评论 -
枚举类来实现单例模式
前言单例模式是 Java 设计模式中最简单的一种,只需要一个类就能实现单例模式,但是,你可不能小看单例模式,虽然从设计上来说它比较简单,但是在实现当中你会遇到非常多的坑,所以,系好安全带,上车。单例模式的定义单例模式就是在程序运行中只实例化一次,创建一个全局唯一对象,有点像 Java 的静态变量,但是单例模式要优于静态变量,静态变量在程序启动的时候JVM就会进行加载,如果不使用,会造成...转载 2020-01-21 13:57:47 · 2984 阅读 · 2 评论 -
JAVA常量类的实现方式_枚举类_项目实践
前言众所周知,系统里有很多比如订单状态、审核状态;性别、结算方式、交易类型等属性,这些属性只有几个值,一般用0、1、2、3等的数字标识存入数据库,每次对这些属性所属对象的增删改操作,都会在代码里给状态设置值,由于项目是多人开发的,如果每次设置值的时候都直接set 0、1、2,容易出错,而且状态假设不用0、1、2表示了,用1、2、3表示,这时候所有set状态的地方都得改变,维护麻烦。所以用常量表...转载 2020-01-21 13:56:58 · 464 阅读 · 0 评论 -
Java如何调用Linux命令
/*** *第一种方法,仅仅执行命令无须关注返回结果 *@throwsException */ publicstaticvoidexeCmd()throwsException{ Runtimer=Runtime.getRuntime(); //执行linux命令,不关心返回结果,此处,可以执行一个shell脚本,或者pyth...转载 2020-01-15 19:56:23 · 303 阅读 · 0 评论 -
Java 给ArrayList中的元素去重且顺序不变
Java代码importjava.util.ArrayList; importjava.util.LinkedHashSet; publicclassMainClass { publicstaticvoidmain(String[]args) { //ConstructingAnArrayList...转载 2019-12-25 13:59:34 · 835 阅读 · 0 评论 -
java 如何判断操作系统是Linux还是Windows
java 如何判断操作系统是Linux还是WindowsString os = System.getProperty("os.name"); if(os.toLowerCase().startsWith("win")){ System.out.println(os + " can't gunzip"); } System类public staticProperti...转载 2019-11-08 09:27:45 · 1291 阅读 · 0 评论
分享