kunkun小黑子
IP:
37关注数
0粉丝数
77获得的赞
工作年
编辑资料
链接我:

创作·70

全部
问答
动态
项目
学习
专栏
kunkun小黑子

请问一般数据库的表的字段是预先创建的,还是在运行项目的时候创建的?

比如我们在开发一个后端项目, 里面使用mysql数据库, 请问常规做项目的情况下对数据库的表的初始化操作,里面的字段是在项目第一次启动之前就预设好了,还是指的是,在第一次启动项目的时候,看到表不存在,然后再进行创建表呢?
18
1
0
浏览量294
kunkun小黑子

按下数字键如何检测输入法是否有候选词?

场景: 1.只想输入0-9 所以拦截了非0-9的所有按键 但是如果用户使用中文输入法,按下一堆字母后,虽然按下的是数字。但是输入的是候选词。 这里有办法拦截吗?我只想输入0-9 几个难点: 1、这里不考虑从输入后的内容去识别处理 2、输入组件使用的是div + contentEditable 所以没有input 的 change input 事件,
16
1
0
浏览量239
kunkun小黑子

后端敏感操作如何验证合法性?如何防止抓包模拟请求?

例如游戏后端有一个接口用来确认玩家完成关卡奖励一定数量的金币,在真实业务场景中是如何防止有人抓包后来模拟发送这个请求的?
9
1
0
浏览量329
kunkun小黑子

用户真实的点击操作和代码模拟的点击操作有什么区别呢?例如NodePlayer中对于用户真实事件的监听?

怎么区分点击事件是用户的真实操作还是代码触发的呢? 目前在使用NodePlayer播放器时遇到一个问题,使用它的自动播放时,一开始视频是没有声音的,得点击一下才有声音,官方API给出的解释以及解决方法如下: "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250110/3b71bcaeed80d3da4c7dfb01f8d96b05.png) 官方API说当点击播放器的时候,声音可以恢复。 但如果我们想实现无感知操作,不想让用户再多一步点击操作,通过在代码里自己调用click去触发点击事件,声音恢复无效。 但无论是使用.click和创建一个点击事件其实都能触发监听点击事件的方法,说明代码触发的点击是生效了的,但为什么声音恢复无效呢?NodePlayer官方API上说“需要由一个真实的用户交互操作来恢复,不能使用代码”,但两者都是能触发监听点击事件的方法,NodePlayer是怎么区分到底是真实的用户操作还是代码触发的呢? var btn = document.getElementById('btn'); //自动点击方法一 var event = new MouseEvent('click', { 'view': window, 'bubbles': true, 'cancelable': true }); btn.dispatchEvent(event); //自动点击方法二 btn.click() //监听点击事件 btn.addEventListener('click', function() { console.log('被点击了') }); NodePlayer相关文档地址:"https://www.nodemedia.cn/doc/web/#/1/3" (https://link.segmentfault.com/?enc=9yMKIXWJBmICxFXpAIh15A%3D%3D.wlubGtGakTd%2B3A2SUiOmWN2TOxCkOUPifWibn8JQPjK90H1OmDkfLmrLF8HDJ%2B0i)
18
1
0
浏览量296
kunkun小黑子

图表中如何自定义tooltip的位置,偏移量?

我在使用VChart图表时,遇到了图表提示框与鼠标指针距离很近的问题,这样一来在高分辨率的大屏幕上鼠标指针放大后可能会遮挡提示框,有没有什么办法能解决这个问题? "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250109/af3f586b34bcdf895ed6037eda4ccf17.png)
16
1
0
浏览量356
kunkun小黑子

el-tooltip如何设置不在body中?

用"popper-options" "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241230/513d14e27dcf8dc9ec15866ca237c2e5.png) 文档链接: «"https://popper.js.org/docs/v1/#modifiers..preventOverflow.bou..." (https://link.segmentfault.com/?enc=AYs9rfTO2pg2IG%2FLNJ9Y2Q%3D%3D.xLJG9ah26YhyfkxbU2KmiJmXC%2Bcs2ejCY0fgqHuc6pWxzCud0Jiu%2BHmOom0tA8mWdXWb39CoCip0t7d81z%2Bncie4aoh3I4XOfWvFvASp5nM%3D) ![image.png](https://wmprod.oss-cn-> shanghai.aliyuncs.com/images/20241230/84d4f1498e6c3b5457286201d23a97fe.png)» «Boundaries used by the modifier. Can be scrollParent, window, viewport or any DOM element. 翻译过来是: 修饰符使用的边界。可以是scrollParent, window, viewport或任何DOM元素。» «"https://juejin.cn/post/7044449121595293733" (https://link.segmentfault.com/?enc=qcSYJZDYocnEphJfnTUzaQ%3D%3D.qLRxnZ9U18RfP0UVGLd2jsNfGcegE3tiryQg3cDNFTcmsVA1626wgvZqrXOWUSJ8)»
0
0
0
浏览量0
kunkun小黑子

容器内安装amh不会自动启动?

docker里没有init服务项,就不能自动启动,容器会自动关闭看是否CMD的进程关闭了原因,amh-start只是脚本并不会一直停留,估计需要改脚本与命令,或是直接用docker的exec来启动看看,服务器启动同样执行。 建议是直接安装amh,目前没有专提供docker版本,如果是考虑安全,amh上也有安全沙盒模式可以隔离(类似模拟linux的运行目录)
0
0
0
浏览量0
kunkun小黑子

模2运算的除法具体步骤是怎么样的?

假设计算9除以2的模2运算,即"9 mod 2" 。 1. 首先将被除数9和除数2写在一起,从左到右依次计算 1 0 0 1 (被除数 9) ÷ 0 0 1 0 (除数 2) 2. 第一位:被除数的最高位是1,除数的最高位是0。商的当前位为1,并将被除数和除数都向右移动一位: 1 0 0 1 (被除数 9) ÷ 0 0 1 0 (除数 2) --------- (商 1) 3. 第二位:被除数的当前位是0,除数的当前位是0。商的当前位为0,并将被除数和除数都向右移动一位: 1 0 0 1 (被除数 9) ÷ 0 0 1 0 (除数 2) --------- 0 (商 10) 4. 第三位:被除数的当前位是0,除数的当前位是1。商的当前位为1,并将被除数和除数都向右移动一位: 1 0 0 1 (被除数 9) ÷ 0 0 1 0 (除数 2) --------- 01 (商 101) 5. 第四位:被除数的当前位是1,除数的当前位是0。商的当前位为1,并将被除数和除数都向右移动一位: 1 0 0 1 (被除数 9) ÷ 0 0 1 0 (除数 2) --------- 011 (商 1011) 6. 最终的答案是商为1011,余数为0。因此"9 Mod 2 = 0"
0
0
0
浏览量0
kunkun小黑子

创建了一个目录后再次去操作这个目录,出现了Failed to set datadir to '/data/xxx/' (OS errno: 13 - Permission denied)?

有人遇到过类似的问题吗 有个程序,创建了一个目录,然后再次去操作这个目录,就出现了Failed to set datadir to '/data/xxx/' (OS errno: 13 - Permission denied)? =========================== 更新:问题已经解决 root权限的app执行了shell语句,并且指定用户为user1,要操作目录/father/execDir和这个user1的权限是一致的,不过这个/father/缺少了权限,少了结尾的x权限
8
1
0
浏览量405
kunkun小黑子

vue3项目中ts这种错误怎么包含进去进行eslint校验?

typescript 本身的 linter 是不认识 .vue 文件的。你需要单独安装 "@vue/eslint-config-typescript",然后 eslintrc 里加入: { 略 ... extends: [ '@vue/eslint-config-typescript', '@vue/eslint-config-typescript/recommended' // 二选一,一般用下面这个,有个别规则会更严格 ] }
0
0
0
浏览量0
kunkun小黑子

由于redis加锁需要时间,导致在加锁的时候已经有多个请求打过来了,请教一下有什么好的方法去限制吗?

用户多个请求同时发送,后端已经使用了redis锁对用户的uid进行限制,但是由于redis加锁需要时间,导致在加锁的时候已经有多个请求打过来了,请教一下有什么好的方法去限制吗
7
1
0
浏览量257
kunkun小黑子

babel报错Invalid typeof value: array, 是bug还是特性?

原因是写了typeof xxx == 'array', 虽然不能这么用,但是也不应报错啊,这是babel的bug还是特性? Invalid typeof value: array at createTypeAnnotationBasedOnTypeof (C:\Front\fe\node_modules\@babel\types\lib\builders\flow\createTypeAnnotationBasedOnTypeof.js:29:9) at inferAnnotationFromBinaryExpression (C:\Front\fe\node_modules\@babel\traverse\lib\path\inference\inferer-reference.js:107:10) at getConditionalAnnotation (C:\Front\fe\node_modules\@babel\traverse\lib\path\inference\inferer-reference.js:138:20) at getTypeAnnotationBindingConstantViolations (C:\Front\fe\node_modules\@babel\traverse\lib\path\inference\inferer-reference.js:35:20) at NodePath._default (C:\Front\fe\node_modules\@babel\traverse\lib\path\inference\inferer-reference.js:22:14) at NodePath._getTypeAnnotation (C:\Front\fe\node_modules\@babel\traverse\lib\path\inference\index.js:77:22) at NodePath.getTypeAnnotation (C:\Front\fe\node_modules\@babel\traverse\lib\path\inference\index.js:41:15) at NodePath.ConditionalExpression (C:\Front\fe\node_modules\@babel\traverse\lib\path\inference\inferers.js:117:49) at NodePath._getTypeAnnotation (C:\Front\fe\node_modules\@babel\traverse\lib\path\inference\index.js:77:22) at NodePath.getTypeAnnotation (C:\Front\fe\node_modules\@babel\traverse\lib\path\inference\index.js:41:15) at NodePath.VariableDeclarator (C:\Front\fe\node_modules\@babel\traverse\lib\path\inference\inferers.js:62:27) at NodePath._getTypeAnnotation (C:\Front\fe\node_modules\@babel\traverse\lib\path\inference\index.js:77:22) at NodePath.getTypeAnnotation (C:\Front\fe\node_modules\@babel\traverse\lib\path\inference\index.js:41:15) at getTypeAnnotationBindingConstantViolations (C:\Front\fe\node_modules\@babel\traverse\lib\path\inference\inferer-reference.js:44:28) at NodePath._default (C:\Front\fe\node_modules\@babel\traverse\lib\path\inference\inferer-reference.js:22:14) at NodePath._getTypeAnnotation (C:\Front\fe\node_modules\@babel\traverse\lib\path\inference\index.js:77:22) at NodePath.getTypeAnnotation (C:\Front\fe\node_modules\@babel\traverse\lib\path\inference\index.js:41:15) at NodePath.isGenericType (C:\Front\fe\node_modules\@babel\traverse\lib\path\inference\index.js:136:21) at PluginPass.ForOfStatement (C:\Front\fe\node_modules\@babel\plugin-transform-for-of\lib\index.js:143:48) at newFn (C:\Front\fe\node_modules\@babel\traverse\lib\visitors.js:159:14) at NodePath._call (C:\Front\fe\node_modules\@babel\traverse\lib\path\context.js:46:20) at NodePath.call (C:\Front\fe\node_modules\@babel\traverse\lib\path\context.js:36:17) at NodePath.visit (C:\Front\fe\node_modules\@babel\traverse\lib\path\context.js:82:31) at TraversalContext.visitQueue (C:\Front\fe\node_modules\@babel\traverse\lib\context.js:86:16) at TraversalContext.visitMultiple (C:\Front\fe\node_modules\@babel\traverse\lib\context.js:61:17) at TraversalContext.visit (C:\Front\fe\node_modules\@babel\traverse\lib\context.js:107:19) at traverseNode (C:\Front\fe\node_modules\@babel\traverse\lib\traverse-node.js:22:17) at NodePath.visit (C:\Front\fe\node_modules\@babel\traverse\lib\path\context.js:88:52) at TraversalContext.visitQueue (C:\Front\fe\node_modules\@babel\traverse\lib\context.js:86:16) at TraversalContext.visitSingle (C:\Front\fe\node_modules\@babel\traverse\lib\context.js:65:19) at TraversalContext.visit (C:\Front\fe\node_modules\@babel\traverse\lib\context.js:109:19) at traverseNode (C:\Front\fe\node_modules\@babel\traverse\lib\traverse-node.js:22:17) at NodePath.visit (C:\Front\fe\node_modules\@babel\traverse\lib\path\context.js:88:52) at TraversalContext.visitQueue (C:\Front\fe\node_modules\@babel\traverse\lib\context.js:86:16) at TraversalContext.visitSingle (C:\Front\fe\node_modules\@babel\traverse\lib\context.js:65:19) at TraversalContext.visit (C:\Front\fe\node_modules\@babel\traverse\lib\context.js:109:19) at traverseNode (C:\Front\fe\node_modules\@babel\traverse\lib\traverse-node.js:22:17) at NodePath.visit (C:\Front\fe\node_modules\@babel\traverse\lib\path\context.js:88:52) at TraversalContext.visitQueue (C:\Front\fe\node_modules\@babel\traverse\lib\context.js:86:16) at TraversalContext.visitMultiple (C:\Front\fe\node_modules\@babel\traverse\lib\context.js:61:17) at TraversalContext.visit (C:\Front\fe\node_modules\@babel\traverse\lib\context.js:109:19) at traverseNode (C:\Front\fe\node_modules\@babel\traverse\lib\traverse-node.js:22:17) at NodePath.visit (C:\Front\fe\node_modules\@babel\traverse\lib\path\context.js:88:52) at TraversalContext.visitQueue (C:\Front\fe\node_modules\@babel\traverse\lib\context.js:86:16) at TraversalContext.visitMultiple (C:\Front\fe\node_modules\@babel\traverse\lib\context.js:61:17)
20
1
0
浏览量506
kunkun小黑子

AMH面板 》防火墙配置》常规禁止设置》勾选禁止内地,为什么不生效?

用的什么系统,与看勾选禁止『内地』IP访问后页面是提示哪些信息, 或看当前防火墙都有哪些规则, 另外一些旧系统,有可能一些软件包没安装成功,像系统软件源已经下架的, 这个情况的在面板重新安装一次amnetwork看安装过程有没报什么错误信息。 正常这个勾选后就行的,不用其它什么设置。
0
0
0
浏览量0
kunkun小黑子

如何解决使用 bs4 模块中 find_all 提取列表元素中包含回车符的现象?

1、场景:使用 BeautifulSoup 提取指定页面标签中类别为'green'的内容。 2、代码: from urllib.request import urlopen from bs4 import BeautifulSoup html = urlopen('http://www.pythonscraping.com/pages/warandpeace.html') bs = BeautifulSoup(html.read(), 'html.parser') name_list = bs.find_all('span', {'class':'green'}) for name in name_list: print(name.get_text()) 3、问题:提取 name_list 后发现在遍历的过程中,某些名字存在回车符号。例如:第一个元素应该是 Anna Pavlovna Scherer,但运行的结果是 Anna Pavlovna 和 Scherer,变成了两个元素。 我检查了一下该网页的源代码,HTML代码中 Anna Pavlovna 和 Scherer 之间的确存在回车符,这不影响浏览器显示,但在运行代码时就显示不正常了(变成两个元素)。 另外,我也考虑将 name 转换为字符串类型(str),这样可以替换掉元素中间的回车符,但这样的话后续就没有办法使用 .get_text() 方法了。 请问有没有在可以使用 .get_text() 方法的前提下,去掉 Anna Pavlovna 和 Scherer 之间的回车符,让两个元素正常确认为一个元素? 4、环境:Fedora Linux 38,Python 3.11.5,BeautifulSoup 4.12.2 感谢回答!
9
1
0
浏览量214
kunkun小黑子

vue组件内部props,两个相关异步数据,如何确保计算出结果?

export default { name: 'Test', props: { a1: { // 异步数据 type: Array, default: () => [] }, a2: { // 异步数据 type: Array, default: () => [] } }, data() { return { a3: [] } }, watch: { a1: { deep: true, handler(newValue, oldValue) { if (newValue!==oldValue) { this.initA3() } } }, a2: { deep: true, handler(newValue, oldValue) { if (newValue!==oldValue) { this.initA3() } } } }, mounted() { // watch里 不建议使用immediate: true this.$nextTick(() => { this.initA3() }) }, methods: { initA3() { if (this.a1 && this.a2) { // 对 a1、a2 进行运算后得到 a3,这里都是简化场景 a3 = a1 + a2 } else { console.log('看那个没有获取到') } } } }
0
0
0
浏览量0
kunkun小黑子

echars中左边的这个纵轴,可以改成图中这样的样式吗?

具体是指什么样子呢,不过你发的效果,文档中都有 "https://echarts.apache.org/zh/option.html#yAxis.axisLabel.for..." (https://link.segmentfault.com/?enc=5Z94rH1%2BXfDDX5TCXsidNw%3D%3D.sv%2Fq2F5nr%2BtQDV2oZv7C3cqeDyX4riGTeirafoHzNXBsDib6rvFvmnv3KKxjbf7WuDpMe5XJmz99CJ4TIKWTugB%2BEqVE%2BIpPAfOmXnLbde0%3D) "https://echarts.apache.org/zh/option.html#yAxis.axisLine" (https://link.segmentfault.com/?enc=44fnlt9zdCpx%2BoatMKTrbQ%3D%3D.Ckt3a%2BNyLAoiaAIcXlxPvrh47h5YQhXkNgalIEpJn9mqCLS3jKco9k9%2BM3VJNheWB9Nx7nSD0JFj3bdRiDfDqQ%3D%3D) "https://echarts.apache.org/zh/option.html#yAxis.axisTick" (https://link.segmentfault.com/?enc=%2FQxsCeCQ6%2FFaezABSk8qeg%3D%3D.zJoUpmz8uGuUwsLpk3uFg2%2F2fucaPsTaAaJCNg4vNEWJ5%2BGAwkL5xODEG0PfULaiaHsUj0K04yaEyBwyd6oOuA%3D%3D)
0
0
0
浏览量0
kunkun小黑子

Rust中借用和隐式重借用的区别?

rust新手,看到隐式重借用,有些不解,望能够帮忙解答。 下面代码都是重复可变引用,但为什么通过隐式重借用方式,就可以实现多个可变引用?rust不是明确说同一时间只能有一个可变引用吗? // err 能够理解,rust明确不能有两个可变引用。 fn compile_err() { let mut s = String::from("hello"); let r1 = &mut s; { let r2 = &mut s; dbg!(r2); } dbg!(r1); // compile ERR } // 但通过隐式重借用,为啥就可以,(*r1) 解应用的最终对应的不还是 s? fn compile_ok() { let mut s = String::from("hello"); let r1 = &mut s; { let r2 = &mut (*r1); dbg!(r2); } dbg!(r1); // compile OK }
12
1
0
浏览量284
kunkun小黑子

Go语言结构体如何跨包成为方法的接收者?

在项目中,我定义了平行的文件夹service和dao,如何将dao层的结构体作为service层方法的接收者?
go
11
1
0
浏览量374
kunkun小黑子

对弧长的曲线积分?

"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241214/0f7f9010eacb44003a7defd1c6ffd9b5.png) "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241214/1bd3d1852ee9de133f520577cb353f84.png) 求教大佬, θ的范围 0到Π是怎么得到的啊?
0
1
0
浏览量13
kunkun小黑子

疑惑:vue3使用props传递数据的时候,该属性是一个对象,实际情况下,到底推不推荐在子组件直接修改对象内部的属性?

你这种多组件处理同一对象的情况,可以使用"Pinia"来做啊。 // 定义store const useParamsStore = defineStore(); // 在每个组件里面直接使用 const params = useParamsStore()
0
0
0
浏览量0
kunkun小黑子

为什么 axios 在 catch 以后依然还在执行上面的逻辑?

"Api_Common"确实"catch"了,但是"catch"没有继续把错误抛出,"catch"返回了一个新的"promise",也就继续执行"Api_Account_Register"后面的"then"了 "MDN -Promise.catch" (https://link.segmentfault.com/?enc=rNmUm1WGPoKXzLGimwurgA%3D%3D.iS3onXQVELyl3QGLbUMFb%2BK0GOUzKrusqF55bGBVOQslKXZlk6wNhj5eRxVlwPN%2FgcHzocU7UO7G4g11cZHX67%2F4MLJmRKGwceElSSbKknxLD1VVbk5xV1ZxEZmAoF2AuLgF20bqpQ%2BUIEX1Aus1KitTjwp%2FvVrWTk%2FkFm%2BR%2B6VnfyawyLMSuUonTS34dHEF)
0
0
0
浏览量0
kunkun小黑子

node.js中装饰器decorators能单独用在独立的方法函数上吗?

是的,修饰函数你直接调用传入就行了"const test = LogError(function test() {})" "https://github.com/tc39/proposal-decorators" (https://link.segmentfault.com/?enc=YNliuknyrMwqK02Sb3wqYg%3D%3D.IdQQfMDD8H0owE9Kw%2FxSNDFa8iqeJPPGCGaBOyp%2BIrbTcMPY316mk5G3bQydMpV3) "截屏2023-10-24 20.49.51.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241204/6149fe5dd7306c3d5b51767ad1302a83.png)
0
0
0
浏览量0
kunkun小黑子

Docker同样的镜像,为什么容器占有内存不一样?

有个问题,我在本地虚拟机和云服务器 使用docker 启动同一个镜像,但本地和远程容器的内存占用差别很大 我确保使用的都是同一个镜像 这个是本地的linux中容器内存占用情况 1.4G "d5edc57f9304277dddee01232700013.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241202/9a5ac74a32d2ec2510c929ed859d8ba2.png) 这是远程的服务器容器内存占用情况,远程的这个容器应用并没有其他操作,跟本地相比整整多出快1个G,表示有点不理解 这是为什么 有没有大佬解释下 "8b1d139369aee15caced7bf5e5a3cd5.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241202/ce5590d280bfd2febafd67277dc5479d.png)
0
1
0
浏览量11
kunkun小黑子

小程序码如何解析出对应的路径以及参数?

你是想生成一个带参的菊花码、但这个小程序你却没有开发者权限? 那没辙。 菊花码是微信的私有编码协议,跟 QRCode 不一样,并没有公开编码标准。 网上倒是有人尝试过逆向,已经能根据菊花码得到里面的二进制数据了,但也仅仅到此为止了。因为你不知道编码方案,只得到一串 "01010101..." 你也还是不知道原文到底是什么。不知道原文,就更不可能知道菊花码里的带参路径是怎么生成出来的了。
0
0
0
浏览量0
kunkun小黑子

网站打开新页面时如果已存在则切换到现有的页面,否则重新打开一个页面,这要怎么实现?

web API 只能做到监听,做不到主动切换 如果是 chrome 插件开发,可以尝试 chrome tabs "change-chrome-tab-with-javascript" (https://link.segmentfault.com/?enc=b%2BGbfJaa413TlSwCQ3Q%2BbA%3D%3D.dw7y10X1H6VF9zxERgaEztG8v2miV76%2Bl66hJcCGQQ3Ke%2BbNSTIfnelzOadBJBA9sWeRkmSbGsx4QLkCXAw%2BfS7%2FL8banCZnjZLQq18XbdY%3D)
0
0
0
浏览量0
kunkun小黑子

RxJava的Observable订阅时如何作到在onComplete被调用时取消订阅?

暂时只能在onComplete中设置: CompletableFuture.complete来通知调用方结束了. 示例: Flowable由持久层方法返回,是调用方中的:"result.getAll(dbName.get(), strategy)" 和 "result.getTableColumn(table)" public class ConsoleSchemaFlowableOutput implements SchemaFlowableOutput { private final static Logger logger = LoggerFactory.getLogger(ConsoleSchemaFlowableOutput.class); private volatile CompletableFuture future = new CompletableFuture(); private AtomicInteger count = new AtomicInteger(0); @Override public Disposable flush(Information information, Flowable table) throws SchemaExportException { logger.info("Start Flowable Flush"); Disposable export_flush_complete = table.subscribe(tableIns -> { System.out.println(printAsciiTable(tableIns)); System.out.println(printAsciiColumns(tableIns.getColumns())); System.out.println("\r\n"); count.addAndGet(1); }, throwable -> { logger.debug("Export Break, reason: " + throwable.getMessage()); future.cancel(true); throw new SchemaExportException(throwable); }, new Action() { @Override public void run() throws Exception { logger.debug("Export Complete, Affect Size:"+count.get()); future.complete("OK"); } }); return export_flush_complete; } @Override public CompletableFuture getFuture() { return future; } ... } 调用方: public void export(Information info, SchemaFlowableOutput out) throws SchemaExportException{ long startStamp = System.currentTimeMillis(); // Flowable Flowable tableFlowable = result.getAll(dbName.get(), strategy).flatMap(new Function>() { @Override public Publisher apply(@NonNull Table table) throws Exception { return result.getTableColumn(table).flatMap(new Function, SingleSource>() { @Override public SingleSource apply(@NonNull List columns) throws Exception { return Single.just(table.fillColumn(columns)); } }).flatMapPublisher(new Function>() { @Override public Publisher apply(@NonNull Table table) throws Exception { return Flowable.just(table); } }); } }); Disposable disposable = null; try { disposable = out.flush(info, tableFlowable); CompletableFuture future= out.getFuture(); while(!future.isDone()){ logger.info("[ERE-Flowable]未完成,线程休眠1秒"); Thread.currentThread().sleep(1000,0); } String result = future.get(); logger.info("[ERE-Flowable]完成, 结果:"+result); if(result.equals("OK")){ long finishStamp = System.currentTimeMillis(); clearHander(disposable, "[ERE-Flowable]RxJava disposed because complete, WithTime: "+(finishStamp-startStamp)); } }catch (Exception e){ clearHander(disposable, "[ERE-Flowable]RxJava disposed has Exception: "+e.getMessage()); } } private void clearHander(Disposable disposable, String reason){ logger.info(reason); if(null!=disposable && !disposable.isDisposed()) { disposable.dispose(); }else{ if(null != disposable) { logger.info("[CH]disposable status:" + disposable.isDisposed()); }else{ logger.info("[CH]disposable is null:"); } } // 结束后的回调,执行一些清理工作 completeHandler.apply(); }
0
0
0
浏览量0
kunkun小黑子

一个ts问题,很伤脑筋?

先说问题,renderType是一个联合类型,Shape类里面可能有一些方法,方法名必须是renderType里面的一个,然后Shape类里面需要有一个添加的方法,就是给Shape添加方法,添加的方法名也必须是renderType里面的一个,问题就出在这个添加方法customShape上,报错,说现在的类里面没有renderType的其他方法,不知道应该怎么改。 type renderType = | 'rectangle' | 'ellipse' | 'round' | 'triangle' | 'round-triangle' | 'round-rectangle' | 'bottom-round-rectangle' | 'cut-rectangle' | 'barrel' | 'rhomboid' type returnSize = { width: number; height: number; }; type ShapeType = { [key in renderType]?: ( contentWidth: number, contentHeight: number ) => returnSize; // customShape: (shape: type.renderType, calcFunc: ( contentWidth: number, contentHeight: number ) => returnSize) => void }; export class Shape implements ShapeType { rectangle(contentWidth: number, contentHeight: number) { return { width: contentWidth + 20, height: contentHeight + 10 }; } customShape(shape: renderType, calcFunc: Function): void { this[shape] = calcFunc; } } "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241127/e4381405073648186992c8a08e53564b.png)
0
1
0
浏览量12
kunkun小黑子

java jna 动态库从资源路径载入问题?

开发了一个功能 jar 包,依赖动态库。为了方便分发,动态库打包到了 resources 目录, 用的 Native.loadLibrary 方法载入。 * 在 IDEA 开发环境下直接运行,正常。 * 打包 jar 自己运行,正常。 * 被其他项目以 jar 库形式依赖,其他项目调用接口,报错,找不到动态库。 *** 感觉这应该是一个比较常见的诉求吧,也不知道众多其他第三方库都是怎么处理的。
0
1
0
浏览量11
kunkun小黑子

如何在网页上实现对于3D CAD文件的解析预览?

曾经实现过一个解析CAD到Three.js的逻辑,主要的思路是遍历CAD文件中的几何顶点,然后转换成Three.js的逻辑。 这里不宜贴太长的代码,如果需要完整的"loader"代码,请私信我获取 这里给出核心代码: const handlePolygon = (vertices) => { // 点 const geomPositions = []; // 面索引 const geomIndexs = []; // 面的法向量 const geomNormals = []; // 计算当前存储了多少个点,每三个元素为一个点的坐标 let countVertices = geomPositions.length / 3; // 用来记录这个多边形的点在vertices中的位置 const tmpIndexs = []; // 遍历多边形的每一点 for (let i = 0; i { // 点 let geomPositions = []; // 面索引 let geomIndexs = []; // 面的法向量 let geomNormals = []; // 提取多面体的每个平面的点坐个 const polygonsArray = polygons.filter((polygon) => 'vertices' in polygon).map((polygon) => polygon.vertices); // 解析每个平面的点和面索引 polygonsArray.forEach((vertices) => { const { positions, indexs, normals } = handlePolygon(vertices); const geomIndexsLength = geomIndexs.length; geomPositions = geomPositions.concat(positions); geomNormals = geomNormals.concat(normals); geomIndexs = geomIndexs.concat(indexs.map((index) => index + geomIndexsLength)); }); const geomerty = new BufferGeometry(); geomerty.setAttribute('position', new BufferAttribute(new Float32Array(geomPositions), 3)); geomerty.setAttribute('normal', new BufferAttribute(new Float32Array(geomNormals), 3)); geomerty.index = new BufferAttribute(new Uint16Array(geomIndexs), 1); return geomerty; };
0
0
0
浏览量0
kunkun小黑子

puppeteer生成pdf多出 “正在生成中,请稍候...”文字怎么解决?

如题,前两天测试的时候还是正常的,今天突然发现生成的pdf多了空白页,有没有人遇到过啊? "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241119/ab05924c791f2727d70445b352b5f898.png)
0
1
0
浏览量21
kunkun小黑子

如何解决解决相邻border重合加粗问题?

"图片.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241119/df8b83fe29b3e6e023d2c81f0554ae6e.png) {images.map((a, i) => { return ( setCurrentIndex(i)} style={{ position: 'absolute', left: a.x, top: a.y, width: a.w, height: a.h, border:'solid 1px #00ff00', }} > ); })} 这里应该如何处理border重复加粗问题?
0
1
0
浏览量17
kunkun小黑子

前端上传文件 原理?

鄙人Javaer,对前端不太了解,想请教大佬们,前端上传文件的原理是什么(包括不限于表单上传、ajax上传) 比如,当点击上传按钮时,前端是如何将用户选择的文件转换成网络流,通过浏览器进行发送的? 前端小白,希望大佬们可以答疑解惑
0
1
0
浏览量29
kunkun小黑子

性价比高的云服务器推荐?

我搞了个图片网站,供用户上传下载图片,图片大部分都是分辨率比较高的,每张图都比较大。(大部分可能在10MB左右) 假如期望用户下载时有一个较高的下载速度,那么需要什么配置规格的云服务器?(带宽、存储空间、内存等)
0
1
0
浏览量12
kunkun小黑子

vue3项目打包上传hostinger跨域失败?

跨域浏览器是禁止跨域的,但是服务端不禁止,在本地运行npm run dev等命令时实际上是用node运行了一个服务器,因此proxyTable实际上是将请求发给自己的服务器,再由服务器转发给后台服务器,做了亦曾代理,因为不会出现跨域问题。所以跨域的配置只能在dev下生效,当你打包成静态资源,他不依赖与node了,跨域也不生效了,还是得api接口设置跨域配置
0
0
0
浏览量0
kunkun小黑子

Vue3 reactive对象使用const为何无法修改?

vue3 中 reactive定义的对象,用const 却不能修改对容,用let就可以,我觉得reactive不管用let还是const都应该可以修改,引用数据类型,不知道为啥const不能,求解答 let numberValidateForm = reactive({ name: "", }); numberValidateForm.name = numberValidateForm.name.replace(/\s+ /g, ""); //能修改,换成const就不能
0
1
0
浏览量13
kunkun小黑子

全局变量在ts文件中无法获取的问题?

main.ts中设置了两个全局变量,但是在axios/index.ts中显示无法获取是为什么呢 const app = createApp(App) const redirectUrl = document.querySelector("html").getAttribute("redirect-url") const loginUrl = document.querySelector("html").getAttribute("login-url") app.config.globalProperties.$RedirectUrl = redirectUrl app.config.globalProperties.$LoginUrl = loginUrl axios中: import { getCurrentInstance } from 'vue' const instance = getCurrentInstance()?.proxy //输出undefined const redirectUrl = instance?.$RedirectUrl //爆红类型“ComponentPublicInstance>”上不存在属性“$RedirectUrl”
0
1
0
浏览量16
kunkun小黑子

怎么把这个实时录音原生js代码变成vue代码(vue2.0那种)?

录音并传递给后台 开始对讲 关闭对讲 var begin = document.getElementById('intercomBegin'); var end = document.getElementById('intercomEnd'); var ws = null; //实现WebSocket var record = null; //多媒体对象,用来处理音频 var timeInte; function init(rec) { record = rec; } //录音对象 var Recorder = function (stream) { var sampleBits = 16; var sampleRate = 16000; var context = new AudioContext(); var audioInput = context.createMediaStreamSource(stream); var recorder = context.createScriptProcessor(4096, 1, 1); var audioData = { size: 0, buffer: [], inputSampleRate: 48000, //输入采样率 inputSampleBits: 16, //输入采样数位 outputSampleRate: sampleRate, //输出采样数位 oututSampleBits: sampleBits, //输出采样率 clear: function () { this.buffer = []; this.size = 0; }, input: function (data) { this.buffer.push(new Float32Array(data)); this.size += data.length; }, compress: function () { //合并压缩 //合并 var data = new Float32Array(this.size); var offset = 0; for (var i = 0; i { var outbuffer = e.target.result; console.log('文件读取后的结果', outbuffer) var arr = new Int8Array(outbuffer); console.log('转化的二进制数据', arr) if (arr.length > 0) { var tmparr = new Int8Array(1024); var j = 0; for (var i = 0; i = 1024) { tmparr = new Int8Array(1024); } else { tmparr = new Int8Array(arr.byteLength - i - 1); } j = 0; } if ((i + 1 == arr.byteLength) && ((i + 1) % 1024) != 0) { ws.send(tmparr); } } } }; reader.readAsArrayBuffer(audioData.encodePCM()); audioData.clear(); }; this.start = function () { audioInput.connect(recorder); recorder.connect(context.destination); } this.stop = function () { recorder.disconnect(); window.clearInterval(timeInte); audioData.clear(); } this.getBlob = function () { return audioData.encodePCM(); } this.clear = function () { audioData.clear(); } recorder.onaudioprocess = function (e) { console.log('测试一下', e) var inputBuffer = e.inputBuffer.getChannelData(0); audioData.input(inputBuffer); console.log('显示', inputBuffer) sendData(); } } /* * WebSocket */ function useWebSocket() { ws = new WebSocket("wss://api.tl.supremind.cloud"); ws.binaryType = 'arraybuffer'; //传输的是 ArrayBuffer 类型的数据 ws.onopen = function (event) { console.log('连接成功'); let obj = { "action": "audio_lock", "data": [{ "projectJid": "fe843627233020c110101c8f7e85ba53", "guid": "12c00001363b21cf", "playVolume": 20 }], "requestId": "cf3253b2-e491-4ce0-bf66-4a5bc36d46a1" } ws.send(JSON.stringify(obj)) timeInte = setInterval(function () { record.start(); }, 300); }; ws.onmessage = function (msg) { console.info(msg) } ws.onerror = function (err) { } } /* * 开始对讲 */ begin.onclick = function () { navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia; if (!navigator.getUserMedia) { alert('浏览器不支持音频输入'); } else { navigator.getUserMedia({ audio: true }, function (mediaStream) { console.log('ddddd', mediaStream) init(new Recorder(mediaStream)); console.log('开始对讲'); useWebSocket(); }, function (error) { switch (error.message || error.name) { case 'PERMISSION_DENIED': case 'PermissionDeniedError': console.info('用户拒绝提供信息。'); break; case 'NOT_SUPPORTED_ERROR': case 'NotSupportedError': console.info('浏览器不支持硬件设备。'); break; case 'MANDATORY_UNSATISFIED_ERROR': case 'MandatoryUnsatisfiedError': console.info('无法发现指定的硬件设备。'); break; default: console.info('无法打开麦克风。异常信息:' + (error.code || error.name)); break; } } ) } } /* * 关闭对讲 */ end.onclick = function () { if (ws) { record.stop(); var tmparr = new Int8Array(1024); let obj = { "action": "audio_unlock", "data": [{ "projectJid": "fe843627233020c110101c8f7e85ba53", "guid": "12c00001363b21cf", "playVolume": 80 }], "requestId": "cf3253b2-e491-4ce0-bf66-4a5bc36d46a1" } ws.send(JSON.stringify(obj)) console.log('关闭对讲'); } }
0
1
0
浏览量11
kunkun小黑子

vue3的ref响应式问题?

在vue3框架中,我使用ref定义了一个变量,但是发现在更新其数据之后,页面上并不会有响应式变化,具体表现是在更新数据之后不会出现表格最前面的选择框 数据定义 const rowSelections = ref | null>>({}) 数据初始化,其中list是一个数组,具有唯一的id属性 list.value.forEach((el) => { rowSelections.value[el.id] = null }) 组件A中定义了计算属性rowSelection const isBatching = ref(false) const rowSelection = computed(() => { if (isBatching.value) { return { columnWidth: 30, selectedRowKeys: selectedRowKey.value, getCheckboxProps: (record) => { return { props: { disabled: !isActivated(record) } } }, onChange: (selectedRowKeys: string[], selectedRows) => { selectedRowKey.value = selectedRowKeys } } } return null }) 当点击一个按钮之后,触发BatchEdit函数,通过emit抛出新的rowSelection const batchEdit = () => { isBatching.value = true selectedRowKey.value = [] emit('rowSelectionChange', { rowSelection, id: props.id }) } 在父组件中进行事件定义并更新内容 const rowSelectionChange = ({ rowSelection, id }) => { rowSelections.value[id] = rowSelection } rowSelections的使用
0
1
0
浏览量11
kunkun小黑子

js中的异步函数中如何阻止下一步执行?

getPlat({"tenantId":row.id}).then(response=>{ console.log(response.rows.length) if(response.total>0){ this.$set(this.form2,"platAddr",response.rows[0].platAddr) this.$set(this.form2,"platDesc",response.rows[0].platDesc) this.$set(this.form2,"platDomain",response.rows[0].platDomain) this.$set(this.form2,"platLogo",response.rows[0].platLogo) this.$set(this.form2,"platName",response.rows[0].platName) this.$set(this.form2,"id",response.rows[0].id) }else{ console.log("未设置平台") } 返回的数据结构如下: {"total":0,"rows":[],"code":200,"msg":"查询成功"} 如上述代码加了IF判断,但是在浏览器中还是报错。 Uncaught (in promise) TypeError: response.rows[0] is undefined handlePlant index.vue:401 promise callback*handlePlant index.vue:400 click index.vue:350 VueJS 4 handleClick element-ui.common.js:9457 怎么阻止?
0
1
0
浏览量12
kunkun小黑子

react路由如何像vue路由一样,用name方式进行导航跳转,避免硬编码?

react路由如何像vue一样,用name的方式进行导航? 因为react路由用navigate('/home')这种形式,都是硬编码,以后万一要修改路径,那么所有路径都要改,很麻烦.而如果有vue路由的name的方式,只要name不变,路径随便改都可以. 下图是vue router的name方式,可以避免硬编码,那么react有什么办法可以达到该目的吗? "image.png" (https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241023/f8c6ab4b6b771d61101445bce2b27423.png)
0
1
0
浏览量10
kunkun小黑子

如何可以模拟让Vue项目编译运行的很慢?

如何可以模拟让Vue项目编译运行的很慢 如何可以模拟让Vue项目编译运行的很慢
0
1
0
浏览量12
kunkun小黑子

(AMH主机面)WP Mail SMTP提示:服务器证书配置错误。意味着服务器上的OpenSSL无法验证主机证书,这个怎么解决?

465端口的报错是ssl验证不通过,估计是系统ca根证书有问题或是过期, 可以到『网站』环境配置,编辑配置,手动加一行指定cafile,如: openssl.cafile = /usr/local/amh-7.1/etc/ca-bundle-2023.crt 再测试看。 25端口是网络问题,估计服务器25端口不通,如果是国内的服务器要在主机商那边申请开通。
0
0
0
浏览量0
kunkun小黑子

js便利数组,得到个二维数组[[最小值,最小值],[最大值,最大值]]?

const allArr = newArr.flatMap(({ arr }) => arr); const allX = allArr.map(([x]) => x); const allY = allArr.map(([_, y]) => y); const result = [[Math.min(...allX), Math.min(...allY)], [Math.max(...allX), Math.max(...allY)]]; 或者用 lodash const result = _(newArr).flatMap(({ arr }) => arr) .unzip() .map(list => [_.min(list), _.max(list)]) .unzip() .value(); *** «下面是原答案,理解错了,以为是要分别计算每组里的最大/最小。留着供参考» 看原数据 arr 中只有两个点坐标,其实是不需要遍历的。但是既然要遍历,可以先把所有横坐标和纵坐标分别分组,方便计算最大最小值 const result = newArr.map(({ imgUrl, arr }) => { const xx = arr.map(([x]) => x); const yy = arr.map(([_, y]) => y); return { imgUrl, arr: [ [Math.min(...xx), Math.min(...yy)], [Math.max(...xx), Math.max(...yy)] ] }; }); 当然,计算 xx 和 yy 分别遍历了两次,可以用一个 reduce 来完成一次遍历,但这不一定会更快 const [xx, yy] = arr.reduce(([xx, yy], [x, y]) => { xx.push(x); yy.push(y); return [xx, yy]; }, [[], []]); 也可以把后面的最大小最值一并算出来,在一个 reduce/for 完成 const result = newArr.map(({ imgUrl, arr }) => { let [minx, miny] = arr[0]; let [maxx, maxy] = arr[0]; for (let i = 1; i maxx) { maxx = x; } if (y maxy) { maxy = y; } } return { imgUrl, arr: [[minx, miny], [maxx, maxy]] }; }); 如果每组数据的 arr 都只有两个坐标(我就当是坐标了),那就不用去遍历,直接给值就好 const result = newArr.map(({ imgUrl, arr }) => { const [p1, p2] = arr; return { imgUrl, arr: [ [Math.min(p1[0], p2[0]), Math.min(p1[1], p2[1])], [Math.max(p1[0], p2[0]), Math.max(p1[1], p2[1])], ] }; }); 甚至可以应用更复杂一点的解构: const result = newArr.map(({ imgUrl, arr }) => { const [[x1, y1], [x2, y2]] = arr; return { imgUrl, arr: [ [Math.min(x1, x2), Math.min(y1, y2)], [Math.max(x1, x2), Math.max(y1, y2)], ] }; });
0
0
0
浏览量0
kunkun小黑子

点击高亮显示?

用 class?或者用属性选择器
0
0
0
浏览量0
kunkun小黑子

如何让子元素的click事件不会影响到父元素的dbclick事件?

子元素有click事件,父元素有dbclick事件,想要做到快速双击子元素的时候,不要触发父元素的dbclick事件 showPreset(event) { console.log('aaaaa') // event.topImmediatePropagation() // return false } changeFullScreen() { console.log('bbbb') } 尝试了给子元素添加阻止冒泡、return false等操作,均无效
0
1
0
浏览量13
kunkun小黑子

AMH的SSL证书怎么弄啊?AMH怎么填写SSL证书啊?

在AMH面板的软件商店搜索『SSL』就有一证书管理软件amssl,安装后就可以配置证书的。 你有SSL证书文件的话,就用『自定义配置应用』方式创建证书,没有的话, 可以选择『一键自动配置应用』就可以自动申请免费的SSL证书。 https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241014/40fd0e78d21c0c4f10d41cb9b8de0531.png
0
0
0
浏览量0
kunkun小黑子

elementplus表格问题循环展示?

很简单啊,就是自己循环处理一下 "el-table-item" 就好了。 "图片.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241013/2e3a21cc10aac697697a87faf95482d5.png) cellValue || '--'" /> cellValue || '--'" /> const tableData = [ { date: "2022-05-31", cityList:[ { city: "1",cityName:"北京",address:"xxx"}, { city: "2",cityName:"上海",address:"xxx"}, { city: "3",cityName:"苏州",address:"xxx"}, ] }, { date: "2022-06-01", cityList:[ { city: "1",cityName:"北京",address:"xxx"}, { city: "2",cityName:"上海",address:"xxx"}, { city: "3",cityName:"苏州",address:"xxx"}, ] }, { date: "2022-06-02", cityList:[ { city: "1",cityName:"北京",address:"xxx"}, { city: "2",cityName:"上海",address:"xxx"} ] }, ] const countAddrInfo = tableData.reduce((total, current) => Math.max(total, current.cityList.length), 0) "Element Plus Playground" (https://link.segmentfault.com/?enc=uSwauIcZBg4FMvqG6223kA%3D%3D.4eLQMKFjgCHq9mqYwxOpJFlTFAnTCT1a8vKbQeN%2B6v33DuwBqTUR8aiMjfpWILsf8WmTBUh3hVzDrSIXTt%2BvGraw6zIXZTek3gDizVARtQhy1Ev7CuMgFH0rrVVMwYqQ6IUB7ybhSyoCoXRZgLeNZHFho3Zlw3fGAc53jFDNt0ME%2Fi7bwY8NHqT2yY2SZtaHYcNkCKVii58HXbOK4BgqEg4vgwSdktSoM5hj10hCsmiS0MQWYw%2FZb3qk1GAmjgZkDnKZeY58iCapa%2Bgg9XVtRqBqNtnFv8JhYIbj0foT2rZfbHkWnf5U96yD3e32DFkjMseLLF3y2Qk8EwpNiyPGE4XGwqUHwTbfY69%2BuPIRMEhXojeMfiGIGcxZpnomfjtRwFURJxYDvSQGyolcd1buPaYTyod9Jobd7GZ7%2FTgY90Ql68rM7QUHAEN7ccFAyRZcs%2BTOvRYr8Vm3fZnFfZGvIzOa%2BjbxeQFaQ5BeTj%2BiZdV%2BrwRs2Ystrcya6uW80GU5flGZ8zngT9IyafZgq3qt8vVxxFkYFK2bLklCpOnP9hL%2F%2BhP1s2ObbZdMdCKr1OJiyhcdN%2BdeK%2FiHDc3p2whAx0n94e60%2FsUW1zLsFhHgS7STbKIyzCybDTYYWt%2B5UuZlXl26kEE1ElzL2qEFY9Ih4xMicIYsEIdWUDCBK4xeLOOc6qGQRA58kXvDcm9CsCs%2FmAG6CiBKLho9riGkrZHtQqlbRtjyYOpMYYe3SsOg64epq7kRobsMrnKgmuafCgrJyBVrRL2FjEzztBCnbmdbXikaQFS6G0Uyf7zq6mfvQMzo7jiB4ivhZM%2FASnJKsFXnbmVZXLtAml3g6cxdXxDbkaULkfnvz9z641cU6VJrZh4qMvuc7H%2Fth5BM4rKBE1VQVarO4esH5yesUxUqxbEixJGGmg9UmuQ6zNSER7IvDlXUOaXk33qaCINCVRarrst3OhLlzZHCHvZEPmMpWC2AgbvfBeXWOBWh%2FgvfNvMwRt1A%2FIqyV9jP81W%2FhOhoRfNd8qsb2Hg1vsvQGKhp5aMPXFaMaHCAfJ2VwZU18KhrgX9ZIWaumqdq4vJMWreXdYfH9xMjfIozCJJcDD2cz8IukYEW2vsXYW%2F7AmEJx6PjkLJ6iO7LnRjb2vJOCIwYQ21Acd%2BED08EoD9R1iRTV%2BFmdQNiGmICeNxsSaiglWxYcwg%2Blpl3kMKN128j3xciERA7q2y3o3YhUToaBhGdczi2O%2BksUevKoKPnjCsJVRrksF9ggqyrtBl4ohghPaKH8%2BdgZjGvypCzI9ysZ9RT8yKNK7Dno%2BPOiOuFH%2B3Yw548YJ7e5yQGQJOgHbcAjnzv%2FEu1bJ%2FmZ7H%2B7I%2FWmKzaP6WC8snhRpxDC4HzoTqLa3wTDH06SJUHwuMEmgp5idBswFLE1oXBHDjgHdNCBnXFU8GvnDGNSRmXDPAiVielca12n%2BgmjLIxJz4J6OddVu0dpQhnmszzNV%2BXDvBg9tq3G4RNoYigqLHz7tzdPBUR%2FJxM4Q%2BgMhkBZa6A2YmIE6zZOhvCijkXv8VkDKhK7L6fazRyBcVXbyzUeXzYk%2Bhu3Udgn5ib%2FUsAhWb00QRq1H%2B%2BlhXbgLM8dEtEjQLCPBuMMQGlDGRAQ03db40EHlgRGnDcTI9%2BHA76glpK9%2B%2BHUhSaVdRK74I74nWkGZlJtl8i77hmyuYNvOgkAzZRYGkB%2FZxV9lphazCrv2JAqylzo8m%2FiS%2BiNjxMKemP3gmg4mYUhPK8KOn4s6ZupqWRK2oJGUewTtIqaDcxJA6zWXXQykzc5JAqVWRFHmtNsRpp8bBHj5PLW6zjlM4UI5laklXKCjUnxVQhZqmuHdNDvEStsCIk0XJzpX8ULbp7%2F9SOnDeF6W5yjiGbsMFfDPV6%2FOV8SsCB9V%2BdlrSla29coUFH0EAfD9uL44ogy82WkwG3fZ9LjVNEMdsb%2FgmOEWPmGdr5Ipxc5Ubo2X6RTcvEthGFkeiE3b%2FDygp69Q1mCL%2FyAzOyvxLWQI%2FANijhGqU%2BpT19AK9Hf%2FKKV%2FiTnwZX3IJvDXKZKufGIZO0llAMMGXArnfGJRUsSttO259gRSxAXJzFfXwF1SkgM7m%2F40LdLwV68uNJQjcu7ZvNRUVRN%2Bs%2BhYIxr5TmUXm1gKNUo76VLpzQ13fM88HMxERAx7fSb7H6kk059lZVSJgXd9jjgfkzI7k09xliWxPSC8VFL%2BkUL%2BOj%2BR5vLuD29KbEvLl3kCTOUzb0kNzXQmfBMDYM5QCmrut13LlD%2Buu7xOXQJTR6KPmR5MyfblzEh7d5p8lumUzKdbcYgTTl0MgYv7jfagOuHSMYiEJmYwuaLCA6BLioKW3wVZYGcw%2F5umYoyE5HGDAxQ1z0rg2yxvy76PYxSnHdsBebQHta1YDieDvYNykR17%2BFB6MCBDc3iSjQrbRlgUQs37gwZ5Rm8exQwUx4bapbvjy69pzV%2B2Hj%2FWJui57AQ3zsW5IwcvN7U6J7OosjfWB0MPYU6hAEqdDgKAhUVdLslpR0P7DNRXetL5HlUwKm%2BTMTxcc7z8WgwspSLYXGirMJ3Z35cexHR44LL1MgpGJ41LJ7SV8eMhBDERwXrTXrWkstJVrumgu4D79VQ5Yj8ICqNHJSlARMwN4TIX2nvMHkDfiEHFsbvW6y%2FJyA8wGnr7v%2FApK3FkeG1DBjH7DMEejd50fCWykMGycQ6Z3qIUvAvOYpZYIEx5IDrB2FGEli3zfMokQ%2BrmWKLitCyN1Ezr05mEtvDQI8BDjSWCZTImpXdoswNPu7V1p1z%2FaPa4UWrDPqXIbdc%2FIgdxjeN%2BDIuiVMFvx8pbK76Bz%2BkFsvyuj1Luzl25fVLmlodKgCo5tc188whFDff27n8woDhxws0dWcljPotzU046tpuFsxb1Ou6RLzKh9BVTrbNOJZa9KE8tDUFw1DVSwDXngT5ZZuXfi9LWH2kEIMcTNnfYa6iEsaGxdO6PO6V207G5S8Eygreg6lb%2F4%2FAlNwqXIXPjrSIcS41DNCSgE%2FHeUNGRK7Udwn8y5OBRHLsNZ22qWNZYeS%2BKc5yd8NCcbqIjdi7SDWvoNZ%2Fl9w4gDL73ZmYDm7e%2FzHI72gi3xEPMDWwWlkz25d8G2%2Fv2UktS8zgFlxYSy%2Budtg%2FHwN1vHACpmnlzdHW4RF%2FbY2hTm1FaXl7BKVCU%2BcWm0M35hcWHmyp00yODdaM2ymdrdyu2BwnN%2FyXQ7UCCDjnYWTdBS8zb2xRL7AFmO3T0ypYjfykl0ZvM%2BbMQ2AfiFQVwOShdb9YxdYDEqsmwHxt3uf0SsuW6iXWLUW4DUd9DUNg34IGEc%3D)
0
0
0
浏览量0
kunkun小黑子

There is no Windows 10 SDK installed at ${windowsSDKDir}?

找到 «vscode\node_modules@vscode\gulp-electron\src\win32.js» let windowsSDKDir= "C:\\Program Files (x86)\\Windows Kits\\10\\bin"; 改为 let windowsSDKDir= "D:\\Program Files (x86)\\Windows Kits\\10\\bin";
0
0
0
浏览量0
kunkun小黑子

如何扩展 Element Plus 的尺寸配置?

最近也在做类似的东西,不过我们是 antd,先是出了一套配置,然后基于 ast 对所以文件做替换。 当然,我们也对 antd 做了一些修改。 对于你这个问题我们就有两种选择 1. 修改 antd 增加更多的 size 但是会和 antd 渐行渐远,有可能我们新的设计规范用不到那么多 size 2. 将代码中的 size 做替换,比如说 mini 就使用默认的。small 改成 mini 之类的规则,因为是基于 ast 的替换,所以也不用担心有误伤。
0
0
0
浏览量0
kunkun小黑子

iframe显示一个pdf文件,浏览器弄成移动设备调试就不显示了?

为了预防一系列兼容问题,建议使用第三方组件pdf.js
0
0
0
浏览量0

履历