小编Mkl*_*Rjv的帖子

如何将Java String转换为byte []?

有没有办法将Java转换Stringbyte[](不是盒装Byte[])?

在尝试这个:

System.out.println(response.split("\r\n\r\n")[1]);
System.out.println("******");
System.out.println(response.split("\r\n\r\n")[1].getBytes().toString());
Run Code Online (Sandbox Code Playgroud)

而我正在获得单独的输出.无法显示第一个输出,因为它是一个gzip字符串.

<A Gzip String>
******
[B@38ee9f13
Run Code Online (Sandbox Code Playgroud)

第二个是地址.有什么我做错了吗?我需要将结果输入byte[]到gzip解压缩程序中,如下所示.

String decompressGZIP(byte[] gzip) throws IOException {
    java.util.zip.Inflater inf = new java.util.zip.Inflater();
    java.io.ByteArrayInputStream bytein = new java.io.ByteArrayInputStream(gzip);
    java.util.zip.GZIPInputStream gzin = new java.util.zip.GZIPInputStream(bytein);
    java.io.ByteArrayOutputStream byteout = new java.io.ByteArrayOutputStream();
    int res = 0;
    byte buf[] = new byte[1024];
    while (res >= 0) {
        res = gzin.read(buf, 0, buf.length);
        if (res > 0) {
            byteout.write(buf, 0, res);
        }
    }
    byte uncompressed[] = …
Run Code Online (Sandbox Code Playgroud)

java arrays string

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

Storm:用于从端口读取数据的Spout

我需要写一个风暴喷口来从端口读取数据.想知道这在逻辑上是否可行.

考虑到这一点,我设计了一个简单的拓扑结构,设计用于一个喷嘴和一个螺栓.spout会收集使用wget发送的HTTP请求,而bolt会显示请求 - 就是这样.

我的喷口结构如下:

public class ProxySpout extends BaseRichSpout{
         //The O/P collector
         SpoutOutputCollector sc;
         //The socket
         Socket clientSocket;
         //The server socket
         ServerSocket sc;

         public ProxySpout(int port){
            this.sc=new ServerSocket(port);
            try{
                clientSocket=sc.accept();
            }catch(IOException ex){
                //Handle it
            }
         }

         public void nextTuple(){
            try{
                InputStream ic=clientSocket.getInputStream();
                byte b=new byte[8196];
                int len=ic.read(b);

                sc.emit(new Values(b));
                ic.close();
            }catch(//){
                //Handle it
            }finally{
                clientSocket.close();
            }
         }
}
Run Code Online (Sandbox Code Playgroud)

我也实现了其余的方法.

当我将其转换为拓扑并运行它时,我发送第一个请求时出错:

了java.lang.RuntimeException:java.io.NotSerializableException:java.net.Socket中

只需要知道我实施这个喷口的方式是否有问题.鲸鱼喷水器甚至可以从端口收集数据吗?或者鲸鱼喷水充当代理的实例?

编辑

搞定了.

代码是:

   public class ProxySpout extends BaseRichSpout{
         //The O/P collector
         static SpoutOutputCollector _collector;
         //The socket
         static …
Run Code Online (Sandbox Code Playgroud)

java apache-storm

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

使用正则表达式删除html实体并提取文本内容

我有一个仅包含 HTML 实体的文本,例如&lt;&nbsp;我需要将其全部删除并仅获取文本内容:

&nbspHello there&lt;testdata&gt;
Run Code Online (Sandbox Code Playgroud)

所以,我需要从这个部分得到Hello theretestdata。有没有办法使用负前瞻来做到这一点?

我尝试了以下方法:/((?!&.+;).)+/ig但这似乎效果不佳。那么,我如何才能从那里提取所需的文本?

regex

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

JsonNode比较不包括字段

我正在尝试使用ObjectMapper(Jackson)对JSON字符串进行反序列化,并在执行反序列化时排除字段.

我的代码如下:

String aContent = new String(Files.readAllBytes(Paths.get(aFile)));
String bContent = new String(Files.readAllBytes(Paths.get(bFile)));

ObjectMapper mapper = new ObjectMapper();

FilterProvider filterProvider = new SimpleFilterProvider()
      .addFilter("_idFilter", SimpleBeanPropertyFilter.serializeAllExcept("_id"));

mapper.setFilterProvider(filterProvider);

JsonNode tree1 = mapper.readTree(aContent);
JsonNode tree2 = mapper.readTree(bContent);

String x = mapper.writeValueAsString(tree1);

return tree1.equals(tree2);
Run Code Online (Sandbox Code Playgroud)

x和tree1以及tree2都包含JSON字符串中的值_id,但不会将其删除.

java serialization json jackson deserialization

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

Java中的简单Web代理

我试图在java中编写一个简单的Web代理,它接受GET和POST请求.我写了以下代码:

import java.net.*;
import java.io.*;
import java.nio.CharBuffer;
import java.util.logging.Level;
import java.util.logging.Logger;

public class InterceptionProxy2 {

    public static void main(String[] args) throws IOException {
        ServerSocket serverSocket = null;
        boolean listening = true;
        int port = 1234;
        try {
            serverSocket = new ServerSocket(port);
        } catch (IOException e) {
            System.out.println("Port Error");
            System.exit(-1);
        }
        while (listening) {
            new ProxyThread2(serverSocket.accept()).start();
        }
        serverSocket.close();
    }
}

class ProxyThread2 extends Thread {

    private Socket clientSocket = null;
    private Socket serverSocket = null;

    public ProxyThread2(Socket socket) {
        super("ProxyThread2");
        this.clientSocket …
Run Code Online (Sandbox Code Playgroud)

java sockets proxy stream

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

尝试通过 Active Directory 访问 Azure Databricks API 时出现错误 403 用户未获授权

我一直在关注文档:https : //docs.microsoft.com/en-us/azure/databricks/dev-tools/api/latest/aad/service-prin-aad-token

创建服务主体并使用它来访问 Databricks。我已经配置了一个 databricks 工作区并使用它来创建一个集群。然后我按照文档中提到的过程,创建了一个服务主体并获得了两个令牌:AD访问令牌和管理访问令牌。但是,我无法使用 API。

配置后最终调用cURL命令:

curl -X GET \
-H 'Authorization: Bearer <access-token>' \
-H 'X-Databricks-Azure-SP-Management-Token: <management-access-token>' \
-H 'X-Databricks-Azure-Workspace-Resource-Id: /subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Databricks/workspaces/<workspace-name>' \
https://<databricks-instance>/api/2.0/clusters/list
Run Code Online (Sandbox Code Playgroud)

代入代币和其他信息后,结果如下:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
<title>Error 403 User not authorized.</title>
</head>
<body><h2>HTTP ERROR 403</h2>
<p>Problem accessing /api/2.0/clusters/list. Reason:
<pre>    User not authorized.</pre></p>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

我已经尝试了一些方法来解决这个问题,即更改原始访问令牌请求以使用使用authorization_code授权类型等的交互流,但这只会给我一个Invalid access token错误。

上面的配置有问题吗?我是否缺少一些权限?

更新:来到访问控制 (IAM) 页面,该应用程序似乎没有包含在那里。

azure oauth-2.0 azure-active-directory azure-databricks

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

将字符串对象添加到arraylist时出现空指针异常

不能绕过这个.尝试将String对象添加到ArrayList时发生空指针异常.麻烦的是,我相信我已经正确初始化了'temp'ArrayList.请帮忙.

void initialConbinations(String[] headers) {
    //Dataset is SN,FN,RN,PN
    //Map the headers to the appropriate portions
    String[] newHeaders = {"SN,high", "SN,medium", "SN,low", "FN,high", "FN,medium", "FN,low", "RN,high", "RN,medium", "RN,low"};
    List<List> assRuleHeaders = new ArrayList<List>();
    ArrayList<String> temp = new ArrayList<String>();

    //Use bitwise shifting to do the rest
    int k = 0, l = 0;
    for (int i = 1; i < 511; i++) {
        for (int j = 0; j < 9; j++) {
            l = i;
            k = (l >> j) & …
Run Code Online (Sandbox Code Playgroud)

java arraylist nullpointerexception

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

在一个select语句中嵌套With子句

我有一个使用Common Table Expressions的递归查询,它获取开始日期和结束日期之间的日期范围

WITH T(date) AS (
SELECT @StartDate UNION ALL
SELECT DateAdd(day,1,T.date)   FROM T WHERE datediff(dd,T.date , @EndDate)>0 )
SELECT date FROM T OPTION (MAXRECURSION 32767))
Run Code Online (Sandbox Code Playgroud)

有没有办法让我在没有创建临时表的情况下将其嵌套在另一个select语句中?

我正在寻找这样的声明

select * from (WITH T(date) AS (
    SELECT @StartDate UNION ALL
    SELECT DateAdd(day,1,T.date)   FROM T WHERE datediff(dd,T.date , @EndDate)>0 )
    SELECT date FROM T OPTION (MAXRECURSION 32767)))
join 
    (select * from SomeTable where MyDate between @StartDate and @EndDate)
on //Some condition
Run Code Online (Sandbox Code Playgroud)

我在SQL Server中尝试了这个,并且有一个

WITH附近的语法不正确

错误被抛出.

根据定义,CTE仅存在于查询范围内.那么,是否有必要使用临时表来存储CTE的结果,或者上述方案是否也有效?

sql sql-server common-table-expression

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

检测Java中HTTP请求的结束

我试图设计一个Java代理程序,但我的java程序在读取整个HTTP请求时遇到问题.

我使用该InputStream对象isObj尝试获取数据:

isObj.read(byteBuff)
Run Code Online (Sandbox Code Playgroud)

但这通常会导致数据无法完全读取.即,在POST请求的情况下,有时,只读取HTTP标题,而不读取POST数据.所以,我尝试使用下面的内容来完整地读取数据.

ByteArrayOutputStream baos=new ByteArrayOutputStream();
while((len=isObj.read(tempBuff))>0){
    baos.write(tempBuff,0,len);
}
byte[] byteBuff=baos.toByteArray();
Run Code Online (Sandbox Code Playgroud)

但是,这种方法也阻止了这个isObj.read(tempBuff)功能.

尝试使用DataInputStream的另一种方法,如:

DataInputStream dis=new DataInputStream(isObj);
byte[] byteBuff=new byte[8196];
dis.readFully(byteBuff);
Run Code Online (Sandbox Code Playgroud)

这也阻止了这个readFully()功能.

我仔细阅读并发现了这一点

检测HTTP请求正文的结束

这表明原因是我们无法确定何时数据将被解决(除非是为了响应).它要求我们使用Content-Length标头来检测最终长度.这绝对是读取HTTP请求的唯一方法吗?或者是否有其他库自动执行此操作?

java http httprequest

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