小编Spe*_*pen的帖子

脚本中的递归内联匿名函数

我尝试在Matlab脚本中编写递归内联匿名函数.

这是一个MWE:

funR = @(x) [x(1) funR(x(2:end))];
funR(0:5);
Run Code Online (Sandbox Code Playgroud)

但是这引发了以下异常:

未定义的函数或变量'funR'.

这在函数文件中运行时有效,但在脚本中运行时则无效.这是因为Matlab确实以不同方式阅读了这些内容

我对这个MWE的预期结果是:

[0, 1, 2, 3, 4, 5]
Run Code Online (Sandbox Code Playgroud)

怎么做对了?

目标是将funR定义为内联函数,因此两个或更多行解决方案不是我想要的.如果这个或MWE有任何意义,请忽略,这不是这个问题的重点.

recursion matlab inline anonymous-function

4
推荐指数
1
解决办法
250
查看次数

为什么Java要堆叠Optional?

我通常对 Java 语言的设计非常满意,但今天我遇到了一个奇怪的设计选择。我不知道有哪个平台可以建议对版本 9 或 10 的 Java 语言进行更改,因此我在这里写下这个问题。


使用Options,如果值为 ,您可以更好地控制行为null

今天我将流中的值映射到Optional. 我真的很惊讶,这findFirst给了我一个Optional<Optional<T>>而不是仅仅Optional<T>.

拥有的意义在哪里Optional<Optional<T>>

对于 Java 9 和 Streams,这个问题可以解决,.flatMap(Optional::stream)但这只是一个解决方法和样板代码。

如果可选项通常不会堆叠并且总是平放,那不是更好吗?

Optional<Optional<T>> => Optional<T>
Optional.of(Optional.of("")) => Optional.of("")
Run Code Online (Sandbox Code Playgroud)

进一步解释:

使用可选值时,您不关心子可选值是否为 null 或者实际对象是否为null。它总是会归结为Optional.empty()

String s = null;
Optional<String> opt = null;
Optional.of(s) => Optional.empty()
Optional.of(opt) => Optional.empty()
Run Code Online (Sandbox Code Playgroud)

此外,如果您正在使用选项,您只对对象感兴趣。因此,如果您尝试获取对象,则始终必须双重获取并检查可选内容。

if(optionalOfOptional.isPresent()) {
    optional = optionalOfOptional.get();
    if(optional.isPresent()) {
        objectOfInterest = optional.get();
    }
}
Run Code Online (Sandbox Code Playgroud)

我什至认为这是错误的来源,因为如果您以对象存在为条件,则始终需要检查这两个选项。

if(optionalOfOptional.isPresent() && optionalOfOptional.get().isPresent()) { …
Run Code Online (Sandbox Code Playgroud)

java language-design option-type

4
推荐指数
1
解决办法
297
查看次数

如何转换spring-boot请求参数

目前,请求方法接收一个编码令牌作为参数(该令牌是一个String,但不是 JSON 或类似的东西)。然后该令牌被解码为数据类。

@GetMapping(value = "/api/xyz")
public ResponseEntity<XYZ> xyz(@NotBlank String token) {
    Data data = Token.parse(token);
    ...
}
Run Code Online (Sandbox Code Playgroud)

是否可以编写类似于@RequestBody将参数转换为其他内容的注释?

该请求应该看起来像这样:

@GetMapping(value = "/api/xyz")
public ResponseEntity<XYZ> xyz(@TokenParser Data data) {
    ...
}
Run Code Online (Sandbox Code Playgroud)

token该类/注释应包含将( )转换为我的数据类所需的代码String。请求方法应该仅将转换后的数据类作为参数。

java mapping request spring-boot

4
推荐指数
1
解决办法
7442
查看次数

对除第 n 个项目之外的所有项目进行切片

在张量流中,可以使用切片符号选择每第 n 个项目[::n]

但如何反其道而行之呢?我想选择除第 n 个之外的所有项目。

例如:

a = [1, 2, 3, 4, 5, 6, 7, 8]
Run Code Online (Sandbox Code Playgroud)

a[2::3]会导致[3, 6]

现在我想要相反的:[1, 2, 4, 5, 7, 8]

上面的数组只是一个例子。解决方案应该适用于张量流中尺寸[批量、宽度、高度、通道]的更大矩阵。选择仅在通道上完成。我的矩阵还包含非唯一的实值。我也无法将其重塑为二维以下 ( [batch, channels])

python multidimensional-array tensorflow tensor tensor-indexing

4
推荐指数
1
解决办法
2055
查看次数

如何解决来自pyright的“类型部分未知”警告?

我正在通过 pyright 使用严格的类型检查。

当我有一个返回 pytorch 的方法时,DataLoaderpyright 会抱怨我的类型定义:

声明的返回类型“DataLoader[Unknown]”部分未知 Pyright (reportUnknownVariableType)

看一下 pytorch 的类型存根DataLoader(减少到重要部分):

class DataLoader(Generic[T_co]):
    dataset: Dataset[T_co]

    @overload
    def __init__(self, dataset: Dataset[T_co], ...
Run Code Online (Sandbox Code Playgroud)

据我所看到的,通用型T_coDataLoader应该由定义__init__数据集参数。

Pyright 还抱怨我的Dataset类型定义:

参数“数据集”的类型部分未知参数类型为“数据集[未知]”Pyright (reportUnknownParameterType)

看一下Dataset类型存根:

class Dataset(Generic[T_co]):
    def __getitem__(self, index: int) -> T_co: ...
Run Code Online (Sandbox Code Playgroud)

向我表明该类型应该由__getitem__.

我的数据集的类型签名__getitem__如下所示:

def __getitem__(self, index: int) -> Tuple[Tensor, Tensor]:
Run Code Online (Sandbox Code Playgroud)

基于此,我希望Dataset并被DataLoader推断为Dataset[Tuple[Tensor, Tensor]]DataLoader[Tuple[Tensor, Tensor]]但事实并非如此。

我的猜测是 pyright 无法静态推断这里的类型。

我以为我可以像这样定义我自己的类型签名: …

python static-typing typing python-3.x pyright

4
推荐指数
1
解决办法
1463
查看次数

如何将PostgreSQL DB用作XMLA数据源?

基础:

  • 具有正常和报告数据的PostgreSQL数据库
  • 这里下载蒙德里安拉链
  • 我有一个客户端透视网格组件(DevExtreme Web)

据我所知,到目前为止,我必须使用OLAP服务器作为MDX查询和SQL数据库之间的连接器,以提供XMLA作为数据源.因此我想使用Mondrian OLAP服务器.

题:

现在我需要启动Mondrian OLAP服务器,将其连接到PostgreSQL数据库并提供OLAP架构.

  1. 如何启动Mondrian OLAP服务器?
  2. 如何将它连接到PostgreSQL数据库?
  3. 如何为mondrian服务器提供架构?
  4. 最后,如何连接到蒙德里安服务器?

我找不到任何一步一步的指南或任何有用的蒙德里安文件.这对我来说都是一片大云.

postgresql rolap xmla mondrian

3
推荐指数
1
解决办法
1332
查看次数

使用Jackson从String反序列化LocalDateTime

我试图反序列化StringLocalDateTime杰克逊,但它不工作。

我有一个带有LocalDateTime字段的数据类:

@Data
public class Registration {
    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd hh:mm:ss")
    private LocalDateTime timestamp;
}
Run Code Online (Sandbox Code Playgroud)

我添加了特殊的Jackson数据类型模块:

compile("com.fasterxml.jackson.datatype:jackson-datatype-jsr310")
Run Code Online (Sandbox Code Playgroud)

序列化在以下情况下可以正常工作:

new ObjectMapper().registerModule(new JavaTimeModule()).writeValueAsString(registration);
Run Code Online (Sandbox Code Playgroud)

结果字符串:

{"timestamp":"2018-09-03 10:09:35"}
Run Code Online (Sandbox Code Playgroud)

但是反序列化不适用于:

new ObjectMapper().registerModule(new JavaTimeModule()).readValue(json.traverse(), Registration.class)
Run Code Online (Sandbox Code Playgroud)

作为错误我得到:

Cannot deserialize value of type `java.time.LocalDateTime` from String "2018-09-03 10:09:35": 
    Failed to deserialize java.time.LocalDateTime: 
        (java.time.format.DateTimeParseException) Text '2018-09-03 10:09:35' could not be parsed: 
            Unable to obtain LocalDateTime from TemporalAccessor: 
                {MinuteOfHour=9, NanoOfSecond=0, SecondOfMinute=35, MicroOfSecond=0, MilliOfSecond=0, HourOfAmPm=10},
                ISO resolved to 2018-09-03 of type java.time.format.Parsed
Run Code Online (Sandbox Code Playgroud)

我想念什么?我对序列化有效,但反序列化无效却感到困惑。


MWE …

java json jackson

2
推荐指数
2
解决办法
3765
查看次数

`git lfs track` 的作用不仅仅是写入 `.gitattributes` 吗?

根据我的理解,.gitattributes.gitignore. 如果我在 中定义了一个过滤器.gitattributes,这个过滤器就会生效并且文件将被传输到 LFS。

在每个 GIT LFS 相关文档(官方文档、stackoverflow 答案等)中,建议运行git lfs track.

难道git lfs track做任何事情比过滤写.gitattributes

git git-lfs

2
推荐指数
1
解决办法
997
查看次数

计算3点(x,y)的曲率

我有一个二维欧几里德空间.给出了三点.

例如(p2是中间点):

Point2D p1 = new Point2D.Double(177, 289);
Point2D p2 = new Point2D.Double(178, 290);
Point2D p3 = new Point2D.Double(178, 291);
Run Code Online (Sandbox Code Playgroud)

现在我想计算这三个点的曲率.

double curvature = calculateCurvature(p1, p2, p3);
Run Code Online (Sandbox Code Playgroud)

这该怎么做?我有一个现有的方法(没有java外部库)?

java curve point

1
推荐指数
2
解决办法
5411
查看次数

Calendar.getTime().getYear()返回0113而不是2013

我正在做一个小游戏.当游戏第一次启动时,我在SharedPreferences中以秒为单位保存自1970年1月1日以来的时间.

现在我想以这种形式在屏幕上显示这个日期:DD.MM.YYYYY

我使用了日历功能,但它返回02.04.0113所以,缺少1900年.

这是我的代码:

private void initBornTXT() {
    SharedPreferences pref = getSharedPreferences("LIFE", 0);
    long born = pref.getLong("BIRTHDAY", 0);
    Calendar c = Calendar.getInstance();

    c.setTimeInMillis(0);

    c.add(Calendar.SECOND, (int)born);
    int year = c.getTime().getYear();
    int month = c.getTime().getMonth();
    int day = c.getTime().getDay();
    String string_born = String.format("%02d.%02d.%04d", day, month, year);
    TextView born_txt = (TextView)findViewById(R.id.textViewBorn);
    born_txt.setText(string_born);
}
Run Code Online (Sandbox Code Playgroud)

怎么可能错了?

java android calendar

0
推荐指数
1
解决办法
1771
查看次数

平面地图列表不会丢失映射?

我有一个现有的dict,它将单个值映射到列表.我想反转这个字典并从原始键上的每个列表条目映射.列表条目是唯一的.

鉴于:

dict { 1: ['a', 'b'], 2: ['c'] }
Run Code Online (Sandbox Code Playgroud)

结果:

dict { 'a' : 1, 'b' : 1, 'c' : 2 }
Run Code Online (Sandbox Code Playgroud)

如何才能做到这一点?

python dictionary flatten

0
推荐指数
1
解决办法
69
查看次数