会员
周边
新闻
博问
闪存
赞助商
YouClaw
所有博客
当前博客
我的博客
我的园子
账号设置
会员中心
简洁模式
...
退出登录
注册
登录
古兰精
博客园
首页
新随笔
联系
订阅
管理
上一页
1
···
12
13
14
15
16
17
18
19
20
···
128
下一页
2021年9月26日
浅析从axios HTTP 拦截器的设计与实现里学习如何设计通用的任务处理模型(任务注册/任务编排/任务调度)、axios HTTP 适配器的设计与实现、常见CSRF防御措施(检查Referer、同步表单CSRF Token校验、双重Cookie防御)、axios 自带 CSRF 防御的实现原理
摘要: 一、HTTP 拦截器的设计与实现 1、拦截器简介 对于大多数 SPA 应用程序来说, 通常会使用 token 进行用户的身份认证。这就要求在认证通过后,我们需要在每个请求上都携带认证信息。针对这个需求,为了避免为每个请求单独处理,我们可以通过封装统一的 request 函数来为每个请求统一添加 to
阅读全文
posted @ 2021-09-26 15:23 古兰精
阅读(933)
评论(0)
推荐(0)
2021年9月24日
浅析Promise三兄弟:Promise.all、Promise.race、Promise.allSettled 的理解和使用场景
摘要: 一、Pomise.all 的使用 Promise.all 可以将多个Promise实例包装成一个新的Promise实例。同时,成功和失败的返回值是不同的,成功的时候返回的是一个结果数组,而失败的时候则返回最先被 reject 失败状态的值。代码示例如下: let p1 = new Promise((
阅读全文
posted @ 2021-09-24 18:12 古兰精
阅读(4487)
评论(0)
推荐(0)
浅析JavaScript中如何实现并发控制:并发控制的理解和执行流程、使用 asyncPool 实现并发控制及其实现原理、如何手写 Promise.all 和 Promise.race
摘要: 一、并发控制简介 在日常开发过程中,你可能会遇到并发控制的场景,比如控制请求并发数。那么在 JavaScript 中如何实现并发控制呢?在回答这个问题之前,我们来简单介绍一下并发控制。 假设有 6 个待办任务要执行,而我们希望限制同时执行的任务个数,即最多只有 2 个任务能同时执行。当 正在执行任务
阅读全文
posted @ 2021-09-24 17:17 古兰精
阅读(1195)
评论(0)
推荐(0)
浅析PostgreSQL的 ON CONFLICT 和 upsert:不存在则插入/存在则更新、upsert 介绍、语法及示例
摘要: 一、需求背景 在数据库表里,一般都有主键,主键是不能重复的,因为是唯一标识。假设这个时候需求来了,需要插入一组数据,这些数据中有些是完全新的,可以直接插入(insert),但有些主键内容是和原本表内的数据主键内容是一致的,这些就无法直接插入了,而是执行更新(update)操作。这时候就比较麻烦了,因
阅读全文
posted @ 2021-09-24 15:06 古兰精
阅读(15234)
评论(0)
推荐(0)
2021年9月23日
常见工作场景解决方案开源库推荐:文件上传库 - uppy、图片处理库 - tui.image-editor、在线文档预览解决方案 - kkFileView、纯前端在线表格/协同编辑解决方案 - Luckysheet、表单设计器 - form-generator / form-render、H5在线网页设计器 - gods-pen / luban-h5
摘要: 俗话说得好,工欲善其事必先利其器。利用一些开源项目,我们将能轻松应对一些常见工作场景:文件上传、图片处理、文档处理、在线表格、表单设计器、H5 页面设计器。 1、文件上传 - uppy 24.6k uppy 是一个体验顺滑、模块化的 JavaScript 文件上传器,可以无缝地与任何应用程序集成。它
阅读全文
posted @ 2021-09-23 22:41 古兰精
阅读(1693)
评论(0)
推荐(0)
浅析前端常见文件下载的9种场景:Blob基础知识/组成/Blob URL、a标签下载、showSaveFilePicker API下载(兼容性差)、FileSaver.js库下载、Zip下载(JSZip库)、附件形式下载(设置Content-Disposition)、base64格式下载(需转为blob)、分块传输下载、HTTP范围请求下载、大文件分块并行下载
摘要: 一般在我们工作中,主要会涉及到 9 种文件下载的场景,每一种场景背后都使用不同的技术,其中也有很多细节需要我们额外注意。 在浏览器端处理文件的时候,我们经常会用到 Blob 。比如图片本地预览、图片压缩、大文件分块上传及文件下载。在浏览器端文件下载的场景中,比如我们今天要讲到的 a 标签下载、sho
阅读全文
posted @ 2021-09-23 18:56 古兰精
阅读(3502)
评论(0)
推荐(0)
浅析Java中不使用的对象应赋值为null的深层理解:基本没必要的原因、JVM中局部变量表(运行时候的栈状态)和slot(运行时栈里的索引)的理解、Java的栈优化(重用栈索引节约内存空间)、GC的可达性分析算法-如何找到root树根(栈中引用的对象)、如何断开栈中引用与堆的联系(重写栈索引)
摘要: 经常听说“不使用的对象应手动赋值为null”,但是要问原因,大都回答“有利于GC更早回收内存,减少内存占用”,但再往深入问就回答不出来了。所以这里做一点深入研究。 一、将对象赋值为null,对垃圾回收有用吗? 网上很多java性能优化里都会有这么一条:尽量把不使用的对象显式得置为null,这样有助于
阅读全文
posted @ 2021-09-23 16:00 古兰精
阅读(1409)
评论(0)
推荐(1)
2021年9月21日
浅析Stream是如何提高遍历集合效率的:Stream产生背景(分库分表后需要合并传统效率不理想)、Stream优化遍历思想-操作分类:中间操作(分为无状态/有状态)只做记录/终结操作(分为短路/非短路)实现计算、操作叠加、并行处理的思想(分片/合并)、如何合理使用Stream(单核数据量小用常规迭代/多核数据量大用stream)
摘要: 一、为什么需要 Stream —— 分库分表之后大数据需要合并,传统方式效率不理想 现在很多大数据量系统中都存在分表分库的情况。例如,电商系统中的订单表,常常使用用户ID的Hash值来实现分表分库,这样是为了减少单个表的数据量,优化用户查询订单的速度。但在后台管理员审核订单时,他们需要将各个数据源的
阅读全文
posted @ 2021-09-21 22:47 古兰精
阅读(362)
评论(0)
推荐(0)
浅析Java8新特性-Stream流操作:Stream概念、常见中间/终止操作符、创建stream的3种方式、串行流/并行流的区分、使用示例(遍历/匹配、过滤、聚合、映射、归约、归集、统计、分区分组、接合、排序、组合/提取、分页、并行、集合转Map、使用并行流注意点)
摘要: 一、Java 8 Stream 介绍 Java8 API 添加了一个新的抽象称为 流Stream,可以让你以一种声明的方式处理数据。Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。 Stream 这种风格将要处理的元素集合看作一种
阅读全文
posted @ 2021-09-21 21:55 古兰精
阅读(1137)
评论(0)
推荐(1)
2021年9月19日
浅析Java8新特性-Optional方法介绍(Optional.ofNullable-构造方法、map-逐层安全地拆解value、filter-过滤值、orElse/orElseThrow-最终返回、stream-转为流)及常用实践(仅作为方法返回值、清晰地表达返回值中没有结果的可能性、勿滥用Optional)、Optional的设计思想实现
摘要: Optional 是 Java 8 引进的一个新特性,通常用于缓解常见的空指针异常问题。Brian Goetz (Java语言设计架构师)对Optional设计意图的原话如下: Optional is intended to provide a limited mechanism for libra
阅读全文
posted @ 2021-09-19 23:00 古兰精
阅读(26697)
评论(1)
推荐(4)
上一页
1
···
12
13
14
15
16
17
18
19
20
···
128
下一页
公告