小编Voi*_*ter的帖子

使用Scala实现跨越一系列基于Java的服务的域层

我们有一个在多个层中实现的java系统.在最低级别,有一些服务可以抽象出一系列基础架构组件,例如数据库,blob存储,处理队列等......最重要的是,我们有域层实现使用其中一个或多个的工作流服务(使用命令和复合命令模式).最后,在其上面有一个基于jax-rs(jersey)的层,它提供了根据域层的工作流实现的REST接口/协议.

我对Scala的经验是有限的,但我怀疑它可能是编写更具表现力的域层版本的好工具,因为Java代码非常冗长且有时难以调试.部分原因是命令组合和执行的控制由具体命令扩展的基类处理.事后看来,这可能不是一个理想的设计选择.

我希望这个非常高级别的描述能够说明我想要实现的目标.如果我需要更具体,请告诉我.我最感兴趣的是如何在保持基于Java的服务层的同时使用Scala构建域层.此外,关于如何在域层之上实现http/REST协议以便可以将其部署在java Web应用程序容器中的建议也将非常有趣.

java architecture design-patterns scala

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

应使用link-tag的rel-attribute的哪些值来表示集合和文档的层次结构?

我想代表超文本文档(可能使用HAL)文件夹中的子文件夹和文档的链接.因此,表示文件夹的文档应具有指向该文件夹中包含的父文件夹,子文件夹和文件的链接.对于父文件夹,<link rel ="up"href ="..">似乎是一个简单的选择.但是,我不确定什么是最适合链接到文件夹中包含的子文件夹和文档.RFC-5988中定义了几个选项.但是,我不能说哪一个最适合代表文件夹和文件树.

我可以拿出自己的价值观并制作文件.例如(使用HTML语法而不是熟悉HAL):

...
<link rel="self" href="http://example.com/some/folder/">
<link rel="up" href="http://example.com/some/">
<link rel="file" href="image1.jpg">
<link rel="file" href="image2.png">
<link rel="folder" href="subfolder/">
...
Run Code Online (Sandbox Code Playgroud)

使用自定义rel-attributes有明显的缺点,即使用这些文档的应用程序需要明确支持它们.因此,我宁愿使用应用程序可以通过遵循标准和最佳实践来理解的东西.

更新:AtomPub(RFC 5023))似乎在指向集合成员的链接上使用rel ="edit".我相信他们没有sub.collection的概念.来自RFC-5988的rel ="subsection"可能是一个选项.

html rest web

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

线程本地单例

我想创建一个单例类,在每个使用它的线程中实例化一次.我想将实例指针存储在TLS插槽中.我已经提出了以下解决方案,但我不确定在涉及线程本地存储时是否对singelton工厂的多线程访问有任何特殊考虑.也许还有一个更好的解决方案来实现线程本地单例.

class ThreadLocalSingleton 
{
    static DWORD tlsIndex;
public:
    static ThreadLocalSingleton *getInstance()
    {
        ThreadLocalSingleton *instance = 
            static_cast<ThreadLocalSingleton*>(TlsGetValue(tlsIndex));
        if (!instance) {
            instance = new ThreadLocalSingleton();
            TlsSetValue(tlsIndex, instance);
        }
        return instance;
    }
};
DWORD ThreadLocalSingleton::tlsIndex = TlsAlloc();
Run Code Online (Sandbox Code Playgroud)

Tls*功能当然是win32特定的,但便携性不是这里的主要问题.您对其他平台的想法仍然很有价值.

主要编辑:我最初询问在这种情况下使用双重检查锁定.然而正如DavidK指出的那样,无论如何都要在每个线程的基础上创建单例.

剩下的两个问题是:

  1. 是否适合回复TlsGetValue/TlsSetValue以确保每个线程获得一个实例并且每个线程只创建一次实例?

  2. 是否可以注册一个回调,允许我在该线程完成时清理与特定线程关联的实例?

c++ winapi singleton multithreading thread-local-storage

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

static_cast wchar_t*to int*或short* - 为什么它是非法的?

在Microsoft VC2005和g ++编译器中,以下结果都会导致错误:

在win32 VC2005上:sizeof(wchar_t)是2

wchar_t *foo = 0;
static_cast<unsigned short *>(foo);
Run Code Online (Sandbox Code Playgroud)

结果是

error C2440: 'static_cast' : cannot convert from 'wchar_t *' to 'unsigned short *' ...
Run Code Online (Sandbox Code Playgroud)

在Mac OS X或Linux上g ++:sizeof(wchar_t)为4

wchar_t *foo = 0;
static_cast<unsigned int *>(foo);
Run Code Online (Sandbox Code Playgroud)

结果是

error: invalid static_cast from type 'wchar_t*' to type 'unsigned int*'
Run Code Online (Sandbox Code Playgroud)

当然,我总是可以使用reinterpret_cast.但是,我想了解为什么编译器认为static_cast到适当的整数类型是非法的.我确信有充分的理由......

c++ casting wchar-t

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

在objective-c中是否存在命名初始化方法的约定?

在可以通过不同的init ...方法初始化的objective-c类中,将所有初始化程序通用的初始化代码收集到从其他init*方法调用的一个常用方法(或者有时也来自awakeFromNib).

有关如何命名此方法的约定?初始化initCommon?...?

coding-style objective-c naming-conventions

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

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