小编sme*_*eeb的帖子

什么是Grails"交易"服务?

我正在阅读关于服务的Grails文档,这些文档多次提到事务/事务性,但没有真正定义事务服务方法的真正含义.

鉴于服务的性质,它们经常需要交易行为.

这到底是什么意思?是交易方法只有那些使用JPA/JDBC来与关系数据库进行通信,或者说它们适用于任何由JTA覆盖?

是否有任何理由为什么我不会制作服务类@Transactional以防万一它发展到有一天使用交易?换句话说,是否存在使所有服务方法具有交易性能的性能问题?

service grails transactions jta

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

为什么以及如何在React中提高应用程序性能?

我正在阅读ReactFacebook教程.大约40%的过程中,有一个名为" 为什么不变性是重要的"一节(关于不变性的重要性):

最终结果是相同的,但通过不直接改变(或更改底层数据),我们现在有一个额外的好处,可以帮助我们提高组件和整体应用程序性能.

我的问题是:为什么/如何?也就是说,在React中,具体为什么/如何使用不变性(使用Object.assign(...)等)"有助于提高......整体应用程序性能"?

javascript performance immutability reactjs

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

动态类加载 Scala 类型

我有以下 Scala 类层次结构:

abstract class BaseModule(val appConf : AppConfig) {
  // ...
}

class SimpleModule(appConf : AppConfig) extends BaseModule(appConf) {
  // ...
}

class FairlyComplexModule(appConf : AppConfig) extends BaseModule(appConf) {
  // ...
}

// dozens of other BaseModule subclasses...
Run Code Online (Sandbox Code Playgroud)

在运行时,我的应用程序将接受BaseModule要实例化的子类的完全限定类名的 String 输入参数,但代码不知道它将是哪个具体子类。所以我有:

val moduleFQCN = loadFromInputArgs()  // ex: "com.example.myapp.SimpleModule"
val moduleClass = Class.forName(moduleFQCN)
println(s"Found ${moduleFQCN} on the runtime classpath.")
val module = Class.forName(moduleFQCN).getConstructor(classOf[AppConfig]).newInstance(appConf).asInstanceOf[BaseModule]
Run Code Online (Sandbox Code Playgroud)

因此,通过这种方式,输入指定BaseModule要在类路径上查找的子类,然后再进行实例化。上面的前三行执行得很好,我看到了println火。但是上面的最后一行抛出了一个异常:

Exception in thread "main" java.lang.reflect.InvocationTargetException
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) …
Run Code Online (Sandbox Code Playgroud)

scala classloader

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

使Spring Boot cron任务可配置

Spring Boot允许您创建后台“ cron式”任务,如下所示:

@Component
public class MyTask {
    // Every hour on the hour
    @Scheduled(cron = "0 0 0/1 1/1 * ? *")
    public void doSomething() {
        // blah whatever
    }
}
Run Code Online (Sandbox Code Playgroud)

这使得自动集成测试有点困难!我不必只花一个小时就可以运行集成测试,而不必等一下,如果我的任务在一个小时的高峰时间运行,会发生什么。我也不必等待近一个小时运行测试,以便可以在小时内确认正确的行为!

有没有办法使这些cron值可配置?这样,如果我想以“测试模式”运行我的应用程序,则可以安排该MyTask#doSomething()方法每30秒运行一次,等等。

cron scheduled-tasks spring-boot

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

无法插入行并获取外键约束失败错误

我有下表:

CREATE TABLE IF NOT EXISTS profile_claim_ruling_tasks (
    profile_claim_ruling_task_id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
    account_id BIGINT UNSIGNED NOT NULL,
    profile_id BIGINT UNSIGNED NOT NULL,
    admin_task_status_id BIGINT UNSIGNED NOT NULL,
    profile_claim_ruling_task_ref_id VARCHAR(36) NOT NULL,
    profile_claim_ruling_task_requested_at DATETIME NOT NULL,

    CONSTRAINT pk_profile_claim_ruling_tasks PRIMARY KEY (profile_claim_ruling_task_id),
    CONSTRAINT fk_profile_claim_ruling_task_account_id FOREIGN KEY (account_id) REFERENCES accounts (account_id),
    CONSTRAINT fk_profile_claim_ruling_task_profile_id FOREIGN KEY (profile_id) REFERENCES accounts (profile_id),
    CONSTRAINT fk_profile_claim_ruling_task_admin_task_status_id FOREIGN KEY (admin_task_status_id) REFERENCES admin_task_statuses (admin_task_status_id),

    INDEX idx_profile_claim_ruling_tasks_admin_task_status_id(admin_task_status_id),

    CONSTRAINT uc_profile_claim_ruling_tasks_profile_claim_ruling_tasks_ref_id UNIQUE (profile_claim_ruling_task_ref_id)
);
Run Code Online (Sandbox Code Playgroud)

当我进行以下操作SELECT *accounts

+------------+--------------------------------------+------------+ …
Run Code Online (Sandbox Code Playgroud)

mysql sql foreign-keys sql-insert

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

通过示例将容器发布到 Quay

我试图弄清楚如何将版本化的 Docker 容器发布到 Quay.io,但在他们的文档中没有看到如何这样做。从文档:

# Login to Quay.io
docker login quay.io (will now be prompted for username + password)

# Get your <containerID>
docker ps -l

# Tag that container by <containerId>
docker commit <containerId> quay.io/<myUsername>/<myRegistry>

# Now publish it to Quay.io
docker push quay.io/<myUsername>/<myRegistry>
Run Code Online (Sandbox Code Playgroud)

然而这让我很困惑:

  • 如果我想要我的容器标记/版本化,例如,1.0.0-SNAPSHOT, or 1.0-rc, or 2.0or3.1.6-G.A怎么办?我在哪里指定实际的标签名称/版本?
  • 当我运行docker push命令时,Docker 如何知道要发布哪个(标记/版本化)容器?

versioning docker

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

OpenStack API实现

我花了最后6个小时阅读流行语,高级,高级文档/博客/文章/幻灯片,试图完全围绕OpenStack .我明白那个:

OpenStack是一个免费的开源云计算软件平台.用户主要将其部署为基础架构即服务(IaaS)解决方案.

但同样,这是一个非常崇高,高水平,有光泽的细节总结,对我作为一名工程师来说并没有什么意义.

认为我得到了基本的概念,但是想要反省我的理解,另外我很难看到关于OpenStack组件主题的"穿越树林".

我的理解是OpenStack:

  • 在1+个虚拟机(来宾VM)上作为可执行应用程序安装; 和
  • 不知何故,您的OpenStack集群的所有实例都相互了解(即,您刚安装它们的所有虚拟机上运行的所有实例)并形成一个集合资源池; 和
  • 每个OpenStack实例(再次在其自己的VM中运行)包含仪表板应用程序("Horizo​​n")以及10个左右的其他组件/模块(Nova,Cinder,Glance等); 和
  • Nova,是CRUD为您的租户提供虚拟机/节点的OpenStack组件/模块,它能够以某种方式将其运行的客户虚拟机转换为自己的虚拟机管理程序,并在其内部启动1+个虚拟机(因此您拥有VM内部的VM)适用于任何特定租户

所以,如果到目前为止我所说的关于OpenStack的任何内容都不正确,请先纠正我!

假设我或多或少是正确的,我对各种OpenStack组件的理解是它们实际上只是API并且需要开源社区提供具体的实现:

  • Nova(VM经理)
  • Keystone(auth提供商)
  • Neutron(网络经理)
  • Cinder(块存储管理器)
  • 等等...

以上,我相信所有组件都是API.但是这些API必须具有对OpenStack部署者/维护者有意义的实现.所以我想象有多个Neutron API提供商,多重Nova API提供商等等.但是,在今天早上审阅了所有官方文档之后,我找不到这些API的提供者.这让我感到恶心,就像我从根本上误解了OpenStack的组件一样.有人可以帮我点点滴滴吗?

virtualization cloud-platform openstack openstack-nova openstack-neutron

0
推荐指数
1
解决办法
341
查看次数

Scala相当于'匹配'正则表达式方法?

我的第一个(曾经)Scala正则表达式在这里苦苦挣扎.我需要查看给定的String是否与正则表达式匹配:" animal<[a-zA-Z0-9]+,[a-zA-Z0-9]+>".

所以,举一些例子:

animal<0,sega>          =>    valid
animal<fizz,buzz>       =>    valid
animAl<fizz,buzz>       =>    illegal; animAl contains upper-case (and this is case-sensitive)
animal<fizz,3d>         =>    valid
animal<,3d>             =>    illegal; there needs to be something [a-zA-Z0-9]+ between '<' and ','
animal<fizz,>           =>    illegal; there needs to be something [a-zA-Z0-9]+ between ',' and '>'
animal<fizz,%>          =>    illegal; '%' doesn't match [a-zA-Z0-9]+
etc.
Run Code Online (Sandbox Code Playgroud)

到目前为止我最好的尝试:

val animalRegex = "animal<[a-zA-Z0-9]+,[a-zA-Z0-9]+>".r
animalRegex.findFirstIn("animal<fizz,buzz")
Run Code Online (Sandbox Code Playgroud)

不幸的是,那是我撞砖墙的地方.findFirstIn以及所有animalRegex返回Option[String]类型可用的所有其他明显方法.我希望找到一个返回布尔值的东西,所以类似于:

val animalRegex = "animal<[a-zA-Z0-9]+,[a-zA-Z0-9]+>".r
if(animalRegex.matches("animal<fizz,buzz>")) {
    val leftOperand : String …
Run Code Online (Sandbox Code Playgroud)

regex scala

0
推荐指数
1
解决办法
99
查看次数

如何将build.gradle导入IntelliJ

注意:此处的完整源代码.

我使用Gradle Init插件创建了一个Scala库:

gradle init --type scala-library
Run Code Online (Sandbox Code Playgroud)

然后我修改它build.gradle以生成Gradle 2.13的包装器.然后我跑了:

gradle wrapper
Run Code Online (Sandbox Code Playgroud)

生成包装器.最后我跑了:

./gradlew clean idea
Run Code Online (Sandbox Code Playgroud)

我在IntelliJ社区中打开了这个项目.我修改了Library.scala(Gradle Init插件创建的)包含明显的Scala编译器错误,但注意到错误没有显示为红色下划线:

在此输入图像描述

然后我右键单击该src/main/scala目录,发现没有添加Scala源文件包的选项.或者任何JVM(.java等)文件:

在此输入图像描述

我认为Gradle Init插件存在缺陷(scala-library至少对于类型)或者Gradle IDEA插件存在缺陷.无论哪种方式,我想我在我的一个IntelliJ项目文件中遗漏了一些东西:

  • IML; 要么
  • 知识产权; 要么
  • IWS

任何想法我可以改变,以便IntelliJ显示编译器错误,以便我可以添加新的Scala源文件?

scala intellij-idea gradle

0
推荐指数
1
解决办法
4602
查看次数

Scala的HashSet似乎没有实现Set?

我有一个Scala类:

class Example {
    def fooBar() : String = {
        // do some stuff

        var whistles = new HashSet[String]()
        fizzBuzz(whistles)

        // do some more stuff
    }

    def fizzBuzz(whistles : Set[String]) : Unit = {
        // do some stuff down here
    }
}
Run Code Online (Sandbox Code Playgroud)

当我调用fizzBuzz方法时(从内部fooBar),这给了我编译器错误,说明:

类型不匹配; found:java.util.HashSet [String] required:设置[String]

我在这里想念的是什么?!? HashSet实施Set,我最后一次检查...

scala hashset

0
推荐指数
1
解决办法
162
查看次数

RSS是否推送或提取更新?

请注意:尽管我提到Java 8,但我认为这里的答案确实与语言无关。


我正在构建一个简单的Java 8 Web服务,该服务将汇总各种主题的RSS feed,并根据请求提供其内容。之前我从未使用过RSS,发现的所有视频都只是关于如何为您的la脚博客生成RSS文件的,而我在“ Java和RSS ”上找到的所有文章都只是解析XML的示例。

我很好奇:RSS是否可以作为推或拉

  • “推”的意思是:说“ RSS feed A”在其服务上发布对其RSS文件的更新(例如http://rss-a.example.com/rss/news.rss)。他们的服务器是否以某种方式向我的后端发送了一条消息,提醒我的支持者更新已准备就绪?要么
  • “拉”的意思是:我的后端是否只负责每n秒对所有RSS feed URL进行ping操作,并在其发布时提取新内容?

另外,像ROME这样的Java库如何捕捉到上述任一推/拉体系结构中?

xml rss rome

0
推荐指数
1
解决办法
1031
查看次数

Java Collections.sort 对字符串列表进行排序时返回 null

我正在尝试通过以下方式对字符串列表(将包含字母数字字符以及标点符号)进行排序Collections.sort

public class SorterDriver {
    public static void main(String[] args) {
        List<String> toSort = new ArrayList<String>();

        toSort.add("fizzbuzz");
        System.out.println("toSort size is " + toSort.size());

        List<String> sorted = Collections.sort(toSort);
        if(sorted == null) {
            System.out.println("I am null and sad.");
        } else {
            System.out.println("I am not null.");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

当我运行这个时,我得到:

toSort size is 1
I am null and sad.
Run Code Online (Sandbox Code Playgroud)

为什么为空?

java sorting collections list

-1
推荐指数
1
解决办法
2922
查看次数