随笔分类 - Web
摘要:在Web页面的开发中,通常需要对css,js以及一些图片资源进行压缩后才能正式发布。 如果在项目中已经使用了打包框架,如:Webpack,vite,则直接使用相应的配置参数和命令即可实现,参考:前端打包工具介绍和对比。 而对于一些比较简单的web页面,比如:个人主页,实际上可以直接使用一些独立工具才
阅读全文
摘要:实现步骤 第一步:修改项目根目录下的_config.yml文件参数post_asset_folder值为true。 # 开始使用本地静态资源 post_asset_folder: true 第二步:安装插件hexo-asset-image。 # 在项目根目录下执行 npm install https
阅读全文
摘要:问题描述 在hexo框架中使用3-hexo主题时,会遇到这样一个问题:在markdown中嵌入html代码,这些嵌入的html代码无法正常显示。 原因分析 在使用3-hexo主题时,默认使用主题自带的渲染插件(会禁用highlight和prismjs),该插件会把这些嵌入的html代码进行渲染,所以
阅读全文
摘要:概述 为了增强邮件内容展示的样式,可以将普通的文本邮件转换为HTML内容格式。 在Java中,可以通过页面模板技术来实现。具体来说,可以使用Thymeleaf模板。 具体实现 首先,在项目中引入Thymeleaf依赖: <dependency> <groupId>org.thymeleaf</gro
阅读全文
摘要:关于静态博客 通常来讲,建立个人博客有2种方式: 第一,直接在第三方博客平台注册博客空间,如:博客园,简书,CSDN等,这种方式建立的博客,所有数据都存放在博客平台。 第二,自建博客系统,这种方式就是自己实现与博客平台相同的功能,需要涉及多个部分,如:购买云主机,注册域名,CDN,图床等。 自建博客
阅读全文
摘要:功能概述 主要实现的功能: 1.分页查询,避免一次性查询全部数据加载到内存引起频繁FULL GC甚至OOM 2.当数据量超过单个工作簿最大行数(1048575)时,自动将数据写入新的工作簿 3.支持百万级数据量导出 具体实现 第一,定义数据实体父类和分页对象。 // 数据实体父类 public ab
阅读全文
摘要:以Web方式下载数据有多种场景: 1.服务端本身已经存在文件,此时只需要一个文件访问地址即可下载,比如:将文件URL设置为<a>标签的href属性即可,点击<a>标签就能立即触发浏览器下载文件,此时无需单独设置下载提示信息。 2.下载的文件在服务端并不存在,而是需要查询数据库等才能获取,这种方式无法
阅读全文
摘要:网络上关于如何签发免费SSL证书的博文一大片,但是真正操作起来的能让新手不迷惑的却很少,很多操作步骤受限于国内无法访问外网的阻碍,导致无法真正实施成功。 实际上,关于申请免费SSL证书主要涉及两大部分: 第一,如何快速申请到一个免费的DV证书(通常免费的证书都是DV证书,DV证书对于个人或者测试用途
阅读全文
摘要:Tomcat,Jetty和Undertow是目前比较主流的3款Servlet容器,而且Spring Boot框架还提供了对它们的集成支持(默认使用的是Tomcat),网络上有许多文章都在介绍Undertow容器的性能比Tomcat和Jetty要好。本着事实就是的原则,我对这三款容器做了一个压测对比,
阅读全文
摘要:目录 "HTTP服务器" "反向代理服务器" "作为一个虚拟主机下多个应用的反向代理" "作为多个虚拟主机的反向代理" "负载均衡器" "简单轮训策略" "最小连接数策略" "客户端IP哈希策略" "服务器权重策略" "邮件代理服务器" 官网:https://nginx.org/ nginx是一个高
阅读全文
摘要:目录 通过包管理器安装 安装nginx 卸载nginx 从源码编译安装 准备安装环境 执行编译安装 制作nginx免安装包 官方安装手册:https://nginx.org/en/docs/install.html 针对不同的操作系统平台,nginx支持不同的安装方式,如:通过包管理器安装,从源码编
阅读全文
摘要:目录 "问题描述" "原因追踪" "解决办法" 问题描述 Spring Boot应用(使用默认的嵌入式Tomcat)在上传文件时,偶尔会出现上传失败的情况,后台报错日志信息如下:“The temporary upload location is not valid”。 原因追踪 这个问题的根本原因是
阅读全文
摘要:最近的一个项目采用前后端完全分离的架构,前端组件:vue + vue router + vuex + element ui + axios,后端组件:Spring Boot + MyBatis。之所以这样做是为了考虑后端水平扩容的便利性,在部署的时候完全可以将前后端彼此独立部署,前端部署可以直接使用
阅读全文
摘要:目录 目录 WebSocket协议是什么 WebSocket是应用层协议 WebSocket与Http的区别 为什么要使用WebSocket 如何使用WebSocket 客户端API 在客户端使用WebSocket 在服务端使用WebSocket 反向代理对WebSocket的支持 WebSocke
阅读全文
摘要:场景 1. 存在多个无状态的Web应用服务,支持多实例集群化部署(使用nginx作为反向代理) 2. 在Web应用中存在图片文件上传功能 3. 不能将图片文件直接保存到数据库中,数据库中只保存文件访问链接 问题 1. 因为Web应用服务是多实例集群化部署的,因此上传图片之后不能简单保存到本地,否则其
阅读全文
摘要:在Web开发中,对于处理表单重复提交是经常要面对的事情。那么,存在哪些场景会导致表单重复提交呢?表单重复提交会带来什么问题?有哪些方法可以避免表单重复提交? 表单重复提交的场景 1.场景一:服务端未能及时响应结果(网络延迟,并发排队等因素),导致前端页面没有及时刷新,用户有机会多次提交表单 2.场景
阅读全文
摘要:问题描述 前后端完全分离的项目,前端使用Vue + axios,后端使用SpringMVC,容器为Tomcat。 使用CORS协议解决跨域访问数据限制的问题,但是发现客户端的Ajax请求不会自动带上服务器返回的Cookie:JSESSIONID。 导致每一个Ajax请求在服务端看来都是一个新的请求,
阅读全文
摘要:起因 线上项目突然遭到大量的非法参数攻击,由于历史问题,之前的代码从未对请求参数进行校验。 导致大量请求落到了数据访问层,给应用服务器和数据库都带来了很大压力。 针对这个问题,只能对请求真正到Controller方法调用之前直接将非法参数请求拒绝掉,所以在Filter中对参数进行统一校验,非法参数直
阅读全文
摘要:起因 线上项目突然遭到大量的非法参数攻击,由于历史问题,之前的代码从未对请求参数进行校验。 导致大量请求落到了数据访问层,给应用服务器和数据库都带来了很大压力。 针对这个问题,只能对请求真正到Controller方法调用之前直接将非法参数请求拒绝掉,所以在Filter中对参数进行统一校验,非法参数直
阅读全文
摘要:WebSocket是在HTML5中引入的浏览器与服务端的通信协议,可以类比HTTP。 可以在支持HTML5的浏览器版本中使用WebSocket进行数据通信,常见的案例是使用WebSocket进行实时数据刷新。 关于WebSocket详细的功能性描述,详见:https://zh.wikipedia.o
阅读全文