777七月
小网站有必要将图片放到阿里云OSS存储吗?
OSS存放静态资源是为了减轻服务器带宽压力,也可以提升用户访问的速度
相对于给服务器买带宽,购买OSS存储要划算的多,并且还快
很多网站是接口走的服务器,静态资源全部在OSS上,用户体验很好
777七月
在安装Flutter SDK的时候:`开发工具`和`文本编辑器或IDE`是只需要安装一个还是都必须都安装?
在安装Flutter SDK的时候:
有
* "开发工具" (https://link.segmentfault.com/?enc=PepSK%2FPtpMbOkbxRQWwpPQ%3D%3D.lhsFEmccw%2FSZU3DKrVNYpAsRBrQGkMs08fvoReyUe3OFvJijibDWtYrztljjWFWPHNicEedVl0LGvVmXEIX29oEUBawJzO0E48RIhB0H18Y%3D)
* "文本编辑器或集成开发环境 (IDE)" (https://link.segmentfault.com/?enc=kJqxEB4GPOUhvvwUyevGpA%3D%3D.7HVPGfcDag88Up0FsC4aLsuiUZMji%2BkELEYQIVwsoVc5hSndePn9eG6uz1znwu0dAtewxUwv9q19w7xL4pxfj5dG8a3gpcHK4MSu6O2bTieNsuVUnUMeOTsIMIH5en4a9DNaJpS8Zo0JOLBLE476Ow%3D%3D)
请问是只需要安装其中一个,还是2个都必须安装?
777七月
在NextJS中new URL为啥和标准不一样呢?
你理解的是对的。 不过在一些框架中会允许你使用url进行模块导入(不限于next,原理就是"Webpack
BuildHttp" (https://link.segmentfault.com/?enc=cByXt4oKNyCfCEMckIc3Ag%3D%3D.oqrEExGGV7REo0cD4ACUliW%2BjU%2FT8%2BOu%2BWQpGtemCgbnLg7OlJ7xmROL2l84q%2FaNfrOOq27Jz3%2BgUs2a5rKB0FpHgPedWXt8T3w1i0LztDU%3D))
import logo from 'https://example.com/assets/logo.png'
在next中对于远程资源也是可以这样的
const logo = new URL('https://example.com/assets/file.txt', import.meta.url)
console.log(logo.pathname)
// prints "/_next/static/media/file.a9727b5d.txt"
具体你可以查看
"Next
Doc" (https://link.segmentfault.com/?enc=izPEG1fDxNPrg0XndNKbTg%3D%3D.gdkekTImhzlxWlnnHUmfSXHxQXkm1VzGWn3qrLUq6lxNz5RNOiFTfnSSVsYCuG9F47JJFOFbIaVaqIERzFv%2BIrRcFX6cEu3yD31AQ88n0q8%3D)
777七月
go 有没有能持久化的分布式定时任务库?
package main
import (
"fmt"
"github.com/go-co-op/gocron"
"github.com/go-redis/redis/v8"
"golang.org/x/net/context"
"sync"
)
var (
redisClient *redis.Client
scheduler *gocron.Scheduler
ctx = context.Background()
)
func init() {
redisClient = redis.NewClient(&redis.Options{
Addr: "localhost:6379",
})
scheduler = gocron.NewScheduler(time.UTC)
}
func main() {
var wg sync.WaitGroup
wg.Add(1)
loadTasksFromRedis()
scheduler.StartAsync()
wg.Wait()
}
func loadTasksFromRedis() {
// 从 Redis 获取所有任务
taskKeys, err := redisClient.Keys(ctx, "task:*").Result()
if err != nil {
fmt.Println("Error fetching tasks from Redis:", err)
return
}
for _, taskKey := range taskKeys {
taskData, err := redisClient.HGetAll(ctx, taskKey).Result()
if err != nil {
fmt.Println("Error fetching task data from Redis:", err)
continue
}
createTaskFromData(taskData)
}
}
func createTaskFromData(taskData map[string]string) {
// 解析 taskData 并创建任务
// ...
// 添加任务到调度器
// ...
}
func executeTask(taskData map[string]string) {
// 尝试获取分布式锁
lock, err := redisClient.SetNX(ctx, "lock:"+taskData["id"], 1, time.Duration(taskData["lockDuration"])*time.Second).Result()
if err != nil || !lock {
fmt.Println("Failed to acquire lock for task:", taskData["id"])
return
}
// 执行任务
// ...
// 释放分布式锁
redisClient.Del(ctx, "lock:"+taskData["id"])
}
777七月
vue2怎么把当前组件实例作为一个参数传递给子组件?
为什么要把组件实例传递给子组件?如果子组件要获取父级组件属性的可以用 "$parent" 呀。
但其实应该使用 "props" 传递给子组件需求的属性,以及使用 "$emit" 来触发父级组件的方法。
而不是粗暴的直接把组件实例传递给子组件。
777七月
坐标轴刻度的时间区间长度是给定的(一个季度)我怎么能设定比如只显示三个坐标轴刻度么?或者自适应均匀些?
类似 ("https://www.visactor.io/vchart/demo/line-chart/multi-line" (https://link.segmentfault.com/?enc=x71MtXwNuP002BIm5pD2Lg%3D%3D.PsH3hiPLZK5qnBmS264wosb1K55jinxyT9rv%2BUnElgYCD6bZlFkR9MbmI43uft3QYvtScqX%2BRrNJcKM9dxwD1Q%3D%3D))这样的折线图:
"图片" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250108/8de51a7743dca5ec745902b83ffb41bd.png)
坐标轴时间区间长度给定的情况下,该怎么设置坐标轴刻度的显示数量?例如我想只显示三个坐标轴刻度,或者自适应刻度数量。
777七月
联动tab组件做一个查询功能,功能代码设计哪里出问题?
组件标签:
data:
// 输入框内容
input: '',
// 请求到的数据
allData: [],
// tabpane绑定的label
tabList: [],
timeId: null
查询:
search (value) {
const title = JSON.parse(JSON.stringify(this.tabList))
const data = JSON.parse(JSON.stringify(this.allData))
// console.log('我点击了')
if (value === '') this.$message.error('请输入有效值!')
if (value) {
// console.log('输入值---', value)
const tab = title.filter(item => {
// console.log('遍历的title-----', item)
if (item.sn === value) return item
// console.log('匹配值----', item)
return item
})
// console.log(tab)
this.tabList = tab
for (let i = 0; i {
// console.log('data----', item)
if (tab[i] === item.title) return item
// console.log('匹配到的data-----', item)
return item
})
this.allData = datanew
// console.log(this.allData)
}
}
this.getAllData()
}
打印输出:匹配到了之后,又去匹配其他非输入值
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250101/7dc5e80f6fb4671c459ab868d1fe69d8.png)
777七月
图片跨域问题?
阿里云的图片,例如"https://syx-hzy5200.oss-cn-shenzhen.aliyuncs.com/c17ed98cdb36..." (https://link.segmentfault.com/?enc=6QN%2B%2BzfixYwT98EkVUx7XQ%3D%3D.CrvjxgHMnBFplOy%2BAHVWZCPKa6Z7Cye21U8YqTAApi7IArGbab2SVpCZNIJA1ppxKBUFkvs4c9Wg81lABcavNH16iFBKg4F5x0UoVimaDS3%2BGCH%2F4MBQ8Hfn9hrVjSXl)(不同图片这个不一样c17ed98cdb36418498caf32f95c0666f),前端项目中需要有一个需求是将url转图片
代码是
const imageBlob = await fetch(urls, { mode: 'cors' }).then(res => res.blob())
但是ccess to fetch at '"https://syx-hzy5200.oss-cn-shenzhen.aliyuncs.com/c17ed98cdb36..." (https://link.segmentfault.com/?enc=MX4wfwFwndlv3BtEamH6CQ%3D%3D.TU7bzQFv4wa3c1WmYxiDOoYucXsOr7%2FLTnRCdue0Kwd0soiLYJAIrODXMaEONJYxw70rWcKQpJhLmlA0V4s8rYbLLwFuArUx4oC%2FTrVPBnMJHTgXUY38qobclzOw1F0l)'
from origin
'"http://xxx" (https://link.segmentfault.com/?enc=762eZ%2BGZCkavViuyVmIgKg%3D%3D.7RH%2F2b%2BdvPZPsFaZPK42Gg%3D%3D)'
has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is
present on the requested resource. If an opaque response serves your needs,
set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
报跨域问题,测试环境的时候让后端在阿里云那边加上了测试环境地址,使得跨域问题解决了,到正式环境也让后端一模一样的操作,但是依旧存在跨域问题,这应该怎么解决?
777七月
Nginx 的 limit_req 两种写法有什么不同了?
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;
limit_req zone=mylimit burst=20 nodelay;
和
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=30r/s;
limit_req zone=mylimit;
对于同一 IP, 实际上, nginx 接收请求和发送给后台的服务器的请求的限速都是 每分钟 30 条吧, 这两者有什么区别了? 各位大佬帮忙看看
777七月
ts创建一个Input,添加事件监听器,函数类型报错?
input.addEventListener("input", (e: Event) => {
const target = (e.target as HTMLInputElement);
})
777七月
F12检视一个元素的时候,鼠标一动 这个元素就会消失,那么如何定位到这个元素的html源码位置?
我分享下我最常用的最简单的方式:
第一步:打开控制台,拉到快要到要检查的地方:
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241224/bf8ee9ed263c715ae5c26d5e74ecb60a.png)
***
第二步,如图
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241224/5a03f8516d7c65b52783178ac6dd96cc.png)
***
然后就只要鼠标在控制台范围内,上边的鼠标移上才显示的内容就不会消失
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241224/f24240a828417ff745c07baf5db578c2.png)
777七月
牛客上使用js(Node)写编程题时,如何在本地运行进入end事件?
"@ForkKILLET" (/u/forkkillet) 看起来是在 Linux 跑的。Windows 11
下不行,以前的老版本也许可以,应该是跟终端管理器有关。
要不根据输入手工触发吧
process.stdin.emit('end');
网上搜一搜应该有答案,比如:"process.stdin的end事件如何触发?---关于nodejs底层的标准输入与输出的坑 - 简书
(jianshu.com)" (https://link.segmentfault.com/?enc=7hv%2FvBGvtYZTgYDqZNiKdQ%3D%3D.I9OJL%2BPfIW9qgM10Oi8SyzzQVrMPN6hmf4HDeyjzG19eXoWxVO18Xpzz1layK4Ob)
777七月
设置android launcher和底部条配置开发或市场上可用三方的软件?
非专业Android开发人员,特来请教。
本人使用H5打包了一款android apk,现在APK在android 系统上已经跑通。
理想应用场景是系统开机后自动打开这款APK,自动全屏(隐藏或者遮挡系统顶部状态栏和底部操作栏)
非TOC应用,仅在开发者模式跑通DEMO即可。
777七月
问一个typescript类型问题?
给定一条数据结构(API数组里面的个数是未知的)如下所示
const api = [
{
name: 'pageA',
table: true
},
{
name: 'pageB',
}
]
如何推导出类似这样的类型
type Result = {
pageA: boolean
pageB: unknown
}
即 name 作为key, 如果存在table即为boolean类型,否则为unknown类型
ts的大神们,这个该如何写啊,百度,谷歌都折腾了,还问了gpt也不行,就是值推不出来
我写的是这样的
const api = [
{
name: 'pageList',
table: true
},
{
name: 'pageAdd',
table: false
}
] as const;
type Ret = {
[K in T[number]['name']]: // 这里不会写
};
type Api = Ret;
777七月
uniapp 使用minio 怎么导入依赖包,各种报错?
救救孩子吧,快被minio逼疯啦
vue3 + uniapp + minio
使用 npm install minio 安装了依赖,在vue文件中用以下方式导入都会报错
// import Minio from '@/minio'
import {Minio} from 'node_modules/minio/dist/main/minio.js';
// import * as Minio from 'minio';
// var Minio = require('minio')
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241215/04c1273b2a3931de3e6166cf7862622e.png)
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241215/8b4c543bb24ef73b86b144e1067fcd35.png)
应该怎么导入呢?
777七月
请问elementui内el-select中的on-input是什么?
在el-pagination分页组件中,Size子组件渲染函数中使用了el-select,该select中使用了on-input这一属性,但是el-select源码中并没有看到on-input这一prop,请问on-input是什么?
el-pagination中的el-select
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241215/da0240fd0c0c6067f27f9d4653fa0556.png)
"https://github.com/ElemeFE/element/blob/dev/packages/pagination/src/pagination.js" (https://link.segmentfault.com/?enc=6SZwFJWHmUx%2Ffpi97CWXqQ%3D%3D.OPTNkqhBFvWvMa5UAYzpEifcEBS9YUGF8bCtv1XwncK0tRMVkVWien%2B0YiHS0PEG9CY9x%2BSMH3g%2F1TuMm6AId0lG7keifO4cC%2Bzu6NAo3AL9R01iP4w4iCKf0Csw73Hz)
"https://github.com/ElemeFE/element/blob/dev/packages/select/src/select.vue" (https://link.segmentfault.com/?enc=mHeNc0uMcqClyfVVP4nugw%3D%3D.uK7mXyAhoJ4xRxZr%2FzdIq9gx9TXxbMt6e7mmfiuvsgnpTs66lgInshemCBo9H1zPbaKL07bxe4pkr9oBVp4K3l%2FmPW5QEuc2X57QaB0DkB4%3D)
777七月
公交卡充值问题?
public static void main(String[] args) {
//配置
int[] nums = {500, 300, 200, 0};
int[] price = {200, 100, 50, 0};
//输入
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
//极值判断
if (n = Integer.MAX_VALUE) {
System.out.println("请输入有效的充值金额!");
return;
}
//区间判断
for (int i = 0; i = nums[i]) {
System.out.println(n + price[i]);
break;
}
}
}
换一种写法 上面有注释 相信题主能看懂
777七月
js事件不同写法的处理方式是什么?
学习js事件时,有三种不同的写法,
第一种
点击
function dianji() {
console.log("点击")
}
// 防抖
function aa(fn, delay) {
let timer = null
// console.log(timer)
return function () {
if (timer) {
clearTimeout(timer)
}
timer = setTimeout(fn, delay)
}
}
第二种
点击
function dianji() {
console.log("点击")
}
// 防抖
function aa(fn, delay) {
let timer = null
// console.log(timer)
return function () {
if (timer) {
clearTimeout(timer)
}
timer = setTimeout(fn, delay)
}
}
let a = document.getElementById("btn")
a.onclick = aa(dianji, 1000);
// console.log(timer)
第三种
点击
// 节流
function aa1(fn,delay){
let valid = true;
return function(){
if(!valid){
return false;
}
valid = false;
setTimeout(function(){
fn();
valid = true;
},delay)
}
}
function dianji() {
console.log("点击")
}
// 防抖
function aa(fn, delay) {
let timer = null
// console.log(timer)
return function () {
if (timer) {
clearTimeout(timer)
}
timer = setTimeout(fn, delay)
}
}
let a = document.getElementById("btn")
// a.onclick = aa(dianji, 1000);
a.addEventListener("click",aa(dianji,1000))
// console.log(timer)
我想实现一下点击事件的防抖效果,但是直接在button标签中加点击事件没有效果。
第一个问题:第一种写法哪里有问题?应该怎么改正?
第二个问题:这三种写法是不是在运行的时候有区别?区别是什么?
希望有人解答一下
777七月
SQL Server 可以建立雪水ID Function吗?
不建议你依赖于sql 来生成id
777七月
Laravel-Admin创建控制器有问题??
因为Laravel10.x已经放弃了DBAL这个了,换成Laravel9.x就可以了
777七月
请问无联网验证lisence如何做? 验证mac, IP 还有哪些数据吗?
mac可以伪造的,所以自用mac没什么用,看看能不能用(mac+版本+时间-年月),减少license泄漏带来的损失。
可以使用本地注册机,购买以后根据购买信息在线打包编译一个包含注册信息的本地注册机,注册期间该机器必须要求联网,必须要求本地开通xxxx端口。注册完以后就可以卸载或者联网二次使用,然后本地其他机器都使用局域网连接该机器获取注册资料进行绑定验证。
777七月
点击+号,增加form表单的子级应该怎么做能实现?
组件
添加
删除
export default {
name: "form-row",
model: {
prop: "value",
event: "change",
},
props: {
value: {
type: Object,
default: () => [],
},
index: {
type: Number,
default: 0,
},
},
watch: {
value: {
handler(val) {
this.$emit("change", val);
},
deep: true,
},
},
methods: {
// 添加子级
addChildren() {
if (!this.value.children) {
this.$set(this.value, "children", [{ userName: "" }]);
} else {
this.value.children.push({
userName: "",
password: ""
});
}
},
// 删除该行表单
deleteRow() {
// 抛出事件到父级执行
this.$emit("removeRow", this.index);
},
// 删除子级
removeRow(index) {
if (this.value?.children[index]?.children?.length > 0) {
alert('请先删除子级')
} else {
this.value.children.splice(index, 1);
}
},
},
};
.form-row {
display: flex;
margin-bottom: 10px;
}
.form-row .el-button {
height: 40px;
margin-left: 10px;
}
使用
import formRowVue from './views/formRow.vue';
export default {
name: "myform",
components: {
formRowVue
},
data() {
return {
formArray: [
{
userName: "张三",
password: '123456',
children: [{ userName: "张三1", password: '123456' }, { userName: "张三2", password: '123456' }],
},
]
}
},
methods: {
removeItem(index) {
if (this.formArray[index]?.children?.length > 0) {
alert('请先删除子级')
} else {
this.formArray.splice(index, 1);
}
}
},
};
777七月
echarts 2D地图如何区分是事件触发显示tooltip还是手动鼠标移上去显示?
已经找到解决方法了,不应该在formatter回调中触发事件;
正确做法:
myChart.on('mouseover', 'series', mouseOverSeries);
mouseOverSeries 事件为自定义事件
777七月
想问大家确定一个事情,h5页面嵌入小程序webview中,能否直接点击下载图片到手机相册,谢谢?
有一个my.chooseImage
方法可以让用户从相册中选择图片,这里有一个uniapp的例子:"https://www.programmerall.com/article/90892088351/" (https://link.segmentfault.com/?enc=S90lFkFhWiif2u%2BL3%2BgcyA%3D%3D.0jJWX9Qxh0%2Be%2FDyq%2BDj78PfDndTNNb64EBO2NI1qQHAf2yvD9Bcm3DObyfUKQWxTRgoSa8nMR3ei66FEGEUevg%3D%3D)
777七月
shell 脚本文件中如何处理多个选项参数?
去掉 "n" 后面的 ":" :
"nr:h"
777七月
请问能用deciaml js替换原来js的+-*/符号功能?
因为要使用高精度计算,目前使用decimal js都要创建物件+呼叫方法,变得繁琐
希望将以下方式
new Decimal(1).sub(new Decimal(2)).add(new Decimal(3)).mul(new Decimal(4.3)).div(new Decimal(4.1))
能改成符号又能兼顾精度
1-2+3*4.3/4.1 = 2.1463
777七月
为什么这段代码运行的时候点击部件会出现错误?
我运行这段代码的时候,点击部件就会出现
Uncaught TypeError: Cannot read properties of undefined (reading 'position')at
VertexEnumerator.js:87:28
这样的错误
const options = {
env: "AutodeskProduction",
api: "derivativeV2",
getAccessToken: (callback) => {
fetch("http://localhost:8080/api/auth/token")
.then((response) => response.json())
.then((json) => {
const auth = json.access_token;
callback(auth, 3600);
});
},
language: 'en'
};
Autodesk.Viewing.Initializer(options, () => {
const urn = "dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6ZmRzaGZqc19mZHNrZmxzal8xMjM0NTY2Ni8lRTQlQkElOTQlRTglQkQlQjQlRTYlOTYlOUMlRTclQkElQkYlRTYlQTglQTElRTUlOUUlOEIlMjB2My5mM2Q";
let htmlDiv = document.getElementById("MyViewerDiv");
viewer = new Autodesk.Viewing.GuiViewer3D(htmlDiv);
viewer.start();
loadModel(urn);
});
let loadModel = (urn) => {
return new Promise((resolve, reject) => {
function onDocumentLoadSuccess(doc) {
const node = doc.getRoot().getDefaultGeometry();
viewer.loadDocumentNode(doc, node).then(() => {
viewer.addEventListener(
Autodesk.Viewing.GEOMETRY_LOADED_EVENT,
setupModelInteraction
);
});
resolve();
}
Autodesk.Viewing.Document.load("urn:" + urn, onDocumentLoadSuccess, reject);
});
};
const getModelNodeIds = (names, tree) => {
const nodeIds = {};
names.forEach(name => {
nodeIds[`${name}NodeId`] = findNodeIdbyName(name, tree);
});
return nodeIds;
};
const setupModelInteraction = () => {
const partNames = ["T1", "X1", "Z1", "Z2"];
let tree = viewer.model.getData().instanceTree;
let nodeIds = getModelNodeIds(partNames, tree);
console.log(nodeIds)
setUpPiovt(nodeIds, tree)
}
const setUpPiovt = (nodeIds, tree) => {
baseRodPivot(nodeIds.T1NodeId, tree)
}
const baseRodPivot = (ID_BaseRod, tree) => {
let Pivot_BaseRod = new THREE.Mesh(new THREE.BoxGeometry(5, 5, 5), new THREE.MeshBasicMaterial({ color: 0xff0000 }));
let Position_BaseRod = getFragmentWorldMatrixByNodeId(ID_BaseRod, tree).matrix[0].getPosition().clone();
Pivot_BaseRod.position.x = Position_BaseRod.x;
Pivot_BaseRod.position.y = Position_BaseRod.y;
Pivot_BaseRod.position.z = Position_BaseRod.z;
viewer.impl.scene.add(Pivot_BaseRod);
}
777七月
怎样才能让整个侧边栏在子选项打开和没打开时一样大?
这是官网的示例
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241123/bbcad1d743c171cf16392a582c60214f.png)
class为el-menu的这个元素设置了宽度,你的代码可能影响到了这个css
777七月
使用vite构建vue2项目报错,为何?
使用vite官方命令pnpm create
vue@legacy构建vue2项目发现安装完成后在src/views/HomeView.vue页面里面写的有lang=ts,那么问题来了,我构建项目的时候全程都没选择要使用ts啊,为什么这里会出现lang=ts?这是bug吗?我上网查了下说是要按Volar插件来调式,我按了也没消除这个高亮错误提示,问题是我构建至始至终都没按过ts啊,我选择使用的技术栈是vue+vite+js,这里为什么会出现lang=ts尼?还有就是vite构建vue2没发现有css预处理器插件安装选项(难道需要单独自己按的吗),还是说安装姿势不对?有遇到同样情况的没有,来交流下,最后吐槽下,思否发疑问类帖必须强制加反问号?不然连贴都发不出来。。这机制不友好
"vue2+vite构建项目命令" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241123/bb82d2f5b97267d3a0d80eaf0f4a8101.png)
"代码高亮报错,为什么会出现lang=ts?我都没选择使用ts啊.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241123/00b046b52a134a2685d8b288f234a218.png)
777七月
怎么解决React useEffect 执行顺序导致设置 loading 状态错误的问题?
下面的代码,如果 count 连续发生两次变化,那么 loading 的状态就会被错误的提前设置为 false,怎么解决这个问题?
useEffect(() => {
console.log("set loading: true");
setLoading(true);
const ac = new AbortController();
new Promise((resolve, reject) => {
const timer = setTimeout(() => {
console.log("resolve");
resolve();
}, 3000);
ac.signal.addEventListener("abort", () => {
clearTimeout(timer);
reject("abrted");
});
})
.then(() => {
setLazyCount(count);
})
.catch((err) => {
console.log("error:", err);
})
.finally(() => {
console.log("finally set loading: false");
setLoading(false);
});
return () => {
ac.abort();
console.log("abort");
};
}, [count]);
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241114/b7f7f3361f3cfef9be187185f29acb27.png)
***
我尝试过把设置 loading 为true 的代码用 setTimeout 包裹起来,这样可以正确设置 loading,但是,当 Promise
立即完成的时候,顺序就又错误了。
useEffect(() => {
setTimeout(() => {
console.log("set loading: true");
setLoading(true);
});
const ac = new AbortController();
new Promise((resolve, reject) => {
const timer = setTimeout(() => {
console.log("resolve");
resolve();
// ...
然后把这个部分全部放在 settimeout 中才可以,但是这样写也太别扭了
useEffect(() => {
const ac = new AbortController();
setTimeout(() => {
console.log("set loading: true");
setLoading(true);
new Promise((resolve, reject) => {
const timer = setTimeout(() => {
console.log("resolve");
resolve();
}, 3000);
ac.signal.addEventListener("abort", () => {
clearTimeout(timer);
reject("abrted");
});
})
.then(() => {
setLazyCount(count);
})
.catch((err) => {
console.log("error:", err);
})
.finally(() => {
console.log("finally set loading: false");
setLoading(false);
});
});
return () => {
ac.abort();
console.log("abort");
};
}, [count]);
***
在线测试 "https://codesandbox.io/p/sandbox/use-effect-loading-fshhvm?fi..." (https://link.segmentfault.com/?enc=NAdvKvTeh8iZpmZWY%2BFBaQ%3D%3D.h0XyTdCoCwq8tpMP%2B5yS%2BtzDlGSqWej48BsazscC8iEbvJr7r5pOUI6fGMv0PyPV97joBvFKKUzjERDBJfSVFu7JTYe3QWUYQXEXKuCU3SE3JXHkZLzQ4WLRDf1OWM6I)
777七月
php+nginx出现504超时?
放大nginx设置中的: fastcgi_read_timeout 180;
777七月
Python 的 tqdm 如果在内部使用print打印 会重复打印进度条 怎么避免这个问题?
举个例子
for i in tqdm(range(100)):
time.sleep(0.1)
print(i)
我想要一个进度条,然后下面打印我想要的内容
如题
777七月
解析内容 if else太多 请问优化代码?
抽象一个接口:
interface IMatchParser{
boolean matcher(String line, Map map);
handle(ChangDuan changduan);
}
每个if分支抽象成一个类继承"IMatchParser";
public class MatchParser1 implements IMatchParser{
public void handle(ChangDuan changduan) {
changDuan.setName(getChangDuanInfoContent(line, LrcConstants.LrcRegEnum.TITLE.getStartIndex()));
}
public boolean matcher(String line, Map map) {
return matcher(line, patternMap, LrcConstants.LrcRegEnum.TITLE.name());
}
}
然后放到一个list中:
List list = new ArrayList();
list.add(new MatchParser1());
list.add(new MatchParser2());
...
然后实现方法变成:
private static void parseLrcContent(ChangDuan changDuan, String line, Map patternMap) throws ParseLrcException {
for (IMatchParser parser: list) {
if (parser.match(line, patternMap)) {
parser.handle(changDuan);
break;
}
}
}
后续加新的if分支只需要实现一个新的class插入到list即可
777七月
vant-ui van-search 在微信开发者工具与真机模拟显示的placeholder差异?
vant-ui中van-search使用placeholder属性,显示的文字在微信开发者工具中显示的与在真机模拟显示的存在差异
在微信开发者工具中:
"image.png" (https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241104/8c9f60b440310a777ea0aebce63c7153.png)
在真机模拟中(红米k50)
"B3ACA249246408403F0A126D5DF9B9F9.jpg" (https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241104/ae9878073aac5fe8c1d6e4026c8c865a.png)
尝试修改placeholder提示文字的大小(失败)
777七月
使用 getter 和 setter 来控制对象的访问?
不太明白你要干什么
1. 你的 "constructor",看起来是接收了一个华氏度然后转成摄氏度保存起来
那既然是摄氏度 为什么这个成员叫 "farenheit"
2. 你的 "set temperature" 没有接收参数,这是跑不起来的。
class Thermostat {
constructor(farenheit) {
this.celsius = 5/9 * (farenheit - 32)
}
get temperature() {
return this.celsius
}
set temperature(celsius) {
this.celsius = celsius;
}
}
"image.png" (https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241103/3879c8bf3d873861975c57e5f1a4b576.png)
777七月
setup语法糖不支持 render函数?
wx.createPage = function (MiniProgramPage) {
MiniProgramPage.render = function (ctx) {
}
}
render函数在setup语法糖情况下不调用
777七月
amh配置要如何选择,目前是4H8G?偶尔会502错误?
502与php有关,与mysql没太多关系,
偶尔出现502的话,估计是访问量超过php-fpm承载,
可以去面板『网站』编辑虚拟主机调高php-fpm选项的配置,选项旁边也有说明。
777七月
如何在Vue 2上使用AutoAnimate动画库?
通过在main.js中打印vAutoAnimate会发现它是一个使用vue3语法实现的指令,所以在vue2中无法实现原有的动画效果。在node_modules@formkit\auto-animate\index.mjs中修改原有代码
const vAutoAnimate = {
bind: (el, binding) => {
autoAnimate(el, binding.value || {});
},
update: (el, binding) => {
autoAnimate(el, binding.value || {});
},
mounted: (el, binding) => {
autoAnimate(el, binding.value || {});
},
// ignore ssr see #96:
getSSRProps: () => ({}),
};
可以看到效果的出现,但这种更改实现破坏了原有库的代码,也未测试过功能的影响,建议换用其他库或者提issue咨询原有库的作者们
777七月
JavaScript 箭头函数在数组排序中的应用?
这两篇文章有原理以及源码解读很清楚:
«"https://juejin.cn/post/7130939610493878308" (https://link.segmentfault.com/?enc=C0mA8ZIb7qTc3vj84uVgxg%3D%3D.zGsdP0%2BpF5lihe14wH7pIWUIRIcgzNcx%2B1QC38eHHcEYvGrbYcG2PzU5f6K6yDwa)"https://juejin.cn/post/6844904118289432590#heading-0" (https://link.segmentfault.com/?enc=3GpatPcu7ofTFZAkzdZKjg%3D%3D.OOANGujBCOKvOB7b4qJQrs9l5DLx3jwF93O0o0o%2FSdi6iqi9nofdB9ZLcpWhbuyQsAmD3H9EdqwY73L%2BVpXbZQ%3D%3D)»
777七月
Python await 函数执行顺序的问题?
很疑惑啊。。。我把我的代码和版本什么的都贴出来,还有我的试验结果。。。我的结论还是第一个"await" 是正常 "send" 出去了的。
«1. 先贴结果»
* 浏览器的结果
"image.png" (https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241022/2f128fdd9489e45147010d6a13068034.png)
* 服务端的日志
"image.png" (https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241022/cfa19a0b877ac6aa7e154248e2916af6.png)
«2. 我的依赖环境»
fastapi = "^0.110.0"
uvicorn = {extras = ["standard"], version = "^0.28.0"}
websockets = "^12.0"
datasets = "^2.18.0"
«3. 我的示例代码»
为了能明确看出前后顺序差异,我加入了时间戳 "datetime.now()" 在每个信息内容上。
from datetime import datetime
from datasets import load_dataset
from fastapi import FastAPI, WebSocket
from fastapi.responses import HTMLResponse
app = FastAPI()
html = """
Chat
WebSocket Chat
Send
var ws = new WebSocket("ws://localhost:8081/ws");
ws.onmessage = function(event) {
var messages = document.getElementById('messages')
var message = document.createElement('li')
var content = document.createTextNode(event.data)
message.appendChild(content)
messages.appendChild(message)
};
function sendMessage(event) {
var input = document.getElementById("messageText")
ws.send(input.value)
input.value = ''
event.preventDefault()
}
"""
@app.get("/")
async def get():
return HTMLResponse(html)
@app.websocket("/ws")
async def h(ws: WebSocket):
await ws.accept()
await ws.send_text(f"1: {datetime.now()}")
dataset = load_dataset("beans")
print(f"time: {datetime.now()} => dataset: {dataset}")
await ws.send_text(f"2: {datetime.now()}")
while True:
data = await ws.receive_text()
await ws.send_text(f"Message text was: {data}, datetime: {datetime.now()}")
从我上面截图和我的实际操作来看,"1" 确实是先执行的,因为 "html" 接收到了 "ws" 的信息。
你可以拿我的去你那里在试验一下。。。
777七月
支持es5函数和es6箭头的JSON.parse(JSON.stringify()) ?
问题
需求: 对象转成字符串,保存到数据库,返回前端后再转回对象?
想要2个方法:
一个是类似JSON.stringify转成字符串,不能丢失函数,支持function和箭头函数
另一个是类似JSON.parse转成对象,要还原对象中原来的函数
数据
rule: [
{
type: "input",
field: "goods_name",
title: "商品名称",
on: {
change: function (val) {
console.log("aa", val);
},
input: (val) => {
console.log("bb", val);
},
},
},
{
type: "datePicker",
field: "created_at",
title: "创建时间",
on: {
change: function (val) {
console.log("cc", val);
},
input: (val) => {
console.log("dd", val);
},
},
},
],
方法
function toJson(){
}
function toString(){
}
777七月
Uniapp中如何展示html的富文本?
后台返回整个静态页面的html的富文本
p{margin-top:0pt;margin-bottom:1pt;}p.a{text-align:justified;}span.a{font-size:10.0pt;}p.X1{margin-top:18.0pt;margin-bottom:18.0pt;}span.X1{font-family:'黑体';font-size:12.0pt;}span.X2{font-family:'黑体';font-size:12.0pt;}p.X3{text-align:left;text-indent:21.0pt;margin-top:6.0pt;}span.X4{font-family:'黑体';font-size:12.0pt;}span.X5{font-family:'黑体';font-size:12.0pt;}span.X6{font-family:'黑体';font-size:12.0pt;}p.X7{margin-top:12.0pt;margin-bottom:3.0pt;}span.X7{font-size:10.0pt;font-weight:bold;}p.X8{margin-top:12.0pt;margin-bottom:3.0pt;}span.X8{font-family:'Arial';font-size:10.0pt;}p.X9{text-align:center;}span.X9{font-family:'Arial';font-size:16.0pt;}p.a3{text-indent:24.0pt;}span.a3{font-size:12.0pt;}span.Char{font-size:12.0pt;}p.X10{text-align:left;text-indent:53.0pt;}span.X10{font-size:12.0pt;}span.X1Char0{font-size:12.0pt;}p.X20{text-align:left;text-indent:79.0pt;}span.X20{font-size:12.0pt;}span.X2Char0{font-size:12.0pt;}span.X1Char{font-family:'黑体';font-size:12.0pt;}span.X2Char{font-family:'黑体';font-size:12.0pt;}span.X3Char{font-family:'黑体';font-size:12.0pt;}p.a4{text-indent:21.0pt;margin-top:2.0pt;margin-bottom:2.0pt;}span.a4{font-size:12.0pt;}span.X4Char{font-family:'黑体';font-size:12.0pt;}span.X5Char{font-family:'黑体';font-size:12.0pt;}span.X6Char{font-family:'黑体';font-size:12.0pt;}span.X7Char{font-weight:bold;}span.X8Char{font-family:'Arial';}span.X9Char{font-family:'Arial';font-size:16.0pt;}span.a5{font-family:'Arial';font-size:10.0pt;}span.Char0{font-family:'Arial';}p.a6{text-align:center;margin-top:12.0pt;margin-bottom:3.0pt;}span.a6{font-family:'Cambria';font-size:16.0pt;font-weight:bold;}span.Char1{font-family:'Cambria';font-size:16.0pt;font-weight:bold;}span.a7{font-weight:bold;}p.X50{text-align:left;text-indent:84.0pt;}p.a8{text-align:center;}span.a8{font-size:9.0pt;}span.Char2{font-size:9.0pt;}p.a9{text-align:left;}span.a9{font-size:9.0pt;}span.Char3{font-size:9.0pt;}p.X21{text-indent:5.0pt;margin-bottom:0.0pt;}span.X21{font-size:14.0pt;}p.ab{margin-bottom:6.0pt;}span.Char4{font-size:10.0pt;}p.aa{text-indent:21.0pt;}span.Char5{font-size:10.0pt;}span.ac{font-size:9.0pt;}span.Char6{font-size:9.0pt;}厦门电波观测站一.基本情况厦门站的电波环境实时观测以电离层环境观测为主,配置有关观测设备,中国电子科技集团公司和部队单位联合开展电波环境观测、数据资源共享。二.主要职责该站的主要职责是开展电离层垂测、电离层斜测和卫星信号闪烁观测。收集、处理、存储该站的观测数据资料并快速、完整、准确、安全地将数据资料传输!
uniapp怎么能生成这个html 或者 在本地给一个html然后 把生产的富文本传递进去 让他展示出来
需要展示的html应该怎么接收这些富文本数据展示出来?
777七月
PHP如何格式化显示var_dump的数据信息?
我们用PHP可var_dump如下的数据:
array(3) { ["headers"]=> array(10) { ["Date"]=> array(1) { [0]=> string(29) "Tue, 19 Dec 2023 04:18:15 GMT" } ["Content-Type"]=> array(1) { [0]=> string(30) "application/json;charset=utf-8" } ["Content-Length"]=> array(1) { [0]=> string(3) "138" } ["Connection"]=> array(1) { [0]=> string(10) "keep-alive" } ["Keep-Alive"]=> array(1) { [0]=> string(10) "timeout=25" } ["Access-Control-Allow-Origin"]=> array(1) { [0]=> string(1) "*" } ["Access-Control-Expose-Headers"]=> array(1) { [0]=> string(1) "*" } ["x-acs-request-id"]=> array(1) { [0]=> string(36) "D9F90D8C-86FE-5CE7-B0C2-F862B13F0D1D" } ["x-acs-trace-id"]=> array(1) { [0]=> string(32) "aee3c24b1e10577d9aeaeabbd755edb9" } ["ETag"]=> array(1) { [0]=> string(24) "143IYUwvTz3swOnZmMs1E5w8" } } ["statusCode"]=> int(200) ["body"]=> array(3) { ["KeyId"]=> string(36) "3429f8ad-447d-468a-9d49-1f29be439a08" ["Plaintext"]=> string(24) "OA6zpdpSEEHL2tvCjS2j2Q==" ["RequestId"]=> string(36) "D1F90D8C-86FE-5CE7-B0C2-F862B13F0D1F" } }
请问下,是否有一些格式化的方式把它给格式化显示一下呢?比如我们知道对json可用json.cn来展示内容。
搜索没答案。
777七月
Jenkins在Windows容器中调用Docker命令的配置方法?
该问题已解决。
Windows下也可使用docker in docker的方案。
Windows下的docker和Linux的配置略有不同。
1. 首先docker-desktop必须按照如下配置。当前的docker必须挂载(是否应该用挂载)到已有的一个wsl发行版上。
"1706093458024.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241013/3e927c53029ac774a0937df3bfb993ad.png)
该配置导致的区别是在WSL系统中是否可以直接执行docker命令,并且具有docker相关的目录。
此处开启后,即可使用-v /var/run/docker.sock:/var/run/docker.sock -v
/usr/bin/docker:/usr/bin/docker这种挂载卷的参数来让容器访问宿主机的docker命令。
2. 其次是针对Windows系统,仅挂载-v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker两个路径是不够的,还需要挂载docker-cli的路径,在WSL中的路径为/usr/bin/com.docker.cli。
即增加挂载-v /usr/bin/com.docker.cli:/usr/bin/com.docker.cli
完成以上两个配置可以在Windows下的docker中允许Jenkins,同时Jenkins中也可以执行宿主机的docker命令,目前看此种方式没有任何权限问题
777七月
如何根据组件内容大小修改浮动窗口?
如何根据组件内容大小修改浮动窗口
777七月
Vue Router 在 mounted 中无用户交互 执行 router.push 的无法回退当前页面?
大佬们求助 vue-router在mounted中,没有用户交互情况下,执行router.push
,无法返回当前页面,没有当前页面的历史记录,用户点击跳转就可以
mounted(){
setTimeout(()=>{
this.$router.push('/my')
},2000)
},
777七月
页面跳转时数据传递不一致?
同源策略的限制,可能是没有开放http权限。
在config.json文件中的deviceConfig下,添加如下设置,尝试一下。
deviceConfig": {
"default": {
"network": {
"cleartextTraffic": true
}
}
},
«本文参与了"思否 HarmonyOS
技术问答马拉松" (https://segmentfault.com/a/1190000044600728),欢迎正在阅读的你也加入。»
777七月
理解资源缓存响应头Cache-Control与IndexDB的差异?
关于资源缓存响应头的cache-control字段和indexDB方案有什么区别
比如一个资源,不会频繁改变,我第一次请求到资源后放到indexDB中和直接在响应头设置cache-control为public和过期时间本质上有什么区别呢?
777七月
这样的一个css渐变怎么实现?
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241011/d6a34a466255045e4767cc03a46a085c.png)
中间的那个细条
777七月
css 一个文字悬停下划线效果?
xiahuaxian
.title {
color: #333;
line-height: 2;
position: relative;
display: inline-block;
}
.title span {
background: linear-gradient(to right, #7e2f2b, #146420) no-repeat right bottom;
background-size: 0% 2px;
transition: background-size 1s ease;
}
.title:hover span {
background: linear-gradient(to right, #7e2f2b, #146420) no-repeat left bottom;
background-size: 100% 2px;
}
文字移入一段文字中下划线从左往右变长,然后鼠标移出又从左往右退出的效果,文字移入一段文字中下划线从左往右变长,然后鼠标移出又从左往右退出的效果,文字移入一段文字中下划线从左往右变长,然后鼠标移出又从左往右退出的效果,文字移入一段文字中下划线从左往右变长,然后鼠标移出又从左往右退出的效果。