
java
文章平均质量分 81
K'illCode
记录自己的学习历程,大部分来自转载,如有侵权联系删除.......
展开
-
Java中可以用 ::
一:简介方法引用分为三种,方法引用通过一对双冒号:: 来表示,方法引用是一种函数式接口的另一种书写方式 静态方法引用,通过类名::静态方法名, 如 Integer::parseInt 实例方法引用,通过实例对象::实例方法,如 str::substring 构造方法引用,通过类名::new, 如 User::new 二:方法引用 public final class Integer { public static...原创 2020-08-24 09:13:18 · 343 阅读 · 0 评论 -
不用try-catch-finally关闭资源
代码一定得写的优雅一点!你还在使用try-catch-finally关闭资源吗,如果是,那么就有点out了。皮皮甜手把手教你使用JDK7引用的try-with-resource。JDK7之前资源的关闭姿势:/** * jdk7以前关闭流的方式 * * @author hetiantian * */public class CloseResourceBefore7 { private static final String FileName = "file.txt";原创 2020-08-18 18:26:48 · 485 阅读 · 0 评论 -
理解 WebSocket 原理,附完整的实战代码(包含前端和后端)
作者:nnngucnblogs.com/nnngu/p/9347635.html1、前言最近有同学问我有没有做过在线咨询功能。同时,公司也刚好让我接手一个 IM 项目。所以今天抽时间记录一下最近学习的内容。本文主要剖析了 WebSocket 的原理,以及附上一个完整的聊天室实战 Demo (包含前端和后端,代码下载链接在文末)。2、WebSocket 与 HTTPWebSocket 协议在2008年诞生,2011年成为国际标准。现在所有浏览器都已经支持了。WebSocket 的最大特原创 2020-08-05 11:54:48 · 277 阅读 · 0 评论 -
一套简单通用的Java后台管理系统,拿来即用,非常方便(附项目地址)
作者:huanzi-qchcnblogs.com/huanzi-qch/p/11534203.html前言这套Base Admin是一套简单通用的后台管理系统,主要功能有:权限管理、菜单管理、用户管理,系统设置、实时日志,实时监控,API加密,以及登录用户修改密码、配置个性菜单等技术栈前端:layuijava后端:SpringBoot + Thymeleaf + WebSocket + Spring Security + SpringData-Jpa + MySql工程结构说明原创 2020-08-05 11:53:59 · 263 阅读 · 0 评论 -
序列化的 serialVersionUID 到底有什么用?
实现Serializable接口的目的是为类可持久化,比如在网络传输或本地存储,为系统的分布和异构部署提供先决条件。若没有序列化,现在我们所熟悉的远程调用,对象数据库都不可能存在,serialVersionUID适用于java序列化机制。简单来说,JAVA序列化的机制是通过判断类的serialVersionUID来验证的版本一致的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID于本地相应实体类的serialVersionUID进行比较。如果相同说明...原创 2020-07-17 22:13:06 · 333 阅读 · 0 评论 -
高危:Apache Tomcat HTTP/2 DoS 漏洞,影响多个版本
Apache Tomcat 安全团队报告了一个 Tomcat HTTP/2 DoS 漏洞。HTTP/2 请求的特制序列可能会在数秒内引发较高的 CPU 使用率,如果有足够数量的此类请求在并发 HTTP/2 连接上进行连接时,服务器可能无响应,即造成拒绝服务。该漏洞严重等级定为“重大”(Important),编号 CVE-2020-11996。受影响的软件版本包括: Apache Tomcat 10.0.0-M1 到 10.0.0-M5 Apache Tomcat 9.0.0.原创 2020-07-01 18:53:14 · 889 阅读 · 0 评论 -
Java如何实现文件批量导入导出(兼容xls,xlsx)
# 介绍java实现文件的导入导出数据库,目前在大部分系统中是比较常见的功能了,今天写个小demo来理解其原理,没接触过的同学也可以看看参考下。目前我所接触过的导入导出技术主要有POI和iReport,poi主要作为一些数据批量导入数据库,iReport做报表导出。另外还有jxl类似poi的方式,不过貌似很久没跟新了,2007之后的office好像也不支持,这里就不说了。# POI使用详解1 什么是Apache POI?Apache POI是Apache软件...原创 2020-06-23 12:52:26 · 317 阅读 · 0 评论 -
JSON Web 令牌(JWT)是如何保护 API 的
API 验证 JSON Web Token Token 的结构 Header Payload 哈希算法 JWT 签名 认证过程 登录 验证请求 退出登录 总结 你可以已经听说过 JSON Web Token (JWT) 是目前用于保护 API 的最新技术。与大多数安全主题一样,如果你打算使用它,那很有必要去了解它的工作原理(一定程度上)。问题在于,对 JWT 的大多数解释都是...原创 2020-06-08 21:15:12 · 224 阅读 · 0 评论 -
Dubbo 的心跳设计,值得学习!
前言谈到RPC肯定绕不开TCP通信,而主流的RPC框架都依赖于Netty等通信框架,这时候我们还要考虑是使用长连接还是短连接: 短连接:每次通信结束后关闭连接,下次通信需要重新创建连接;优点就是无需管理连接,无需保活连接; 长连接:每次通信结束不关闭连接,连接可以复用,保证了性能;缺点就是连接需要统一管理,并且需要保活; 主流的RPC框架都会追求性能选择使用长连接,所以如何保活连接就是一个重要的话题,也是本文的主题,下面会重点介绍一些保活策略;为什么需要保...原创 2020-05-29 11:01:04 · 460 阅读 · 0 评论 -
Java 中的 T,E,K,V, 别傻傻分不清楚
作者:Java的小本家来源:http://suo.im/6uFZuc前言Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许开发者在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。泛型带来的好处在没有泛型的情况的下,通过对类型 Object 的引用来实现参数的“任意化”,“任意化”带来的缺点是要做显式的强制类型转换,而这种转换是要求开发者对实际参数类型可以预知的情况下进行的..原创 2020-05-29 11:00:32 · 541 阅读 · 0 评论 -
瞬间几千次的重复提交,我用 SpringBoot+Redis 扛住了
在实际的开发项目中,一个对外暴露的接口往往会面临,瞬间大量的重复的请求提交,如果想过滤掉重复请求造成对业务的伤害,那就需要实现幂等!我们来解释一下幂等的概念:任意多次执行所产生的影响均与一次执行的影响相同。按照这个含义,最终的含义就是 对数据库的影响只能是一次性的,不能重复处理。如何保证其幂等性,通常有以下手段:1、数据库建立唯一性索引,可以保证最终插入数据...原创 2020-04-12 18:30:54 · 578 阅读 · 0 评论 -
Spring Boot+JWT+Shiro+MyBatisPlus实现Restful快速开发后端脚手架
一、背景前后端分离已经成为互联网项目开发标准,它会为以后的大型分布式架构打下基础。SpringBoot使编码配置部署都变得简单,越来越多的互联网公司已经选择SpringBoot作为微服务的入门级微框架。Mybatis-Plus是一个 Mybatis 的增强工具,有代码生成器,并且提供了类似hibernate的单表CRUD操作,又保留了mybatis的特性支持定制化 SQL。Apache...原创 2020-04-12 18:28:35 · 232 阅读 · 0 评论 -
服务端给客户端推送消息用Netty+WS实现
# 前言曾几何时,不知道大家有没有在项目里遇到过需要服务端给客户端推送消息的需求,是否曾经苦恼过、纠结过,我们知道要想实现这样的需求肯定离不开websocket长连接方式,那么到底是该选原生的websocket还是更加高级的netty框架呢?在此我极力推荐netty,因为一款好的框架一般都是在原生的基础上进行包装成更好、更方便、更实用的东西,很多我们需要自己考虑的问题都基本可以不用去考虑...原创 2020-04-09 18:42:54 · 2966 阅读 · 2 评论 -
用Java语言,写一个植物大战僵尸简易版!
前言有谁没玩过植物大战僵尸吗?小灰的一位读者,用Java语言开发了自己的植物大战僵尸游戏。虽然系统相对简单,但是麻雀虽小五脏俱全,对游戏开发感兴趣的小伙伴可以学习一下哦~~游戏设计植物大战僵尸中有一个小游戏关卡,屏幕的正上方有一个滚轮机,会随机生成植物,玩家可以选中植物后自由选择草坪来进行安放。基于此游戏模式,我将该关卡抽取出来,单独做成了一个简易版的植物大战僵尸...原创 2020-04-03 19:32:11 · 1013 阅读 · 0 评论 -
Java 中的 SPI 机制是到底是什么
来自:sigangjun |责编:乐乐链接:blog.youkuaiyun.com/sigangjun/article/details/79071850SPI的全名为:Service Provider Interface,大多数开发人员可能不熟悉,因为这个是针对厂商或者插件的。在java.util.ServiceLoader的文档里有比较详细的介绍。简单的总结下 Java SPI...原创 2020-03-27 20:06:13 · 327 阅读 · 0 评论 -
Java项目构建基础:统一结果,统一异常,统一日志
作者:永动的图灵机juejin.im/post/5e073980f265da33f8653f2e统一结果返回目前的前后端开发大部分数据的传输格式都是json,因此定义一个统一规范的数据格式有利于前后端的交互与UI的展示。统一结果的一般形式 是否响应成功; 响应状态码; 状态码描述; 响应数据 其他标识符 结果类枚举前三者可定...原创 2020-03-23 21:51:03 · 222 阅读 · 0 评论 -
理解 23 种设计模式
创建型模式:1、FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基的鸡翅都是MM爱吃的东西,虽然口味有所不同,但不管你带MM去麦当劳或肯德基,只管向服务员说“来四个鸡翅”就行了。麦当劳和肯德基就是生产鸡翅的Factory工厂模式:客户类和工厂类分开。消费者任何时候需要某种产品,只需向工厂请求即可。消费者无须修改就可以接纳新产品。缺点是当产品修改时,工厂类也要做相应的修改。如:如...原创 2020-03-23 21:32:35 · 263 阅读 · 0 评论 -
用纯Java实现一个网页版的Xshell(附源码)
前言最近由于项目需求,项目中需要实现一个WebSSH连接终端的功能,由于自己第一次做这类型功能,所以首先上了GitHub找了找有没有现成的轮子可以拿来直接用,当时看到了很多这方面的项目,例如:GateOne、webssh、shellinabox等,这些项目都可以很好地实现webssh的功能。但是最终并没有采用,原因是在于这些底层大都是python写的,需要依赖很多文件,自己用的时候可以使用...原创 2020-03-16 18:37:26 · 511 阅读 · 0 评论 -
9种 OOM 常见原因及解决方案
当 JVM 内存严重不足时,就会抛出 java.lang.OutOfMemoryError 错误。本文总结了常见的 OOM 原因及其解决方法,如下图所示。如有遗漏或错误,欢迎补充指正。1、Java heap space当堆内存(Heap Space)没有足够空间存放新创建的对象时,就会抛出 java.lang.OutOfMemoryError:Javaheap space 错误(根据实...原创 2020-03-16 18:33:56 · 422 阅读 · 0 评论 -
高并发下线程安全的单例模式
作者:mlinge-奋斗吧blog.youkuaiyun.com/cselmu9/article/details/51366946在所有的设计模式中,单例模式是我们在项目开发中最为常见的设计模式之一,而单例模式有很多种实现方式,你是否都了解呢?高并发下如何保证单例模式的线程安全性呢?如何保证序列化后的单例对象在反序列化后任然是单例的呢?这些问题在看了本文之后都会一一的告诉你答案,赶快来阅读吧!...原创 2020-03-16 18:31:39 · 219 阅读 · 0 评论 -
压缩20M文件从30秒优化到1秒
有一个需求需要将前端传过来的10张照片,然后后端进行处理以后压缩成一个压缩包通过网络流传输出去。之前没有接触过用Java压缩文件的,所以就直接上网找了一个例子改了一下用了,改完以后也能使用,但是随着前端所传图片的大小越来越大的时候,耗费的时间也在急剧增加,最后测了一下压缩20M的文件竟然需要30秒的时间。压缩文件的代码如下。 ...原创 2020-03-16 18:30:56 · 230 阅读 · 0 评论 -
Hutool Java工具类库导出Excel,超级简单!
作者:程序猿的内心独白www.toutiao.com/i6771298852050829835/前言在开发应用系统的时候,导出文件是必不可放的功能。以前用过POI、easyexcel等工具的导入导出功能,但总感觉太麻烦了,代码特别多,感觉并不是很好用。今天给大家介绍一款新工具,java工具类库Hutool。之前整体介绍过该工具库:贼好用的Java工具类库,GitHub星标1...原创 2020-03-10 07:55:27 · 714 阅读 · 0 评论 -
Tomcat热加载和热部署
热部署就是在服务器运行时重新部署项目,热加载即在在运行时重新加载class,从而升级应用。通常情况下在开发环境中我们使用的是热加载,因为热加载的实现的方式在Web容器中启动一个后台线程,定期检测相关文件的变化,如果有变化就重新加载类,这个过程不会清空Session。而在生产环境我们一般应用的是热部署,热部署也是在Web应用后台线程定期检测,发现有变化就会重新加载整个Web应用,...原创 2020-03-10 07:52:28 · 300 阅读 · 0 评论 -
Java:实现文件批量导入导出实践(兼容xls,xlsx)
1、介绍java实现文件的导入导出数据库,目前在大部分系统中是比较常见的功能了,今天写个小demo来理解其原理,没接触过的同学也可以看看参考下。目前我所接触过的导入导出技术主要有POI和iReport,poi主要作为一些数据批量导入数据库,iReport做报表导出。另外还有jxl类似poi的方式,不过貌似很久没跟新了,2007之后的office好像也不支持,这里就不说了。...原创 2020-03-04 18:37:08 · 228 阅读 · 0 评论 -
Tomcat 爆出高危漏洞!
一、漏洞背景安全公告编号:CNTA-2020-00042020年02月20日, 360CERT 监测发现 国家信息安全漏洞共享平台(CNVD) 收录了 CNVD-2020-10487 Apache Tomcat文件包含漏洞。CNVD-2020-10487/CVE-2020-1938是文件包含漏洞,攻击者可利用该高危漏洞读取或包含 Tomcat 上所有 webapp 目...原创 2020-02-26 21:22:13 · 1420 阅读 · 2 评论 -
实现 "长"链接变 "短" 链接
短链接,通俗来说,就是将长的 URL 网址,通过程序计算等方式,转换为简短的网址字符串。大家经常会收到一些莫名的营销短信,里面有一个非常短的链接让你跳转。新浪微博因为限制字数,所以也会经常见到这种看着不像网址的网址。短链的兴起应该就是微博限制字数激起了大家的创造力。如果创建一个短链系统,我们应该做什么呢? 将长链接变为短链; 用户访问短链接,会跳转到正确的长链接上去。 ...原创 2020-02-23 14:35:30 · 2031 阅读 · 0 评论 -
springboot+mybatis+sharding-jdbc做读写分离
sharding-jdbc简介现已更名为: sharding-sphere,官方网址如下https://shardingsphere.apache.org/document/current/cn/overview/简单来说,最主要的可以做以下事情:1.数据库读写分离2.数据库分库分表3.分布式事务在今天的DEMO中, 我们一起来用shard-sphere来做数据库的读写分离主要需...原创 2020-02-23 14:20:46 · 778 阅读 · 0 评论 -
Java的main方法必须是public static void?
Main 方法是我们学习 Java 编程语言时知道的第一个方法,你是否曾经想过为什么 main 方法是 public、static、void 的。当然,很多人首先学的是 C 和 C++,但是在 Java 中 main 方法与前者有些细微的不同,它不会返回任何值,为什么 main 方式是 public、static、void,这篇文章尝试去找到一些答案。Main 方法是 Java 程序的入...原创 2020-02-11 01:37:59 · 611 阅读 · 0 评论 -
单例模式的优缺点,注意事项,使用场景 Java面试题精选 程序员闪充宝 昨天
单例模式介绍:单例模式(Singleton),也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种方式简化了在复...原创 2020-02-11 00:36:51 · 326 阅读 · 0 评论 -
5 亿整数的大文件,来排个序
一、问题给你1个文件bigdata,大小4663M,5亿个数,文件中的数据随机,如下一行一个整数:现在要对这个文件进行排序,怎么搞?二、内部排序先尝试内排,选2种排序方式: private final int cutoff = 8; public void perform(Comparable[] a) { perform(a,...原创 2020-02-11 00:36:05 · 179 阅读 · 0 评论 -
HikariCP连接池
导读:在实际开发中我们常所熟知的数据库连接池有C3P0,DBCP、阿里Druid,等。但随着Springboot 2.0选择HikariCP作为默认数据库连接池这一事件之后,HiKariCP作为一个后起之秀出现在大众的视野中,以其速度快,性能高等特点受到很多人青睐。下面是我收集到的一些关于HikariCP的资料,用于帮助各位了解认识HiKariCP。什么是HikariCPHikariCP是...原创 2020-02-08 18:49:49 · 949 阅读 · 0 评论 -
三种处理异常的套路
Oh no, don't do this to me...中文翻译:哦,请不要这样写……// 写一句注释跳过异常try { throw new IOException("Made up");} catch (IOException e) { // 跳过}// 记到日志里,继续处理try { throw new IOException("Made ...原创 2020-02-08 18:43:15 · 336 阅读 · 1 评论 -
Github 标星 12.8K!这可能是最好的 Java 博客系统
来源:GitHubhttps://github.com/halo-dev/haloHalo 是一款现代化的个人独立博客系统,给习惯写博客的同学多一个选择。简介Halo [ˈheɪloʊ],意为光环。当然,你也可以当成拼音读(哈喽)。轻快,简洁,功能强大,使用 Java 开发的博客系统。快速开始下载最新的 Halo 安装包curl-Lhttps://gith...原创 2020-01-31 11:25:37 · 592 阅读 · 0 评论 -
大文件上传和断点续传
# 前言这段时间面试官都挺忙的,频频出现在博客文章标题,虽然我不是特别想蹭热度,但是实在想不到好的标题了-。-,蹭蹭就蹭蹭 :)事实上我在面试的时候确实被问到了这个问题,而且是一道在线 coding 的编程题,当时虽然思路正确,可惜最终也并不算完全答对。结束后花了一段时间整理了下思路,那么究竟该如何实现一个大文件上传,以及在上传中如何实现断点续传的功能呢?本...原创 2020-01-20 19:21:05 · 560 阅读 · 0 评论 -
HTTP客户端连接,选择HttpClient还是OkHttp
写在前面为什么会写这篇文章,起因于和朋友的聊天这又触及到我的知识盲区了,首先来一波面向百度学习,直接根据关键字httpclient和okhttp的区别、性能比较进行搜索,没有找到想要的答案,于是就去overstackflow上看看是不是有人问过这个问题,果然不会让你失望的所以从使用、性能、超时配置方面进行比较使用HttpClient和OkHttp一般用于调用其它服务,一...原创 2020-01-14 17:47:36 · 2687 阅读 · 0 评论 -
实现一下类似百度网盘的预览功能:支持Word、Excel、Ppt
本人技术小白一枚,前些天老大让我写一个office在线预览的一个功能,跟百度网盘类似,各种找资料,总结一下我觉得比较好用的方法。网上大概有这几种office在线预览的方法。# 第一种利用office online实现在线预览,Office平台提供了通过url的指向达到预览效果。http://view.officeapps.live.com/op/view.a...原创 2020-01-13 21:20:24 · 3455 阅读 · 0 评论 -
压缩20M文件从30秒到1秒的优化过程...
有一个需求需要将前端传过来的10张照片,然后后端进行处理以后压缩成一个压缩包通过网络流传输出去。之前没有接触过用Java压缩文件的,所以就直接上网找了一个例子改了一下用了,改完以后也能使用,但是随着前端所传图片的大小越来越大的时候,耗费的时间也在急剧增加,最后测了一下压缩20M的文件竟然需要30秒的时间。压缩文件的代码如下。 ...原创 2020-01-12 19:01:39 · 314 阅读 · 0 评论 -
Tomcat 的单机多实例配置
有时候需要在一个服务器上部署多个Tomcat,通过不同的端口进行区分,比如,反向代理。但是不想简单的通过复制Tomcat来实现,这样既不方便以后的升级也不方便管理,那么这时候就需要配置Tomcat的单机多实例了。Tomcat 下载Tomcat 的下载可以直接到Tomcat官方网站下载自己需要的版本,我这里下载的Tomcat8.5.32。//解压tar-zxvfapache-t...原创 2020-01-12 18:59:42 · 185 阅读 · 0 评论 -
3种骚操作,教你查看 Java 字节码!
在我们工作、学习、以及研究 JVM 过程当中,不可避免的要查看 Java 字节码,通过查看字节码可以了解一个类的编译结果,也能通过编译器层面来分析一个类的性能。字节码文件是不能直接打开的,下面栈长教大家几种简单的方法如何查看 Java 字节码。1、使用 javap 命令查看字节码命令格式如下:javap -c xxx.classJDK 提供的了,不解释,来,演示操作一把:...原创 2019-12-26 18:27:11 · 273 阅读 · 0 评论 -
Tomcat 8 性能优化
授人以鱼不如授人以渔本文章的目的不在于给出最佳配置,而是带领开发者,能够从实际情况出发,通过不断的调节tomcat和jvm参数,去发现吞吐量,平均响应时间和错误率等信息的变化,同时根据服务器的cpu和内存等信息,结合接口的业务逻辑,最好是测试使用率最高,并发最大,或者是最重要的接口(比如下单支付接口),设置最优的tomcat和jvm配置参数。目的通过Tomcat性能优化可以提高网站的并...原创 2019-12-11 21:04:41 · 1116 阅读 · 0 评论