梦想缔造狮
有没有好用的电子教室软件?
1.老师可以把自己的屏幕主动给学生看,学生只能看。
2.老师可以查看某个学生的屏幕,也可以操作。
3.支持局域网内使用。
4.学生人数支持30个。
5.支持下发作业和收作业。
梦想缔造狮
如何让 docker build 的时候,不要联网更新基础镜像?
除非你显式指定了 "--pull" 参数,否则 "docker build" 只会用本地的镜像,不会联网检查更新的(前提是你本地确实有这个 tag)。
你这里的“好像”是根据什么判断出来的?
梦想缔造狮
es6中的数组转换,关于Array.from()的一些疑问?
11
22
33
let lis = document.querySelectorAll('li');
console.log([...lis]);
let liC= Array.from(lis,ele=>ele.textContent);
console.log(liC);
结果:
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250105/4f58d4f465f6ffaf7828b3b8ea1d542a.png)
问题:
1."lis,ele=>ele.textContent"中我把"ele.textContent"换成了"lis.textContent"结果出来的是一个undefine的集合,是为什么?"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250105/c8453909e097609e3e4524c98b16e375.png)
2."lis,ele=>ele.textContent"我是否可以理解为"Array.from(arr,function)",然后返回元素的文本内容?
3.该怎么理解lis和ele之间的关系呢?(因为看到很多案例都是说from可以传入两个参数,但是好像返回的都是第二个参数的东西,这一块不是很理解)
理论知识学的很浅,上手就有点迷茫,感谢帮忙指导,帮我恶补,非常感谢
梦想缔造狮
做好的项目部署上线后,在服务器上拷贝地址到另一台服务器(同一局域网下),为何报错不显示?
后端部署到服务器上的地址写的localhost,改为IP地址就可以了。(后端问题总是前端背锅😶)
梦想缔造狮
输入框滚动加载与搜索如何进行封装?
技术 vue2 项目 框架是 antdv 1.7.8
我项目中有很多表单,表单中有很多Select 选择器 选择器的内容是项目中的某一个列表,有很多这种下拉,在不同的界面。
我的问题是,单独的每一个下拉框都可以进行 远程搜索与滚动加载,但是接口是不同的,所以如何进行封住一下写一个,所有的下拉框都能用。
代码demo如此
{{item.industry_name }}
{{ item.ent_name}}
import {
orgSelectAPI,
orgEntSelectAPI,
} from "@/api/enterprise.js";
import _ from "lodash";
export default {
data() {
return {
queryParam: {},
industryList: [], // 产业下拉数据
industryCount: 10, // 产业默认10个
industrySize: 0, // 总条数数据改变时候必须低于这个值
industrySearch: "", // 远程搜索值
industryEntList: [],
entCount: 10,
entSize: 0,
industryEntSearch: "",
};
},
created() {
this.getIndustryList();
this.getIndustryEntList();
},
methods: {
// 产业下拉加载
handlePopupScroll: _.debounce(function (e) {
const { target } = e;
const { scrollTop, scrollHeight, offsetHeight } = target;
if (
this.industryCount = scrollHeight
) {
this.industryCount = Math.min(
this.industryCount + 10,
this.industrySize
);
this.getIndustryList(this.industrySearch);
}
}, 500),
// 远程搜索
handleSearch: _.debounce(function (e) {
this.industrySearch = e;
this.getIndustryList(this.industrySearch);
}, 500),
// 获取产业数据
async getIndustryList(e) {
let res = await orgSelectAPI({
page: 1,
rows: e ? 0 : this.industryCount,
name: e,
});
this.industry_id = "";
this.industryList = [];
this.industrySize = res.data.total;
this.industryList = res.data.rows;
},
handleSearchEnt: _.debounce(function (e) {
this.industryEntSearch = e;
this.getIndustryEntList("", e);
}, 500),
handlePopupScrollEnt: _.debounce(function (e) {
const { target } = e;
const { scrollTop, scrollHeight, offsetHeight } = target;
if (
this.entCount = scrollHeight
) {
this.entCount = Math.min(this.entCount + 10, this.entSize);
this.getIndustryEntList(this.industry_id, this.industryEntSearch);
}
}, 500),
// 获取企业数据
async getIndustryEntList(e, name) {
let res = await orgEntSelectAPI({
page: 1,
rows: this.entCount,
industry_id: e,
name,
});
this.industryEntList = []
this.industryEntList = res.data.rows;
this.entSize = res.data.total;
},
},
};
像这种数据我有很多,这种下拉出现一个我就得定义一个 count与 size
还有搜索与滚动的函数,写起来很麻烦,但是接口又不相同,我该如何进行封装一下,让这个东西写一次,后边的都能用
求大佬给个封装思路,接口与数据如何搞
经过大佬提示之后封装如下
{{ item[labelKey] }}
import _ from "lodash";
export default {
props: {
showPlaceHolder: '',
apiFunction: {
type: Function,
required: true,
},
queryParams: {
type: Object,
default: () => ({}),
},
valueKey: {
type: String,
default: 'id',
},
labelKey: {
type: String,
default: 'name',
},
initialCount: {
type: Number,
default: 10,
},
},
data() {
return {
selectedValue: undefined,
showList: [],
pageCount: this.initialCount, // 每页多少条
page: 1, // 当前第几页
allPage: 0, // 总共有多少页
pageTotal: 0, // 总共有多少条
itemSearch: "", // 搜索框搜索输入值
countNum: 0, // 计数器
};
},
watch: {
selectedValue(newV) {
this.$emit('getValue', newV)
this.itemSearch = undefined
this.getList();
},
queryParams: {
deep: true,
handler(newV, oldV) {
// 表单重置
if (oldV[this.valueKey] && !newV[this.valueKey]) {
this.selectedValue = null
}
}
}
},
created() {
if (this.queryParams && this.queryParams[this.valueKey]) {
// 有值就表示回显数据,回显只查当前条
this.selectedValue = this.queryParams[this.valueKey]
this.byIdGetList(this.queryParams)
} else {
this.getList();
}
},
/**
* 引用
* import popupScrollSelect from "@/views/common/components/popupScrollSelect.vue";
* formRight.facility_id = e">
* 现在需要修改成分页请求数据,第一次请求 第1页,10条 第二次请求 2页,10条,将 第二页与第一页的数据拼接起来
* 设计思路,每页十条得到总页数,向上取整,页码每次加一,直到加到最大值,每次得到数据之后,push到原始展示数组中。
*
*/
methods: {
async getList(searchValue = "", page) {
const response = await this.apiFunction({
page: page ? page : 1,
rows: searchValue ? 0 : this.pageCount,
name: searchValue,
});
if (searchValue) {
this.showList = response.data.rows;
} else {
// 无法判断上次数据是搜索之后的 showList 还是下拉之后的数据,需要去重才能赋值
const mergedArray = [...this.showList.concat(response.data.rows)];
this.showList = _.uniqWith(mergedArray, _.isEqual)
}
// 总页数,总条数只需要计算一次
if (this.countNum == 0) {
this.pageTotal = response.data.total;
this.allPage = Math.ceil(this.pageTotal / this.pageCount) // 最多有多少页
this.countNum++
}
},
handleSearch: _.debounce(function (value) {
this.itemSearch = value;
this.getList(this.itemSearch);
}, 500),
handlePopupScroll: _.debounce(function (e) {
const { target } = e;
const { scrollTop, scrollHeight, offsetHeight } = target;
if (
this.page = scrollHeight
) {
// this.pageCount = Math.min(this.pageCount + 10, this.pageTotal);
this.page = Math.min(this.page + 1, this.allPage);
this.getList(this.itemSearch, this.page);
}
}, 500),
async byIdGetList(queryParams) {
const response = await this.apiFunction(queryParams);
if (!this.showList.some(item => JSON.stringify(item) == JSON.stringify(response.data.rows[0]))) {
this.showList = [...this.showList, ...response.data.rows]
}
},
},
};
梦想缔造狮
盗版windows的标志是什么?
查到一些文章,说可以用命令行,查看windows是否属于正版。
"命令行 slmgr.vbs /dlv"
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241220/cddfd7073ad2bbfcf007155faf1542fa.png)
这是一个正版的截图。
"Capture.PNG" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241220/346716920b09dee26c0780b568092aa8.png)
这个就是盗版吧?
License Status:Notification
notification 不是授权的意思。
这样查看盗版状态是官方推荐的。
激活码或者激活工具,可以使得
许可证状态变成已授权吗?
如果是激活码激活的windows,也不是正版吧?此时如何查看是否属于正版呢?
梦想缔造狮
pyqt使用process和pipe打开nginx,我就是想实现xampp类似功能或者phpstudy,如何实现?
设计一个PyQt界面,用QProcess类来启动和管理Nginx进程:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton
from PyQt5.QtCore import QProcess
class MyApp(QWidget):
def __init__(self):
super().__init__()
self.initUI()
self.process = QProcess(self)
self.nginx_running = False
def initUI(self):
self.start_stop_btn = QPushButton('启动Nginx', self)
self.start_stop_btn.clicked.connect(self.toggle_nginx)
self.start_stop_btn.resize(self.start_stop_btn.sizeHint())
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('Nginx Controller')
self.show()
def toggle_nginx(self):
if self.nginx_running:
self.process.terminate()
self.nginx_running = False
self.start_stop_btn.setText('启动Nginx')
else:
self.process.start('path_to_nginx', ['-c', 'path_to_nginx_conf'])
self.nginx_running = True
self.start_stop_btn.setText('停止Nginx')
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = MyApp()
sys.exit(app.exec_())
path_to_nginx和path_to_nginx_conf换成你的Nginx的可执行文件路径和配置文件路径。
或者用楼上说的pid:
import sys
import os
import signal
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton
class MyApp(QWidget):
def __init__(self):
super().__init__()
self.initUI()
self.pid = None
def initUI(self):
self.start_stop_btn = QPushButton('启动Nginx', self)
self.start_stop_btn.clicked.connect(self.toggle_nginx)
self.start_stop_btn.resize(self.start_stop_btn.sizeHint())
self.setGeometry(300, 300, 300, 200)
self.setWindowTitle('Nginx Controller')
self.show()
def toggle_nginx(self):
if self.pid:
os.kill(self.pid, signal.SIGTERM) # 使用SIGTERM信号结束进程
self.pid = None
self.start_stop_btn.setText('启动Nginx')
else:
self.pid = os.spawnl(os.P_NOWAIT, 'path_to_nginx', 'nginx', '-c', 'path_to_nginx_conf')
self.start_stop_btn.setText('停止Nginx')
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = MyApp()
sys.exit(app.exec_())
梦想缔造狮
如何对vue3 里响应式数组 ref([]) 的数据进行重构赋值?
如题,将[{},{},{}] 转换为[[{},{},{}],[{},{},{}]]
let list = ref([
{
number: "001",
},
{
number: "002",
},
{
number: "003",
},
{
number: "004",
},
{
number: "005",
},
{
number: "006",
},
{
number: "007",
},
{
number: "008",
},
{
number: "009",
},
{
number: "010",
},
{
number: "011",
},
{
number: "012",
},
{
number: "013",
},
{
number: "014",
},
{
number: "015",
},
{
number: "016",
},
{
number: "017",
},
{
number: "018",
}
]);
转换为:
let list = ref([
[ {
number: "001",
},
{
number: "002",
},
{
number: "003",
},
{
number: "004",
},
{
number: "005",
},
{
number: "006",
}],
[{
number: "007",
},
{
number: "008",
},
{
number: "009",
},
{
number: "010",
},
{
number: "011",
},
{
number: "012",
}],
[{
number: "013",
},
{
number: "014",
},
{
number: "015",
},
{
number: "016",
},
{
number: "017",
},
{
number: "018",
}]
]);
梦想缔造狮
为什么我vue组件已经写好了,但就是在htm中使用不了。浏览器也没有报错,这是为什么???
import NavbarComponent from './components/NavbarComponent.vue';
export default {
name: 'App',
components: {
NavbarComponent,
},
};
Home
About
Contact
export default {
name: 'NavbarComponent',
};
/* 样式可以根据你的需求自定义 */
.top-nav {
background-color: #333;
color: #fff;
padding: 10px;
}
.top-nav ul {
list-style-type: none;
padding: 0;
}
.top-nav ul li {
display: inline;
margin-right: 20px;
}
.top-nav ul li a {
color: #fff;
text-decoration: none;
}
// main.js
import { createApp } from 'vue';
import App from './App.vue';
import NavbarComponent from './components/NavbarComponent.vue';
const app = createApp(App);
app.component('NavbarComponent', NavbarComponent);
app.mount('#app');
Title
测试
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241212/2abdbd23b064e173489786fc5ee3674a.png)
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241212/32f1951e096aac6ef4bfa3d4df1645d4.png)
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241212/acf00a6f3b6ff0e795af117fd71a2a61.png)
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241212/8f73385487a78e687555863a181cc945.png)
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241212/bd54760263e5354398fc1f47276c335c.png)
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241212/bc6f388efe48b3ae0d8bad939c065724.png)
梦想缔造狮
创建新的vue3项目,在script中写watch的时候发现所有vue相关的导入提示都消失了?
node_modules 安装了么?
梦想缔造狮
为什么虚拟线程无法在虚拟线程池中执行?
环境: java21
问题: methods5不会输出log.info的内容, methods6正常打印log.info的内容
private static void methods5() {
ThreadFactory tf = Thread.ofVirtual().factory();
try (ExecutorService executor = Executors.newVirtualThreadPerTaskExecutor()) {
Thread vt = tf.newThread(() -> log.info("vt task executed."));
for (int i = 0; i log.info("thread task executed."));
for (int i = 0; i < 5; i++) {
try {
executor.submit(thread).get();
} catch (InterruptedException | ExecutionException e) {
// 处理异常
}
}
}
}
梦想缔造狮
node+express使用multer上传的图片怎么让前端显示?
很明显上传成功,存储成功,但是你本地使用的时候,用的是相对路径,所以浏览器会去前端项目的路径里找图片,当然是找不到的。
解决方案就是使用后端的路径。或者通过某种方式进行映射也可以,看你准备怎么部署。
梦想缔造狮
这种轮播图应该怎么做?
网页轮播放吗,后台上传图片会自动轮播的
梦想缔造狮
linux 下,为什么明明存在的文件,执行却说 No such file or directory ?
╭─pon@T4GPU ~/code/work/pon/vt/svn_ppgraph/trunk/match_graph/bin ‹master›
╰─➤ file media_match
media_match: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.8, with debug_info, not stripped
╭─pon@T4GPU ~/code/work/pon/vt/svn_ppgraph/trunk/match_graph/bin ‹master›
╰─➤ file ./media_match
./media_match: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux.so.2, for GNU/Linux 2.6.8, with debug_info, not stripped
╭─pon@T4GPU ~/code/work/pon/vt/svn_ppgraph/trunk/match_graph/bin ‹master›
╰─➤ ./media_match
zsh: no such file or directory: ./media_match
╭─pon@T4GPU ~/code/work/pon/vt/svn_ppgraph/trunk/match_graph/bin ‹master›
╰─➤ ./media_match 127 ↵
╭─pon@T4GPU ~/code/work/pon/vt/svn_ppgraph/trunk/match_graph/bin ‹master›
╰─➤ ./"media_match" 130 ↵
zsh: no such file or directory: ./media_match
╭─pon@T4GPU ~/code/work/pon/vt/svn_ppgraph/trunk/match_graph/bin ‹master›
╰─➤ ldd media_match 127 ↵
not a dynamic executable
换成 bash 试了一下
pon@T4GPU:~/code/work/pon/vt/svn_ppgraph/trunk/match_graph/bin$ ll
total 1744
drwxrwxr-x 2 pon pon 4096 Nov 2 09:07 ./
drwxrwxr-x 5 pon pon 4096 Nov 2 09:07 ../
-rwxrwxr-x 1 pon pon 666068 Nov 2 09:07 dna_status*
-rwxrwxr-x 1 pon pon 983 Nov 2 09:07 match_graph*
-rwxrwxr-x 1 pon pon 1281 Nov 2 09:07 match_plot*
-rwxrwxr-x 1 pon pon 260796 Nov 2 09:07 media_match*
-rwxrwxr-x 1 pon pon 834082 Nov 2 09:07 media_matchd*
-rwxrwxr-x 1 pon pon 3959 Nov 2 09:07 plot_dna_match*
pon@T4GPU:~/code/work/pon/vt/svn_ppgraph/trunk/match_graph/bin$ ./media_match
bash: ./media_match: No such file or directory
pon@T4GPU:~/code/work/pon/vt/svn_ppgraph/trunk/match_graph/bin$ pwd
/home/pon/code/work/pon/vt/svn_ppgraph/trunk/match_graph/bin
不理解,我的机器是 ubuntu22.04 ,这个程序是一个十几年前的程序,难道和 glibc 库的版本什么的有关系?
梦想缔造狮
js将树状数组按照条件分成两个数组?
const arr = [
{
id: 1,
date: "2016-05-02",
name: "王小虎",
address: "上海市普陀区金沙江路 1518 弄"
},
{
id: 2,
date: "2016-05-04",
name: "王小虎",
address: "上海市普陀区金沙江路 1517 弄"
},
{
id: 3,
date: "2016-05-01",
name: "王小虎",
address: "上海市普陀区金沙江路 1519 弄",
children: [
{
id: 31,
date: "2016-05-01",
name: "王小虎",
address: "上海市普陀区金沙江路 1519 弄",
},
{
id: 32,
date: "2016-05-01",
name: "王小虎",
address: "上海市普陀区金沙江路 1519 弄"
},
{
id: 33,
date: "2016-05-01",
name: "王小虎",
address: "上海市普陀区金沙江路 1519 弄"
}
]
},
{
id: 4,
date: "2016-05-03",
name: "王小虎",
address: "上海市普陀区金沙江路 1516 弄"
}];
以上数组根据id分成两个数组
const condition = { 2: [], 3: [31, 33] }
// 分成
const arr1 = [
{
id: 1,
date: "2016-05-02",
name: "王小虎",
address: "上海市普陀区金沙江路 1518 弄"
},
{
id: 3,
date: "2016-05-01",
name: "王小虎",
address: "上海市普陀区金沙江路 1519 弄",
children: [
{
id: 32,
date: "2016-05-01",
name: "王小虎",
address: "上海市普陀区金沙江路 1519 弄"
},
]
},
{
id: 4,
date: "2016-05-03",
name: "王小虎",
address: "上海市普陀区金沙江路 1516 弄"
}];
const arr2 = [
{
id: 2,
date: "2016-05-04",
name: "王小虎",
address: "上海市普陀区金沙江路 1517 弄"
},
{
id: 3,
date: "2016-05-01",
name: "王小虎",
address: "上海市普陀区金沙江路 1519 弄",
children: [
{
id: 31,
date: "2016-05-01",
name: "王小虎",
address: "上海市普陀区金沙江路 1519 弄",
},
{
id: 33,
date: "2016-05-01",
name: "王小虎",
address: "上海市普陀区金沙江路 1519 弄"
}
]
}]
请问应该怎么解决?
梦想缔造狮
前端怎么预览pdf 试了几种方法都不太行 有没有别的办法?
前端怎么预览pdf iframe和一些库
要么完全打不开 白屏 要么只能看第一页
企微自建应用
梦想缔造狮
层层嵌套的对象,如何拿到最底层的值?
你直接看lodash的源码
"https://www.lodashjs.com/docs/lodash.set" (https://link.segmentfault.com/?enc=Ey8lk2zHic%2BLWtp4gGySqg%3D%3D.dMrcUt8CFQy6jbQ7%2F3E9lw%2BXJuIzvV7BmBngdIYfp5Qi4k9hsluDXO6OpJOUr7oj)
你项目里直接安装lodashjs也可以
或者直接去吧 set 方法的源代码拷贝到项目里就行了 没必要自己写
梦想缔造狮
Java 多个 sheet 怎么合并到一个 Excel 里,并且转 Html?
可以在后端(我这里以java为例),用poi(easyPoi)、easyExcel等读取出不同sheet的数据,组装成一个集合,直接在服务端渲染的话就用模板引擎自己写html,for循环填充进去就可以了,前端渲染就可以转成json格式在前端请求的时候返回给前端,由前端框架写样式进行处理。
梦想缔造狮
使用okHttp3发送sse请求,当事件为finish的时候,如何接收附加的数据?
SSE 的规范中明确指出,每个事件的结构中的 field 只能是以下几个取值:
* event
* data
* id
* retry
所有其他的字段名都会被忽略。
«"https://developer.mozilla.org/zh-CN/docs/Web/API/Server-> sent_..." (https://link.segmentfault.com/?enc=QB7pmkpN%2BIRpe8ly4Ih0Qw%3D%3D.m8g%2B7EsFQowdp0l99Hz1zJUDQPuwzioGa1LjO3SB66ZKuMOHKK5YaPkrbMV3a2LVUlkR4s9jDeVBKhrwI6Ewjgx99ckFHHzK6pdMi%2BNzgd5cO9PcNZuDs%2BPPJDp3rwD78u8HsTHJhAes05bV%2Fftsbg%3D%3D)»
显然 OkHttp 在解析事件时遵守了此规范。从源码中我们也可以看出这一点:
«"https://github.com/square/okhttp/blob/okhttp_3.14.x/okhttp-> sse/src/main/java/okhttp3/internal/sse/ServerSentEventReader.java#L55-L102" (https://link.segmentfault.com/?enc=gQoLM7mvNymzm%2FDk%2BCo%2BWg%3D%3D.j9UuypYX19or6Equq9X7o0gbfLamO3DXTUV70R%2F%2F0lq8qs3z3uFKQni5Ft9S1iNwXB4qXo7lxPHN%2F2RcvNdTgw%2FL%2FcbaOhs%2FoeOjwKPVkHBPUoB9H%2FK2QNkDQdKuNgEaI6FHgCrhom13gqyhgBQUbMFKnZrqxcrkY7%2BhThK9OrD8vMcEmvV0QwoPhv6zQYmq)»
所以你这里的问题是上游系统使用了非标准的 SSE 协议。如果上游服务不做修改的话,你只能从底层的 HttpClient 自己动手撸一个 Parser
来处理这种特殊场景了。
梦想缔造狮
what is python dangling circular ref?
我不怎么写python,但我觉得copilot chat讲得还可以:
«这段代码是Python的WSGI(Web Server Gateway
Interface)应用程序的一部分。start_response函数是WSGI应用程序的核心部分,它用于设置HTTP响应的状态和头部。 "avoid
dangling circular
ref"这句注释是指避免形成悬空的循环引用。在Python中,循环引用是指两个或更多的对象互相引用,形成一个闭环。这可能会导致内存泄漏,因为Python的垃圾收集器无法回收这些对象。
在这段代码中,exc_info是一个包含异常类型、异常值和追踪信息的元组。如果exc_info在函数结束时仍然引用这些对象,那么这些对象就不能被垃圾收集器回收,因为exc_info是一个全局变量,它的生命周期比这些对象长。为了避免这种情况,代码在finally块中将exc_info设置为None,断开了对这些对象的引用,使得它们可以被垃圾收集器回收。这就是"avoid
dangling circular ref"的含义»
梦想缔造狮
Python 怎么实现类似 PHP array_column 方法的效果?
Python 怎么实现类似 "PHP" "array_column" 方法的效果:
nested_list = [
{'id': 1, 'name': 'Alice', 'age': 25},
{'id': 2, 'name': 'Bob', 'age': 30},
{'id': 3, 'name': 'Charlie', 'age': 35},
]
把所有的 "id" 列的值提取出来 甚至把别的字段的值作为键名
Python 怎么实现类似 "PHP" "array_column" 方法的效果:
梦想缔造狮
如何修改代码以通过验证?
https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241028/649edcdd9fc9aef6c831899ee3861ab7.png
该怎么修改代码
验证通过
梦想缔造狮
Vue ref 属性在不同环境下的行为差异?
区域
位置
操作
const ref1 = ref();
const ref2 = ref();
const ref3 = ref();
const refApi = {
ref: 'ref3'
};
console.log(ref1, ref2, ref3);
在开发环境下 "ref1, ref2, ref3" 皆符合预期指向 "span" 。
但是打包后的生产环境就只有 "ref1" 正常指向 "span" , "ref2, ref3" 皆为 "undefined"。
为什么表现不一致?
梦想缔造狮
为什么同样的 html ,线上打不开百度的 url?
为什么同样的 html ,线上打不开百度的 url
但是保存为本地 html,然后在浏览器打开本地 html 却可以显示百度 url 图片
276b206633e200641d3f9ddabc657888
image
✅
鉴于已开启内容拦截功能,而这个请求来自跟踪器,已拦截“"https://pics1.baidu.com/feed/7c1ed21b0ef41bd54d224b9c53ecdcc1..." (https://link.segmentfault.com/?enc=gWs7vB71AvGonE63n%2Bc4Dg%3D%3D.1X7ROQpv0dTIV5hV3hZx1tqiQhkURKUQes23slcbIw56Ma0kDRBqvDxp4MvwTW8Dal6F3lrC4%2BPbYG9b4gzLf65udrqSHuIdOJ2T9JOfY%2BTkT%2FyIZGrs9Ez4Wvwnbxybvtf5U5VUyufdD%2FfHH%2Fg%2BrjW%2BXkZfgbuBsd9U2nZx81E%3D)”对
Cookie 或存储空间的访问请求。
"图片.png" (https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241026/a356c2b840d29ee47c38dddb24e5541c.png)
"图片.png" (https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241026/4bfae7648a96d54248f47c92f8401454.png)
是百度在作恶吗?怎么解决呢?
***
"图片.png" (https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241026/8b873ef28605828ebbd7f5f9db3161d7.png)
我把这些都关了,还是一样不行
是 firefox 在拦截百度?还是百度在拦截我?
我这里只是访问一个图片,为什么会出现 cookie 问题?访问图片又不是访问带 js 的 html,并不会有危险操作呀?
梦想缔造狮
vue3导出试卷到word的做法?
想实现一个vue导出题库的内容到word里面的功能,但是导出的内容要不格式不对,要不就是被截断,有什么好的方法来做这个功能嘛?
梦想缔造狮
el-table中的展开行图标如何改到最后一列显示?
1.把自带的通过css隐藏
2.通过单元格template加到后面,通过展开等方法去控制图标展开收起
梦想缔造狮
Gradle打包时如何正确包含依赖包?
应该是没装插件
梦想缔造狮
该怎么从netfilter勾出来的报文里读取数据?
这个包打印的没啥问题,应该是你打错包了。
TCP协议是有三次握手的,有syn、ack、fin、rst这些控制报文,所以你判断源端口是不是12345,并不能说明这个包一定就是你想要的带着ABC数据的报文。通过打印结果来看,这就是一个ACK的空包。
1. 第一个字节是字符E,16进制是0x45,说明skb->data指向的是一个IPv4头,IP头部长度为20字节。这个是符合预期,没什么问题。
2. 然后看IP头的第三、四个字节,这个字段是整个IP包的长度,字符';'的16进制是0x3B,换算称10进制就是59,也就是说明你这个包的整长度就是59,ip头已经占了20了,留给tcp的还有39个字节了。
3. 5、6、7、8这四个字节是IP报文的ID、Flag、Fragment字段,跳过。
4. 第九个字节是TTL,字符‘@’的16进制是0X40,是LINUX内核默认的64,说明你这个包还没经过Forwad阶段,所以猜测你这个hook应该是挂的PRE_ROUTING。
5. 第10个字节是协议号,6代表TCP,也符合预期。
6. 跳过2个字节的校验和,剩下8个字节是源和目的IP地址,127.0.0.1到127.0.0.1,说明你这个包是从lo口发给lo口的测试包。
7. 接下来是tcp头,21、22字节是源端口,字符0和字符9换算成10进制就是12345,符合预期。
8. 23、24字节是目的端口,换算下来也符合预期。
9. 接下来跳过8个字节的Ack和Seq,第33、34个字节是0X80和0X18,8表示tcp数据的偏移,4字节为单位,说明这个包的tcp头长度是32。0X18是TCP的Flag,说明这个包打着ack和psh的标记。
10. 从52字节开始,全是0,说明这是个空包。
综上,打印没啥问题,应该是打印错包了。另外你计算end的那行我猜你的本意应该是找到报文结束吧?代码写错了,head和tail这俩是指针,指针相加不是代表报文结束,所以你这个printk打印了后面的一堆的0,
如果不考虑非线性数据:
for(c = skb->data, c tail; c++) {
printk(...);
}
梦想缔造狮
如何解决移动端页面出现滑动条和空白条问题?
为什么移动端设置了宽度为430px,且所有的内容的宽度也都在430px以内,还是会出现手机端左右滑动条?且还会出现右边有一长条竖着的空白条无法删除。"如图右侧这个竖条" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241011/03ba19f1ff0e530c26d6cf296772bcd2.png)
网址:www.ugug.com
希望能够将这个竖条以及横向左右滑动条删除
梦想缔造狮
证书无效问题?
nginx 证书问题
已经使用自签名证书生成了一个证书, 并配置到 nginx 中了, 域名 CN 也配置正确了
然后在客户端 hosts 文件中也配置了对应映射
导入了对应的证书文件
然后访问域名, 说证书无效, 每次都到这里卡住, 不知道这证书哪里无效了, 我都导入到了受信任的根证书里面了, 并且在 chrome 的证书管理中也能看到
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241011/537cd1efe1ed8851f8a599113321e112.png)
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241011/e71286ec39a923510023f7b5af9fb374.png)
梦想缔造狮
vscode 文件--首选项--设置 报错 cannot read properties of undefined (reading 'el')?
"ctrl+p" 搜索文件 settings.json 改成默认配置
{
"vsicons.dontShowNewVersionMessage": true,
"redhat.telemetry.enabled": true,
"workbench.settings.useSplitJSON": true,
"cSpell.languageSettings": []
}
就好了 晕死
梦想缔造狮
一个关于 for 和 onclick() 事件的问题?
你换个思路,在你的代码中有几个i呢,是不是只有一个,所有当for循环结束i的值也只能是一个,因为i一个变量不可能同时又是1又是2又是3
梦想缔造狮
如何让伪元素的宽度适应文字内容的同时受到最大宽度的限制,且在小于最大宽度时不自动换行,大于最大宽度时才换行?
如何让伪元素的宽度适应文字内容的同时受到最大宽度的限制,且在小于最大宽度时不自动换行,大于最大宽度时才换行?
这是用React封装Tooltip组件时遇到的一个问题,我的思路是给tooltip下的第一个子元素添加::before伪元素,当hover时tooltip出现。tooltip组件的定义如下:
import "./tooltip.css"
function Tooltip({ title, children }) {
if (Array.isArray(children)) {
throw new Error("Tooltip can only have one direct subcomponent");
}
window.c = children;
return (
{children}
)
}
export default Tooltip;
tooltip.css代码如下:
.tooltip-container {
--tooltipContent: "2024年2月2日, 128次浏览";
--tooltipMargin: 15px;
--tooltipVisibility: hidden;
--tooltipScale: 0.1;
--tooltipOpacity: 0.2;
}
.tooltip-container>:first-child {
border: 1px dashed red;
position: relative;
box-sizing: border-box;
}
.tooltip-container>:first-child:hover {
cursor: pointer;
--tooltipVisibility: visible;
--tooltipOpacity: 1;
}
.tooltip-container>:first-child::before {
color: white;
background-color: #000;
display: inline-block;
content: var(--tooltipContent);
position: absolute;
padding: 8px;
border-radius: 5px;
max-width: 300px;
width: fit-content;
white-space: nowrap;
left: 50%;
bottom: calc(100% + var(--tooltipMargin));
transform: translateX(-50%);
visibility: var(--tooltipVisibility);
opacity: var(--tooltipOpacity);
transition: all 0.15s;
z-index: 9999;
}
.tooltip-container>:first-child::after{
content: "";
border: 5px solid transparent;
border-top-color: #000;
position: absolute;
left: 50%;
transform: translateX(-50%);
top: calc(-1 * var(--tooltipMargin));
visibility: var(--tooltipVisibility);
opacity: var(--tooltipOpacity);
transition: all 0.15s;
z-index: 9999;
}
组件使用方式如下:
function App() {
return (
)
}
我想要的效果是,类似与ant design的tooltip, 当文字较少时正常显示,即使有分词也不换行,当文字较多时在最大宽度处换行。
目前我的问题是,若使用"white-space: nowrap;",则文字较少时正常,但文字超过最大宽大后不会换行而是被隐藏, 如下图所示:
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241010/2c830ac785fde857bb1621b48c62e2b7.png)
若使用"word-wrap: break-word;"或"overflow-wrap: break-word;",
则会在文字较少并遇到分词处自动换行,如下图所示:
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241010/feb43cf9c1d0d9074fd917eebb995665.png)
想求助各位大佬该怎么实现?
梦想缔造狮
vue element-plus 下拉菜单嵌套选择器 选择器自动收起 无法选择 如何解决?
el-dropdown与el-select嵌套使用,下拉菜单内的选择器打开后,鼠标移向选项会直接收起选择器。
以下为问题代码
import { ArrowDown } from '@element-plus/icons-vue'
import { ref } from 'vue'
-->
{{ item.name }}
export default {
data() {
return {
name : ref('')
}
},
props: {
menuItems : []
},
methods: {
onChangeVisible(visible) {
this.$emit('changeMenuVisible',visible);
// console.log(visible);
}
}
}
.example-showcase .el-dropdown-link {
cursor: pointer;
color: var(--el-color-primary);
display: flex;
align-items: center;
}
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241009/259d0bf0e916a30e0141500daa62a510.png)
如图所示,若鼠标想移至选项进行选择,选择器会直接收起。
尝试将下拉菜单改成静态菜单,发现选择器能正常选择不会自动收起。
但需求是使用下拉菜单。。。
更改代码部分如下
{{ item.name }}
静态菜单截图
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241009/81546eb059832b5e4c5bbbfd15db842d.png)
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241009/c0dec8971793254d2ffe766b688efeeb.png)
梦想缔造狮
git 对比不同分支?
git 不同分支对比代码,能使用BCompare 对比吗?
git 不同分支对比代码,能使用BCompare
对比吗?记得有一次看过使用工具对比的办法,直接输入分支,就能生成一套目录,然后对比,效率很高,现在都是把不同分支下载下来对比,好麻烦
想实现输入命令就能直接对比不同分支的效果有没有办法呢?
梦想缔造狮
MySQL发现诡异情况,是我写SQL的姿势不对吗!关于日期匹配和随机月份?
你现在这这样的 SQL ,where 条件中,随机日期范围的那一部分,在每次 where 的时候都会执行一次 RAND
,所以就会有问题,要解决这个问题,那就要使得这个 RAND 只执行一次,如果是在 MySQL 8 中,可以使用 With 语句。
with mo1 as (select DATE_FORMAT(DATE_ADD('2023-11-01', INTERVAL FLOOR(RAND() * DATEDIFF(CURDATE(), '2023-11-01')) DAY),
'%Y-%m') as month)
SELECT *
FROM teacher
join mo1 on mo1.month = DATE_FORMAT(create_time, '%Y-%m')
这样,就可以获得预期的结果了。但是,这样并不好。
* 1、对于这个查询条件,你完全可以在代码中进行生成,从外部传进来,而不必要使用 SQL 语句,这样在低版本中也可以使用,代码也更好读。
* 2、你在对查询列使用了 函数 "DATE_FORMAT(create_time, '%Y-%m')" 这样将会导致 MySQL 在查询数据的时候,无法使用到索引,如果数据量大的话,查询就会很慢。
虽然在 MySQL 8 中,你可以使用 函数索引,来创建索引从而提高效率。
alter table teacher add index idx_month((DATE_FORMAT(create_time, '%Y-%m')));
但是这样也不是很好的办法,更建议的是,从外部传入的参数,把日期补全,把查询改成 between 的方式,再直接为 create_time 创建索引。
SELECT *
FROM teacher
where create_time between '2024-01-01 00:00:00' and '2024-01-31 23:59:59';
# 或者
SELECT *
FROM teacher
where create_time >= '2024-01-01 00:00:00'
and create_time < '2024-02-01 00:00:00';
梦想缔造狮
音频资源播放问题:a标签与audio标签的差异?
大概是因为防盗链。
防盗链有多种,一种是来源检测,通过 refer 来允许指定域名来的请求。
另一种是有效期,生成的是临时地址,在某一个时间范围内是一直可用的。
你这个不太好判断,你可以开启 disable cache 再试试。这样通过来源和时间就能判断出开启的是什么防护方案了。
梦想缔造狮
如何解决Vue项目中文本翻译插件i18n-ally不生效问题?
vscode 调取命令行,输入 i18n, i18n-ally 有一个命令,自动查找文案文件,你调用试下
梦想缔造狮
vue3 div 绑定 ref 问题?
"截屏2024-03-28 22.09.01.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241005/fb72ed6091beb7990282de9902f8fcf7.png)
"vue"解析"ref="xxx""属性时检查你的"script"中有没有同名的"xxx"的"ref",有就绑定,换句话说是检查你的"setupState"上有没有同名的"xxx"属性;
所谓"setupState"就是你"setup() { return state }"这里的"return"的值,
""是简写的语法糖,如果换成这样写就有值了:
export default {
setup() {
const divRefs = {
"divRefs.divRef1": null,
"divRefs.divRef2": null,
"divRefs.divRef3": null,
};
// template中的ref="xxx" 中的 xxx 就是这里return 的对象中的xxx
return divRefs;
}
}
***
如果你有多个"ref"想集中在一个对象上访问,不想定义太多"ref"变量,你可以通过实例去访问:"getCurrentInstance().refs.xxx"
"截屏2024-03-28 22.18.23.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241005/5f5510f3b83780d719dc9cf723f21ee7.png)
***
或者改成函数形式:
"截屏2024-03-28 22.23.18.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241005/d4bd80faae8c27e80c888fea8ae9cc91.png)
梦想缔造狮
vue3 devtools 不会亮了怎么回事?
vue3 devtools 不会亮了怎么回事? 重启过电脑 浏览器了
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241005/5c1c338fa1322e5acb62c57b2c8a69b1.png)
插件已经装上了
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241005/4d1e1702f658620b50cd157c3ba097e5.png)
跟着官方文档装的
* package.json{
"name": "vue-project",
"version": "0.0.0",
"private": true,
"type": "module",
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview",
"lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs --fix --ignore-path .gitignore"
},
"dependencies": {
"pinia": "^2.1.7",
"vue": "^3.4.21",
"vue-router": "^4.3.0"
},
"devDependencies": {
"@vitejs/plugin-vue": "^5.0.4",
"@vitejs/plugin-vue-jsx": "^3.1.0",
"eslint": "^8.49.0",
"eslint-plugin-vue": "^9.17.0",
"sass": "^1.72.0",
"sass-loader": "^14.1.1",
"vite": "^5.1.6",
"vite-plugin-vue-devtools": "^7.0.18"
}
}
官方的方案都试过了
梦想缔造狮
C# 泛型函数CS1061报错是为啥 ?
C++ 模板和 C# 泛型实现参数化类型的思路完全不一样,没法直接比较。
具体到本题来说的话,你需要声明一个接口出来,来作为泛型约束。
interface MyInterface
{
Name { get; set; }
}
Test(ref T structT) where T : MyInterface
{
structT.Name = "some";
}
梦想缔造狮
React useState异步代码没有更新?
背景:
React代码如下
import { useState } from 'react';
export default function App() {
const [count, setCount] = useState(0);
const handleClick = () => {
setCount(count + 1);
setTimeout(() => {
console.log(count, 'end'); // 还是 0!
}, 5000);
}
return (
+1
{count}
);
}
setCount的更新是异步更新的,setTimeout也是异步的,为什么点击,console.log打印的是0,而不是1。
尝试:
尝试用普通js函数进行比较,js代码如下
function outerFunction() {
let count = 0;
function innerFunction() {
console.log(count);
}
count = 1; // 将count更新为1
setTimeout(innerFunction, 5000);
count = 2;
}
outerFunction();
console.log打印的是最新的值2。
疑问: 两段代码的打印结果不同,是什么原因呢?
梦想缔造狮
微信公众号能获取用户的 unionid 吗?
你可以看看这篇文章
"https://developers.weixin.qq.com/doc/offiaccount/User_Managem..." (https://link.segmentfault.com/?enc=JR1Z8dzUKe6TUjFwglTTKQ%3D%3D.pILL5Q4QhrEujE2DFd6hf7Sat4117jkRj%2FDFy2tNxnYKJazCKQ%2ByWsqnYXzOAAygLTrjMvpJgi%2F%2BOsBGxMXKPUStS15IYwitJeowcas9xIEAiL626DqRv4yMkiO1ty7XuH%2BWgpjZy%2BvCCGKSK6%2BuuHk0Coy8%2FPm8nmrXNIdkU7E%3D)
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241003/3569108ec2f77ec3ab4e15d93fb8a964.png)
梦想缔造狮
Vite初始化项目在宽带变小时的页面缩放问题?
请问vite初始化项目在浏览器宽带变小的情况整个页面会缩放是怎么回事?
我又试了下,好像基本的html网页就会这样,请问这是怎么回事?
这是正常的
"1712546375801.jpg" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241003/ef2a650ee6523fc9730a243cd6b2c082.png)
这是缩小到一定程度后的样式,整个页面被缩小了,不仅仅是换行之类,是整个页面被缩小
"1712546402730(1).jpg" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241003/7f2b5b282da7806b63fe5d61177681ca.png)
梦想缔造狮
如何判断H5是否通过通用链接成功唤起了app?
如何判断H5是否通过通用链接成功唤起了app?
有什么检测方法吗?比如之前"scheme"的跳转,可以通过监听页面的"hidden"事件?
梦想缔造狮
微信小程序怎么渲染 markdown?
既然你已经已经有用 "nextjs" 做了一个项目了。那么小程序端可以直接用
"webview" (https://link.segmentfault.com/?enc=myv9Q2kPjri3IH5VUEhlOg%3D%3D.YTvu%2BaSYHwmmpAVnj%2FC1stzCSzWGAu4TtDPvivCK%2BZEXV%2B0uCteq7Ay1F78002OUT8UcTk%2F2x9ZV4w6X6wXA%2BX%2BZkcC8obygm6AHspKDcps%3D)
展示你的 "nextjs" 项目哇。
如果你不想要用 "webview" 那么就需要额外处理 "markdown" 内容转换为 "html" 内容,然后用 "rich-text" (https://link.segmentfault.com/?enc=rlS%2Bt8bT3g7uRN8hirq%2BxQ%3D%3D.zCRZjhO6QR2o%2BBwXCkLpsmaA9mNHlLMy4KHPlAktG5iRvk18wS3f3dVJ8jVT0Q5H4xU%2FbrngVnAecphQpO61U4W9aprDlCT2nHlbHEPIlG0%3D)
来渲染你的文章内容,但是这样就需要你自己在写一套富文本样式了。
梦想缔造狮
像这种图是如何画出来的?非常好奇,既美观又随性?
"https://excalidraw.com/" (https://link.segmentfault.com/?enc=LVATBx7mM1%2BhXQlegevLOA%3D%3D.E02Rmg2RAoP5IFrm4sUqL%2B63o1HNPCUbmL3H%2BCccWo4%3D)
梦想缔造狮
将springboot项目部署到生产上的问题?
有一个springboot项目想部署到阿里云上,需要简化部署流程,需要咨询几个问题:
1.生产上使用docker容器部署还是直接手动安装jdk,打jar包上传服务器?
2.使用宝塔部署安全可靠吗,是否可以简化部署,没使用过宝塔?
3.项目用到了MySQL和Redis,单独购买云数据库还是在运行springboot的服务器里自己安装MySQL和Redis服务?
4.项目是前后端分离的,是要单独再购买一台阿里云服务器然后安装nginx,来跑前端代码,还是直接在同一台阿里云服务器里,既运行springboot,又运行前端代码呢?
梦想缔造狮
没效果?
https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20240929/5cd246e344828bf33c20e952e77ccef7.pnghttps://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20240929/a1cf9887c77c4b41b3386f890f08ebdc.png
没效果。vue页面是空白的。
梦想缔造狮
请问html和css如何实现图片按曲线拉伸并排列布局呢?
用canvas API中ImageData相关方法,可以对图片上像素点的颜色进行控制,简单写了个demo
"https://jsrun.net/uM5Kp/edit" (https://link.segmentfault.com/?enc=t%2FsKrXfZN8hkgyv2GyvNnw%3D%3D.UWn%2FSxA6x883ROBXGuzrL4oeWFDFpznn38Sm7LMA9Oo%3D)