您可以在屏幕截图中的红色框中看到的只是用户位于管理员控制台中的组织单元,但这只是OU的名称,确实反映了实际的用户状态。
在下面的屏幕截图中可以看到的用户状态可以在用户的个人资料图片下方看到:
尽可能请参阅OU的名称测试OU暂停
,但是用户状态为活动> Active
,因此OU的名称不反映用户状态。
因此,就您而言,这意味着用户已正确存档,但不一定被暂停。现在回答您的问题:
任何人都可以向我解释为什么会发生这种情况,如果它是正常的,那么如果存档用户不被暂停?
是否会有任何风险?
您可能不需要在已经存档的情况下暂停用户。归档用户时,它会进入部分悬架状态,其中根据官方文档这就是存档帐户发生的事情:
- 无法在任何系统上登录其Google帐户。这包括Google Workspace服务,例如Gmail,Google日历和驱动器。
- 不要出现在全球地址列表中。在用户目录列表中,用户以存档状态出现。了解全球地址列表。
- 可以被删除或未经许可,但不能暂停在管理员控制台中。
文档还提到以下内容:
- 您可以归档主动用户和悬挂用户。如果您不构建用户,他们会返回其以前的状态,并重新获得对所有以前数据的访问。
总而言之,如果用户被暂停是否没有错,这仅意味着如果存档用户返回 true
在使用API时,
悬挂
参数保存在存档之前的状态,以防万一您决定以后再归入该状态,以返回到该特定状态。
参考:
fetch
.git/config
中的行指定哪些分支是从特定遥控器中获取的,在哪些局部ref路径下它们将被镜像。
的示例。
[remote "origin"]
url = git@mygitserver:mygit.git
fetch = +refs/heads/*:refs/remotes/origin/*
在这里,默认 onect
fetch
行指示git以从远程获取所有头( refs/heads/*
) 并将它们本地存储为 Origin/*
远程分支。
显然,您的 fetch
行与默认值不同,并将远程分支反映在带有相同名称的常规本地分支上;而不是远程分支
这就是为什么您会得到警告。
您是否要将行更改为默认值取决于您。
尝试一些非常基本的东西:
let arr = [];
arr[1] = 2; arr[7] = 10;
for(let i=0; i< arr.length; i++) {
if(!arr[i]) arr[i]=null;
}
console.log(arr);
输出:
[ null, 2, null, null, null, null, null, 10 ]
我认为您的问题是 n&gt;&gt; 0
。我不熟悉&gt;&gt;&gt; 0
,但据我所知,它将输入转换为未签名的32位。uint的最大值是 4294967295
因此这些数字超过了它。因此,我认为转换中丢失了一些信息。
var countBitsOld = function(n) {
let bNum=(n>>>0).toString(2);//converts int to base 2
let sum=0;
for(let i=0;i<=bNum.length-1;i++)
{
if(bNum[i]==1)
sum+=1;
}
return sum;
};
var countBitsNew = function(n) {
let bNum=(n).toString(2);//converts int to base 2
let sum=0;
for(let i=0;i<=bNum.length-1;i++)
{
if(bNum[i]==1)
sum+=1;
}
return sum;
};
const test = (n) => console.log({old: countBitsOld(n), new: countBitsNew(n)});
test(9843520790);
test(8989787640);
test(76765709950);
。
从Frontend中发送图像或JSON字符串中的任何媒体文件,并制作序列化器字段以处理JSON字符串。
import base64
import uuid
from rest_framework.fields import Field
from rest_framework import serializers
class Base64ContentField(Field):
"""
For image, send base64 string as json
"""
def to_internal_value(self, data):
try:
format, datastr = data.split(';base64,')
ext = format.split('/')[-1]
file = ContentFile(base64.b64decode(datastr), name=str(uuid.uuid4())+'.'+ext)
except:
raise serializers.ValidationError('Error in decoding base64 data')
return file
def to_representation(self, value):
if not value:
return None
return value.url
您的Plantserializer看起来像
class PlantSerializer(serializers.ModelSerializer):
img = Base64ContentField(required=False)
class Meta:
model = Plant
fields = '__all__'
IMG字段的帖子数据看起来一样,
{
"name": "some name",
"img": "data:image/png;base64,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",
# ... other fields
}
$(document).ready(function(){
$('#mon_reason').on('change click', function (e) {
var reason = $('#mon_reason').val();
if(reason == 1){
$("#mon-adjust").attr("disabled", true);
$("#mon-adjust").val(0.00);
$("#mon-total").val(8.50);
$("#mon-worked").val(8.50);
} if(reason == 2 || reason == 3 ) {
$("#mon-adjust").attr("disabled", true);
$("#mon-adjust").val(8.50);
$("#mon-total").val(8.50);
$("#mon-worked").val(0.00);
} if(reason == 4 || reason == 5) {
$("#mon-adjust").attr("disabled", true);
$("#mon-adjust").val(4.25);
$("#mon-total").val(8.50);
$("#mon-worked").val(4.25);
}if(reason == 6 || reason == 7) {
$("#mon-worked").val();
$("#mon-adjust").attr("disabled", false);
$("#mon-adjust").on('keyup keydown change click keypress', function(){
var val1 = +$("#mon-adjust").val();
var val2 = +$("#mon-total").val();
$("#mon-worked").val(val2-val1);
});
$("#mon-adjust").on('keyup keydown change click keypress', function(){
$("#mon-total").val(8.50);
});
$("#mon-adjust").val();
$('#mon-adjust').on('keyup click keydown change keypress', function(e){
if ($('#mon-adjust').val() > 8.50
&& e.keyCode !== 46
&& e.keyCode !== 8
) {
e.preventDefault();
$('#mon-adjust').val(8.50);
}
});
$('#mon-adjust').on('keyup click keydown change keypress', function(e){
if ($(this).val() < 0.00
&& e.keyCode !== 46
&& e.keyCode !== 8
) {
e.preventDefault();
$(this).val(0.00);
}
});
}if(reason == 8) {
$("#mon-adjust").attr("disabled", false);
$("#mon-adjust").on('keyup keydown change click keypress', function(){
var val3 = +$("#mon-worked").val();
var val4 = +$("#mon-adjust").val();
$("#mon-total").val(val3+val4);
});
$("#mon-adjust").on('keyup keydown change click keypress', function(){
$("#mon-worked").val(8.50);
});
$("#mon-adjust").val();
$('#mon-adjust').on('keyup click keydown change keypress', function(e){
if ($('#mon-adjust').val() > 8.50
&& e.keyCode !== 46
&& e.keyCode !== 8
) {
e.preventDefault();
$('#mon-adjust').val(8.50);
}
});
$('#mon-adjust').on('keyup click keydown change keypress', function(e){
if ($('#mon-adjust').val() < 0.00
&& e.keyCode !== 46
&& e.keyCode !== 8
) {
e.preventDefault();
$('#mon-adjust').val(0.00);
}
});
}
});
});
我已经重写了脚本,因此当用户选择其他选项时,在执行的新代码中更加明确时,请撤消上一个重写的代码。以下代码中的一些添加也限制了输入字段的最低和最大。
总而言之,问题在于,在满足某个条件但没有撤销时,代码正在执行,因为在改变条件时我不够明确。
如果您的模拟服务器具有启用目录列表,则可以使用fetch()来执行此操作。像HTTP-Server这样的服务器默认情况下可以启用此功能。您可以通过简单地将目录地址键入浏览器并查看服务器的答复来测试Fetch()是否可以使用。如果它使用列出该目录中文件的页面回复,则获取也可以做到这一点。要解析fetch()返回的HTML页面文本,您可能必须修改以下代码,因为每个服务器都以不同的方式列出目录列表。这将与HTTP-Server一起使用:
async function getDirectory(dirname) {
let response = await fetch(dirname);
let str = await response.text();
let el = document.createElement('html');
el.innerHTML = str;
// this parse will work for http-server and may have to be modified for other
// servers. Inspect the returned string to determine the proper parsing method
let list = el.getElementsByTagName("table")[0].getElementsByTagName("a");
let arr = [];
for (i = 0; i < list.length; i++) {
arr[i] = list[i].innerHTML;
}
arr.shift(); // get rid of first result which is the "../" directory reference
console.log(arr); // this is your list of files (or directories ending in "/")
return(arr);
}
这是我们可以用来使用的习语列表
-
-
groupby
具有更直观的API的荣耀版本。对于许多人来说,这是首选的方法。这是开发人员的预期方法。 - 指定行级,列级,要汇总的值以及函数以执行聚合。
-
-
+
pd.dataframe.unstack.unstack
- 良好的一般方法用于几乎任何类型的枢轴
- 您指定将构成一个组中的所有列的行级别和列级的所有列。您可以选择要汇总的剩余列以及要执行聚合的功能。最后,您
unstack
您想在列索引中的级别。
-
+
pd.dataframe.unstack.unstack
- 对于某些人来说方便而直观(包括我自己)。无法处理重复的分组键。
- 类似于
groupby
范式,我们指定了最终将是行或列级并将其设置为索引的所有列。然后,我们unstack
我们在列中想要的级别。如果剩余的索引级别或列级不是唯一的,则此方法将失败。
-
- 与
set_index非常相似,因为它共享重复的密钥限制。 API也非常有限。它仅采用
index
,列
,values
。 - 类似于
pivot_table
方法,因为我们选择了枢轴的行,列和值。但是,我们不能汇总,如果行或列不是唯一的,则此方法将失败。
的标量值。
。 - 与
-
- 这是
pivot_table
的专业版,最直观的方式是执行多个任务的最直观的方式。
- 这是
-
- 这是一种非常高级的技术,非常晦涩,但非常快。它在任何情况下都不能使用,但是当它可以使用并且您可以使用它时,您将获得性能奖励。
-
+
pd.dataframe.dataframe.dataframe.dot.dot
- 我将其用于巧妙地执行交叉表。
另请参阅:
- reshaping and pivot表 - Pandas用户指南
问题1问题1
为什么我获得
value eRror:索引包含重复条目,无法重塑
这是因为熊猫试图重新索引列
或 index
index 带有重复的对象条目。有不同的方法可以执行枢轴。当他们被要求旋转的密钥重复时,其中一些人不适合。例如:考虑 pd.dataframe.pivot
。我知道有重复的条目共享行
和 col
值:
df.duplicated(['row', 'col']).any()
True
因此,当i pivot
使用i时,
df.pivot(index='row', columns='col', values='val0')
我会得到上面提到的错误。实际上,当我尝试执行相同的任务时,我会遇到相同的错误:
df.set_index(['row', 'col'])['val0'].unstack()
示例
我要为每个后续问题做什么是使用 pd.dataframe.pivot_table
。然后,我将提供执行相同任务的替代方案。
问题2和3
在是值?
-
df.pivot_table( values ='val0',index ='row',列='col', aggfunc ='平均') COL0 COL1 COL2 COL3 COL4 排 Row0 0.77 0.605 NAN 0.860 0.65 Row2 0.13 NAN 0.395 0.500 0.25 Row3 Nan 0.310 Nan 0.545 Nan Row4 Nan 0.100 0.395 0.760 0.24
-
aggfunc ='平均'
是默认值,我不必设置它。我将其包括在内。
-
我该如何制作以使丢失值为0?
-
-
fill_value
默认设置未设置。我倾向于适当地设置它。在这种情况下,我将其设置为0
。
df.pivot_table( values ='val0',index ='row',列='col', fill_value = 0,aggfunc ='mean') COL0 COL1 COL2 COL3 COL4 排 Row0 0.77 0.605 0.000 0.860 0.65 Row2 0.13 0.000 0.395 0.500 0.25 Row3 0.00 0.310 0.000 0.545 0.00 Row4 0.00 0.100 0.395 0.760 0.24
-
-
df.groupby([['row','col'])['val0']。eyan()。unstack(fill_value = 0)
-
pd.crosstab( index = df ['row'],列= df ['col'], 值= df ['val0'],aggfunc ='mean')。填充(0)
问题4
我可以得到
含义
以外的其他东西,例如sum
?
-
df.pivot_table( values ='val0',index ='row',列='col', fill_value = 0,aggfunc ='sum') COL0 COL1 COL2 COL3 COL4 排 Row0 0.77 1.21 0.00 0.86 0.65 Row2 0.13 0.00 0.79 0.50 0.50 Row3 0.00 0.31 0.00 1.09 0.00 Row4 0.00 0.10 0.79 1.52 0.24
-
pd.dataframe.groupby.groupby.groupbyby
df.groupby(['row','col'])['val0']。sum()。unstack(fill_value = 0)
-
pd.crosstab( index = df ['row'],列= df ['col'], 值= df ['val0'],aggfunc ='sum')。填充(0)
问题5
我一次可以做更多的聚合吗?
请注意,对于 pivot_table
和 crosstab
我需要传递可可的列表。另一方面, groupby.agg
能够为有限数量的特殊功能带上字符串。 groupby.agg
也将采取与我们传递给其他人相同的可喊声,但是由于要获得的效率,要利用字符串函数名称通常更有效。
-
df.pivot_table( values ='val0',index ='row',列='col', fill_value = 0,aggfunc = [np.size,np.mean]) 尺寸均值 COL0 COL1 COL2 COL3 COL4 COL0 COL1 COL2 COL3 COL4 排 Row0 1 2 0 1 1 0.77 0.605 0.000 0.860 0.65 Row2 1 0 2 1 2 0.13 0.000 0.395 0.500 0.25 Row3 0 1 0 2 0 0.00 0.310 0.000 0.545 0.00 Row4 0 1 2 2 1 0.00 0.100 0.395 0.760 0.24
-
pd.dataframe.groupby.groupby.groupbyby
df.groupby(['row','col'])['val0']。agg(['size','shay'])。unstack(fill_value = 0)
-
pd.crosstab( index = df ['row'],列= df ['col'], 值= df ['val0'],aggfunc = [np.size,np.mean])。
问题6
我可以在多个值列上汇总吗?
-
noreferrer“> 我们通过
values = ['val0', 'val1']
,但我们本可以完全将其留下df.pivot_table( values = ['val0','val1'],index ='row',列='col', fill_value = 0,aggfunc ='mean') val0 val1 COL0 COL1 COL2 COL3 COL4 COL0 COL1 COL2 COL3 COL4 排 Row0 0.77 0.605 0.000 0.860 0.65 0.01 0.745 0.00 0.010 0.02 Row2 0.13 0.000 0.395 0.500 0.25 0.45 0.000 0.34 0.440 0.79 Row3 0.00 0.310 0.000 0.545 0.00 0.00 0.230 0.00 0.075 0.00 Row4 0.00 0.100 0.395 0.760 0.24 0.00 0.070 0.42 0.300 0.46
-
df.groupby([['row','col'])['val0','val1']。mean。
问题7
我可以通过多个列细分吗?
-
df.pivot_table( values ='val0',index ='row',列= ['item','col'],, fill_value = 0,aggfunc ='mean') Item0 Item0 Item1项目2 Col2 Col3 Col4 Col0 Col1 Col2 Col3 Col4 Col4 Col0 Col1 Col3 Col4 Col4 排 Row0 0.00 0.00 0.00 0.77 0.00 0.00 0.00 0.00 0.00 0.605 0.86 0.65 Row2 0.35 0.00 0.37 0.00 0.00 0.44 0.00 0.00 0.13 0.000 0.50 0.50 0.13 Row3 0.00 0.00 0.00 0.00 0.31 0.00 0.81 0.00 0.00 0.000 0.000 0.28 0.00 Row4 0.15 0.64 0.00 0.00 0.10 0.64 0.88 0.24 0.00 0.000 0.000 0.00 0.00
-
pd.dataframe.groupby.groupby.groupbyby
df.groupby( ['row','item','col'] )['val0']。平均()。unstack(['item','col'])。填充(0).sort_index(1)
问题8
我可以通过多个列细分吗?
-
df.pivot_table( values ='val0',index = ['键','row'],列= ['item','col'],, fill_value = 0,aggfunc ='mean') Item0 Item0 Item1项目2 Col2 Col3 Col4 Col0 Col1 Col2 Col3 Col4 Col4 Col0 Col1 Col3 Col4 Col4 钥匙行 钥匙0行0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.86 0.00 Row2 0.00 0.00 0.37 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.50 0.50 0.00 Row3 0.00 0.00 0.00 0.00 0.31 0.00 0.81 0.00 0.00 0.00 0.00 0.00 0.00 Row4 0.15 0.64 0.00 0.00 0.00 0.00 0.00 0.24 0.00 0.00 0.00 0.00 0.00 KEY1 Row0 0.00 0.00 0.00 0.77 0.00 0.00 0.00 0.00 0.00 0.00 0.81 0.00 0.65 Row2 0.35 0.00 0.00 0.00 0.00 0.44 0.00 0.00 0.00 0.00 0.00 0.00 0.13 Row3 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.28 0.00 Row4 0.00 0.00 0.00 0.00 0.10 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 键2行0 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.40 0.00 0.00 0.00 Row2 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.13 0.00 0.00 0.00 Row4 0.00 0.00 0.00 0.00 0.00 0.64 0.88 0.00 0.00 0.00 0.00 0.00 0.00
-
pd.dataframe.groupby.groupby.groupbyby
df.groupby( ['键','row','item','col'] )['val0']。平均()。unstack(['item','col'])。填充(0).sort_index(1)
-
pd.dataframe.dataframe.set_set_index_index
的唯一
df.set_index( ['键','row','item','col'] )。
问题9
都是唯一的
我可以汇总列和行在一起的频率,又称“交叉表”?
-
df.pivot_table(index ='row',columns ='col',fill_value = 0,aggfunc ='size') COL0 COL1 COL2 COL3 COL4 排 Row0 1 2 0 1 1 Row2 1 0 2 1 2 Row3 0 1 0 2 0 Row4 0 1 2 2 1
-
pd.dataframe.groupby.groupby.groupbyby
df.groupby(['row','col'])['val0']。size()。unstack(fill_value = 0)
-
pd.crosstab(df ['row'],df ['col'])
- p>
pd.fact.factorize
+ + href =“ https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.bincount.html” rel =“ noreferrer”>np.bincount.bincount
#获取整数分解`i i'和唯一值`r` #for专栏''row' i,r = pd.factorize(df ['row']。值) #获取整数分解`j`和唯一值`c` #for专栏`'col' j,c = pd.factorize(df ['col']。值) #`n`将是行的数量 #`m`将是列的数量 n,m = r.size,c.size #`i * m + j`是一种计数的巧妙方式 #分解箱假定长度平坦 #`n * m`。这就是为什么我们随后重塑为`(n,m)' b = np.bincount(i * m + j,minlength = n * m).Reshape(n,m) #顺便说一句,每当我读这篇文章时,我都认为“豆,米饭和奶酪” pd.dataframe(b,r,c) COL3 COL2 COL0 COL1 COL4 Row3 2 0 0 1 0 Row2 1 2 1 0 2 Row0 1 0 1 2 1 Row4 2 2 2 0 1 1
-
pd.get_dummies(df ['row'])。t.dot(pd.get_dummies(df ['col'])) Col0 Col1 Col2 Col3 Col4 Row0 1 2 0 1 1 Row2 1 0 2 1 2 Row3 0 1 0 2 0 Row4 0 1 2 2 1
10
如何通过仅在两个上转换数据框
列?
-
第一步是为每行分配一个数字 - 此数字将是枢纽结果中该值的行索引。这是使用 :
df2.insert(0,'count',df2.groupby('a')。cumcount()) DF2 计数AB 0 0 A 0 1 1 A 11 2 2 A 2 3 3 A 11 4 0 B 10 5 1 B 10 6 2 B 14 7 0 C 7
第二步是将新创建的列用作索引
dataframe.pivot
。df2.pivot(*df2) #df2.pivot(index ='count',列='a',values ='b') ABC 数数 0 0.0 10.0 7.0 1 11.0 10.0 Nan 2 2.0 14.0 nan 3 11.0 Nan Nan
-
而
> 仅接受列, noreferrer“>” >还接受数组,因此可以传递
groupby.cumcount
直接作为索引
而无需创建显式列。df2.pivot_table(index = df2.groupby('a')。cumcount(),列='a',values ='b') ABC 0 0.0 10.0 7.0 1 11.0 10.0 Nan 2 2.0 14.0 nan 3 11.0 Nan Nan
问题11
如何在
pivot
之后将多个索引变成单个索引
如果列
type object
使用字符串 join join
df.columns = df.columns.map('|'.join)
else else 格式
df.columns = df.columns.map('{0[0]}|{0[1]}'.format)
我还弄清楚试图迭代收藏时做错了什么。这就是编写数组的方式:
执行脚本|返回[{name:“ angela”,age:“ 55”},{name:“ linda”,age:“ 50”}] | MyArray
foreach | MyArray |迭代器
回声| $ {iterator.age}
结束
此功能可用于同时迭代2个阵列。
for (let item of data) {
CreateSkillToSkillRelation(item);
}
不在等待您创造的承诺,因此您基本上试图与仅支持单个并发事务的单个会话同时运行所有这些承诺。
您应该在> CreateSkilltoskillRyation
的每个呼叫中创建一个会话,或使用单个会话等待每个呼叫。
尽管请注意,您可以在> CreateSkilltoSkillRyation
的末尾关闭会话,但仅在成功时,我建议您将等待session.close.close();
移动到最后一个块中。
序言 |
---|
这篇文章是易于阅读的 litb的帖子。 。 基本目的是相同的;对“何时?”的解释和“为什么?” |
typename
和模板
的目的是什么?
typename
和模板
在声明模板以外的其他情况下是可用的。
在 c ++ 中有某些上下文,必须明确地告诉编译器如何处理名称,并且所有这些上下文都有一个共同点;它们取决于至少一个模板参数。
我们指的是解释中可能存在歧义的名称,为; “ 相关名称”。
这篇文章将为依赖名称和两个关键字之间的关系提供解释。
摘要说超过1000个单词
试图解释以下 function-template 对自己,朋友或您的猫的情况;标记( a )的语句中发生了什么?
template<class T> void f_tmpl () { T::foo * x; /* <-- (A) */ }
它可能并不像人们想象的那样容易,更具体地说是评估( a )的结果,重大 作为模板参数的定义 。
不同的 t
可以大大更改所涉及的语义。
struct X { typedef int foo; }; /* (C) --> */ f_tmpl<X> ();
struct Y { static int const foo = 123; }; /* (D) --> */ f_tmpl<Y> ();
则两个不同的方案:
- 如果我们用类型 x 实例化函数 - 板,
,如( c ),我们将声明 pointer-to int naty x ,但是;
-
如果我们使用类型 y 实例 123 的乘积乘以一些已经声明的变量 x 。
C ++标准的理由
至少在这种情况下关心我们的安全和福祉。
为了防止实施潜在的令人讨厌的惊喜,我们通过 明确地来解决A 依赖名称的歧义的标准任务将名称视为A type-name 或A template-id 。
如果没有说明,则依赖性名称将被视为变量或函数。
如何处理依赖名称?
如果这是好莱坞电影,依赖性名称将是通过身体接触传播的疾病,会立即影响其宿主,使其混淆。混乱可能会导致一个形成不良的人,Erhm ..程序。
依赖性名称是直接或间接取决于A 模板参数的任何名称。
template<class T> void g_tmpl () {
SomeTrait<T>::type foo; // (E), ill-formed
SomeTrait<T>::NestedTrait<int>::type bar; // (F), ill-formed
foo.data<int> (); // (G), ill-formed
}
我们在上面的片段中有四个依赖性名称:
- e )
- “ type” 取决于
的实例化,
womentrait&lt; t&gt;
,其中包括t
和;
- “ type” 取决于
- f )
- “ nestedtrait” ,即 template-id ,取决于
witherrait&lt; t&gt;
and; - “ type” 在( f )末尾取决于 nestedtrait ,它取决于
withrait&lt; t&gt; ,;
- “ nestedtrait” ,即 template-id ,取决于
- g )
- “ data” ,看起来像成员函数模板,是间接的依赖性名称,因为的类型foo 取决于
的实例化,
woryrait&lt; t&gt;
。
- “ data” ,看起来像成员函数模板,是间接的依赖性名称,因为的类型foo 取决于
如果编译器会解释依赖性名称<,则语句( e ),( f )或( g )是有效的/em>作为变量/函数(如前所述,如果我们不明确说另有说明,就会发生这种情况)。
使 g_tmpl
具有有效定义的解决方案
,我们必须明确地告诉编译器,我们期望在( e ),( f )中的A template-id 和a type ,以及 template-id in ( g )。
template<class T> void g_tmpl () {
typename SomeTrait<T>::type foo; // (G), legal
typename SomeTrait<T>::template NestedTrait<int>::type bar; // (H), legal
foo.template data<int> (); // (I), legal
}
每次a name 表示类型, all name 必须是 type-names 或 namespaces ,考虑到这一点,很容易看到我们在完全合格的名称开始时应用 typename
。
模板
在这方面是不同的,因为没有办法得出结论,例如; “哦,这是一个模板,然后另一件事也必须是模板” 。这意味着我们直接在我们想这样对待的任何名称的前面应用模板>。
我可以将关键字贴在任何名称前面吗?
“ 我可以粘贴
typename
和模板
在任何名称前?我不想担心它们出现的上下文。 。“ -一些C ++开发人员
只要您要处理 commiquied -name -name ( k k <),标准中的规则可以应用关键字/em>),但是如果名称不合格的应用程序不正确( l )。
namespace N {
template<class T>
struct X { };
}
N:: X<int> a; // ... legal
typename N::template X<int> b; // (K), legal
typename template X<int> c; // (L), ill-formed
注意:应用 typename
或模板
在不需要的上下文中被视为好练习;仅仅因为您可以做某事,并不意味着您应该做。
此外,在某些情况下, typename
和 template
是明确禁止:
-
指定类继承的基础
在派生类的 base-specifier-list 中编写的每个名称已经被视为 type-name ,明确指定
typename
均为形成不良和多余的。// .---------基本列表列表 t&gt; lt; lt; lt; // v struct派生:typename wory wory&lt; t&gt; :: type / *&lt; - 不构型 * / { ... };
-
当 template-id 是使用指导性
中引用的
struct base { t&gt; lt; lt; lt; struct类型{}; }; 结构派生:基础{ 使用base ::模板类型; //不构造 使用base ::类型; // 合法的 };
从数据框架中减去列 a 然后除以列 a
以计算pct_change:
df.sub(df['A'], axis=0).div(df['A'], axis=0)
上述表达式可以进一步简化为:
df.div(df['A'], axis=0).sub(1)
A B C D
0 0.0 -0.821429 1.535714 0.500000
1 0.0 0.491525 0.508475 -0.745763
2 0.0 -0.452055 0.013699 -0.452055
3 0.0 2.187500 0.062500 0.812500
4 0.0 -0.632184 -0.839080 0.114943
5 0.0 -0.042105 -0.378947 -0.157895
6 0.0 -0.553191 -0.734043 -0.319149
...
98 0.0 -0.604651 -0.325581 -0.418605
99 0.0 0.649123 -0.964912 -0.631579
您需要外部IP来从外部群集访问群集。您需要的是外部IP:端口以访问群集中的豆荚。
要获取外部IP,请更改服务中的类型。YAML从NodePort到LoadBalancer,然后运行“ Kubectl Get Service”,您应该看到外部IP
LoadBalancer是将流量从Internet到群集中的Pods,并加载平衡的原因豆荚。
添加此行: minio_opts =“ - certs-dir/home/swaggmode/.minio/certs -console-address:9001”
到位于/etc/etc/eetc/default/default/default/default/ Minio
应使Minio控制台重定向到端口9001或您想要的任何特定端口。
使用
make verbose = 1
或cmake -build&lt; path&gt; - Verbose
自动调用使用的生成器的正确命令。Use either
make VERBOSE=1
, orcmake --build <path> --verbose
which automatically invokes the right command for the generator you used.如何将CMAKE生成的Makefile与Echo编译器的命令线进行?