------【Java】
文章平均质量分 76
Mr小林
软件工程师的成才之路。
展开
-
实战篇:断点续传?文件秒传?手撸大文件上传
各位看官大家好,今天给大家分享的又是一篇实战文章,希望大家能够喜欢。转载 2024-05-07 11:35:16 · 45 阅读 · 1 评论 -
阿里终面:10亿数据如何快速插入MySQL?
要首先确认约束条件,才能设计方案。确定面试官主要想问的方向,例如1T文件如何切割为小文件,虽是难点,然而可能不是面试官想考察的问题。从数据规模看,需要分库分表,大致确定分表的规模。从单库的写入瓶颈分析,判断需要进行分库。考虑到磁盘对并发写的支持力度不同,同一个库多个表写入的并发需要限制。并且支持动态调整,方便在线上环境调试出最优值。MySQL innodb、myisam 存储引擎对写入性能支持不同,也要在线上对比验证数据库批量插入的最佳阈值需要反复测试得出。转载 2023-12-01 13:54:18 · 156 阅读 · 0 评论 -
生成条形码工具类
【代码】生成条形码工具类。原创 2022-12-27 12:00:10 · 534 阅读 · 0 评论 -
JPA和 QueryDSL入门
JPA和 QueryDSL入门转载 2022-09-05 09:03:53 · 743 阅读 · 0 评论 -
JPA查询-3种查询方式
spring data jpa转载 2022-09-03 18:57:57 · 5784 阅读 · 0 评论 -
LinkedHashMap、HashMap 源码详细分析(JDK1.8)
LinkedHashMap 源码详细分析(JDK1.8)2018.01.24 08:3749212浏览1. 概述LinkedHashMap 继承自 HashMap,在 HashMap 基础上,通过维护一条双向链表,解决了 HashMap 不能随时保持遍历顺序和插入顺序一致的问题。除此之外,LinkedHashMap 对访问顺序也提供了相关支持。在一些场景下,该特性很有用,比如缓存。在实现上,LinkedHashMap 很多方法直接继承自 HashMap,仅为维护双向链表覆写了部分方法。所以,要.转载 2021-11-25 16:11:16 · 136 阅读 · 0 评论 -
SpringBoot2.0整合WebSocket,实现后端数据实时推送
作者:用嘴写代码链接:https://juejin.cn/post/6844904160442187784来源:稀土掘金之前公司的某个系统为了实现推送技术,所用的技术都是Ajax轮询,这种方式浏览器需要不断的向服务器发出请求,显然这样会浪费很多的带宽等资源,所以研究了下WebSocket,本文将详细介绍下。一、什么是WebSocket?WebSocket是HTML5开始提供的一种在单个TCP连接上进行全双工通讯的协议,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯。WebSo.转载 2021-10-29 09:35:55 · 2063 阅读 · 1 评论 -
序列化/反序列化
CodeSheep.一只爱技术的程序羊,想把分享变成一种习惯!工具人上次不知道是哪个小伙伴留言说,关于对象「序列化和反序列化」这一块有点糊,能不能像整理一波。巧了,我也正有此意。收到了这个需求之后,我抽时间再次重新捧起了尘封已久的《Java编程思想》,把「序列化和反序列化」这块的知识点又重新审视了一遍。曾几何时,我对于Java的序列化的认知一直停留在:「实现个Serializbale接口」不就好了的状态,直到......序列化是干啥用的?序列化的原本意图是...转载 2021-10-08 11:05:26 · 111 阅读 · 0 评论 -
AES加密方式AES/ECB/PKCS7Padding 报错
报错日志:Exception in thread "main" java.security.NoSuchAlgorithmException: Cannot find any provider supporting AES/ECB/PKCS7Padding解决方案:1、下载bcprov-jdk16-1.46.jar 拷贝到以下目录:C:\Program Files\Java\jdk1.8.0_20\jre\lib\ext2、修改C:\Program Files\Java\jdk1.原创 2021-04-22 18:21:27 · 3102 阅读 · 2 评论 -
maven 打包时私服jar包中 pom文件找不到的问题
问题描述:在maven打包时发现私服上某个jar包的pom文件不存在,导致打包失败。解决方案:将jar包下载到本地仓库,然后解压,取出里面的pom文件,然后改名为报错文件的名字即可。重新打包,报错不再出现。...原创 2021-04-21 09:18:13 · 3530 阅读 · 0 评论 -
SecureUtil、HtmlUtil、CronUtil
简介Hutool 谐音 “糊涂”,寓意追求 “万事都作糊涂观,无所谓失,无所谓得” 的境界。Hutool 是一个 Java 工具包,也只是一个工具包,它帮助我们简化每一行代码,减少每一个方法,让 Java 语言也可以 “甜甜的”。Hutool 最初是我项目中 “util” 包的一个整理,后来慢慢积累并加入更多非业务相关功能,并广泛学习其它开源项目精髓,经过自己整理修改,最终形成丰富的开源工具集。(抄自作者简介)功能一个 Java 基础工具类,对文件、流、加密解密、转码、正则、线程、XML 等转载 2021-02-04 15:18:57 · 1248 阅读 · 0 评论 -
java8新增StringJoiner用法
1. 添加元素public void () { StringJoiner joiner = new StringJoiner(",", PREFIX, SUFFIX); joiner.add("Red") .add("Green") .add("Blue"); assertEquals(joiner.toString(), "[Red,Green,Blue]");}2. 使用for循环添加内容public void whenAdding原创 2020-11-19 17:33:59 · 890 阅读 · 0 评论 -
你还在用 BeanUtils 试试 MapStruct,优雅的对象转换解决方案
第一次看到MapStruct的时候, 我个人非常的开心。因为其跟我内心里面的想法不谋而合。1 MapStruct 是什么?1.1 JavaBean 的困扰对于代码中JavaBean之间的转换, 一直是困扰我很久的事情。在开发的时候我看到业务代码之间有很多的JavaBean之间的相互转化, 非常的影响观感, 却又不得不存在。我后来想的一个办法就是通过反射, 或者自己写很多的转换器。第一种通过反射的方法确实比较方便, 但是现在无论是BeanUtils,BeanCopier等在...转载 2020-11-16 10:32:57 · 142 阅读 · 0 评论 -
JWT生成token及过期处理方案
业务场景在前后分离场景下,越来越多的项目使用token作为接口的安全机制,APP端或者WEB端(使用VUE、REACTJS等构建)使用token与后端接口交互,以达到安全的目的。本文结合stackover以及本身项目实践,试图总结出一个通用的,可落地的方案。基本思路单个tokentoken(A)过期设置为15分钟 前端发起请求,后端验证token(A)是否过期;如果过期,前端发起刷新token请求,后端设置已再次授权标记为true,请求成功 前端发起请求,后端验证再次授权标记,如果已经再次转载 2020-07-24 17:33:30 · 3957 阅读 · 0 评论 -
前后端分离 Spring Boot + Vue 开发网易云&QQ音乐(附源码)!
前言虽然 B/S 是目前开发的主流,但是 C/S 仍然有很大的市场需求。受限于浏览器的沙盒限制,网页应用无法满足某些场景下的使用需求,而桌面应用可以读写本地文件、调用更多系统资源,再加上 Web 开发的低成本、高效率的优势,这种跨平台方式越来越受到开发者的喜爱。Electron 是一个基于 Chromium 和 Node.js,使用 HTML、CSS 和 JavaScript 来构建跨平台应用的跨平台开发框架,兼容 Mac、Windows 和 Linux。目前,Electron 已经创建了包括 VS转载 2020-06-17 11:46:37 · 1388 阅读 · 0 评论 -
JAVA统一异常处理及架构实战
软件开发过程中,不可避免的是需要处理各种异常,就我自己来说,至少有一半以上的时间都是在处理各种异常情况,所以代码中就会出现大量的try {...} catch {...} finally {...}代码块,不仅有大量的冗余代码,而且还影响代码的可读性。比较下面两张图,看看您现在编写的代码属于哪一种风格?然后哪种编码风格您更喜欢?丑陋的 try catch 代码块优雅的Controller上面的示例,还只是在Controller层,如果是在Service层,可能会有更多的tr...转载 2020-05-18 09:36:11 · 554 阅读 · 0 评论 -
【应用篇】---史上最全的延迟任务实现方式汇总!
不用谢我,送人玫瑰,手有余香。相信接下来的内容一定不会让你失望,因为它将是目前市面上最好的关于“延迟任务”的文章,这也一直是我写作追求的目标,让我的每一篇文章都比市面上的好那么一点点。好了,话不多说,直接进入今天的主题,本文的主要内容如下图所示:什么是延迟任务?顾明思议,我们把需要延迟执行的任务叫做延迟任务。延迟任务的使用场景有以下这些: 红包 24 小时未被查收,需要延...转载 2020-04-23 16:12:00 · 1077 阅读 · 0 评论 -
为什么java Hashmap 中的加载因子是默认为0.75
前几天在一个群里看到有人讨论hashmap中的加载因子为什么是默认0.75。HashMap源码中的加载因子static final float DEFAULT_LOAD_FACTOR = 0.75f; 当时想到的是应该是“哈希冲突”和“空间利用率”矛盾的一个折衷。跟数据结构要么查询快要么插入快一个道理,hashmap就是一个插入慢、查询快的数据结构。加载因子是表示Hs...转载 2020-04-01 09:17:17 · 926 阅读 · 1 评论 -
HashMap扩容死循环问题
https://blog.csdn.net/Leon_cx/article/details/81911223原创 2020-03-31 23:04:42 · 173 阅读 · 0 评论 -
Java线程池拒绝策略
前言线程池,相信很多人都有用过,没用过相信的也有学习过。但是,线程池的拒绝策略,相信知道的人会少许多。四种线程池拒绝策略当线程池的任务缓存队列已满并且线程池中的线程数目达到maximumPoolSize时,如果还有任务到来就会采取任务拒绝策略,通常有以下四种策略:ThreadPoolExecutor.AbortPolicy:丢弃任务并抛出RejectedExecutionE...转载 2020-03-30 22:34:52 · 168 阅读 · 0 评论 -
漫话:如何给女朋友解释什么是Linux的五种IO模型?
周日午后,刚刚放下手里的电话,正在给刚刚的面试者写评价。刚刚写到『对Linux的基本IO模型理解不深』这句的时候,女朋友突然出现。哈,这个面试者咋不知道IO模型呢,我都知道呢。你怎么知道呢,你给我说说。上次你给我讲过呀。在Java中,主要有三种IO模型,分别是阻塞IO(BIO)、非阻塞IO(NIO)和 异步IO(AIO)。...转载 2020-03-29 17:22:02 · 200 阅读 · 0 评论 -
Java版本布隆过滤器
布隆过滤器 布隆过滤器主要用于判断一个元素是否在一个集合中,它可以使用一个位数组简洁的表示一个数组。它的空间效率和查询时间远远超过一般的算法,但是它存在一定的误判的概率,适用于容忍误判的场景。如果布隆过滤器判断元素存在于一个集合中,那么大概率是存在在集合中,如果它判断元素不存在一个集合中,那么一定不存在于集合中。常常被用于大数据去重。算法思想 布隆过滤器算法主要思想就是利用k...转载 2020-03-18 16:58:59 · 146 阅读 · 0 评论 -
Mysql数据库常用的事务隔离级别都有哪些?都是什么原理?
什么是事务隔离?任何支持事务的数据库,都必须具备四个特性,分别是:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability),也就是我们常说的事务ACID,这样才能保证事务((Transaction)中数据的正确性。而事务的隔离性就是指,多个并发的事务同时访问一个数据库时,一个事务不应该被另一个事务所干扰,每个并发的事务...转载 2020-03-10 16:02:57 · 131 阅读 · 0 评论 -
JUC并发Atomic原子类介绍
1 Atomic 原子类介绍Atomic 翻译成中文是原子的意思。在化学上,我们知道原子是构成一般物质的最小单位,在化学反应中是不可分割的。在我们这里 Atomic 是指一个操作是不可中断的。即使是在多个线程一起执行的时候,一个操作一旦开始,就不会被其他线程干扰。所以,所谓原子类说简单点就是具有原子/原子操作特征的类。并发包java.util.concurrent的原子类都存放在j...原创 2020-03-09 19:44:13 · 197 阅读 · 0 评论 -
什么时候需要自定义类加载器?
加密:众所周知,java代码很容易被反编译,如果你需要把自己的代码进行加密,可以先将编译后的代码用某种加密算法加密,然后实现自己的类加载器,负责将这段加密后的代码还原。 从非标准的来源加载代码:例如你的部分字节码是放在数据库中甚至是网络上的,就可以自己写个类加载器,从指定的来源加载类。 动态创建:为了性能等等可能的理由,根据实际情况动态创建代码并执行。 ...原创 2020-03-07 09:49:29 · 2789 阅读 · 1 评论 -
Java的ConcurrentHashMap
简介ConcurrentHashMap是Java中的一个线程安全且高效的HashMap实现。平时涉及高并发如果要用map结构,那第一时间想到的就是它。那么我就这几个方面了解一下ConcurrentHashMap:1)ConcurrentHashMap在JDK8里结构2)ConcurrentHashMap的put方法、szie方法等3)ConcurrentHashMap的扩容4)...转载 2020-03-04 08:56:15 · 968 阅读 · 0 评论 -
Java的Future 详解,获取线程池执行结果
1. Future的应用场景在并发编程中,我们经常用到非阻塞的模型,在之前的多线程的三种实现中,不管是继承thread类还是实现runnable接口,都无法保证获取到之前的执行结果。通过实现Callback接口,并用Future可以来接收多线程的执行结果。Future表示一个可能还没有完成的异步任务的结果,针对这个结果可以添加Callback以便在任务执行成功...转载 2020-03-03 09:32:54 · 4754 阅读 · 0 评论 -
基于Zookeeper实现分布式锁
基于Zookeeper实现分布式锁基于zookeeper临时有序节点可以实现的分布式锁。大致思想即为:每个客户端对某个方法加锁时,在zookeeper上的与该方法对应的指定节点的目录下,生成一个唯一的瞬时有序节点。 判断是否获取锁的方式很简单,只需要判断有序节点中序号最小的一个。 当释放锁的时候,只需将这个瞬时节点删除即可。同时,其可以避免服务宕机导致的锁无法释放,而产生的死锁问题。来...原创 2020-03-01 17:05:39 · 280 阅读 · 0 评论 -
字符串转百分数,并求平均数 BigDecimal 、DecimalFormat
/** * 求参评率 和 解决率 的平均数 ,都是百分号的字符串 * @return */ public List<RptRobotAnswerStatsNew> dealRptRobotAnswerStatsNew(String startDate, String endDate, ...原创 2020-01-16 09:53:54 · 724 阅读 · 0 评论 -
JavaBean和Map 之间的相互转换
代码仅供参考:/** * 将一个 JavaBean 对象转化为一个 Map * * @param bean * 要转化的JavaBean 对象 * @param qualifier * hbase列族 * @return 转化出来的 Map 对象 * @throws IntrospectionException ...原创 2019-04-26 16:16:57 · 178 阅读 · 0 评论 -
KMP算法优化与详解
视频地址:https://www.bilibili.com/video/av11866460?from=search&seid=17935165392348185883首先需要建立前缀表:1.KMP算法1.1 定义 Knuth-Morris-Pratt 字符串查找算法,简称为 “KMP算法”,常用于在一个文本串S内查找一个模式...原创 2019-04-03 14:29:56 · 413 阅读 · 0 评论 -
【Java】判断字符串中是否包含转义字符
打印所有的转义字符:StringEscapeUtils.escapeJava(userVo.getParams());原创 2019-04-08 17:20:57 · 4946 阅读 · 0 评论 -
Java接口常用HTTP contentType与后端处理方式
1、Content-Type:application/x-www-form-urlencoded; charset=UTF-8前端export.json的请求后端export.json的处理方式对应的后端的处理方式,如果是单个参数去获取,那就用@RequestParam,如果是对应Java Bean,那就不需要任何注解2、Content-Type:applica...转载 2019-03-08 13:48:09 · 5757 阅读 · 0 评论 -
Java Des 加密与解密
import java.io.IOException;import java.security.SecureRandom; import javax.crypto.Cipher;import javax.crypto.SecretKey;import javax.crypto.SecretKeyFactory;import javax.crypto.spec.DESKeySpec...原创 2019-03-15 14:43:38 · 183 阅读 · 0 评论 -
Java 反射给对象赋值
java反射无所不能,辣么,怎么通过反射设置一个属性的值呢?主程序:/** * @author tengqingya * @create 2017-03-05 15:54 */public class TestReflectSet { private String readOnly; public String getReadOnly() { ret...转载 2018-09-28 14:50:38 · 2700 阅读 · 0 评论 -
Java集合按时间排序
/** * 根据时间排序 * @param list */ private static void ListSort(List<BillHistoryEntity> list) { Collections.sort(list, new Comparator<BillHistoryEntity>() { ...原创 2018-08-14 22:05:37 · 8383 阅读 · 0 评论 -
spring mvc如何匹配请求路径(restful接口写法)
springMvc源码学习之:spirngMVC获取请求参数的方法2 @RequestParam,你一定见过;@PathVariable,你肯定也知道;@QueryParam,你怎么会不晓得?!还有你熟悉的他 (@CookieValue)!她(@ModelAndView)!它(@ModelAttribute)!没错,仅注解这块,spring mvc就为你打开了五彩斑斓的世界。来来来,不要兴(mi...转载 2018-07-06 15:17:33 · 3466 阅读 · 1 评论 -
【Java】Java之经典循环小例子
九九乘法表* 文件名称: 九九乘法表 * 作 者: 廊坊师范学院 2013级 周家林 * 完成日期: 2015 年 11 月 30 日 * 版 本 号: * 对任务及求解方法的描述部分 * 输入描述: * 问题描述:利用循环输出九原创 2015-11-30 21:33:29 · 1421 阅读 · 3 评论 -
【Java】json 字符串转 map
import com.fasterxml.jackson.databind.DeserializationFeature;import com.fasterxml.jackson.databind.ObjectMapper;/** * JSON操作对象获取工具类 * */public class JsonUtil { private static final ObjectMap...原创 2019-04-23 11:33:00 · 173 阅读 · 0 评论 -
Thumbnailator的简介和使用范例(图片压缩)
1.简单介绍借用红薯对Thumbnailator的描述:Thumbnailator是一个用来生成图像缩略图的Java类库,通过很简单的代码即可生成图片缩略图,也可直接对一整个目录的图片生成缩略图。有了这玩意,就不用在费心思使用Image I/O API,Java 2D API等等来生成缩略图了。 直接上代码,先来看一个最简单的例子:...翻译 2019-05-05 09:55:53 · 2228 阅读 · 1 评论