小编Dan*_*son的帖子

在java中克隆()

import java.util.*;
import java.lang.*;

public class Test{
    public static void main(String[] argv){
        String s1="abc";
        String s2=(String) s1.clone();
    }    
}
Run Code Online (Sandbox Code Playgroud)

为什么这个简单的测试程序不起作用?

java clone

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

Java App:无法正确读取iso-8859-1编码文件

我有一个编码为iso-8859-1的文件,其中包含ô等字符.

我正在使用java代码读取此文件,例如:

File in = new File("myfile.csv");
InputStream fr = new FileInputStream(in);
byte[] buffer = new byte[4096];
while (true) {
    int byteCount = fr.read(buffer, 0, buffer.length);
    if (byteCount <= 0) {
        break;
    }

    String s = new String(buffer, 0, byteCount,"ISO-8859-1");
    System.out.println(s);
}
Run Code Online (Sandbox Code Playgroud)

然而,ô字符总是乱码,通常打印为?.

我已经阅读了这个主题(并且在路上学到了一点),例如

但仍然无法使这个工作

有趣的是,这适用于我的本地电脑(xp),但不适用于我的Linux机箱.

我已经检查过我的jdk支持所需的字符集(它们是标准的,所以这并不令人惊讶)使用:

System.out.println(java.nio.charset.Charset.availableCharsets());
Run Code Online (Sandbox Code Playgroud)

java encoding iso-8859-1 character-encoding

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

使用带有hdbc的spring security 3.0一步一步登录示例

我是Spring and Spring Security的新手.我只需要一个正确方向的指针:

我有一个简单的Spring MVC/Spring Security webapp.我想在Web应用程序中添加登录功能.我创建了以下两个表.

CREATE TABLE "users" (
  "USER_ID" NUMBER(10)  NOT NULL,
  "USERNAME" VARCHAR(45) NOT NULL,
  "PASSWORD" VARCHAR(45) NOT NULL,
  "ENABLED" NUMBER(1) NOT NULL,
  PRIMARY KEY ("USER_ID")
)


CREATE TABLE "user_roles" (
  "USER_ROLE_ID" NUMBER(10)  NOT NULL,
  "USER_ID" NUMBER(10)  NOT NULL,
  "AUTHORITY" VARCHAR(45) NOT NULL,
  PRIMARY KEY ("USER_ROLE_ID"),
  CONSTRAINT "FK_user_roles" FOREIGN KEY ("USER_ID") REFERENCES "users" ("USER_ID")
) 
Run Code Online (Sandbox Code Playgroud)

我想从数据库中验证用户,然后检查用户的角色.我知道这很简单,所以我只需要听听过程应该如何流动.

java authentication spring spring-mvc spring-security

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

如何在Elasticsearch中索引嵌套类型的数组?

我正在研究ElasticSearch.在这里,我想通过JAVA api索引嵌套类型字段的数组.任何人都可以举一个例子.我尝试了一些但他们失败了.

XContentBuilder xb1 =  XContentFactory.jsonBuilder().startObject(); 
XContentBuilder xb2 =  XContentFactory.jsonBuilder().startObject(); 

xb1.startArray("eventnested"); 
for(int j=0;j<2;j++) { 
    xb2.field("event_type",eventType); 
    xb2.field("event_attribute_instance",eventInstance); 
    xb2.startArray("attributes"); 
    for(int i=0;i<2;i++) { 
        XContentBuilder xb3 = XContentFactory.jsonBuilder().startObject(); 
        xb3.field("event_attribute_name", attrName); 
        xb3.field("event_attribute_value", attrValue); 
        xb2.value(xb3.copiedBytes()); 
    } 
    xb1.value(xb2.copiedBytes()); 
}
Run Code Online (Sandbox Code Playgroud)

索引数据后,当我读取响应时,特定字段的数据看起来像

"eventnested.event_type":[ "eyJldmVudF90eXBlIjoiUXVvdGF0aW9uIiwiZXZlbnRfYXR0cmlidXRlX2luc3RhbmNlIjoiMSIsImF0dHJpYnV0ZXMiOlsiZXlKbGRtVnVkRjloZEhSeWFXSjFkR1ZmYm1GdFpTSTZJbkJsY25OdmJpQWlMQ0psZG1WdWRGOWhkSFJ5YVdKMWRHVmZkbUZzZFdVaU9pSkxZWGtnVFdGcmFIVmlaV3hoSW4wPSJdLCJhdHRyaWJ1dGVzIjpbImV5SmxkbVZ1ZEY5aGRIUnlhV0oxZEdWZmJtRnRaU0k2SW5GMWIzUmxJQ0lzSW1WMlpXNTBYMkYwZEhKcFluVjBaVjkyWVd4MVpTSTZJblJvWlNCaWIza2djbUZ3WldRZ2RHaGxJSEJoYVhJZ2IyNGdiblZ0WlhKdmRYTWdiMk5qWVhOcGIyNXpMQ0IzYVhSb0lIUm9aU0JzWVhSbGMzUWdhVzVqYVdSbGJuUWdZbVZwYm1jZ2IyNGdSbkpwWkdGNUluMD0iXX0 =","eyJldmVudF90eXBlIjoiUXVvdGF0aW9uIiwiZXZlbnRfYXR0cmlidXRlX2luc3RhbmNlIjoiMSIsImF0dHJpYnV0ZXMiOlsiZXlKbGRtVnVkRjloZEhSeWFXSjFkR1ZmYm1GdFpTSTZJbkJsY25OdmJpQWlMQ0psZG1WdWRGOWhkSFJ5YVdKMWRHVmZkbUZzZFdVaU9pSkxZWGtnVFdGcmFIVmlaV3hoSW4wPSJdLCJhdHRyaWJ1dGVzIjpbImV5SmxkbVZ1ZEY5aGRIUnlhV0oxZEdWZmJtRnRaU0k2SW5GMWIzUmxJQ0lzSW1WMlpXNTBYMkYwZEhKcFluVjBaVjkyWVd4MVpTSTZJblJvWlNCMFpXVnVZV2RsY2lCb1lYTWdZbVZsYmlCd2JHRmpaV1FnYVc0Z1lTQnpZV1psZEhrZ2FHOXRaU0JoYm1RZ2Qyb HNiQ0JpWlNCamFHRnlaMlZrSUhkcGRHZ2djbUZ3WlNKOSJdfQ =="

elasticsearch

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

将数据插入BigQuery表

基本上我的代码看起来像https://cloud.google.com/bigquery/streaming-data-into-bigquery上的官方示例

我的代码:

TableRow data = new TableRow();
data.set("type", eventType);
data.set("timestamp", new Date());

TableDataInsertAllRequest.Rows row = new TableDataInsertAllRequest.Rows();
row.setInsertId(System.currentTimeMillis());
row.setJson(data);
request = new TableDataInsertAllRequest();
request.setRows(Arrays.asList(row));

TableDataInsertAllResponse response = bigquery.tabledata().insertAll(projectId, datasetId, tableId, request).execute();
for (TableDataInsertAllResponse.InsertErrors err: response.getInsertErrors()) {
    for (ErrorProto ep: err.getErrors()) {
        log.error(ep.getReason() + " : " + ep.getMessage() + " at " + ep.getLocation());
    }
}
Run Code Online (Sandbox Code Playgroud)

但我收到错误:

invalid : JSON map specified for non-record field at null
Run Code Online (Sandbox Code Playgroud)

似乎我错过了什么,但不知道我的代码有什么问题.我有两个字段,一个StringDate,并且错误消息对我没有任何意义.

如何在BigQuery表中插入数据?

java google-app-engine google-bigquery google-cloud-platform

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

java用unicode文件名解压缩zipfile

如何解压缩带有 unicode 文件名的 zip 文件?这是我的代码:

try {
    ZipInputStream zis = new ZipInputStream(
            new FileInputStream(zipFile));
    ZipEntry ze = zis.getNextEntry();

    System.setProperty("file.encoding", "UTF-8");
    while (ze != null) {
        String fileName = new String(ze.getName().getBytes("UTF-8"));
        System.out.println(fileName);
        File newFile = new File(outputFolder + File.separator + fileName );

        BufferedOutputStream outStream = new BufferedOutputStream(new FileOutputStream(newFile));
        OutputStreamWriter osw = new OutputStreamWriter(outStream, Charset.forName("UTF-8"));
        int ch;
        StringBuffer buffer1 = new StringBuffer();
        while ((ch = zis.read()) > -1) {
            buffer1.append((char) ch);
        }
        osw.write(buffer1.toString());
        osw.close();
        outStream.close();

        ze = zis.getNextEntry();
    }

    zis.closeEntry();
    zis.close();
} …
Run Code Online (Sandbox Code Playgroud)

java zip filenames utf-8 zipinputstream

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

ejabberd和smack握手失败了

我在我的云服务器上运行ejabberd,我认为它运行良好,因为我可以使用pidgin从我的PC连接到它.(ejabberdctl connected-users-number在我连接时回答1,在我离线时回答0.)

现在我尝试使用smack包从我的android应用程序连接到if,并且我得到IOException:

javax.net.ssl.SSLHandshakeException: Handshake failed

Caused by: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0xb897c858: Failure in SSL library, usually a protocol error
error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol (external/openssl/ssl/s23_clnt.c:795 0xacf6bf89:0x00000000)
W/System.err? at com.android.org.conscrypt.NativeCrypto.SSL_do_handshake(Native Method)
W/System.err? at com.android.org.conscrypt.OpenSSLSocketImpl.startHandshake(OpenSSLSocketImpl.java:318)
Run Code Online (Sandbox Code Playgroud)

这是我的应用程序代码:

XMPPTCPConnectionConfiguration.Builder config = XMPPTCPConnectionConfiguration.builder();
config.setSecurityMode(ConnectionConfiguration.SecurityMode.required);
config.setConnectTimeout(30000);
config.setUsernameAndPassword(username + "@" + service, password);
config.setServiceName(service);
config.setHost(host);
config.setCompressionEnabled(true);
config.setPort(port);
config.setDebuggerEnabled(true);
config.setSocketFactory(SSLSocketFactory.getDefault());

SmackConfiguration.DEBUG = true;
try {
    TLSUtils.acceptAllCertificates(config);
    XMPPTCPConnection connection = new XMPPTCPConnection(config.build());
    connection.connect();
    connection.login();

} catch (SmackException ex) {
    ex.printStackTrace();
    chatClient.setConnection(null);
} catch(IOException ex){
    ex.printStackTrace();
    chatClient.setConnection(null);                 
} catch ( …
Run Code Online (Sandbox Code Playgroud)

java ssl android ejabberd smack

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

使用 CertManager、HTTP01 挑战和 Let's Encrypt ClusterIssuer 从 Ingress 到 IngressRoute

我有一个运行cert-manager1.11.0 和Traefik2.9.6 的 Kubernetes (v1.25.2) 集群。对于某些服务,我想Let's Encrypt自动签署证书。出于某种原因,使用IngressRoute而不是感觉更好Ingress。我只是无法让 IngressRoute 创建证书。
现在,我有一个ClusterIssuer

apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
  name: letsencrypt-prod
spec:
  acme:
    server: https://acme-v02.api.letsencrypt.org/directory
    email: my@email.com
    privateKeySecretRef:
      name: letsencrypt-prod
    solvers:
      - http01:
          ingress:
            class: traefik
Run Code Online (Sandbox Code Playgroud)

并且,工作,对应Ingress

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: myapp-name-websecure
  annotations:
   cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
  ingressClassName: traefik
  rules:
    - host: my.host.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: linkingservice
                port:
                  number: 80
  tls:
    - …
Run Code Online (Sandbox Code Playgroud)

lets-encrypt traefik cert-manager ingress-route

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

输入促销Java

我正在用Herbert Schildt的书来学习Java:Java初学者指南.在那本书中出现了这段代码:

// A promotion surprise!
class PromDemo{
    public static void main(String args[]){
        byte b;
        int i;
        b = 10;
        i = b * b;      // OK, no cast needed

        b = 10;
        b = (byte) (b * b);     // cast needed!!

        System.out.println("i and b: " + i + " " + b);
    }
}
Run Code Online (Sandbox Code Playgroud)

我不明白为什么我必须在行中使用(byte):

b = (byte) (b * b);     // cast needed!!
Run Code Online (Sandbox Code Playgroud)

b被定义为一个字节,b*b的结果是100,这是一个字节的正确值(-128 ... 127).

谢谢.

java casting

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

如何使用 selenium webdriver 在 chrome 中下载 pdf 文件

我想使用 selenium 在 chrome 中下载 pdf。

System.setProperty("webdriver.chrome.driver", System.getProperty("user.dir")  
               + System.getProperty("file.separator")
               + "BrowserDrivers"
               + System.getProperty("file.separator")
               + "chromedriver.exe");

String downloadFilepath = "C:\\Users\\Vinod\\Downloads";

HashMap<String, Object> chromePrefs = new HashMap<String, Object>();
chromePrefs.put("profile.default_content_settings.popups", 0);
chromePrefs.put("download.default_directory", downloadFilepath);

//Save Chrome Opions
ChromeOptions options = new ChromeOptions();
HashMap<String, Object> chromeOptionsMap = new HashMap<String, Object>();
options.setExperimentalOption("prefs", chromePrefs);
options.addArguments("--test-type");


DesiredCapabilities cap = DesiredCapabilities.chrome();
cap.setCapability(ChromeOptions.CAPABILITY, chromeOptionsMap);
cap.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);
cap.setCapability(ChromeOptions.CAPABILITY, options);


driver = new ChromeDriver(cap);
driver.get(url);
Run Code Online (Sandbox Code Playgroud)

我尝试了上面的代码,但它不起作用

java selenium selenium-webdriver

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