
Java学习笔记
个人的Java学习笔记,涵盖Java SE、Java EE、脚手架等方面内容
笼中小夜莺
春招已上岸,梦想是环游世界。
展开
-
SpringBoot 缓存之 @Cacheable 详细介绍
简介缓存介绍Spring 从 3.1 开始就引入了对 Cache 的支持。定义了 org.springframework.cache.Cache 和 org.springframework.cache.CacheManager 接口来统一不同的缓存技术。并支持使用 JCache(JSR-107)注解简化我们的开发。其使用方法和原理都类似于 Spring 对事务管理的支持。Spring Cache 是作用在方法上的,其核心思想是,当我们在调用一个缓存方法时会把该方法参数和返回结果作为一个键值对存在缓存中原创 2021-12-01 16:24:11 · 3117 阅读 · 0 评论 -
深入浅出JWT
JWT(JSON WEB TOKEN)的组成https://jwt.io/header(头部)承载两部分信息:声明类型,这里是JWT;声明加密的算法,通常直接使用 HMAC SHA256playload(载荷)就是存放有效信息的地方,这些有效信息包含三个部分:标准中注册的声明;公共的声明;私有的声明;signature(签证信息)对header+.+payload进行base64编码,然后实用签证算法和密钥加密三种认证流程基于session+cookie的认证流程用原创 2021-09-28 01:29:50 · 1408 阅读 · 0 评论 -
高并发解决方案
导读优秀程序员奋斗目标:实现高并发、高性能、高可用 的“三高”分布式系统衡量高并发常用的一些指标有:响应时间:系统对请求做出的响应时间吞吐量:单位时间内能处理的请求数量QPS:系统每秒能处理多少流量TPS:系统每秒处理多少事务(查询多少数据)并发用户数:同时能承载用户正常使用系统功能的用户数量提升硬件性能CPU 从 32 位提升为 64 位内存从 64GB 提升为 256GB(比如缓存服务器)磁盘从 HDD(Hard Disk Drive)提升为 SSD(固态硬盘(Solid原创 2021-09-27 00:36:07 · 700 阅读 · 0 评论 -
Java8新特性
笔记地址:https://blog.didispace.com/books/java8-tutorial/ch1.html视频讲解:https://www.bilibili.com/video/BV1T54y1q7W2Lambda与函数式接口接口中有默认方法实现Java 8 允许我们使用default关键字,为接口声明添加非抽象的方法实现。这个特性又被称为扩展方法。interface Formula { double calculate(int a); default double原创 2021-09-27 00:34:34 · 184 阅读 · 0 评论 -
Java定时任务解决方案
https://www.bilibili.com/video/BV1WL41147PJ从定时任务说起自然界中定时任务无处不在,太阳每天东升西落,候鸟的迁徙,树木的年轮,人们每天按时上班,每个月按时发工资、交房租,四季轮换,潮涨潮落,等等,从某种意义上说,都可以认为是定时任务。大概很少有人想过,这些“定时”是怎样做到的。当然,计算机领域的同学们可能对此比较熟悉,毕竟工作中的定时任务也是无处不在的:每天凌晨更新一波数据库,每天9点发一波邮件,每隔10秒钟抢一次火车票。。。至于怎么实现的?很简单啊,操作系原创 2021-09-26 21:46:09 · 1321 阅读 · 0 评论 -
Java监控工具——VisualVM
介绍VisualVM 是一款免费的,集成了多个 JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优。这些功能包括生成和分析海量数据、跟踪内存泄漏、监控垃圾回收器、执行内存和 CPU 分析,同时它还支持在 MBeans 上进行浏览和操作。本文主要介绍如何使用 VisualVM 进行性能分析及调优。下载地址:http://visualvm.github.io/download.html简单使用下载后打开bin目录下的文件运行一个程序可以查看堆Heap使原创 2021-09-15 04:08:05 · 229 阅读 · 0 评论 -
javac编译出现的编码错误: 编码GBK的不可映射字符
方法一:javac -encoding UTF-8 Stream.java方法二:利用代码编辑器对java文件进行转换编码格式存储,换成GBK编码存储方式存储即可原创 2021-09-15 03:56:47 · 208 阅读 · 0 评论 -
JDK中没有Servlet包的解决方法
原因javax属于Java EE的包,而我们平时下载的是Java SE解决办法进入Tomcat中lib文件夹,解压servlet-api.jar,然后把其中的文件夹javax拷贝至jdk\jre\lib\路径下进入javax所在目录,在命令行中输入命令:jar uvf rt.jar javax/servlet如果IDEA重启还没有相应类,就在Project Structure中勾选SDKS手动添加解压后的文件夹或者解压前的jar包...原创 2021-09-15 03:00:48 · 3914 阅读 · 0 评论 -
Java强制结束一个程序的运行
//0是正常退出,非0是不正常退出System.exit(1);原创 2021-09-15 00:39:57 · 2159 阅读 · 0 评论 -
使用mybatis-plus时mybatis报错There is no getter for property named ‘xxx‘ in ‘class com.xxx.xxx.xxxMybatis
今天给项目的数据字典查询添加通用方法,发现里边已经有了一个查询所有数据字典的方法List<Dict> selectDictList();但我想设置的方法是根据数据字典的code查询出所有数据字典,于是添加List<Dict> selectDictList(String code);在mapper.xml中也添加了查询语句,结果调试发现系统竟然调用了那个无参的查询方法。网上查询,才知道,Mybatis的Mapper接口方法不能重载!在不同namespace中可以有id一样原创 2021-09-10 09:55:30 · 816 阅读 · 0 评论 -
使用Unix时间戳作为MySQL主键工具类
主键最好不要使用字符串和UUID,尽量使用int或bigint,这是因为建立的索引需要有顺序,而综合性能比较好的就是B+Tree方式索引,下面写一个工具类,进行时间戳和Date类型转化public class TimeStampUtils{ static String format = "yyyy-MM-dd HH:mm:ss"; static SimpleDateFormat sdf = new SimpleDateFormat(format); /** * Unix原创 2021-09-08 04:27:40 · 389 阅读 · 0 评论 -
数据库文档自动生成工具
快要做数据库实习了,就想了解一下有没有数据库文档生成工具,可以将表结构导出,一查,诶,还真有,happy…导入依赖官网地址:https://gitee.com/leshalv/screw<dependency> <groupId>cn.smallbun.screw</groupId> <artifactId>screw-core</artifactId> <version>1.0.5</version原创 2021-09-03 16:52:22 · 1365 阅读 · 0 评论 -
启动redis设置访问需要秘密
方式一:临时配置方式一(这种密码配置方式是临时的,若Redis重启密码就会失效)1.首先进入redis,如果没有开启redis则需要先开启:redis-cli -p 63792.查看当前redis有没有设置密码:127.0.0.1:6379> config get requirepass1) "requirepass"2) ""3.若为以上显示则说明没有密码,那么现在来设置密码:127.0.0.1:6379> config set requirepass abcdefg原创 2021-09-03 14:59:03 · 469 阅读 · 0 评论 -
启动redis报错: Could not create server TCP listening socket 127.0.0.1:6379: bind: 操作成功完成
redis-cli.exeshutdownexitredis-server.exe redis.windows.conf原创 2021-09-03 14:21:28 · 2457 阅读 · 2 评论 -
Java 命名规范(沸点工作室Java组的都看过来)
简介在本文中,将从大到小,从外到内,总结Java编程中的命名规范。文中将会涉及到日常工作中常见的命名示例,如包命名,类命名,接口命名,方法命名,变量命名,常类命名,抽象类命名,异常类命名以及扩展类命名等。我将按照项目工程目录结构,从包,类(接口,抽象类,异常类),方法,变量和常量的顺序展开介绍。1. 包命名规范包(Package)的作用是将功能相似或相关的类或者接口进行分组管理,便于类的定位和查找,同时也可以使用包来避免类名的冲突和访问控制,使代码更容易维护。通常,包命使用小写英文字母进行命名,并使用原创 2021-08-28 17:24:49 · 1646 阅读 · 0 评论 -
lombok设置某个字段不生成执行方法
给字段加上类似@Setter(AccessLevel.NONE)的注解@Datapublic class PredicateBase <T>{ public String name; @Setter(AccessLevel.NONE) public List<T> args;}原创 2021-08-26 15:27:11 · 1921 阅读 · 0 评论 -
组合与聚合的区别
问题出发点合成复用原则是指,尽量先使用组合或者聚合等关联关系来实现,其次才考虑使用继承关系来实现。那什么是组合与聚合呢或者是组合与聚合有什么区别呢描述A类中包含B类的一个引用b,当A类的一个对象消亡时,b这个引用所指向的对象也同时消亡(没有任何一个引用指向它,成了垃圾对象),这种情况叫做组合,反之b所指向的对象可能还会有另外的引用指向它,这种情况叫聚合。组合方式代码一般会这样写:A类的构造方法里创建B类的对象,也就是说,当A类的一个对象产生时,B类的对象随之产生,当A类的这个对象消亡时,它所包含的原创 2021-08-15 22:35:27 · 222 阅读 · 0 评论 -
Java Web开发快速入门
下载并配置Tomcat服务器下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.44/bin/apache-tomcat-9.0.44-windows-x64.zip然后解压放在一个目录下,再集成到idea中:Run->Edit Configurations->Templates->Tomcat Server->Local然后点击Configure:选择Tomcat Home的路径:原创 2021-03-30 00:22:53 · 340 阅读 · 0 评论 -
Java消息提示框JOptionPane的使用方法
showMessageDialog只有一个确定按钮;JOptionPane.showMessageDialog(null,"普通提示框!","哈哈",JOptionPane.INFORMATION_MESSAGE);JOptionPane.showMessageDialog(null,"警告提示框!","哈哈",JOptionPane.WARNING_MESSAGE);JOptionPane.showMessageDialog(null,"错误提示框!","哈哈",JOptionPane..原创 2021-05-08 01:51:07 · 2232 阅读 · 2 评论 -
Java中int等值转为byte
可以先转为String,再转为byte,嘿嘿int num = 10;byte b = Byte.valueOf(String.valueOf(num));原创 2021-05-08 01:16:01 · 263 阅读 · 0 评论 -
Java录制音频、播放音频、保存音频
实现效果代码部分import java.awt.*;import javax.swing.*;import java.awt.event.*;import java.io.*;import javax.sound.sampled.*;public class MyRecord extends JFrame implements ActionListener { //定义录音格式 AudioFormat af = null; //定义目标数据行,可以从中读取音频数据原创 2021-03-30 12:20:39 · 2116 阅读 · 0 评论 -
idea集成tomcat报错:Application server libraries not found
原因和解决方式因为JDK版本和Tomcat版本不匹配,建议将Tomcat版本换成9下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.44/bin/apache-tomcat-9.0.44-windows-x64.zip官网对照图原创 2021-03-28 15:10:46 · 1309 阅读 · 0 评论 -
idea如何同时运行同一个文件
代码中右键设置,选择Edit xxxx.main()勾选Allow parallel run原创 2021-03-24 14:29:07 · 642 阅读 · 1 评论 -
Java中 boolean类型值到底占几个字节
前言是是非非,庸庸扰扰,今日上课记乱了int占的字节数,被全班嘲笑了,因此痛定思痛好好复习一下,其他的都是确定的,这也为可以执行提供了保障,唯独boolean不确定,这是为啥呢?我抱着谦卑的求知心态去网上学习了一下,目前有三种说法1个bit(1/8个字节)理由:boolean类型的值只有true和false两种逻辑值,在编译后会使用1和0来表示,这两个数在内存中按位算,仅需1位(bit)即可存储,位是计算机最小的存储单位。。1个字节理由:虽然编译后1和0只需占用1位空间,但计算机处理数据的最小单位原创 2021-03-02 10:25:35 · 690 阅读 · 0 评论 -
项目部署到服务器报错:java.sql.SQLException: Access denied for user ‘root‘@‘localhost‘
第一步:更改配置文件在连接数据库的时候将localhost换为服务器ip即可还不能解决查看用户名和密码时候正确在MySQL 5.66版本之后,mysql库中的user表的password字段替换为了authentication_string结果为MD5加密文本,可以来这个网址解密,类型选择mysql5:https://www.cmd5.com/default.aspx?hashtype=md5&answer=cWluZ21pbmcxMTI0MTUuuse mysql;select Us原创 2021-01-24 00:37:02 · 539 阅读 · 0 评论 -
一些实用的java代码
生成idpublic class KeyUtil { //生成唯一的主键,毫秒数加随机数 public static synchronized String genUniqueKey(){ Random random = new Random(); Integer number = random.nextInt(900000)+100000;//生成六位随机数 return System.currentTimeMillis() + Strin原创 2020-12-20 20:40:24 · 280 阅读 · 0 评论 -
Logback日志的使用
第一版本import org.junit.Test;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import org.springframework.boot.test.context.SpringBootTest;@SpringBootTestpublic class LoggerTest { private final Logger logger = LoggerFactory.getLogger(LoggerTe原创 2020-12-02 21:50:58 · 158 阅读 · 0 评论 -
Mybatis学习笔记
嗷嗷环境统一JDK1.8Mysql5.7maven3.6.1简介什么是mybatisMyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access原创 2020-11-03 17:24:25 · 125 阅读 · 0 评论 -
springboot获取URL请求参数的几种方法
https://www.cnblogs.com/xiaoxi/p/5695783.html1、直接把表单的参数写在Controller相应的方法的形参中,适用于get方式提交,不适用于post方式提交。/** * 1.直接把表单的参数写在Controller相应的方法的形参中 * @param username * @param password * @return */ @RequestMapping("/addUser1") pub原创 2020-11-03 17:23:44 · 3702 阅读 · 0 评论 -
Mybatis学习笔记(一)
嗷嗷环境统一JDK1.8Mysql5.7maven3.6.1简介什么是mybatisMyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access原创 2020-11-02 22:46:34 · 214 阅读 · 2 评论 -
java控制、监听鼠标键盘
控制键盘鼠标import java.awt.AWTException;import java.awt.Robot;import java.awt.event.KeyEvent;import java.io.IOException;public class ControlKeyboard { public static void main(String[] args) { try{ try {//创建Windows命令打开记事本原创 2020-09-28 09:21:24 · 2200 阅读 · 0 评论 -
how2j学习笔记(JAVA中级)
java中级技术原创 2020-08-27 10:04:59 · 2839 阅读 · 0 评论 -
how2j学习笔记(JAVA基础)
java基础笔记原创 2020-09-08 00:13:22 · 1991 阅读 · 0 评论