我正在阅读关于服务的Grails文档,这些文档多次提到事务/事务性,但没有真正定义事务服务方法的真正含义.
鉴于服务的性质,它们经常需要交易行为.
这到底是什么意思?是交易方法只有那些使用JPA/JDBC来与关系数据库进行通信,或者说它们适用于任何由JTA覆盖?
是否有任何理由为什么我不会制作服务类@Transactional以防万一它发展到有一天使用交易?换句话说,是否存在使所有服务方法具有交易性能的性能问题?
我正在阅读React的Facebook教程.大约40%的过程中,有一个名为" 为什么不变性是重要的"一节(关于不变性的重要性):
最终结果是相同的,但通过不直接改变(或更改底层数据),我们现在有一个额外的好处,可以帮助我们提高组件和整体应用程序性能.
我的问题是:为什么/如何?也就是说,在React中,具体为什么/如何使用不变性(使用Object.assign(...)等)"有助于提高......整体应用程序性能"?
我有以下 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) 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秒运行一次,等等。
我有下表:
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) 我试图弄清楚如何将版本化的 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 如何知道要发布哪个(标记/版本化)容器?我花了最后6个小时阅读流行语,高级,高级文档/博客/文章/幻灯片,试图完全围绕OpenStack .我明白那个:
OpenStack是一个免费的开源云计算软件平台.用户主要将其部署为基础架构即服务(IaaS)解决方案.
但同样,这是一个非常崇高,高水平,有光泽的细节总结,对我作为一名工程师来说并没有什么意义.
我认为我得到了基本的概念,但是想要反省我的理解,另外我很难看到关于OpenStack组件主题的"穿越树林".
我的理解是OpenStack:
所以,如果到目前为止我所说的关于OpenStack的任何内容都不正确,请先纠正我!
假设我或多或少是正确的,我对各种OpenStack组件的理解是它们实际上只是API并且需要开源社区提供具体的实现:
以上,我相信所有组件都是API.但是这些API必须具有对OpenStack部署者/维护者有意义的实现.所以我想象有多个Neutron API提供商,多重Nova API提供商等等.但是,在今天早上审阅了所有官方文档之后,我找不到这些API的提供者.这让我感到恶心,就像我从根本上误解了OpenStack的组件一样.有人可以帮我点点滴滴吗?
virtualization cloud-platform openstack openstack-nova openstack-neutron
我的第一个(曾经)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) 注意:此处的完整源代码.
我使用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项目文件中遗漏了一些东西:
任何想法我可以改变,以便IntelliJ显示编译器错误,以便我可以添加新的Scala源文件?
我有一个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,我最后一次检查...
请注意:尽管我提到Java 8,但我认为这里的答案确实与语言无关。
我正在构建一个简单的Java 8 Web服务,该服务将汇总各种主题的RSS feed,并根据请求提供其内容。之前我从未使用过RSS,发现的所有视频都只是关于如何为您的la脚博客生成RSS文件的,而我在“ Java和RSS ”上找到的所有文章都只是解析XML的示例。
我很好奇:RSS是否可以作为推或拉?
http://rss-a.example.com/rss/news.rss)。他们的服务器是否以某种方式向我的后端发送了一条消息,提醒我的支持者更新已准备就绪?要么另外,像ROME这样的Java库如何捕捉到上述任一推/拉体系结构中?
我正在尝试通过以下方式对字符串列表(将包含字母数字字符以及标点符号)进行排序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)
为什么为空?
scala ×4
classloader ×1
collections ×1
cron ×1
docker ×1
foreign-keys ×1
gradle ×1
grails ×1
hashset ×1
immutability ×1
java ×1
javascript ×1
jta ×1
list ×1
mysql ×1
openstack ×1
performance ×1
reactjs ×1
regex ×1
rome ×1
rss ×1
service ×1
sorting ×1
spring-boot ×1
sql ×1
sql-insert ×1
transactions ×1
versioning ×1
xml ×1