小编Arn*_*ver的帖子

在Android中运行NodeJs服务器

是否有可能在Android设备中运行NodeJs服务器(如linux设备而不是Android应用程序).

如果可能请帮我做.

是否有可能在Android设备上启动mongo服务器?

我的设备:

  • RK3288电视盒(android 4)
  • 华硕fonepad 7(android 5 root)
  • LG Optimus G(android 4 root)

重要!!我想在android中启动一个服务器应用程序.因为我有一个未使用的Android TV-Box,我想在我的家庭服务器中使用它

而且我不想在APK文件中使用它(在WebView中加载html文件).我需要nodejs服务器而不是带有CommonJs和RequireJs的javascript客户端

android root android-ndk node.js server

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

Golang 和 DDD 域建模

我最近一直在研究领域驱动设计,并且必须说这种类型的架构设计触发了我的某些东西。当我尝试将其概念应用于我的 Go 项目时,我遇到了一些障碍。以下是一些示例方法,但我非常不确定要使用哪种方法。

项目结构摘录:

??? api/
??? cmd/
??? internal/
|   ??? base/
|   |   ??? eid.go
|   |   ??? entity.go
|   |   ??? value_object.go
|   ??? modules/
|   |   ??? realm/
|   |   |   ??? api/
|   |   |   ??? domain/
|   |   |   |   ??? realm/
|   |   |   |   |   ??? service/
|   |   |   |   |   ??? friendly_name.go
|   |   |   |   |   ??? realm.go
|   |   |   |   |   ??? realm_test.go
|   |   |   | …
Run Code Online (Sandbox Code Playgroud)

domain-driven-design go value-objects cqrs

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

NestJs CQRS - 与现有的 TypeORM 实体聚合设置

所以这里有一个官方的例子

https://github.com/kamilmysliwiec/nest-cqrs-example

我尝试为三个简单的功能创建自己的功能:

  • 获取所有用户
  • 通过 id 获取一个用户
  • 创建用户

我正在使用 TypeORM 并且有一个基本的 User 实体。因此,基于官方示例代码,我创建了一个用于创建用户 ( create.user.handler.ts)的命令处理程序:

@CommandHandler(CreateUserCommand)
export class CreateUserHandler implements ICommandHandler<CreateUserCommand> {
  constructor(
    private readonly usersRepository: UsersRepository,
    private readonly eventPublisher: EventPublisher,
  ) {}

  public async execute(command: CreateUserCommand): Promise<void> {
    const createdUser: User = await this.usersRepository.createUser(
      command.username,
      command.password,
    );

    // const userAggregate: UserAggregate = this.eventPublisher.mergeObjectContext(
    //   createdUser,
    // );
    // userAggregate.doSomething(createdUser);
    // userAggregate.commit();
  }
}
Run Code Online (Sandbox Code Playgroud)

它所做的只是将一个新的用户实体持久化到数据库中。但是我现在没有得到的是如何处理 User 聚合。合并对象上下文时,我无法传入创建的用户实体。而且我不知道聚合应该处理哪个逻辑。因此,基于此用户聚合 ( user.model.ts):

export class User extends AggregateRoot {
  constructor(private readonly id: …
Run Code Online (Sandbox Code Playgroud)

cqrs typescript nestjs

8
推荐指数
2
解决办法
2010
查看次数

Actor设计模式和现实世界的例子

我\xe2\x80\x99m 目前正在学习Actor 设计模式或模型,它看起来很有趣。然而,我\xe2\x80\x99m正在努力寻找任何像样的现实世界示例来说明如何或在何处应用此模型(除了带有余额的简单银行帐户或游戏的敌人坐标的基本示例之外) , ETC)。

\n

作为我研究的一部分,我遇到了一个示例电子商务微服务应用程序 (eShopOnDapr),其中订单是一个 Actor。这是否是一个可以使用 Actor 模型的真实示例?

\n

这种设计模式可以或者应该与微服务一起使用吗?使用上面的示例,订购服务仅处理订单,而不处理产品或客户等。对我来说,订单可能是参与者是有道理的,但最好使用其他技术构建服务,例如使用 CQRS,甚至只是基本状态管理(创建一个 Order 实例并在每次更新时记录它\xe2\x80\x99s 状态)

\n

正如你所看到的,在设计模式的这个领域,我还有很多东西需要学习,但如果有人能给我指出一些好的 doco 或 YouTube 剪辑,用一些很好的现实世界例子来解释这些事情,那就太好了。

\n

design-patterns cqrs actor microservices

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

卸载本机库

TLDR;

有什么办法告诉java联合国加载本机库,以便我可以重新加载它?(我知道它只能在单个类加载器中加载。请参见下文)。我知道当类加载器被垃圾回收时,它已被卸载,但是强制垃圾回收没有成功。有任何想法吗?


我发现了这个问题,这解释了为什么我遇到错误: .dll已在另一个类加载器中加载?

但这不是我想做的事。我们有一个jar,希望能够在运行时动态加载(插件样式),以便在另一个服务上运行一些规模测试。

它在第一次运行时运行良好,但是当我停止测试运​​行并尝试卸载以前的类加载器并加载新的类加载器时,出现以下错误:

Caused by: java.lang.UnsatisfiedLinkError: Could not load J2V8 library. Reasons: 
        no j2v8_macosx_x86_64 in java.library.path
        Native Library /Users/brian.trezise/libj2v8_macosx_x86_64.dylib already loaded in another classloader

        at com.eclipsesource.v8.LibraryLoader.loadLibrary(LibraryLoader.java:71)
        at com.eclipsesource.v8.V8.load(V8.java:70)
        at com.eclipsesource.v8.V8.createV8Runtime(V8.java:132)
        ... 8 more
Run Code Online (Sandbox Code Playgroud)

这是我的方法,该方法创建一个新的类加载器来动态加载我的jar,如果以前是它,则通过调用使它失效classLoader.close()

public void reloadJar(String jarName) throws IOException {
        if (this.classLoader != null) {
            classLoader.close(); //Invalidate the old class loader so we can load a new one
        }
        File file = new File(JAR_FILE_DIR + jarName);
        if (!file.exists()) {
            throw new IllegalStateException("The specified file …
Run Code Online (Sandbox Code Playgroud)

java native j2v8

6
推荐指数
0
解决办法
3766
查看次数

在 NestJS CQRS 配方中处理“事件源”的首选方式

我一直在尝试找出在使用 NestJS CQRS 配方 ( https://docs.nestjs.com/recipes/cqrs )时进行“事件溯源”的首选方式。

在过去的几周里,我一直在研究 NestJS 框架,并且喜欢它的各个方面。除了文档,它们在某些方面非常薄。

要么 NestJS 对如何实现“事件溯源”没有真正的意见,要么我遗漏了一些明显的东西。

我的主要问题是:保持事件本身的最简单方法是什么?

现在,我的事件看起来非常基本:

import { IEvent } from '@nestjs/cqrs';

export class BookingChangedTitleEvent implements IEvent {
    constructor(
        public readonly bookingId: string,
        public readonly title: string) {}
}
Run Code Online (Sandbox Code Playgroud)

我最初的想法是使用 TypeORM ( https://docs.nestjs.com/recipes/sql-typeorm ) 并使我的每个事件不仅实现IEvent,而且还使其继承 TypeORM @Entity()

但是,每个事件都有一个表 (SQL) 或集合 (NoSQL),因此无法读取发生在单个聚合上的所有事件。我错过了什么吗?

另一种方法是将每个事件转储到 JSON,这听起来很简单。但是我将如何IEvent从数据库加载对象类呢?(听起来我正在实施我自己的 ORM)

cqrs node.js event-sourcing typescript nestjs

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

中断等待阻塞操作的线程?

我正在运行一个线程,其主要操作是使用阻塞函数调用代理,并等待它给它一些东西.

我已经使用了挥发性布尔值和中断的已知模式,但我不确定它是否会起作用:当我尝试添加一个catch块时InterruptedException,我得到错误:

InterruptedException的无法访问的catch块.永远不会从try语句主体抛出此异常

因此,如果我永远不会得到一个InterruptedException,这意味着我永远不会摆脱阻止行动 - 因此永远不会停止.

我有点不解.任何的想法?

  public void run() {    
    Proxy proxy = ProxyFactory.generateProxy();
    Source source;

    while (!isStopped) {
      try {
        source = proxy.getPendingSources();
        scheduleSource(source);
      } catch (Exception e) {
        log.error("UnExpected Exception caught while running",e);
      }
    }
  }

  public void stop() {
    this.isStopped = true;
    Thread.currentThread().interrupt();
  }
Run Code Online (Sandbox Code Playgroud)

java multithreading interrupt-handling

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

如何使用chrome开发者工具在Android中调试J2V8?

以前曾提出过类似的问题,但没有吸引力。显然,这是可能的,但目前还不清楚如何在我们自己的非 tabris Android 应用程序中做到这一点。

关于此事我们拥有的最好的文档是这个提交,但我V8.setFlags("--expose-debug-as=Debug");也尝试过V8.setFlags("--expose-debug-as=" + DebugHandler.DEBUG_OBJECT_NAME);,但 Chrome 开发人员工具中没有出现可调试的应用程序。

我什至尝试与启用 Stetho 组合使用,在这种情况下我能够调试该应用程序,但没有可调试的 javascript 源。我相信我已经很接近了,但还缺少一个关键的小细节。

android v8 google-chrome-devtools stetho j2v8

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

了解 Stun 工作

我浏览了编程 P2P 应用程序SO 帖子。但我想我仍然不清楚 STUN 是如何在引擎盖下工作的。

所以,我想发表我的理解,并希望得到纠正。

根据示例

假设机器 (A) IP 正在192.168.1.2运行(在 STUN 服务器上的 TCP 客户端请求)4900(TCP 客户端请求 STUN 服务器通过 TCP 运行4900)并且 Stun 服务器返回了 Nat 设备的公共 IP,即128.11.12.13 8888

现在我希望机器 B(假设现在 B 通过公共 IP 知道128.11.12.13)通过端口3000(TCP)连接到机器 A

这之后发生了什么——

B 尝试通过 IP 连接 A 128.11.12.13

问题1:但是哪个端口?(它不能直接连接到端口 3000 )

我想答案是我将4900请求转发到3000.

但这里有一件事

问题 2:连接到 4900 上 STUN 服务器的 TCP 客户端怎么样(发送指示等)。如果应用了端口转发,从 Stun 服务器到 TCP 客户端的所有流量现在都将被重定向到端口 3000。对吗?

我在这方面正确吗?

有什么办法解决这个问题,还是我在这里大声思考?:)

sockets networking p2p tcp stun

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

应用程序启动器图标已更改为Oreo上的默认图标

我创建了一个带有自己的启动器图标的Android应用.它与Nougat合作得很好.但是对于Oreo,我的图标被默认的Android图标取代.我已经定义ic_launcher.pngic_launcher_round.png在数密度的纹理贴图资源.

我的清单包含以下行:

android:roundIcon="@mipmap/ic_launcher_round"
Run Code Online (Sandbox Code Playgroud)

我应该怎么做才能在奥利奥上出现自己的图标?

android launcher android-8.0-oreo

5
推荐指数
2
解决办法
2647
查看次数