萌蒙萌
macos Sonoma 不能使用brew, 请问你们是怎么安装软件的?
请问你们是通过什么命令安装macos软件?
macos Sonoma 不能使用brew, 请问你们是怎么安装软件的?
萌蒙萌
C语言文件输出后多出好多0?
include
include
include
include
define MEDICINE_FILE "medicine.txt" //药品文件名
typedef struct medicine
{
char drug_name[100]; //药品名
int drug_number; //药品编号
int price; //售价
int num; //药品剩余数量
} medicine;
struct med
{
medicine medicine_array[500]; //存放药品的数组
int size; //数组已使用的大小
} med;
//与药品操作相关函数
void showMenu(); //打印菜单
void read_medicine_file(); //从文件中读入药品信息
void add_medicine(); //添加药品信息
void show_medicine(); //查看所有药品信息
void drug_name_del(); //按名称删除药品信息
void drug_number_revise(); //按编号修改药品信息
int drug_number_find(int num); //按编号查找药品信息,返回下标
void show_drug_number_find(); //输出查找到的药品信息
int drug_name_find(char *name); //按姓名查找药品信息,返回下标
void show_drug_name_find(); //按姓名查找药品信息,并将药品信息输出
void save_medicine(); //保存药品信息到文件
int main(int argc, char *argv[])
{
int select = 15;
read_medicine_file(); //读取文件中药品的信息
while (1)
{
showMenu(); //打印菜单
while (scanf("%d", &select) != 1 || select 10)
{
printf("输入有误,请重新输入\n");
scanf("%*[^\n]%*c"); //将输入缓冲中所有数据丢弃
}
switch (select)
{
case 0:
//退出程序
exit(0);
break;
case 1:
//添加药品信息
add_medicine();
break;
case 2:
//查看所有药品信息
show_medicine();
break;
case 3:
//按名称删除药品信息
drug_name_del();
break;
case 4:
//按编号修改药品信息
drug_number_revise();
break;
case 5:
//按编号查找药品信息,并将药品信息输出
show_drug_number_find();
break;
case 6:
//按名称查找药品信息,并将药品信息输出
show_drug_name_find();
break;
}
}
return 0;
}
//打印菜单
void showMenu()
{
printf("-----------欢迎来到药房管理系统------------\n");
printf("-------------------------------------------\n");
printf("请输入你要选择的编号:\n");
printf("1、添加药品信息\n");
printf("2、查看所有药品信息\n");
printf("3、按名称删除药品信息\n");
printf("4、按编号修改药品信息\n");
printf("5、按编号查找药品信息\n");
printf("6、按姓名查找药品信息\n");
printf("0、退出本系统\n");
printf("-------------------------------------------\n");
}
//从文件中读入药品信息
void read_medicine_file()
{
FILE *fp = fopen(MEDICINE_FILE, "r");
if (fp == NULL)
{
med.size = 0;
memset(&med.medicine_array, 0, sizeof(med.medicine_array));
}
else
{
while (fscanf(fp, "%s %d %d %d", med.medicine_array[med.size].drug_name,
&med.medicine_array[med.size].drug_number,
&med.medicine_array[med.size].price,
&med.medicine_array[med.size].num) != EOF)
{
med.size++;
}
}
fclose(fp);
}
//添加药品信息
void add_medicine()
{
int flag = 0;
int num; //保存编号用于去重
printf("请输入你要添加的药品的数量\n");
int n, i;
while (scanf("%d", &n) != 1 || n < 0)
{
printf("输入有误,请重新输入\n");
scanf("%*[^\n]%*c");
}
for (i = 0; i < n; ++i)
{
printf("第%d个药品的信息\n", i + 1);
printf("--------------------\n");
printf("请输入药品姓名\n");
scanf("%s", med.medicine_array[med.size].drug_name);
printf("请输入药品编号\n");
med.medicine_array[med.size].drug_number = 0;
do
{
while (scanf("%d", &num) != 1)
{
printf("输入有误,请重新输入!\n");
scanf("%*[^\n]%*c");
}
int ret = drug_number_find(num);
if (ret != -1)
{
printf("该编号已经存在,请重新输入\n");
}
else
{
med.medicine_array[med.size].drug_number = num;
break;
}
} while (1);
printf("请输入药品售价\n");
while (scanf("%d", &med.medicine_array[med.size].price) != 1)
{
printf("输入有误,请重新输入!\n");
scanf("%*[^\n]%*c");
}
printf("请输入药品数量\n");
while (scanf("%d", &med.medicine_array[med.size].num) != 1)
{
printf("输入有误,请重新输入!\n");
scanf("%*[^\n]%*c");
}
flag = 1;
med.size++;
}
if (flag == 1)
save_medicine(); //保存到文件
}
//查看所有药品信息
void show_medicine()
{
int i;
for (i = 0; i < med.size; ++i)
{
printf("%s\t\t\t%d\t\t\t%d\t\t\t%d\n", med.medicine_array[i].drug_name,
med.medicine_array[i].drug_number,
med.medicine_array[i].price,
med.medicine_array[i].num);
}
}
//按姓名删除药品信息
void drug_name_del()
{
int flag = 0;
int i, j, n;
char name[100];
printf("请输入你要删除的药品数量\n");
while (scanf("%d", &n) != 1 || n < 0)
{
printf("输入有误,请重新输入\n");
scanf("%*[^\n]%*c");
}
for (i = 0; i < n; ++i)
{
printf("第%d个药品的姓名\n", i + 1);
printf("--------------------\n");
printf("请输入要删除的药品姓名\n");
scanf("%s", name);
int ret = drug_name_find(name);
if (ret != -1)
{
flag = 1;
printf("删除成功,删除的信息为\n");
printf("%s\t\t\t%d\t\t\t%d\t\t\t%d\n", med.medicine_array[ret].drug_name,
med.medicine_array[ret].drug_number,
med.medicine_array[ret].price,
med.medicine_array[ret].num);
for (j = ret; j < med.size - 1; j++)
{
med.medicine_array[j] = med.medicine_array[j + 1];
}
med.size--;
}
else
{
printf("未找到该药品,删除失败\n");
}
}
if (flag == 1)
save_medicine();
}
//按编号修改药品信息
void drug_number_revise()
{
int flag = 0;
int i, j, n, number; //保存要修改的编号
int num; //保存新编号,用于去重
printf("请输入你要修改的药品数量\n");
while (scanf("%d", &n) != 1 || n < 0)
{
printf("输入有误,请重新输入\n");
scanf("%*[^\n]%*c");
}
for (i = 0; i < n; ++i)
{
printf("第%d个药品的编号\n", i + 1);
printf("--------------------\n");
printf("请输入要修改的药品编号\n");
while (scanf("%d", &number) != 1)
{
printf("输入有误,请重新输入\n");
scanf("%*[^\n]%*c");
}
int ret = drug_number_find(number);
if (ret != -1)
{
flag = 1;
printf("找到该编号的药品,该药品信息为\n");
printf("%s\t\t\t%d\t\t\t%d\t\t\t%d\n", med.medicine_array[ret].drug_name,
med.medicine_array[ret].drug_number,
med.medicine_array[ret].price,
med.medicine_array[ret].num);
printf("请输入新信息\n");
printf("请输入药品新姓名\n");
scanf("%s", med.medicine_array[ret].drug_name);
printf("请输入药品编号\n");
med.medicine_array[ret].drug_number = -1; //将该药品编号改为-1防止新输入的编号和当前编号相同,导致无法成功输入该编号
do
{
while (scanf("%d", &num) != 1)
{
printf("输入有误,请重新输入!\n");
scanf("%*[^\n]%*c");
}
int res = drug_number_find(num);
if (res != -1)
{
printf("该编号已经存在,请重新输入\n");
}
else
{
med.medicine_array[ret].drug_number = num;
break;
}
} while (1);
printf("请输入药品售价\n");
while (scanf("%d", &med.medicine_array[ret].price) != 1)
{
printf("输入有误,请重新输入!\n");
scanf("%*[^\n]%*c");
}
printf("请输入药品数量\n");
while (scanf("%d", &med.medicine_array[ret].num) != 1)
{
printf("输入有误,请重新输入!\n");
scanf("%*[^\n]%*c");
}
printf("修改成功!\n");
}
else
{
printf("未找到该编号的药品\n");
}
}
if (flag == 1)
save_medicine();
}
//按编号查找药品信息,返回下标
int drug_number_find(int number)
{
int i;
for (i = 0; i < med.size; ++i)
{
if (number == med.medicine_array[i].drug_number)
{
return i;
}
}
return -1;
}
//输出查找到的药品信息
void show_drug_number_find()
{
int number;
printf("请输入要查找的编号编号\n");
while (scanf("%d", &number) != 1)
{
printf("输入有误,请重新输入\n");
scanf("%*[^\n]%*c");
}
int ret = drug_number_find(number);
if (ret == -1)
{
printf("未找到\n");
}
else
{
printf("找到了,信息为\n");
printf("%s\t\t\t%d\t\t\t%d\t\t\t%d\n", med.medicine_array[ret].drug_name,
med.medicine_array[ret].drug_number,
med.medicine_array[ret].price,
med.medicine_array[ret].num);
}
}
//按姓名查找药品信息
int drug_name_find(char *name)
{
int i;
for (i = 0; i < med.size; ++i)
{
if (strcmp(name, med.medicine_array[i].drug_name) == 0)
return i;
}
return -1;
}
//按姓名查找药品信息,并将药品信息输出
void show_drug_name_find()
{
char name[100];
printf("请输入你要查找的药品姓名\n");
scanf("%s", name);
int ret = drug_name_find(name);
if (ret == -1)
{
printf("未找到\n");
}
else
{
printf("找到了,药品信息为\n");
printf("%s\t\t\t%d\t\t\t%d\t\t\t%d\n", med.medicine_array[ret].drug_name,
med.medicine_array[ret].drug_number,
med.medicine_array[ret].price,
med.medicine_array[ret].num);
}
}
//保存药品信息到文件
void save_medicine()
{
int i;
FILE *fp = fopen(MEDICINE_FILE, "w");
if (fp == NULL)
{
return;
}
for (i = 0; i < med.size; ++i)
{
fprintf(fp, "%s %d %d %d\n", med.medicine_array[i].drug_name,
med.medicine_array[i].drug_number,
med.medicine_array[i].price,
med.medicine_array[i].num);
}
fclose(fp);
}
文件格式
999感冒灵 1 14.9 200
氯雷他定片 2 65.0 150
肠炎宁片 3 28.0 150
布洛芬胶囊 4 29.8 230
板蓝根颗粒 5 23.8 300
不知道为什么输出总是有问题,文件里的内容输出了,但是多出好多0,格式也有问题,希望各位大佬帮帮忙
萌蒙萌
Typescript - Type alias 'T' circularly references itself?
type TPartial = { info: string };
type AtLeastOne = K extends unknown
? Pick & Partial>
: never;
type TRequired = { id: string } & { children: Record };
type T = Partial & AtLeastOne;
萌蒙萌
amh 两个网站启动 Redis 无法访问?
这个问题应该与Redis与面板设置没关系,估计你网站插件要设置『前缀』相关的名称区别开来,要么同样的程序用相同的Redis服务,数据会可能有冲突的问题。
去插件找下有没相关设置,怎么分开不同的网站。
萌蒙萌
Typescript + element-plus中el-table使用scope,类型怎么定义?
"报错图片" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241228/0557ad3bd52fd03ea8a5c3825d5d75f5.png)
0
"
>
萌蒙萌
请问antd/dropdown想要对button点击弹出,应该怎么写呢?
在阅读"antd
dropdown文档" (https://link.segmentfault.com/?enc=u2DNuYvrZtGsCrvz6xLRwg%3D%3D.OsIK2jZnUVtZssMNlSkyu2gBUT8ZhbOyf2%2FORyRZ1EEKaVxk4IBHz35SCGbxtoJG)的时候,
我看到代码都是这样写的:
const App: React.FC = () => (
e.preventDefault()}>
Click me
);
请问,现在比如有一个button:
{
// 想要在这里进行弹出dropdown
}}
>
想要点击button弹出dropdown,请问如何进行写呢?
萌蒙萌
js打印,window.print如何自定义页眉页脚?
浏览器打印,可以自定义页眉页脚吗?
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241221/760e01ede6e15bfa7865ecc034a0755b.png)
萌蒙萌
如何匹配连续格式的字符串并捕获获取相应内容?
使用"(?<=\[\*\])"匹配"[*]"后面的内容,如果"[*]"后面都是汉字,可以把".*?"换成"[\u4e00-\u9fa5]*?"
"https://www.runoob.com/regexp/regexp-metachar.html" (https://link.segmentfault.com/?enc=oBuYNhKAfKP7pUmWBrDIEg%3D%3D.u1Ev0qAu6wPJRjM11uKMXSruRTvaMxOWRbN7Vaz4xFKnMbSNL4UAUj8rBR6t0k71G3ctqSbsIpdeR43QYWK9cg%3D%3D)
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241217/c82c1b112d0dda31686c19bb7664b429.png)
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241217/1b00ddd1f1c76e988b8b3ab825ac2d2d.png)
萌蒙萌
分页实现但是表格不刷新?
应该是tableData赋值了ui没有刷新问题,可以使用this.$set()赋值试试
this.$set(this,'tableData',response)
//这里是伪代码,具体索引+1或-1需要自己操作
const num = currentpage-1 * pagesize
if(num + pagesize >= response.length){
this.$set(this,'tableData',response.slice(num,response.length))
}else{
this.$set(this,'tableData',response.slice(num,num + pagesize))
}
萌蒙萌
爬虫时网页源代码和页面内容不一致,和F12中的ELEMENT也不一致,怎么办?
"https://statisticszp.58.com/position/totalcount/?infoId=27988..." (https://link.segmentfault.com/?enc=TozhYep05LkOdDhytHX7MA%3D%3D.kJ7zB%2BGbdeYLi22OgRBNz9pb8pLm6CCNv%2FLRnaReq3O%2BYvUfjWWrA98NweWt6Pd%2FINo%2Be4pduHEmh4C7D%2BwlFwN0R0%2FixEXWLYnUwZVNcyqRi4HrXVlEVHbYvzQ7LfuO9sO6MOO6xqGWkElh410CGw9qEfymibQ0ckbkudoSgwOdqqfKb6WYUsg5sAXhTXpmF8ygN88Mfn7uIj01ROJbuPjuINqM59N1ab6oeg1Hbx8ZOB8Ssbon%2BH0viMk%2BECObZRNb8PFdOnIZv14jLGo0ZQ%3D%3D)
请求这个地址:
{
deliveryCount: 1141,
commentCount: 0,
infoCount: 4,
resumeReadPercent: 0,
referUrl: "",
nextUrl: "null"
}
萌蒙萌
vue3 ref声明的变量传递给子组件 监听不到 请问子组件如何正确监听?
父组件用ref声明一数组 然后循环子组件并把数据传递给子组件
当父组件的数据发生变化时 希望子组件能监听到并响应
目前不知道为何没响应.请教哪里出了问题?
是不是这种业务场景最正规的是不是应该用reactive?
//父组件
setup(){
const dataArr = ref([{
name: '1号',
indexCode: '12333'
}, {
name: '2号',
indexCode: '34225'
}])
onMounted(() => {
setTimeout(() => {
dataArr.value = [{
name: '3号',
indexCode: '12441q3'
}, {
name: '4号',
indexCode: '3eqw45'
}]
},1000)
})
return {dataArr}
}
//子组件
props: {
mydata: {
type: Object,
default: () => { }
},
},
setup(props){
watch(() => props.mydata, (newValue, oldValue) => {
console.log(newValue) //监听不到
}, { deep: true })
}
我试了一下 加immediate就可以了 但是我并不想第一次就触发
萌蒙萌
echarts饼图 鼠标移入label 能不能不提示tooltip,只有移入图表的时候才tooltip?
可以试试这个组件, 默认就是你的需求
«"https://www.visactor.io/vchart/demo/pie-chart/basic-> pie" (https://link.segmentfault.com/?enc=GiR4ewDmDOnQlGxremMeEg%3D%3D.QrXxji07dNjAOMBquj1rR%2B15Ec6leBLI6uj2ls0%2FE6BBvEHNjIhevulCTyxipQRyO8AeOK6qZI%2Fh38eNPq38wA%3D%3D)
»
萌蒙萌
javascript是否可以做到多行文本的复制?
没太明白你的内容,你既然是要复制多行,那 "\n" 复制只会在文本控件就会被自动转为换行呐。
多行文本在 JavaScript 里面也可以用模板字符串来实现。
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241128/a50631d4d4e4377342b511982c2108f9.png)
* "模板字符串 - JavaScript | MDN" (https://link.segmentfault.com/?enc=5uqJ5K61AXYeBlDvOVW2xw%3D%3D.uW579lK8qeOjlHBfqogUJqx6ZW7%2FfUTvee6tuJM5i8whOJCnt8tZCOmZp%2B%2FMBX%2B1ff%2BHAegc6tub1imRhPgxn%2B4HXCZYaOXeW5wwaHCMqDKTng51zW9UNs%2FIWe896qOW)
萌蒙萌
vue使用elementUI,在自定义滚动条时,table固定列会露出非固列的文字,求求了!怎么解决?
滚动y滚动条时会出现这个问题
https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241128/f8aecb3130b7f0151a5e6d0415d7a52f.png
萌蒙萌
typescript 中的 Promise 类型定义中为何忽略了错误处理的类型?
通常看到定义一个 promise 的类型都采用 Promise 的方式,表示 resolved 时返回一个 string
的类型值,但是会忽略 rejected 后应该返回什么类型,这是故意这么设计的吗?
萌蒙萌
如何做到像坚果云这样自定义 Windows 文件资源管理器的 UI?
如题。
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241126/b573b7418db61aaa90057168e13bd597.png)
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241126/c6dc42543996c6eb14ab7fbccf0b5980.png)
萌蒙萌
洛谷P9748题问题代码如何修改?
第 k 轮,如果有 n 个苹果
n == 1,当前最后一个苹果被拿走,没有剩余,结束
用 m 记录最后一个没有拿走的苹果:
n % 3 == 1 ,当前最后一个苹果被拿走。m = n-1;
n % 3 != 1 ,当前最后一个苹果未被拿走。m = n;
下一轮苹果数为 (m-1)/3 *2 + (m-1) % 3
不需要记录所有苹果状态,只需要记录苹果剩下多少个与最后的苹果有没有被取走就好了。
萌蒙萌
对业务数据做日志应该如何实现?
springboot项目,想要对某个指定的业务逻辑,比如客户订单的修改做日志,我的想法是每次客户订单不管修改了什么要素都将修改前的数据保存到另外一个结构完全相同的表中。比如订单表示
order,那么我就创建一个结构完全相同的表 order_log
用来保存订单每次修改前的数据,最终可以看到一个流水数据,就是某个订单在什么时间都被什么账号修改过哪个要素。这个做法是否太笨重?有没有其他更好的实现方法?
萌蒙萌
AMH撒时候有安全插件?
可以考虑上架一些相关的插件,
不过wordpress等网站程序有漏洞,建议都是直接修补程序的漏洞,
这样才会从根源上解决问题,防止被黑。
萌蒙萌
设计一个弹框,右击某行弹出且有初始值?
弹窗:
item.prop !== 'usestate' && item.prop !== 'recordtime'
)"
>
取 消
确 定
右击鼠标,触发弹框,且将当前右击行的内容赋值给表单,作为初始值显示
rightClick(row, column, event) {
this.openDialog(row);
this.dialogFormVisible = true;
},
resetForm() {
this.$refs.ruleForm.resetFields();
},
openDialog(val) {
this.editForm = val
},
弹窗弹出后,显示内容为初始值,但是点击内容编辑报错不能对未知对象渲染。存储表单的数据已经绑定到数据节点了,后来加了$nextTickt,也不对。
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241118/c345231197a4338b8d9305db485f7cfc.png)
萌蒙萌
vue3 + ts 的一个错误?
"vue 3.3+" 才支持引用外部的type
"https://blog.vuejs.org/posts/vue-3-3#imported-and-complex-typ..." (https://link.segmentfault.com/?enc=gwOEfo523dPYcsJ82VOClQ%3D%3D.8P%2FmOTmVHOExjIL%2B2Cgnfq7%2FHA4Q3IugtCHHCArCan%2BvRU0VVPJa0OeEnfIiVYnY2y6x9%2BO7KdmQ9jn6MD8ZjLV8HNhZiHfObmlxO3%2FoWAZ0DENk5V512TQQs5h6jO7L)
萌蒙萌
渲染出来的标签 怎么添加@click ?
{{ item.title }}
// recommend use functional component
//
//
//
// {{ props.menuInfo.title }}
//
//
//
//
// {{ item.title }}
//
//
//
//
//
// export default {
// props: ['menuInfo'],
// };
import { Menu } from 'ant-design-vue';
const SubMenu = {
template: `
{{ menuInfo.title }}
{{ item.title }}
`,
name: 'SubMenu',
// must add isSubMenu: true
isSubMenu: true,
props: {
...Menu.SubMenu.props,
// Cannot overlap with properties within Menu.SubMenu.props
menuInfo: {
type: Object,
default: () => ({}),
},
},
};
export default {
components: {
'sub-menu': SubMenu,
},
data() {
return {
collapsed: false,
list: [
{
key: '1',
title: 'Option 1',
},
{
key: '2',
title: 'Navigation 2',
children: [
{
key: '2.1',
title: 'Navigation 3',
children: [{ key: '2.1.1', title: 'Option 2.1.1' }],
},
],
},
],
};
},
methods: {
toggleCollapsed() {
this.collapsed = !this.collapsed;
},
},
};
渲染出来的标签 怎么添加@clickhttps://wmprod.oss-cn-shanghai.aliyuncs.com/images/20241116/e8b50ed28a4a74112c2f33851f15a6b1.png
我在红框里直接添加点击事件报错
萌蒙萌
请问下更换mysql版本需要考虑的点、或者要注意的点?
公司目前线上正在跑的项目使用的数据库是mysql5.7.3,现在打算升级为使用mysql8.0,想问下各位大神,这种升级数据库(或者说替换数据库)有什么要考虑的地方,或者有坑的地方吗。
步骤的话,我目前能想到的就是,到时把数据全部导出来,然后创建一个新的mysql8.0的数据库,然后导入进去。
萌蒙萌
如何在TypeScript中根据对象传入的key返回这些key的推断?
typescript,函数如何根据传入的key,返回对象对应的这些key?比如:
const obj = {
name: 'Marcelo',
age: 27,
role: ['admin']
};
type ObjType = {
[key in keyof typeof obj]: typeof obj[key]
}
const getAttr = >(...attribute: KS): T[KS] => {
const result = {};
for (const attr of attribute) {
result[attr] = obj[attr];
}
return result;
};
const attr = getAttr('age', 'name');
现在这个写法肯定不对,变量attr的推断是unknown,如何写函数getAttr的返回定义,才能让变量attr的推断为{age:number,
name:string },就是函数传入了哪些key,就只返回这些key的推断
萌蒙萌
Java 批量写入 Excel 文件的方法?
向Excel写入数据,主要取决于两个点,一个是数据的形式和来源,另一个是如何写入数据。如果数据源于CSV,那么可以直接把CSV文件考虑转换为Excel文件。如果数据源于数据库,JSON,XML等,那可能经过数据读取,反序列化,可以拿到一组数据的对象。可以考虑使用循环一条一条写入。
另一方面,写入Excel文件,可以使用一些Excel组件库,例如GcExcel,可以直接导入CSV,导出为Excel。同时,GcExcel也支持把二维数组直接写入到Excel工作表区域中。
如下代码所示,可以直接把数据设置到A1:F7的区域中。
"给区域设置值 - GcExcel 中文文档Java版 | 服务端高性能表格组件 - 葡萄城" (https://link.segmentfault.com/?enc=rq3fBT7UCsCjECOUw%2BowmA%3D%3D.vPf4yObNWZNMC5rlLRUxPtSAIW%2FlJndGAbzWAUfaQuliOsnzAgTZa%2FY9VZWQ2dZkwB6EBLQ1e46glT%2BRSo%2BinVCKBVfK8YVEe6mzHAV5Lrvay26jspAF%2BqJFhfwvtmqHauEZfca%2FpZF6u4e1es7npyt9JEDRUE%2B8ql%2Befdii83pbmpd%2B9EB2XBPYKaYowyON)
worksheet.getRange("A:F").setColumnWidth(15);
Object data = new Object[][] { { "Name", "City", "Birthday", "Eye color", "Weight", "Height" },
{ "Richard", "New York", new GregorianCalendar(1968, 5, 8), "Blue", 67, 165 },
{ "Nia", "New York", new GregorianCalendar(1972, 6, 3), "Brown", 62, 134 },
{ "Jared", "New York", new GregorianCalendar(1964, 2, 2), "Hazel", 72, 180 },
{ "Natalie", "Washington", new GregorianCalendar(1972, 7, 8), "Blue", 66, 163 },
{ "Damon", "Washington", new GregorianCalendar(1986, 1, 2), "Hazel", 76, 176 },
{ "Angela", "Washington", new GregorianCalendar(1993, 1, 15), "Brown", 68, 145 } };
// set two-dimension array value to range A1:F7
worksheet.getRange("A1:F7").setValue(data);
萌蒙萌
为何已经缓存了的图片还是闪烁?
"加载 (1).gif" (https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241031/66fc4aa8ea9e09b16d36982fefccccf5.png)
额,GIF有点糊,将就看看吧。
图片我是使用以下方式提前加载的。
const img = new Image();
img.src = src;
浏览器这里使用的也是缓存,为什么还是会闪烁?
***
...视频好像没有录到闪烁,但总之是有图片会闪烁的,有知道原因的朋友吗?
***
大概到处试了试,没有闪烁了;
感觉用实体dom效果会好很多,不知道对不对。
const images = {
img1: import('@/assets/images/public/calendar.svg'),
...
};
type imagesKeys = keyof typeof images;
let load = Object.keys(images).length;
const imagesDom = document.createElement('div');
document.body.appendChild(imagesDom);
function removeImagesDom() {
if (--load == 0) document.body.removeChild(imagesDom);
}
// 创建一个任务,当浏览器空闲时执行
function newImage(src: string) {
return function (deadline: IdleDeadline) {
if (deadline.timeRemaining() > 0) {
const img = document.createElement('img');
img.src = src;
img.onload = removeImagesDom;
imagesDom.appendChild(img);
} else {
requestIdleCallback(newImage(src));
}
};
}
for (const key in images) {
if (Object.prototype.hasOwnProperty.call(images, key)) {
images[key as imagesKeys].then((value: any) => {
requestIdleCallback(newImage(value.default));
});
}
}
萌蒙萌
为何 vite lib 打包 react 组件出现 dev 跟 prod 两个 Runtime?
因为lib是给别人调用的库,别人调用时如果是dev模式,那么用打包出的dev模式库才能有开发时的调试功能
萌蒙萌
Vite + Vue3 + Axios 请求 Node.js 接口一直报404是什么问题?应该怎么解决?
应该是代理配置写错了
萌蒙萌
外部容器Stack能否满足适应内部容器组件的圆角等样式?
暂不支持让父元素适应子元素的圆角。
萌蒙萌
请问CMakeLists.txt文件之间有没有联系?
在查看一个源码文件的时候:
我有看到2个CMakeLists.txt文件:
https://projects.blender.org/blender/blender/src/branch/main/CMakeLists.txt
https://projects.blender.org/blender/blender/src/branch/main/source/CMakeLists.txt
一个是在根目录,一个是在主源码目录,请问它们之间有联系没有呢?如果有它们是怎么联系起来的?
没有找到答案。
萌蒙萌
vscode 编辑器开发uniapp小程序,出现标签错误提示?
以 image 标签为例
declare global {
namespace JSX {
interface IntrinsicElements {
/** 图片 */
image: _Image;
}
}
}
type _Image = _Component
只需要把 "type _Image = _Component" 改为 "type _Image = _ImageProps"
就可以了
应该是升级了 volar 为 vue-official,导致了模版的推导改变了
萌蒙萌
vue3 vite 如何修改图片引用地址?
页面代码中引用本地图片:
页面中的地址:
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241016/dc6d65016e946cff0f0e379f582bb29e.png)
我想将
/src/assets/image/login/icon_login.png 变成
"http://localhost:3000/src/assets/image/login/icon_login.png" (https://link.segmentfault.com/?enc=PwkFVShRuRI%2BIhbMrt%2FBLA%3D%3D.725vMRRAiBxrn85LYf5aYT7Bj%2Ffiw5OOHco0YceOkG2r7kT9UwgXmqejDEqtDD5NprraAI14BEb3iZact09ueg%3D%3D)
应该如何配置?
我配置了vite里的base 没有效果
export default defineConfig(({ command, mode }) => {
return {
base: mode === 'production' ? '/MF_demo/' : 'http://localhost:3000',
}
})
萌蒙萌
如何解决LeetCode每日一题中遇到的疑难问题?
在写leetcode每日一题的过程中遇到了一些无法解决的问题。
我进行了多次调试,虽然解决了问题,但是解决的莫名奇妙,也不知道为啥突然就能运行了。。。
题目描述:
给你一个下标从 0 开始的数组 words ,数组中包含 互不相同 的字符串。
如果字符串 words[i] 与字符串 words[j] 满足以下条件,我们称它们可以匹配:
字符串 words[i] 等于 words[j] 的反转字符串。
0 = 0;i++,j--){
//printf("%c",str[i]);
if(str[i] != str2[j]){
return 0;//不是回文串
}
}
return 1;//是回文串返回1
}int maximumNumberOfStringPairs(char** words, int wordsSize){
int count = 0;
for(int i = 0;i = 0;i++,j--)写成i =
0,j = len - 1;i 0;i++,j--)。
运行结果就变成了这样:
words[i] = cd
words[i] = cd
words[i] = ac
num = 3
这是为什么啊,明明在maximumNumberOfStringPairs函数中的for循环内对words[i]进行了遍历,只有words[0] =
"cd"啊,怎么会出来两次,就弄不明白这里。
萌蒙萌
elementui 父组件用子组件的ref方法怎么弄?
你需要在 methods 里面定义一个 resetFields 啊。
不然的话,就是 "this.$refs['formRef'].$refs['formRef'].resetFields" 这种形式。你可以 console
一下看看
或者用 vue 的浏览器插件看就懂了
萌蒙萌
表格数据瞬间清空导致看不到过渡效果?
可以参考这个解决方案,亲测可行
"https://github.com/angular/components/issues/8057#issuecomment-536628799" (https://link.segmentfault.com/?enc=NyEPT%2BL%2FCrInZu1Yx5jCzw%3D%3D.lrD2b8uIUcjcSNrtmaD9jycniHYx2%2F7dX5ViDNyiESzJiCLU2CeexWdYea1wV3OKHmwLhuxALA%2B9xjPGP1h%2F3jzLs5pfueDr14Vxs1eBojM%3D)
萌蒙萌
route.query拿到的参数如何做类型推断?
const route = useRoute()
const { sceneId, entry, name, mode } = route.query
每个参数的类型为"string | string[]"
如何能统一改成"string"呢?
用"const sceneId = route.query.sceneId as string"可以实现,但是每个参数都得这样写一遍吗?
萌蒙萌
markdown 怎么贴出『代码差异对比』?
在 Markdown 中使用 "diff" 语言来插入代码。
比如:"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241010/9cac274cca28289c0ee7548264d78631.png)
会渲染为:
@@ -127,14 +137,17 @@ export default {
return this.map[name](...args);
},
run_layer_method(id, name, ...args) {
+ var res = null;
this.map.eachLayer((layer) => {
- if (layer.id !== id) return;
- if (name.startsWith(":")) {
- name = name.slice(1);
- args = args.map((arg) => new Function("return " + arg)());
+ if (layer.id == id) {
+ if (name.startsWith(":")) {
+ name = name.slice(1);
+ args = args.map((arg) => new Function("return " + arg)());
+ }
+ res = layer[name](...args);
}
- return layer[name](...args);
});
+ return res;
},
},
};
***
GitHub 使用的是
Linguist,"这里是源文件" (https://link.segmentfault.com/?enc=Rq9W5iR1B%2B06%2B%2FXe3rirGw%3D%3D.Ig7SkYD5ifxsQZAi2ED0HfgKTWI6fKwNY30uTkt2dR5e%2B1emhxmwTA8rTHh%2FFqBAXTYX1IvAgk%2FbTFVQqE5sIXdwFozKZL0%2B1IsA7dCtfRYVYRPb8qrStxIe7Qyw3%2FPyiZpF%2B83%2Bsfn%2F6YVMqYohi%2BTMn8Y5aG606mkVAegWpt26OZ9QFQjsANRrhpLImRg3)。
"Highlight.js 也支持 "diff"
语言" (https://link.segmentfault.com/?enc=PWpkpGREFnKy3UtyBhtuJw%3D%3D.58tC%2FYFj8cfTpUQCVIs%2B52GrzmUxjJctDz%2FGWYKrfzk5ErSQN5uEteWw5o%2FqgeAB2c5dmJCjHrb7Qd7xndLfJTaqGk69oC%2F6QXCTr6luODVvXIFMUk3%2FKBSq8K%2BkOw1VxXD6QUWkXcJBPT5Ir09tMZ%2BlDuUpratcneugU77shsA%3D)。
萌蒙萌
CentOS 7虚拟机中Docker容器PHP-FPM无法解析宿主机Nginx PHP脚本请求?
centos7虚拟机docker容器中的php-fpm不能解析宿主机中的nginx的php脚本请求?
只有php安装在docker中,nginx、mysql安装在虚拟机中。
docker创建php容器
docker run -d --name php-fpm \
-v /usr/local/nginx/html:/var/www/html \
-v /docker/php/conf/www.conf:/usr/local/etc/php-fpm.d/www.conf \
-v /docker/php/conf/php.ini:/usr/local/etc/php/php.ini \
-p 9000:9000 --privileged=true php:7.4-fpm
www.conf文件中的监听地址也改为listen = 0.0.0.0:9000,下面是nginx配置文件
server {
listen 80 ;
server_name localhost;
root /var/www/html;
location / {
index index.php index.html ;
}
location ~ \.php$ {
#172.17.0.2为docker中php-fpm容器ip地址
fastcgi_pass 127.0.0.1:9000;//172.17.0.2:9000或0.0.0.0:9000也尝试过
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
docker中php-fpm还是不能解析nginx请求?求告知原因?
萌蒙萌
SpringBoot的@RequestBody 注解如何接受非json格式字符串参数?
如果接口注解是@RequestBody ,且修饰的是字符串参数,请求如果接受非json格式字符串参数?
最近维护公司的一个springboot项目,发现有一个controller接口写的接收参数形式很奇怪。代码如下
@ResponseBody
@PostMapping(value = "/SendNews")
public String sendContent(HttpServletRequest request,@RequestBody String lstMsgId) {
System.out.println(lstMsgId);
return lstMsgId;
}
我的请求参数是:"90c8c36f23a94c1487851129aa47d690/90c8c36f23a94c1487851129aa47d690"
我用postman 请求,在raw里面带上字符串(非Json格式)可以正常请求,而使用hutool工具请求如下代码却不能请求成功。
"图片.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241006/e5c86e11873ba386da1c3209f64b1ff4.png)
HttpRequest request = HttpRequest.get(url);
request.header("gatewayAuth", "xxxx");
responseJsonStr = request.form(null)//表单内容
.body("90c8c36f23a94c1487851129aa47d690/90c8c36f23a94c1487851129aa47d690")
.timeout(50000)//超时,毫秒
.execute().body();
报如下错误:
org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: not close json text, token : error; nested exception is com.alibaba.fastjson.JSONException: not close json text, token : error
at com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter.readType(FastJsonHttpMessageConverter.java:273)
at com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter.read(FastJsonHttpMessageConverter.java:239)
at org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters(AbstractMessageConverterMethodArgumentResolver.java:185)
at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.readWithMessageConverters(RequestResponseBodyMethodProcessor.java:160)
at org.springframework.web.servlet.mvc.method.annotation.RequestResponseBodyMethodProcessor.resolveArgument(RequestResponseBodyMethodProcessor.java:133)
at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:122)
at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:179)
at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:146)
at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:117)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:895)
at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:808)
at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:1067)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:963)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1006)
at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:883)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:209)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
at com.alibaba.druid.support.http.WebStatFilter.doFilter(WebStatFilter.java:123)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
at org.springframework.web.filter.CorsFilter.doFilterInternal(CorsFilter.java:91)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:100)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
at org.springframework.web.filter.FormContentFilter.doFilterInternal(FormContentFilter.java:93)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:201)
at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:178)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:153)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:481)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:390)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:928)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1794)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Caused by: com.alibaba.fastjson.JSONException: not close json text, token : error
我的请求参数是:"90c8c36f23a94c1487851129aa47d690/90c8c36f23a94c1487851129aa47d690",但是如果改成:""90c8c36f23a94c1487851129aa47d690/90c8c36f23a94c1487851129aa47d690""
使用hutool工具类请求就可以了。为什么会这样? @RequestBody String lstMsgId 怎么接收非json格式的字符串参数,求解~
萌蒙萌
想请教一个多文件上传的需求实现?
想请教巨佬们一个需求问题,
使用环境是一个后台element admin这种
需求是有一个待上传列表,是市里各个学校的列表,每个学校可能会一下子上传几十份pdf文件,那样的话一下子调用几十次上传接口,领导的意思是多选文件之后合并成一个大文件上传(有点没明白),请问有谁有合适一点的解决方案呢
萌蒙萌
Maven项目构建报错解决方案?
建议你先把你工程路径全部用英文再试试,
jdk路径也是,最好都不要带中文
萌蒙萌
@clickhouse/client-web 在 Node.js v18+ 中出现的报错?
使用@clickhouse/client-web本地是正常的,
到测试环境就报错crypto.randomUUID is not a function
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241005/91452714d36318b8c0827dea06f3e13a.png)
node版本18.多,依赖已安装上,搜索的方法也已经试过,没有效果,这是什么原因呢?
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241005/5d122a356fdd6a6f4014fb7aab2354f2.png)
萌蒙萌
如何避免AMH环境安装PHP扩展导致服务器卡死?
AMH环境安装PHP扩展会在1-2分钟后导致服务器CPU上升100%,然后服务器卡死,SSH不能访问。必须重启服务器才能解决问题。
«服务器配置:阿里云2核心2GB内存3M宽带。
环境配置:LNMP(RockyLinux9.3;Nginx1.24;PHP8.0;mysql5.6)»
已尝试过一下解决方法:
1. 尝试减少每次安装扩展的个数,情况依然存在。
2. 尝试切换不用PHP版本,比如从7.4切换到8.0,情况依旧。
服务器监控界面截图(12:40左右开始安装扩展,13:08左右重启服务器)
"服务器监控界面" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241004/abadfca0384c356478f5728f1c1237e4.png)
萌蒙萌
新手求教Java语法?
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241004/8ef0aad18667409229115c49eda05211.png)
public static void main(String[] args) {
List list = new ArrayList() {{ //使用匿名内部类(匿名内部类在Java8无法使用钻石运算符,但是之后的版本可以)
add("A");
add("B");
add("C");
}};
System.out.println(list);
}
一会是静态代码块,一会是匿名内部类,求教这里到底是什么写法?
萌蒙萌
这段多线程代码应该怎么理解?
#include
#include
long count = 0;
void *run(void *n) {
long i, nums = *((long *)n);
for (i = 0; i < nums; i++) {
count++;
}
return NULL;
}
void main() {
pthread_t t1, t2;
long nums = 100000;
pthread_create(&t1, NULL, run, &nums);
pthread_create(&t2, NULL, run, &nums);
pthread_join(t1, NULL);
pthread_join(t2, NULL);
printf("count = %d", count);
}
如果我把 nums 设置为 10000,那么每次都准确输出 20000。或者设置的值比 10000 要少时也能准确输出。如果我把 nums 设置为
100000,那么每次输出的值都好像是随机的,范围在 100000 到 200000 之间。
https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241004/eca4b9a81dfe02450b6bd94e9bd856fe.png
如果是因为线程之间执行顺序的问题导致输出不确定,那为什么当值为 10000 时输出的值是比较确定的?
萌蒙萌
el-select使用了multiple查看详情不能正常回显数据以及点击报错?
data的定义
ruleForm: {
extra: [],
}
datall的接口返回详情数据
async fetchData() {
const route = this.$route
if (route.query.id) {
const { data } = await getRecruitDetail(route.query.id)
this.ruleForm = data
this.ruleForm.cityCode = ''
this.ruleForm.area = ""
}
},
现在的问题在上面的结构里没有回显数据出来,返回的数据都能实出来了,唯独这个ruleForm.extra没有生效,接口"getRecruitDetail"回来的数据是string字符串extra:
"技术部、推广部、市场部"这样的字段回来,现在详情页选择input框会报"value.push is not a function"
大佬们如何解决这个问题呢 想要的效果是 查看详情页正常回显 "getRecruitDetail"的字段以及点击选择下拉框的值
el-select使用了multiple查看详情不能正常回显数据以及点击报错?
萌蒙萌
Nextjs连接OPENAI 的API,请求出现错误?是否为网络问题?
Nextjs了一个openai服务,请求发现不走梯子,连接不上,有没有解决方案?
搭了个梯子用openai的api。结果发现nextjs不走梯子。梯子改为全局也不行,用终端代理命令启动服务也不行。有没有朋友知道神木原因?
GET / 200 in 2524ms
✓ Compiled in 237ms (581 modules)
RetryError [AI_RetryError]: Failed after 3 attemps. Last error: Cannot connect to API: read ECONNRESET
at _retryWithExponentialBackoff (webpack-internal:///(rsc)/./node_modules/ai/dist/index.mjs:718:13)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async experimental_generateObject (webpack-internal:///(rsc)/./node_modules/ai/dist/index.mjs:839:30)
at async taskManager (webpack-internal:///(rsc)/./lib/agents/task-manager.tsx:13:20)
at async processEvents (webpack-internal:///(rsc)/./app/action.tsx:55:29) {
reason: 'maxRetriesExceeded',
errors: [
APICallError [AI_APICallError]: Cannot connect to API: read ECONNRESET
at postToApi (webpack-internal:///(rsc)/./node_modules/ai/openai/dist/index.mjs:398:15)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async OpenAIChatLanguageModel.doGenerate (webpack-internal:///(rsc)/./node_modules/ai/openai/dist/index.mjs:783:22)
at async _retryWithExponentialBackoff (webpack-internal:///(rsc)/./node_modules/ai/dist/index.mjs:706:12)
at async experimental_generateObject (webpack-internal:///(rsc)/./node_modules/ai/dist/index.mjs:839:30)
at async taskManager (webpack-internal:///(rsc)/./lib/agents/task-manager.tsx:13:20)
at async processEvents (webpack-internal:///(rsc)/./app/action.tsx:55:29) {
url: 'https://api.openai.com/v1/chat/completions',
requestBodyValues: [Object],
statusCode: undefined,
responseBody: undefined,
cause: [Error],
isRetryable: true,
data: undefined
},
APICallError [AI_APICallError]: Cannot connect to API: read ECONNRESET
at postToApi (webpack-internal:///(rsc)/./node_modules/ai/openai/dist/index.mjs:398:15)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async OpenAIChatLanguageModel.doGenerate (webpack-internal:///(rsc)/./node_modules/ai/openai/dist/index.mjs:783:22)
at async _retryWithExponentialBackoff (webpack-internal:///(rsc)/./node_modules/ai/dist/index.mjs:706:12)
at async experimental_generateObject (webpack-internal:///(rsc)/./node_modules/ai/dist/index.mjs:839:30)
at async taskManager (webpack-internal:///(rsc)/./lib/agents/task-manager.tsx:13:20)
at async processEvents (webpack-internal:///(rsc)/./app/action.tsx:55:29) {
url: 'https://api.openai.com/v1/chat/completions',
requestBodyValues: [Object],
statusCode: undefined,
responseBody: undefined,
cause: [Error],
isRetryable: true,
data: undefined
},
APICallError [AI_APICallError]: Cannot connect to API: read ECONNRESET
at postToApi (webpack-internal:///(rsc)/./node_modules/ai/openai/dist/index.mjs:398:15)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async OpenAIChatLanguageModel.doGenerate (webpack-internal:///(rsc)/./node_modules/ai/openai/dist/index.mjs:783:22)
at async _retryWithExponentialBackoff (webpack-internal:///(rsc)/./node_modules/ai/dist/index.mjs:706:12)
at async experimental_generateObject (webpack-internal:///(rsc)/./node_modules/ai/dist/index.mjs:839:30)
at async taskManager (webpack-internal:///(rsc)/./lib/agents/task-manager.tsx:13:20)
at async processEvents (webpack-internal:///(rsc)/./app/action.tsx:55:29) {
url: 'https://api.openai.com/v1/chat/completions',
requestBodyValues: [Object],
statusCode: undefined,
responseBody: undefined,
cause: [Error],
isRetryable: true,
data: undefined
}
],
lastError: APICallError [AI_APICallError]: Cannot connect to API: read ECONNRESET
at postToApi (webpack-internal:///(rsc)/./node_modules/ai/openai/dist/index.mjs:398:15)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async OpenAIChatLanguageModel.doGenerate (webpack-internal:///(rsc)/./node_modules/ai/openai/dist/index.mjs:783:22)
at async _retryWithExponentialBackoff (webpack-internal:///(rsc)/./node_modules/ai/dist/index.mjs:706:12)
at async experimental_generateObject (webpack-internal:///(rsc)/./node_modules/ai/dist/index.mjs:839:30)
at async taskManager (webpack-internal:///(rsc)/./lib/agents/task-manager.tsx:13:20)
at async processEvents (webpack-internal:///(rsc)/./app/action.tsx:55:29) {
url: 'https://api.openai.com/v1/chat/completions',
requestBodyValues: {
model: 'gpt-3.5-turbo',
logit_bias: undefined,
user: undefined,
max_tokens: undefined,
temperature: undefined,
top_p: undefined,
frequency_penalty: undefined,
presence_penalty: undefined,
seed: undefined,
messages: [Array],
tool_choice: [Object],
tools: [Array]
},
statusCode: undefined,
responseBody: undefined,
cause: Error: read ECONNRESET
at TLSWrap.onStreamRead (node:internal/stream_base_commons:217:20)
at TLSWrap.callbackTrampoline (node:internal/async_hooks:130:17) {
errno: -54,
code: 'ECONNRESET',
syscall: 'read'
},
isRetryable: true,
data: undefined
}
}
⨯ unhandledRejection: RetryError [AI_RetryError]: Failed after 3 attemps. Last error: Cannot connect to API: read ECONNRESET
at _retryWithExponentialBackoff (webpack-internal:///(rsc)/./node_modules/ai/dist/index.mjs:718:13)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async experimental_generateObject (webpack-internal:///(rsc)/./node_modules/ai/dist/index.mjs:839:30)
at async taskManager (webpack-internal:///(rsc)/./lib/agents/task-manager.tsx:13:20)
at async processEvents (webpack-internal:///(rsc)/./app/action.tsx:55:29) {
reason: 'maxRetriesExceeded',
errors: [
APICallError [AI_APICallError]: Cannot connect to API: read ECONNRESET
at postToApi (webpack-internal:///(rsc)/./node_modules/ai/openai/dist/index.mjs:398:15)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async OpenAIChatLanguageModel.doGenerate (webpack-internal:///(rsc)/./node_modules/ai/openai/dist/index.mjs:783:22)
at async _retryWithExponentialBackoff (webpack-internal:///(rsc)/./node_modules/ai/dist/index.mjs:706:12)
at async experimental_generateObject (webpack-internal:///(rsc)/./node_modules/ai/dist/index.mjs:839:30)
at async taskManager (webpack-internal:///(rsc)/./lib/agents/task-manager.tsx:13:20)
at async processEvents (webpack-internal:///(rsc)/./app/action.tsx:55:29) {
url: 'https://api.openai.com/v1/chat/completions',
requestBodyValues: [Object],
statusCode: undefined,
responseBody: undefined,
cause: [Error],
isRetryable: true,
data: undefined
},
APICallError [AI_APICallError]: Cannot connect to API: read ECONNRESET
at postToApi (webpack-internal:///(rsc)/./node_modules/ai/openai/dist/index.mjs:398:15)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async OpenAIChatLanguageModel.doGenerate (webpack-internal:///(rsc)/./node_modules/ai/openai/dist/index.mjs:783:22)
at async _retryWithExponentialBackoff (webpack-internal:///(rsc)/./node_modules/ai/dist/index.mjs:706:12)
at async experimental_generateObject (webpack-internal:///(rsc)/./node_modules/ai/dist/index.mjs:839:30)
at async taskManager (webpack-internal:///(rsc)/./lib/agents/task-manager.tsx:13:20)
at async processEvents (webpack-internal:///(rsc)/./app/action.tsx:55:29) {
url: 'https://api.openai.com/v1/chat/completions',
requestBodyValues: [Object],
statusCode: undefined,
responseBody: undefined,
cause: [Error],
isRetryable: true,
data: undefined
},
APICallError [AI_APICallError]: Cannot connect to API: read ECONNRESET
at postToApi (webpack-internal:///(rsc)/./node_modules/ai/openai/dist/index.mjs:398:15)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async OpenAIChatLanguageModel.doGenerate (webpack-internal:///(rsc)/./node_modules/ai/openai/dist/index.mjs:783:22)
at async _retryWithExponentialBackoff (webpack-internal:///(rsc)/./node_modules/ai/dist/index.mjs:706:12)
at async experimental_generateObject (webpack-internal:///(rsc)/./node_modules/ai/dist/index.mjs:839:30)
at async taskManager (webpack-internal:///(rsc)/./lib/agents/task-manager.tsx:13:20)
at async processEvents (webpack-internal:///(rsc)/./app/action.tsx:55:29) {
url: 'https://api.openai.com/v1/chat/completions',
requestBodyValues: [Object],
statusCode: undefined,
responseBody: undefined,
cause: [Error],
isRetryable: true,
data: undefined
}
],
lastError: APICallError [AI_APICallError]: Cannot connect to API: read ECONNRESET
at postToApi (webpack-internal:///(rsc)/./node_modules/ai/openai/dist/index.mjs:398:15)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async OpenAIChatLanguageModel.doGenerate (webpack-internal:///(rsc)/./node_modules/ai/openai/dist/index.mjs:783:22)
at async _retryWithExponentialBackoff (webpack-internal:///(rsc)/./node_modules/ai/dist/index.mjs:706:12)
at async experimental_generateObject (webpack-internal:///(rsc)/./node_modules/ai/dist/index.mjs:839:30)
at async taskManager (webpack-internal:///(rsc)/./lib/agents/task-manager.tsx:13:20)
at async processEvents (webpack-internal:///(rsc)/./app/action.tsx:55:29) {
url: 'https://api.openai.com/v1/chat/completions',
requestBodyValues: {
model: 'gpt-3.5-turbo',
logit_bias: undefined,
user: undefined,
max_tokens: undefined,
temperature: undefined,
top_p: undefined,
frequency_penalty: undefined,
presence_penalty: undefined,
seed: undefined,
messages: [Array],
tool_choice: [Object],
tools: [Array]
},
statusCode: undefined,
responseBody: undefined,
cause: Error: read ECONNRESET
at TLSWrap.onStreamRead (node:internal/stream_base_commons:217:20)
at TLSWrap.callbackTrampoline (node:internal/async_hooks:130:17) {
errno: -54,
code: 'ECONNRESET',
syscall: 'read'
},
isRetryable: true,
data: undefined
}
}
⨯ unhandledRejection: RetryError [AI_RetryError]: Failed after 3 attemps. Last error: Cannot connect to API: read ECONNRESET
at _retryWithExponentialBackoff (webpack-internal:///(rsc)/./node_modules/ai/dist/index.mjs:718:13)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async experimental_generateObject (webpack-internal:///(rsc)/./node_modules/ai/dist/index.mjs:839:30)
at async taskManager (webpack-internal:///(rsc)/./lib/agents/task-manager.tsx:13:20)
at async processEvents (webpack-internal:///(rsc)/./app/action.tsx:55:29) {
reason: 'maxRetriesExceeded',
errors: [
APICallError [AI_APICallError]: Cannot connect to API: read ECONNRESET
at postToApi (webpack-internal:///(rsc)/./node_modules/ai/openai/dist/index.mjs:398:15)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async OpenAIChatLanguageModel.doGenerate (webpack-internal:///(rsc)/./node_modules/ai/openai/dist/index.mjs:783:22)
at async _retryWithExponentialBackoff (webpack-internal:///(rsc)/./node_modules/ai/dist/index.mjs:706:12)
at async experimental_generateObject (webpack-internal:///(rsc)/./node_modules/ai/dist/index.mjs:839:30)
at async taskManager (webpack-internal:///(rsc)/./lib/agents/task-manager.tsx:13:20)
at async processEvents (webpack-internal:///(rsc)/./app/action.tsx:55:29) {
url: 'https://api.openai.com/v1/chat/completions',
requestBodyValues: [Object],
statusCode: undefined,
responseBody: undefined,
cause: [Error],
isRetryable: true,
data: undefined
},
APICallError [AI_APICallError]: Cannot connect to API: read ECONNRESET
at postToApi (webpack-internal:///(rsc)/./node_modules/ai/openai/dist/index.mjs:398:15)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async OpenAIChatLanguageModel.doGenerate (webpack-internal:///(rsc)/./node_modules/ai/openai/dist/index.mjs:783:22)
at async _retryWithExponentialBackoff (webpack-internal:///(rsc)/./node_modules/ai/dist/index.mjs:706:12)
at async experimental_generateObject (webpack-internal:///(rsc)/./node_modules/ai/dist/index.mjs:839:30)
at async taskManager (webpack-internal:///(rsc)/./lib/agents/task-manager.tsx:13:20)
at async processEvents (webpack-internal:///(rsc)/./app/action.tsx:55:29) {
url: 'https://api.openai.com/v1/chat/completions',
requestBodyValues: [Object],
statusCode: undefined,
responseBody: undefined,
cause: [Error],
isRetryable: true,
data: undefined
},
APICallError [AI_APICallError]: Cannot connect to API: read ECONNRESET
at postToApi (webpack-internal:///(rsc)/./node_modules/ai/openai/dist/index.mjs:398:15)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async OpenAIChatLanguageModel.doGenerate (webpack-internal:///(rsc)/./node_modules/ai/openai/dist/index.mjs:783:22)
at async _retryWithExponentialBackoff (webpack-internal:///(rsc)/./node_modules/ai/dist/index.mjs:706:12)
at async experimental_generateObject (webpack-internal:///(rsc)/./node_modules/ai/dist/index.mjs:839:30)
at async taskManager (webpack-internal:///(rsc)/./lib/agents/task-manager.tsx:13:20)
at async processEvents (webpack-internal:///(rsc)/./app/action.tsx:55:29) {
url: 'https://api.openai.com/v1/chat/completions',
requestBodyValues: [Object],
statusCode: undefined,
responseBody: undefined,
cause: [Error],
isRetryable: true,
data: undefined
}
],
lastError: APICallError [AI_APICallError]: Cannot connect to API: read ECONNRESET
at postToApi (webpack-internal:///(rsc)/./node_modules/ai/openai/dist/index.mjs:398:15)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async OpenAIChatLanguageModel.doGenerate (webpack-internal:///(rsc)/./node_modules/ai/openai/dist/index.mjs:783:22)
at async _retryWithExponentialBackoff (webpack-internal:///(rsc)/./node_modules/ai/dist/index.mjs:706:12)
at async experimental_generateObject (webpack-internal:///(rsc)/./node_modules/ai/dist/index.mjs:839:30)
at async taskManager (webpack-internal:///(rsc)/./lib/agents/task-manager.tsx:13:20)
at async processEvents (webpack-internal:///(rsc)/./app/action.tsx:55:29) {
url: 'https://api.openai.com/v1/chat/completions',
requestBodyValues: {
model: 'gpt-3.5-turbo',
logit_bias: undefined,
user: undefined,
max_tokens: undefined,
temperature: undefined,
top_p: undefined,
frequency_penalty: undefined,
presence_penalty: undefined,
seed: undefined,
messages: [Array],
tool_choice: [Object],
tools: [Array]
},
statusCode: undefined,
responseBody: undefined,
cause: Error: read ECONNRESET
at TLSWrap.onStreamRead (node:internal/stream_base_commons:217:20)
at TLSWrap.callbackTrampoline (node:internal/async_hooks:130:17) {
errno: -54,
code: 'ECONNRESET',
syscall: 'read'
},
isRetryable: true,
data: undefined
}
}
萌蒙萌
K8s中 loadBalancer类型的service在没有外部ip的情况下如何 访问?
1、要想访问nginx服务,可以新建一个类型为nodePort的service服务,或者将原来的loadblance类型的服务改为nodePort类型,这样就可以通过节点的ip和端口访问到nginx,或者可以搭建MetalLB负载均衡器,也可以自动分配loadblance
ip;
2、容器无法解析外部域名,可以查看coredns的配置,看看上游域名解析配的是什么,如下是我的codedns配置,圈红部分表示上游dns服务器继承节点的dns配置,所以我的pod可以通过节点配置的dns解析到外网的域名上,这里面还有个前提就是pod能够访问外网。
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241001/186506e0216bdeef0f5c3cbb0712b660.png)
萌蒙萌
kubernetes 中 Service流量就永远出不了发起访问的客户端的那个节点 这句话对吗?
"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20240930/de77f8a88435c4d36f460daa28105594.png)
Service流量就永远出不了发起访问的客户端的那个节点 这句话对吗?
我的理解:PodA内通过 ClusterIp访问访问服务A,应该会通过PodA所在节点 的kube-proxy的iptables 负载均衡的路由到
服务A的Endpoint吧? 所以PodA 可能会访问到其他节点的PodB提供的服务A,怎么会永远出不了发起访问的客户端的那个节点呢?
萌蒙萌
RequestMapping中的POST、DELETE、PATCH请求解析,如何发起?
这里的method是用来限制接口的请求方式,前端使用axios指定方法名和参数发起请求,post,delete,patch
是不同的请求方法,不同的请求方法会有不同的约束,比如post方法可以携带请求体,但是get方法一般不允许携带请求体,在Rustful开发规范中一般将post,delete,put或patch,get请求对应数据的增,删,改,查操作,比如你这个例子中,对用户进行操作,新增用户的接口一般使用post方法,修改用户的接口使用put方法,删除用户的接口使用delete方法,获取用户信息的接口使用get方法。