使用redisTemplate根据key生成自增ID值:RedisAtomicLong
摘要:使用步骤 1、引入依赖 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.0.RELEASE</version>
阅读全文
posted @
2022-02-28 11:26
周文豪
阅读(3863)
推荐(0) 编辑
Map的getOrDefault方法
摘要:getOrDefault() 方法获取指定 key 对应对 value,如果找不到 key ,则返回设置的默认值。 getOrDefault() 方法的语法为: hashmap.getOrDefault(Object key, V defaultValue) 返回 key 相映射的的 value,如
阅读全文
posted @
2022-02-28 10:13
周文豪
阅读(789)
推荐(0) 编辑
季度选择器quarter-picker
摘要:实现步骤: 1、季度选择器组件 <template> <div style="display: inline-block;"> <mark style="position: fixed;top: 0;bottom: 0;left: 0;right: 0;background: rgba(0,0,0,
阅读全文
posted @
2022-02-28 09:57
周文豪
阅读(1247)
推荐(0) 编辑
File类(正斜杠'/'和反斜杠'\')
摘要:一、概述 java.io.File 类是文件和目录路径名(相对路径名或绝对路径名)的抽象表示,主要用于文件和目录的创建、查找和删除等操作。 二、构造方法 public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。 public Fi
阅读全文
posted @
2022-02-28 08:46
周文豪
阅读(1287)
推荐(0) 编辑
v-model.number
摘要:vue官方文档中对于v-model中.number的描述: .number 如果想自动将用户的输入值转为数值类型,可以给 v-model 添加 number 修饰符。 示例: <el-table-column label="预计药材产量(kg)" align="center" width="140p
阅读全文
posted @
2022-02-23 14:30
周文豪
阅读(1006)
推荐(0) 编辑
代码优化:不要将数组声明为public static final
摘要:因为这毫无意义,这样只是定义了引用为static final,数组的内容还是可以随意改变的,将数组声明为public更是一个安全漏洞,这意味着这个数组可以被外部类所改变。 但是我们可以把数组声明为final类型。 在使用final修饰基本类型变量的时候,不可以对基本类型变量重新赋值,所以的话,基本类
阅读全文
posted @
2022-02-22 14:03
周文豪
阅读(530)
推荐(0) 编辑
后台响应的Result参数设置:当后台没有报错,而是正常返回前端提示
摘要:后台代码: result = Result.operating("不存在,不允许迁出", false, ResultCode.SUCCESS); 其中三个参数:参数一返回消息提示,参数二返回成功或失败,为true表示请求成功,为false表示请求失败。参数三表示是否出现异常,为Success表示成功
阅读全文
posted @
2022-02-22 11:29
周文豪
阅读(806)
推荐(0) 编辑
配置telnet和使用telnet测试端口
摘要:一、配置telnet 打开控制面板 点击程序 点击“启用或关闭windows功能” 点击确定 二、如何使用telnet测试端口? (1)telnet IP 端口。 (2)telnet 域名 端口。 如测本机主机:telnet 127.0.0.1 80或23,结果显示其80端口不可用,6379端口开启
阅读全文
posted @
2022-02-21 16:42
周文豪
阅读(1129)
推荐(0) 编辑
Lists工具类
摘要:Guava 是 Google 开源的一个 Java 工具库,里面有很多工具类,本文要讲的是里面的Lists工具类。 注意,使用Guava工具类库,必须先添加依赖 一、引入依赖 <dependency> <groupId>com.google.guava</groupId> <artifactId>g
阅读全文
posted @
2022-02-20 15:08
周文豪
阅读(402)
推荐(0) 编辑
Oracle中start with connect by prior的用法:查询当前记录连同上一级或下一级的记录
摘要:start with connect by prior用于树形结构的数据中,如部门存在上下级关系。 start with 子句:遍历起始条件。 connect by 子句:连接条件。关键词prior,prior跟父节点列parentid放在一起,就是往父结点方向遍历;prior跟子结点列subid放
阅读全文
posted @
2022-02-19 21:22
周文豪
阅读(479)
推荐(0) 编辑
vue中使用this.$loading()给整个页面添加遮罩
摘要:官网介绍:如果完整引入了 Element,那么 Vue.prototype 上会有一个全局方法 $loading,它的调用方式为:this.$loading(options),同样会返回一个 Loading 实例。 调用方法: this.$loading() this.$loading().clos
阅读全文
posted @
2022-02-19 20:34
周文豪
阅读(3951)
推荐(0) 编辑
IP和子网划分
摘要:一、IP地址的概念 IP地址由4个字节,32位二进制组成的一个逻辑上的地址。将32位分为4组,每一组是8个二进制。每一个位都代表不同的数字,即128、64、32、16、8、4、2、1,每个字节(八位二进制)将二进制转成十进制,IP地址通常用十进制分为四组来表示。 外网IP和内网IP的区别 1、外网I
阅读全文
posted @
2022-02-19 14:49
周文豪
阅读(1114)
推荐(0) 编辑
20种看了会抓狂的代码
摘要:曾几何时,你在阅读别人代码的时候,有没有抓狂,想生气,想发火的时候? 今天就跟大家一起聊聊,这20种我看了会抓狂的代码,看看你中招了没? 一、不注重代码格式 代码格式说起来很虚,下面我用几个案例演示一下,不注重代码格式的效果。作为这篇文章的开胃小菜吧。 1、空格 有时候必要的空格没有加,比如: @S
阅读全文
posted @
2022-02-15 12:09
周文豪
阅读(119)
推荐(0) 编辑
日志级别
摘要:一、为什么要对日志进行分级 无论是将日志输出到控制台,还是文件,其输出都会降低程序的运行效率。但由于调试、运行维护的需要,客户的要求等原因,需要进行必要的日志输出。这时就必须要在代码中加入日志输出语句。 这些输出语句若在程序运行时全部执行, 则势必会降低运行效率。例如, 使用 System.out.
阅读全文
posted @
2022-02-15 09:18
周文豪
阅读(654)
推荐(0) 编辑
OpenSSL下载与安装
摘要:一、下载 下载地址:http://slproweb.com/products/Win32OpenSSL.html 点击EXE即开始下载,下载后的文件: 二、安装 双击开始安装 点击Install即可安装完毕。 三、使用 生成公钥和私钥 先将D:\install\OpenSSL-Win64\bin设置
阅读全文
posted @
2022-02-12 12:11
周文豪
阅读(4531)
推荐(0) 编辑
vue rsa对密码加密(Jsencrypt)"message too long for RSA"
摘要:一、加密字符串很短时 比如我们仅仅对用户名或密码进行加密,使用步骤 1、下载 首先用npm命令下载jsencrypt: npm install jsencrypt –-save 2、在vue文件中引入jsencrypt import { JSEncrypt } from 'jsencrypt' 3、
阅读全文
posted @
2022-02-11 12:02
周文豪
阅读(3483)
推荐(0) 编辑
代码优化:String替换尽量少用正则表达式(replace()和replaceAll()的区别)
摘要:正则表达式虽然功能强大,但是其效率较低,除非是有需要,否则尽可能少用。 一、replaceAll()和replace()的相同点: 都是全部替换,即把源字符串中的某一字符或字符串全部换成指定的字符或字符串; 二、replaceAll()和replace()的不同点: replaceAll() 支持正
阅读全文
posted @
2022-02-11 11:43
周文豪
阅读(2904)
推荐(0) 编辑
代码优化:防止空指针异常 NPE ,是程序员的基本修养,注意 NPE 产生的场景:
摘要:NPE产生的场景: 1 )、返回类型为基本数据类型,return 包装数据类型的对象时,自动拆箱有可能产生 NPE。 反例: public int f() { return Integer 对象}, 如果为 null ,自动解箱抛 NPE 。 2 )、数据库的查询结果可能为 null 。 User
阅读全文
posted @
2022-02-10 11:49
周文豪
阅读(506)
推荐(0) 编辑
Stream流:自定义的distinctByKey根据对象的属性进行去重
摘要:一、distinct去重 1、distinct简单去重 Stream提供的distinct()方法除了去除重复的对象 private static void testDistinct() { int[] ints = {1, 1, 2, 2, 3, 3, 3, 4, 4, 4, 4}; Arrays
阅读全文
posted @
2022-02-09 22:52
周文豪
阅读(8755)
推荐(0) 编辑
代码优化:避免对日志消息进行字符串拼接
摘要:有些场景的代码执行后,结果不一定会被使用,从而造成性能浪费。而Lambda表达式是延迟执行的,这正好可以作为解决方案,提升性能。 性能浪费的日志案例(字符串拼接) 注:日志可以帮助我们快速的定位问题,记录程序运行过程中的情况,以便项目的监控和优化。 一种典型的场景就是对参数进行有条件使用,例如对日志
阅读全文
posted @
2022-02-09 12:13
周文豪
阅读(565)
推荐(0) 编辑
代码优化:尽量采用懒加载的策略,即在需要的时候才创建
摘要:只有在需要的时候才创建对象,如下的字符串对象。 String str = "aaa"; if (i == 1){ list.add(str); } //建议替换成 if (i == 1){ String str = "aaa"; list.add(str); }
阅读全文
posted @
2022-02-09 12:07
周文豪
阅读(44)
推荐(0) 编辑
Volatile详解
摘要:通过前面内容我们了解了synchronized,虽然JVM对它做了很多优化,但是它还是一个重量级的锁。而接下来要介绍的volatile则是轻量级的synchronized。 如果一个变量使用volatile,则它比使用synchronized的成本更加低,因为它不会引起线程上下文的切换和调度。 Ja
阅读全文
posted @
2022-02-07 21:05
周文豪
阅读(151)
推荐(0) 编辑
多线程之锁优化
摘要:synchronized是重量级锁,效率不高。 但在jdk 1.6中对synchronize的实现进行了各种优化,使得它显得不是那么重了。jdk1.6对锁的实现引入了大量的优化,如自旋锁、适应性自旋锁、锁消除、锁粗化、偏向锁、轻量级锁等技术来减少锁操作的开销。 锁主要存在四种状态,依次是:无锁状态、
阅读全文
posted @
2022-02-07 18:16
周文豪
阅读(87)
推荐(0) 编辑
内存可见性以及synchronized实现可见性和Volatile实现可见性
摘要:一、内存可见性 1、内存可见性介绍 可见性: 一个线程对共享变量值的修改,能够及时的被其他线程看到 共享变量: 如果一个变量在多个线程的工作内存中都存在副本,那么这个变量就是这几个线程的共享变量 线程 A 与线程 B 之间如要通信的话,必须要经历下面 2 个步骤: (1)、首先,线程 A 把本地内存
阅读全文
posted @
2022-02-07 17:30
周文豪
阅读(460)
推荐(0) 编辑
JVM内存结构、Java对象模型和Java内存模型
摘要:JVM内存结构、Java对象模型和Java内存模型,这就是三个截然不同的概念,而这三个概念很容易混淆。这里详细区别一下 一、JVM内存结构(5个部分) 我们都知道,Java代码是要运行在虚拟机上的,而虚拟机在执行Java程序的过程中会把所管理的内存划分为若干个不同的数据区域,这些区域都有各自的用途。
阅读全文
posted @
2022-02-07 17:03
周文豪
阅读(344)
推荐(0) 编辑
多线程之线程优先级
摘要:优先级priority:当线程需要竞争CPU资源时,优先级高的能分配更多的CPU资源。 现今操作系统基本采用分时的形式调度运行的线程,线程分配得到时间片的多少决定了线程使用处理器资源的多少,也对应了线程优先级这个概念。 分时调度:所有线程轮流使用 CPU 的使用权,平均分配每个线程占用 CPU 的时
阅读全文
posted @
2022-02-07 15:55
周文豪
阅读(215)
推荐(0) 编辑
多线程之线程停止
摘要:结束线程有以下三种方法: (1)设置退出标志,使线程正常退出。 (2)使用interrupt()方法中断线程。 (3)使用stop方法强行终止线程(不推荐使用Thread.stop, 这种终止线程运行的方法已经被废弃,使用它们是极端不安全的!) 一、使用退出标志 一般run()方法执行完,线程就会正
阅读全文
posted @
2022-02-07 15:40
周文豪
阅读(203)
推荐(0) 编辑
代码优化:使用同步代码块替代同步方法
摘要:除非能确定一整个方法都是需要进行同步的,否则尽量使用同步代码块,避免对那些不需要进行同步的代码也进行了同步,影响了代码执行效率。 用关键字synchronized声明方法在某些情况下是有弊端的,比如A线程调用同步方法执行一个较长时间的任务,那么B线程必须等待比较长的时间。这种情况下可以尝试使用syn
阅读全文
posted @
2022-02-06 22:24
周文豪
阅读(75)
推荐(0) 编辑