获取Springboot 项目中resource目录中的文件
工具类代码如下1234567891011121314151617181920212223242526272829public File readFile(String filename) { try { // 获取资源文件的输入流 URL resourceUrl = ResourceReader.class.getResource(filename); if (resourceUrl == null) { throw new RuntimeException("resourceUrl is null"); } // 将资源文件内容读取到临时文件 return createTempFileFromResource(resourceUrl); } catch (IOException e) { log.error("读取资源文件出错", e); ...
Java获取所有类的class对象
Java获取所有类的class对象今天需求需要获取到项目里所有所有类的class对象,查阅了一番资料后写了一个工具类,如下。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161package com.xiaoyun.utils;import com.xiaoyun.annotation.Quart ...
CSS的编写位置
行内样式
写在标签的style属性中。行内样式又称内联样式
1<h1 style="color: red;font-size: 90px">你好呀,小云</h1>
注意点:
行内样式只能作用于当前标签,其他标签不生效
style属性的值不能随便写,要遵循CSS的语法规范,是键:值对的格式
存在的问题
编写繁琐,不易维护,CSS代码难以复用
没有体现样式与结构分离的思想。仅在给元素添加简单样式的时候使用
内部样式
写在style标签中,style标签可以放在html文件中的任何位置,但是一般放在head标签中
12345678910111213141516<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>位置2_内部样式</title> <style> h1 { c ...
springboot JSON格式化配置
Spring boot json序列化的配置先贴配置这段配置配置了Long类型和时间类型的序列化配置
123456789101112131415161718192021/** * 自定义json序列化 */@Beanpublic Jackson2ObjectMapperBuilderCustomizer customizer() { return builder -> builder.simpleDateFormat("yyyy-MM-dd HH:mm:ss") // long类型转string, 前端处理Long类型,数值过大会丢失精度 .serializerByType(Long.class, ToStringSerializer.instance) .serializerByType(Long.TYPE, ToStringSerializer.instance) .s ...
org.redisson.client.redisexception: err unknown command PEXPIRETIME问题处理
org.redisson.client.redisexception: err unknown command PEXPIRETIME问题处理在获取redis中key的过期时间时,发现并没有如期获取到过期时间,程序抛出了如下的异常
123456789101112131415161718192021222324org.redisson.client.RedisException: ERR unknown command 'PEXPIRETIME'. channel: [id: 0x08706bdb, L:/127.0.0.1:64540 - R:127.0.0.1/127.0.0.1:6379] command: (PEXPIRETIME), promise: java.util.concurrent.CompletableFuture@70c7b9a[Not completed, 1 dependents], params: [sys:token:1848366052968607746] at org.redisson.client.handler.CommandD ...
notify死锁代码示例
notify死锁代码示例今天看到一个问题,说使用lock.notify方法有可能会导致死锁问题。
问题是由于notify是随机唤醒一个线程,有可能唤醒的线程是一个错误的线程(指不是期望唤醒的线程),线程仍然无法正常结束。
使用notify唤醒的是所有的线程,可以避免这个问题
代码示例如下1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556public class Main { static Object lock = new Object();// 锁对象 static Boolean flag1 = false;// 条件1 static Boolean flag2 = false;// 条件2 public static void main(String[] args) throws InterruptedException { // 线程1 Thread t ...
SpringCloud学习笔记
SpringCloud1.认识微服务随着互联网行业的发展,对服务的要求也越来越高,服务架构也从单体架构逐渐演变为现在流行的微服务架构。这些架构之间有怎样的差别呢?
1.0.学习目标了解微服务架构的优缺点
1.1.单体架构单体架构:将业务的所有功能集中在一个项目中开发,打成一个包部署。
单体架构的优缺点如下:
优点:
架构简单
部署成本低
缺点:
耦合度高(维护困难、升级困难)
1.2.分布式架构分布式架构:根据业务功能对系统做拆分,每个业务功能模块作为独立项目开发,称为一个服务。
分布式架构的优缺点:
优点:
降低服务耦合
有利于服务升级和拓展
缺点:
服务调用关系错综复杂
分布式架构虽然降低了服务耦合,但是服务拆分时也有很多问题需要思考:
服务拆分的粒度如何界定?
服务之间如何调用?
服务的调用关系如何管理?
人们需要制定一套行之有效的标准来约束分布式架构。
1.3.微服务微服务的架构特征:
单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力,做到单一职责
自治:团队独立、技术独立、数据独立,独立部署和交付
面向服务:服务提供统一标准的接口,与语言 ...
webpack
webpack
本质上,webpack是一个用于现代 JavaScript 应用程序的 静态模块打包工具。当webpack处理应用程序时,它会在内部从一个或多个入口点构建一个依赖图(dependency graph),然后将你项目中所需的每一个模块组合成一个或多个 bundles,它们均为静态资源,用于展示你的内容。
静态模块:指的是编写代码过程中的,html,css,js,图片等固定内容的文件
为什么要使用webpack开发时,我们会使用框架(React、Vue),ES6模块化语法,Less/sass 等 css 预处理器等语法进行开发。这样的代码要想在浏览器运行必须经过编译成浏览器能识别的JS、Css 等语法,才能运行。所以我们需要打包工具帮我们做完这些事。除此之外,打包工具还能压缩代码、做兼容性处理、提升代码性能等。
使用webpack资源目录123456webpack_code # 项目根目录(所有指令必须在这个目录运行) └── src # 项目源码目录 ├── js # js文件目录 │ ├── count.js ...
node.js
Node.js
Node.js是一个跨平台的JavaScript运行环境,是开发者可以开发服务端的JavaScript应用程序
Node.js为何能执行JS?
浏览器能运行js代码,依靠的是内核中的V8引擎
Node.js是基于Chrome V8引擎进行封装
都支持ECMAScript标准语法,Node.js有独立的API
Node.js没有Dom和Bom对象
node.js的注意事项。不能够使用bom和dom的API。但是可以使用console和定时器的API。
node.js有一个顶级对象:global。再node2020中引入了globalthis,他指向global对象。
buffer
buffer是一个类似于数组的对象,用于表示固定长度的字节序列
本质是一段内存空间,用来处理二进制。
特点
Buffer大小固定且无法调整
Buffer性能较好,直接对计算机内存进行操作
每一个元素的大小为一字节
使用
创建Buffer
123456789101112// 使用Buffer.alloc()函数var buffer = Buffer.alloc(10)console.lo ...