使函数通用
func multiplier<T: Numeric>(_ a:T, _ b:T) -> T {
if a == 0 || b == 0 {
return 0
}
return a+multiplier(a,b-1)
}
相同的实现
您可以使用split(“ _”),并以[-1]作为列的新名称获取最后一个元素
>>>string="MAC0999_STD_F_ColumnName"
>>>string.split("_")
['MAC0999', 'STD','F', 'ColumnName']
>>>NewColumnName=string.split("_")[-1]
>>>NewColumnName
'ColumnName'´
利用Linq! .sum()
将添加您集合中的所有内容。您可以运行两次,每个切片一次,每个小计的一次。
var input = new [] { 1, 2, 2, 3, 6 };
var totalSum = Enumerable.Range(1, input.Length).Sum(len => input[0..len].Sum());
// totalSum is 31
enumerable.range
为您提供(以及)1和5之间的数字集合 - 子阵列的每个切片的可能长度。然后,您使用范围运算符 [0 ..#]
获得越来越大的切片。
是的,这不像Aminrd的解决方案那么聪明 - 它正在手动进行所有计算,并且您正在执行许多切片。
您正在遇到 innerhtml
查找元素的麻烦。您正在传递狮子
,但是交换语句期望狮子
。这将永远不会评估 audio.play
案例。
建议的解决方案是在 InnerHtml
字符串上调用 tolowercase()
,以便它们匹配。当前使用您的堆栈片段 querySelector
因此,因此没有返回任何元素。
var buttonInnerHTML = this.innerHTML.toLowerCase();
像解决方案一样,您需要为计数本机查询指定返回类型。
可以通过。
JPA版本1.0和2.0
<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings version="2.0" xmlns="http://java.sun.com/xml/ns/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence/orm
http://java.sun.com/xml/ns/persistence/orm_2_0.xsd ">
<named-native-query name="Person.findPeople.count" result-set-mapping="cntColumnResult">
<query>select count(*) cnt from person</query>
</named-native-query>
<named-native-query name="Person.findPeople">
<query>select first_name, last_name from person</query>
</named-native-query>
<sql-result-set-mapping name="cntColumnResult">
<column-result name="cnt"/>
</sql-result-set-mapping>
</entity-mappings>
JPA版本2.1
将您的映射配置推向 entity-mappings版本=“ 2.1”
<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence/orm
http://xmlns.jcp.org/xml/ns/persistence/orm_2_1.xsd">
<named-native-query name="Person.findPeople.count" result-set-mapping="cntColumnResult">
<query>select count(*) cnt from person</query>
</named-native-query>
<named-native-query name="Person.findPeople">
<query>select first_name, last_name from person</query>
</named-native-query>
<sql-result-set-mapping name="cntColumnResult">
<column-result name="cnt" class="java.lang.Long"/>
</sql-result-set-mapping>
</entity-mappings>
,或者
<?xml version="1.0" encoding="UTF-8"?>
<entity-mappings version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence/orm"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence/orm
http://xmlns.jcp.org/xml/ns/persistence/orm_2_1.xsd">
<named-native-query name="Person.findPeople.count" result-set-mapping="cntConstructorResult">
<query>select count(*) cnt from person</query>
</named-native-query>
<named-native-query name="Person.findPeople">
<query>select first_name, last_name from person</query>
</named-native-query>
<sql-result-set-mapping name="cntConstructorResult">
<constructor-result target-class="java.lang.Long">
<column name="cnt" class="java.lang.Long"/>
</constructor-result>
</sql-result-set-mapping>
</entity-mappings>
我认为这是一个缺陷或可能是 spring-data-jpa 。 有问题的源代码行。
countQuery = em.createNamedQuery(countQueryName, Long.class);
如果在查询创建期间不会传递 long.class
类型,则无需在映射配置中指定计数查询的精确类型。在这种情况下,Hibernate运作良好。
可能的解决方案的示例为本机创建原始查询,而不是键入:
Query query = getQueryMethod().isNativeQuery()
? em.createNativeQuery(queryString)
: em.createQuery(queryString, Long.class);
因此,如果您有时间,请为Spring-Data-JPA项目发布新问题,因此,这种小的查询校正将显着简化映射配置。
通过更改 a
中的类属性,每次对象都会在本地进行 a
的更改,就有一种非常丑陋的方法来完成您想要的事情:
class A:
additional_amount = 0
def __init__(self, amount):
self.amount = amount
self.local_additional_amount = A.additional_amount # Remember the "context" at creation time
def __add__(self, other):
return self.amount + other.amount + self.local_additional_amount
class B:
def __init__(self, added_amount):
self.added_amount = added_amount
self.old_additional_amount = A.additional_amount # Could be in `__enter__`, for a slightly different behaviour
def __enter__(self):
# Change the additional amount for A's created inside this context
A.additional_amount = self.added_amount
return self
def __exit__(self, exc_type, exc_value, exc_traceback):
# Restore As original amount, so we can nest it:
A.additional_amount = self.old_additional_amount
此方法使您的示例通过,甚至可以使用嵌套上下文:
if __name__ == '__main__':
# Test default behaviour:
assert (A(2) + A(3)) == 5
# Simple context (example requested by OP):
with B(1000):
assert (A(1) + A(5)) == 1006
# Test default behaviour is restored:
assert (A(1) + A(5)) == 6
# Nested contexts work
with B(1000):
with B(2000):
assert (A(1) + A(5)) == 2006
# Out of the '2000' context
assert (A(1) + A(5)) == 1006
assert (A(1) + A(5)) == 6
请注意,在此实施中,上下文
是在创建时记录的,因此您可能会得到令人惊讶的行为:
with B(1000):
a = A(1)
with B(2000):
b = A(1)
assert (a + b) == 1002 # `a` adds 1000
assert (b + a) == 2002 # but `b` adds 2000
可以使每个实例 a
获取当前上下文是在 __添加__
方法中,通过直接使用 a.additional_amount
。
无论如何,请请,不要将其用作语言难题。这是非常令人惊讶的行为,并且违背了“显式胜于隐式”的python哲学。由于它基本上使用了一个全局变量,因此它将在任何类型的并发或上下文切换案例中破裂(例如,在 yarts
s内部的函数中。
顺便说一句,某些语言实现了与您想要的非常相似的功能。例如,看看上下文参数例如,在Scala中。
您可以合并一个文件中的所有4个文件。我建议使用两条空行的分离,因为这样,您可以通过 index
轻松地解决(sub)Datablocks,请检查 help Index
。
对于标签,您可以制作双循环,一个用于(子)数据锁,一个用于列。您必须总结列(检查 help sum
)才能计算标签的y位(即直方图元素的中心)。标签的X位置对于第一个数据集很特别(因为只有列列),因此可以考虑(i*3+$ 0-(i == 0))
, IE i == 0
如果我等于0,则返回1,否则将返回1。
您可能想在终端设置大型字体大小,而不是多次设置它,例如:设置术语pngcairo字体“,17”
。
在下面找到最小化的示例,作为进一步优化的起点。
脚本:
### rowstacked histogram with numbers in corresponding boxes
reset session
$Data <<EOD
# base_vs_FHA_1core.dat
col1 col2 col3 col4 col5
Base 5 50 40.5 4.5
FHA 5 16 38 5 1.54x
# base_vs_FHA_2core.dat
Base 9.3 47 37.3 6.3
FHA 9.3 15 34.3 6.3 1.54x
# base_vs_FHA_4core.dat
Base 18 41 33.9 7.06
FHA 16.6 13.07 30.7 7.4 1.47x
# base_vs_FHA_8core.dat
Base 27.7 34.3 28.3 9.6
FHA 28.3 11.45 25.3 9.6 1.34x
EOD
set xlabel "Number of Cores"
set ylabel "Time (%)"
set yrange [0:130]
set ytics 0, 10, 100
set grid
set style data histogram
set style histogram rowstacked title
set style fill solid 0.5 border lt -1
set boxwidth 0.9
set key top left noautotitle horizontal
N = 5 # number of last data column
plot newhistogram '1-Core' at 0, \
for [i=2:N] $Data index 0 u i:xtic(1) ti columnheader, \
newhistogram '2-Cores' lt 1 at 3, \
for [i=2:N] '' index 1 u i:xtic(1), \
newhistogram '4-Cores' lt 1 at 6, \
for [i=2:N] '' index 2 u i:xtic(1), \
newhistogram '8-Cores' lt 1 at 9, \
for [i=2:N] '' index 3 u i:xtic(1), \
for [i=0:3] for [j=2:N] '' index i u (i*3+$0-(i==0)): \
((sum [k=2:j] column(k))-column(j)*0.5):j w labels
### end of script
结果:
看起来像是弹力弹力的SDK中的一个问题,我已经创建了一个问题: https:https:https:https:https: //github.com/getsentry/sentry-dart/issues/942
同时,解决方法可能正在设置操作系统在当前范围的上下文中手动: https://pub.dev/documentation/sentry/latest/sentry_io/contexts/operatingsystem.html
这样的事情可以起作用(不进行测试):
import 'dart:io' show Platform;
if (Platform.isIOS) {
Sentry.configureScope((scope) => scope.setContexts('os', {
'name': Platform.operatingSystem
}));
}
我终于设法找到了一种适合我的解决方案。
我收到的 access_token 是授权代码我可以用来消费 google apis 。
我唯一要做的就是将访问权限发送到我的个人 asp.net core webapi 。
然后,我只需要编写一个简单的功能,我的控制器可以执行它:
public class GoogleUserInfos
{
public string Id { get; set; }
public string Email { get; set; }
public string Verified_Email { get; set; }
public string Name { get; set; }
public string Given_Name { get; set; }
public string Family_Name { get; set; }
public string Picture { get; set; }
public string Locale { get; set; }
}
public async Task<GoogleUserInfos?> GetGoogleUserInfos(string authCode)
{
try
{
using (var client = new HttpClient())
{
var uri = "https://www.googleapis.com/oauth2/v1/userinfo?access_token=" + authCode;
using (var response = await client.GetAsync(uri))
{
if (response.StatusCode == HttpStatusCode.OK)
{
string responseString = await response.Content.ReadAsStringAsync();
var obj = JsonConvert.DeserializeObject<GoogleUserInfos>(responseString);
return obj;
}
}
}
}
catch
{
return null;
}
return null;
}
函数 getgoogleuserinfos 以 access_token 为参数(名为 authcode )。 br>
然后,它将使用以下端点 https://www.googleapis.com /oauth2/v1/userInfo 。
它还将 AccessToken 作为GetRequest中的参数。
一旦得到响应,该函数就可以在自定义对象中 googleuserinfos 中启用对象。
响应的 id 字段是Google用户唯一 Open ID ,这将使我能够将用户与数据库中存储的用户联系起来。
这是我到目前为止最好的解决方案,包括
student_id
和topic_id
以及老师的分数输入。
是的,很好。您只需要分析分数_ $ {student_id} _ $ {topic_id}
在服务器上的格式回到您期望的数据结构中。
不过,更习惯的编码是使用括号符号而不是下划线。许多用于应用程序/X-WWW-Form-urlencoded
的解析器可以自动将其转换为嵌套对象,请参阅Eg 无法将嵌套对象json张贴到节点Express Body Parser 和如何在express.js?中获取嵌套表单数据。
<input type="text" class="score-input" name="scores[<%= student.id %>][<%= topic.id %>]">
我还需要一个关于如何将所有这些数据转换为更新语句的提示。
使用多个 update
语句简单:
const { scores } = req.body;
for (const studentId in scores) {
const studentScores = scores[studentId];
for (const topicId in studentScores) {
const points = studentScores[topicId];
// TODO: check for permission (current user is a teacher who teaches the topic to the student)
await pgClient.query(
'UPDATE scores SET points = $3 WHERE student_id = $1 AND topic_id = $2',
[studentId, topicId, points]
);
}
}
您可能需要在 parseInt
或两个或两个中使用 student> studentId
的适当输入验证, topic> topic>
和点
如果您需要它们是整数而不是字符串;否则,Postgres将抛出例外。
您可以使用 switch
如下:
$regPath = 'HKLM:\SOFTWARE\Bentley\BentleyDesktopClient\Install'
$oldValue = (Get-ItemPropertyValue -Path $regPath -Name 'UpdateClient') -ne ''
$newValue = switch -Wildcard ($oldValue) {
'KeyName_CheckUpdateOption=*' { 'KeyName_CheckUpdateOption=3' }
'KeyName_CheckUpdateIsEnabled=*' { 'KeyName_CheckUpdateIsEnabled=0' }
default { $_ } # return this item unchanged
}
Set-ItemProperty -Path $regPath -Name 'UpdateClient' -Value $newValue
注册表值的新内容是:
KeyName_CheckUpdateOption=3
KeyName_CheckUpdateOptionModTime=<number-varies>
KeyName_UpdateClientInstallTime=<number-varies>
KeyName_CheckUpdateIsEnabled=0
您可以首先将BLOB数据转换为CLOB类型,然后提取所需的标签。希望以下两个功能可以解决您的问题:
FUNCTION BLOB2CLOB(mBLOB IN BLOB)
RETURN CLOB IS
BEGIN
Declare
mCLOB CLOB;
mDestOffSet INTEGER;
mSrcOffSet INTEGER;
mBLOBCSID INTEGER;
mLangCntx INTEGER;
mWarn INTEGER;
Begin
mDestOffSet := 1;
mSrcOffSet := 1;
mBLOBCSID := 0;
mLangCntx := 0;
mWarn := 0;
DBMS_LOB.CreateTemporary(mCLOB, TRUE);
DBMS_LOB.ConvertToClob(mCLOB, mBLOB, DBMS_LOB.GetLength(mBLOB), mDestOffSet, mSrcOffSet, mBLOBCSID, mLangCntx, mWarn);
RETURN(mCLOB);
End;
END BLOB2CLOB;
--
FUNCTION Get_SOAP_PartCLOB(mCLOB IN CLOB, mTag IN VARCHAR2) RETURN CLOB
IS
BEGIN
Declare
wrkCLOB CLOB;
myStart NUMBER(10) := 0;
myEnd NUMBER(10) := 0;
myLength NUMBER(10) := 0;
toErase NUMBER(10) := 0;
Begin
DBMS_LOB.CreateTemporary(wrkCLOB, True);
DBMS_LOB.COPY(wrkCLOB, mCLOB, DBMS_LOB.GETLENGTH(mCLOB));
--
myStart := DBMS_LOB.InStr(wrkCLOB, mTag, 1, 1) + Length(mTag) - 1;
myEnd := DBMS_LOB.InStr(wrkCLOB, SubStr(mTag, 1, 1) || '/' || SubStr(mTag, 2));
myLength := DBMS_LOB.GetLength(wrkCLOB);
DBMS_LOB.ERASE(wrkCLOB, myStart, 1);
toErase := myLength - myEnd + 1;
DBMS_LOB.ERASE(wrkCLOB, toErase, myEnd);
wrkCLOB := REPLACE(wrkCLOB, ' ', '');
RETURN(wrkCLOB);
End;
END Get_SOAP_PartCLOB;
您可以这样使用它:
SELECT
Get_SOAP_PartCLOB(BLOB2CLOB(YOUR_BLOB_COL), 'your_tag_in_clob') as "TAG_COL_ALIAS"
FROM
YOUR_TABLE
我使用第二个功能get_soap_partclob()从某些Web服务的SOAP信封响应中获取一些很大的B64数据。这就是为什么返回类型是clob的原因。您可以将返回的值投放到其他方面,也可以对功能进行自己的调整。
实际上问题是类型列表&lt; map&lt; string,object&gt;&gt;您正在访问类型对象的问题[index] [“答案”],因此不能用作列表&lt; map&lt; string,objecct&gt;&gt;
actually questions is a type List<Map<String,Object>> and you are accessing questions[index]["Answers"] which is of type Object so it can not be used as List<Map<String,Objecct>>
type; list&lt; object&gt;&#x27;不是类型的子类型&#x27; list&lt; string,object&gt;&gt;&gt;&#x27;在类型中