小编Jen*_*nsG的帖子

计算字符串中的字符串数量?

你会如何使用Powershell计算字符串中的字符串数?

例如:

$a = "blah test <= goes here / blah test <= goes here / blah blah"
Run Code Online (Sandbox Code Playgroud)

我想算一下<= goes here /上面出现的次数.

string powershell

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

将单元添加到项目是从项目源中删除编译器指令

这应该是这样工作还是我做错了什么?

我在我的项目源代码中有这个代码:

  {$IFDEF DEBUG}
  ADebugUnit,
  {$ELSE}
  ARelaseUnit,
  {$ENDIF}
Run Code Online (Sandbox Code Playgroud)

我希望在调试模式下使用ADebugUnit,但在发布模式下编译时使用AReleaseUnit.当我选择向项目添加新单元时,这种方法效果很好.当我这样做时,它基本上将处理代码,并且只保留与项目当前设置的任何配置相关的单位.

例如,如果配置设置为Debug,那么在向项目添加新单元后,上面的代码将更改为:

ADebugUnit,
Run Code Online (Sandbox Code Playgroud)

或者,如果我的配置设置为Release,则在添加新单元后将更改为以下内容:

ARelaseUnit,
Run Code Online (Sandbox Code Playgroud)

添加新单元后,我必须始终将其恢复为条件语句.有没有办法在没有添加新单元干扰的情况下实现这一目的?

delphi compiler-directives

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

微服务之间的通信

假设您有微服务A,B和C,它们当前都通过HTTP进行通信.假设服务A向服务B发送请求,从而产生响应.然后,必须将该响应中返回的数据发送到服务C进行某些处理,最后返回到服务A.服务A现在可以在网页上显示结果.

我知道延迟是实现微服务架构的固有问题,我想知道减少这种延迟的常用方法是什么?

另外,我一直在阅读Apache Thrift和RPC如何帮助解决这个问题.任何人都可以详细说明吗?

rpc thrift microservices

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

如何使必需的节俭字段可选?

在节俭中创造一个required领域的最佳过程是什么?optional例如,我有一个结构...

struct Message {
    1: required double userID;
    2: required string content;
    ...
} 
Run Code Online (Sandbox Code Playgroud)

...但我想做出content选择.

编辑:为了澄清,我已经有消费者使用这个结构,所以我需要更新它而不破坏这些消费者.分阶段升级很好(即 ​​- 添加新optional字段,更新下游客户端,然后删除 - 或停止使用 - 旧required字段).

thrift

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

thrift参数列表中的1:是什么意思

来自节俭网站的示例

int multiply(1:int n1, 2:int n2); 
Run Code Online (Sandbox Code Playgroud)

为什么我们必须在变量名之前使用标签1:2:,这个标签的用途是什么?

thrift

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

单向服务方式

请告诉我,声明两种方法有什么不同

service MyService {
  void test1();
  oneway void test2();
}
Run Code Online (Sandbox Code Playgroud)

手册说

oneway修饰符表示客户端只发出请求,根本不等待任何响应。单向方法必须为空。

但任何 void 方法都表示客户端不期望任何结果。那么为什么oneway

或者区别是普通方法是同步执行的,方法在服务端测试完后客户端才返回,oneway被拉了忘记了?因此,从单一角度来看,不可能有例外

thrift

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

如何使用关键字"include"在Thrift文件中定义的结构

我是Thrift的新手.我有以下问题:假设我在文件"Ex1.thrift"中定义了一个结构如下:

namespace java tut1
struct Address {
 1:string nameStreet,
 2:i32 idHouse
}
Run Code Online (Sandbox Code Playgroud)

我想在文件"Ex2.thrift"中使用struct Address,我该怎么做?我试过这种方式,但Thrift编译器不起作用:

include "Ex1.thrift"
namespace java tut2
struct Student {
 1:string name,
 2:i32 age,
 3:Address add
}

service ExampleService {
 list<Student> getListStudent()
}
Run Code Online (Sandbox Code Playgroud)

非常感谢你的回答.

java communication thrift

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

在调用类析构函数之前,Delphi类变量超出范围

在类变量中使用动态数组来存储在调用类析构函数时需要释放的对象不起作用.

在调用类析构函数之前,数组似乎已经超出了范围并且已经被处理掉了.这是设计的吗?

在XE5中测试的示例:

type
  TLeakingObject = class
  public
    I : Integer;
  end;

  TTheLeakOwner = class
  public
    class var OutofScopeArray:array of TLeakingObject;
    procedure Add;
    class destructor Destroy;
  end;

procedure TestThis;
var LeakingTest : TTheLeakOwner;
begin
  LeakingTest := TTheLeakOwner.Create;
  try
    LeakingTest.Add;
  finally
    LeakingTest.DisposeOf;
  end;
end;

{ TTheLeakOwner }

procedure TTheLeakOwner.Add;
begin
  setlength(OutofScopeArray, length(OutofScopeArray) + 1);
  OutofScopeArray[length(OutofScopeArray) - 1] := TLeakingObject.Create;
end;

class destructor TTheLeakOwner.Destroy;
var I: Integer;
begin
  // Length(OutofScopeArray) always = 0, gone out of scope before class destructor ??
  for …
Run Code Online (Sandbox Code Playgroud)

delphi variables destructor memory-leaks class

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

使用 Apache Thrift 的服务多路复用

服务器代码:

            TMultiplexedProcessor processor = new TMultiplexedProcessor();

            processor.registerProcessor(
                "AddService",
                new AddService.Processor(new AddHandler()));

            processor.registerProcessor(
                "MultiplyService",
                new MultiplyService.Processor(new MultiplyHandler()));

            TServerTransport serverTransport = new TServerSocket(7911);



            TSimpleServer server = new TSimpleServer(new TSimpleServer.Args(serverTransport).
                   processor(processor));

            System.out.println("Starting server on port 7911 ...");
            server.serve();
Run Code Online (Sandbox Code Playgroud)

客户代码:

    TFramedTransport transport;

   transport = new TFramedTransport(new TSocket("localhost", 7911));  
   transport.open();  


   TProtocol protocol = new TBinaryProtocol(transport);

   System.out.println("1");
   TMultiplexedProtocol mp = new TMultiplexedProtocol(protocol, "AddService");
   AddService.Client service = new AddService.Client(mp);

   System.out.println("2");
   TMultiplexedProtocol mp2 = new TMultiplexedProtocol(protocol, "MultiplyService");
   MultiplyService.Client service2 = new MultiplyService.Client(mp2);

   System.out.println("3");

   System.out.println(service.add(2,2));
   System.out.println(service2.multiply(2000,200));
Run Code Online (Sandbox Code Playgroud)

但是当我运行服务器(侦听端口 7911)和客户端时,客户端不会处理对加/乘函数的最后两次调用。

我可以调试参数已发送到服务器,但服务器无法处理它们。 …

java service thrift multiplexing

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

直接消耗json.RawMessage的打印函数

我正在做一些工作,Elasticsearch查询返回一个Source对象,它的类型是*json.RawMessage

我只想将它打印到屏幕上而不为它创建结构模型并执行明显的json.Marshal.

是否有使用 *json.RawMessage 类型并将其打印到屏幕的打印功能?

代码示例:

 for _, hit := range serachResult.Hits.Hits {
    fmt.Println(hit.Source, "\n")
 }
Run Code Online (Sandbox Code Playgroud)

此代码运行将导致无法读取的字节数组,显然无法string仅从原始消息构建一个。

json go

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