随笔分类 -  Java学习笔记

摘要:1. 引入依赖 <!-- Druid --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> </dependency> 2. 配置 spring: # 数据 阅读全文
posted @ 2021-07-20 17:55 bGpi 阅读(810) 评论(0) 推荐(0)
摘要:介绍 在SpringBoot中,拦截器HandlerInterceptor 的功能跟过滤器类似,但是提供更精细的的控制能力:在request被响应之前、request被响应之后、视图渲染之前以及request全部结束之后。我们不能通过拦截器修改request内容,但是可以通过抛出异常(或者返回fal 阅读全文
posted @ 2021-06-25 23:03 bGpi 阅读(405) 评论(0) 推荐(0)
摘要:作用 在SpringBoot中,当需要获取到配置文件数据时,除了可以用Spring自带的@Value注解外,SpringBoot提供了一种更加方便的方式:@ConfigurationProperties。只要在bean上添加上这个注解,指定好配置文件的前缀,那么对应的配置文件数据就会自动填充到bea 阅读全文
posted @ 2021-06-23 23:39 bGpi 阅读(1293) 评论(0) 推荐(0)
摘要:一、创建异步对象 CompletableFuture提供了四个静态方法来创建一个异步操作。 //使用默认的线程池来回调 public static CompletableFuture<Void> runAsync(Runnable runnable) {...} //该方法指定自定义的线程池exec 阅读全文
posted @ 2021-06-22 22:28 bGpi 阅读(105) 评论(0) 推荐(0)
摘要:Java中的Class ThreadPoolExecutor public class ThreadPoolExecutor extends AbstractExecutorService 该类是线程池的核心类,使用线程池时就是实例化该类的过程,这个类提供了4个构造方法: //创建一个新的 Thre 阅读全文
posted @ 2021-06-20 18:33 bGpi 阅读(233) 评论(0) 推荐(0)
摘要:背景 最近在做项目架构重构的工作,主要是将之前的php框架迁移到java框架里来,需要对之前的接口做兼容,因为之前接口访问对参数做了编码,需要在网关中做统一处理,且对于所有访问的请求做日志记录,解决方案就用到写全局过滤器的方式来处理。其中对于请求数据的流需要多次获取并修改,但是SpringBoot版 阅读全文
posted @ 2021-06-19 23:02 bGpi 阅读(511) 评论(0) 推荐(0)
摘要:背景 在项目开发中,经常会遇到需要存储不定长的对象数组,如上传一组图片、添加一道题目等等,这个时候在数据库中存储一般需要用到存储长度较大的blob类型,在java的实体类中对应blob类型的是byte数组。 思路 为了存储的数据格式兼容性更高,我采用的是借助json的方式来处理,即存储前,我将对象整 阅读全文
posted @ 2021-06-17 23:49 bGpi 阅读(3748) 评论(0) 推荐(0)
摘要:背景 SpringBoot中设置跨域的方式也有很多,常见的可以参考网上设置的方式。我在实际开发中,需要用到gateway的全局过滤器做参数处理,遇到了跨域失败的情况,因为我使用的是gateway做网关处理,所有的请求都会经过gateway进行分发,因此我直接单独在gateway的配置文件中进行的跨域 阅读全文
posted @ 2021-06-17 23:05 bGpi 阅读(1394) 评论(0) 推荐(0)
摘要:缓存使用 为了系统性能的提升,我们一般都会将部分数据放入缓存中,加速访问。而DB承担数据落盘工作。 哪些数据适合放入缓存? 即时性、数据一致性要求不高的 访问量大且更新频率不高的数据(读多、写少) 整合redis 1. 引入redis依赖 <dependency> <groupId>org.spri 阅读全文
posted @ 2021-05-05 23:02 bGpi 阅读(1585) 评论(0) 推荐(0)
摘要:性能指标 1、响应时间(Response Time:RT) 响应时间指用户从客户端发起一个请求开始,倒客户端接收倒从服务器端返回的响应结束,整个过程所耗费的时间。 2、HPS(Hits per Second) 每秒点击次数,单位是次/秒。 3、TPS(Transaction per Second) 阅读全文
posted @ 2021-05-05 15:08 bGpi 阅读(436) 评论(0) 推荐(0)
摘要:关于跨域请求的详细介绍,请看官方文档 跨域访问流程 对于非简单请求,需要先发送预检请求,请求的流程为: 浏览器先发送一个OPTIONS预见请求给服务器 服务器检查请求过来携带域名是否允许跨域,如果允许则会相应允许跨域 浏览器接收到允许跨域的相应后才会真正发送真实的请求 服务器对真正的请求进行响应 解 阅读全文
posted @ 2021-03-22 00:19 bGpi 阅读(872) 评论(0) 推荐(0)
摘要:简单介绍 JSR-303 是JAVA EE 6 中的一项子规范,叫做Bean Validation,Hibernate Validator 是 Bean Validation 的参考实现 . Hibernate Validator 提供了 JSR 303 规范中所有内置 constraint 的实现 阅读全文
posted @ 2021-03-21 22:42 bGpi 阅读(43) 评论(0) 推荐(0)
摘要:实现文件上传,我比较常用的有两种方式,一种是应用服务器直传,另一种是服务端签名后直传。下面以上传到阿里云服务器为例分别介绍两种操作的细节。 应用服务器直传 流程 如图所示,用户访问我们的网站或应用,将文件上传到我们的应用服务器,然后再由应用服务器将文件转发到阿里云服务器,获取到相应的文件链接,然后再 阅读全文
posted @ 2021-03-21 22:40 bGpi 阅读(174) 评论(0) 推荐(0)
摘要:背景 对于目录结构的存储,数据库里一般用一张表中的关联id(如父节点的id)来表示关系,如下即为一个目录表的表结构: CREATE TABLE `pms_category` ( `cat_id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '分类id', ` 阅读全文
posted @ 2021-03-15 23:52 bGpi 阅读(303) 评论(0) 推荐(0)
摘要:1. JVM的体系结构 其中栈区由于函数返回后就会出栈,因此不会存在垃圾回收。垃圾回收主要针对的是堆区的回收。 JNI:Java Native Interface,通过使用Java本地接口书写程序,可以确保代码在不同的平台上方便移植。 2. 类加载器 类的生命周期 类的加载过程详细参考Class文件 阅读全文
posted @ 2021-03-02 00:35 bGpi 阅读(67) 评论(0) 推荐(0)
摘要:栈 栈区主要存放的是临时变量、对象和数组的引用(即地址)。当定义一个变量时,java就在这个栈中为变量分配内存空间,当一段代码或者一个方法调用完毕后,栈中为这段代码所提供的基本数据类型或者对象的引用立即被释放; 堆 堆区主要存放的是new出来的对象和数组,以及类中非静态成员变量。当我们new一个对象 阅读全文
posted @ 2021-02-25 22:25 bGpi 阅读(389) 评论(0) 推荐(0)
摘要:一 背景 这是一道经典面试题,我在面试别人的时候也常拿这道题来考察面试者的知识面,无论是做前端还是后端,这都是必须掌握的一个过程。现在性能优秀的网站已经能做到毫秒级别的响应速度了,但就是在这样极短的时间内,浏览器和服务端已经进行了多次的交互了,而其中的技术涉及面是非常广的。本人就此过程涉及到的主要环 阅读全文
posted @ 2021-02-23 23:19 bGpi 阅读(1355) 评论(0) 推荐(0)
摘要:安装步骤 官网下载最新版压缩包 解压后放到电脑的软件安装路径下 进入tomcat的bin目录下,找到startup.bat文件双击运行即可 此时tomcat服务器就已经启动完成了,在浏览器中输入:http://localhost:8080即可进入tomcat默认的初始页面了。 注意点: tomcat 阅读全文
posted @ 2021-02-18 16:19 bGpi 阅读(65) 评论(0) 推荐(0)
摘要:网络编程的要素 IP和端口号 网络通信协议 TCP 客户端 连接服务器socket 发送消息 public static void main(String[] args) throws IOException { //创建一个socket连接 Socket socket = new Socket(I 阅读全文
posted @ 2021-02-17 18:20 bGpi 阅读(36) 评论(0) 推荐(0)
摘要:注解 什么是注解 Annotation是从JDK5.0开始引入的新技术 Annotation的作用: 不是程序本身,可以对程序作出解释 可以被其他程序(如编译器等)读取 Annotation的格式: 注解是以”@注释名“在代码中存在的,还可以添加一些参数值. Annotation在哪里使用 可以附加 阅读全文
posted @ 2021-02-16 20:58 bGpi 阅读(53) 评论(0) 推荐(0)