小编GMs*_*soF的帖子

Java IO是阻塞IO吗?

我知道对于一个线程(一个套接字),我不能同时执行read()或write(),或者我可以吗?

但是如果我创建2个线程并且每个线程分别处理read()和write()怎么办?我不知道在低级别视图中,read()和write()是否会获得套接字锁定,因此一次只允许执行一个操作?会吗?

我使用Window作为平台,还想知道Unix机器有什么不同吗?

我问这个问题,因为我很困惑,为什么我们需要非阻塞IO,因为2个线程能够同时让我们read()和write()?

java sockets io networking websocket

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

websocket 双向概念如何工作?

我使用 Java Tomcat 作为 websocket 服务器。

我认为 websocket 和 http 流(我不是指轮询和长轮询)之间的主要区别是 websocket 允许双向通信,这与通常的原始套接字编程类似。(以上是我的理解,可能有错误,欢迎指正。)

我的问题是Web客户端(浏览器)如何继续通过已经打开的websocket发送另一个请求?通常的http请求会将另一个请求视为新的套接字连接,但websocket不会,这就是为什么我很困惑,它是如何实现的?它应该在服务器端还是客户端(浏览器)端处理?

java sockets tomcat websocket

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

javascript模态对话框

我是Javascript的初学者.只是尝试学习模态对话但遇到一些问题,代码如下:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
<html>

<head>
<title>Click here to show the overlay</title>
<style>
#overlay {
     visibility: hidden;
     position: fixed;
     left: 0;
     top: 0;
     width: 100%;
     height: 100%;
     text-align:center;
     z-index: 200;
     background-image:url(maskBG.png);
}

#overlay div {
     width:300px;
     margin: 100px auto;
     background-color: #fff;
     border:1px solid #000;
     padding:15px;
     text-align:center;
}
</style>

<script>
function overlay(){

el = document.getElementById("overlay");
el.style.visibility = (el.style.visibility == "visible") ? "hidden" : "visible";

}
</script>

</head>

<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">

<p align="center"><a href='#' onclick='overlay()'>Click …
Run Code Online (Sandbox Code Playgroud)

html javascript css modal-dialog

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

函数中的Java最终变量

void function_ab(){

if ( a == true){
    final Class_A obj = new Class_A("a"); //This is an example scenario, so I couldn't create a setter to pass in "a" instead of passing it into Contructor.
}else{
    final Class_A obj = new Class_A("B");
}

// the code below will access obj object in Inner class.

}
Run Code Online (Sandbox Code Playgroud)

我需要在声明后访问obj,但由于它们是在'if'块中声明的,因此我将无法访问它.我也做不到这样的事情:

void function_ab(){

final Class_A obj = null;
if ( a == true){
    obj = new Class_A("a"); //final variable cannot be changed.
}else{
     obj = new …
Run Code Online (Sandbox Code Playgroud)

java final java-ee

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

如何强制浏览器http请求中包含“主机”标头

我不明白,host输入网址时如何强制浏览器包含标头?根据我的观察,访问某些URL时host将包含标头,但不包含标头。

如下访问stackoverflow的示例:

在此处输入图片说明

我不明白,我们如何控制其行为以包含host名称?如果我有多个使用相同IP的子域,则无法区分我要访问哪个应用。

browser https http httprequest http-headers

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

Reactjs create-react-app src 文件夹中缺少index.html

我正在使用create-react-app命令创建一个空应用程序,我在src文件夹中得到了这些文件:

App.css
App.js
App.test.js
index.css
index.js
logo.svg
serviceWorker.js
setupTests.js
Run Code Online (Sandbox Code Playgroud)

在我通过 进行构建后npm run buildindex.html会在文件夹中生成build

我在文件夹中手动创建了一个src,但构建不接受它。

内容index.js是:

ReactDOM.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>,
  document.getElementById('root')
);
Run Code Online (Sandbox Code Playgroud)

root根本没有任何元素。

我需要在里面添加一些<script>标签index.html以包含一些第三方脚本(无法通过nodejs安装),我可以在哪里添加它们,因为它不存在于src文件夹中?

javascript reactjs

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

Java ProgressMonitor无法正常工作

我的代码如下不起作用,谁能告诉我为什么?还请更正我的代码,我是Java的新手.除此之外,我正在寻找"加载面板组件",类似ProgressMonitor但可能更具吸引力,并且动画更好.如果有人以前使用过这类东西,请建议我.

public class Main extends JFrame {

    private JPanel contentPane;

    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Main frame = new Main();
                    frame.setVisible(true);

                    ProgressMonitor pm = new ProgressMonitor(frame, "Loading...", 
                            "waiting...",
                            0, 100000);

                    for (int i = 0 ; i < 100000 ; i ++){

                        pm.setProgress(i);
                        pm.setNote("Testing");
                        System.out.println(i);

                        Thread.sleep(1000);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public Main() {
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, …
Run Code Online (Sandbox Code Playgroud)

java swing swingworker jprogressbar progressmonitor

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

使用错误密钥进行Java AES解密

我已经编写了一个简单的Java AES加密和解密,如下所示(用于学习目的):

//Encryption 
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");  
SecretKeySpec secretKey = new SecretKeySpec(key, "AES");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
 String encryptedString = Base64.encodeBase64String(cipher.doFinal(strToEncrypt.getBytes()));
return encryptedString;

//Decryption
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5PADDING");
SecretKeySpec secretKey = new SecretKeySpec(key, "AES");
cipher.init(Cipher.DECRYPT_MODE, secretKey);
String decryptedString = new String(cipher.doFinal(Base64.decodeBase64(strToDecrypt)));
return decryptedString;
Run Code Online (Sandbox Code Playgroud)

密码密钥是一个可变长度的字符串,我MD5散列该字符串以获得128位密钥.

我可以使用相同的密钥成功加密和解密数据.但如果我用错误的密钥解密数据,我得到以下例外:

javax.crypto.BadPaddingException: Given final block not properly padded
Run Code Online (Sandbox Code Playgroud)

实际上我所期望的是,错误的密钥解密产生了错误的字节,但没有像上面那样抛出异常,因为如果产生错误的字节,黑客可能不知道解密是否正确.如果像上面那样抛出异常,蛮力的输出将变得更容易确定.

那么,我的代码会发生什么?

编辑:

我想我在这里弄错了.黑客可能不会使用我的程序来解密.因此,对于AES,如果一个人解密失败,他会知道解密失败但不是因为我认为从解密中获取错误的字节?这很糟糕...

java encryption aes badpaddingexception

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

Spring Transactional没有回滚

 @Transactional
 public void setSomething(String name) { ... }
Run Code Online (Sandbox Code Playgroud)

很抱歉问这个非常基本的问题,Spring事务注释是如此强大但却难以理解.根据上面的代码,我没有rollbackFor控制权,这意味着,如果有异常,这个事务上下文将不会回滚.但是根据我以旧方式覆盖事务块的经验,如果没有异常回滚,commit将被跳过并导致(Oracle)数据库的表被锁定(挂起,其他用户无法提交他们的SQL).Spring会不会使用相同的问题rollbackFor吗?

java spring transactional spring-transactions

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

Rails如何解析模型属性,因为它们没有在模型中定义?

我开始学习Ruby和Rails,有时候"会议过度配置"会让我感到害怕......

好的,我User通过Rails命令在Rails中创建了一个模型.User用一些属性创建的模型,比如nameage.

但当我打开user.rb:

class User < ApplicationRecord
end
Run Code Online (Sandbox Code Playgroud)

它只有这些.我找不到了attr_accessor.所以我继续搜索,我发现属性名称和方法保存在某个地方,所以基本上我仍然可以像往常一样创建对象并引用属性user.nameuser.age.

我的问题是,Rails中的属性保存在哪里?这是怎么回事?我不认为属性也保存在超类中ApplicationRecord,我打开了application_record.rb:

class ApplicationRecord < ActiveRecord::Base
  self.abstract_class = true
end
Run Code Online (Sandbox Code Playgroud)

那些属性保存在哪里?以及Ruby如何解析这个属性?我想知道背后的机制.

ruby ruby-on-rails rails-activerecord

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

IOS中奇怪的浮动问题

float abc = 145606035;
NSLog(@"%f", abc);
NSLog(@"%d", abc);


First NSLog = 145606032.000000 //this is wrong, please look at the last digit.
Second NSLog = 536870912 //this is wrong too!
Run Code Online (Sandbox Code Playgroud)

为什么答案如此奇怪?是否有意义?'abc'甚至没有超过Integer的最大数,为什么这个数字错了?有任何解决这个问题的方法吗?

c iphone objective-c ios

0
推荐指数
1
解决办法
140
查看次数

Mysql是否在一个连接中同步执行语句?

Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/","root", "password");
Run Code Online (Sandbox Code Playgroud)

让我们说在Java中,我们可以通过上面的代码创建一个mysql连接.从connection对象中,我们可以创建几个statement对象,如下所示:

statement = connection.createStatement();
Run Code Online (Sandbox Code Playgroud)

我想知道,如果我们在不同的线程中执行那些statement对象(通过调用statement.executeQuery),它们是否会在Mysql数据库中同步或异步执行?因为我所知道的是,mysql中的一个连接将作为一个线程处理,所以我的想法是,该连接创建的所有语句都将在其队列中进行调度.我对么?

所以,如果我有servlet以下内容:

public class HelloServlet extends HttpServlet {

   Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/","root", "password");  


   public void doGet(HttpServletRequest request, HttpServletResponse response)
               throws IOException, ServletException {

    statement = connection.createStatement();
   }
}
Run Code Online (Sandbox Code Playgroud)

从上面的代码中,如果有多个用户同时连接到servlet它们,它们是否会相互阻塞,因为该语句不能同时并行执行?那么,他们必须在轮到他们之前等待之前的声明完成执行?有什么方法可以避免这种问题吗?

java mysql multithreading servlets database-connection

0
推荐指数
1
解决办法
1040
查看次数

&gt;&gt; &amp; 和 0xff 是什么意思

可能的重复:
Java 中按位运算的好教程
是 &、|、^ 按位运算符还是逻辑运算符?

代码如下:

int rgb[] = new int[] {     
(argb >> 16) & 0xff, //red     
(argb >>  8) & 0xff, //green     
(argb      ) & 0xff  //blue 
}; 
Run Code Online (Sandbox Code Playgroud)

我看到一个代码,它从一个 INT 值中获取 RGB 值,操作如上,但我以前从未见过这样的操作,我想找到更多关于它们是什么以及它们能做什么的信息,符号 >> 和 &和 0xff。

那么,你们都用 Java 解决了什么问题?

java

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