假设我有一个类库,其中任何内部类都可以访问以下接口:
interface myInterface
{
string myProperty { get; set; } // notice setter.
}
Run Code Online (Sandbox Code Playgroud)
但是如果有人将这个类库添加到他们的项目中,他们会得到以下接口:
public interface myInterface
{
string myProperty { get; }
}
Run Code Online (Sandbox Code Playgroud)
这样做最有效和最受欢迎的方式是什么?有一个接口实现另一个?
在Javascript中,我可以这样做:
var myVar = returnNull() || new MyObject();
在C#中,我当前正在这样做:
var myVar = returnObjectOrNull();
if (myVar == null) myVar = new MyObject();
Run Code Online (Sandbox Code Playgroud)
有没有办法在C#中缩短它?
我有一个IObservable<String>
.
我试图检测(和处理)短时间连续通知相同字符串的情况.
我想要一个filter/stream/observable,如果相同的字符串在彼此相差250ms内得到通知,它只会通知一次.
不确定从哪里开始.
经过一番搜索,有人建议使用一个int64
纪元.
这一切都很好,但在与我的模型交互时,我想与实际LocalDate
对象进行交互,那么处理这个的策略是什么?
我能想到的两个策略是:
这里的常见做法是什么?
我现在正在看Guice,看起来它的目标是通过模块明确地编程上下文.
现在,我已经习惯使用注释将某些内容放入上下文中,并使用类路径扫描来构建上下文.
现在我可以相当容易地将这个"功能"添加到guice,但我宁愿不重新发明轮子,所以如果有人知道是否有扩展已经这样做 - 请说.
但是,我的问题是,通过这样做,我是否会打破Guice的理想用途和设计...我是否错过了guice如何/为什么要在企业应用程序中使用?
我是 DI 的 Spring,不使用 XML。
基于配置(例如 xml/properties 文件),我希望创建一些特定类型的 bean(确切数量由配置确定)以放入我的上下文中,以便它们可以自动装配到类中。
我会通过以下方式自动装配: @Autowired public MyClass(List<MyType> types)
我正在考虑使用带有@Configuration
.
所以我可以做这样的事情:
@Configuration
public MyConfigurationClass {
@Autowired
public void configure(ApplicationContext context) {
// register stuff here
}
}
Run Code Online (Sandbox Code Playgroud)
......但它“感觉”不对......
实现这一目标的“春天”方式是什么?
编辑:
想象一下这段代码,其中To
和Ty
只是空的类定义。
@Configuration
public class Config {
@Bean
public Collection<Ty> tyList() {
return new ArrayList<Ty>() {{
this.add(new Ty()); // could be any number of Ty instances.
}};
}
@Bean
public To to(Collection<Ty> tylist) {
return new To();
} …
Run Code Online (Sandbox Code Playgroud) 我有以下字符串/path/to/my-jar-1.0.jar
,我正在尝试为其编写 bash 正则表达式以提取my-jar
.
现在我相信以下正则表达式会起作用:([^\/]*?)-\d
但我不知道如何让 bash 运行它。
以下:echo '/path/to/my-jar-1.0.jar' | grep -Po '([^\/]*?)-\d'
捕获my-jar-1
我有一个orchestrator服务,它跟踪正在运行的实例以及它们当前正在处理的请求.如果需要新实例,我会进行REST调用以增加实例并等待新实例连接到orchestrator.这是每个实例的一个请求.
协调器跟踪实例是否正在执行任何操作并知道哪些实例可以停止,但是API中没有任何内容允许我减少停止特定实例的实例数,这正是我想要实现的.
我可以做些什么来操纵平台以确定性地停止我想要停止的实例?也许通过长时间运行HTTP请求到我需要的实例并在不再需要时终止请求,然后进行API调用以减少实例数量?
这里的部分问题是我不知道当前行为的具体情况......
所以我正在编写一个聚合物应用程序。我已经为加载覆盖层编写了一个非聚合物 Web 组件,我可以在加载 Polymer 时以及应用程序 Websocket 连接/重新连接时显示该组件。
下面是一些 CSS 的运用,我必须给出我正在做的事情的指示:
.overlay {
background: #000;
bottom: 0;
height: 100%;
left: 0;
opacity: 0;
pointer-events: none;
position: fixed;
right: 0;
transition: opacity 0.2s;
top: 0;
width: 100%;
z-index: 9999999;
}
.overlay[opened] {
opacity: 0.8;
pointer-events: auto;
}
.loader {
display: none;
}
.overlay[opened] .loader {
display: block;
}
Run Code Online (Sandbox Code Playgroud)
现在,这个覆盖层和基于 CSS 的加载器动画仅在实际加载应用程序时使用,但是如果 WebSocket 断开连接,它也会显示。
我的问题是,出于性能原因,我是否应该从 DOM 中完全删除该元素,然后在需要时将其添加回来?覆盖层在不使用时完全透明并且加载器动画被隐藏的事实是否意味着它们对绘图性能没有影响?
注意:如果可能的话,我希望避免“不要微优化”答案;)
如果我使用 Java 进行编码,我可以在服务器到服务器通信时将 JaxRS 用于我的 REST API,并通过简单的 RPC 设置。
我可以(大致)执行以下操作:
创建接口:
public interface UsersApi {
@Path("/users")
@GET
public List<User> getUsers();
}
Run Code Online (Sandbox Code Playgroud)
创建该接口的具体实现,将其作为路由添加到我的服务器代码中。
对于服务器端客户端,我可以创建一个 JaxRS 客户端,只知道我需要连接的接口/模型和端点:
UsersApi usersApi = JAXRSClientFactory.create("localhost:8080", UsersApi.class)
Run Code Online (Sandbox Code Playgroud)
库代码将为我完成所有接线工作,并返回一个代理UsersApi
,我可以为其调用该getUsers()
方法。
我希望在 Scala 中具有相同的简单性。由于 Scala 是一种 JVM 语言,我可以只使用 JaxRS,但是序列化程序提供程序是基于运行时的,它不适用于 Scala 编译时类型。我可以对我使用的类型以及我如何使用它们做出让步——我不使用 Java,所以我不想在 Scala 中使用。
我可以使用不同的序列化技术,但这意味着我的非服务器端客户端会遇到困难。
最终,我的问题是,我怎样才能获得与上面在 Java for Scala 中相同的 REST API 设置,并且使用最少的样板...是否已经存在一个库 - 还是我必须自己创建一个?