我有一个集合,其字段类型为Set,带有一些值.我需要创建一个收集所有这些值的新集.
我想知道使用lambda表达式是否可行.
以下是代码行:
Set<String> teacherId = batches.stream()
.filter(b -> !CollectionUtils.isEmpty(b.getTeacherIds()))
.map(b -> b.getTeacherIds())
.collect(Collectors.toSet());
Run Code Online (Sandbox Code Playgroud)
问题是post map操作,它包含一组字符串.所以收集操作返回一个,Set<Set<String>>
但我希望将所有值聚合到一个集合.
我正在 Java 中使用 Jackson 2.4 来做一些 JSON 跑腿工作。我使用 Apache HttpGet 调用远程服务器,使用 Jackson 将结果反序列化为 POJO,操作这些结果,然后使用 Jackson 对其进行序列化,以使用 HttpPost 推送回远程服务器。
\n\n我发现的问题是 Jackson 正在将 unicode 文字转换为 unicode 字符,由于两端的编码问题,我不需要它这样做。例如,我可能在 JSON 中包含以下内容:
\n\n"field1": "\\u00a2"\n
Run Code Online (Sandbox Code Playgroud)\n\n但是 Jackson 在反序列化时将“\\u00a2”转换为“\xc2\xa2”,这会导致远程服务器出现问题。它必须被维护为转义的 unicode。如果我使用 Apache EntityUtils(指定 UTF-8)之类的东西,或者甚至从 Web 浏览器进行调用来获取数据,则转义的 unicode 会被保留,因此我知道它是从服务器正确传入的。如果我让 Jackson 在响应上使用来自实体的输入流,它会自动进行转换。
\n\n我尝试使用显式设置为 UTF-8 的 JsonGenerator 来写入 HttpPost。它不起作用,远程服务器仍然拒绝它。我已经研究了 ObjectMapper 和 JsonParser 的配置选项,但我没有看到任何可以覆盖此行为的内容。当然,转义非 ASCII 码,但这不是我需要做的。也许我遗漏了一些明显的东西,但我无法让 Jackson 反序列化这个字符串而不替换转义的 unicode。
\n\n编辑:好吧,我的错,唯一有问题的文字有 3 或 5 个前导斜杠,而不仅仅是一个。这有点奇怪,但 Java 似乎是在反序列化过程中默认解压它的东西,即使从服务器返回的原始文本保留了它。仍然不确定如何让 Java 在不检查大量文本的情况下保留它。
\n我对一个主题感到困惑,无法在网上找到它.据我了解,当程序启动时,类加载器加载.class
文件并将它们作为具有该类型的对象存储在内存中Class
.
我的问题是我们何时使用:
Test test = new Test();
Run Code Online (Sandbox Code Playgroud)
是使用.class
文件创建新对象,还是使用Class
内存中已有的对象?
TypeScript 中的数字变量是浮点型。但是,有时需要将变量限制为类似于其他语言中可用的特定大小或类型。例如,int8、int16、int32、uint8、uint16 和 uint32 类型。我实现的方法将数字转换为无符号整数,并对所需的位执行按位“AND”。根据所需类型是否有符号,它将执行按位“或”。如果有错误,更好的方法,或者更高效的方法,欢迎留言。
export class CONVERT
{
static NumberToUint32(x:number):number
{
return x >>> 0;
}
static NumberToUint16(x:number):number
{
return this.NumberToUint32(x) & 0xFFFF;
}
static NumberToUint8(x:number):number
{
return this.NumberToUint32(x) & 0xFF;
}
static NumberToInt32(x:number): number
{
return x >> 0;
}
static NumberToInt16(x:number): number
{
let r: number = 0;
let n = this.NumberToUint16(x);
if(n & 0x8000)
r = 0xFFFF8000|(n&0x7FFF);
else
r = n;
return(r);
}
static NumberToInt8(x:number): number
{
let r: number = 0;
let n = this.NumberToUint8(x); …
Run Code Online (Sandbox Code Playgroud)使用 Hikari 池的 Spring 应用程序。
现在对于来自客户端的单个请求,我必须查询 10 个表(需要业务),然后将结果组合在一起。并且查询每张表可能需要 50ms 到 200ms。为了加快响应时间,我FixedThreadPool
在我的服务中创建了一个查询不同线程中的每个表(伪代码):
class MyService{
final int THREAD_POOL_SIZE = 20;
final int CONNECTION_POOL_SIZE = 10;
final ExecutorService pool = Executors.newFixedThreadPool(THREAD_POOL_SIZE);
protected DataSource ds;
MyClass(){
Class.forName(getJdbcDriverName());
HikariConfig config = new HikariConfig();
config.setMaximumPoolSize(CONNECTION_POOL_SIZE);
ds = new HikariDataSource(config);
}
public Items doQuery(){
String[] tables=["a","b"......]; //10+ tables
Items result=new Items();
CompletionService<Items> executorService = new ExecutorCompletionService<Items>(pool);
for (String tb : tables) {
Callable<Item> c = () -> {
Items items = ds.getConnection().query(tb); ......
return Items; …
Run Code Online (Sandbox Code Playgroud) Java 14 中扩展的 switch 表达式,除了程序员/审阅者的视觉清晰度之外,switch 表达式的需求并不明确。是吗
参考: https: //www.techgeeknext.com/java/java14-features
JDK 14版本:
int numLetters = switch (day) {
case MONDAY, FRIDAY, SUNDAY -> 6;
case TUESDAY -> 7;
case THURSDAY, SATURDAY -> 8;
case WEDNESDAY -> 9;
};
Run Code Online (Sandbox Code Playgroud)
JDK 14 字节代码
0: iconst_1
1: istore_1
2: iload_1
3: tableswitch { // 1 to 7
1: 44
2: 44
3: 44
4: 49
5: 54
6: 54
7: 59
default: 64
}
44: bipush 6
46: goto 65 …
Run Code Online (Sandbox Code Playgroud) 我尝试将我的项目从 JDK 11 升级到 JDK 14,但在将 java 版本设置为 14 后运行测试失败。由于我将 jacoco 与 JMockit 结合使用,我配置了我的构建如下(编辑:JaCoCo 版本是 0.8.3 / 0.8.5,JMockit 版本 1.49):
<build>
<plugins>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${version.jacoco}</version>
<executions>
<execution>
<id>coverage-initialize</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>coverage-report</id>
<phase>post-integration-test</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${version.surefire-plugin}</version>
<configuration>
<argLine>
@{argLine} -javaagent:"${settings.localRepository}"/org/jmockit/jmockit/${version.jmockit}/jmockit-${version.jmockit}.jar
</argLine>
</configuration>
</plugin>
...
Run Code Online (Sandbox Code Playgroud)
如果我在 Java 版本设置为 11 的情况下运行 Maven,一切正常,但是当我将 Java 版本设置为 14 时,surefire 插件会抛出此错误:
[ERROR] java.lang.instrument.IllegalClassFormatException: Error while instrumenting sun/util/resources/cldr/provider/CLDRLocaleDataMetaInfo.
[ERROR] at org.jacoco.agent.rt.internal_1f1cc91.CoverageTransformer.transform(CoverageTransformer.java:93)
[ERROR] sun.util.locale.provider.LocaleDataMetaInfo: Unable to load sun.util.resources.cldr.provider.CLDRLocaleDataMetaInfo …
Run Code Online (Sandbox Code Playgroud) 我想复制特定标签的输入,而不必使用 JavaScript 将输入字段创建到剪贴板
JavaScript 和 HTML
function copy(input){
}
Run Code Online (Sandbox Code Playgroud)
<p>Text To Copy = hi <button type="button" onclick="copy('hi')">click to copy</button></p>
Run Code Online (Sandbox Code Playgroud)
我在项目中使用 Apache Tomcat JDBC 连接池库并相应地配置了 context.xml 文件。我的应用程序实例需要在多个位置运行,但应用程序上的负载会有所不同,因此我想根据运行时特定实例的客户大小修改 maxActive 大小和其他一些属性。
<Context path="/abc"
docBase="abc"
debug="5"
reloadable="false"
crossContext="true">
<Resource name="jdbc/abc"
auth="Container"
type="javax.sql.DataSource"
factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
driverClassName="xxxxx"
url="xxxxxxx"
username="xxxxx" password="xxxxxx"
maxActive="20"
initialSize="0"
...
/>
</Context>
Run Code Online (Sandbox Code Playgroud) 我正在尝试与特定所有者/组创建一些符号链接,但它始终是使用owner=root 和group=root 创建的。为什么?
这是我的代码:
- name: Get the directories to create symbolic links
find:
paths: /myPath/
register: result
- name: Creation of symbolic links
file:
src: "{{ item.path }}"
dest: /Path_Dest/{{ item.path | basename }}
owner: 'owner1'
group: 'group1'
state: link
with_items: "{{ result.files }}"
Run Code Online (Sandbox Code Playgroud)
笔记 :
java ×6
java-14 ×2
javascript ×2
jdbc ×2
ansible ×1
c# ×1
class ×1
classloader ×1
html ×1
jackson ×1
jacoco ×1
java-8 ×1
jmockit ×1
json ×1
jvm-bytecode ×1
lambda ×1
maven ×1
mysql ×1
new-operator ×1
objectmapper ×1
performance ×1
threadpool ×1
tomcat ×1
typescript ×1