
------【Java】
文章平均质量分 78
Mr小林
软件工程师的成才之路。
展开
-
利用 Function 接口告别冗余(屎山)代码--校验逻辑
在。转载 2025-01-22 09:13:28 · 51 阅读 · 0 评论 -
实战篇:断点续传?文件秒传?手撸大文件上传
各位看官大家好,今天给大家分享的又是一篇实战文章,希望大家能够喜欢。转载 2024-05-07 11:35:16 · 174 阅读 · 1 评论 -
阿里终面:10亿数据如何快速插入MySQL?
要首先确认约束条件,才能设计方案。确定面试官主要想问的方向,例如1T文件如何切割为小文件,虽是难点,然而可能不是面试官想考察的问题。从数据规模看,需要分库分表,大致确定分表的规模。从单库的写入瓶颈分析,判断需要进行分库。考虑到磁盘对并发写的支持力度不同,同一个库多个表写入的并发需要限制。并且支持动态调整,方便在线上环境调试出最优值。MySQL innodb、myisam 存储引擎对写入性能支持不同,也要在线上对比验证数据库批量插入的最佳阈值需要反复测试得出。转载 2023-12-01 13:54:18 · 213 阅读 · 0 评论 -
生成条形码工具类
【代码】生成条形码工具类。原创 2022-12-27 12:00:10 · 568 阅读 · 0 评论 -
JPA和 QueryDSL入门
JPA和 QueryDSL入门转载 2022-09-05 09:03:53 · 812 阅读 · 0 评论 -
JPA查询-3种查询方式
spring data jpa转载 2022-09-03 18:57:57 · 5963 阅读 · 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 · 166 阅读 · 0 评论 -
SpringBoot2.0整合WebSocket,实现后端数据实时推送
作者:用嘴写代码链接:https://juejin.cn/post/6844904160442187784来源:稀土掘金之前公司的某个系统为了实现推送技术,所用的技术都是Ajax轮询,这种方式浏览器需要不断的向服务器发出请求,显然这样会浪费很多的带宽等资源,所以研究了下WebSocket,本文将详细介绍下。一、什么是WebSocket?WebSocket是HTML5开始提供的一种在单个TCP连接上进行全双工通讯的协议,能更好的节省服务器资源和带宽,并且能够更实时地进行通讯。WebSo.转载 2021-10-29 09:35:55 · 2419 阅读 · 1 评论 -
序列化/反序列化
CodeSheep.一只爱技术的程序羊,想把分享变成一种习惯!工具人上次不知道是哪个小伙伴留言说,关于对象「序列化和反序列化」这一块有点糊,能不能像整理一波。巧了,我也正有此意。收到了这个需求之后,我抽时间再次重新捧起了尘封已久的《Java编程思想》,把「序列化和反序列化」这块的知识点又重新审视了一遍。曾几何时,我对于Java的序列化的认知一直停留在:「实现个Serializbale接口」不就好了的状态,直到......序列化是干啥用的?序列化的原本意图是...转载 2021-10-08 11:05:26 · 138 阅读 · 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 · 3422 阅读 · 2 评论 -
maven 打包时私服jar包中 pom文件找不到的问题
问题描述:在maven打包时发现私服上某个jar包的pom文件不存在,导致打包失败。解决方案:将jar包下载到本地仓库,然后解压,取出里面的pom文件,然后改名为报错文件的名字即可。重新打包,报错不再出现。...原创 2021-04-21 09:18:13 · 3691 阅读 · 0 评论 -
SecureUtil、HtmlUtil、CronUtil
简介Hutool 谐音 “糊涂”,寓意追求 “万事都作糊涂观,无所谓失,无所谓得” 的境界。Hutool 是一个 Java 工具包,也只是一个工具包,它帮助我们简化每一行代码,减少每一个方法,让 Java 语言也可以 “甜甜的”。Hutool 最初是我项目中 “util” 包的一个整理,后来慢慢积累并加入更多非业务相关功能,并广泛学习其它开源项目精髓,经过自己整理修改,最终形成丰富的开源工具集。(抄自作者简介)功能一个 Java 基础工具类,对文件、流、加密解密、转码、正则、线程、XML 等转载 2021-02-04 15:18:57 · 1389 阅读 · 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 · 939 阅读 · 0 评论 -
你还在用 BeanUtils 试试 MapStruct,优雅的对象转换解决方案
第一次看到MapStruct的时候, 我个人非常的开心。因为其跟我内心里面的想法不谋而合。1 MapStruct 是什么?1.1 JavaBean 的困扰对于代码中JavaBean之间的转换, 一直是困扰我很久的事情。在开发的时候我看到业务代码之间有很多的JavaBean之间的相互转化, 非常的影响观感, 却又不得不存在。我后来想的一个办法就是通过反射, 或者自己写很多的转换器。第一种通过反射的方法确实比较方便, 但是现在无论是BeanUtils,BeanCopier等在...转载 2020-11-16 10:32:57 · 164 阅读 · 0 评论 -
JWT生成token及过期处理方案
业务场景在前后分离场景下,越来越多的项目使用token作为接口的安全机制,APP端或者WEB端(使用VUE、REACTJS等构建)使用token与后端接口交互,以达到安全的目的。本文结合stackover以及本身项目实践,试图总结出一个通用的,可落地的方案。基本思路单个tokentoken(A)过期设置为15分钟 前端发起请求,后端验证token(A)是否过期;如果过期,前端发起刷新token请求,后端设置已再次授权标记为true,请求成功 前端发起请求,后端验证再次授权标记,如果已经再次转载 2020-07-24 17:33:30 · 4516 阅读 · 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 · 1510 阅读 · 0 评论 -
JAVA统一异常处理及架构实战
软件开发过程中,不可避免的是需要处理各种异常,就我自己来说,至少有一半以上的时间都是在处理各种异常情况,所以代码中就会出现大量的try {...} catch {...} finally {...}代码块,不仅有大量的冗余代码,而且还影响代码的可读性。比较下面两张图,看看您现在编写的代码属于哪一种风格?然后哪种编码风格您更喜欢?丑陋的 try catch 代码块优雅的Controller上面的示例,还只是在Controller层,如果是在Service层,可能会有更多的tr...转载 2020-05-18 09:36:11 · 644 阅读 · 0 评论 -
【应用篇】---史上最全的延迟任务实现方式汇总!
不用谢我,送人玫瑰,手有余香。相信接下来的内容一定不会让你失望,因为它将是目前市面上最好的关于“延迟任务”的文章,这也一直是我写作追求的目标,让我的每一篇文章都比市面上的好那么一点点。好了,话不多说,直接进入今天的主题,本文的主要内容如下图所示:什么是延迟任务?顾明思议,我们把需要延迟执行的任务叫做延迟任务。延迟任务的使用场景有以下这些: 红包 24 小时未被查收,需要延...转载 2020-04-23 16:12:00 · 1252 阅读 · 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 · 1026 阅读 · 1 评论 -
HashMap扩容死循环问题
https://blog.youkuaiyun.com/Leon_cx/article/details/81911223原创 2020-03-31 23:04:42 · 201 阅读 · 0 评论 -
Java线程池拒绝策略
前言线程池,相信很多人都有用过,没用过相信的也有学习过。但是,线程池的拒绝策略,相信知道的人会少许多。四种线程池拒绝策略当线程池的任务缓存队列已满并且线程池中的线程数目达到maximumPoolSize时,如果还有任务到来就会采取任务拒绝策略,通常有以下四种策略:ThreadPoolExecutor.AbortPolicy:丢弃任务并抛出RejectedExecutionE...转载 2020-03-30 22:34:52 · 190 阅读 · 0 评论 -
漫话:如何给女朋友解释什么是Linux的五种IO模型?
周日午后,刚刚放下手里的电话,正在给刚刚的面试者写评价。刚刚写到『对Linux的基本IO模型理解不深』这句的时候,女朋友突然出现。哈,这个面试者咋不知道IO模型呢,我都知道呢。你怎么知道呢,你给我说说。上次你给我讲过呀。在Java中,主要有三种IO模型,分别是阻塞IO(BIO)、非阻塞IO(NIO)和 异步IO(AIO)。...转载 2020-03-29 17:22:02 · 258 阅读 · 0 评论 -
Java版本布隆过滤器
布隆过滤器 布隆过滤器主要用于判断一个元素是否在一个集合中,它可以使用一个位数组简洁的表示一个数组。它的空间效率和查询时间远远超过一般的算法,但是它存在一定的误判的概率,适用于容忍误判的场景。如果布隆过滤器判断元素存在于一个集合中,那么大概率是存在在集合中,如果它判断元素不存在一个集合中,那么一定不存在于集合中。常常被用于大数据去重。算法思想 布隆过滤器算法主要思想就是利用k...转载 2020-03-18 16:58:59 · 179 阅读 · 0 评论 -
Mysql数据库常用的事务隔离级别都有哪些?都是什么原理?
什么是事务隔离?任何支持事务的数据库,都必须具备四个特性,分别是:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability),也就是我们常说的事务ACID,这样才能保证事务((Transaction)中数据的正确性。而事务的隔离性就是指,多个并发的事务同时访问一个数据库时,一个事务不应该被另一个事务所干扰,每个并发的事务...转载 2020-03-10 16:02:57 · 161 阅读 · 0 评论 -
JUC并发Atomic原子类介绍
1 Atomic 原子类介绍Atomic 翻译成中文是原子的意思。在化学上,我们知道原子是构成一般物质的最小单位,在化学反应中是不可分割的。在我们这里 Atomic 是指一个操作是不可中断的。即使是在多个线程一起执行的时候,一个操作一旦开始,就不会被其他线程干扰。所以,所谓原子类说简单点就是具有原子/原子操作特征的类。并发包java.util.concurrent的原子类都存放在j...原创 2020-03-09 19:44:13 · 231 阅读 · 0 评论 -
什么时候需要自定义类加载器?
加密:众所周知,java代码很容易被反编译,如果你需要把自己的代码进行加密,可以先将编译后的代码用某种加密算法加密,然后实现自己的类加载器,负责将这段加密后的代码还原。 从非标准的来源加载代码:例如你的部分字节码是放在数据库中甚至是网络上的,就可以自己写个类加载器,从指定的来源加载类。 动态创建:为了性能等等可能的理由,根据实际情况动态创建代码并执行。 ...原创 2020-03-07 09:49:29 · 2866 阅读 · 1 评论 -
Java的ConcurrentHashMap
简介ConcurrentHashMap是Java中的一个线程安全且高效的HashMap实现。平时涉及高并发如果要用map结构,那第一时间想到的就是它。那么我就这几个方面了解一下ConcurrentHashMap:1)ConcurrentHashMap在JDK8里结构2)ConcurrentHashMap的put方法、szie方法等3)ConcurrentHashMap的扩容4)...转载 2020-03-04 08:56:15 · 1070 阅读 · 0 评论 -
Java的Future 详解,获取线程池执行结果
1. Future的应用场景在并发编程中,我们经常用到非阻塞的模型,在之前的多线程的三种实现中,不管是继承thread类还是实现runnable接口,都无法保证获取到之前的执行结果。通过实现Callback接口,并用Future可以来接收多线程的执行结果。Future表示一个可能还没有完成的异步任务的结果,针对这个结果可以添加Callback以便在任务执行成功...转载 2020-03-03 09:32:54 · 5040 阅读 · 0 评论 -
基于Zookeeper实现分布式锁
基于Zookeeper实现分布式锁基于zookeeper临时有序节点可以实现的分布式锁。大致思想即为:每个客户端对某个方法加锁时,在zookeeper上的与该方法对应的指定节点的目录下,生成一个唯一的瞬时有序节点。 判断是否获取锁的方式很简单,只需要判断有序节点中序号最小的一个。 当释放锁的时候,只需将这个瞬时节点删除即可。同时,其可以避免服务宕机导致的锁无法释放,而产生的死锁问题。来...原创 2020-03-01 17:05:39 · 324 阅读 · 0 评论 -
字符串转百分数,并求平均数 BigDecimal 、DecimalFormat
/** * 求参评率 和 解决率 的平均数 ,都是百分号的字符串 * @return */ public List<RptRobotAnswerStatsNew> dealRptRobotAnswerStatsNew(String startDate, String endDate, ...原创 2020-01-16 09:53:54 · 760 阅读 · 0 评论 -
【Java】JDK的新特性
JDK1.5新特性:J2SE,J2EE,J2ME 更名为: JavaSE,JavaEE,JavaME自动拆装箱泛型可变参数静态导入增强for循环互斥锁java内置线程池。线程池中可以提交 Callable接口的子类对象。枚举JDK1.7新特性:二进制字面量数字字面量可以出现下划线switch 语句可以用字符串泛型简化,菱形原创 2016-08-17 22:44:52 · 375 阅读 · 3 评论 -
【Java】集合转数组
示例:ArrayList list转换成Character数组1、如果使用(Character[])list.toArray();//强制转换,则会报类型转换异常2、使用第二个方法list.toArray(T[ ] a);//即可示例代码:[java] view plain copyCharacter[] characters =转载 2016-08-09 00:23:33 · 682 阅读 · 2 评论 -
【Java】面向对象(二)继承
【继承】a: 继承概念* 当一个类的属性与行为均与现有类相似,属于现有类的一种时,这一个类可以定义为现有类的子类。 * 子类的访问权限要比父类的访问权限大或者相同,返回值类型为引用数据类型时要相同或者子类小。* 子类具有父类的非私有属性与方法。无需重新定义,可以直接调用。* 在有了父类这个模板之后,所有的类在继承后便均是该类型的一种,具备这种类型基本的属性与行为。 b原创 2016-07-24 09:58:23 · 429 阅读 · 2 评论 -
【Java】面向对象(一)封装
【面向对象概念】:* 面向对象是Java的基本特征。深刻地理解面向对象是设计良好Java软件项目的基础。* 面向对象(Object Oriented,OO)是软件开发过程中使用的一种思维方式 。将功能封装进对象,强调具备了功能的对象,不关注过程。【面向对象特点】:* 是一种更符合人们思考习惯的思想* 可以将复杂的事情简单化* 将程序由执行者转换成为指挥者原创 2016-07-23 23:52:32 · 424 阅读 · 3 评论 -
【Java】Eclipse中的快捷键
Eclipse快捷键大全Ctrl+1 快速修复Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增加)Ctrl+Alt+↑ 复制当前行到上一行(复制增加)Alt+↓ 当前行和下面一行交互位置(可以省去先剪切,再粘贴了)Alt+↑ 当前行和上面一行交互位置(同上)Alt+← 前一个编辑的页面Alt+→ 下一个编辑的页面(当然是针对上面那条来说了原创 2016-07-17 09:41:20 · 341 阅读 · 1 评论 -
【Java】集合遍历增强for和普通for的区别
【了解增强for】增强for的优点:所谓的增强For循环,它能对数组和集合进行遍历,使用它会使用你的代码短小而精炼的多。1、 简化数组和Collection集合的遍历,输入for,之后alt+/提示后自动补全2、格式:for(元素数据类型 变量 : 数组或者Collection集合) {使用变量即可,该变量就是元素}3、案例演示: 数组,集合存储元素用增强for遍历原创 2016-05-20 16:57:12 · 1153 阅读 · 3 评论 -
【Java】Java网络编程TCP与UDP
【区别1】TCP和UDP都是传输层协议TCP---传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能原创 2016-03-20 17:35:29 · 446 阅读 · 2 评论 -
【Java】Java中GUI之布局管理器
【概念】布局管理器:是对容器中的元素进行布局管理,按照一定的规则将容器里面的元素或组件进行排放。【分类】1、FlowLayout:流式布局管理器2、BorderLayout:边框布局管理器3、GridLayout:网格布局管理器4、CardLayout:卡片布局管理器5、 GridBagLayout:网格包布局管理器F原创 2016-03-18 11:35:07 · 896 阅读 · 0 评论 -
【Java】Java 中IO流知识总结
Java中的流,可以从不同的角度进行分类。按照数据流的方向不同可以分为:输入流和输出流。按照处理数据单位不同可以分为:字节流和字符流。按照实现功能不同可以分为:节点流和处理流。 输出流: 输入流:因此输入和输出都是从程序的角度来说的。字节流:一次读入或读出是8位二进制。字符流:一次读入或读出是1转载 2016-03-16 16:28:31 · 406 阅读 · 1 评论 -
【Java】JAVA中的throws和throw的区别
语句抛出的异常 用户程序自定义的异常和应用程序特定的异常,必须借助于 throws 和 throw 语句来定义抛出异常。在类和方法后面用throws,直接抛出异常就要用到throw。throw是语句抛出一个异常。语法:throw (异常对象); throw e;throws是方法可能抛出异常的声明。(用在声明方法时,表示该方法可能要抛出异常)原创 2016-03-15 10:39:39 · 563 阅读 · 0 评论