脑洞大咖
有什么办法可以根据cve的编号来进行网络漏洞测试?
不知道你说的是不是 Metasploit(MSF)这样的工具,能提供一些已知的漏洞库直接利用。
还有一些比如Goby这样的。
具体的脚本,有部份可能是开源的,可能有人会去主动维护,这里面常用的可能都有。但是真正还没有被披露出来的漏洞,就不会有了。
也有些漏洞,在github上搜索一下,也能搜索到一些比人封装好的工具,大概也能用。
没有的也可以自己写,只要按照相关工具的文档规范,自己实现也是可以的,难度不算大。
如果有明确的复现漏洞的步骤的话,按照复现的步骤就能编写脚本。
脑洞大咖
x轴有两个系列的要怎么做?
echarts或者antv都可以
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250110/033d54a9549170e22e84eb430961ec65.png)
脑洞大咖
如何监听到清除功能的操作?
不知道这两两篇文章对你有没有帮助
"https://www.grapecity.com.cn/blogs/how-to-customize-spread-ri..." (https://link.segmentfault.com/?enc=onwAN2hDqQN3ZSjZpLt24A%3D%3D.bEGLVbfQiZDvnHkaPpq03Bn8K3PW3WweKmFehroQbTMmbkXl6golluvtumAw2MLk1H3pMqFZBJOA9FiokqqJKfRIKYE%2BemsKh2dQ%2F5VKZuWZG4mffeL4DSCUPgbb7Y21)
"https://www.grapecity.com.cn/blogs/how-to-customize-spread-ri..." (https://link.segmentfault.com/?enc=bYXzQllBh7XzvDqMS7lUng%3D%3D.rFVYQVvad4DR49Q7816hWSOwI8saUBB7zQRcrpmuFZH6MmMpK47l6CqIRUTTO29ZAdG6aH8yQV%2FEGMibmgX7lAkIKCVBEqCfwMxDSfiYS%2F9qBSGdnJ54EyOrHZOVU1wC)
脑洞大咖
web页面直播项目使用video标签.flv协议偶现断流?
web端页面的直播项目,使用阿里播放器,流协议是.flv,电脑一直不动放那里拉流观看,大概一个小时后偶现不拉流了黑屏问题(全程无任何操作,会不会是电脑硬件或者浏览器性能、缓存的问题呢)
有没有好的解决方法?如何去监测到流断了我重新去执行一下拉流渲染操作?
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250107/3ae2c7e6427267d7e865ac4600a480be.png)
脑洞大咖
我最开始基于它的commit-001进行开发了分支(new-br),然后现在想要合并的时候,这个最新的版本是commit-002了,请问如何进行rebase呢?
这个时候应该用"git merge" 操作。上面你说到了合并时候是版本commit-002,说明其他人也在这这个分支进行了提交操作,这时候你用"git rebase" 是会影响到其他人的代码。
1. 先说你采用"git rebase"操作会产生什么后果:
假设同事A从c1这个commit基础上提交了两个commit,c3和c4。而这个时候同事B在原来c1基础上提交了c2,同时本地本地有个c5还没有推到远程仓库。若这个时候同事A直接进行rebase
操作,会发生同事B本地版本库和远程版本库不同步的情况,有可能会导致同事B的本地commit c2丢失。如下图所示:
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250102/9bd1f73aeb029664b93028ada1cc98aa.png)
2. 如果采用"git merge"操作可能在提交记录上会出现merge记录,并手动更新一些代码,但是不会出现丢失其他人代码的情况,如下图所示:
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250102/9d6ddad5674e8f3e99d14cb48dc7a3e2.png)
同事B如果再同步远程仓库的话,只需要要做合并操作即可,而不会出现和远程仓库无法同步的现象了
脑洞大咖
React Antd 表单校验报错validateFields重复报错?
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250101/a193f811a773eadac279d5668550bf2f.png)
自定义校验的数组中有两个校验规则,如果是为空,第二个校验要走成功,否则会冲突
脑洞大咖
根据websocket实时获取到uid和health,实时渲染到Echarts折线图上面?
const { uid, health } = data.data;
dataQueue.push({ uid, health });
// 检查是否已存在该uid的数据
if (uidDataMap[uid] === undefined) {
uidDataMap[uid] = {
xAxisData: [], // 存储X轴数据
seriesData: [], // 存储折线数据
};
} else {
// 检查当前区间数量是否超过最大区间数量
if (uidDataMap[uid].xAxisData.length >= MAX_DATA_INTERVAL) {
// 删除后面的数据
uidDataMap[uid].xAxisData.splice(0, uidDataMap[uid].xAxisData.length - MAX_DATA_INTERVAL);
uidDataMap[uid].seriesData.splice(0, uidDataMap[uid].seriesData.length - MAX_DATA_INTERVAL);
}
}
// 将数据添加到对应uid的数据中
uidDataMap[uid].xAxisData.push(uid);
uidDataMap[uid].seriesData.push(health);
// 更新ECharts图表
updateChart();
通过在收到新的数据时,会先检查当前区间的数量是否超过了最大区间数量。如果超过了,就会删除后面的数据,确保区间数量不超过最大限制。然后再将新的数据添加到对应的uid的数据中,并更新图表。
脑洞大咖
为什么简书上现在都在推一些乱七八糟的网文?是要倒闭了还是要转行?
彻底抛弃程序员群体
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241230/2d18d29260fae77254b2c125c8c2fee7.png)
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241230/8abd07d5531d0ddd4dd07a1b98af1813.png)
脑洞大咖
列表数据频繁闪烁?
const onMessage = async (event) => {
const data = JSON.parse(event.data);
if (data.data == undefined) {
console.log('未响应');
} else {
console.log(data.data);
if (data.data.state !== undefined) {
// 查找是否存在相同uid的数据
const existingDataIndex = TagInfoData.value.findIndex(item => item.uid === data.data.uid);
if (existingDataIndex !== -1) {
// 如果uid已存在,更新对应的数据
const existingData = TagInfoData.value[existingDataIndex];
existingData.frequency = data.data.frequency; // 更新frequency字段
existingData.state = data.data.state
} else {
// 如果uid不存在,新增一行数据
TagInfoData.value.push({
uid: data.data.uid,
angle: 0,
height: 0,
confi: 0,
longitude: 0,
latitude: 0,
speed: 0,
state: 0,
frequency: data.data.frequency
});
}
} else {
const targetingTypes = {
0x10: 'RTK',
0x11: 'UWB',
0x12: '融合'
};
// 查找是否存在相同uid的数据
const existingDataIndex = TagInfoData.value.findIndex(item => item.uid === data.data.uid);
if (existingDataIndex !== -1) {
// 如果uid已存在,更新对应的数据
const existingData = TagInfoData.value[existingDataIndex];
existingData.TargetingType = targetingTypes[data.data.type];
existingData.uid = data.data.uid;
existingData.angle = data.data.angle;
existingData.height = data.data.height;
existingData.confi = data.data.confi;
existingData.longitude = data.data.longitude;
existingData.latitude = data.data.latitude;
existingData.speed = data.data.speed;
existingData.frequency = frequencyData.value; // 将frequency字段设置为frequencyData的值
} else {
// 如果uid不存在,新增一行数据
TagInfoData.value.push({
TargetingType: targetingTypes[data.data.type],
uid: data.data.uid,
angle: data.data.angle,
height: data.data.height,
confi: data.data.confi,
longitude: data.data.longitude,
latitude: data.data.latitude,
speed: data.data.speed,
frequency: frequencyData.value
});
}
}
}
};
"图片.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241230/ce081fbb6ef972c088d1fe15ef8859db.png)
通过websocket实时发送的数据,上述代码的实现会使定位频率(frequency)字段频繁闪烁,大佬们帮忙看看如何解决呢?谢谢
脑洞大咖
zustand的store的,如何才能进行监听呢?
我有如下的zustand的store:
// tabs.store.ts
interface TabsSlice {
tabs: [],
addTab: (tab: TabsWithBreadcrumbs[number]) => {},
removeTab: (key: string) => {},
}
export const createTabsSlice = (set:any, get:any): TabsSlice => ({
tabs: [
{ title: '简介', breadcrumbs: ['简介'], key: '000' },
],
addTab: (tab) => {
console.log('mmkk2: ', tab)
return set((state) => {
const newTabs = state.tabs.push(tab)
return newTabs
})
}
})
请问如何才能进行store的state的监听呢?
比如tabs有变化,那么我就想要打印一下结果。请问如何做到呢?
脑洞大咖
五子棋机器人,简化代码?
我花了几天的时间用vue写了一个五子棋,与机器人对战
但是我感觉里面代码很多重复的部分,想要简化写法,希望大家帮我看看
五子棋
机器人小福正持黑棋与您作战
人机对战
{{ tip }}
重新开始
import { ref } from 'vue'
import dialogVue from '../comm/dialog.vue'
export default {
components: {
dialogVue
},
setup() {
//机器人玩五子棋的思路是
//当用户有三个连在一起时,挡住一边,有四个时,阻挡用户,其他情况机器人自己企图完成五个连线
const isMachine = ref(false)//是否是机器人对战
const score = ref(0)
const row = ref(20)
const col = ref(20)
const visible = ref(false)
const tip = ref('')
const boxs = ref([[{ place: 0, x: 0, y: 0 }]])
const curUser = ref(1)//只可以是1或者2 1表示白 2表示黑
let airPlace = []//记录机器人下棋子的地方
let previousBox = { place: 0, x: 0, y: 0 }
let fourDetial = {}//机器人是否有四个连在一起
function init() {
curUser.value = 1
visible.value = false
airPlace = []
boxs.value = []
previousBox = { place: 0, x: 0, y: 0 }
fourDetial = {}
for (let i = 0; i fourDetial.x - fourDetial.times + 1; i--) {
if (boxs.value[i][fourDetial.y].place === 0) {
boxs.value[i][fourDetial.y].place = 2
fourDetial = determineEquare3(4, 2, { x: i, y: fourDetial.y, place: 2 })
airPlace.push((i) * row.value + fourDetial.y)
curUser.value = 1
return
}
}
}
else
if (boxs.value[fourDetial.x + 1]?.[fourDetial.y]?.place === 0) {
boxs.value[fourDetial.x + 1][fourDetial.y].place = 2
fourDetial = determineEquare3(4, 2, { x: fourDetial.x + 1, y: fourDetial.y, place: 2 })
airPlace.push((fourDetial.x + 1) * row.value + fourDetial.y)
curUser.value = 1
return
} else if (boxs.value[fourDetial.x - fourDetial.times]?.[fourDetial.y]?.place === 0) {
boxs.value[fourDetial.x - fourDetial.times][fourDetial.y].place = 2
fourDetial = determineEquare3(4, 2, { x: fourDetial.x - fourDetial.times, y: fourDetial.y, place: 2 })
airPlace.push((fourDetial.x - fourDetial.times) * row.value + fourDetial.y)
curUser.value = 1
return
}
} else if (fourDetial.type === 2) {
if (fourDetial.geyi) {
for (let j = fourDetial.y; j > fourDetial.y - fourDetial.times + 1; j--) {
if (boxs.value[fourDetial.x][j].place === 0) {
boxs.value[fourDetial.x][j].place = 2
fourDetial = determineEquare3(4, 2, { x: fourDetial.x, y: j, place: 2 })
airPlace.push((fourDetial.x) * row.value + j)
curUser.value = 1
return
}
}
}
else if (boxs.value[fourDetial.x]?.[fourDetial.y + 1]?.place === 0) {
boxs.value[fourDetial.x][fourDetial.y + 1].place = 2
fourDetial = determineEquare3(4, 2, { x: fourDetial.x, y: fourDetial.y + 1, place: 2 })
airPlace.push((fourDetial.x) * row.value + fourDetial.y + 1)
curUser.value = 1
return
} else if (boxs.value[fourDetial.x]?.[fourDetial.y - fourDetial.times]?.place === 0) {
boxs.value[fourDetial.x][fourDetial.y - fourDetial.times].place = 2
fourDetial = determineEquare3(4, 2, { x: fourDetial.x, y: fourDetial.y - fourDetial.times, place: 2 })
airPlace.push((fourDetial.x) * row.value + fourDetial.y - fourDetial.times)
curUser.value = 1
return
}
} else if (fourDetial.type === 3) {
if (fourDetial.geyi) {
let i
for (let j = fourDetial.y - 1; j > fourDetial.y - fourDetial.times + 1; j--) {
i = fourDetial.x - (fourDetial.y - j)
if (boxs.value[i]?.[j]?.place === 0) {
boxs.value[i][j].place = 2
fourDetial = determineEquare3(4, 2, { x: i, y: j, place: 2 })
airPlace.push((i) * row.value + j)
curUser.value = 1
return
}
}
}
else
if (boxs.value[fourDetial.x + 1]?.[fourDetial.y + 1]?.place === 0) {
boxs.value[fourDetial.x + 1][fourDetial.y + 1].place = 2
fourDetial = determineEquare3(4, 2, { x: fourDetial.x + 1, y: fourDetial.y + 1, place: 2 })
airPlace.push((fourDetial.x + 1) * row.value + fourDetial.y + 1)
curUser.value = 1
return
} else if (boxs.value[fourDetial.x - fourDetial.times]?.[fourDetial.y - fourDetial.times]?.place === 0) {
boxs.value[fourDetial.x - fourDetial.times][fourDetial.y - fourDetial.times].place = 2
fourDetial = determineEquare3(4, 2, { x: fourDetial.x - fourDetial.times, y: fourDetial.y - fourDetial.times, place: 2 })
airPlace.push((fourDetial.x - fourDetial.times) * row.value + fourDetial.y - fourDetial.times)
curUser.value = 1
return
}
} else if (fourDetial.type === 4) {
if (fourDetial.geyi) {
let i
for (let j = fourDetial.y; j temp.x - temp.times + 1; i--) {
if (boxs.value[i][temp.y].place === 0) {
boxs.value[i][temp.y].place = 2
fourDetial = determineEquare3(4, 2, { x: i, y: temp.y, place: 2 })
airPlace.push((i) * row.value + temp.y)
}
}
}
else if (boxs.value[temp.x + 1]?.[temp.y]?.place === 0) {
boxs.value[temp.x + 1][temp.y].place = 2
fourDetial = determineEquare3(4, 2, { x: temp.x + 1, y: temp.y, place: 2 })
airPlace.push((temp.x + 1) * row.value + temp.y)
} else if (boxs.value[temp.x - temp.times]?.[temp.y]?.place === 0) {
boxs.value[temp.x - temp.times][temp.y].place = 2
fourDetial = determineEquare3(4, 2, { x: temp.x - temp.times, y: temp.y, place: 2 })
airPlace.push((temp.x - temp.times) * row.value + temp.y)
}
} else if (temp.type === 2) {
if (temp.geyi) {
for (let j = temp.y; j > temp.y - temp.times + 1; j--) {
if (boxs.value[temp.x][j].place === 0) {
boxs.value[temp.x][j].place = 2
fourDetial = determineEquare3(4, 2, { x: temp.x, y: j, place: 2 })
airPlace.push((temp.x) * row.value + j)
}
}
}
else if (boxs.value[temp.x]?.[temp.y + 1]?.place === 0) {
boxs.value[temp.x][temp.y + 1].place = 2
fourDetial = determineEquare3(4, 2, { x: temp.x, y: temp.y + 1, place: 2 })
airPlace.push((temp.x) * row.value + temp.y + 1)
} else if (boxs.value[temp.x]?.[temp.y - temp.times]?.place === 0) {
boxs.value[temp.x][temp.y - temp.times].place = 2
fourDetial = determineEquare3(4, 2, { x: temp.x, y: temp.y - temp.times, place: 2 })
airPlace.push((temp.x) * row.value + temp.y - temp.times)
}
} else if (temp.type === 3) {
if (temp.geyi) {
let i
for (let j = temp.y - 1; j > temp.y - temp.times + 1; j--) {
i = temp.x - (temp.y - j)
if (boxs.value[i]?.[j]?.place === 0) {
boxs.value[i][j].place = 2
fourDetial = determineEquare3(4, 2, { x: i, y: j, place: 2 })
airPlace.push((i) * row.value + j)
}
}
}
else if (boxs.value[temp.x + 1]?.[temp.y + 1]?.place === 0) {
boxs.value[temp.x + 1][temp.y + 1].place = 2
fourDetial = determineEquare3(4, 2, { x: temp.x + 1, y: temp.y + 1, place: 2 })
airPlace.push((temp.x + 1) * row.value + temp.y + 1)
} else if (boxs.value[temp.x - temp.times]?.[temp.y - temp.times]?.place === 0) {
boxs.value[temp.x - temp.times][temp.y - temp.times].place = 2
fourDetial = determineEquare3(4, 2, { x: temp.x - temp.times, y: temp.y - temp.times, place: 2 })
airPlace.push((temp.x - temp.times) * row.value + temp.y - temp.times)
}
} else if (temp.type === 4) {
if (temp.geyi) {
let i
for (let j = temp.y; j 0) {
boxs.value[previousBox.x - 1][previousBox.y].place = 2
airPlace.push((previousBox.x - 1) * row.value + previousBox.y)
} else {
boxs.value[previousBox.x + 1][previousBox.y].place = 2
airPlace.push((previousBox.x + 1) * row.value + previousBox.y)
}
} else {
let time = [{ time: 0, pre: -1, geyi: false }, { time: 0, pre: -1, geyi: false }, { time: 0, pre: -1, geyi: false }, { time: 0, pre: -1, geyi: false }]
airPlace.some((item, index, arr) => {
let itemi = Math.floor(item / row.value)
let itemj = item % row.value
if (time[0].time = 4) {
if ((boxs.value[itemi][itemj + 1]?.place === 0 && boxs.value[itemi][itemj + 1]) || (boxs.value[itemi][itemj - time[0].times]?.place === 0 && boxs.value[itemi][itemj - time[0].time]))
return true
else {
//虽然有四个横着,但是这四个横着两边都被挡住了,所以重新再来
time[0] = { time: 0, pre: -1, geyi: false }
}
}
}
}
if (time[1].pre === -1 || arr[time[1].pre] === item - 1 || (arr[time[1].pre] === item - 2 && !time[1].geyi)) {
if (arr[time[1].pre] === item - 2) {
if (boxs.value[Math.floor((item - 1) / row.value)][(item - 1) % row.value].place === 0) {
time[0].geyi = true
} else {
return false
}
}
if ((arr[time[1].pre] === item - 1 || arr[time[1].pre] === item - 2) && time[1].time === 0) {
time[1].time = 0
time[1].geyi = false
} else
time[1].time++
if (time[1].time > 3) {
time[1].time = 0
}
time[1].pre = index
}
if (time[2].pre === -1 || arr[time[2].pre] === item - 1 || (arr[time[2].pre] === item - 2 && !time[2].geyi)) {
if (arr[time[2].pre] === item - 2) {
if (boxs.value[Math.floor((item - 1) / row.value)][(item - 1) % row.value].place === 0) {
time[0].geyi = true
} else {
return false
}
}
if ((arr[time[2].pre] === item - 1 || arr[time[2].pre] === item - 1) && time[2].time === 0) {
time[2].time = 0
time[2].geyi = false
} else
time[2].time++
if (time[2].time > 2) {
time[2].time = 0
}
time[2].pre = index
}
if (time[3].pre === -1 || arr[time[3].pre] === item - 1 || (arr[time[3].pre] === item - 2 && !time[3].geyi)) {
if (arr[time[3].pre] === item - 2) {
if (boxs.value[Math.floor((item - 1) / row.value)][(item - 1) % row.value].place === 0) {
time[0].geyi = true
} else {
return false
}
}
if ((arr[time[3].pre] === item - 1 || arr[time[3].pre] === item - 1) && time[3].time === 0) {
time[3].time = 0
time[3].geyi = false
} else
time[3].time++
if (time[3].time > 1) {
time[3].time = 0
}
time[3].pre = index
}
})
time = time.sort((a, b) => b.time - a.time)
let placeHas = time.some(item => {
if (item.time > 0 && item.pre > -1) {
const i = Math.floor(airPlace[item.pre] / row.value)
const j = Math.floor(airPlace[item.pre] % row.value)
if (boxs.value[i][j + 1]?.place === 0) {
boxs.value[i][j + 1].place = 2
airPlace.push(i * row.value + j + 1)
fourDetial = determineEquare3(4, 2, { x: i, y: j + 1, place: 2 })
return true
}
if (boxs.value[i][j - item.time]?.place === 0) {
boxs.value[i][j - item.time].place = 2
airPlace.push(i * row.value + j - item.time)
fourDetial = determineEquare3(4, 2, { x: i, y: j - item.time, place: 2 })
return true
}
}
})
if (placeHas) {
airPlace = airPlace.sort((a, b) => a - b)
return
}
time = [{ time: 0, pre: -1, index: -1 }, { time: 0, pre: -1, index: -1 }, { time: 0, pre: -1, index: -1 }, { time: 0, pre: -1, index: -1 }]
airPlace.some((item, index) => {
let itemi = Math.floor(item / row.value)
let itemj = item % row.value
if (time[0].time = 4) {
if ((boxs.value[itemi + 1][itemj]?.place === 0 && boxs.value[itemi + 1][itemj]) || (boxs.value[itemi - time[0].time][itemj]?.place === 0 && boxs.value[itemi - time[0].time][itemj]))
return true
else {
//虽然有四个竖着,但是这四个竖着两边都被挡住了,所以重新再来
time[0] = { time: 0, pre: -1 }
}
}
}
}
if (time[1].pre === -1 || time[1].pre === item - row.value) {
if (time[1].pre === item - row.value && time[1].time === 0) {
time[1].time = 0
} else
time[1].time++
if (time[1].time > 3) {
time[1].time = 0
}
time[1].pre = item
time[1].index = index
}
if (time[2].pre === -1 || time[2].pre === item - row.value) {
if (time[2].pre === item - row.value && time[2].time === 0) {
time[2].time = 0
} else
time[2].time++
if (time[2].time > 2) {
time[2].time = 0
}
time[2].pre = item
time[2].index = index
}
if (time[3].pre === -1 || time[3].pre === item - row.value) {
if (time[3].pre === item - row.value && time[3].time === 0) {
time[3].time = 0
} else
time[3].time++
if (time[3].time > 1) {
time[3].time = 0
}
time[3].pre = item
time[3].index = index
}
})
time = time.sort((a, b) => b.time - a.time)
placeHas = time.some(item => {
if (item.time > 0 && item.pre > -1) {
const i = Math.floor(item.pre / row.value)
const j = Math.floor(item.pre % row.value)
if (boxs.value[i + 1]?.[j]?.place === 0) {
boxs.value[i + 1][j].place = 2
airPlace.push((i + 1) * row.value + j)
fourDetial = determineEquare3(4, 2, { x: i + 1, y: j, place: 2 })
return true
}
if (boxs.value[i - item.time]?.[j]?.place === 0) {
boxs.value[i - item.time][j].place = 2
airPlace.push((i - item.time) * row.value + j)
fourDetial = determineEquare3(4, 2, { x: i - item.time, y: j, place: 2 })
return true
}
}
})
if (placeHas) {
airPlace = airPlace.sort((a, b) => a - b)
return
}
}
}
//判断用户是否有横竖斜大于等于3个棋子的情况,只需要查看用户上一个棋子落下后是否造成这样的情况就行
function determineEquare3(maxTime = 3, userPlace = 1, box = previousBox) {
let times = 0
let preP = -1
let geyi = false
let tempArr = []
//竖
for (let i = (box.x - 5 >= 0 ? box.x - 5 : 0); i = maxTime) {
if (times === 3 && geyi) {
continue
}
if (boxs.value[i + 1]?.[box.y].place !== 0 && boxs.value[i + 1]?.[box.y].place !== userPlace && boxs.value[i - times]?.[box.y].place !== 0) {
break
} else {
tempArr[0] = tempArr[0]?.times > times ? tempArr[0] : { x: i, y: box.y, type: 1, times, geyi }
if (boxs.value[i + 1]?.[box.y].place !== 0 || boxs.value[i - times]?.[box.y].place !== 0) {
tempArr[0].priority = 2
} else {
tempArr[0].priority = 1
}
}
}
}
}
times = 0
preP = -1
geyi = false
//横
for (let j = (box.y - 5 >= 0 ? box.y - 5 : 0); j = maxTime) {
if (times === 3 && geyi) {
continue
}
if (boxs.value[box.x]?.[j + 1]?.place !== 0 && boxs.value[box.x]?.[j + 1].place !== userPlace && boxs.value[box.x]?.[j - times]?.place !== 0) {
break
} else {
tempArr[1] = tempArr[1]?.times > times ? tempArr[1] : { x: box.x, y: j, type: 2, times, geyi }
if (boxs.value[box.x]?.[j + 1]?.place !== 0 || boxs.value[box.x]?.[j - times]?.place !== 0) {
tempArr[1].priority = 2
} else {
tempArr[1].priority = 1
}
}
}
}
}
times = 0
preP = -1
geyi = false
//左斜
let i
let j
if (box.x - 5 >= 0 && box.y - 5 >= 0) {
i = box.x - 5
j = box.y - 5
} else if (box.x - 5 >= 0 && box.y - 5 = 0) {
i = 0
j = box.y - (box.x - i)
} else {
if (box.x > box.y) {
j = 0
i = box.x - (box.y - j)
} else {
i = 0
j = box.y - (box.x - i)
}
}
for (j; j = maxTime) {
if (times === 3 && geyi) {
i++
continue
}
if (boxs.value[i + 1]?.[j + 1]?.place !== 0 && boxs.value[i + 1]?.[j + 1].place !== userPlace && boxs.value[i - times]?.[j - times]?.place !== 0) {
break
} else {
tempArr[2] = tempArr[2]?.times > times ? tempArr[2] : { x: i, y: j, type: 3, times, geyi }
if (boxs.value[i + 1]?.[j + 1]?.place !== 0 || boxs.value[i - times]?.[j - times]?.place !== 0) {
tempArr[2].priority = 2
} else {
tempArr[2].priority = 1
}
}
}
}
i++
}
//右斜
if (box.x - 5 >= 0 && box.y + 5 = 0 && box.y + 5 >= row.value) {
j = row.value - 1
i = box.x - (row.value - 1 - box.y)
} else if (box.x - 5 row.value - 1 - box.y) {
j = row.value - 1
i = box.x - (row.value - 1 - box.y)
} else {
i = 0
j = box.y + (box.x - i)
}
}
preP = -1
times = 0
geyi = false
for (j; j > (box.y - 5 >= 0 ? box.y - 5 : 0); j--) {
console.log(times, preP, geyi, tempArr[0], i, j, box, 'times,preP,geyi,tempArr[0],i,j,box,右斜')
if (boxs.value[i]?.[j]?.place === userPlace) {
if (preP === -1 || preP === j + 1 || (preP === j + 2 && !geyi)) {
if (preP === j + 2) {
if (boxs.value[i - 1][j + 1]?.place === 0) {
geyi = true
times++
} else {
continue
}
}
times++
} else {
times = 1
geyi = false
}
preP = j
if (times >= maxTime) {
if (times === 3 && geyi) {
i++
continue
}
if (boxs.value[i + 1]?.[j - 1]?.place !== 0 && boxs.value[box.x]?.[j - 1].place !== userPlace && boxs.value[i - times]?.[j + times]?.place !== 0) {
break
} else {
tempArr[3] = tempArr[3]?.times > times ? tempArr[3] : { x: i, y: j, type: 4, times, geyi }
if (boxs.value[i + 1]?.[j - 1]?.place !== 0 || boxs.value[i - times]?.[j + times]?.place !== 0) {
tempArr[3].priority = 2
} else {
tempArr[3].priority = 1
}
}
}
}
i++
}
console.log(tempArr, 'temp')
tempArr = tempArr.sort((a, b) => b.times - a.times)
if (tempArr[0]?.times >= 3) {
if (tempArr[0].priority === 2) {
let temp = null
tempArr.map((item, index, arr) => {
if (item?.times >= arr[0].times) {
if (item.priority === 1) {
temp = item
}
}
})
if (temp) {
return temp
}
//挡住一边的三个没有必要去阻挡
if (tempArr[0]?.times === 3) {
return false
}
}
return tempArr[0]
}
return false
}
//验证是否赢了
function validateWin() {
if(visible.value) return
for (let i = 0; i
.mineDlearance {
display: flex;
justify-content: center;
width: 100%;
height: 100%;
// align-items: center;
.game {
// background: #ccc;
padding: 10px;
height: 850px;
.top {
display: flex;
justify-content: space-between;
}
.game-main {
margin-top: 10px;
.item-one {
width: 40px;
height: 40px;
border: 1px solid #000;
box-sizing: border-box;
background: goldenrod;
cursor: pointer;
.circle {
width: 100%;
height: 100%;
border-radius: 100%;
}
}
}
}
}
脑洞大咖
vue2封装的表格组件问题?
{{ scope.row[item.key] === 0 ? '信息' : '' }}
{{ scope.row[item.key] }}
{{ scope.row[item.key] }}
{{ bytesToSize(Number(scope.row[item.key])) }}
{{ item }}
{{ scope.row[item.key] }}
{{ scope.row[item.key] }}
这是封装的子组件的表格组件
添加行是在父组件里面实现的,把值传给子组件
当我添加新的一行的时候,没有问题,添加两行的时候form.num修改其中一个的时候另外一个也跟着修改,如何解决这个问题
脑洞大咖
docker打包报错找不到文件?
找到原因了
"图片" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241216/47e729fe545bf1c1d4b66364ecc97b6e.png)
至于为什么重新开始进入单独打包这个,而不是docker-compose也会报错这个,实话说不知道,怀疑是不是有什么缓存,刚刚把requirements.txt复制了一份,用其他名字,再从头打开窗口重新打包就不会报错了。
脑洞大咖
打开网址报错403 Forbidden,请问怎么解决?
确认HTTP服务的对应目录是否有查看权限。
脑洞大咖
有大佬知道这种占比怎么实现不?
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241209/6027213315097dcdf1f6313045284cd2.png)
三角形上面的图片也需要根据百分比,去渐变,动态变化
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241209/d7760c485a9ac0e9f212b9ac8562b9b5.png)
貌似Ui设计渐变的左右搞反了
脑洞大咖
ORACLE如何在不停机的情况下执行数据库表重建并且不丢失数据?
RT,大表,随时都有数据的读写
脑洞大咖
兄弟们,web端有没有好的h264播放器可以播放字节码的?
都拿到字节流了,理论上你把它转成blob对象就可以在video标签下播放了,see:
"https://stackoverflow.com/questions/14317179/display-a-video-from-a-blob-javascript" (https://link.segmentfault.com/?enc=YlcK0GrQzg8wYbbA0ksJDg%3D%3D.C7cWQnRAGtZrYRt%2FVtfGtk4WUPUQQhJrRyYd4Xdl9KHyzbhBYwW7YfIMb2CYWb74aXXWnv7riQte9rFtbEmambel9tX7GhTgP6ffQQm3hq26Qi8Ij%2FwL2pzEgHCkRBhH)
脑洞大咖
session 和 sessionStorage 是不是没有什么关联?
没有关系,只是设计思路是一样的:在整个会话中保持,多个应用可以共用这个状态缓存。
换到前端中就是会话在浏览器只要不关闭就会一直保持,多个同域页签之间可以共享这个状态缓存。
"Window.sessionStorage - Web API 接口参考 | MDN" (https://link.segmentfault.com/?enc=B4dnGF%2FReXYL7OfX8sSMUw%3D%3D.kKVzVJ4Po5%2FKgld8%2BT1h8tujCjEtYWt5WArsKzmvsvmIq1EWWeiJEKsgwG4OHTfhPyTrBSuwF2Hkd9GqHMrDFM9VUEdjKMAED%2FFA%2BpG86GM%3D)
脑洞大咖
用system函数调用bash指令会显著降低C的效率吗?
一个程序执行main入口函数之前,还会执行很多初始化过程,你可以查询操作系统原理里调用一个进程的说明。system('echo
111>>1.txt');就相当于执行一个echo程序,自然比你自己写的成千上万行代码都要慢。
脑洞大咖
CNN输入层数据维度问题?
为社么加了输入数据一维还是报错
https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241130/99c848cc0ff9fd65075261210b78edf9.png
import numpy as np
import librosa
import soundfile
from keras.models import Sequential
from keras.layers import Dense, Dropout, Flatten, Conv2D, MaxPooling2D
from keras.optimizer_v1 import Adam
import tensorflow as tf
def load_audio_data(file_path):
audio, sample_rate = librosa.load(file_path, res_type='kaiser_fast')
mfccs = librosa.feature.mfcc(y=audio, sr=sample_rate, n_mfcc=40)
mfccs_processed = np.mean(mfccs.T,axis=0)
return mfccs_processed
#CNN
def build_model():
model = Sequential()
model.add(Conv2D(32, (3, 3), activation='relu', input_shape=(40, 1)))
model.add(MaxPooling2D((2, 2)))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(1, activation='linear')) # 输出层
model.compile(loss='mean_squared_error', optimizer=Adam())
return model
# 训练模型
def train_model(model, X_train, y_train):
model.fit(X_train,y_train,batch_size=128, epochs=10)
audiopath="E:\BaiduNetdiskDownload\yy\kel.wav"
audiodata=load_audio_data(audiopath)
X_train = np.array([audiodata])# 这里只使用一段音频作为训练数据,实际应用中需要更多数据
print(X_train)
X_train= tf.expand_dims(X_train, axis=-1)
y_train =1
# 构建并训练模型
model = build_model()
train_model(model, X_train, y_train)
脑洞大咖
Harbor私服无法在外网访问?
我看了一下我自己本地的harbor v2.8.4,发现似乎和 hostname / external_url 都没有关系。
这个hostname字段,看上去只和web上显示提示的推送命令提示有关系。
不管hostname改成什么,都不会影响到nginx,nginx默认配置里面server_name是注释掉的。
所以,这里不管通过什么IP/Hostname访问,只要访问的端口正确,即通过80/443/或者设置的其他端口,都能访问到harbor的服务。
理想情况下,我觉得可以把hostname改成域名比较合适,在内网访问时DNS服务器返回内网IP,在外网访问时DNS服务器返回外网IP。
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241127/88fde7af2a3b483b7c411e0dc31437cc.png)
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241127/7e6e35b0dab150f408518c15c9b75e4f.png)
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241127/306a02fcdc0f14dbaf94c87682516f58.png)
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241127/f5386b0cf14f3f1bcd497adfd6c32958.png)
脑洞大咖
关于 ts 中回调函数参数加上泛型限制后传入联合类型为什么会报错?
相关代码如下,在 use 函数中加入联合类型后就会告诉我 number 和 string 类型不兼容,求教应该怎样解决这个问题,换个写法的话我想要的是保留
use 的泛型
declare function use(data: T, cb: (arg: T) => void): void
declare function cb1(arg: string): void
declare function cb2(arg: number): void
use('', cb1) // success
use(1, cb2) // success
const data: string | number = 9
const cb: typeof cb1 | typeof cb2 = cb1
use(data, cb) // error
***
我面临的实际问题是,我有一个工具函数,它会返回一个 变量 和
消费这个变量的函数,变量的类型和函数的入参是强关联的,都需要限制为同一个类型,而这两个返回值都会被另一个函数作为入参,当我的工具函数返回一个联合类型的时候就得到了错误,上面给的实例代码有点不符合实际情况,看看下面的代码应该能更好理解
declare function getCb():
| { data: string; cb: (arg: string) => void }
| { data: number; cb: (arg: number) => void }
declare function use(props: { data: T; cb: (arg: T) => void }): void
use(getCb()) // error
脑洞大咖
vue3 项目使用.prettierrc自动保存,元素标签换行风格如何配置?
如图所示,我如何配置保存成我想要的结果。
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241121/1b4eb14ae00016e97e55fa212dba2bf3.png)
脑洞大咖
Vue3移除了v-show?
文心一言的编程问答可以说是我体验过最差的。。当然是以官方文档为准了,建议用隔壁阿里的通义千问,当然这些生成式AI目前都不能全信,还是要有自己的判断
脑洞大咖
两条查询SQL能不能合成一条?
SELECT * FROM (
SELECT * FROM t WHERE active = 1 AND enabled = 1
UNION ALL
SELECT * FROM t WHERE enabled = 1
) AS temp
ORDER BY (CASE WHEN active = 1 THEN 0 ELSE 1 END)
LIMIT 1
«用 AND 链接的,程序是不是从左到右这样一个一个匹配?»
是的,顺序优先级是not>and>or,除非用括号括起来
脑洞大咖
有什么好办法可以提取图片的各个元素的坐标?
所谓的元素是什么意思,怎么判定为一个元素,还是说就是想提取文字的坐标?
脑洞大咖
一次"愉快"的找bug 问题是解决了 但是还不太能理解 求大佬解惑!!!?
一次"愉快"的找bug 问题是解决了 但是还不太能理解 求大佬解惑!!!?
"企业微信截图_17016750961423.png" (https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241107/c3d369614728246e2da83d320cae129e.png)
如图 uat环境 这个toast的背景色样式被popup的样式覆盖了
(还有个图片预览 点开也是背景色白底 被popup样式影响)
明显看到popup的样式文件有两个 看hash值是其它页面的
因为本地是正常的 遂想到应该是打包影响(打包产物与本地不一致)
然后在vite.config.js里看到了这个
"企业微信截图_1701674813442.png" (https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241107/05985929af8fb1d1171d200f327fb55d.png)
我看到组长写的注释 “...自动important” 觉得应该是这里有门道
猜测VantResolver这个就是处理vant相关的
搜索配置项发现有个importStyle(是否同时导入样式) //主要就它长得像
加了 给false 发uat 好了!!!
"企业微信截图_17016749469999.png" (https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241107/0ff6b3b1fc1055b060c22afb2e8745df.png)
"企业微信截图_17016751398036.png" (https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241107/b55851deac3659b63936eacf80f368ea.png)
问题是解决了 但是没想明白
当时看van-popup和van-toast的权重都是(0,1,0)
第一个样式文件里有toast和popup的样式 toast是在popup的下面
另一个样式文件里只有popup的样式 是这样覆盖的吗
补充:
看link元素是第二个样式文件在第一个下面 这个效果解释通了
为什么会出现两个样式文件?
有没有办法控制这两个文件的插入顺序?(当前页面样式文件理应在最下面的 )
脑洞大咖
PDF翻页以及文字定位?
vue使用pdf怎么监听他的翻页和文字定位的事件?
我在网上找了一些帖子都是利用iframe做的 除了这个方法还有其他办法吗 还有pdf.js和pdf-dist.js不是一个东西吗???
"image.png" (https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241104/cfec09747235387bd3abab42fed4787b.png)
是这种翻页 不是只渲染一页然后下一页 这个页面就变成了第二页而是整个渲染然后去进行翻页
脑洞大咖
next13 react项目 setupProxy.js 不起作用?
// next.config.js
module.exports = {
async rewrites() {
return [
{
source: "/api/:path*",
destination: "https://www.examole.com/:path*",
},
]
}
}
脑洞大咖
时钟芯片rx8025t芯片读取,小时超出24小时,请问是什么原因?
https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241103/ce745ccc4df0004f86fe90132a608b1a.png
这是i2c返回的结果
小时是第三个字节,0x36,转成bcd然后10进制是36,直接超出24小时了
#include
unsigned char bcd_decimal(unsigned char bcd)
{
return bcd - (bcd >> 4) * 6;
}
int main(void)
{
unsigned char buf[7] = {0x18, 0x27, 0x36, 0x00, 0x08, 0x12, 0x23};
printf("date -s %04d-%02d-%02d %02d:%02d:%02d\n",
2000 + bcd_decimal(buf[6]),
bcd_decimal(buf[5]),
bcd_decimal(buf[4]),
bcd_decimal(buf[2] & 0x3f),
bcd_decimal(buf[1]),
bcd_decimal(buf[0]));
return 0;
}
输出结果是
➜ gcc hello.c && ./a.out
date -s 2023-12-08 36:27:18
参数解析:
https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241103/5bc2a24b1011b6c7496b2c3ff7dffb34.png
具体规格书:"规格书" (https://link.segmentfault.com/?enc=Kcgjj4eycl7L3sPVYw24cQ%3D%3D.%2BxZX%2B2Q8SycJ%2Bbo3MhW13bjxJu4EfOiBtOOFGnCR27iUxm6H2NjtGtQuGaPZ3KYQOJ%2FYC4Kpg3kp0AZizKCRbCRKAhQPUoK1q%2FPyIpatoEBR9XpVNCsTOJXHtK%2FyAq1h)
请问是什么原因导致的?
脑洞大咖
slim框架如何获得query参数?
可通过如下方式获取:
get('/hello/{name}', function (Request $request, Response $response, array $args) {
// 获取路径参数
$name = $args['name'];
// 获取查询参数
$queryParams = $request->getQueryParams();
// 获取特定的查询参数
$aaa = isset($queryParams['aaa']) ? $queryParams['aaa'] : null;
$bbb = isset($queryParams['bbb']) ? $queryParams['bbb'] : null;
// 构建响应字符串
$greeting = "Hello, $name";
if ($aaa !== null && $bbb !== null) {
$greeting .= " - aaa: $aaa, bbb: $bbb";
}
// 将响应写入响应体
$response->getBody()->write($greeting);
return $response;
});
$app->run();
脑洞大咖
如何在AMH上升级PHP、NGINX和MYSQL?
如果是小版本升级软件商店有更新,你在面板就可以直接升级。
如php-7.4.0升级到7.4.1。
如果是大版本更换,直接在网站『环境列表』选择更换,如php-7.4更换到php-8.3等。
你也可以建立多个网站环境(如不同的php、不同的mysql组成的多个环境),
编辑虚拟主机随时可以切换到不同的环境。
脑洞大咖
如何在AMH上以www用户运行PHP脚本?
amh有安全限制非root用户是执行不了amh命令。
如果要用非root用户执行,建议用直接用php的命令,先在面板的『网站』环境列表勾选上命令行选项。(像上面的lnmp01、php-8.3的环境)
再用sudo指定www用户执行,如:
sudo -u www php /home/wwwroot/lnmp01/domain/test.com/web/app/bin/legacy -C
cron
脑洞大咖
如何在php容器中编译mysqli扩展?
进入php源码目录中,配置需要提供mysql_config文件的位置,而且mysql_config文件又要去找mysql其他文件。
./configure --with-php-config=/usr/local/bin/php-config --with-mysqli=/usr/bin/mysql_config
由于我的php 和mysql 是2个容器 ,不在一个文件系统里,这可怎么办呀?
脑洞大咖
关于两个数组的对比关系 比较,想请教下大家?
function everyOrderMatch(arr1, arr2) {
var list1 = [...arr1].sort((a,b) => a-b);
var list2 = [...arr2].sort((a,b) => a-b);
return arr1.every((n,i) => arr2[i] === list2[list2.length-1-list1.indexOf(n)])
}
把两个数组从小到大排序,"list1.indexOf(n)"取出"arr1"的数值的排序值,"list2.length-1-list1.indexOf(n)"是1中的排序值对应的2中的排序值(最小对应最大),"arr2[i] === m"判断该值是否等于"arr2"中相同索引的数值
脑洞大咖
js 获取怎么复制的内容?
用这个组件"clipboard":
«"https://github.com/zenorocha/clipboard.js" (https://link.segmentfault.com/?enc=4vDvFiTxBTeBcLXFHjKuYw%3D%3D.7DKJ%2Bq%2Fwy6eknrBbW9J%2Fbgw7VFCXFwyh1ovPECFmTccPwjm3JhQ%2ByJtmgFjfdO2L)»
或"vue-clipboard2"
«"https://www.npmjs.com/package/vue-> clipboard2" (https://link.segmentfault.com/?enc=YSE6xE8rqb9d7%2FfeWLzzjg%3D%3D.nsZ6JgyAe7fVlR0mk6J105AIWuQVg8olGK66%2BDkv0Af4LoOAhGRYK3ewPoVF09OO)»
脑洞大咖
如何在数据库中创建空间并解决实名认证问题?
反馈给七牛云客服,会比较好
脑洞大咖
Windows 10有线网卡断网,微软浏览器可上网?
win10PC机有线网卡,上网时突然断网。出现了飞行模式!当时用的是华为浏览器,因为占用内存较少。
网线,路由器都换了,基本排除硬件问题。
发现微软浏览器能上网!其他浏览器不能,app也不能上网。
请高人解惑
买了个无线网卡安上,用Edge正常,用华为浏览器重装了,还是不通,诊断:Windows无法与设备或资源(主DNS服务器)通信。
ipv4设置固定IP,DNS。
脑洞大咖
WGCLOUD服务接口监控,响应状态码是500但是没有发送通知是怎么回事?
这是因为WGCLOUD的默认告警设置是:服务接口连续2次检测失败才发送告警通知
所以如果第一次接口出现500错误,没有收到告警通知是正常的,如果第二次检测接口失败,这时候系统就会发送告警通知邮件
不过这个阈值可以修改,在server配置文件里修改如下配置项,然后重启server就可以生效了
#服务接口告警开关,yes开启,no关闭
heathWarnMail: yes
#服务接口监测失败连续几次后发送告警通知,默认2次
heathWarnCount: 2
https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241008/70332d99a0d217f61a2dc9cec41f9b96.png
脑洞大咖
HTML中的Ruby标签之间的间隔问题?
2个使用下划线标签包裹的HTML的ruby标签,为什么中间会有间隔?
源
(
みなもの
)
義経
(
よしつね
)
如题:
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241009/d87d3a2a57742721cd7ccd9fdba02788.png)
我想让「源義経」这三个字的下划线能连续起来,现在不知道什么原因,中间断开了
脑洞大咖
vue3编译过程的调试,怎么才能调试啊?
使用"vscode"的"launch.json"断点进去看不到吗?
脑洞大咖
如何解决MongoDB 在小型服务器上过高的资源占用问题?
CPU使用率70%远不至于崩溃,可能是内存占用满了,可以编辑“/etc/security/limits.conf”文件限制内存使用
脑洞大咖
流式布局,长项换行后,后面的短项自动补位,有无简单方法?
不定宽度列表项流式布局,长项换行后,后面的短项自动补位,有什么简单的css实现?
如下图:
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241008/9240597cc121aa690b6bbc39a7f6ee97.png)
脑洞大咖
linux 系统的多用户概念怎么理解?
如题所示,最近在自学 linux 系统的相关结构,读到了以下的内容
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241008/b02eb98ca3e65a710316f0fddba74311.png)
我的电脑是 mac 也是类 unix 的系统,但是在日常使用的时候,我并没有感觉到这些 “多用户” 的概念。
问题1:所谓的“多用户”该怎么去理解?
问题2:用户组又是什么?
脑洞大咖
如何在MySQL中高效处理多表插入操作?
目前有个需求是要将csv文件内容分别插入到某数据库的两张表中 ,有一定依赖关系。由于一直是学生本科刚大四没毕业,故实战经验与性能优化经验薄弱
demo信息如下:
两张表分别是角色信息表和用户信息表
角色信息表
学号/工号 | 姓名 | 性别 | 角色(依赖权限表id) | 科目表id(依赖于科目表)
---|---|---|---|---
用户信息表
uuid | 手机号 | 密码 | 角色id(依赖于角色信息表)
---|---|---|---
权限表:老师、管理员、学生
科目表:语、数、英……
想请教各位大佬,用sql语句一次性批量插入与使用for循环去插入,性能方面影响大吗
***
注:数据库环境为MySQL
脑洞大咖
HarmonyOS 4.0 Panel 高度问题怎么解决?
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241006/a96ed91cf10b03b5e39e9378f7ccae33.png)
你想让Panel的红色蒙层区不响应触摸事件,Panel控件不支持对单独蒙层区的设置,蒙层区和下面的内容区是整体的(官方panel文档:"https://developer.huawei.com/consumer/cn/doc/harmonyos-refere..." (https://link.segmentfault.com/?enc=H7u4MlFsVqmNXwGpu08mpA%3D%3D.QFsitIhU7rZn18hk%2F%2BfGmiJWFzabGeBmlOhQAwOqDGbFnSfjqMRPmbQi%2FriGdWibZfySkzmU%2Fts8qwEh0KDhm4%2FisGOwo4%2BZY8qMBSik3IoqkyxAX1WDRhppdRLGUj6izmypy%2Fs0Fg2Dp50Neay81g%3D%3D))
想实现这种效果需要你自己实现一个容器控件,只让内容区响应触摸事件。
脑洞大咖
HTML的页面的请求,是否可以用js函数获取到当前请求的请求头?
请问,比如我一个针对html的请求,
"http://demo.com/aaa.html" (https://link.segmentfault.com/?enc=VPP8bnyxmES6GhOnSol%2FzA%3D%3D.9y4nWoqHWntgW2eZxLxdSNUj7wqp41am1npqYubQ9IA%3D)
请求头中有一个请求头: x-reqid: 00011111
请问下,我是否可以在aa.html中有一个js函数,解析到本次请求的id。然后加速到html DOM中?
脑洞大咖
vue 可以让相同key的节点只移动位置不重新渲染吗?
"代码复现" (https://link.segmentfault.com/?enc=eJTbQ901IurC2G57vXAF9w%3D%3D.fnCe1wP7pV%2FS1AmG5VO%2Bdo7dng6ge%2BIcLuPY1a%2F%2BrvfqsHy8bp1v0BjAb4lBKPxV8eHfvJOepXZUSFSdLEAKHtqjsXhH4txQolRiASIbwd2MsbwyvpHiYm7q9TBtKqTYT33ss2myshgUxGzkkjvwKmI%2FDF6QLE0%2BaEah6qRtSJIA0fEkbDNf20QCpvGC7s2Vzkx%2FaVmJMrf1%2FEu%2FMIgkwPBAOYS60XQ%2F%2F8Yd2Yzcj7Tadfip7InakUNMdtMhiA4Slz97CeUNgFrY1bZ%2BS4NDGnnIqeQ3ZvavTqRRChWhyIrNZqerBBE3w6EaAoelcSFYw%2BsHsLvAWVG%2BOrswxkdSvIV7Y%2FwxlBXvxweNrdzk3O2qodpHD81S6ytYgSFNf3v6vAF4JooOBqkoiw2tqvF3k%2B36DqW4sa1hCxqGIGtLS5QBQcK33XNEu0FpwOINw7k2j85a0cvSoLyRu7%2Fsf156FjGJLb%2FnzO3Tg66nZ9bKYcI2RHB0GbN6tlXUmZn0dK5Sgs%2Fq4s77QnH801%2BB2uwfwML91vfNgXVDWVc4DwQugLqVPUu5NGPJpgXaSa79kii12fg905jeL2rGX%2Bg%2BrSVBZVeTH2j4IJtvmzU9g%2F2Nc5ruYHXLVsCqZpyzbvcmRobefw0MJFr0ruuJLaksPVm3hw%3D%3D)
我的业务代码中 "v-for" 创建多个 "iframe" ,只是删除某一个便会更新后方所有节点,很不好,如何避免呢?
可以让相同"key"的节点只移动位置不重新渲染吗?
脑洞大咖
关于vue 图片偶尔请求不到加载不出来的问题?
大佬们,我这个图片的数据是后端请求来bFileList动态插入rowData里面,然后循环出图片的url,我刷新点击弹窗展示图片,有时候图片能够全部加载出来有时候又不能全部加载出来。有什么方法可以解决吗?
图片url可以访问得到,有时候没有加载出来。使用了vue,ui用的elementui。图片显示不出来后,等一会也不会加载出来,需要重新加载。加载不出来显示碎裂图片。举个例子,加载不出来的图片url:"http://192.168.1.220/files//200001//821654b4535a415e83976f9a0..." (https://link.segmentfault.com/?enc=iO8NNcoylMKnKE4A9J%2FAmA%3D%3D.o4o5o1X8MoQwhz92DmPkkSiMFptPP4WvWVRXA06YZ9Djd8SOUuvpREQZj1rmh0F6lxorEcGeB%2F4mMOIq%2FcSBY7UUzVxLGSYxzO3ZO%2BAvnuI%3D),可以访问打开。在页面偶尔能打开偶尔不能打开,所有图片都是这样
"90d7aed1a49abf7faef12f804266a9b.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241003/50a1f716934c4dc57a263d8c32170683.png)
"12453de721626290353a56f7bd37699.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241003/d7f75627b0b12f1f2ff7d643f96864c8.png)
"006589d39c7c4a06ad48129ed7e76f2.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241003/cdf14055fdfdef2696dc39ec9b21aa3e.png)
甚至最后我把代码上的图片url写死,图片加载还是会发生有时候加载不出来的问题。
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241003/69ea2d3bec7f599a64f18332c9223acd.png)
脑洞大咖
vue3 递归list怎么让他子集有父级也显示?
给你改造了下
const checkChildren = (children) => {
let flag = false
children.forEach(value => {
let showChild = false
if (value.children && value.children.length) {
showChild = checkChildren(value.children) // 接收子级的状态
}
value.show = showChild || !searchTitle.value || value.title.toLowerCase().includes(searchTitle.value.toLowerCase())
flag = flag || value.show
})
return flag // 返回子级的状态,决定父级状态
}