拽嘻嘻
前端有什么方法可以在线预览doc的吗?
如题
不是docx,是doc,内部资料,不调用微软那个
在线查看pdf,docx,xls,xlsx,txt等等..都写好了
拽嘻嘻
地图如何根据数值自定义区块颜色?
类似 vchart 这样的填充地图("https://visactor.io/vchart/demo/map-chart/basic-map" (https://link.segmentfault.com/?enc=gcwsh5sBtyGET%2FE7ShJE6A%3D%3D.SeJQcm8XNlyile%2BY5ypZTvgvCptSRaEB%2FURwuv2cy4NrPHTCfCin%2FJm6J%2BkTTotj7CqyV38TEP48%2Fgu%2F9YbqGg%3D%3D)),怎么能自定义区块颜色的规则?示例里的配置不太符合我的需求。我希望当值在某个区间,显示一个指定的颜色。
拽嘻嘻
window.open()跳转,会被浏览器拦截?
浏览器规定,在用户主动操作后的一小段时间里(忘记多久了,大概几百ms),可以 "window.open()",超过了,就先屏蔽。
所以有两个方案:
1. 更快速的响应,确保不被浏览器阻挡
2. 获得 URL 之后换成一个比较明显的按钮之类的东西,让用户自己点
拽嘻嘻
token盗用问题?
在前后端分离的项目中,如果客户端携带的token被其他人获得了,其他人使用该token请求得到该用户的数据。有什么方法可以解决这个问题吗?
目前想到的是:在token中携带登录时的设备IP,同时采用对token进行签名避免篡改,在请求数据的时候验证IP是否一致,不一致则返回重新登录。
拽嘻嘻
用产生式得出最短巡查路线的距离的算法是什么?
比如5个地点ABCDE,两两之间可直达,彼此距离也知道,从A出发巡查其他4个地点后回到A,问最短的距离是多少?
我做的是选择题,只有答案,不知道步骤如何来的。
https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250103/3e20ac1ad744d7a0494d063add9f247d.png
拽嘻嘻
用产生式得出最短巡查路线的距离的算法是什么?
比如5个地点ABCDE,两两之间可直达,彼此距离也知道,从A出发巡查其他4个地点后回到A,问最短的距离是多少?
我做的是选择题,只有答案,不知道步骤如何来的。
https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250103/3e20ac1ad744d7a0494d063add9f247d.png
拽嘻嘻
Nuxt3 用 i18n 控制台提示这个是什么意思?
@nuxtjs/i18n 的 bug,升级到最新版吧。
«"https://github.com/nuxt-> modules/i18n/issues/2394" (https://link.segmentfault.com/?enc=%2FGegqJLvieX8bqgpUZyhRA%3D%3D.eLVsG7tA2ftbdmpxfARwuoP4v%2FQ3EDItI1k%2Feg4Qshj6BKS98jkw0zk%2BL3nyKzzdLbUIhFZj6PDN1C%2BnGZI6pg%3D%3D)»
拽嘻嘻
vue3版的uniapp在路由这块有好的方案吗?
直接使用vue-router按照官方文档正常操作或者使用这个"gowiny-uni-router"
拽嘻嘻
js 怎么设置缓存有效时间?
需求是在缓存中存放一条数据, 并且设置有效时间1分钟? 应该怎么实现?
localStorage.setItem("test", "123");
在文档中没有找到设置时间的方法
"https://developer.mozilla.org/zh-CN/docs/Web/API/Storage/setItem" (https://link.segmentfault.com/?enc=Rq%2BsXMTYf1eGWs5MpiCv2w%3D%3D.5n1qx8O1ze3Tvr9BiuCrtXZN%2BcMNyB2Onr33DBDMUZpRYpWFN9nQQgvEVIKHx4brC8Api0%2BFZzMpr6l9uh%2B53jRwjmFIHwFzuzYPbuWvhHM%3D)
拽嘻嘻
大家好,A进程用multiprocessing起了一个进程B,然后A断了,停了,怎么找B呢?
from multiprocessing import Process
import os
def f(name):
print('hello', name)
if __name__ == '__main__':
p = Process(target=f, args=('bob',))
p.start()
# 保存进程B的PID
with open("process_b.pid", "w") as file:
file.write(str(p.pid))
# 假设这个地方A进程停止了
用kill命令来停止进程B
kill $(cat process_b.pid)
用进程组:
import os
from multiprocessing import Process
def f(name):
os.setpgid(0, 0)
print('hello', name)
if __name__ == '__main__':
p = Process(target=f, args=('bob',))
p.start()
with open("process_b_gid", "w") as file:
file.write(str(os.getpgid(p.pid)))
# 假设这里A进程停止了
用kill命令来停止进程B组
kill -- -$(cat process_b_gid)
没提前写的话:
用命令行工具:
ps aux | grep '进程B的一些特征'
或者用第三方库:
pip install psutil`
然后:
import psutil
for proc in psutil.process_iter(['pid', 'name', 'cmdline']):
if '进程B的一些特征' in proc.info['name'] or '进程B的一些特征' in str(proc.info['cmdline']):
print(f"找到进程B: PID={proc.info['pid']}")
拽嘻嘻
vue 如何动态的给子组件设置不同的指令?
Vue.directive('input', {
bind(el, binding) {
if (binding.arg === 'number') {
// 数字输入处理
el.addEventListener('input', function(e) {
e.target.value = e.target.value.replace(/[^0-9]/g, '');
});
} else if (binding.arg === 'text') {
// 文本输入处理
}
}
});
组件里:
export default {
data() {
return {
items: [
{ id: 1, type: 'number', directive: { arg: 'number', value: '' } },
{ id: 2, type: 'text', directive: { arg: 'text', value: '' } }
]
};
}
};
拽嘻嘻
样式应用到标签内生效,应用到标签类就失效?
已经试过在标签前添加/deep/,::deep,均无效
SN
.sn {
width: 100%;
display: flex;
.row_sn{
.col_sn{
display: flex;
padding:0 5px 0 5px;
line-height: 35px;
}
}
}
拽嘻嘻
在局域网内有什么方法可以快速把一台电脑的文件夹复制到另一台电脑?
文件夹大概有 50G,主要由小文件组成,大概有 10W 个文件左右
拽嘻嘻
大数组查找优化的一个问题?
var arr1=[2,4,5,7,10]
var arr2=[1,2,3,4,5,6,7,8,9,10,11,1,12,5......]//假如这个数组中存在大量数据
arr1.map((item)=>{
arr2.map((current,index)=>{
if(item == current){
.....
arr2.splice(index,1);//如果每次符合条件后,我就把符合过条件的数据从这个大数组中删除,减少下一次循环时候的数据量。结果发现这样不行,结果不对了。
}
})
})
我有这样两个数组需要循环匹配出结果,如果没有用splice,出来的结果是正确的。但是我想优化下循环查找的代码,发现结果不对了
后来我又试了下splice函数
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241221/e73f0e3a7c67c42a3a11f7d540b96b5f.png)
发现果然结果和我预想的不同了
请问上面的代码我该如何降低每次的循环量?
拽嘻嘻
大佬们,Typescript如何把一个包里所有的方法当做类型或接口?
"runtime: typeof wailsjs"
拽嘻嘻
在NonRegisteringDriver 中已经实现了java.sql.Driver 为什么Driver 还要实现java.sql.Driver?
public class Driver extends NonRegisteringDriver implements java.sql.Driver
public class NonRegisteringDriver implements Driver
是为了规范吗?
拽嘻嘻
如何将容器高效打包成docker镜像?
理论上镜像大只会影响初次下载的速度,对于其他操作其实并没有影响,其实不用太介意镜像的大小
拽嘻嘻
为什么xxl-job和海豚调度 执行任务时结果要返回给admin/master处理, 而不是执行器/worker直接更新结果?
"xxl-job" 和
"海豚调度"(DolphinScheduler)是两种不同的任务调度框架,它们采用将任务执行结果返回给"admin"或"master"节点的方式,而不是让执行器/worker直接更新结果有一些合理的考虑:
1. 分布式任务执行 :在分布式任务调度框架中,任务可能会在不同的执行器/worker上执行。将任务执行结果返回给"admin"或"master"节点允许集中管理任务结果,确保结果的一致性和集中式的任务监控。这对于大规模任务调度非常有用。
2. 异常处理 :任务执行可能会失败,抛出异常或需要额外的处理。如果任务执行器/worker直接更新结果,这可能会导致部分执行结果丢失或无法正确处理异常情况。将结果返回给"admin"或"master"节点允许在这些节点上执行更多的异常处理和结果存储。
3. 安全性 :通过将任务结果返回给"admin"或"master"节点,可以提高安全性,减少任务执行器/worker对任务结果的直接访问。这可以帮助防止潜在的安全漏洞或数据泄露。
4. 任务状态管理 :任务调度框架通常需要跟踪任务的状态(例如,已完成、失败、挂起等)。将任务结果返回给"admin"或"master"节点可以更轻松地管理任务状态,以便后续的监控和处理。
虽然将任务结果返回给"admin"或"master"节点可能会引入一些额外的网络开销,但它提供了更好的任务管理、异常处理和任务状态监控的机会。这种方式更适合需要高可用性、稳定性和集中化管理的大规模任务调度系统。然而,对于小型任务调度需求,也可以选择更简单的方法,允许执行器/worker直接更新结果,取决于具体的使用场景和要求。
拽嘻嘻
electron打包后的桌面端能否同时支持外部浏览器访问?
需求如下:electron打包后的exe不仅能支持桌面端运行,也能支持外部浏览器访问。外部浏览器主要应用于局域网环境下其他电脑通过外部浏览器访问其他电脑上安装的electron应用。
我想了一下,开发时是可以通过外部浏览器访问的,照理说打包后应该也可以魔改支持的。
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241203/d4a66c5ffbb3b06e7b12363b694bb823.png)
另外需要注意的是在渲染线程中应该是不能使用nodejs的api的,除渲染层外应该都是可以的吧?(不确定)
另外我这个需求还有什么更好的方法吗?简单来说桌面端必备,除此支持局域网环境下外部浏览器远程访问
拽嘻嘻
后端处理一个较大的json文件返回数据给前端太慢该如何优化?
总共有1000条信息展示,我现在想到的是在前端使用轮询来解决,有没有更好的方案来解决网络慢数据大,我应该在后端怎么处理
拽嘻嘻
如何把游戏移植到网页端?
主要是看你希望重制,还是仅在网页中运行N64游戏。
如果是重制,那你可能需要了解一些Web端的游戏引擎,或者支持生成Web平台游戏的引擎。这条路成本比较高。
如果只是希望在网页里游玩的话,可以直接搜索Web端的N64模拟器就好了。
我搜了搜,看到有如下的网站,你可以自己搜一搜其他的网站,应该有现成的网站可以直接使用。
"https://www.playemulator.io/n64-online/" (https://link.segmentfault.com/?enc=okkQUJuEh9e7oy7PbulwOQ%3D%3D.vZevqurTJjyCeL%2FX3MiCt3ZnTZhhbsoEftVFSPDfIxNpGwRqCeULwIIeI5A%2Bg7%2Fl)
拽嘻嘻
这个文件夹显示隐藏这种功能该怎么做?
https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241123/d165ad3a8b6e5c9a7d42a50e04da4c66.png
如果这个文件夹是通过循环出来的,如果字符串很长,全部显示字符串的时候怎么不影响布局
拽嘻嘻
内存和性能配置不足是导致应用程序运行缓慢或崩溃的主要原因吗?
排除代码性能问题的话,硬件就是这个根本问题了
拽嘻嘻
想用Vue写一个页面组件,可以插入多个子模块,数量不定。 请问怎么写?
"https://play.vuejs.org/#eNqVU8tu2zAQ/JUFe7AUCNQht0A10BY5tIcma..." (https://link.segmentfault.com/?enc=fII%2B%2BX6OcUjv4Xt%2BUrPxIw%3D%3D.l7lS%2B%2Fef8hXMtdzvek5QhqTZidybqe3oqvxNn14zP%2BFRlw1bYhlvIyIZW2gTGCb242uwB0PDx5Bg77Og9z4ZxAc54%2BLjFMWnb7CAyAmK1xocSg0S0PokOwwFAReLtH%2BVW5SDrWTf34N9J62YF8Fe2qU%2BWx5CqQG2JotZEgAD8wzMB6KHsu%2BpkO7TSOFiZ0tLQoGmjlWoqaIKIrZMNvbrHbaZCipBs9KILOcCT3sjpVt1bCRH4Qzn2PqWOY4ETlpuogS8bZ3j9bX2C9wqNaKKdMH49CpsooLug7rc8dvnAxC3NdOKHDRfuRXtBPrRdkRMR6cBgHsxiM9zzvblARxHw0NYtfO6eTvUf6XvO9KzYoeOvjNxL9CiehnkdIDo2tiYSYGUM7ZpEmAGk6zQ%2FT4Nr6Xqus5RGI0gdjt%2BFAn4SgN2gisYNCNyRVQOX%2FsZ26WtJRVwchi9SvYY355cE8Jxi1xWYQnfHgMRrSuKA1nYaHbuzbUz3KyhfCYiTqF3WF92tBCSkGduRs3b%2B1SslOpo7R%2FHDajLFyX6Y3E6dbLiuehjXLBlGw7V%2Fu8e%2BDuJduP%2FGwRyL%2Bzt%2BDLccHphJKIi8lFS0XX%2FEHpnBeJxE9RPOXt1Z%2BbXKRnv8AOwZ6zwlYGNW36Nq3wRZPxoblMlK3fFZ7ooQdIOCjcONvH1EOPxPDpXvfwA%2BqlYmTy5f68LA45rUlWk3WbXd8iFzwzzuin%2BkLYwzwwR4O1lTTouv7z3SxR8u0Js5CJgn8My3vHFKuajHAzqCyqD2NQteY7pqH3y8eth0ZiPCqSSx%2BlkdJY1cR59WVhzBQ838jqH10Jt%2BuiWCmPwleSTJlPSylVB6r4tgQ%3D%3D)
拽嘻嘻
改变e.target.value的值,v-model监测不到数值的改变是为什么?
el-input标签,使用自定义指令,只允许输入数字,同时使用el-from的必填验证。
当先输入汉字,再输入数字的时候,e.target.value可以正确拿到输入项,但是表单验证的value拿不到e.target.value,但是document.getElementById('XXX').value的方式,却可以拿到正确的值,是为什么。
此为自定义指令代码
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241118/8dbe352d14f694de8916233ecde63ed0.png)
此为el-input部分代码
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241118/54aa12836b1f17b78168ab0c1abb78b1.png)
此为表单验证必填项代码
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241118/d105e9a160d8948fb345ab6aa2bdd597.png)
此为控制台输出
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241118/581fe80688509b966f0dd7f19d3b8ff1.png)
拽嘻嘻
找不到模块“@/router/index”或其相应的类型声明,已经做了相关配置但仍然无效,怎么回事啊?
找不到模块“@/router/index”或其相应的类型声明,已经做了相关配置但仍然无效,代码能够正常运行,但就是会有红色警告
"1700518078924.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241116/cffe8b1a9ac8ec6f09d9c16bad341948.png)
大佬们,我代码里已经做了配置
"1700517988496.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241116/0bbef2d405894bfdd4bf36842f854c0d.png)
"1700518045267.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241116/c402397fdb01327cc245cc67fbf7b84c.png)
求解决办法
拽嘻嘻
ts 如何使用可选类型下的下属属性的类型?
let t: (LineSeries['areaStyle'] & {})['color']
拽嘻嘻
pnpm会重复安装同一个版本的依赖?
比如
pnpm add electron@25.2.0
* 我修改了先安装的"E:\Electron模板\node_modules\electron\install.js"
* 然后在另一个项目安装"electron@25.2.0"
查看"E:\Project\Electron\xxx\node_modules\electron\install.js"
发现内容还是原始内容
«修改的原因是网络环境问题»
请问如何只保留一份呢?
我还安装了全局的"electron@25.2.0",但报错说找不到"electron",可控制台能找到,如果有全局包,pnpm还会安装局部包吗?
***
补充说明为什么要改源码
* 国内网络问题,不想多说
* 方便开发——独立开发,无其他参与者
electron安装问题不用多说了吧,所以我用魔法把zip包下载后解压到d盘下,然后指定electron目录就行(理论上),实际electron的安装文件也提供了此种用法:
function isInstalled () {
try {
if (fs.readFileSync(path.join(__dirname, 'dist', 'version'), 'utf-8').replace(/^v/, '') !== version) {
return false;
}
if (fs.readFileSync(path.join(__dirname, 'path.txt'), 'utf-8') !== platformPath) {
return false;
}
} catch (ignored) {
return false;
}
const electronPath = process.env.ELECTRON_OVERRIDE_DIST_PATH || path.join(__dirname, 'dist', platformPath);
return fs.existsSync(electronPath);
}
但无论是 path.txt还是ELECTRON_OVERRIDE_DIST_PATH,在我这都没效果,我之前问过:
"https://segmentfault.com/q/1010000043826388" (https://segmentfault.com/q/1010000043826388)
但没有解决问题
我看代码主要就是为了下载electron本体并返回路径,我就直接返回了我解压后的路径,它工作的很完美……
因为我的项目是纯自用,无其他开发者,但每次做新东西都要改一边代码,很烦……
或许我直接上传一份自用的是最好的办法了
拽嘻嘻
python中国内有像thinkcmf一样的php框架吗?
thinkcmf算不上纯框架,介于框架和cms之间
拽嘻嘻
为什么域名可以访问,ipv6却报403?
为什么用域名可以访问,用ipv6地址就报403?
https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241111/011e9e0a4c36464927b69794fc22a6bc.png
域名:"https://note.youdao.com/web" (https://link.segmentfault.com/?enc=zlpPc0dstyIiBXxjr%2FSscw%3D%3D.mrWJGL4FKCIPa74oFBigIUkiVB2ivx63TAgD26Mxzj4%3D)
ipv6地址:https://[2408:8719:64:a9:3::3ee]/web
内网屏蔽与域名,所以我想用ip访问,除此之外还有什么方法
拽嘻嘻
java如何跳出switch?
public Object test(){
int i = 2;
switch(i){
case 0:
//todo
break;
case 1:
//todu
break;
case 2:
test01();
if(满足条件){
停止switch后续的代码,去return
}
test02();
test03();
//todu
break;
default:
break;
}
//这里实际情况需要执行好多业务后才返回计算出的数据
return "success";
}
拽嘻嘻
如何在Chrome性能面板查看XHR Ready State Change的请求来源?
chrome performance面板中,火焰图上有些task对应的是XHR Ready State Change,但是怎么看这个XHR Ready
State Change是对应的哪个请求。 我看有些截图上这个XHR Ready State
Change上会标注出对应的请求,但我这个却没有显示,是需要哪里设置一下吗?
"image.png" (https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241107/f017f692b67dcc019c8f725880e631ef.png)
网上找了很多,没找到关于这里的地方
拽嘻嘻
uniapp如何正确下载MP3文件到手机本地(支持ios和安卓)?
uniapp怎么下载MP3文件到手机本地呢,包括ios和安卓端?
async function handleDown(url) {
uni.downloadFile({
url, //文件链接
// header,
success: (res) => {
//statusCode状态为200表示请求成功,tempFilePath临时路径
console.log(res.tempFilePath);
var add = res.tempFilePath;
if (res.statusCode == 200) {
uni.saveFile({
tempFilePath: add,
success: (res) => {
if (res.errMsg == 'saveFile:ok') {
uni.showToast({
title: '保存本地成功',
});
}
},
fail: (err) => console.log(err),
});
}
},
fail: () => console.log('下载失败'),
});
}
这样写似乎没用呢
拽嘻嘻
如何在TypeScript中重命名类型索引?
type TypeA = {
[key in keyof A as `A_${key}`]: A[key]
}
拽嘻嘻
API返回空值的原因是什么?
为什么代码获取不到API返回的数据?
import random,requests,json
ip = [
"49.104.25.257",
"39.115.131.116"
]
api = "http://ip-api.com/batch?fields=58898?lang=zh_CN"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36 Edg/119.0.0.0",
"content-type":"application/json"
}
ip = json.dumps(ip,ensure_ascii=False, indent=2)
print(ip)
resp = requests.post(url=api,data=ip,headers=headers)
print(resp.status_code)
print(resp.text)
resp.close()
"执行结果" (https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241101/87f30f2f15a1b18fc157992f4161b446.png)
API是免费版本, 每分钟限制45次请求,使用POST请求方式, URL中的fields=58898是返回指定字段.
我在API的网站查询IP没有问题, 但是代码中一直返回空值, requests也没有报错, 所以现在有点不知道从哪里下手了, 请大佬们帮我分析一下,
或者给点思路! 跪谢!
拽嘻嘻
小白求助,这种爬虫问题怎么解决????
两个建议
* 学一下HTTP知识,学一下Xpath语法
* 学会断点调试
***
"douban.com/subject{bianma}/comments" 这边 "subject/{bianma}"少东西,URL不对
response = requests.get(url=url, headers=headers)
if not response.ok:
# 对响应做个校验
raise Exception(f'url: {url}, status_code: {response.status_code}, content: {response.content.decode()}')
拽嘻嘻
React中处理JSON数据到特定格式的方法?
请问react中如何将json数据处理成下面这种情况
"image.png" (https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241022/a04b5124ed591b2b287253b126eeda65.png)
暂无
拽嘻嘻
如何在事件监听器中传递 'this' 参数?
addEventListener('keydown', myFunction),
removeEventListener('keydown', myFunction)
怎么在myFunction传参数 this?
function myFunction(_this){
console.log(_this)
}
解决方法:
removeEventListener
123
// 点击事件函数
const eventClickFunc = (e) => {
handleDivClick(e, this)
}
const container = document.querySelector('.container')
container.addEventListener('click', eventClickFunc)
// 监听 click
function handleDivClick(e, _this) {
console.log(e.target, _this);
}
// 取消监听 click
function onRemoveEventListener() {
console.log(1);
const container = document.querySelector('.container')
container.removeEventListener('click', eventClickFunc)
}
拽嘻嘻
springboot定时任务如何实现指定日期+间隔执行?
一般实际开发的简单实现中,首先定义好该类被扫描进入容器, 在启动函数上添加@Scheduled(cron = "表达式"), 表达式按照你的规则进行设定
例如: cron表达式设定
"* * 0/2 5 6 3 2024"
秒 分 时 日 月 星期几 年 位置用*号表示就是不指定
意思: 2024年六月五日星期三从凌晨开始没两小时执行一次
记不住也可以用一般的在线cron表达式生成
"https://www.matools.com/cron" (https://link.segmentfault.com/?enc=MmdXLIYlNKEPRZj5ukimqQ%3D%3D.upPsGxGLfIfOxUQpIrYXiJ2zuPRdJFjmAfflJXP6JeU%3D)
单体服务一般可以直接使用springBoot这种注解方式,但是存在多个节点的记得加上一个分布式锁
拽嘻嘻
电商平台中,商品在编辑的时候,原skuId什么情况下会删除?
个人感觉:
* 场景1也不一定就不会删除,还要看后端的具体实现,有些简单的实现是每次更新,都会直接删除掉旧的,然后新增新的,用删除和新增来替代修改,不会有实际的修改的操作。其他两种是会绝对删除的。
* 解决这个需要后台增加判定,当涉及到sku的变动时,先判定是否有还未结束的订单或有哪些正在参与的活动,只有下架后才能修改;或者是所有的订单或活动相关的单据都做冗余字段,保存当时的sku相关信息。
* 像是京东、淘宝这些,他们都有下单时的商品快照功能,每次产品的更新都会存储一个快照,然后订单和这个快照关联,这样即便是修改了,历史的单据也不受影响。
拽嘻嘻
python selenium网页爬虫多线程并发执行偶尔会报错,请问是什么原因?
公司有个需求需要将动态html保存为pdf文件,准备用python+selenium实现。调用chromedriver的Page.printToPdf命令,在页面加载完成后获取打印的response,最后转为pdf保存。考虑到并发性,用多线程模拟测试发现偶尔会出现报错,单个执行又没问题,不知道啥原因
python 3.9.0
selenium 4.16.0
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support.expected_conditions import staleness_of
from urllib.parse import urlparse
import json
import base64
import threading
import time
def test():
webdriver_service = Service(r"D:\work\chromedriver-win64\chromedriver.exe")
webdriver_options = Options()
webdriver_options.binary_location = r"D:\work\chrome-win64\chrome.exe"
webdriver_options.add_argument('--no-sandbox')
#webdriver_options.add_argument('--headless')
webdriver_options.add_argument('--disable-gpu')
webdriver_options.add_argument("--remote-debugging-port=9225")
webdriver_options.add_argument("--incognito")
#webdriver_options.page_load_strategy = 'eager'
#webdriver_options.add_argument('--disable-dev-shm-usage')
webdriver_prefs = {}
webdriver_options.experimental_options['prefs'] = webdriver_prefs
webdriver_prefs['profile.default_content_settings'] = {'images': 2}
driver = webdriver.Chrome(options=webdriver_options, service=webdriver_service)
print(driver.session_id)
driver.get("https://www.baidu.com")
driver.quit()
if __name__ == '__main__':
t1 = threading.Thread(target=test)
t2 = threading.Thread(target=test)
t3 = threading.Thread(target=test)
t1.start()
t2.start()
t3.start()
Exception in thread Thread-2:
Traceback (most recent call last):
File "C:\Users\Lenovo\AppData\Local\Programs\Python\Python39\lib\threading.py", line 950, in _bootstrap_inner
self.run()
File "C:\Users\Lenovo\AppData\Local\Programs\Python\Python39\lib\threading.py", line 888, in run
self._target(*self._args, **self._kwargs)
File "C:\Users\Lenovo\Desktop\canon\pythonProject\http\convert_html.py", line 104, in test
raise e
File "C:\Users\Lenovo\Desktop\canon\pythonProject\http\convert_html.py", line 102, in test
driver = webdriver.Chrome(options=webdriver_options, service=webdriver_service)
File "C:\Users\Lenovo\Desktop\canon\pythonProject\.venv\lib\site-packages\selenium\webdriver\chrome\webdriver.py", line 45, in __init__
super().__init__(
File "C:\Users\Lenovo\Desktop\canon\pythonProject\.venv\lib\site-packages\selenium\webdriver\chromium\webdriver.py", line 61, in __init__
super().__init__(command_executor=executor, options=options)
File "C:\Users\Lenovo\Desktop\canon\pythonProject\.venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 209, in __init__
self.start_session(capabilities)
File "C:\Users\Lenovo\Desktop\canon\pythonProject\.venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 293, in start_session
response = self.execute(Command.NEW_SESSION, caps)["value"]
File "C:\Users\Lenovo\Desktop\canon\pythonProject\.venv\lib\site-packages\selenium\webdriver\remote\webdriver.py", line 348, in execute
self.error_handler.check_response(response)
File "C:\Users\Lenovo\Desktop\canon\pythonProject\.venv\lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 229, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: disconnected: Unable to receive message from renderer
(failed to check if window was closed: disconnected: not connected to DevTools)
(Session info: chrome=120.0.6099.71)
Stacktrace:
GetHandleVerifier [0x00007FF6341E4D02+56194]
(No symbol) [0x00007FF6341504B2]
(No symbol) [0x00007FF633FF76AA]
(No symbol) [0x00007FF633FE0839]
(No symbol) [0x00007FF633FE06EB]
(No symbol) [0x00007FF633FDEE3D]
(No symbol) [0x00007FF633FDF603]
(No symbol) [0x00007FF633FDE026]
(No symbol) [0x00007FF633FEEC0F]
(No symbol) [0x00007FF633FE02A8]
(No symbol) [0x00007FF633FDEE3D]
(No symbol) [0x00007FF633FDF603]
(No symbol) [0x00007FF633FDE026]
(No symbol) [0x00007FF633FE8394]
(No symbol) [0x00007FF633FE02A8]
(No symbol) [0x00007FF633FDEE3D]
(No symbol) [0x00007FF633FDF603]
(No symbol) [0x00007FF633FDE026]
(No symbol) [0x00007FF633FE55B2]
(No symbol) [0x00007FF633FE02A8]
(No symbol) [0x00007FF633FDEE3D]
(No symbol) [0x00007FF633FDF603]
(No symbol) [0x00007FF633FDE026]
(No symbol) [0x00007FF633FD5EEA]
(No symbol) [0x00007FF633FDD62D]
(No symbol) [0x00007FF633FDD1DF]
(No symbol) [0x00007FF633FF9931]
(No symbol) [0x00007FF633FD040E]
(No symbol) [0x00007FF633FCFCAC]
(No symbol) [0x00007FF634070A1C]
(No symbol) [0x00007FF634065C23]
(No symbol) [0x00007FF634034A45]
(No symbol) [0x00007FF634035AD4]
GetHandleVerifier [0x00007FF63455D5BB+3695675]
GetHandleVerifier [0x00007FF6345B6197+4059159]
GetHandleVerifier [0x00007FF6345ADF63+4025827]
GetHandleVerifier [0x00007FF63427F029+687785]
(No symbol) [0x00007FF63415B508]
(No symbol) [0x00007FF634157564]
(No symbol) [0x00007FF6341576E9]
(No symbol) [0x00007FF634148094]
BaseThreadInitThunk [0x00007FF97B5E7C24+20]
RtlUserThreadStart [0x00007FF97C3CD4D1+33]
拽嘻嘻
hibernate存放指定Id,防止被hibernate自动生成的id覆盖?
设置了hibernate的Id生成策略,但是现在要存放指定的Id,要怎样才能 防止被hibernate自动生成的id覆盖?
关闭生成策略,但是现在要开启生成策略。
拽嘻嘻
vue(js)如何监听一个json对象是否发生了改变?
写个计算属性,值是JSON.stringify(json),然后watch?不过部分类型会被过滤掉,你的需求是不是想判断用户是否编辑,如果编辑在关闭时增加提醒。
拽嘻嘻
使用 Iframe 跨域访问子页面无法获取 子页面的localstorage?
可以获取到啊,看看你是不是有一些其他的业务代码影响到了?
还是说你的 "Storage" 里面本来就是空的,所以你获取不到?
"图片.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241014/ec02e20cd1da25d03205019a53425c7d.png)
***
Edit 01/15/24
补充使用 "localhost:8080" 访问 "127.0.0.1:8081" 截图:
"图片.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241014/b7a83d033897d0ec541bf238bb0ec844.png)
Edit 01/16/24
所以OP其实想要做单点登录,那么简单的如果是同一个顶级域名下的不同的子域名。可以通过在设置 "Cookie" 时把 "domain"
设置为顶级域名。这样就会应用到顶级域名下的所有子域名。
如果不是同一个顶级域名下的,那么就是通过CAS的方式来实现单点登录,简易流程如下:
1. 用户打开应用页面;
2. 应用发现用户未登录;
3. 跳转到 "CAS server" 登录页让用户登录;
4. 登录成功,服务端生成 "Service Ticket",并将 Ticket 作为参数携带跳转回应用;
5. 应用获取 Ticket 参数并发送给后端验证;
6. 后端验证 Ticket 是否有效,验证通过后完成登录操作。
"单点登录(SSO)看这一篇就够了" (https://segmentfault.com/a/1190000040049585)
拽嘻嘻
react 的路由是否可以写在模块里?
我用 react 写了一个页面,在这个页面里有几个模块,其中一些模块都有 a 标签,比如
footer.jsx
import React from 'react';
const Footer = () => {
return (
blog
help
)
}
export default Footer;
我想实现的是,当点击这里的 "blog" 或者 "help" 后会访问对应的页面,"blog" 访问 "/blog","help" 访问 "/help"。
然后在各自的页面里,可以重定向到其它的页面去,比如
"blog" -> "/blog" -> "https://blog.domain.com"
"help" -> "/help" -> "https://help.domain.com"
我的问题是
* 是否可以将这些功能都在这一个 react 模块 footer.js 里实现?
* 是必须要在项目文件 app.jsx 里写路由吗?在 app.jsx 里写路由,然后做重定向,比如 import React from 'react';
import { BrowserRouter as Router, Route, Switch, Redirect } from 'react-router-dom';
import Footer from './Footer';const App = () => {
return (
);
};export default App;
我这么考虑的原因是,如果每一个模块里的链接,都能在模块本身写路由之类的,会方便很多,如果都要到 app 这里来写路由,会感觉很奇怪。
路由
拽嘻嘻
MinIO 如何对上传文件进度监控?
minio如何获取上传文件进度?
使用putObject,看文档并没有关于获取上传进度相关参数
拽嘻嘻
如何根据条件截取字符串?
没太看明白你的需求,如果意思是“将文本分为以标题标签开始(到下一个标题标签或者文本末尾结束)的若干段”的话,可以这样写:
''.split(/(?=
拽嘻嘻
如何合理的定义接口出入参更优雅?
如何合理的定义领域模型
CREATE TABLE `user`
(
`id` VARCHAR(64) NOT NULL COMMENT '主键ID',
`name` VARCHAR(64) NOT NULL COMMENT '姓名',
`email` VARCHAR(32) DEFAULT NULL COMMENT '邮箱号',
`mobile` VARCHAR(16) DEFAULT NULL COMMENT '手机号',
`password` VARCHAR(128) DEFAULT NULL COMMENT '密码',
PRIMARY KEY (`id`) USING BTREE
) COMMENT = '用户表';
CREATE TABLE `employee`
(
`id` VARCHAR(64) NOT NULL COMMENT '主键ID',
`user_id` VARCHAR(64) NOT NULL COMMENT '用户ID',
`employee_no` VARCHAR(32) NOT NULL COMMENT '工号',
PRIMARY KEY (`id`) USING BTREE
) COMMENT = '员工表';
CREATE TABLE `department`
(
`id` VARCHAR(64) NOT NULL COMMENT '主键ID',
`parent_id` VARCHAR(64) NOT NULL COMMENT '父ID',
`name` VARCHAR(64) NOT NULL COMMENT '部门名称',
) COMMENT = '部门表';
CREATE TABLE `user_department`
(
`id` VARCHAR(64) NOT NULL COMMENT '主键ID',
`user_id` VARCHAR(64) NOT NULL COMMENT '工号',
`department_id` VARCHAR(64) NOT NULL COMMENT '部门ID',
`sort` INT DEFAULT 0 COMMENT '用户在部门中显示顺序,值越大越靠前',
) COMMENT = '用户与部门关联表';
用户与员工一对一,员工与部门多对多。用户是员工才能有部门
1.创建部门、更新部门、获取部门详情信息
2.创建用户、更新用户、获取用户详情信息
如何合理的设计这几个接口的出入参数、提供代码的通用性且好扩展
拽嘻嘻
vm虚拟机Linux系统连不上外网Network is unreachable?
GATEEWAY = 192.168.138.1
改这个
拽嘻嘻
如何从ElementUI表格的scope.row中获取嵌套数据?
elmentui table里的 scope.row如何取下面类型数据结构最内层的数据https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241011/7bff4feaed7b026909fd2d6268295b74.png
{{scope.row.bidTitle}}
{{scope.row.endTime}}
1