希望奇迹发生_1
面试时怎么回答业务亮点和难点?
作为一个应用商店类型的后端开发,面试时经常被问你们的业务难点在哪,or
技术难点在哪,想破头皮都想不出来,一是怕说出来的东西被面试官认为就这有什么好说的,二是确实工作中能解决的都不算难点。说一些性能优化或者代码重构,解决了什么问题,这就是我想出来的东西。但是最后的面评经常被写业务复杂度不高,业务不匹配。
大家都是怎么回答这个问题的,或者阿里字节美团等大厂同学你们是怎么准备这个问题,or想从候选人那听到什么
希望奇迹发生_1
三方系统交互同步和异步设计问题?
同时对接A系统和B系统,一个请求从A系统发到我,我再去请求B系统,但是A系统要求同步返回结果,而B系统是异步返回结果的,这种情况怎么设计比较好?主要是如何满足A系统的同步返回的要求
希望奇迹发生_1
请问封装axios时,你们会把loading功能封进去吗?
那可以这样:
import { makeRequest } from './axios工具.js';
function showLoading() {
// 显示loading组件的逻辑
}
function hideLoading() {
// 隐藏loading组件的逻辑
}
// 在需要使用loading功能的地方
showLoading();
makeRequest({
method: 'get',
url: '/api/data',
})
.then((response) => {
// 请求成功,处理响应数据
})
.catch((error) => {
// 请求失败,处理错误
})
.finally(() => {
hideLoading();
});
在需要的地方加loading,一个页面有许多ajax,如果封装axios里面,不需要的也会有,这样也满足op要求
希望奇迹发生_1
网站显示溢出问题怎么解决?
"图片.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241231/d26830b0bae0170b9053cb8e4508584a.png)
希望奇迹发生_1
想入坑golang web,向大佬们请教些问题?
本人想入坑golang来做web开发,向大佬们请教些问题(感谢指教),如下:
1.请推荐一下golang web框架(原因)
2.请推荐一些golang web框架写的应用的开源的代码,例如写的论坛呀,即时通信呀,流量统计呀等等(学习参考)
3.golang做web的优势说明
求指教!!!!!非常感谢!!!!!
希望奇迹发生_1
Vue3整合Pinia,懂行的大佬进来帮忙看下,为什么 重新在将store的属性设置为 reactive({})不生效?
如果想要直接替换整个对象 的话,应该使用 "ref" 而不是 "reactive",具体可查看官方文档"reactive()
的局限性" (https://link.segmentfault.com/?enc=CIouKTNud7B31S7OvgVUhw%3D%3D.Wy%2BtpuzZvCOmMIMHsp0K39F0mzOg43UkBgDgyEzwGez8Vqhdzh1DwOzsHp8S6kSu5NOnv2NkGKUEbsil7SnNo%2F2tCqVl3kqK7pq1uSv3soCTleJ5U7EMAAzGPNde63o7)中的描述
«不能替换整个对象 :由于 Vue
的响应式跟踪是通过属性访问实现的,因此我们必须始终保持对响应式对象的相同引用。这意味着我们不能轻易地“替换”响应式对象,因为这样的话与第一个引用的响应性连接将丢失:let state = reactive({ count: 0 })
// 上面的 ({ count: 0 }) 引用将不再被追踪
// (响应性连接已丢失!)
state = reactive({ count: 1 })
»
正确写法如下:
const address = ref({});
function resetAddress() {
address.value = {};
}
希望奇迹发生_1
微信小程序样式中“*”编译不过?
这是什么原因?
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241227/79015120aa957cb24b9075922b4042c8.png)
希望奇迹发生_1
编辑弹窗数据回显时,关闭弹窗后再次打开弹窗时数据就不回显了?
添加和编辑共用的一个弹窗,编辑时做数据回显,第一次打开弹窗数据可以正常的回显出来,关闭后再次打开的时候弹窗的表单就显示为空了,就没有数据回显了
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241226/6eec07ec54c2e86b3c885fa6e1a41ba6.png)
上面是父组件里面的打开编辑弹窗和赋值当前行数据
下面是弹窗组件里面的点击保存的方法
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241226/964eb3153797959f7a067c1158e29ccc.png)
save() {
this.loading = true
const saveOrUpdate = this.isUpdate ? updataLibrary : addLibrary
saveOrUpdate(this.dataForm)
.then((msg) => {
this.loading = false
this.$message.success(msg)
this.updateVisible(false)
this.$emit('done')
})
.catch((e) => {
this.loading = false
this.$message.error(e.message)
})
},
然后使用了watch监听弹窗的状态
watch: {
visible(visible) {
if (visible) {
if (this.Rowdata) {
setTimeout(() => {
this.$util.assignObject(this.dataForm, {
...this.Rowdata,
})
}, 100)
this.isUpdate = true
} else {
this.isUpdate = false
}
} else {
// this.$refs.form.clearValidate()
this.dataForm = { ...this.defaultForm }
}
}
}
打印当前行的数据也能打印出来没有问题。编辑回显的时候就出问题了,第二次打开弹窗的时候就没有回显数据了,是因为watch里面this.dataForm = {
...this.defaultForm }这个原因吗?
请问这个问题具体应该怎么解决呢?
希望奇迹发生_1
如何解决使用 bs4 模块中 find_all 提取列表元素中包含回车符的现象?
运行没问题,显示看起来是两个元素其实是一个元素,只是它把换行符显示成换行,你可以把get_text()的结果replace('\n','')就行
希望奇迹发生_1
docker compose 从django链接chromadb 报错 HTTPConnectionPool Max retries exceeded with url如何修复?
Docker中有两个container,一个django,一个chroma向量数据库,从Django中连接chroma报错,下面是docker-compose.yml文件:
version: '3.9'
services:
django:
container_name: django
build:
context: ./app
command: python manage.py runserver 0.0.0.0:8000
volumes:
- ./app:/Users/apple/Docker/app/
ports:
- '8000:8000'
expose:
- 8000
chroma:
container_name: chroma
image: ghcr.io/chroma-core/chroma:latest
volumes:
- index_data:/Users/apple/Docker/app/data
ports:
- '8989:8989'
expose:
- 8989
volumes:
index_data:
name: my-db-data
下面是Dockerfile文件
FROM python:3.9
WORKDIR /Users/apple/Docker/app
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
RUN pip install --upgrade pip
COPY ./requirements.txt /Users/apple/Docker/app/requirements.txt
RUN pip3 install -r requirements.txt
COPY ./entrypoint.sh /Users/apple/Docker/app/entrypoint.sh
COPY . /Users/apple/Docker/app/
EXPOSE 8000
ENTRYPOINT ["/Users/apple/Docker/app/entrypoint.sh"]
从Django中连接chroma向量数据看,代码如下:
from rest_framework.decorators import api_view
from rest_framework.response import Response
import chromadb
from chromadb.config import Settings
chroma_client = chromadb.HttpClient(
host='localhost',
port=8989,
settings=Settings(allow_reset=True, anonymized_telemetry=False))
@api_view(['GET'])
def index(request):
sample_collection = chroma_client.get_or_create_collection(name="sample_collection")
print(sample_collection)
return Response({
'info': 'Hello world.'
})
报错如下:
urllib3.exceptions.MaxRetryError: HTTPConnectionPool(host='127.0.0.1', port=8989): Max retries exceeded with url: /api/v1/collections (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused'))
Docker的容器运行情况:
CONTAINER ID PORTS. NAMES
2710918946b0 0.0.0.0:8000->8000/tcp django
18ee5e4e3a7d 8000/tcp, 0.0.0.0:8989->8989/tcp chroma
请各位大佬帮忙看看,谢谢。
希望奇迹发生_1
前端大佬 这种图表该如何实现(echarts) ?
度了 谷了一天 这种图表到底该怎么搞啊??求助前端大佬
"热力图 色块图" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241214/3be5bdd78797b7e66fd0eb53c6c90243.png)
希望奇迹发生_1
echarts这种样式如何实现?
针对 0 的数据可以加一个 "shadow",利用 "shadow" 可以偏移的配置来实现这种样式
series: [
{
name: 'test',
type: 'bar',
barMinHeight: 3,
data: [
10,
20,
30,
40,
50,
{
value: 0,
itemStyle: {
color: 'red',
shadowColor: 'red',
shadowOffsetX: -3
}
}
]
}
]
效果如下
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241208/a81eee13a2374842d819262893a0b45e.png)
希望奇迹发生_1
wx.getFileSystemManager().readFile读取文件没有权限,需要怎么处理?
参见
"https://developers.weixin.qq.com/miniprogram/dev/framework/ab..." (https://link.segmentfault.com/?enc=wcrZN5ERDC5D5IDJt5Fjjw%3D%3D.qrBeSDkApfkdEyfOD7DFIymNZhK4yrrKHLNjlc%2BcEzb4epXUtXB4URf49rNzLDwdlFCWqpo9ZEBJ9pYn1m1L4ys4yuTc8Dfe1dVJ%2BIHMhYiFx9BZ2C2aZZFFZ9ltFcXh)
«代码包文件的访问方式是从项目根目录开始写文件路径,不支持相对路径的写法。如:/a/b/c、a/b/c 都是合法的,./a/b/c ../a/b/c
则不合法»
小程序中不允许相对路径的写法
***
另外你对这个 API 的理解有误差,微信小程序中的 文件系统 其实类似浏览器中"Origin Private File
System" (https://link.segmentfault.com/?enc=%2Bg0mZhvtv4YiIfTskFyuSg%3D%3D.K83YTITVJ9yf2uDgELLRNBD0OHGSF9RdVuMZD4%2BhcukG0EExkInFvekC6gPMZG50PsDbrj9xnMRh8C7no0brjt7nm4oOJTCGXFxDcJ0mtVFDBL5ygAvJYutVn0shzrQ%2B)的概念,它是供小程序使用的一块独立的文件区域,与代码文件和用户私有文件是独立的关系。你这里大概是想引用代码中的静态资源,是不能用这个API的
«本地文件指的是小程序被用户添加到手机后,会有一块独立的文件存储区域,以用户维度隔离。即同一台手机,每个微信用户不能访问到其他登录用户的文件,同一个用户不同
appId 之间的文件也不能互相访问。»
希望奇迹发生_1
el-table,如何修改合并行hover样式和逻辑?
可以试一下我写的这个:"https://codesandbox.io/s/el-table-he-bing-xing-de-hover-wen-t..." (https://link.segmentfault.com/?enc=4kkWqZ8i6aLVkYT8pOhDTQ%3D%3D.66pP9fPtCaekZEd9JVh1LQCMawMiAuK%2Bkv%2Fc48X8uThTWVwW%2BSpeLDEP2UQEVGQ%2BvTPqmiO%2B8us6rW4TiCUwf%2BV%2BSnvKKDDh97V5KwGQCQosZEzteJ8sinAKWg7KYzN%2F)
效果图:https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241128/2a44ad766d73bec3baa869e4b2f3cc6b.png
希望奇迹发生_1
MybatisPlus查询百万数据的内存占用问题?
因为流式查询也不是一条一条的流,而是一次获取一批数据,处理完了再获取下一批
原理和分页类似但是效率比分页高,因为分页需要‘跳过’前面的记录,而流不需要
如果需要优化的话,找到 fetch size 之类的东西配小一点就行
希望奇迹发生_1
Vue SFC Playground 怎么使用?
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241120/d6906708c0d5f6b87abcaec6ecdd377a.png)
"代码地址" (https://link.segmentfault.com/?enc=P7ZZXl5X5mCQFcLKC50DUQ%3D%3D.RoB4tRaLGO8ZWU0kz1XQCySPRBWtrZ0R7nOjm8eR7qubO9uEQg1XJ%2FEcvLsVvK8eTGswqK2gwbqfWmGqPeTdsheOAOCV1rjPx%2FaSSE2y%2FZUBKGDusLiTRFAdfeoSvxTMEABtQeYxJOXgujj%2B3fJV9aOk9onSAK2kZkXPDziO9Ca0%2FGKDpv7mPcGiZfkokttGbvbod%2Bx9k9SeRHGORU0dpkWlsRxCwjXzILFeD3sFpq1puL%2BPLBr80r%2BMx6SgqPEVWKw%2FNF5DiRlys15yzVEWflmM4fKNGZLcR3FsIu7DSgFLweQL50ZWKIR0JHkXh5zM6B0lLeloY8iv8bDEDomVLFSgTPYHlv38J3LAQG2rAWvXWUkMBxtS8n84%2B9qNHb5vFsnhKuxCsMvkWG4RmvAigobfmpJLaiWLeyCDsHzu2RYyTtTLHvtzjrsiUJom0Kf0kRQR0X1gUJBSbZmNfUOy7LWEOoxnw9pskemGVCY9VJexbIB3MSqd8XlFhMieEAqca5Hr0i6JDnJ5bp%2FddJv9qnkj3KNdEPz%2BERrfMVe5AqzfJno7Gsp35EKLwyG5PTxBSRQ1qYUu4KE87r9JVDSZjgT0HaGdpuJwcoaXXAYF9m1h6Pba0lL4buPhafZ5QWOJJJ0VJ0cLtNLapP%2F2gUG5pZUa6PebuN0%2B5cz%2B49cJSX8QMHqaDHxl4%2B9UwrbZtsHMSckIQrxIOidqE8RVBIeCUDuqQXQn5Dk%2B16tHnJXssSC8pzdRnA90fQggulXFo0RquJPKyCyJxUHXjsA08qOsWZPCxplLyGztjFdtNp1alxXpffllL25SOXzr9g8qIhhCh37HksYSSvbd8zs4t0Iocx5RgEIOYRN1G55RM5vJc4KnZkrA9MHFuPCFtfkSmnysMOyjr4lcEFfl4%2BjHy5GfVESbahTjZoqQPnfhMQ1mtTXWAp6cm8tTGYicbp7u10R4lRQomALrJPEuODzCjmOjHg%3D%3D)
这里提示都出来了嘛,怎么说未导出呢?
要如何正确引入"ant"并使用呢?
希望奇迹发生_1
在el-input type="textarea"上使用v-html 样式丢失?
不建议使用v-html很不安全 想要换行的话 还是v-model绑定
把所有的标签替换成\n
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241117/4cc57f64c0016b09cd3ead241b0eb049.png)
希望奇迹发生_1
Java 如何打开 Excel 特定的页面?
我有一堆Excel文件,每个Excel文件里,有多个 sheet,需要从每个Excel里的特定 sheet 里读取数据,有没有什么好的办法?
希望奇迹发生_1
App中内嵌uniappH5页面,可以调用uni.getLocation获取定位信息吗?
manifest.json配置的是"image.png" (https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241110/3355511228546c9652096ac300130ec0.png)系统定位,在app和H5页面都是正常
的,不过就是H5需要https,在有的浏览器可能不行,比如百度,还有就是精度不够。
看了下高德的H5,也是一样的情况各个浏览器定位数据差异太大了,尤其是夸克,用不了,小米的原生浏览器还可以。小米浏览器应该是调用的自家的系统定位,看来只能使用app了。
希望奇迹发生_1
springboot 配置多源数据库出错?
先检查有没有依赖
com.baomidou
dynamic-datasource-spring-boot-starter
有的话需要贴完整错误信息
希望奇迹发生_1
axios设置了responseType:arraybuffer,如何在只动接口代码的前提下返回json格式的数据?
如果你只希望这一个接口需要修改的话 直接
const response = await axio.get({
responseType: 'arraybuffer',
url,
method: 'POST'
}).then((respones) => ({ respones: { data: { data: respones.data } } }));
console.log(response.data); // 正常情况这里是返回buffer
console.log(response.data.data); // 现在期望这里能返回buffer
你需要所有 post responseType: 'arraybuffer', 那就重写 post 方法 给你一个思路。
const tempAxiosGet = axios.get;
axios.get = function >(url: string, config?: AxiosRequestConfig): Promise {
return tempAxiosGet(url, config)
.then((respones) => ({ respones: { data: { data: respones.data } } }))
.catch((error) => error)
}
利用 promise 的 then函数可以解决
希望奇迹发生_1
React Antd 的机制是什么鬼?输入框怎么没值?
"React" "Antd" 的机制是什么鬼?输入框怎么没值?
const [navCreateName, setNavCreateName] = useState();
const CreateModule = ({ nid }: { nid: number }) =>
setNavCreateName(e.target.value)} />
console.log(navCreateName)}>确定
为什么输入以后 再打印 "navCreateName" 是空?晕了什么情况
希望奇迹发生_1
切换导航会刷新url和页面 导致猴油脚本失效 求助怎么解决这个问题?
这种情况我一般都是写意一个 "setInterval" ,在 main 函数中做一个标记,标记逻辑是否生效
1. 先检查逻辑是否已经生效,如果已生效,则跳过
2. 如果没有标记,则初始化一下
相当于一个轮询,比如200ms,一直检查代码是否生效,否则就初始化。
希望奇迹发生_1
平铺嵌套JSON,Go竟然比Python慢,问题出在哪里?
"Go"和"Python"平铺嵌套JSON,结果发现"Go"竟然比"Python"还要慢,这对于"Go"新手来说简直是刷新认识,请问"Go"更慢的原因是什么,如何改进?
此文无意引战 ,所以没有选择"Python"标签,请巨佬告诉我如何改进"Go"代码,我相信"Go"是更快且应该是快很多的。
数据样本(结构类似,但不固定)
{
"first": "Dale",
"last": "Murphy",
"age": 44,
"nets": ["ig", "fb", "value1", "value2"],
"submap": {
"subfirst": "Dale",
"sublast": ["Murphy", "value3", "value4"],
"subsub":{"subsub":["value5","value6","value7","value8","value9"]}
}
}
预期结果
[
{"first":"Dale","last":"Murphy","age":"44","nets":"ig","subfirst":"Dale","sublast":"Murphy","subsub":"value5"},
{"first":"Dale","last":"Murphy","age":"44","nets":"fb","subfirst":"Dale","sublast":"Murphy","subsub":"value5"},
{"first":"Dale","last":"Murphy","age":"44","nets":"value1","subfirst":"Dale","sublast":"Murphy","subsub":"value5"},
{"first":"Dale","last":"Murphy","age":"44","nets":"value2","subfirst":"Dale","sublast":"Murphy","subsub":"value5"},
{"first":"Dale","last":"Murphy","age":"44","nets":"ig","subfirst":"Dale","sublast":"value3","subsub":"value5"},
{"first":"Dale","last":"Murphy","age":"44","nets":"fb","subfirst":"Dale","sublast":"value3","subsub":"value5"},
{"first":"Dale","last":"Murphy","age":"44","nets":"value1","subfirst":"Dale","sublast":"value3","subsub":"value5"},
{"first":"Dale","last":"Murphy","age":"44","nets":"value2","subfirst":"Dale","sublast":"value3","subsub":"value5"},
{"first":"Dale","last":"Murphy","age":"44","nets":"ig","subfirst":"Dale","sublast":"value4","subsub":"value5"},
{"first":"Dale","last":"Murphy","age":"44","nets":"fb","subfirst":"Dale","sublast":"value4","subsub":"value5"},
{"first":"Dale","last":"Murphy","age":"44","nets":"value1","subfirst":"Dale","sublast":"value4","subsub":"value5"},
{"first":"Dale","last":"Murphy","age":"44","nets":"value2","subfirst":"Dale","sublast":"value4","subsub":"value5"},
{"first":"Dale","last":"Murphy","age":"44","nets":"ig","subfirst":"Dale","sublast":"Murphy","subsub":"value6"},
{"first":"Dale","last":"Murphy","age":"44","nets":"fb","subfirst":"Dale","sublast":"Murphy","subsub":"value6"},
{"first":"Dale","last":"Murphy","age":"44","nets":"value1","subfirst":"Dale","sublast":"Murphy","subsub":"value6"},
{"first":"Dale","last":"Murphy","age":"44","nets":"value2","subfirst":"Dale","sublast":"Murphy","subsub":"value6"},
{"first":"Dale","last":"Murphy","age":"44","nets":"ig","subfirst":"Dale","sublast":"value3","subsub":"value6"},
{"first":"Dale","last":"Murphy","age":"44","nets":"fb","subfirst":"Dale","sublast":"value3","subsub":"value6"},
{"first":"Dale","last":"Murphy","age":"44","nets":"value1","subfirst":"Dale","sublast":"value3","subsub":"value6"},
{"first":"Dale","last":"Murphy","age":"44","nets":"value2","subfirst":"Dale","sublast":"value3","subsub":"value6"},
{"first":"Dale","last":"Murphy","age":"44","nets":"ig","subfirst":"Dale","sublast":"value4","subsub":"value6"},
{"first":"Dale","last":"Murphy","age":"44","nets":"fb","subfirst":"Dale","sublast":"value4","subsub":"value6"},
{"first":"Dale","last":"Murphy","age":"44","nets":"value1","subfirst":"Dale","sublast":"value4","subsub":"value6"},
{"first":"Dale","last":"Murphy","age":"44","nets":"value2","subfirst":"Dale","sublast":"value4","subsub":"value6"},
{"first":"Dale","last":"Murphy","age":"44","nets":"ig","subfirst":"Dale","sublast":"Murphy","subsub":"value7"},
{"first":"Dale","last":"Murphy","age":"44","nets":"fb","subfirst":"Dale","sublast":"Murphy","subsub":"value7"},
{"first":"Dale","last":"Murphy","age":"44","nets":"value1","subfirst":"Dale","sublast":"Murphy","subsub":"value7"},
{"first":"Dale","last":"Murphy","age":"44","nets":"value2","subfirst":"Dale","sublast":"Murphy","subsub":"value7"},
{"first":"Dale","last":"Murphy","age":"44","nets":"ig","subfirst":"Dale","sublast":"value3","subsub":"value7"},
{"first":"Dale","last":"Murphy","age":"44","nets":"fb","subfirst":"Dale","sublast":"value3","subsub":"value7"},
{"first":"Dale","last":"Murphy","age":"44","nets":"value1","subfirst":"Dale","sublast":"value3","subsub":"value7"},
{"first":"Dale","last":"Murphy","age":"44","nets":"value2","subfirst":"Dale","sublast":"value3","subsub":"value7"},
{"first":"Dale","last":"Murphy","age":"44","nets":"ig","subfirst":"Dale","sublast":"value4","subsub":"value7"},
{"first":"Dale","last":"Murphy","age":"44","nets":"fb","subfirst":"Dale","sublast":"value4","subsub":"value7"},
{"first":"Dale","last":"Murphy","age":"44","nets":"value1","subfirst":"Dale","sublast":"value4","subsub":"value7"},
{"first":"Dale","last":"Murphy","age":"44","nets":"value2","subfirst":"Dale","sublast":"value4","subsub":"value7"},
{"first":"Dale","last":"Murphy","age":"44","nets":"ig","subfirst":"Dale","sublast":"Murphy","subsub":"value8"},
{"first":"Dale","last":"Murphy","age":"44","nets":"fb","subfirst":"Dale","sublast":"Murphy","subsub":"value8"},
{"first":"Dale","last":"Murphy","age":"44","nets":"value1","subfirst":"Dale","sublast":"Murphy","subsub":"value8"},
{"first":"Dale","last":"Murphy","age":"44","nets":"value2","subfirst":"Dale","sublast":"Murphy","subsub":"value8"},
{"first":"Dale","last":"Murphy","age":"44","nets":"ig","subfirst":"Dale","sublast":"value3","subsub":"value8"},
{"first":"Dale","last":"Murphy","age":"44","nets":"fb","subfirst":"Dale","sublast":"value3","subsub":"value8"},
{"first":"Dale","last":"Murphy","age":"44","nets":"value1","subfirst":"Dale","sublast":"value3","subsub":"value8"},
{"first":"Dale","last":"Murphy","age":"44","nets":"value2","subfirst":"Dale","sublast":"value3","subsub":"value8"},
{"first":"Dale","last":"Murphy","age":"44","nets":"ig","subfirst":"Dale","sublast":"value4","subsub":"value8"},
{"first":"Dale","last":"Murphy","age":"44","nets":"fb","subfirst":"Dale","sublast":"value4","subsub":"value8"},
{"first":"Dale","last":"Murphy","age":"44","nets":"value1","subfirst":"Dale","sublast":"value4","subsub":"value8"},
{"first":"Dale","last":"Murphy","age":"44","nets":"value2","subfirst":"Dale","sublast":"value4","subsub":"value8"},
{"first":"Dale","last":"Murphy","age":"44","nets":"ig","subfirst":"Dale","sublast":"Murphy","subsub":"value9"},
{"first":"Dale","last":"Murphy","age":"44","nets":"fb","subfirst":"Dale","sublast":"Murphy","subsub":"value9"},
{"first":"Dale","last":"Murphy","age":"44","nets":"value1","subfirst":"Dale","sublast":"Murphy","subsub":"value9"},
{"first":"Dale","last":"Murphy","age":"44","nets":"value2","subfirst":"Dale","sublast":"Murphy","subsub":"value9"},
{"first":"Dale","last":"Murphy","age":"44","nets":"ig","subfirst":"Dale","sublast":"value3","subsub":"value9"},
{"first":"Dale","last":"Murphy","age":"44","nets":"fb","subfirst":"Dale","sublast":"value3","subsub":"value9"},
{"first":"Dale","last":"Murphy","age":"44","nets":"value1","subfirst":"Dale","sublast":"value3","subsub":"value9"},
{"first":"Dale","last":"Murphy","age":"44","nets":"value2","subfirst":"Dale","sublast":"value3","subsub":"value9"},
{"first":"Dale","last":"Murphy","age":"44","nets":"ig","subfirst":"Dale","sublast":"value4","subsub":"value9"},
{"first":"Dale","last":"Murphy","age":"44","nets":"fb","subfirst":"Dale","sublast":"value4","subsub":"value9"},
{"first":"Dale","last":"Murphy","age":"44","nets":"value1","subfirst":"Dale","sublast":"value4","subsub":"value9"},
{"first":"Dale","last":"Murphy","age":"44","nets":"value2","subfirst":"Dale","sublast":"value4","subsub":"value9"}
]
"CHATGPT"给的"Go"代码
package main
import (
"encoding/json"
"fmt"
"time"
)
func flattenJson(b []byte) ([]map[string]interface{}, error) {
var jsonObj map[string]interface{}
err := json.Unmarshal(b, &jsonObj)
if err != nil {
return nil, err
}
return flatten(jsonObj, make(map[string]interface{})), nil
}
func flatten(jsonObj map[string]interface{}, result map[string]interface{}) []map[string]interface{} {
tempResults := []map[string]interface{}{make(map[string]interface{})}
for k, v := range jsonObj {
switch value := v.(type) {
case map[string]interface{}:
nestedResults := flatten(value, result)
newTempResults := []map[string]interface{}{}
for _, nested := range nestedResults {
for _, item := range tempResults {
newItem := make(map[string]interface{})
for key, val := range item {
newItem[key] = val
}
for key, val := range nested {
newItem[key] = val
}
newTempResults = append(newTempResults, newItem)
}
}
tempResults = newTempResults
case []interface{}:
newTempResults := []map[string]interface{}{}
for _, elem := range value {
for _, item := range tempResults {
newItem := make(map[string]interface{})
for key, val := range item {
newItem[key] = val
}
newItem[k] = elem
newTempResults = append(newTempResults, newItem)
}
}
tempResults = newTempResults
default:
for _, item := range tempResults {
item[k] = value
}
}
}
// Merge each item with result
finalResults := []map[string]interface{}{}
for _, item := range tempResults {
newItem := make(map[string]interface{})
for key, val := range result {
newItem[key] = val
}
for key, val := range item {
newItem[key] = val
}
finalResults = append(finalResults, newItem)
}
return finalResults
}
func main() {
start := time.Now()
jsonData := []byte(`{
"first": "Dale",
"last": "Murphy",
"age": 44,
"nets": ["ig", "fb", "value1", "value2"],
"submap": {
"subfirst": "Dale",
"sublast": ["Murphy", "value3", "value4"],
"subsub":{"subsub":["value5","value6","value7","value8","value9"]}
}
}`)
for i := 0; i go run stsd.go
// 4.287609s
// (base) C:\abc>go run stsd.go
// 4.513107s
// (base) C:\abc>go run stsd.go
// 4.1299503s
// (base) C:\abc>go version
// go version go1.21.4 windows/amd64
"Python"实现代码
import time,json
def flattenjson(json_obj, normalresult=None):
if normalresult is None:
normalresult = {}
# 用于存储处理过程中的临时结果
temp_results = [{}]
for k, v in json_obj.items():
if isinstance(v, dict):
# 递归处理嵌套字典,并合并结果
nested_results = flattenjson(v)
temp_results = [dict(item, **nested) for nested in nested_results for item in temp_results]
elif isinstance(v, list):
# 处理列表,为每个元素创建新的字典
temp_results = [dict(item, **{k: j}) for j in v for item in temp_results]
else:
# 处理普通键值对,加入到临时结果中
for item in temp_results:
item[k] = v
# 将普通结果合并到每个字典中
final_results = [dict(item, **normalresult) for item in temp_results]
return final_results
if __name__ == '__main__':
start = time.time()
jsonstr = """{
"first": "Dale",
"last": "Murphy",
"age": 44,
"nets": ["ig", "fb", "value1", "value2"],
"submap": {
"subfirst": "Dale",
"sublast": ["Murphy", "value3", "value4"],
"subsub":{"subsub":["value5","value6","value7","value8","value9"]}
}
}"""
for _ in range(100000):
flattenjson(json.loads(jsonstr))
print(time.time()-start)
# (base) C:\abc>python test.py
# 3.2182690620422363
# (base) C:\abc>python test.py
# 3.291424560546875
# (base) C:\abc>python test.py
# 3.239586067199707
# (base) C:\abc>python
# Python 3.10.9 | packaged by Anaconda, Inc. | (main, Mar 1 2023, 18:18:15) [MSC v.1916 64 bit (AMD64)] on win32
# Type "help", "copyright", "credits" or "license" for more information.
# >>>
关于如何改进"Go",AI已经无法解答了
You:
同样的 json 数据,我测试 100000 次平铺,为什么 python 的速度比 go 还要快?
AI :
Python 比 Go 更快的情况在特定场景下是可能的,尽管 Go 通常在性能上优于
Python,特别是在并发和系统级编程方面。以下是一些可能导致这种情况的原因:
实现细节:
Python 和 Go 代码的实现方式可能有所不同,这可能导致性能差异。即使逻辑相同,语言特性和内部优化也会影响性能。
Python 的一些内置函数(如 itertools.product)可能经过高度优化,而 Go 代码可能没有使用同等优化的库或方法。
数据结构和算法:
使用的数据结构和算法可能在两种语言中有细微差异,这可能会影响性能。
解释器 / 编译器优化:
Python 解释器(如 CPython)和 Go 编译器采用不同的优化策略,这些策略可能在特定情况下影响性能。
垃圾收集:
Go 语言有一个运行时垃圾收集器,可能会影响性能。Python 也有垃圾收集,但其行为可能与 Go 不同。
启动时间:
对于非常短的运行时间,Python 程序的启动时间可能相对较短,而编译型语言(如 Go)的程序启动时间可能较长。
测试环境:
测试的硬件和操作系统环境可能对性能有影响。
测试方法(如是否预热、是否包括编译时间等)也会影响结果。
为了更准确地比较性能,建议:
确保测试在相似的环境和条件下进行。
仔细审查和优化 Go 代码,确保它是高效的。
进行多次测试并取平均值,以减少偶然性的影响。
如果可能,使用性能分析工具查看代码的热点和潜在的性能瓶颈。
性能测试是复杂的,结果可能因多种因素而异,确保测试的公平和准确性非常重要。
You:
是不是大量接口导致性能下降?
AI :
在 Go 语言中,使用接口(interface)可能会对性能产生一定影响,但这种影响通常是非常微小的。接口在 Go
中是一种强大的特性,允许实现多态和灵活的代码设计。但是,它们确实带来了一些额外的开销,尤其是在涉及大量数据处理和高频调用时。以下是一些使用接口可能影响性能的情况:
动态分派:当您通过接口调用方法时,Go 需要在运行时确定要调用的具体方法实现。这个查找过程称为动态分派,它稍微慢于静态类型的直接方法调用。
类型断言和类型检查:如果您经常需要对接口类型进行类型断言以访问具体的类型,这可能会导致性能开销。
额外的间接层:接口引入了一个额外的间接层,因为它们通过指针引用具体的值。这意味着额外的内存解引用操作,可能会稍微影响性能。
内存分配:在某些情况下,使用接口可能导致额外的堆内存分配,特别是当它们用于包装小的值类型时。
垃圾回收:由于接口可能指向堆上分配的对象,因此可能会增加垃圾收集器的工作量。
在大多数情况下,这些开销都非常小,不太可能成为性能瓶颈。但是,在一些极端情况下(如大量数据处理或高频率调用),这些开销可能变得显著。
如果您怀疑接口是性能问题的原因,可以通过以下方式进行优化:
性能分析:使用 Go 的 pprof 工具进行性能分析,找出性能瓶颈的确切位置。
减少接口使用:在性能关键的部分考虑使用具体类型替代接口。
避免不必要的类型断言:减少类型断言的使用,尤其是在循环或频繁调用的代码块中。
总的来说,除非您正在处理大量数据或需要极高的性能,否则接口带来的开销通常是可以接受的,并且它们为代码的灵活性和可维护性带来了巨大的好处。
You:
GO 的实现有没有更高效的方法?
AI:
要提高 Go 语言中特定代码的性能,尤其是涉及 JSON 处理和数据转换的代码,您可以采取以下几种策略:
优化数据结构:
使用更高效的数据结构可以显著提高性能。例如,使用切片而非映射,或选择更适合特定场景的数据结构。
减少内存分配:
避免不必要的内存分配,如重复创建对象或频繁的切片扩展。您可以预先分配足够大的空间或复用已有的对象。
并行处理:
如果您的任务可以并行化,使用 Go 的并发特性(goroutines 和 channels)来分散工作可以显著提高效率。
优化循环和递归:
优化循环逻辑,减少循环内部的计算和函数调用。在递归函数中,确保没有不必要的重复计算。
使用更高效的库:
选择性能更好的第三方库进行 JSON 解析和处理。比如,json-iterator/go 通常比标准库中的 encoding/json 提供更好的性能。
减少接口使用:
如果可能,减少接口的使用,特别是在性能关键的代码路径中。使用具体类型可以避免接口带来的间接性和动态分
You:
用 json-iterator/go 改进之前的代码
AI :
要使用 json-iterator/go 库来改进之前的代码,首先需要安装这个库。然后,您可以将标准的 encoding/json 解析替换为 json-iterator/go 的解析,以提高 JSON 处理的效率。json-iterator/go 是一个高性能的 JSON
解析器,它完全兼容标准库,但通常提供更快的解析速度。
.....
结果速度和使用标准库encoding/json没有明显变化。
希望奇迹发生_1
浏览器接口 fetch 发起的请求如何跟踪上传进度?
浏览器接口 fetch 发起的请求如何跟踪上传进度?
希望奇迹发生_1
Java 导出 Excel 数据能不能生成柱状图和饼图?
GcExcel来实现柱状图,GcExcel支持各种Excel图表
«"https://www.grapecity.com.cn/developer/grapecitydocuments/exc..." (https://link.segmentfault.com/?enc=MJY1Esd8wvaAFLsmJDNLMA%3D%3D.36%2F1nQT6iHeytOMyHZs5Fhmr7k6BsBPrkr4DW%2FNZUSxa%2B1XtD5D2FfeIa6tFqVIFriutwM8DVdg20x4%2BWp34kHfOQIJSkaamcHAWZUyG42WjmMCt%2Fn2%2FsBuAMa04FJGFW9aOHylxIh5q9zg7mbrXEu40xW58HQwf7Wa4n%2Bml0tk%3D)
"https://segmentfault.com/q/1010000044441021?utm_source=sf-similar-question" (https://segmentfault.com/q/1010000044441021?utm_source=sf-similar-question)»
希望奇迹发生_1
请问前端起不来缺依赖这种情况怎么解决?
"image.png" (https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241031/9f59c64594e63abff21da106b0f9f497.png)
全局搜索一下这个"core-js"或者"core", 是不是哪里不小心VSCode自动导入了这个包, 如果是删掉就行了
希望奇迹发生_1
求指导: Vue SFC Playground 中如何搭建 Element Plus的Demo???
...
import {ElDatePicker} from 'element-plus'
...
@import url("https://unpkg.com/element-plus@2.4.3/dist/index.css");
希望奇迹发生_1
webpack 配置中 `[name].[ext]`是什么意思,这里面的`.[ext]`表示什么,如果文件名重复了怎么修改呢?
1、ext表示文件后缀,比如png,jpg,gif等
2、可以加上hash"/[name].[hash:7].[ext]"
希望奇迹发生_1
AMH 7.1 已经安装了memcached,怎么添加到环境中去啊?
请问我已经安装了memcached-1.6,怎么添加到环境中去啊
https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241026/d1a16bdad01b408d979a02ec8b1a3fea.png
只提示请您在菜单操作,菜单中也不显示,谢谢
希望奇迹发生_1
如何在 CSS Grid 中设置行数为 auto-fill 并使高度生效?
"image.png" (https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241026/106b3a1babb84944d347a6a0264b6499.png)
"https://code.juejin.cn/pen/7316068943830581274" (https://link.segmentfault.com/?enc=Fcu8zTNmN2kIExhvOXmJpQ%3D%3D.DTB68oyn34TtS7vHVyXc0YYstogwpLnAjZUIOjgPoETsyIPWA5aLU%2BUev7U2Oh%2BQ)
👆 截图出自这里
● 请问在使用 grid 布局时,如何设为行数为 auto-fill 为什么指定的高不生效?
● 如图,第一行已经按设定显示了高度,其它几行高度不听令
● 是不是只有在子元素 span 上设 min-height: px 才是唯一的办法
谢谢
article {
margin: 20px;
counter-reset: counter01;
padding: 20px;
background: #eee;
display: grid;
grid-template-columns: repeat(4, 1fr);
/* 👇 指定固定行数时,设定的高度有效 */
/* grid-template-rows: repeat(5, 150px); */
/* 👇 在不指定固定行数时,设定的高度无效 */
grid-template-rows: repeat(auto-fill, min(150px, 150px));
gap: 5px;
}
article span{
padding: 1em;
text-align: center;
counter-increment: counter01;
min-width: 50px;
/* height: 50px; */
border: solid 1px blue;
&::after{
content: counter(counter01);
}
}
能使行数为 auto-fill 时也让高度听指挥吗?
谢谢
希望奇迹发生_1
uniapp中没有btoa函数吗?
uniapp中没有btoa函数吗?
"image.png" (https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241025/e2eb16c7ce6d5fc3cd525bfef2b1ef73.png)
希望奇迹发生_1
为什么vue监听到对象数据,但是对象内的值取不到?
console.log(allDict);这句打印出来有值,为什么里面的值是undefined?
allDict: {
handler(allDict) {
console.log(allDict);
console.log(allDict.AnimalType);
Object.keys(allDict).forEach(key => console.log(key, allDict[key]));
},
deep: true,// 是否开启深度监听
immediate: true// 是否初始化时就执行一次
},
"image.png" (https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241024/37beed1ab00399591457aed9633e2142.png)
希望奇迹发生_1
vue3页面监听pinia后跳转页面的问题?
router.push 和 router.replace 都会返回一个 promise,所以你可以在导航完成后再重置查询条件。
"router.push({name: 'foo'}).then(() => resetQuery())"
希望奇迹发生_1
微信H5下单支付接口里面的APPID填什么?
因为你需要调用微信支付的接口,你需要再微信商户平台开通账户进行开发,你可以按照这个流程使用
"https://pay.weixin.qq.com/docs/merchant/products/h5-payment/d..." (https://link.segmentfault.com/?enc=b47saQF9r4PoipiHAvDDtg%3D%3D.CU7ug%2BQA6JaSJ5S4KdnkpvkSSGWoPfRDLtY4Xr2deTaPk4XSf238t6POraLdabuqadIqPdbaTO1SGMWLVXyPC3R63qJlVxGq3ny4lII1ecA%3D)
希望奇迹发生_1
如何解决使用自定义装饰器时Pylance 类型检测错误?
加上这个试试,测试是可以的
from typing import Callable
def execute(func) -> Callable[..., Result]:
希望奇迹发生_1
antd dark/light方案?
求ant-design-vue系统实现dark/light主题的切换方案
官网只提供了primary
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241015/997b1149ce34d55a80a064396f2e820c.png)
已用过antd-theme-generator、antd-theme-webpack-plugin,但是报了内存溢出,尝试了很久没有解决
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241015/9d1b4f328bc6cd4d67b5df95345ed971.png)
求一个切实可行的方案,最好有demo,感激不尽!!!
希望奇迹发生_1
docker-compose.yml文件部署MySQL时出现错误?
配置:
« - /data/docker/mysql/etc:/etc/mysql:ro
»
错误:
«mysqld: Can't read dir of '/etc/mysql/conf.d/' (OS errno 2 - No such
file or directory)»
你的 /data/docker/mysql/etc 里没有 conf.d ,它被挂载到了 /etc/mysql/ ,导致启动的时候找不到
/etc/mysql/conf.d 。
希望奇迹发生_1
前端渲染页面时卡死,无响应是为什么?
日志量太大了,就把页面卡死了呗。
把日志渲染部分干掉,试试看能不能正常打开,如果可以的话,就说明前面的判断是对的。
做好分页,应该可以解决部分问题。
希望奇迹发生_1
请问addEventListener绑定change事件触发后event.target为null呢?
const input = document.createElement('input')
input.type = 'file'
input.accept = '.doc, .docx'
input.addEventListener('change', handleFileSelect, false)
function handleFileSelect (event) {
console.log(111, event.target) // 这里为什么会为 null 呢?
}
希望奇迹发生_1
网上负评,品牌正向推广,同行攻击的时候有应对方案,这种工作内容应该招什么职位?
大致应该是品牌方向或者公关方向
"品牌推广经理"or"品牌危机管理员"or"公关"
希望奇迹发生_1
使用docker部署lnmp环境的时候,日志问题如何解决?
准备使用容器技术部署php,redis环境
php镜像: php-7.4.3-fpm
redis镜像: 6.2.14
php容器中发现运行php进程的是www-data用户, uid 33 , gid 33
redis容器中发现运行进程的是 redis 用户, uid 999, gid 999
想将php的error_log 和 slowlog 进行持久化到宿主机 /home/logs目录下, 即php-fpm.log,slow.log
redis的log也持久化到/home/logs目录下, 即 redis.log
宿主机上都没有www-data和redis用户,文件读写权限的问题如何处理?
希望奇迹发生_1
js中for与map在返回promise时的区别?
map的回调函数内部用return语句,返回给了map内部的匿名函数,外层的getCapture函数没有接到,所以返回的是空,修改成这样接收:
//getCapture函数内部
const mappedResult = result.map(m => {
if (m.name === '整个屏幕') {
console.log(m)
let str = m.thumbnail.crop({x: 0, y: 0, width: 1000, height: 1000})
const imgStr = str.toDataURL()
return imgStr
}
return undefined;
});
return mappedResult.find(imgStr => imgStr !== undefined);
希望奇迹发生_1
这段for..in代码的报错原因是?
因为 TS 推断出来的 "this.obj" 只有一个确切的键 "'text'",而 "for...in" 遍历出来的键 "key",类型被推断为
"string",所以 TS 认为 "key" 不是 "this.obj" 的键。
虽然不知道 TS 为啥会这样“睁着眼睛说瞎话”,但事情就是这么个事情。
可以对"key"作类型断言:
for(const key in this.obj){
console.log(this.obj[key as keyof typeof this.obj]);
}
但是这样的方法显然不甚讨喜,如果仅仅是把 "this.obj" 作为键值对容器使用的话,可以将其类型定义为"Record":
{
obj:Record = { text: null }
}
希望奇迹发生_1
F12抓取,为什么淘宝的登录接口没有响应体数据返回呢?
点击登录后页面重定向或刷新了,所以看不到 "Response",你把 "Preserve log" 选项关掉,这个接口都不会出现在 "Network" 里
希望奇迹发生_1
正则如何完整匹配script标签的中间内容?
属性中含有引号就排除引号干扰
/(]+|"[^"]*")*>)([\s\S]*?)()/g
希望奇迹发生_1
小程序开发者工具用mp-html为什么视频显示不出来?
如题,同样一段html,放在网页用innerHtml是可以正常显示视频的,放到mp-html里就无法正常显示
* 直接用小程序的video也不显示!!!啥情况啊这是
.js
onLoad(options) {
this.setData({
html:''
})
},
.wxml
.json
{
"usingComponents": {
"mp-html":"mp-html"
}
}
小程序开发工具调试器显示自己去掉了src
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241010/1d829049c171a0d5f0e3f020d7a39d0c.png)
希望奇迹发生_1
phpstudy卸载了,后来才想起数据库数据还在里面?
今天把phpstudy卸载了想重装一下,忘记数据库文件还在相应的文件夹内,我去一看还好还有这文件,但是我重装phpstudy后发现所有静都打个不开了。
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241009/05a79326fa4a8d17719e58acb71424d0.png)
打开数据库文件每个表有两个文件
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241009/6273d3c5bd3951dbfb9614291b7b00fb.png)
这怎么恢复数据库数据?
希望奇迹发生_1
Vue 项目刷新页面 #/ 之后的地址丢失怎么办?
按照问题描述中的 "2", "5" 两条,基本上可以判断是你的业务代码出现了问题。
但是没有办法看到具体的项目代码,所以只能建议从一下两个位置着手:
1. 检查路由守卫
2. 检查权限判断相关的业务代码
虽然HTTP服务也有可能,但是我认为大概率不会是这个。
***
按照补充的复现条件,建议是完成登录之后,在 DevTools 中修改 "storage" 中的 "token",看看是否稳定复现。
至于测试环境没问题,正式环境有问题,可能是由于token过期时间设置的原因。
希望奇迹发生_1
为什么我用render函数渲染自定义组件报错了,页面也渲染不出来,大佬帮忙解答一下?
"h()" 返回的是一个 vnode 对象,也就是个 Object。
你在 template 里 "{{ SomeObject }}" 那就是把它序列化了当字符串显示出来。而 vnode 对象里面有循环引用,当然就报错了。
你要想把 vnode 渲染到 template 里,应该用 "":
***
要是还不理解就看下面的示例。
* 错误写法:
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241007/5b96d89a0e4521e002efcc3a23b86ba5.png)
* 正确写法:
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241007/8950423ec3e40812928daab2dc87b8ea.png)