1.减少HTTP请求一个完整的 HTTP 请求需要经历 DNS 查找,TCP 握手,浏览器发出 HTTP 请求,服务器接收请求,服务器处理请求并发回响应,浏览器接收响应等过程。建立连接和下载数据都需要时间,应尽量将多个小文件合并为一个大文件,从而减少 HTTP 请求次数。注:HTTP2.0的多路复用...
之前写过一个js导出excel的代码,一直用着好好的,最近突然报错了,研究了半天发现在表格列数超过26列的时候就会出现这个问题,也是就excel的列是A-Z,然后跟着是AA,AB,AC...这种,在超出26列时前端导出就会报错了,所以又加了下特殊处理,在超过26列时生成sheet中修改了列头,给大家...
数据库使用的是SQLServer,JDK版本1.8,运行在SpringBoot环境下 对比3种可用的方式反复执行单条插入语句xml拼接sql批处理执行先说结论:少量插入请使用反复插入单条数据,方便。数量较多请使用批处理方式。(可以考虑以有需求的插入数据量20条左右为界吧,在我的测试和数据库环境下耗...
基本功考察一、关于htmlhtml语义化标签的理解seo优化语义化简单的说就是用正确的含义的标签做正确的事eg:头部:header 导航:nav等,语义化的优点是易于修改和维护,支持无障碍阅读,搜索引擎友好,方便seo,面向未来的 HTML,浏览器在未来可能提供更丰富的支持seo优化三剑客: &l...
async/await// 标准用法:function testAwait (x) { return new Promise(resolve => { setTimeout(() => { resolve(x); }, 2000)...
核心知识篇(重点)课程特点(1)使用最新Elasticsearch 5.2版本讲解,深入浅出ES核心工作原理(2)涵盖Elasticsearch所有核心知识点,系统化,体系完整详细,有一定深度,包括完整Java开发示范(2-1)全面的知识体系,包括了工作原理,文档管理,索引管理,搜索,聚合分析,分词...
错误写法 function api(i) { return new Promise((resolve, reject) => { setTimeout(() => { const n = Math.random(); ...
1. 声明 bean 的注解@Component:声明类为组件,没有明确的角色@Service:用于标注业务逻辑层组件即(service 层)@Repository:用于标注数据访问组件即(dao 层),@Controller:在控制层使用,声明返回视图@RestController: 在控制层使...
Nginx正向代理正向代理:是一个位于客户端和目标服务器之间的服务器,为了从目标服务器取得内容,客户端向代理发送一个请 求并指定目标(目标服务器),然后代理向目标服务器转交请求并将获得的内容返回给客户端。客户端必须要进行 一些特别的设置才能使用正向代理。(例如:我们访问谷歌网站,由于其他原因无法访问...
1. 编程范式不同生产者 - 消费者模式和观察者模式的第一个不同点在上面已经说过,前者是一种 面向过程 的软件设计模式,不属于 Gang of Four 提出的 23 种设计模式中的任何一种,而后者则是 23 中设计模式中的一种,也即面向对象的设计模式中的一种。2. 关联关系不同这一理念上的不同就带...
dockerfile文件:FROM php:7.4-apacheLABEL name="bianca.lk.alex@outlook.com"RUN apt-get update && \ apt-get install -y curl \ git \ ...
准备表DROP TABLE IF EXISTS `purchases`;CREATE TABLE `purchases` ( `id` int NOT NULL AUTO_INCREMENT, `customer` varchar(64) CHARACTER SET utf8mb4 COLLA...
Vue3 组件通信方式props$emitexpose / ref$attrsv-modelprovide / injectVuexVue3 通信使用写法props用 props 传数据给子组件有两种方法,如下方法一,混合写法// Parent.vue 传送<child :msg1="msg1...
MVCC 的作用是什么?避免因为写锁的阻塞而造成读数据的并发阻塞问题。可以这么理解,在引擎层做了一个逻辑上(注意是逻辑上,不是物理上)的读写分离。它是通过保存数据的多个历史版本,根据版本号来决定数据是否对事务可见。在InnoDB内部中,会记录一个全局的活跃读写事务ID数组,其主要根据事务ID 大小用...
使用 save() 进行操作save() 是 Mongoose documents 上的一个方法。save() 方法是异步的,因此它返回一个可以 await 执行的 Promise。当您使用 new 创建 Mongoose 模型的实例时,调用 save() 会使 Mongoose 插入一个新文档。c...
一、前言随着产品的迭代,发现现有的产品架构上存在很多的问题,比如性能方面、业务方面、团队协作方面等。作为一个老项目,已经无法再做进一步的优化和完善了,所以这次我们团队打算对整个项目进行一次彻底的重构。用了大约一个星期的时间,将有关的设计方案整理出来。本篇文章主要记录了项目中页面样式 CSS 最终采用...
Spring 的每个项目都独立的项目组在开发运营,在用户最常使用的白盒部分(例如 API 设计)保持一致性,对于用户不可见的黑盒部分,各个项目组选择自己适合工具没有统一的约定。例如: 项目构建工具。Spring Framework 自 2012 年的 3.2.0 起就使用 Gradle 构建,而一年...
依赖注入我想 new 一个实例,但是这个实例中还需要 new 另外一个实例,也就是说两个实例对应的类是包含(组合)关系。class A { private $objB; public function __construct (B $obj) { $this->obj...
应对缓存穿透问题,我们可以使用布隆过滤器。我们先来回顾下缓存穿透知识点哈:一个常见的缓存使用方式:读请求来了,先查下缓存,缓存有值命中,就直接返回;缓存没命中,就去查数据库,然后把数据库的值更新到缓存,再返回。缓存穿透:指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库查询,查不到数据则不写...
了解 Nginx 的 ngx_http_limit_conn_module 和 ngx_http_limit_req_module 模块,对请求访问量进行控制。Nginx 模块化nginx 的内部结构是由核心模块和一系列的功能模块所组成。模块化架构使得每个模块的功能相对简单,实现高内聚,同时也便于...