java
文章平均质量分 62
Jay_Chou345
本科23届软件工程
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Spring Security是如何储存认证用户信息的
Spring Security是如何储存认证用户信息的原创 2023-03-18 18:31:14 · 2890 阅读 · 1 评论 -
分库分表与sharding-jdbc
分库分表与sharding-jdbc原创 2022-09-02 00:37:33 · 1962 阅读 · 1 评论 -
简单谈谈Feign
本文只是简单粗略的分析一下feign的过程原理原创 2022-07-23 18:17:44 · 4400 阅读 · 1 评论 -
【Java】几个实用的工具类
分享几个实用的工具类MyBatis-Plus分页查询工具类ThreadLocal工具类时间日期处理工具类servlet请求工具类Base64加密解密工具类获取IP工具类原创 2022-07-22 00:16:00 · 618 阅读 · 0 评论 -
【复习】Java中常见的几种队列
本文不讲具体结构,只粗略讲解如何使用经常看看、防止遗忘原创 2022-06-20 17:28:57 · 512 阅读 · 0 评论 -
Spring循环依赖难道只能通过两个Setter注入解决嘛?
Spring循环依赖难道只能通过两个Setter注入解决嘛?先说结论:如果存在循环依赖的对象关系的话,位置靠上的类会先进行生命周期的加载所以位置靠上的类必须通过set注入其他属性,这样才不会导致循环依赖的报错前言其实想到这个问题是由于网上给出的结论是于是我便好奇了起来:为什么同样是一个通过Setter注入、一个通过构造器注入,会有两种不同的结果呢?Setter注入与构造器注入首先我们先明确哪种是setter注入,哪种是构造器注入//setter注入@Autowiredprivate原创 2022-02-24 19:29:36 · 1213 阅读 · 0 评论 -
mybatis的延迟加载机制
mybatis的延迟加载机制延迟加载的含义: 用到的时候才会去进行相关操作Mybatis支持association关联对象和collection关联集合对象的延迟加载区别:association使用场景是一对一的关联查询,collection是一对多的关联查询它的原理是使用CGLIB动态代理创建目标对象的代理对象,当调用目标方法时,进入拦截器方法查看是否有值比如调用user.getAccount(),拦截器invoke()方法发现user.getAccount()是null值,那么就会单独发送原创 2022-01-17 22:51:48 · 780 阅读 · 0 评论 -
简单谈谈动态代理
简单谈谈动态代理文章目录简单谈谈动态代理什么是代理模式?有哪些代理模式各代理模式的实现前置场景说明问题提出静态代理泛型静态代理新的问题动态代理具体步骤创建代理类Proxy.newProxyInstance动态代理工厂什么是代理模式?为其他对象提供一个代理以控制对某个对象的访问。代理模式是常用的java设计模式,他的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个代理类的对象与一个委托类的原创 2022-01-17 20:22:14 · 680 阅读 · 0 评论 -
如何让SpringBoot项目启动时执行特定代码
如何让SpringBoot项目启动时执行特定代码文章目录如何让SpringBoot项目启动时执行特定代码前言两个函数接口1.ApplicationRunner接口源码使用方法2.CommandLineRunner接口源码使用方法为什么会被执行?两个接口谁先执行?为什么?举个栗子结果简单源码分析前言(其实直接在main方法里写也不是执行不了)如果只是简单的一些语句,写在main中可能会方便一些但如果需要调用spring容器中的对象可能会要吃瘪,因为main方法是static的,而获取ioc对象不能使原创 2022-01-07 15:20:46 · 1177 阅读 · 0 评论 -
简单谈谈BitMap
简单谈谈BitMap前言对比——bitmap的使用与否在咱们之前的储存结构里,需要O(1)复杂度进行查找时,我们一般习惯于用HashMap或者HashSet如果我们想要储存一个int类型的数据,那么一个数据需要占据4个字节若是想存储一个long类型的数据,那么一个数据需要占据8个字节当数据非常大时,使用HashMap的情况下,内存可能撑不住假设当有10亿个long类型的数据需要去重或者查询某个数据是否在其中时这些数据一共需要 1000000000*8 个字节的数据,也就是**7629MB**原创 2021-12-24 16:56:35 · 1405 阅读 · 1 评论 -
SpringCloud-Alibaba笔记
SpringCloud-Alibaba笔记文章目录SpringCloud-Alibaba笔记前言版本选用主要功能组件如何构建如何使用:引入依赖版本管理规范Nacos服务注册与配置中心nacos和eureka的区别下载安装nacos之服务提供者注册配置9001子模块,注册到nacos配置9002子模块nacos消费者注册和负载均衡配置83子模块、注册和测试负载均衡nacos配置中心之基础配置配置3377配置中心nacos中dataId的匹配规则在nacos界面添加配置测试配置中心及其动态刷新nacos配置中原创 2021-12-08 00:48:00 · 2371 阅读 · 0 评论 -
简单谈谈Juc并发编程
Juc笔记前言本课程学习与B站狂神说Java的JUC并发编程本课程的代码都放在了我的个人gitee仓库上了什么是JUC?java.util.concurrent jucjava.util.concurrent.atomic 原子性java.util.concurrent.locks 锁平时业务中可能用Thread或者像Runnable接口实现,没有返回值,而且效率相对于callable较低java.util.concurrent原创 2021-11-09 19:25:23 · 835 阅读 · 0 评论 -
简单谈谈ConcurrentHashMap
简单谈谈ConcurrentHashMap前言本文学习与B站ConcurrentHashMap底层原理剖析本文只简单讲解ConcurrentHashMap的一些面试题,用于理解ConcurrentHashMap,并不会特别深入如果对于HashMap不熟悉的读者,在阅读本文前可以先阅读我的另一篇博客《简单谈谈HashMap》ConcurrentHashMap的实现原理是什么?jdk7原理JDK7中的ConcurrentHashMap由Segment和HashEntry组成,即Concurren原创 2021-11-05 20:42:02 · 616 阅读 · 0 评论 -
简单谈谈HashMap
简单谈谈HashMap文章目录简单谈谈HashMap前言hash算法常用的哈希算法hashmap的数据结构jdk1.7和jdk1.8的区别简单讲解过程1.8之后为什么要引入红黑树?什么时候扩容?扩容源码高频集合扩容的信息什么时候转红黑树?HashMap 中 hash 函数是怎么实现的?还有哪些hash函数的实现方式?当两个对象的 hashCode 相等时会怎么样?什么是哈希碰撞,如何解决哈希碰撞?如果两个键的 hashCode 相同,如何存储键值对?HashMap集合类的成员1.序列化版本号2.集合的初始原创 2021-10-31 15:08:38 · 2496 阅读 · 4 评论 -
RocketMQ学习笔记
RocketMQ学习笔记前言以下前言的几个问题选自博主割肉机的博文:一个用消息队列 的人,不知道为啥用 MQ,这就有点尴尬本文学习参考自B站尚硅谷的【尚硅谷】2021新版RocketMQ教程丨深度掌握MQ消息中间件为什么要使用消息队列?解耦传统模式的缺点:系统间耦合性太强,如上图所示,系统A在代码中直接调用系统B和系统C的代码,如果将来D系统接入,系统A还需要修改代码,过于麻烦!中间件模式的优点:将消息写入消息队列,需要消息的系统自己从消息队列中订阅,从而系统A不需要做任何修改原创 2021-10-25 23:40:21 · 7019 阅读 · 0 评论 -
ElasticSearch笔记
ElasticSearch笔记文章目录ElasticSearch笔记前言下载地址本教程讲解什么ES的概述ES的安装es的启动es-head插件是什么下载安装kibana安装ES的核心概念IK分词器插件添加IK分词器自定义字典REST风格es的基础使用新版方法表格基础测试创建索引并插入文档数据创建指定类型的索引获取信息删除复杂一点的查询单条件带参查询结果过滤结果排序分页查询多条件查询精确查询结果高亮springboot集成es导入依赖创建springboot项目注入RestHighLevelClient到s原创 2021-10-14 22:28:00 · 497 阅读 · 0 评论 -
单例模式笔记
单例模式前言单例模式是指:确保一个类在任何情况下都绝对只有一个实例,隐藏其构造的方法,并提供一个全局访问点例如ServletContext、ServletConfig、ApplicationContext、DBPool你能记起多少单例?饿汉式,饱汉式,双重检查式,静态内部类式饿汉式缺点:当需要加载的单例对象数量过多时,会造成内存浪费==注:==如果是变成static代码块去new也是没有本质区别的——因为都是一开始就初始化了,不过至少可以放上对应的初始化的操作,还是比原生的要好一点点的/*原创 2021-09-20 21:32:19 · 242 阅读 · 0 评论 -
Stack类、Queue类和Deque类常用方法(防止忘记)
Stack类栈(Stack)是一种后进先出(LIFO)的数据结构,操作栈的元素的方法有:把元素压栈:push(E)把栈顶的元素“弹出”:pop(E)取栈顶元素但不弹出:peek(E)在Java中,我们用Deque可以实现Stack的功能最后,不要使用遗留类StackQueue类在Java的标准库中,队列接口Queue定义了以下几个方法:int size():获取队列长度;boolean add(E) / boolean offer(E):添加元素到队尾;E remove() / E p原创 2021-09-12 15:40:10 · 350 阅读 · 0 评论 -
SpringCloud-Netflix笔记
SpringCloud笔记文章目录SpringCloud笔记前言微服务概述springcloud概述版本对比快速开始Eureka服务注册与发现什么是EurekaEureka的基本结构起步自我保护机制注册服务访问所有/单个微服务的信息集群环境搭建CAP原则及对比Zookeeper取舍策略Eureka比Zookeeper好在哪json被解析成了xml?Ribbon:负载均衡及Ribbon什么是RibbonRibbon能干嘛使用Ribbon实现轮询负载均衡自定义Ribbon负载均衡算法Feign负载均衡什么是F原创 2021-08-31 14:10:01 · 1294 阅读 · 0 评论 -
子模块pom依赖无法导入
子模块pom依赖无法导入发现问题今天遇见一个问题,子模块创建后,复制pom依赖,但是在project structure中查看lib库中无内容,证明依赖没有正确导入,但是图片显示已经导入并且与父工程绑定了解决办法左上角File=>Setting,搜素输入Ignored Files可以看见子模块的pom依赖左边被打勾了,也就是被Maven忽略了,自然也就无法导入了,取消勾选再将pom的依赖剪切,重新粘贴,就会自动导入了...原创 2021-08-25 14:52:24 · 2212 阅读 · 1 评论 -
idea的代码突然消失了怎么复原
idea的代码突然消失了怎么复原如果代码丢失,或者移动了,想在idea中复原之前的代码的话,idea有一个local history功能可以进行撤销操作与复原右键文件夹,选择local history,再show history接下来找到代码消失的记录,点击左上角撤销原操作即可复原...原创 2021-08-24 12:27:37 · 16647 阅读 · 3 评论 -
linux后台运行springboot项目
linux后台运行springboot项目直接运行关闭连接会失效java -jar xxxxx-0.0.1-SNAPSHOT.jarctrl+c 可以直接关闭进程后台运行nohup java -jar xxxxx-0.0.1-SNAPSHOT.jar可以直接进行IP端口进行访问也可以使用命令进行查看是否项目已经后台运行。进程查看的命令:ps -ef可以看到项目的进程号13803正在运行。如果需要停止项目的运行直接使用命令:kill 13803(进程号)...原创 2021-05-24 19:20:22 · 326 阅读 · 0 评论 -
ubuntu使用root用户下载安装jdk和文件上传失败问题
ubuntu下载安装jdk和文件上传失败问题文章目录ubuntu下载安装jdk和文件上传失败问题1.使用root用户1.1 给root用户设置密码:1.2 切换root权限2.下载安装jdk3.配置jdk环境变量3.1 修改 environment 文件3.2 修改 profile 文件3.3 配置立即生效3.4 检查Java命令4.文件上传失败1.使用root用户1.1 给root用户设置密码:命令:sudo passwd root输入密码,并确认密码。1.2 切换root权限输入命令原创 2021-05-24 18:12:24 · 1278 阅读 · 0 评论 -
mybatis带上总数量的分页查询
mybatis带上总数量的分页查询假设数据库我用limit去查询,但是想要获取实体类和表中的总数量时,可以用到此方法直接上代码举例Mapper层/*** list.get(0)是具体数据(这个数据也可以是一个List)* list.get(1)是表中的总数量*/List<Object> selectUserByUserId(Integer userId);xml层 <!-- 总数量 --> <resultMap type="java.lang.Int原创 2021-04-13 15:50:10 · 1808 阅读 · 0 评论 -
简单的线程池实现
简单的线程池实现直接上代码import java.util.ArrayList;import java.util.List;import java.util.Queue;import java.util.concurrent.LinkedBlockingQueue;/** * @author if * Description: 简单线程池实现 * date: 2021/4/12 20:07 */public class ThreadPoolImpl{ //使用锁机制保证数据安原创 2021-04-12 21:08:08 · 195 阅读 · 0 评论 -
@JsonIgnore注解后的对象属性无法获取
@JsonIgnore注解后的属性出错之前发了这样一篇文章在经过测试之后确实在json返回时会忽略@JsonIgnore注解的属性,但是在调用带有此注解属性的实体类对象的方法时发现被注释掉的属性值无法获取!具体体现在String类型的数据变为null,int类型的数据变为0所以在网上找了许多方法后终于找到了以下解决方法,既可以保证json返回时会忽略属性,且使用实体类对象的时候属性还是完整的即在实体类中手动去生成get和set方法(lombok自动生成的不行),然后在set方法上加@JsonP原创 2021-03-11 13:32:46 · 830 阅读 · 2 评论 -
java基本数据类型范围和溢出取值问题
java基本数据类型范围byte:-27 ~ 27-1,即-128 ~ 127。1字节short:-215 ~ 215-1,即-32768 ~ 32767。2字节有符号int:-231 ~ 231-1,即-2147483648 ~ 2147483647。4字节无符号int:0~232-1。long:-263 ~ 263-1,即-9223372036854775808 ~ 9223372036854775807。8字节溢出取值问题以byte类型为例,当byte b=(byte)128; 时,by原创 2021-02-18 17:21:27 · 499 阅读 · 0 评论 -
list序列化为string存入数据库
list序列化为string存入数据库因为数据库里字段和java的string是对应的,我们想要存储list的时候就可以使用json序列化,将list序列化后存入数据库,取出时json解析出来还是list直接上代码存入数据库时//list就是想要序列化的listJSONObject.toJSONString(list);源代码如下,返回一个string类型的值,将此值传入数据库即可public static final String toJSONString(Object object) {原创 2021-02-14 22:57:31 · 6688 阅读 · 3 评论 -
@JsonIgnore注解:json返回实体类时忽略某些属性
@JsonIgnore注解:json返回实体类时忽略某些属性在返回实体类json数据时不想将一些用户属性返回怎么办(例如储存在数据库中的salt值等)解决办法给实体类的属性上添加@JsonIgnore注解即可代码示例import com.fasterxml.jackson.annotation.JsonIgnore;public class User { @JsonIgnore private int userId; private String username;原创 2021-02-14 17:52:30 · 1207 阅读 · 0 评论 -
java.sql.SQLDataException: Cannot determine value type from string ‘xxxxx‘
mybatis报错java.sql.SQLDataException: Cannot determine value type from string ‘xxxxx’解决方法:实体类中再添加一个无参构造器即可解决原创 2021-02-14 17:46:00 · 875 阅读 · 1 评论 -
SpringBoot的全局异常处理
SpringBoot的全局异常处理文章目录SpringBoot的全局异常处理注解@ControllerAdvice注解@ExceptionHandler具体操作1.创建MyExceptionHandler类2.Controller类编写测试接口代码3.测试4.总结注解@ControllerAdvice使用 @ControllerAdvice注解类放在项目中,Spring能扫描到的地方。就可以实现全局异常的处理注解@ExceptionHandler捕获到异常后会进入此注解的方法中去执行具体的代码(比原创 2021-02-13 18:58:26 · 1654 阅读 · 2 评论 -
shiro的认证和授权
shiro的认证和授权文章目录shiro的认证和授权导依赖shiro中的md5加盐散列shiro的简单认证练习自定义realm类自定义realm实现shiro的认证和授权结果导依赖<dependency> <groupId>org.apache.shiro</groupId> <artifactId>shiro-spring</artifactId> <version>1.4.0</version&g原创 2021-02-09 01:38:23 · 495 阅读 · 1 评论 -
jedis连接池的使用和一个小案例
jedis线程池的使用和一个小案例jedis的使用使用的maven项目,先导入依赖 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency>原创 2021-01-28 15:52:35 · 373 阅读 · 1 评论 -
超详细配置maven
超详细配置maven去官网先下载好mavenhttp://maven.apache.org/安装maven配置环境变量配好了以后按确定,按win+R打开运行,输入cmd回车,输入mvn --version回车查看是否是版本输出,若和下图箭头位置内容相似则配置完毕修改setting.xml在安装路径的conf文件夹里找到setting.xml,右键编辑找到localRepository语句,复制以下内容进行粘贴<localRepository>maven安装路径/re原创 2021-01-20 18:32:17 · 500 阅读 · 0 评论 -
超详细配置jdk环境变量
配置jdk环境变量1.右键此电脑,点击属性1.1如果没有此电脑图标怎么办?点击菜单栏的“放大镜”,输入此电脑,点击属性2.点击高级系统设置3.点击环境变量4.点击下面的系统变量的新建变量名是JAVA_HOME,变量值是jdk的安装目录(每个人的安装目录都不一样的)5.设置Path环境变量该变量已经存在,所以在列表中选择Path,点击下方的“编辑”按钮,在弹出的窗口中点击新建复制%JAVA_HOME%\bin,粘贴复制%JAVA_HOME%\jre\bin,粘贴然后点击“确原创 2021-01-17 00:04:49 · 758 阅读 · 3 评论 -
java二进制与十进制互相转换,字符串和整型互相转换
java二进制与十进制互相转换,字符串和整型互相转换直接上代码 /** * 二进制转十进制方式 * Integer.parseInt返回值类型是int * public static int parseInt(String s, int radix) */ System.out.println("二进制1001转十进制->"+Integer.parseInt("1001", 2));原创 2021-01-13 00:27:58 · 975 阅读 · 0 评论 -
Eclipse配置tomcat和web项目的创建
Eclipse配置tomcat1.添加Tomcat安装目录windows->Preferences,搜索框输入Runtime Environments,点击右边的add点击对应的tomcat然后next配置好自己tomcat路径,点击“Finish”,配置完毕显示tomcat在界面上,Window → Show View → Servers,然后点击下面的链接然后next和finish就行(有web项目的话可以添加web项目)然后面板上就可以看见serve服务了...原创 2020-12-22 22:11:11 · 716 阅读 · 0 评论 -
Eclipse的下载和环境配置
Eclipse的下载和环境配置前言由于我们学校教学的java web方向,所以本博客指导java web版的eclipse的安装eclipse的下载安装进入eclipse首页eclipse官网点击这个链接因为直接下载会很慢(国外站点很慢),所以需要点击这个访问镜像并选择中科大镜像下载下载好了直接解压文件夹,并运行eclipse.exe文件5.自定义好一个工作空间(个人建议放在eclipse同目录的文件夹底下),这个工作空间就是java项目放的位置eclipse的原创 2020-12-22 21:59:43 · 641 阅读 · 0 评论 -
Java反射
Java高级之反射定义JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。反射应该是 JVM读取相应类的字节码文件,而不是.java性能问题反射的性能很慢,和直接调用方法相比慢了30倍如果关闭安全检查(setAccessible(true))也会慢5倍左右简单地说Java 反射,就是在运行状态中。获取任意类的名称、package信息、所有属性原创 2020-12-05 00:53:19 · 424 阅读 · 0 评论 -
springboot部署SSL证书及http重定向到https
springboot部署SSL证书及http重定向到https部署SSL证书application.properties中的代码#443是https的端口server.port=443#部署SSL证书http.port=80server.ssl.key-store=classpath:SSL证书的名字server.ssl.key-store-password=SSL证书的密码server.ssl.key-store-type=PKCS12server.ssl.enabled=true原创 2020-12-03 12:54:51 · 734 阅读 · 0 评论
分享