桃子爱吃玉米
rxjs使用到mergeMap和map,但是我完全看不懂这个是什么意思,请问是否有大佬帮解释理解一下?
rxjs使用到mergeMap和map,但是我完全看不懂这个是什么意思,请问是否有大佬帮解释理解一下?
import { from, of } from 'rxjs';
import { mergeMap, map } from 'rxjs/operators';
// 模拟获取用户列表的函数
function getUserList() {
return of([
{ id: 1, name: 'User 1' },
{ id: 2, name: 'User 2' },
{ id: 3, name: 'User 3' },
]);
}
// 模拟获取用户详细信息的函数
function getUserDetails(userId) {
return of({ id: userId, details: `Details of User ${userId}` });
}
// 使用 RxJS 操作符
const userList$ = getUserList();
const processedUserList$ = userList$.pipe(
mergeMap(users => from(users)),
mergeMap(user => getUserDetails(user.id).pipe(
map(details => ({...user, details }))
))
);
processedUserList$.subscribe(user => {
console.log(user);
});
桃子爱吃玉米
请问如何对数组类型type提出一条元素 & 其他的type,进而做一个props?
type TabsCompProps = {
label: string;
children: React.ReactNode;
key: string;
breadcrumbs: string[];
}[];
type DetailProps = {
content: string;
};
type TabsWithDetailProps = (TabsCompProps[number] & DetailProps)[];
// 示例
const tabsWithDetail: TabsWithDetailProps = [
{
label: "Tab 1",
children: Content 1,
key: "1",
breadcrumbs: ["Home", "Tab 1"],
content: "Detail Content 1",
},
{
label: "Tab 2",
children: Content 2,
key: "2",
breadcrumbs: ["Home", "Tab 2"],
content: "Detail Content 2",
},
];
桃子爱吃玉米
VChart图表点击数据点,展示操作列表?
类似这个截图里的效果,如何实现点击图表中的一个数据点,能够展示出一个操作的列表?
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250101/8909ed4a7d6fd53bd1f57cfa101a3587.png)
桃子爱吃玉米
如何配置MarkLine文字标签的位置,可以配置显示在线起点、终点或者线段中间?
类似 ("https://www.visactor.io/vchart/demo/marker/mark-line-basic" (https://link.segmentfault.com/?enc=bw8%2F%2FYAHv1npVheE8YIJYA%3D%3D.WGfxcaO5uwjH7wSdDWfcGjeL%2FkVPINLO9t0LMOrWrNRl%2B2UmqFyuhzLVi1P4ciyAPFbkcVLQCZh%2F8LkVi3KJgg%3D%3D))这样的使用了markLine做轴空间定位的图表,
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250101/f7445bb9a57a322d297072e49d3e1256.png)
想要实现markLine中的label显示在线的起点、线的终点或者线段中间,该如何实现?
桃子爱吃玉米
请教各位大佬们, react 数组渲染问题?
前端demo
function App() {
const [socket, setSocket] = useState(null);
const [message, setMessage] = useState([]);
const [connected, setConnected] = useState(false);
useEffect(() => {
const ws = new WebSocket("ws://localhost:10090/");
setSocket(ws);
ws.onopen = () => {
setConnected(true);
ws.send('Jack')
};
ws.onclose = () => {
setConnected(false);
};
ws.onmessage = (event) => {
setMessage(prevMessage => [...prevMessage, event.data]);
};
return () => {
if (ws.readyState === WebSocket.OPEN) {
ws.close();
}
};
}, []);
const sendMessage = () => {
setMessage([])
if (socket && connected) {
socket.send('Lucy');
}
};
return (
发送消息
消息:
{
message.map((item,index)=>{item})
}
);
}
后端demo
var ws = require("nodejs-websocket")
let id = ''
let server = ws.createServer(connect => {
connect.on("text", data => {
id = data
})
setInterval(()=>{
connect.send(`${id}-${new Date().getTime()}`)
},1000)
//监听websocket断开链接
connect.on("close", () => {
console.log("websocket连接断开....")
})
//监听websocket异常信息
connect.on("error", () => {
console.log("websocket连接异常....")
})
})
server.listen(10090, () => {
console.log("websocket running")
})
桃子爱吃玉米
如何模拟巨大的网络流量?
我在工作里封装了个snort,作为IDS运行在大概类似网关的运行linux的设备上.
领导说希望检测这个软件在巨大的流量下的工作情况,我该咋办...
我测试它的时候只会用tcpreplay复读一些危险包的pcap.
桃子爱吃玉米
如何在data中 使用/导入/混入 另外一个vue文件中的data函数中的某个对象?
我目前想到的是写一个js,两个组件都引入这个js定义的对象,只不过你的对象要用函数返回,不要直接定义。不然指向的是同一个,会引发问题。
桃子爱吃玉米
用表格组件怎么实现一个热力图?
专业的事交给行业的做:
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241225/c9425210b9cad386f3b47c69c4cb1ef0.png)
«"https://echarts.apache.org/examples/zh/index.html#chart-> type-..." (https://link.segmentfault.com/?enc=8MWnZ8QpQH%2BuPZ01bQN2iQ%3D%3D.K%2FPZpzAWV4%2FGz3eM0cIezWn%2FEwzkucOtsOSO1fDDQMhFcEer5jC2hCbySL4ebOUVBQ%2BM2bNDJHhPCsMkwT4r0QCLBhv0pMnAwShv1Q04l10%3D)»
Vue 写思路是:
1. 确定每个色块的颜色, 根据行几行几列存入一个二维数组里面
2. 写好一行基本结构, "v-for" 遍历该二维数组, 将颜色赋给每个人,格子的"style"就可以了
桃子爱吃玉米
如何对数组中相同key统一赋值?
let arr = [0, 1, 2, 3];
let array = [
{
name0: '1',
name1: '',
name2: '',
name3: '',
},
{
name0: '',
name1: '',
name2: '2',
name3: '',
},
{
name0: '',
name1: '6',
name2: '',
name3: '',
},
{
name0: '',
name1: '',
name2: '',
name3: '9',
},
];
let values = {};
// 遍历数组,更新values对象
array.forEach(item => {
arr.forEach((_, index) => {
let key = 'name' + index;
if (item[key]) {
values[key] = item[key];
}
});
});
array = array.map(() => {
let newObj = {};
arr.forEach((_, index) => {
let key = 'name' + index;
newObj[key] = values[key] || '';
});
return newObj;
});
console.log(array);
"企业微信截图_16952026428820.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241225/740c229c1eb85c93bf1cbba9f11b9608.png)
桃子爱吃玉米
Vuer们 ,关于Vue中 计算属性的另一个问题(动态给计算属性新增属性dom是否会及时渲染)?
参照"你上个问题" (https://segmentfault.com/q/1010000044258093/a-1020000044258235)中我回答的2,template执行中运行了computedPropA函数,而computedPropA函数中运行了beforeData变量,这被收集进updateWatcher的依赖中,当beforeData改变会触发updateWatcher更新,如果你把中的`data
+ beforeData.value"换成"data +
Math.random()`,并移除template中computedPropB的使用,就可以看出效果
桃子爱吃玉米
市面上的低代码平台一般都是怎么对接外部系统的?
一般情况下市面上的大部分低代码平台都是可以对接你说的这些系统,比如像我们比较熟悉的腾讯、阿里的低代码平台都是可以实现,而现在企业微信和钉钉的开发中心也包含了如何对接的流程:
比如这个是企业微信的对接API:"https://developer.work.weixin.qq.com/document/path/90235" (https://link.segmentfault.com/?enc=ktaBRICpW2syfR0%2BvNZT3Q%3D%3D.m%2FHrGxJsKrP2YqMNmjAKsYPyOrqdSFUOaxEukDPGDxGeyif4fhMpjtvrS7bxTsA6sNMYPYl31U8a8LRDa5iluQ%3D%3D)
钉钉开发平台的开发者API:"https://open.dingtalk.com/document/orgapp/api-overview" (https://link.segmentfault.com/?enc=nYCVz7B%2BiG0TYQLfzk8djw%3D%3D.V06xfTUwNYcqjG70Z0r4eW0UXdfcTx9tvNCD1RAdD3Im2SxbP7DCimkDuoXNQr9vadwttxSXYp%2FA9R%2FLWdWTaQ%3D%3D)
只需要按照步骤对接即可,
下面是市场上的一些低代码平台对接钉钉和企业微信的操作步骤:
"https://gcdn.grapecity.com.cn/showtopic-180128-1-4.html" (https://link.segmentfault.com/?enc=7L4Ctt1Z5WUwNcFHI2COyQ%3D%3D.%2FuFMTHfD%2FntnuQn3f7Ofk55P4r9%2Bzt2zm5hFWn52xZqspMNKk3HdjjaXZNcfjrEpIXKQIPJnRgjkkIKvH4C%2BxQ%3D%3D)(对接钉钉)
"https://gcdn.grapecity.com.cn/showtopic-175196-1-4.html" (https://link.segmentfault.com/?enc=fVcPl7ORXl3GDjt8ljVwEA%3D%3D.aL7vlaHdyVH0wPRDNVf15atdaU7fzYhW8XrhrDhAZjzexYHP1YSKTbA8V1ibgKagnA1CHgczDN04nfXiHHZH8g%3D%3D)(对接企业微信)
桃子爱吃玉米
什么是微服务治理?
微服务是一种架构风格,应用程序被划分为更小的、流程驱动的服务,这些服务松散耦合、可独立部署,并且能够通过定义良好的 API
进行通信,这些服务是为业务功能而构建的。
1.拆分成多个组件
微服务架构构建的软件被分解为众多组件服务,每个服务都可以独立创建、部署和更新,而不会影响应用程序的完整性,整个应用程序可以通过调整一些特定的服务来扩展,而不是关闭并重新部署它。
2.具有抗故障能力
使用微服务架构构建的应用程序失败并不容易,当然,个别服务可能会失败,这无疑会影响运营,毕竟,在微服务环境中,众多不同且独特的服务相互通信以进行操作,并且在某些时候必然会发生故障。
但是,在正确配置的基于微服务的应用程序中,面临停机的功能应该能够将流量重新路由到自身之外,同时允许其连接的服务继续运行,通过监控微服务并在出现故障时尽快恢复它们,也很容易降低中断风险。
3.去中心化运营
每个微服务都可以在不同的技术和平台上开发。因此,去中心化治理。构建微服务的一种方法是生成有用的工具,然后可以在社区中使用这些工具来解决相同的问题。
去中心化治理伴随着去中心化数据管理。 微服务应用程序包含并管理其独特的数据库。相比之下,单体应用跨不同应用程序使用单个逻辑数据库。
4.专为现代企业打造
创建微服务架构是为了专注于满足现代数字业务的需求,传统的单体架构让团队致力于开发
UI、技术层、数据库和服务器端逻辑等功能,另一方面,微服务依赖于跨职能团队,每个团队负责创建基于通过消息总线传输和接收数据的单独服务的特定产品。
总结
微服务是一种创建云应用程序的架构方法,每个应用程序都构建为一组服务,每个服务都在自己的进程中运行并通过 API
进行通信。本文主要介绍了微服务的概念、特点、优势等,希望本文对您认识微服务有所帮助,有任何问题欢迎在下方评论区与我讨论。
桃子爱吃玉米
window求一个软件,可以实现文件重定向,比如某个软件要读取test文件,把该文件读取请求改到了test2文件?
window上求一个软件,可以实现文件重定向,比如某个软件要读取test文件,把该文件读取请求改到了test2文件?
桃子爱吃玉米
amh面板 7.1测试版 安装Lngx出现报错?
今天大佬更新7.1,迫不及待尝鲜
在三个机器(环境均为Debian12,一台在国内腾讯云 内核Linux 6.1.0-13-amd64,两台海外 内核Linux
6.1.0-13-cloud-amd64)新安装amh,然后安装LNGX时,出现报错:
(截取部分)
clude -I objs -I src/http -I src/http/modules -I src/http/v2 \
-o objs/addon/src/ngx_http_echo_location.o \
/home/usrdata/nginx-generic-1.24/echo-nginx-module-0.42/src/ngx_http_echo_location.c
cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I /home/usrdata/nginx-generic-1.24/openssl-1.1.1w/.openssl/in
clude -I objs -I src/http -I src/http/modules -I src/http/v2 \
-o objs/addon/src/ngx_http_echo_echo.o \
/home/usrdata/nginx-generic-1.24/echo-nginx-module-0.42/src/ngx_http_echo_echo.c
cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I /home/usrdata/nginx-generic-1.24/openssl-1.1.1w/.openssl/in
clude -I objs -I src/http -I src/http/modules -I src/http/v2 \
-o objs/addon/src/ngx_http_echo_request_info.o \
/home/usrdata/nginx-generic-1.24/echo-nginx-module-0.42/src/ngx_http_echo_request_info.c
cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I /home/usrdata/nginx-generic-1.24/openssl-1.1.1w/.openssl/in
clude -I objs -I src/http -I src/http/modules -I src/http/v2 \
-o objs/addon/src/ngx_http_echo_subrequest.o \
/home/usrdata/nginx-generic-1.24/echo-nginx-module-0.42/src/ngx_http_echo_subrequest.c
cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I /home/usrdata/nginx-generic-1.24/openssl-1.1.1w/.openssl/in
clude -I objs -I src/http -I src/http/modules -I src/http/v2 \
-o objs/addon/src/ngx_http_echo_foreach.o \
/home/usrdata/nginx-generic-1.24/echo-nginx-module-0.42/src/ngx_http_echo_foreach.c
cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I /home/usrdata/nginx-generic-1.24/openssl-1.1.1w/.openssl/in
clude -I objs -I src/http -I src/http/modules -I src/http/v2 \
-o objs/addon/yaoweibin-ngx_http_substitutions_filter_module-e3291ac/ngx_http_subs_filter_module.o \
/home/usrdata/nginx-generic-1.24/yaoweibin-ngx_http_substitutions_filter_module-e3291ac/ngx_http_subs_filter_module.c
cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I /home/usrdata/nginx-generic-1.24/openssl-1.1.1w/.openssl/in
clude -I objs -I src/http -I src/http/modules -I src/http/v2 \
-o objs/addon/nginx-goodies-nginx-sticky-module/ngx_http_sticky_module.o \
/home/usrdata/nginx-generic-1.24/nginx-goodies-nginx-sticky-module/ngx_http_sticky_module.c
/home/usrdata/nginx-generic-1.24/nginx-goodies-nginx-sticky-module/ngx_http_sticky_module.c: In function 'ngx_http_init_sticky_peer':
/home/usrdata/nginx-generic-1.24/nginx-goodies-nginx-sticky-module/ngx_http_sticky_module.c:207:62: error: 'ngx_http_headers_in_t' has no member named 'cookies'; did you mean 'cookie'?
207 | if (ngx_http_parse_multi_header_lines(&r->headers_in.cookies, &iphp->sticky_conf->cookie_name, &route) != NGX_DECLINED) {
| ^~~~~~~
| cookie
/home/usrdata/nginx-generic-1.24/nginx-goodies-nginx-sticky-module/ngx_http_sticky_module.c:207:71: error: passing argument 2 of 'ngx_http_parse_multi_header_lines' from incompatible pointer type [-W
error=incompatible-pointer-types]
207 | if (ngx_http_parse_multi_header_lines(&r->headers_in.cookies, &iphp->sticky_conf->cookie_name, &route) != NGX_DECLINED) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| |
| ngx_str_t *
In file included from /home/usrdata/nginx-generic-1.24/nginx-goodies-nginx-sticky-module/ngx_http_sticky_module.c:9:
src/http/ngx_http.h:107:22: note: expected 'ngx_table_elt_t *' {aka 'struct ngx_table_elt_s *'} but argument is of type 'ngx_str_t *'
107 | ngx_table_elt_t *headers, ngx_str_t *name, ngx_str_t *value);
| ~~~~~~~~~~~~~~~~~^~~~~~~
/home/usrdata/nginx-generic-1.24/nginx-goodies-nginx-sticky-module/ngx_http_sticky_module.c:207:13: error: too few arguments to function 'ngx_http_parse_multi_header_lines'
207 | if (ngx_http_parse_multi_header_lines(&r->headers_in.cookies, &iphp->sticky_conf->cookie_name, &route) != NGX_DECLINED) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/http/ngx_http.h:106:18: note: declared here
106 | ngx_table_elt_t *ngx_http_parse_multi_header_lines(ngx_http_request_t *r,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
make[1]: *** [objs/Makefile:1477: objs/addon/nginx-goodies-nginx-sticky-module/ngx_http_sticky_module.o] Error 1
make[1]: Leaving directory '/home/usrdata/nginx-generic-1.24/nginx-1.24.0'
make: *** [Makefile:10: build] Error 2
nginx version: nginx/1.24.0
built by gcc 12.2.0 (Debian 12.2.0-14)
built with OpenSSL 1.1.1w 11 Sep 2023
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx-generic-1.24 --user=www --group=www --with-http_ssl_module --with-openssl=/home/usrdata/nginx-generic-1.24/openssl-1.1.1w --with-http_gzip_static_module
--with-http_v2_module --with-threads --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module
[Error] Lngx01 create failed.
/home/usrdata/nginx-generic-1.24/echo-nginx-module-0.42/src/ngx_http_echo_request_info.c
cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I /home/usrdata/nginx-generic-1.24/openssl-1.1.1w/.openssl/in
clude -I objs -I src/http -I src/http/modules -I src/http/v2 \
-o objs/addon/src/ngx_http_echo_subrequest.o \
/home/usrdata/nginx-generic-1.24/echo-nginx-module-0.42/src/ngx_http_echo_subrequest.c
cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I /home/usrdata/nginx-generic-1.24/openssl-1.1.1w/.openssl/in
clude -I objs -I src/http -I src/http/modules -I src/http/v2 \
-o objs/addon/src/ngx_http_echo_foreach.o \
/home/usrdata/nginx-generic-1.24/echo-nginx-module-0.42/src/ngx_http_echo_foreach.c
cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I /home/usrdata/nginx-generic-1.24/openssl-1.1.1w/.openssl/in
clude -I objs -I src/http -I src/http/modules -I src/http/v2 \
-o objs/addon/yaoweibin-ngx_http_substitutions_filter_module-e3291ac/ngx_http_subs_filter_module.o \
/home/usrdata/nginx-generic-1.24/yaoweibin-ngx_http_substitutions_filter_module-e3291ac/ngx_http_subs_filter_module.c
cc -c -pipe -O -W -Wall -Wpointer-arith -Wno-unused-parameter -Werror -g -I src/core -I src/event -I src/event/modules -I src/os/unix -I /home/usrdata/nginx-generic-1.24/openssl-1.1.1w/.openssl/in
clude -I objs -I src/http -I src/http/modules -I src/http/v2 \
-o objs/addon/nginx-goodies-nginx-sticky-module/ngx_http_sticky_module.o \
/home/usrdata/nginx-generic-1.24/nginx-goodies-nginx-sticky-module/ngx_http_sticky_module.c
/home/usrdata/nginx-generic-1.24/nginx-goodies-nginx-sticky-module/ngx_http_sticky_module.c: In function 'ngx_http_init_sticky_peer':
/home/usrdata/nginx-generic-1.24/nginx-goodies-nginx-sticky-module/ngx_http_sticky_module.c:207:62: error: 'ngx_http_headers_in_t' has no member named 'cookies'; did you mean 'cookie'?
207 | if (ngx_http_parse_multi_header_lines(&r->headers_in.cookies, &iphp->sticky_conf->cookie_name, &route) != NGX_DECLINED) {
| ^~~~~~~
| cookie
/home/usrdata/nginx-generic-1.24/nginx-goodies-nginx-sticky-module/ngx_http_sticky_module.c:207:71: error: passing argument 2 of 'ngx_http_parse_multi_header_lines' from incompatible pointer type [-W
error=incompatible-pointer-types]
207 | if (ngx_http_parse_multi_header_lines(&r->headers_in.cookies, &iphp->sticky_conf->cookie_name, &route) != NGX_DECLINED) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| |
| ngx_str_t *
In file included from /home/usrdata/nginx-generic-1.24/nginx-goodies-nginx-sticky-module/ngx_http_sticky_module.c:9:
src/http/ngx_http.h:107:22: note: expected 'ngx_table_elt_t *' {aka 'struct ngx_table_elt_s *'} but argument is of type 'ngx_str_t *'
107 | ngx_table_elt_t *headers, ngx_str_t *name, ngx_str_t *value);
| ~~~~~~~~~~~~~~~~~^~~~~~~
/home/usrdata/nginx-generic-1.24/nginx-goodies-nginx-sticky-module/ngx_http_sticky_module.c:207:13: error: too few arguments to function 'ngx_http_parse_multi_header_lines'
207 | if (ngx_http_parse_multi_header_lines(&r->headers_in.cookies, &iphp->sticky_conf->cookie_name, &route) != NGX_DECLINED) {
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/http/ngx_http.h:106:18: note: declared here
106 | ngx_table_elt_t *ngx_http_parse_multi_header_lines(ngx_http_request_t *r,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
make[1]: *** [objs/Makefile:1477: objs/addon/nginx-goodies-nginx-sticky-module/ngx_http_sticky_module.o] Error 1
make[1]: Leaving directory '/home/usrdata/nginx-generic-1.24/nginx-1.24.0'
make: *** [Makefile:10: build] Error 2
nginx version: nginx/1.24.0
built by gcc 12.2.0 (Debian 12.2.0-14)
built with OpenSSL 1.1.1w 11 Sep 2023
TLS SNI support enabled
configure arguments: --prefix=/usr/local/nginx-generic-1.24 --user=www --group=www --with-http_ssl_module --with-openssl=/home/usrdata/nginx-generic-1.24/openssl-1.1.1w --with-http_gzip_static_module
--with-http_v2_module --with-threads --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module
[Error] Lngx01 create failed.
桃子爱吃玉米
本地包打包并在 demo 项目中引入无效?
按照图中的信息,以及你所提到的 "dist/style.css" 文件引用,那么你可以先通过 devtools 面板里的 network
看一下是否有这个 css 的请求记录。
如果没有的话,那么就检查一下文件引用是否正确,如果文件引用的路径没有问题,那么就检查一下路由的配置知否正确。
桃子爱吃玉米
Serializable 接口底层原理?
在复习JavaSe的时候,注意到Serializable 接口是空接口。比较好奇,Serializable 底层是如何实现序列化相关操作的?
希望大佬们可以解答一下
桃子爱吃玉米
如何让 pytest 不要屏蔽被测试程序的标准输出?
pytest 命令加一个 "-s" 就行
把 "python -m pytest common" 改成 "python -m pytest -s common"
桃子爱吃玉米
django写接口状态码封装,有更好的方案?
import json
from enum import Enum
from dataclasses import dataclass, asdict
from typing import Any
@dataclass
class StatusItem:
code: int
msg: str
class Status(Enum):
SUCCESS = StatusItem(200000, "success")
NO_AUTH = StatusItem(300001, "No authorization!")
class EnumEncoder(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, Status):
return asdict(obj.value)
return json.JSONEncoder.default(self, obj)
@dataclass
class Response:
status: Status
data: Any
def json(self) -> str:
return json.dumps(asdict(self), cls=EnumEncoder)
print(Response(Status.SUCCESS, {"age": 100}).json())
之后的所有响应都直接调用"json()"方法即可。
桃子爱吃玉米
React 组件中如何自动更新图表数据?
使用React封装的图表组件,如何实现自动更新图表数据?
桃子爱吃玉米
各位,electron如何配置rabbitMQ跟后台进行通信?
在Electron应用中使用 amqplib 库来连接到RabbitMQ服务器并进行通信
const amqp = require('amqplib');
// 连接信息
const rabbitMQConfig = {
hostname: 'your-rabbitmq-hostname',
port: 5672,
username: 'your-username',
password: 'your-password',
};
// 连接到RabbitMQ服务器
amqp.connect(`amqp://${rabbitMQConfig.hostname}:${rabbitMQConfig.port}`, {
username: rabbitMQConfig.username,
password: rabbitMQConfig.password,
}).then((connection) => {
// 创建通道
return connection.createChannel();
}).then((channel) => {
// 声明队列
const queueName = 'your-queue-name';
return channel.assertQueue(queueName).then(() => {
// 发送消息
const message = 'Hello, RabbitMQ!';
channel.sendToQueue(queueName, Buffer.from(message));
console.log(`[x] Sent '${message}'`);
});
}).catch((error) => {
console.error('Error:', error);
});
桃子爱吃玉米
如何取多个数组里第一个对象组成一个新的数组?
const data = {
"210.335": [
{ "id": "110" },
{ "id": "111" }
],
"212.135": [
{ "id": "120" },
{ "id": "121" },
{ "id": "122" }
],
"212.335": [
{ "id": "130" }
]
};
const result = Object.values(data).map((item) => item[0])
桃子爱吃玉米
Java 批量写入 Excel 文件的方法?
怎么往Excel文件里面批量写入数据?
语言是JAVA,请教一下各位有相关的实现方案吗?
桃子爱吃玉米
AMH 阿里云CentOS_64安装AMH提示证书过期问题?
AMH 阿里云CentOS_64安装AMH提示:
错误: 无法验证 dl.amh.sh 的由 “/C=US/O=Let's Encrypt/CN=R3” 颁发的证书:
颁发的证书已经过期。
"image.png" (https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241104/4597ccb77a23296c1d2888fc00c075ef.png)
尝试了很多次
桃子爱吃玉米
不用采用ref,v-model怎么给Antdv Input赋值?
或许你还需要修改一下节点中的innerText
桃子爱吃玉米
VueRouter中存储路由的参数是什么?
在路由导航守卫中,router.addRoute(getMenuRoutes(menus,
homePath));这段代码添加了动态路由,VueRouter存储的路由在哪个参数里?我在router.options.routes中只找到了静态路由,没发现添加的动态路由
"image.png" (https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241104/5430a72e67bc2500ff04f4926675578e.png)
const router = new VueRouter({
routes,
// mode: 'history',
mode: 'hash',
scrollBehavior() {
return { y: 0 };
}
});
router.beforeEach(async (to, from, next) => {
if (!from.path.includes(REDIRECT_PATH)) {
NProgress.start();
}
// 判断是否登录
if (getToken()) {
// 还未注册动态路由则先获取
if (!store.state.user.menus) {
store
.dispatch('user/fetchUserInfo')
.then(({ menus, homePath }) => {
if (menus) {
router.addRoute(getMenuRoutes(menus, homePath));
console.log(router);
next({ ...to, replace: true });
}
})
.catch((e) => {
// console.error(e);
next();
});
} else {
next();
}
} else if (WHITE_LIST.includes(to.path)) {
next();
} else {
}
});
***
"image.png" (https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241104/fd06c2d0368d87da98f62ca31b6c76f3.png)
if (menus) {
router.addRoute(getMenuRoutes(menus, homePath));
console.log(router.getRoutes());
console.log(router);
next({ ...to, replace: true });
}
桃子爱吃玉米
vue, 计算属性如何赋值?
问个问题, vue computed不建议赋值, 因为computed是个只读对象, 但是computed不是有个set吗, 我现在在composition
api, setup语法糖中想使用set并且给computed赋值该怎么做呢
桃子爱吃玉米
有没有用于处理 JSON 中的函数和正则表达式的通用 npm或函数?
1. 你这样做很危险呀,很容易被攻击
2. 不记得见过这样的包,不过感觉深度遍历+函数构建就行了
桃子爱吃玉米
解决夸克、QQ、UC浏览器保存base64图片失败问题?
关于夸克、qq、uc等浏览器保存base64图片问题?
使用各品牌手机自带浏览器和chrome保存是没有的。只要使用这些浏览器就会保存失败。
1. 直接将base64字符串赋值给图片,提醒用户长按保存,默认浏览器保存成功
uc与夸克点击保存都是没有任何反应
2. 将base64转为blob,并且使用a标签下载
var arr = response.tempFilePath.split(',');
var bytes = atob(arr[1]);
let ab = new ArrayBuffer(bytes.length);
let ia = new Uint8Array(ab);
for (let i = 0; i < bytes.length; i++) {
ia[i] = bytes.charCodeAt(i);
}
var blob = new Blob([ab], { type: 'application/octet-stream' });
var url = URL.createObjectURL(blob);
var a = document.createElement('a');
a.href = url;
a.download = new Date().valueOf() + ".png";
var e = document.createEvent('MouseEvents');
e.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
a.dispatchEvent(e);
URL.revokeObjectURL(url);
夸克、uc、qq都是下载一个.bin结尾的文件,并且会保存失败
"9b0ac6cea5f358ec31c09762df266fe.jpg" (https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241028/e5bb32ab3b9101c452cd057a1b17f480.png)
"a29177e894573cb57254b2c1a96e9c0.jpg" (https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241028/0a61cc44480a71872973c0d8aa1d24b1.png)
"d7d2f218857d0de2788fac16a5da95b.jpg" (https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241028/769b02795a2cdb5c51acf2d4c8131792.png)
不知道有没有解决办法?
桃子爱吃玉米
为什么同样的 html ,线上打不开百度的 url?
这个是大部分图像托管平台都会使用的 【防盗链】 机制,为了保护版权、防止盗图之类的行为,会为非正常访问的请求进行拦截
一般来说,会通过 "token" 或者 "Referer" 等进行校验,判断你是浏览器访问还是在外链图片
正常来说是 不推荐 绕过的,但也并不是没有办法,例如更改 "referer" 规则、字符串替换图源加载等,如果只是短期需求,那删除
"@f_auto?token" 及其后面的内容即可(不保证不会再次被拦截)。当然,通过浏览器把图片缓存到本地可以避开这个问题,就是不适合批量替换
出于对版权保护的尊重,本回答只解释产生原因,不提供具体解决方案,这些方案在网上是有很多的,题主可自行解决
桃子爱吃玉米
这段代码是否应该扣绩效?
对于烂代码是否应该扣绩效:
如果你是老板:应该
如果不是:跟你没啥关系
桃子爱吃玉米
我是不是应该拿ubuntu服务器版替换到CentOS7?
现在主流都是换成ubuntu或者Deepin系统,推荐使用ubuntu
桃子爱吃玉米
uni app打包后,css资源不存在,不想引入,怎么解决 ?
是不是把h5项目放到二级目录下了?
如果是的话,可以修改 "public" 配置项,调整为 "./" 就可以了。
如果不是的话,得看发起的请求URL是什么。不过一般都是二级目录的问题。
***
Edit
哦,"uni-app" 中不支持在 "vue.config.js" 中配置 "publicPath"。
请在 "manifest.json -> h5 -> router -> base" 中配置。
参考文档
"#base 应用基础路径 - manifest.json 应用配置 | uni-app官网" (https://link.segmentfault.com/?enc=d%2FaCn%2FC%2Fd4Z3YDWBOl88aw%3D%3D.asfT%2Fty4KsZHwYCdxN6B4m%2BdxJhOI8vGSALPL1JJaiHJ%2BMn%2FGQCL4e7G4XYXM87Qv8PlXVXxAfj%2FG9vAraEbTzKdQq7RuFJ%2FHX1jRA%2Bi5kg%3D)
桃子爱吃玉米
electron如何设置控制台默认停靠在右侧?
每次更改后重新启动又恢复原样了,真烦,不习惯新窗口,只想设置停靠在右侧
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241016/32328cd43f10d05593c33f179ccd1057.png)
桃子爱吃玉米
如何修改 Vite 配置以显示源码?
提供一个我用 vscode 编辑器调试的配置
// .vscode/launch.json
{
"type": "chrome",
"request": "launch",
"name": "Launch Chrome",
"url": "http://localhost:3000",
"webRoot": "${workspaceFolder}"
}
url 是应用启动后的路径。然后按 F5 启动调试,会在源码中触发断点
桃子爱吃玉米
如何快速在可变区间内求元素总和?
有没有一种数据结构,可以快速求区间内的元素总和、快速修改区间元素值、区间大小可变(头插头删尾插尾删),最好空间占用不超过4N
目前研究了下树状数组和线段树,头插头删一个元素时都需要重新建树,这样开销太大
桃子爱吃玉米
vue3 父级传给子组件render函数时的scopeId和父级不一致?
实在要在子组件做那就只能用非标方式,直接从"vnode"上拿值写入,
"return () => h('div', { class: 'comp',[getCurrentInstance().parent.type.__scopeId]: '' }, props.r())"
从命名上也知道这是个私有属性,最好是不要用
桃子爱吃玉米
如何在前端项目中简单优雅的使用 svg 图标并且适应排版?
不考虑一下
"iconify" (https://link.segmentfault.com/?enc=0FqeEv%2BfeA8bZPzYooI43Q%3D%3D.AmfiNj%2BttDNq2J8kYHGbL2pCqVFNbltCX22sphSSeL0%3D)
吗?
桃子爱吃玉米
vue 首次登陆成功进入页面获取不到store值?
if (code === 0) {
localStorage.setItem('userInfo', data.username)
commit('SET_USERINFO', data)
} else {
改成:
if (code === 0) {
localStorage.setItem('userInfo', data)
commit('SET_USERINFO', data)
} else {
桃子爱吃玉米
echarts 3D渐变色不生效?
看起来是因为ECharts的Bar3D不能应用渐变色吧……我看Demo中都是通过堆叠实现的。
这里是一个通过堆叠的方式模拟的渐变色 Bar3D 例子, "🔗 Examples - Apache
ECharts" (https://link.segmentfault.com/?enc=cByH5k5RHlVgW3s7k5lKuA%3D%3D.bTPCVWejJS304%2F8JbuXD3%2B3aRwXc6%2BnmifLpd73BOMnm7P4wX5XMDLgGPFO2VbuECUAO3NkXpa30GBIjhXZ1vO%2BoCXShc6Xht6G5oOwp2xt2swkzUex6UtGJdG0gHdTdf%2F1s3nkATfunaw6eYrjsluAphaM3OqZaZxdmjscL54o35zQkKmxa1IDEy3smzhigxIjn%2Fh9bCC%2BCPZQow0f2TK6JdG57VFUgUXDh%2FPMWf6E8tbJeKJu9TYRzmZBp2PkYQxRHIibbPAAQzuRIfB6egtJOeYUykuFiy0aebAsOak5GdflTW97%2BunW7UTby%2B0qk5lUP47xKeZtL%2BK3MtVc8Dg712fNDgg%2F2nxfUhJI4x3zhca%2BTKphr16NNcSG5TV0agZZJvat3ekIcEV6NDl3kQBjn%2Fat1BGWAe9xlQ4lxL%2FYWT4ssM%2B157ercZqEbWeLgdUURPpie2T1QCbUiOSaLxkOdGX0camD4NeczXJfyerxGuLIzVW8F6IwTLb3SlXEX3tiMkr%2BCADa%2FCjZFV6at4ACqQQukicUl01Vl3oYNuMZF%2FccONONHfMULhW2pEEBvYa7mnnnF%2Blen3WCONGDCGWKqPrt3Scwwu%2FUzFsbcOKbHVFMW9br9CT3VCZHM3Gu%2BrCa6phyAKC7HyNE5GnnMmCg51UOL%2FvVTE%2FMXN1EOAw0o2ztidmnTDGn1Q%2BwPdLWmXXc62MriyXlUMN0c6tXOEwXL4Ao%2BOyottX3zw0pKZsJ5ExrqUyw6syP0Hh9DpvIxw79FB8bnVq99qq9LYI59gheydnLkBaL%2F8PBjiuRHaO6lgTG%2B3DOrQu1sQ3%2Bmwdt291ZO3aZjOCX%2FKkE5u29QcvxZTsx1NP5Ao7SblfdT9v%2Bfx2NHj39%2BIwy2MPqUKjOLqRoYEoiZO8AEmMKQVXIMOpJ5%2BfLM6mbO%2FhGcq7%2FZ%2FacI0rGkGrsKvJAbABBZCdQIvukPQGzlu2mmm3bvSrgSLTtCb%2FYkYMJPMHl1a7%2FxXsBbKU6tNo2SOhgpmPQETjf%2Fj89sN00Hlx%2Bzq7urZ%2F4wxecDruQkQOgqOWG2XRDw%2BFGudd%2BNBHH3WDzJS2HbpLZed0v89p1uvB%2BBcr2kxSo7IP3H1Fc98TiPSgX4A3QgXPniiDWr9jmr7qJbNHNNrZVpzt%2B6uxwS9kvZkFOFo3LcsEFhs88y7j9HExk9t5HG6H5wCN7nc1ip92MtoR9AzBu3iiSXTnmEoRqF91dZ7Fqww%2F8R1sUD18p2zgDZ10sT3nhmFafer55q4%2Fgb5uNwkdyUDr5dhMWo%2BIzhwNaIHWPbvTTnuu8iKO0ey9NNrI0Gn8AwWvJlhCGn2fem%2FS%2FOViP34weMjGACctvH%2FJTayGWf4m7duKXnwJK0FOL2p9jWvI1U%2BD6SR1HYi8hUb5ECYJ%2FpHDmJUAyO%2FMZVztG68jA%2F01%2Bx0DYJHW7DOO6r9Z0ACySpW85UEt3PXpcVtRVfM3ITWlDqVcgU%2B8XQT6EdVeYDVWwpTThXz6PwowVN5Bnr2YNyZ6JeMlAOQgacNV65FHYUrqqcUHUvucgULe0THLnYWqmYzKyJKG1f2VLGtORExUiaJiXapa0U9Uy08AJ5aLD6VgLqhccdy4L7XmC6I7fcGMX8oeYxrOF8Oa2EexGEejzUmXUs%2BM4zwSrXlPPWK%2BtuaRySaiXWkVv%2F4eCn7Y0WF%2Bgdk6yYyVYaqXPFjiegeUioZaNRVPPURjLFEEwVy28f6sSbRZGNt%2BurhEnDaggXWERbrLZa3Jq5TL1OO750byaboN%2FR%2B0uUsL2DjPt0pV5E2az0cnUFLgd9O6TeR9sqfZWCP2JteIWL9abz28xuo7e0KCfRathqqGH%2FJ7LfbQpQeWsF5aX9Sn7P2uosIYiEiww7tzFvgIh1aHwmYJZsAuLjkuzeljrJM4C%2BtnTvOzJmbUNIkP%2BwPTO6IqTxdlyQUoq6NtLxWa86s6M0t%2ByGgdHoHzapoFWWgVZZ32AHWGZeqbl3qcv%2FxhpKa8QVcQvr2KoBN%2FabD6q3WXfilyNFAlFGK8GEpRUVWtx6%2BWEcVp%2B5AIZ5g3jhKfU7hZYjQYhPITJnshzxxcM5G%2FntVgCYFLN%2FLPs7FtfTgQOuaIEhZPmX%2FewweOtLTNO3IaWT6c7Aj2kBQDxFeIdqG%2BdLgcAAoD0%2F3i3cneS0jDRI6YWTczwrx9m%2BgAcdHPyV%2BeMnPD5i3tcJe57UY8uomL8hTZZh6XOkAICGkCLmI6yqXFD2fOWiodBdXTUmLhL1wQMgp%2BZh6ZKEE7ckyktvc0U%2BFP7LFMqfaT2ldI%2B4MYxpVuvtuR2FHIXRUvT8qHn85a3RKzObxMRUIKkjlWFWH8MRBcuVLlvUewC5%2FAz3ZJOnqqDBdzX4bB%2F%2BiDJcAKLA9g%2BXQSx3bJ11RjSiZotXvcbD%2BCpsAxoQgDoEMWsmOnUinuv9XqsOdGyFfPDGkvae5IfdLDmyGZzA8aJBau9ebYV%2FElrPsUaZQJifCl7Tsq9zcYEn6ws3fePi3a8SdKcBLSgOPJCATfVO%2BiLNYPLvVtbKJk0kl%2BkmWEjF2FZ%2BXQC2HdSq9NE4CwxwxMqG3Y%2FzyBvvGD%2B3IWHS4dGUccgADWMrK%2Bv%2F5IcmNEW%2Bm%2FsrKOfKBAYIS51CXe2bIU3lsavYCszZ8SCv%2FbiWLmsj2vBTnGvNY46V4vi6%2BRxC5yLin9UpclEHVDbbGJsGP%2FgQc%2Blbkq%2BcdHx9ls5AtyV8vhuzV3NDpePBZdqe3lr1CpTIoS%2B6yMTqXQXfkWnp4SeK8g5b43EIvAE1OBudHCQvad2O46V1RBmLKg9p6loVJzYQzhZiXphDWfZOyVCQxOh8Sn4XzwzF24yX2zIKzhoOYmKZrfvLpw9JAb3a8h1oV4sEzRqFsCCNamQikdwr14Vrc3cUppDaxkVpl8gVwWDzZ%2BekQJ7%2Fs71bVYApkSpe2r1BtoQGHh1g%2Fs4tiaeAXW5XmWK7k6nL5MYqu3aQjHpHGdd%2FKujRFib4vZyPiQSCWyxtpBSXieRNE1e01WlXgsr0Hh2lfkB2deLOVwzio3gFkCtnR1CVoVDCWME5ZszK0kt6FSLQCIl0wIQIzsVVhBNa0jJh6E6CGViYvzSXE7g%2B4t9LMomDOZkUN9%2FUMnroJnbHBv5a%2F%2B4I6Bd1s2%2F%2F1da0pOIB%2BaW5vecDK6tFVOVu%2BgDBtc1l0ENU07SAtIAC4as42voMIomw3QlnBx0xrSFre49E5vMx2zy9yyVLAFYclOLEebK9GNPcN9dhPMer15nW97Y1rIJqdY5H1qtB7nOiGDBK5HmcGx2AguM%2FHXTrGu3zLW6NGUCcq%2BjEw87tK%2Bj93nnjOI2IHyRS5przri6UED0uhPWzoCZfJKPXxkEkQXpuxIlgoXaqQ159qtkOOKrSugxfrhZSdnRWpVMKXCohcJO3FXrRugVU8Zw8jBiFv6fJ8Vnl3ZiFST6cjA3aytDZzh0odockHTLG)
"图片.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241012/141cd72646f7d3d25e18212a6c11404c.png)
桃子爱吃玉米
vue3 监听浏览器窗口关闭事件,该如何实现在窗口close前发送请求记录日志,并确保后台请求一定能执行完成?
window.addEventListener('beforeunload', () => {
let blob = new Blob([JSON.stringify(params)], {
type: 'application/json',
});
navigator.sendBeacon(window.location.origin+'请求路径',blob);
})
window.addEventListener("unload", () => { //部分手机可以获取到
let blob = new Blob([JSON.stringify(params)], {
type: 'application/json',
});
navigator.sendBeacon(window.location.origin+'请求路径',blob);
})
window.addEventListener("pagehide", () => {
clearInterval(timer)
let blob = new Blob([JSON.stringify(params)], {
type: 'application/json',
});
localStorage.setItem('pagehide','pagehide')
navigator.sendBeacon(window.location.origin+'请求路径',blob);
},false);
document.addEventListener("visibilitychange", () => {
clearInterval(timer)
let blob = new Blob([JSON.stringify(params)], {
type: 'application/json',
});
localStorage.setItem('visibilitychange','visibilitychange')
navigator.sendBeacon(window.location.origin+'请求路径',blob);
})
window.addEventListener("visibilitychange", () => {
let blob = new Blob([JSON.stringify(params)], {
type: 'application/json',
});
localStorage.setItem('winvisibilitychange','visibilitychange')
navigator.sendBeacon(window.location.origin+'请求路径',blob);
})
桃子爱吃玉米
确保先拿到上一个script 引入js get请求的结果,再走下一个js 文件中的内容,应该怎么修改呢?
你应该先理解浏览器加载 JS 的机制,然后再设计你的逻辑。比如,使用 "" 标签加载的话,如果没有 "async"、"defer"
那么它们就是顺序加载。而 Promise 不会影响下一个 JS 的加载和执行。
所以你的需求有两种做法:
1. 在下一步的函数里验证开关,即 public key 是否已经加载
2. 等待 public key 加载完毕,再加载后面的 JS
桃子爱吃玉米
proxifier设置代理浏览器网页打不开了怎么办?
重启了下浏览器又好了😅
桃子爱吃玉米
求教,formData 错误 [Symbol(state)]: [ { name: 'file', value: '[object Object]' } ] 如何解决?
原因找到了,自己少引用了 "const FormData = require('form-data')"
桃子爱吃玉米
chrome devtools 中 network 标签,开启 preserve log,查看历史页面发起请求的 response 是无法查看,是为什么。怎么能查看历史的 response?
F12抓取,为什么淘宝的登录接口没有响应体数据返回呢?
"https://segmentfault.com/q/1010000044648400/a-1020000044648676" (https://segmentfault.com/q/1010000044648400/a-1020000044648676)
桃子爱吃玉米
苹果的Vision Pro网页交互?
苹果的Vision Pro浏览网页用手势操作(比如点击,输入等),这些网页需要额外做什么适配吗
在网站上看别人使用,发现可以直接用手势点击,有些好奇
桃子爱吃玉米
vue项目动态配置页面favicon图标,使用htmlWebpackPlugins插件,配置后,页面空白,加载不出来,提示js.runtime.xx.js报错?
问题出在这里,这个js的引入不对,之前写的是js[name]的形式,所以导致js无法正常加载,但是我后面尝试把它改成js.[name]也依然不行,后面我就继续找文档,发现改成具体的字段就行,不能用[name]的形式去生成
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241009/1f80e1474e1743a1046995f9a162a97e.png)
桃子爱吃玉米
HSP是否可以依赖HSP产物,如果不行,如何解决该问题?
HSP是否可以依赖HSP产物,如果不行,如何解决该问题?
大型项目中,设计多个业务组件(HSP)依赖 基础组件(HSP),因为HAR被依赖后会产生多份,故基础组件选用HSP,但是经测试,hsp无法依赖hsp产物
桃子爱吃玉米
关于前端跳转如何携带Token?
新手提问:
第一次用JavaWeb做一个小项目,但是在用户登录模块这边遇到了一个问题:
由于我是做的类似于管理之类的前端项目,登录页面和主页面都是两个页面。在登录页面第一次登录成功后,后端会返回Token值给前端,前端如何做到跳转到主页面的时候也在请求头里加入Token值呢?因为在后端我是用了每一个请求都检查请求头的Token值的方法
目前Cookies、url拼接已经试过,都可以,想试试其他方法..
桃子爱吃玉米
有没有mitmproxy的替代品,但性能比其好,并且可编程?mitmproxy脚本如何使用协程?
BRO - Bro、HAProxy - HAProxy 、OpenResty / Nginx Lu、Suricata、ModSecurity WAF、
mitmproxy 本身并不直接支持协程
桃子爱吃玉米
el-form表单回显问题?
formTable是reactive定义的吗,直接赋值一个新对象导致丢失响应式了,可以换ref
const formTable = ref(null)
//watch
formTable.value = props.selectData