GET&POST请求-Web前后端数据交互学习小记
最近做一个全栈项目学习了一下前后端数据请求交互,这里用NodeJS Express做服务端,简单总结一下GET和POST请求交互的几种方案,本文不会对全部Api进行详细介绍,只是简单的示例,更多内容可以查看官方文档。
表单提交通过html的form表单提交数据,浏览器默认的处理逻辑会刷新页面,并将目标url请求得到的响应渲染到页面上,大部分情况下都是通过event.preventDefault()阻止默认行为,然后通过其他方式处理请求,这小节我们只讨论表单提交的默认行为。
GET请求前端部分:
123456<form action="//localhost:8000/formget" method="get"> <p>表单提交 GET</p> <input type="text" name="a" value="100"> <input type="text" name="b" ...
QMK/VIA固件键盘无需调整Layer实现锁win键
前言本文假设你已经能够使得viaapp连接上你的设备,如果你刚刚接触QMK/VIA,推荐风尘小沙弥大佬的入门教程。
问题笔者目前手持Nuphy Air96 V2,它哪里都好,就是原厂固件竟然没做Fn+win触发锁win键= =,不过貌似很多做了VIA的键盘都没做这个功能,很神奇吧,可能这就是伟大的DIY世界观(。・∀・)ノ。
其实QMK键值是有相关定义的,详见QMK Firmware- Magic Keyccodes。但是截至本文写作时,VIA尚未支持这些键值,只能另寻他法了。
QK_MAGIC_TOGGLE_GUI
GU_TOGG
Toggles the status of the GUI keys
QK_MAGIC_GUI_ON
GU_ON
Enable the GUI keys
QK_MAGIC_GUI_OFF
GU_OFF
Disable the GUI keys
网上搜了搜大伙第一反应都能想到的都是切Layer,但是为了一个锁win键,切Layer有点大材小用了,虽说Nuphy原厂给了8个Layer(,最后我还是在keychr ...
浏览器跨域问题-CORS、JSONP
浏览器报错案例前段时间写LightZone网站调用api的时候遇到了跨域问题,今天来唠唠。浏览器报错:
要明白跨域报错的原因,首先要了解一下什么是跨域。
跨域是指浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制。所谓同源是指,域名,协议,端口相同。同源策略限制从一个源加载的文档或脚本如何与来自另一个源的资源进行交互。这是一个用于隔离潜在恶意文件的关键的安全机制。
“域名”、”协议”、”端口”三者有一个不同就会产生跨域问题。值得一提的是,即使两个域名解析到同一个ip,也是跨域的。这里我们就要抛出一个疑问:既然调用不同源的资源会产生跨域问题,那么在html中调用第三方css、js不也算作跨域吗?为什么不会报错呢?这是因为浏览器对部分场景允许跨域调用。但是对于ajax、fetch等请求,浏览器就会做限制,不允许跨域调用。以下几种情况是浏览器允许跨域调用的(不全面,仅供参考):
12345678<script src="..."></script><link href=".. ...
Nginx子目录反代
站点配置文件:1234567891011121314#PROXY-START/ location ^~ /map/ { rewrite ^/map/(.*)$ /$1 break; proxy_pass http://127.0.0.1:8100; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header REMOTE-HOST $remote_addr; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; # proxy_hide_header Upgrade; } ...
非想天则窗口化补丁
众所周知你游窗口化不能缩放,对于高分屏十分不友好。这里介绍一个补丁,在这里查阅SWRSToys模块,下载对应的则的版本,解压后放到则的目录里(保证d3d9.dll和th123.exe在同一个目录下)。
参考目录结构:
1234567891011121314151617181920./│ SWRSToys.ini│ SWRSToys.txt│ th123.exe| d3d9.dll│ more...├─Modules│ ├─BGMChanger│ ├─MemoryPatch│ ├─NetBattleCounter│ ├─NetBellChanger│ ├─NetProfileView│ ├─ReplayDnD│ ├─ReplayInputView│ └─WindowResizer│ WindowResizer (simple engrish instructions).txt│ WindowResizer.dll│ WindowResizer.ini│└─more...
打开SWRSToys.ini,将 ...
Linux内核调优——内存回收
前言笔者之前在UbuntuServer搭建了Minecaft的服务端,这个架构过于无厘头XD,Ubuntu是一个Unraid(基于Slackware发行版的NAS系统)的KVM虚拟机,我很清楚这个不是什么高性能的用法=V=,莫名其妙的是Minecraft只要涉及到大范围跑图之类的会让I/O暴涨的操作,底层Unraid这边RAM占用就会boom,然后Ubuntu虚拟机也顺带着一起去世。此时free -h查看buff/cache巨高无比,大约占了整机RAM一半左右。
内核调优既然buff/cache巨高,那就先查查Linux的读写缓存。
Linux文件缓存是一项重要的性能改进,在大多数情况下,读缓存在绝大多数情况下是有益无害的(程序可以直接从RAM中读取数据)。写缓存比较复杂,Linux内核将磁盘写入缓存,过段时间再异步将它们刷新到磁盘。这对加速磁盘I/O有很好的效果,但是当数据未写入磁盘时,丢失数据的可能性会增加。
问题在于,当前的kernel貌似不能很好的处理读写脏数据缓存——他们大多都留在了RAM cache里,而并没有被内核及时 ...
通过启动项优雅的暂时禁用HyperV
前言折腾这个是因为让我又爱又恨的Windows11, 一方面WSL、WSA安卓子系统等基于HyperV引擎的功能确实很方便,另一方面作为一个苦逼网工人,ensp、eveng模拟器又不得不让我使用VMware和VirtualBox,众所周知HyperV和他们两位水土不服(VMware还好,只是不能开硬件虚拟化)。而模拟器什么的也不是每天都用,所以我需要一个能方便切换的暂时关闭HyperV的方法。
在启动项上做文章1.镜像一份当前的启动项配置
PS:这里的命令仅作参考 本质上是修改BCD引导项,使用easybcd等工具修改也可。另外Powershell以及WindowsTerminal与CMD语法有些许出入,可能需要将{XXXXX}内容外用引号""括起来。
管理员运行
1bcdedit /copy {current} /d "Windows No HyperV"
此处”Windows No HyperV”为启动项的自定义名称,你甚至能输中文,虽然我不建议你这么干。
之后会提示已经创建了一个启动项,并返回一串ID,我们复制 ...
关于11代以上英特尔新平台PE找不到硬盘的问题
前言今天给一台天选2重装Win11,因为想重新分个区,就图省事直接进PE了,进PE之后就傻眼了,我常用的Edgeless和WEPE(V2.1)全都找不到盘。
一开始还以为是BitLocker的事,还特意去花时间关掉了原厂的BitLocker🤣,无果之后去BIOS设置里翻翻,也没看到什么和AHCI、RAID相关的东西,倒是看到了一个陌生的名词:Intel® VMD,我一个AMD用户自然是不曾见过的(,搜了搜,很多老PE,包括微软自己的windows安装程序貌似也没有附带VMD驱动。
所以,解决方案就两个:
给PE打驱动,从PE里启动安装程序。
在Windows安装程序中加载VMD驱动程序。
加载驱动 可以前往英特尔官网下载相关驱动。
PE安装驱动 一般来讲,在PE环境使用官网下载的exe即可。
值得一提的是,WEPEV2.2经实测已经可以检测到VMD下的硬盘。
笔者常用的EdgelessPE可以通过在系统内使用驱动总裁在线安装或通过插件包的方式引入,详见https://wiki.edgeless.top/v2/playground/driver.html。
Windows安装环 ...
OpenWRT vsftpd监听公网ip的问题
问题描述一个很久之前的问题,因为不是很急就搁置了。在软路由的OpenWRT上用vsftpd搭建FTP服务器,因为我的环境只有IPv6公网ip,还是动态的(淦,所以勾上了vsftpd的ipv6监听,监听地址是 [label color=”blue”] [::] [/label] ,本来想着和ipv4的 [label color=”blue”]0.0.0.0[/label] 一样监听所有来源IP,结果只要通过ipv6访问,它就毫无疑问的会罢工,但是只要我将IPv6的监听地址换为准确的软路由当前公网地址,就又能正常连接了。离谱归离谱,想解决倒是简单,我也不深究问题来源,总之想办法让这个监听地址的配置像DDNS一样跟着当前公网IPv6地址变动就行了。脚本改vsftpd配置的过程在OpenWRT伟大的UCI (Unified Configuration Interface,统一配置接口)加持下显得尤为简单,问题集中在轻量化的获取公网IP上。
脚本在查问题的时候看到了CSDN有人做过了类似的shell,看起来用得上,在其基础上小改了一下,原脚本贴在下面。
...
UTF-8&Unicode&二进制——浅谈字符编码转换
一个巧合一个朋友在玩打AVG的时候给我抛过来一张图:这兴趣瞬间就涌上来了嗷,作者贴心的把三个字节分为一组,这让我立马就想到了UTF-8,因为我是清楚中文字符在UTF8中占三个字节的。尝试过直接换算Unicode,得到的是乱码,我对UTF-8的编码规则一窍不通(,看来还得去查查UTF-8的编码规则才行。
UTF-8编码规则最后找到了阮一峰大佬在2007年的文章:
阮一峰-字符编码笔记:ASCII,Unicode 和 UTF-8
简单的介绍UTF-8的编码规则:一个重要的前提”UTF-8是Unicode的实现方式之一”,它最大的特点就是实现了变长编码,根据不同字符从1-4字节间变换,分两种情况讨论其编码形式:
1.对于单字节的符号单字节符号,例如英文字母,将字节的第一位设为0,后面7位对应该字符的Unicode码,空位前补0。因此对于英文字符,UTF-8与ASCII码在二进制表现上是相同的。
2.对于多字节的符号对于 n 字节的符号 ( n > 1 ) ,第一个字节的前 n 位都设为1,第 n + 1 位设为 0 ,后面字节的前两位一律设为 10 。剩下的没有提 ...