小编Edw*_*rzo的帖子

单身继承

如何从单例类继承到需要相同功能的其他类?这样的事情会有意义吗?

singleton design-patterns

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

JavaScript执行引擎未指定?

我最近开始学习JavaScript.我一直在用Node.jsAngular创建应用程序几个月了.

令我困惑的一个主要方面是如何在JavaScript中编写异步代码,我不必担心线程同步,竞争条件等问题.

所以,我发现了一些有趣的文章([1],[2]),这些文章解释了我如何能够保证我编写的任何代码片段当时都会由一个线程执行.最重要的是,我的所有异步代码都被安排在事件循环中的某个时刻执行.这听起来非常类似于OS调度程序可以在具有单个处理器的机器中工作,其中每个进程被安排在有限的时间内使用处理器,给我们假的并行感.回调就像中断.

文章没有提供任何特定的参考,所以我认为关于JavaScript执行引擎如何工作的最佳来源当然应该是语言规范,所以我给了我最新的EcmaScript 5.1副本.

令我惊讶的是,我发现在那里没有指定这种执行行为.怎么会?这看起来像是在浏览器和节点中的所有JavaScript执行引擎中完成的基本设计选择.有趣的是,我无法找到为任何特定引擎指定的地方.事实上,我不知道人们如何发现这是事情的工作方式,在上面引用的书籍和博客中如此明确地肯定.

所以,我有一套我认为有趣的问题.我很感激任何提供见解,评论或简单参考的答案,指出我正确的方向,以了解以下内容:

  • 由于EcmaScript没有指定JavaScript执行引擎应该使用事件循环,为什么JavaScript的实现似乎以这种方式工作,不仅在浏览器中,而且在Node.js中?
  • 这是否意味着我可以实现一个与EcmaScript兼容的新JavaScript引擎,它实际上提供了具有诸如同步锁,条件等功能的真正多线程功能?
  • 如果我想执行一个强大的CPU绑定任务,这个使用事件循环的执行模型是否阻止我利用多核?我的意思是,我可以肯定地将任务划分为块(如其中一篇文章中所述),但这仍然是串行执行的,而不是并行执行.那么,JavaScript引擎如何利用多核来运行我的代码呢?
  • 您是否知道任何其他信誉良好的来源,其中任何特定的JavaScript引擎实现的这种行为是正式指定的?
  • 如果我们不能假设有关执行环境的一些事情,那么代码如何在库和引擎之间移植?

看起来有太多问题,也许这个帖子太宽泛而无法回答.如果它被关闭,我将尝试在不同的线程中询问它们.但它们都围绕着这样一个事实:我想更好地理解为什么JavScript和Node是用事件循环设计的,如果在某处(除了浏览器源代码)指定了我可以阅读并更深入地了解设计和决策在这里,更重要的是,要确切地知道人们撰写有关它的书籍和帖子的信息来源.

javascript multithreading asynchronous node.js ecmascript-5

11
推荐指数
2
解决办法
549
查看次数

在 java 中编写自定义 jdbc 驱动程序一个非常基本的

由于某些 BI 工具软件限制,我需要通过 JDBC 公开 Web 服务。
非常有限的支持需要很少的定义的选择查询。
据我所知,我需要在接口 java.sql 下实现所有类才能实现这一点。有没有人做过类似的事情?
我们是否有一些自定义实现,我们需要实现最少的代码。

java jdbc driver

9
推荐指数
4
解决办法
8759
查看次数

功能规划的分析与设计

当您计划使用像Haskell这样的函数式编程语言开发系统时,如何处理分析和设计阶段?

我的背景是命令式/面向对象的编程语言,因此,我习惯使用案例分析和使用UML来记录程序的设计.但事实是,UML本质上与面向对象的软件方式有关.

我很感兴趣的是,为将要使用函数式编程开发的系统开发文档和定义软件设计的最佳方法是什么.

  • 您是否仍会使用用例分析结构化分析和设计
  • 软件架构师如何定义系统的高级设计,以便开发人员遵循它?
  • 当您应该展示解决方案的设计时,您向客户或新开发人员展示了什么?
  • 如何在不首先编写所有内容的情况下记录整个图片?
  • 在功能世界中有没有可与UML相媲美的东西?

haskell functional-programming analysis software-design purely-functional

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

Java - SAM类型优化

工作文件描述的状态Lambda项目提到所谓的SAM(一个抽象方法)的类型.据我所知,当前的lambda建议不会影响运行时只是编译器,可以实现从lambda表达式到这些类型的自动转换.

我认为在理想情况下,SAM类型的实例可以由函数指针在内部表示.因此,JVM可以避免为这些实例分配内存.

我想知道现代虚拟机是否能够提供这样的优化.

java optimization jvm internals java-8

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

是否有与嵌套类关联的构造函数

我想知道是否有任何构造函数涉及内部类.例如,考虑下面给出的代码片段

class MyOuter
{
   private int x= 10;

   class MyInner
   {
      void dostuff(){
         System.out.println("The value of x is "+x);
      }
   }
}
Run Code Online (Sandbox Code Playgroud)

在另一个java文件中,我为MyOuter和MyInner类创建实例,如下所示

Class Program
{
   public static void main(String [] args)
   {
      MyOuter mo = new MyOuter();
      MyOuter.MyInner mi = mo.new MyInner();
      mi.dostuff();
   }
}
Run Code Online (Sandbox Code Playgroud)

上面的代码片段编译得很好并且输出"x的值是10".

我想知道的是当new()与MyInner类和MyOuter类一起使用时是否调用构造函数.如果是,那么是否有任何构造函数从内部类链接到外部类(如子类调用超类的构造函数,依此类推).

java constructor inner-classes

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

使用AsyncRestTemplate Netty客户端的Spring启动失败

我有一个Spring Boot 1.3.6应用程序,开箱即用并使用嵌入式Tomcat服务器.应用程序有一个端点执行非常简单的echo请求.

后来我定义了一个相应的客户端调用该简单端点使用AsyncRestTemplate,但是如果我的客户端使用Netty4ClientHttpRequestFactory该请求失败,否则它会成功.

我下面的例子是在Kotlin中,但它在Java中失败的情况也是如此,所以它与我用来实现它的语言没有关系.

服务器

@SpringBootApplication
open class EchoApplication {

    companion object {
       @JvmStatic fun main(args: Array<String>) {
          SpringApplication.run(EchoApplication::class.java, *args)
       }
    }

    @Bean
    open fun objectMapper(): ObjectMapper {
        return ObjectMapper().apply {
            dateFormat = SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX")
            registerModule(KotlinModule())
        }
    }

    @Bean
    open fun customConverters(): HttpMessageConverters {
        return HttpMessageConverters(listOf(MappingJackson2HttpMessageConverter(objectMapper())))
    }
}
Run Code Online (Sandbox Code Playgroud)

我的端点看起来像这样:

@RestController
class EchoController {

    @RequestMapping(value="/foo", method = arrayOf(RequestMethod.PUT))
    fun echo(@RequestBody order: Order): Order {
        return order
    }

}
Run Code Online (Sandbox Code Playgroud)

订单数据类是

data class Order(val orderId: String)
Run Code Online (Sandbox Code Playgroud)

注意:由于我使用Kotlin,我还添加了Kotlin Jackson模块 …

java spring netty kotlin spring-boot

7
推荐指数
1
解决办法
2025
查看次数

并发观察者模式

如果我遇到以下情况:

ObserverA,ObserverB,ObserverC都继承自AbstractObserver.

我创建了一个观察者列表:

List<AbstractObserver> list = new ArrayList<AbstractObserver>();
list.add(new ObserverA());
list.add(new ObserverB());
list.add(new ObserverC());
Run Code Online (Sandbox Code Playgroud)

并且具有以下方法的某种处理程序在"MAIN"线程中运行:

public void eat(Food item) {
     for(AbstractObserver o : list) {
          o.eatFood(item);
     }
}

public void drink(Coffee cup) {
     for(AbstractObserver o : list) {
          o.drinkCoffee(cup);
     }
}
Run Code Online (Sandbox Code Playgroud)

我如何设计一个系统,我可以在不同的线程中运行每个eatFood和drinkCoffee方法的观察者?具体来说,当"MAIN"线程收到事件(饮料或吃方法被调用)时,如何在ObserverA,ObserverB和ObserverC中运行自己的线程中的eatFood或drinkCoffee方法?

我想为每个AbstractObserver子类实例设置不同的线程,因为目前我正在按顺序通知每个观察者,这可能会导致延迟.

java concurrency multithreading observer-pattern

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

谁在Java中提供默认构造函数?编译器还是JVM?

构造函数是在运行时还是编译时添加的?(我想这是编译时).在JVM架构级别,我需要一些深入的解释.

我阅读了各种文章..有些人说编译器......还有其他人说JVM.我想非常肯定(证明会有很多帮助).

对不起,如果问题是愚蠢的(我还在消化术语)!

提前致谢.

java constructor jvm default-constructor

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

参数函数的Scala类型推断问题

这些天我一直在学习Scala,今天我遇到了一些我无法理解的问题.

假设我们有以下参数函数定义:

def filter[T](source: List[T], predicate: T=>Boolean): List[T] = {
    source match {
        case Nil => Nil
        case x::xs => if(predicate(x)) x::filter(xs, predicate)
                  else filter(xs, predicate)
    }
}
Run Code Online (Sandbox Code Playgroud)

现在,如果我按如下方式调用它,这可以正常工作:

filter(List(1,2,3,4,5,6), ( (n:Int) => n % 2 == 0))
Run Code Online (Sandbox Code Playgroud)

但是如果删除类型标记,则看起来Scala无法推断出T的类型是Int.

filter(List(1,2,3,4,5,6), ( n => n % 2 == 0))
Run Code Online (Sandbox Code Playgroud)

所以,我被迫在这次调用中提供显式类型信息.

有没有人知道为什么Scala无法在此调用中推断出T的类型.该列表显然是Ints列表,我不明白为什么它不能推断出n的类型也是Int.

scala type-inference

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