小编Her*_*che的帖子

Logger slf4j使用{}而不是字符串连接格式化的优点

使用{}而不是字符串连接有什么好处吗?

来自slf4j的一个例子

logger.debug("Temperature set to {}. Old temperature was {}.", t, oldT);
Run Code Online (Sandbox Code Playgroud)

代替

logger.debug("Temperature set to"+ t + ". Old temperature was " + oldT);
Run Code Online (Sandbox Code Playgroud)

我认为这是关于速度优化的,因为根据配置文件,可以在运行时避免参数评估(和字符串连接).但是只有两个参数是可能的,那么有时除了字符串连接之外别无选择.需要就此问题提出意见.

optimization logging concatenation string-formatting slf4j

86
推荐指数
3
解决办法
8万
查看次数

在javascript中删除字符串中的空格

我已经阅读了关于javascript trim的这个问题,带有正则表达式的答案.

然后我希望修剪去除Hello和World之间的内部空间.

function myFunction() {
    alert("Hello World ".trim());
}
Run Code Online (Sandbox Code Playgroud)

EDITED

为什么我期待!?

废话!显然修剪不会移除内部空间!只有前导和尾随,这就是修剪工作的方式,那么这是一个非常错误的问题,我的道歉.

html javascript trim

72
推荐指数
5
解决办法
16万
查看次数

如何中断BufferedReader的readLine

我试图在多个线程中逐行读取套接字的输入.如何中断readLine()以便我可以优雅地阻止它阻塞的线程?

编辑(赏金):这可以在不关闭套接字的情况下完成吗?

java multithreading

39
推荐指数
4
解决办法
3万
查看次数

如何区分等待(长时间超时)退出通知或超时?

有这个等待声明:

public final native void wait(long timeout) throws InterruptedException;
Run Code Online (Sandbox Code Playgroud)

它可以通过InterruptedException或超时退出,或者因为在另一个线程中调用Notify/NotifyAll方法,Exception很容易捕获但是...

有什么方法可以知道退出原因是超时还是通知?

编辑:

这是一种可行的方法,(虽然我不喜欢)

          long tBefore=System.currentTimeMillis();
          wait(TIMEOUT);
          if ((System.currentTimeMillis() - tBefore) > TIMEOUT) 
            { 
               //timeout
            }
Run Code Online (Sandbox Code Playgroud)

java multithreading synchronized notify wait

30
推荐指数
4
解决办法
3万
查看次数

如何避免重复代码初始化 hashmap 的 hashmap?

每个客户都有一个 id 和许多带有日期的发票,这些发票按 id 存储为客户的 Hashmap,按日期存储为发票的哈希图:

HashMap<LocalDateTime, Invoice> allInvoices = allInvoicesAllClients.get(id);

if(allInvoices!=null){
    allInvoices.put(date, invoice);      //<---REPEATED CODE
}else{
    allInvoices = new HashMap<>();
    allInvoices.put(date, invoice);      //<---REPEATED CODE
    allInvoicesAllClients.put(id, allInvoices);
}
Run Code Online (Sandbox Code Playgroud)

Java 解决方案似乎是使用getOrDefault

HashMap<LocalDateTime, Invoice> allInvoices = allInvoicesAllClients.getOrDefault(
    id,
    new HashMap<LocalDateTime, Invoice> (){{  put(date, invoice); }}
);
Run Code Online (Sandbox Code Playgroud)

但是如果 get 不为空,我仍然希望 put (date, invoice) 执行,并且仍然需要向“allInvoicesAllClients”添加数据。所以它似乎没有多大帮助。

java hashmap java-8

27
推荐指数
4
解决办法
1589
查看次数

如何从Web浏览器(客户端)建立TCP套接字连接?

我读过WebSockets,但它们似乎不是纯粹的"套接字",因为它们上面有一个应用程序层协议." ws: "

有没有办法从网络浏览器进行纯套接字连接,搞活网页?

这是我在黑暗中的随机刺伤

  • Java提供的Applet套接字(需要安装java)
  • Flash提供的Flash插槽(需要安装闪存)

但是关于HTML5,如果它们不是套接字,为什么它们被称为WebSockets?

websocket协议是如此简单实现,以至于它几乎是"套接字"?

sockets flash ajax applet websocket

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

连接两个客户端套接字

假设Java有两种套接字:

  • 服务器套接字"ServerSocket"
  • 客户端套接字或只是"套接字"

想象一下两个过程的情况:

X =客户
Y =服务器

服务器进程Y:有一个"ServerSocket",即正在侦听TCP端口
客户端进程X:通过"Socket"向Y发送连接请求.

Y:然后该accept()方法返回一个新的客户端类型"Socket",
当它发生时,两个套接字得到"互连",

所以:客户端进程中的套接字,与服务器进程中的套接字相连.
然后:通过套接字X读/写就像通过套接字Y读/写.
现在,两个客户端套接字互连!!

但是......
如果我在同一个进程中创建两个Client套接字,我想让它们"互连"怎么办?

......甚至可能?

假设如何在不使用中间ServerSocket的情况下使两个客户端套接字互连?

我已经通过创建两个Thread来连续读取A和写B来解决它,而另一个用于读取B和写入A ......
但我认为这可能是更好的方式......(那些世界耗能的线程不是必需的使用客户端 - 服务器方法)

任何帮助或建议将不胜感激!谢谢


编辑:

应用示例:"现有服务器应用程序可以转换为客户端应用程序",例如VNC服务器,一个客户端套接字连接到VNC服务器,并创建其他客户端套接字(连接到中间服务器),然后应用程序互连两个客户端导致VNC服务器是客户端应用程序!然后,不需要公共IP.

VNCServer --- MyApp ---> |中间服务器| <---用户

java sockets client serversocket

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

HashSet'add'方法调用何时等于?

我在HashSet比较中做了这个测试而equals 没有被调用

当farAway = false时,我想考虑等于(检查两个点距离的函数)

完全可编译的代码,你可以测试它,并告诉为什么在这个例子中没有调用equals.

public class TestClass{
     static class Posicion
    {
        private int x;
        private int y;

        @Override
        public boolean equals(Object obj) {
            if (obj == null) {
                return false;
            }
            if (getClass() != obj.getClass()) {
                return false;
            }
            final Posicion other = (Posicion) obj;
            if ( farAway(this.x, other.x, this.y, other.y,5)){   
                return false;
            } 
            return true;
        }

        @Override
        public int hashCode() {
            int hash = 7; hash = 59 * hash + this.x; hash = 59 * …
Run Code Online (Sandbox Code Playgroud)

java comparison equals hashset

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

是否有类似C的方式从java中的枚举中获取项目编号?

Perhap这是一个简单的基本问题

有一个枚举

public enum TK{
        ID,GROUP,DATA,FAIL;
        }
Run Code Online (Sandbox Code Playgroud)

我可以获得订单号,例如ID = 0,GROUP = 2,DATA = 3,FAIL = 4?

这是一种方法,但这是一个奇怪而漫长的方式!= S

public enum TK{
        ID(0),GROUP(1),DATA(2),FAIL(3);

        int num;
        TK(int n)
        {
           this.num=n;
        }

        public int get()
        {
           return num;
        }

  };
Run Code Online (Sandbox Code Playgroud)

得到数字所以我写TK.ID.get(),TK.GROUP.get()等...我不喜欢那样

有一个更好的方法?

(C enums,C macros ..我想念你们两个)

谢谢

c java enums constants

8
推荐指数
2
解决办法
1778
查看次数

Petri网绘图和代码生成

是否有任何用于绘制Petri网并从中生成任何源代码的软件?源代码可以是任何已知的编程语言......

稍微不太理想的选择是输出一个文件,其中只有基于文本的文件中的Petri网图形的描述,采用某种开放格式,如XML或任何其他数据语言.然后我可以自己编写代码生成器,但至少我想避免gui/graph开发部分;))

谢谢

automation code-generation metaprogramming petri-net

8
推荐指数
2
解决办法
7194
查看次数