小编Mar*_*eel的帖子

收集Set字段的所有值

我有一个集合,其字段类型为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 lambda java-8

6
推荐指数
1
解决办法
122
查看次数

如何防止ObjectMapper转换转义的unicode?

我正在 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

java json jackson objectmapper

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

当我们使用new运算符创建对象时,它是否使用实际的.class文件在java中创建对象

我对一个主题感到困惑,无法在网上找到它.据我了解,当程序启动时,类加载器加载.class文件并将它们作为具有该类型的对象存储在内存中Class.

我的问题是我们何时使用:

Test test = new Test();
Run Code Online (Sandbox Code Playgroud)

是使用.class文件创建新对象,还是使用Class内存中已有的对象?

java class classloader new-operator

6
推荐指数
1
解决办法
116
查看次数

如何将数字转换为 int8、int16、int32、uint8、uint16 或 uint32

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)

javascript c# typescript

6
推荐指数
1
解决办法
6671
查看次数

Java中的连接池和线程池设置

使用 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 multithreading connection-pooling jdbc threadpool

6
推荐指数
1
解决办法
6502
查看次数

在箭头 (-&gt;) 的帮助下切换表达式,现在可以产生/返回值

Java 14 中扩展的 switch 表达式,除了程序员/审阅者的视觉清晰度之外,switch 表达式的需求并不明确。是吗

  1. 与旧的 switch 表达式不同的字节码实现?
  2. 与以前的版本相比,执行方面有任何性能改进吗?

参考: 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)

java performance switch-statement jvm-bytecode java-14

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

Maven Surefire 插件与 Jacoco、JMockit 和 JDK14 的问题

我尝试将我的项目从 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)

jmockit maven jacoco java-14

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

使用 JavaScript 将多个标签中的特定标签的文本复制到剪贴板

我想复制特定标签的输入,而不必使用 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)

html javascript

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

以编程方式修改 JNDI 连接池

我在项目中使用 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)

java mysql tomcat connection-pooling jdbc

6
推荐指数
1
解决办法
632
查看次数

创建与特定所有者/组的链接

我正在尝试与特定所有者/组创建一些符号链接,但它始终是使用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)

笔记 :

  • 所有者 1 和组 1 存在。
  • Ansible 日志中没有错误

ansible

6
推荐指数
1
解决办法
1973
查看次数