我迷失在依赖项和工具中:我以前使用以下工具为我的 swagger webservices 生成代码。
招摇-codegen-cli
然后我注意到了以下工具,并认为这是继任者:
openapi 工具生成器
但是生成的代码使用了不同的注释并且看起来更旧。
有人能告诉我,这两个工具是否相互关联,哪个是最新版本?
uppercase和之间的区别是什么titlecase.
坦率地说,我以前从未听说titlecase过.
在java中,两者都有单独的方法:
Character.isTitleCase(char)Character.isUpperCase(char)有些网站将其定义如下:
TitleCase:匹配将大写字母与小写字母组合在一起的字符,例如Nj和Dz
但必须有更多:该isTitleCase(char)方法只接受1个字符.所以 - 如果是这种情况 - 那么这个方法至少需要2个字符.
在我的一个应用程序中,我使用以下内容:
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)
这会是性能提升还是真的没有区别?
先感谢您
下面是一段简单的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将项目添加到实例中,将自动刷新并自动显示新添加的项目,无需调用任何附加add或refresh方法.
到现在为止还挺好.但是如果我在原始列表中添加一些内容(即list1).这些更改不会自动传播.它很有道理,但有时候很不方便.
当然,在传统的Java应用程序中,应用程序的模型不包含ObservableCollection实例.因此,无论何时向模型添加内容,您都必须更新ObservableLists从原始列表派生的实例.显然这是不可避免的,对吧?
这让我想知道,这是一个聪明的想法修改Collection类型事件(例如List,Collection,Set,Iterable,...)在模型类,并通过他们的替换他们ObservableCollection从现在开始的选择吗?
到目前为止,我总是认为这些ObservableCollection类只应该在应用程序的Gui层中使用,但在任何地方使用它们似乎都很方便.
当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) 组件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>吗?代码示例似乎永远不会指定泛型.
这是新的吗?
我的问题是关于使用以下两家工厂:
目前我只是使用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上下文.所以,我不确定我应该选择哪一个.
我正在使用 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值时不能使用通配符。但这并没有改变我问题的主要方面:我真的应该在运行时检查所有这些东西吗?
我的应用程序使用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().这是否意味着我目前的做法是正确的?
ALinkedList有方便的peek, pop, ... 方法。
不幸的是,我需要一个线程安全的LinkedList. 所以,我的第一个想法是将其包装如下:
List<Object> list = Collections.synchronizedList(new LinkedList<>());
Run Code Online (Sandbox Code Playgroud)
但是,由于该List接口不包含peek或pop方法。这当然行不通。
或者,我可以synchronized(list)在整个代码中使用块。这是要走的路吗?
我忽略了任何解决方案吗?
编辑:
人们使用LinkedList. 我看到有些人正在推荐其他系列。因此,这里遵循简短的要求,这导致我决定使用LinkedList.
更多背景信息:
peek编辑和验证。如果验证失败,则该项目需要保留在列表中。java ×8
angular ×1
collections ×1
h2 ×1
hibernate ×1
java-8 ×1
java-stream ×1
javafx ×1
javafx-2 ×1
jms ×1
jndi ×1
lambda ×1
linked-list ×1
mq ×1
nashorn ×1
peek ×1
performance ×1
reflection ×1
scriptengine ×1
swagger ×1
title-case ×1
unicode ×1