《精选问答》挑选CSDN问答频道每周最新最热的优质回答,为大家提供可信赖的优质解答,点击查看更多已解决问题
问题目录
3、微信小程序如何单独取出动态数组中的所有highPressureValue值放入新数组中
4、如何在mybatis的xml文件中,include另一个xml文件中的sql
6、如何利用随机数函数数值传递给调用函数里不同的变量于不同随机值?
8、hashMap中put方法,equals成立为什么还要判断hash是否相同
1、. c文件改成. cpp文件后结构体会发生变化吗?
问题描述:
.cpp文件可以既写c又写c++吧,为什么我把.c文件转成.cpp文件后,本来结构体里定义的结构体就不是该结构体里的成员了?
.h文件里定义结构体:
struct MsgHeader //封装消息头
{
enum MSGTAG msgID; //当前消息标记 4
union MyUnion
{
struct
{
char fileName[100]; //文件名 100
int fileSize; //文件大小 4
int sharding; //分片数 4
}fileInfo;
struct
{
int nStart; //包的编号 4
int nsize; //包的数据大小 4
char buf[PACKET_SIZE];
int s; //检验和 4
}packet;
};
};
编译出错:
解决方案——来自@benbenli 的回答
给union定义以各名字就可以了 header.fileOrPackage.fileInfo
struct MsgHeader //封装消息头
{
enum MSGTAG msgID; //当前消息标记 4
union MyUnion
{
struct
{
char fileName[100]; //文件名 100
int fileSize; //文件大小 4
int sharding; //分片数 4
}fileInfo;
struct
{
int nStart; //包的编号 4
int nsize; //包的数据大小 4
char buf[PACKET_SIZE];
int s; //检验和 4
}packet;
} fileOrPacket;
} header;
2、怎么把网页中的文本框背景设为透明?
问题描述:怎么把网页中的文本框背景设为透明?
解决方案——来自@秋刀鱼笛滋味的回答
<html lang="en"><head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body style="
background: black;
">
<input type="text" style="
background: transparent;
">
</body></html>
3、微信小程序如何单独取出动态数组中的所有highPressureValue值放入新数组中
问题描述:使用filter后是没有单独取出来
解决方案——来自@GoCityPass新加坡曼谷通票的回答
选择需要的项用filter,数据项转换成其他结构用map
PresureList=[{highPressureValue:1,createTime:null},{highPressureValue:2,createTime:null},{highPressureValue:3,createTime:null}];
highPressureList=PresureList.map(v=>v.highPressureValue);//[1, 2, 3]
//需要对象
//highPressureList=PresureList.map(v=>{return {highPressureValue:v.highPressureValue}});//[{"highPressureValue":1},{"highPressureValue":2},{"highPressureValue":3}]
4、如何在mybatis的xml文件中,include另一个xml文件中的sql
问题描述:
如何在mybatis的xml文件中,include另一个xml文件中的sql,目的是为了提高xml文件中sql的复用性
解决方案——来自CSDN技术专家团-三岁丫 的回答
名字可以随便取,必须要在 java 中定义一下,并且加上 @Mapper 注解才行。要不然 mybatis 是不会解析这个 .xml 文件
5、php提交表单之后console.log怎么实时展现
问题描述:提交表单之后由于数据量巨大,要几分钟处理过程,过程中通过下方代码在浏览器控制台展现数据处理进度,问题是,这要等数据处理完、页面加载完毕后才能显示出来,有没有办法在这之前实时的打印在浏览器控制台console界面
echo "<script> console.log('处理进度:XXX');</script>";
解决方案——来自GoCityPass新加坡曼谷通票的回答
可以使用EventSource来获取状态,但是你的提交得用ajax之类的,不能刷新页面。也可以另外启动一个计时器通过ajax请求页面获取状态,但是处理数据的页面不能用session之类出现加锁的对象,要不ajax请求会被挂起
参考:https://blog.csdn.net/weixin_46105038/article/details/108321714
6、如何利用随机数函数数值传递给调用函数里不同的变量于不同随机值?
问题描述:以下是我的代码,但传回来的值都是同一个数值,一般被调用函数被调用完就释放再调用不应该是重新随机生成数吗?
#include<iostream>
#include<ctime>
using namespace std;
int randnum(int);
int main()
{
double a, b, c;
int re=0;
a = randnum(re);
b = randnum(re);
c = randnum(re);
cout << a << " " << b << " " << c << endl;
system("pause");
}
int randnum(int num)
{
srand((unsigned)time(NULL));
num = rand() % 100 + 1;
return num;
for (int i = 0; i < 20; i++)
cout << num << " ";
cout << endl;
}
运行结果:
解决方案——来自@benbenli的回答
伪随机数。你加时间就是要造成真随机数的假象。但是因为运行时间太接近,所以还没有以假乱真。可以记录上次返回值给srand函数乱真。
#include<iostream>
#include<ctime>
using namespace std;
int randnum(int);
int main()
{
double a, b, c;
int re=0;
a = randnum(re);
b = randnum(re);
c = randnum(re);
cout << a << " " << b << " " << c << endl;
system("pause");
}
int randnum(int num)
{
static int previous = 0;
srand((unsigned)time(NULL) + previous);
previous = rand();
num = previous % 100 + 1;
return num;
for (int i = 0; i < 20; i++)
cout << num << " ";
cout << endl;
}
//Output
57 81 27
7、vue关于v-for循环添加样式
问题描述:循环遍历多个button的,我想实现根据下标index点击具体的一个button后添加背景颜色,标示已完成,需要怎么实现?使用:class会发生点击另一个,其他的button的已完成背景色消失。
<div style="display: inline;margin: 10px" v-for="(item,index) in preparation.questionList" v-if="item">
<el-button class="interaction-but" @click="interactiveQuestion(item,index)">(抢答){{item.questionName}}</el-button>
</div>
解决方案——来自@leewen5的回答
<div style="display: inline;margin: 10px" v-for="(item,index) in preparation.questionList" v-if="item">
<el-button class="interaction-but" :class="{'active':item.active}" @click="interactiveQuestion(item,index)">(抢答){{item.questionName}}</el-button>
</div>
//js
interactiveQuestion(item,index){
this.preparation.questionList.map(x=>{x.acive=false});
this.preparation.questionList[index].active=true;
}
//css
.interaction-but.active{
background: red;
color:#fff;
}
8、hashMap中put方法,equals成立为什么还要判断hash是否相同
问题描述:
equals相同可以推导出hashCode相同。那只需要比较equals不就行了,为什么还要比较hash呢?难道equals相同不能说明hashCode相同吗? 还是hashCode相同不能说明hash相同
if (p.hash == hash && ((k = p.key) == key || (key != null && key.equals(k))))
final V putVal(int hash, K key, V value, boolean onlyIfAbsent,
boolean evict) {
Node<K,V>[] tab; Node<K,V> p; int n, i;
if ((tab = table) == null || (n = tab.length) == 0)
n = (tab = resize()).length;
if ((p = tab[i = (n - 1) & hash]) == null)
tab[i] = newNode(hash, key, value, null);
else {
Node<K,V> e; K k;
if (p.hash == hash &&
((k = p.key) == key || (key != null && key.equals(k))))
e = p;
else if (p instanceof TreeNode)
e = ((TreeNode<K,V>)p).putTreeVal(this, tab, hash, key, value);
else {
for (int binCount = 0; ; ++binCount) {
if ((e = p.next) == null) {
p.next = newNode(hash, key, value, null);
if (binCount >= TREEIFY_THRESHOLD - 1) // -1 for 1st
treeifyBin(tab, hash);
break;
}
if (e.hash == hash &&
((k = e.key) == key || (key != null && key.equals(k))))
break;
p = e;
}
}
if (e != null) { // existing mapping for key
V oldValue = e.value;
if (!onlyIfAbsent || oldValue == null)
e.value = value;
afterNodeAccess(e);
return oldValue;
}
}
++modCount;
if (++size > threshold)
resize();
afterNodeInsertion(evict);
return null;
}
解决方案——来自@java通俗易懵的回答
equals相等,hashCode一定相等;换句话说:两个对象hashCode都不同,两个对象就不同,根本没有必要equals了,这样快的多,并且map的put方法是根据hashCode确定添加位置的,如下:
put方法:
用key的hashCode方法计算哈希值,并据此计算出数组下标index
如果没有发生哈希碰撞,则直接放到对应的桶中
如果发生哈希碰撞,且节点已经存在,就替换掉相应的value
如果发生哈希碰撞,且桶中存放的是树状结构,则挂载到树上
如果碰撞后为链表,添加到链表尾
所以put方法要比较hashCode