Java
文章平均质量分 90
WormholeStack
All problems in computer science can be solved by another level of indirection.
展开
-
你了解JDK SPI吗?
什么是JDK SPI 机制? SPI (Service Provider Interface) 是一种将服务接口与服务实现分离以达到解耦、大大提升了程序可扩展性的机制。引入服务提供者就是引入了spi接口的实现者,通过本地的注册发现获取到具体的实现类,轻松可插拔。 当服务的提供者提供了一种接口的实现之后,需要在 Classpath 下的 META-INF/services/ 目录里创建一个以服务接口命名的文件,此文件记录了该 jar 包提供的服务接口的具体实现类。当某个应用引入了该 jar 包且需要使用该服务原创 2021-01-04 19:33:00 · 429 阅读 · 2 评论 -
你了解在Java中如何自定义注解嘛?
由一个小例子引出今天的课题: 校验用户信息,后端对接收的对象的信息例如用户名和密码做一个指定的校验。 代码如下: User类 指定用户名和密码设定要求 @Data @NoArgsConstructor @AllArgsConstructor public class User { /** * 用户名 不能为空 长度不能大于6 */ private String username; /** * 密码 不能为空 长度不能低于5 大于13 */原创 2020-12-16 21:14:57 · 364 阅读 · 0 评论 -
你真的了解String的创建吗?
起因 在文章的开始之前,有一个问题需要思考。 String s = "MRyan"; String s = new String("MRyan"); 以上是String的两种赋值方式,它们有什么区别吗?它们在内存中有几个实例?存储在哪个区域里?实例存储在哪里?字面量存储在哪里? 想要回答这些问题,需要对JVM有一定的了解 狂补JVM基础知识 都知道JVM的内存结构包括堆,虚拟机栈,方法区,程序计数器,本地方法栈。 其中和本文章有关系的 1. 堆:作为整个JVM内存结构中占用最大的一块空间,存放对象实例和原创 2020-07-29 17:23:01 · 2083 阅读 · 0 评论 -
请谈谈你对死锁的理解?
多线程和锁 多线程和锁作为并发编程的两个重要概念,在提升了程序性能的同时,也带来了一些编码的复杂性。锁的出现就是为了保证在多线程的时候操作一组资源数据的一致性,我们在给资源加上锁之后,只有拥有了这个锁的线程才能操作此资源,其余的线程只能排队。 举个例子:例如你去换衣间试衣服,你进去了把门锁上,那么在这期间谁都无法进入,等你开门出来,别人才能进入。 什么是死锁 死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状原创 2020-07-05 19:55:03 · 5362 阅读 · 1 评论 -
List如何在增加元素的同时删除元素
问题介绍 List如何在增加元素的同时删除元素。 这还不简单? 直接上代码: List<String> lists = new ArrayList<>(); lists.add("MRyan"); lists.add("MRyan2"); lists.add("MRyan3"); for (String list : lists) { if (list.equals("MRyan")) {原创 2020-06-16 08:24:40 · 4598 阅读 · 2 评论 -
前端图片延迟懒加载 Echojs
这里我们用到Ecojs:专门用于实现懒加载。 使用方法: 1.引入:在HTML中引入jQuery和jQuery-lazyload,如: <script type="text/javascript" src="/js/echo.min.js"></script> 2.图片中的src使用data-echo代替如: <img class="lazy" src="" data-echo="images/p1.jpg"> 3.添加js代码:初始化 echo.init({原创 2020-05-20 11:16:56 · 2999 阅读 · 0 评论 -
TreeMap如何按照Value进行排序
/** * 输出分词结果 和词频 */ private void printResult() { /**将TreeMap按照Value进行排序 最终结果词频高的在前*/ List<Map.Entry<String, Integer>> wordsList = new ArrayList<Map.Entry<String, Integer>>(wordsMa...原创 2020-07-01 21:46:01 · 2250 阅读 · 0 评论 -
远程连接服务器mysql数据库
登录服务器,登陆MySQL数据库命令如下: mysql -u root -p pwd; 查询MySQL数据库是否允许远程ip访问,命令如下: use mysql; select host, user from user; 查询结果为127.0.0.1或者localhost或者当前服务器域名,则表示不允许远程连接。 开启远程访问操作。命令如下: GRANT ALL PRIVILEGES ON . TO ‘root’@’%'IDENTIFIED BY ‘*****’ WITH GRANT OPTIO..原创 2020-08-12 11:32:23 · 465 阅读 · 0 评论 -
span标签中实现换行
span{ word-break:normal; width:auto; display:block; white-space:pre-wrap; word-wrap : break-word ; overflow: hidden ; } white-space – 通过HTML文档的源代码的排版方式控制页面显示文本的排版方式 取值: normal | pre | nowrap | pre-wrap | pre-line | inherit原创 2020-05-22 09:58:20 · 4816 阅读 · 0 评论 -
Vue上传图片并实时回显
有注释,等有时间在详细写这篇文章 <!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF-8"> <title>添加图片</title> <style> #upload-tip { border: 1px dashed #d9d9d9; width: 135px;原创 2020-05-21 17:56:27 · 4309 阅读 · 0 评论 -
(直接使用)Java生成随机验证码工具类
验证码工具类: VerifyUtil.java import java.awt.*; import java.awt.image.BufferedImage; import java.util.HashMap; import java.util.Map; import java.util.Random; public class VerifyUtil { // 验证码字符集 private static final char[] CHARS = { '0', '1'原创 2020-05-21 17:53:39 · 838 阅读 · 0 评论 -
Circles轻量级Js圆形进度条插件
介绍: circles是一款基于HTML5 SVG的轻量级JavaScript圆形进度条插件。该圆形进度条具有响应式,可动画等特点,并且可以制作出圆形进度条进入视口才开始动画的效果。 只有一个JS文件 使用方法: 1.导入circles.js或circles.min.js文件 2.在HTML中创建一个占位符div: <div id="circles-1"></div> 3.利用js调用 Circles.create({ id: 'circles-1', radius原创 2020-05-20 11:18:34 · 1482 阅读 · 0 评论 -
Thymeleaf如何使用EchoJS
上文我们说了可以用EchoJS来实现懒加载,但是问题来了,图片数据都是由后端传参,前端循环遍历加载的,而Thymeleaf没有th:data-echo的属性,那如何实现懒加载呢呢? 实现思路: 利用th:attr自定义属性,通过jquery循环遍历每一个img来给对应的data-echo属性赋值。 这个时候我们又遇到问题了,循环条件是什么,如何获取? 循环条件当然是你当前页面所拥有的图片个数了。 这里可以使用iterStat来获取: Html代码如下: <div th:each="gallery,原创 2020-05-20 11:17:31 · 3949 阅读 · 0 评论 -
Java特性---Collectors
最近在项目中用到了Collectors,用起来确实方便了不少,在这里记录一下。 Collector是专门用来作为Stream的collect方法的参数的。是Java8的特性,Collectors是作为生产具体Collector的工具类。 例1:直接上代码 List<String> lists = Arrays.asList("a", "b", "c", "d"); List<String> listsUpper = new ArrayList<>(); //J原创 2020-05-19 09:43:18 · 2969 阅读 · 0 评论 -
MyBatis 模糊搜索
Mybatis的模糊搜索语句如下 要用$来代替#才可以 否则取到null <select id="fun" resultType="int" parameterType="String"> select count(1) from d <where> <if test="name!=''"> name like '%${name}%'; </if>原创 2020-05-19 09:38:26 · 615 阅读 · 0 评论