小编bvd*_*vdb的帖子

openapi 工具生成器与 swagger 代码生成器

我迷失在依赖项和工具中:我以前使用以下工具为我的 swagger webservices 生成代码。

招摇-codegen-cli

然后我注意到了以下工具,并认为这是继任者:

openapi 工具生成器

但是生成的代码使用了不同的注释并且看起来更旧。

有人能告诉我,这两个工具是否相互关联,哪个是最新版本?

swagger swagger-codegen openapi-generator

22
推荐指数
3
解决办法
8250
查看次数

大写与标题之间的区别

uppercase和之间的区别是什么titlecase. 坦率地说,我以前从未听说titlecase过.

在java中,两者都有单独的方法:

  • Character.isTitleCase(char)
  • Character.isUpperCase(char)

有些网站将其定义如下:

TitleCase:匹配将大写字母与小写字母组合在一起的字符,例如Nj和Dz

但必须有更多:该isTitleCase(char)方法只接受1个字符.所以 - 如果是这种情况 - 那么这个方法至少需要2个字符.

java title-case unicode

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

Class.forName()缓存

在我的一个应用程序中,我使用以下内容:

public void calculate (String className)
{
  ... 
  Class clazz = Class.forName(className);
  ...
}
Run Code Online (Sandbox Code Playgroud)

该函数被调用几次/秒.大约有10个可能的类名.虽然我确实意识到这个函数中有一些内部缓存,但我认为这个缓存只能在本机级别上使用.

出于这个原因,我开始怀疑是否应该添加自己的缓存.

private static Map<String,Class> classMap;

public void calculate (String className)
{
  ... 
  Class clazz = classMap.get(className);
  if (clazz == null) 
  {
      clazz = Class.forName(className);
      if (classMap == null) classMap = new HashMap<String, Class>(40);
      classMap.put(className, clazz);
  }
  ...
}
Run Code Online (Sandbox Code Playgroud)

这会是性能提升还是真的没有区别?

先感谢您

java reflection performance

15
推荐指数
3
解决办法
5598
查看次数

JavaFX - 数据模型类中的Observable Collections

下面是一段简单的JavaFX代码,用来说明我的问题.

List list1 = new ArrayList();
list1.add("foo");
...

someListView = new ListView<>();
ObservableList someObservableList = FXCollections.observableList(list1);
someListView.setItems(someObservableList);
...

someObservableList.add("bar");
Run Code Online (Sandbox Code Playgroud)

如果我理解正确,在调用该setItems方法后,不仅会在ListViewGui组件中显示列表的内容,而且如果ObservableList之后ListView将项目添加到实例中,将自动刷新并自动显示新添加的项目,无需调用任何附加addrefresh方法.

到现在为止还挺好.但是如果我在原始列表中添加一些内容(即list1).这些更改不会自动传播.它很有道理,但有时候很不方便.

当然,在传统的Java应用程序中,应用程序的模型不包含ObservableCollection实例.因此,无论何时向模型添加内容,您都必须更新ObservableLists从原始列表派生的实例.显然这是不可避免的,对吧?

这让我想知道,这是一个聪明的想法修改Collection类型事件(例如List,Collection,Set,Iterable,...)在模型类,并通过他们的替换他们ObservableCollection从现在开始的选择吗?

到目前为止,我总是认为这些ObservableCollection类只应该在应用程序的Gui层中使用,但在任何地方使用它们似乎都很方便.

java collections model-view-controller javafx javafx-2

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

链接lambda函数

当Java方法接受a时Function<? super T, ? extends U>,可以使用如下语法提供方法引用:MyClass::myMethod.

但是,我想知道是否有一种链接多个方法调用的方法.这是一个说明案例的例子.

// on a specific object, without lambda
myString.trim().toUpperCase()
Run Code Online (Sandbox Code Playgroud)

我想知道是否有语法将其转换为lambda表达式.我希望有类似的东西:

// something like: (which doesn't work)
String::trim::toUpperCase
Run Code Online (Sandbox Code Playgroud)

或者,是否有一个实用程序类来合并函数?

// example: (which does not exist)
FunctionUtil.chain(String::trim, String::toUpperCase);
Run Code Online (Sandbox Code Playgroud)

java lambda java-8 java-stream

12
推荐指数
1
解决办法
1万
查看次数

TemplateRef需要类型参数

组件HTML:

<ng-template #content/> </ng-template>
Run Code Online (Sandbox Code Playgroud)

组件TS:

@ViewChild('content')
public content: TemplateRef;
Run Code Online (Sandbox Code Playgroud)

Visual Studio消息:

[ts] Generic type 'TemplateRef<C>' requires 1 type argument(s)
Run Code Online (Sandbox Code Playgroud)

我应该做到TemplateRef<any>吗?代码示例似乎永远不会指定泛型. 这是新的吗?

angular

10
推荐指数
4
解决办法
2446
查看次数

JMS QueueConnectionFactory与ConnectionFactory

我的问题是关于使用以下两家工厂:

  • 连接工厂
  • 的QueueConnectionFactory

目前我只是使用a ConnectionFactory初始化所有内容:

Connection conn = factory.createConnection(user, pw);
Session session = conn.createSession()
Destination dest = session.createQueue('xyz')
...
Run Code Online (Sandbox Code Playgroud)

如果我理解正确,QueueConnectionFactory工作方式几乎相同.这是完全一样的吗?

我特别想知道因为我正在使用包含两个对象的JNDI上下文.所以,我不确定我应该选择哪一个.

java jndi jms mq

5
推荐指数
1
解决办法
7779
查看次数

休眠,检查对象是否存在和空值

我正在使用 hibernate 将记录(即对象)保存到数据库中。在保存我的对象之前,我想验证数据库是否已经包含这个对象。(主键只是一个增量键,不能用于此目的。)

我正在运行创建一个 HQL 语句来检查具有这些属性的记录的存在(即column1-3)。

结果查询应如下所示:

from myTable where column1 is null and column2 = :column2 and column3 = :column3'
Run Code Online (Sandbox Code Playgroud)

因为有时列可以包含空值,我检查属性的值,如果它是空值,那么我在这个查询中使用 ais而不是 a =(例如column1 is :column1在上面的语句中)。

因为我开始意识到我正在做很多工作来实现一些相对重要的事情,我开始怀疑我是否在正确的轨道上。有没有更简单的方法来检查对象的存在?

编辑:我稍微改写我的问题后,我意识到, column1 is :column1当不工作:column1参数设置为null。显然,似乎按预期工作的唯一语法是column1 is null. 因此,似乎您在搜索null值时不能使用通配符。但这并没有改变我问题的主要方面:我真的应该在运行时检查所有这些东西吗?

java hibernate h2

5
推荐指数
1
解决办法
5259
查看次数

ScriptEngine清除并处置

我的应用程序使用a ScriptEngine为我的最终用户提供插件功能.

ScriptEngineManager engineManager = new ScriptEngineManager();
ScriptEngine engine = engineManager.getEngineByName("nashorn");
Run Code Online (Sandbox Code Playgroud)

每当用户对其脚本进行更改时,应用程序都会通过新实例替换引擎实例.

String newScript = ...;
engine = engineManager.getEngineByName("nashorn");
engine.eval(newScript);
Run Code Online (Sandbox Code Playgroud)

两个密切相关的问题:

  • 我应该尝试重用引擎并对它们执行某种操作clear()吗?

  • 如果我只是用新实例替换我的引擎,我应该以某种方式处理前一个实例,以避免内存泄漏吗?(例如,我可以想象用户可以设法创建一个启动线程的脚本.)

问题是,我找不到任何看起来像a clear()或a的方法dispose().这是否意味着我目前的做法是正确的?

java scriptengine nashorn

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

同步链表 - peek

ALinkedList方便的peek, pop, ... 方法。

不幸的是,我需要一个线程安全的LinkedList. 所以,我的第一个想法是将其包装如下:

List<Object> list = Collections.synchronizedList(new LinkedList<>());
Run Code Online (Sandbox Code Playgroud)

但是,由于该List接口不包含peekpop方法。这当然行不通。

或者,我可以synchronized(list)在整个代码中使用块。这是要走的路吗?

我忽略了任何解决方案吗?


编辑:

人们使用LinkedList. 我看到有些人正在推荐其他系列。因此,这里遵循简短的要求,这导致我决定使用LinkedList.

更多背景信息:

  • 我使用 LinkedList 因为项目需要排序。
  • 应以非阻塞方式添加项目。
  • 项目添加在后面;从前面移除。
  • 在删除第一项之前,首先需要对其进行peek编辑和验证。如果验证失败,则该项目需要保留在列表中。
  • 仅当验证成功完成时,第一项才会被删除。
  • 队列需要有最大大小(以避免内存问题)。

java linked-list thread-safety peek

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