小编Ana*_*tel的帖子

为什么装饰器是结构而非行为设计模式?

我认为自己拥有GoF设计模式的中级知识.但是,在将这些模式分类为结构和行为模式时,我感到困惑.我对创作模式没有任何困惑.

来自维基百科 - 装饰模式 - 在面向对象的编程中,装饰模式是一种设计模式,允许将行为静态或动态地添加到单个对象,而不会影响同一类中其他对象的行为.

从上面的定义可以清楚地看出它是关于行为的

  1. 为什么装饰者是一种结构模式?
  2. 结构模式的标准是什么?
  3. 行为模式的标准是什么?

谢谢.

design-patterns conceptual

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

为什么在另一个事务的事务隔离级别可以使用非冲突过滤器进行序列化时插入TSQL语句块?

可序列化的事务隔离级别通过阻止对事务中与任何其他事务中的任何select语句冲突的表的任何插入来避免幻像读取的问题.我试图用一个例子来理解它,但即使select语句中的过滤器没有冲突,它也会阻塞插入.我会很感激为什么它以这种方式行事的任何解释.

表脚本

CREATE TABLE [dbo].[dummy](
    [firstname] [char](20) NULL,
    [lastname] [char](20) NULL
) ON [PRIMARY]

GO
Run Code Online (Sandbox Code Playgroud)

会议 - 1

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
begin tran
select * from dummy where firstname = 'abc'
Run Code Online (Sandbox Code Playgroud)

会议 - 2

insert into dummy values('lmn', 'lmn') -- Why this blocks?
Run Code Online (Sandbox Code Playgroud)

sql-server isolation-level

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

想了解 Windows 剪贴板内部原理

我有兴趣学习 Windows 系统内部结构及其工作原理。我倾向于学习windows上的系统编程。在这种背景下,我很想知道有关 Windows 剪贴板内部功能的一些事情:

  • 当我们选择一些文本、图像等并按 Ctrl + C 时,到底会发生什么?
  • 当我们在不同的应用程序中按 Ctrl + V 时,到底会发生什么?
  • 复制的数据到底驻留在哪里?复制的数据是否进入内核模式内存 - 在所有进程之间共享?
  • 复制的数据如何可供不同的进程使用?

我想从系统程序员的角度知道上述问题的答案。

另外,共享讨论 Windows 剪贴板内部结构的任何资源。

windows clipboard internals systems-programming

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

从Java应用程序执行批量插入数据库的不同方法

我正在寻找从Java应用程序执行批量插入数据库(例如SQL Server 2012)的不同方法.我需要非常有效地将大量实体插入到数据库中,而不需要像实体一样调用数据库.

我的要求是执行实体的批量插入,其中数据库中的实体插入可能涉及将数据插入到一个或多个表中.以下是我能想到的两种方式:

  1. 动态生成一批SQL语句,并通过使用本机JDBC支持对数据库执行它.

  2. 构造所有实体的XML表示,然后通过传递生成的XML来调用存储过程.存储过程负责解析XML并将实体插入数据库.

我是Java新手,对可用框架知之甚少.国际海事组织,上述两种方法似乎非常天真,并没有利用现有的框架.我要求专家分享实现批量插入的不同方法及其优缺点.我对MyBatis,Spring-MyBatis,Spring-JDBC,JDBC等开放,以有效的方式解决问题.

谢谢.

database bulkinsert jdbc spring-jdbc mybatis

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

检查rabbitmq中是否存在具有指定名称的Exchange

我有一个场景,其中有一个应用程序正在生成不同类型的有趣事件(而不是命令).生产者应用程序不关心事件的处理对象和方式.

我正在实施一个消费者,他会倾听一些已发布的事件并对其进行适当的处​​理.消费者应用程序想要检查发布者应用程序交换是否存在.那么,问题是如何通过使用弹簧提供的兔子/ AMQP库检查是否存在具有特定名称的交换?

我想,这可以通过尝试将队列绑定到不存在的交换来间接处理,从而导致异常.我正在寻找更好的方法来处理这种情况.

spring amqp rabbitmq spring-rabbit spring-amqp

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

在puppet中,如何停止服务,执行某些操作然后启动服务?

我需要在停止tomcat服务后执行一些操作(配置一些东西).配置完成后,我需要确保tomcat服务再次启动并运行.我写过以下木偶代码:

Service {'tomcat': ensure => stopped }
->
class {'config':}
->
Service {'tomcat': ensure => running }
Run Code Online (Sandbox Code Playgroud)

在木偶申请时,它抱怨说

'错误:重复声明:服务[tomcat]已在文件中声明'

如何解决这个问题.木偶停止服务,执行某些操作然后再次恢复服务的方法是什么?

puppet

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

Jenkins - lastFailedBuild 与 lastUnstableBuild 与 lastUnSuccessfulBuild 之间有什么区别?

Jenkins 中的 lastFailedBuild 与 lastUnstableBuild 与 lastUnSuccessfulBuild 之间有什么区别?

jenkins

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

在实际应用或执行之前验证 yaml 中定义的 OpenShift 对象

我在 template.yaml 文件中有一个 OpenShift 模板,其中包括以下对象 - 部署配置、pod、服务和路由。我正在使用以下命令来执行 yaml:

oc process -f template.yml | oc apply -f -
Run Code Online (Sandbox Code Playgroud)

我想在实际应用/执行 yaml 之前执行以下验证:

  1. YAML 语法验证 - 如果 YAML 语法有任何问题。
  2. OpenShift 模式验证 - 检查对象定义是否符合 OpenShift 对象模式。

似乎命令“oc process”正在执行以下检查:

  1. 基本的 YAML 语法验证
  2. 模板对象架构验证

如何对 template.yaml 中定义的其他对象(例如部署配置、服务、pod 等)执行模式验证?

openshift openshift-origin

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

了解JDK 7 - 尝试使用资源

我是.net开发人员.最近,我对比较java和c#感兴趣.我发现Java的try-with-resources相当于C#的使用块.但是,我无法完全理解它.我知道C#的using块是一种语言特性,编译器为它生成代码.我希望对资源尝试有更多的了解,并且几乎没有问题:

  1. 它是一个类似于C#使用块的语言功能吗?

  2. 以下内容的等效JDK 6代码是什么:

    try(SomeResource resource = new SomeResource())
    {
        //Some logic
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. 以下内容的等效JDK 6代码是什么:

    try(SomeResource resource = new SomeResource())
    {
        //Some logic
    }
    catch(SomeException ex)
    {
    }
    
    Run Code Online (Sandbox Code Playgroud)
  4. 什么是Java相当于C#的Reflector或ILSpy工具?即工具来反汇编Java字节码类文件并查看它的Java代码.

c# java java-7 try-with-resources

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

无法编译包含泛型和内部类的代码

我正在尝试实施单一链接列表.我无法编译以下代码.我已从以下代码段中删除了许多与此问题无关的不必要代码:

public class SinglyLinkedList<T>
{
    public SinglyLinkedList()
    {
    }

    private SinglyNode<T> _head = null;

    private class SinglyNode<T>
    {
        public T Data { get; set; }
        public SinglyNode<T> Next { get; set; }
    }

    private class Enumerator<T>
    {
        public Enumerator(SinglyLinkedList<T> list)
        {
            _list = list; //#1
            _head = list._head; //#2
        }

        private SinglyLinkedList<T> _list = null;
        private SinglyNode<T> _head = null;
    }
}
Run Code Online (Sandbox Code Playgroud)

标记为#2的语句失败并出现错误 - Cannot implicitly convert type 'SinglyLinkedList<T>.SinglyNode<T>' to 'SinglyLinkedList<T>.SinglyNode<T> Program.cs

标记为#1的语句在语义上类似于#2并且正在编译.什么阻止程序编译?是否存在导致上述代码无法编译的genercis +内部类相关规则?

请注意上面的代码片段是我学习的一部分,通过重新发明轮子而不是生产代码.

.net c# generics inner-classes

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