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)
为什么这个简单的测试程序不起作用?
我有一个编码为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) 我是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)
我想从数据库中验证用户,然后检查用户的角色.我知道这很简单,所以我只需要听听过程应该如何流动.
我正在研究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 =="
基本上我的代码看起来像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)
似乎我错过了什么,但不知道我的代码有什么问题.我有两个字段,一个String和Date,并且错误消息对我没有任何意义.
如何在BigQuery表中插入数据?
java google-app-engine google-bigquery google-cloud-platform
如何解压缩带有 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) 我在我的云服务器上运行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) 我有一个运行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) 我正在用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).
谢谢.
我想使用 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 ×8
android ×1
casting ×1
cert-manager ×1
clone ×1
ejabberd ×1
encoding ×1
filenames ×1
iso-8859-1 ×1
lets-encrypt ×1
selenium ×1
smack ×1
spring ×1
spring-mvc ×1
ssl ×1
traefik ×1
utf-8 ×1
zip ×1