BLCL的博客小馆

首页

关于

归档

loading..
前端Next.js

一日一技:next.js如何正确处理跨域问题?

我以前一直使用Vue来写前端。去年下半年接手了一个基于React + Next.js的项目,于是顺带学习了一下Next.js。由于Next.js的特点,这个项目的前后端是放在一起的。一开始没什么问题,看了半天文档就上手了。上周我们需要在另一个网页项目中,调用这个项目的后端接口,于是就需要处理跨域请求的问题。但我发现按照网上的方法,跨域问题依然存在。这个问题浪费了我不少时间,好在最后终于找到了原因。记录在这里,免得大家跟我一样踩坑。为了复现这个问题,我们先来创建一个Next.js项目。执行代码创建代码脚手架:1npx create-next-app test_cors使用TypeScript,其他选项选择默认,如下图所示:命令执行完成以后,会生成一个test_cors文件夹,在文件夹中创建文件pages/a..

更多
loading..

LeetCode 刷题笔记

迫于找工作,不得不一边鄙视自己的智商,一边硬着头皮刷 LeetCode。既然开始刷题,那顺便做个笔记,以便日后温习。 因为顺序是乱的,所以请善用 CTRL-F。 217. Contains Duplicate Example: 12345Input: nums = [1,2,3,1]Output: trueInput: nums = [1,2,3,4]Output: false 1234567891011121314151617181920class Solution { public boolean containsDuplicate(int[] nums) { if (nums == null || nums.length == 0) { return ..

更多

Golang 1.20 语言规范改动

切片转换为数组以下代码预期把切片转换为数组: 1 2 3 4 5 6 7 8 9 10 11 12 13 package main import ( "fmt" "reflect" ) func main() { slice := []int{1, 2, 3, 4} array := [4]int(slice) fmt.Println(reflect.TypeOf(slice)) fmt.Println(reflect.TypeOf(array)) } 在 Go 1.20 之前的版本,会导致以下错误:1 2 # command-line-arguments ./main.go:10:17: cannot convert slice (type []int) to type ..

更多

Golang 1.18 语言规范改动

泛型详见:Golang 泛型初级教程和 Golang 泛型中级教程。匿名函数内的未使用变量在 Go 1.18 之前的版本,以下在匿名函数内的未使用变量 p 不会返回错误:1 2 3 4 5 6 7 8 package main func main() { p := true func() { p = true }() } 在升级到 Go 1.18 后,会正常返回未使用错误:1 2 # command-line-arguments ./main.go:4:2: p declared and not used rune 类型的溢出在 Go 1.18 之前的版本,以下 rune 类型的溢出不会返回错误:1 2 3 4 5 package main func main() { print('1' ..

更多

MySQL 的最左匹配原则

依旧是面试查漏补缺。这次是 MySQL 的最左匹配原则。 废话不多说,直接看 MySQL 官方文档给出的例子。 有这么一个表: 1234567CREATE TABLE test ( id INT NOT NULL, last_name CHAR(30) NOT NULL, first_name CHAR(30) NOT NULL, PRIMARY KEY (id), INDEX name (last_name, first_name)); 可以看出,表里面有一个联合索引 (last_name, first_name)。那么,查询的时候,这些语句就可以成功走索引: 1234SELECT * FROM test WHERE last_name = 'Doe';..

更多
loading..
NAS群晖

群晖NAS ESTAT扩容

Foreword 老群晖D918+只有4盘位,已经升级了一次,4张8T依然不够用,新搭的服务器的硬盘竟然是2.5的,还只能上固态,上普通硬盘没啥性价比。 无意间发现群晖竟然还能扩容 ESTAT 群晖ESATA是群晖网络存储设备中的一种接口,它是一种高速的数据传输接口,可以提供比USB和Firewire更快的传输速度。群晖ESATA接口可以通过连接ESATA设备来扩展存储容量,如硬盘、光驱等 DX517 群晖官方的ESATA硬盘扩展柜,但是价格十分离谱,基本就是一个5盘位的新NAS的价格,如果这种价格我为什么不再买一个NAS呢 魅视 M517 只有DX517一半不到的价格,但是同样扩展5盘位,性价比拉满 优越者 5盘位RAID USB3.0 ESATA接口 更便宜一些,可惜支..

更多
loading..
开发板

使用USB接口连接STM32F103C并控制舵机

起因 前段时间把我的小主机连带路由器硬盘等设备带回了老家,老家也有ipv6,所以无缝衔接,随后安心出去游玩。某天我一如既往地打开nextcloud准备上传图片,发现服务挂了,然后发现是家里停过几小时的电。虽然路由器和小主机都有来电自启,但硬盘盒通电后需要手动按一下开关才能启动,我人不在家,所以这段时间和NAS相关的服务全都无法启动。 遂琢磨着弄个东西远程启动硬盘盒。 调研这个功能如果用树莓派做应该很简单,但我没有带回来,而且用树莓派专门操作一个舵机也太杀鸡用牛刀了。第一个想到的当然是单片机,一顿搜索,目标定位到了ESP32和STM32,都是非常便宜的单片机,两者的资料也都非常多。 但,不..

更多

Golang 泛型中级教程

使用类型约束首先,来看一个函数,它的功能是返回两个参数中数值较小的参数: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 func Min(x, y int) int { if x < y { return x } return y } func TestMin(t *testing.T) { var inputIntX int = 1 var inputIntY int = 2 var wantInt int = 1 gotInt := Min(inputIntX, inputIntY) if gotInt != wantInt { t.Errorf("gotInt %v, wantInt %v", gotInt, wantI..

更多

Golang 泛型入门教程

泛型的优势泛型编程(Generic Programming)是现代编程语言中的一项强大功能,它允许程序员编写出一种通用的形式来表示函数或数据结构,从而抽象出数据类型。泛型的使用可以极大地减少代码重复,增加程序的灵活性与可维护性。对于库的开发者来说,泛型的确引入了额外的复杂性;但对库的使用者而言,泛型提供了简洁和强大的工具,极少地增加了复杂性。入门教程首先,来看两个函数,它们的功能都是计算一个切片中所有元素的总和: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 func SumInts(s []int) int { var r int for _, v := range s { r += v } return r } func SumFloats(s ..

更多

Golang 泛型初级教程

泛型的优势泛型编程(Generic Programming)是现代编程语言中的一项强大功能,它允许程序员编写出一种通用的形式来表示函数或数据结构,从而抽象出数据类型。泛型的使用可以极大地减少代码重复,增加程序的灵活性与可维护性。对于库的开发者来说,泛型的确引入了额外的复杂性;但对库的使用者而言,泛型提供了简洁和强大的工具,极少地增加了复杂性。初级教程首先,来看两个函数,它们的功能都是计算一个切片中所有元素的总和: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 func SumInts(s []int) int { var r int for _, v := range s { r += v } return r } func SumFloats(s ..

更多
18910111275