小编ams*_*ams的帖子

SQL查询解释的结果是否取决于数据库的大小?

我的应用程序使用JPA和Hibernate,我看到hibernate生成了一些有趣的SQL查询,我的日志文件中有很多连接.该应用程序现在没有很多用户,我担心hibernate生成的一些查询会在数据库大小增加时引起问题.

我已经通过EXPLAIN命令运行了hibernate生成的一些sql查询来查看生成的查询计划.

  1. EXPLAIN的输出是否依赖于数据库的大小?当我的数据库大小增加时,查询规划器会为相同的SQL查询生成不同的计划吗?

  2. 在开发/部署周期的哪个阶段我应该查看由hibernate生成的SQL查询的SQL查询计划?什么时候使用EXPLAIN.

  3. 当数据库如此之小以至于每个查询无论在0.5秒内运行的复杂程度如何时,如何使用解释的输出来确定查询是否会成为问题?

我使用Postgres 9.1作为我的应用程序的数据库,但我对上述问题的一般答案感兴趣.

mysql sql sql-server oracle postgresql

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

当负载执行时调用无效时,Google Guava LoadingCache会执行什么操作?

我有一个Google番石榴缓存,它从数据库加载数据并使用主键缓存它.我最终从数据库创建的对象是不可变的,构建对象需要访问多个表.在以下场景中会发生什么:

  • 线程1:调用cache.load(10),并根据值为10的数据库主键填充缓存
  • 线程2:用主键10更新数据库行,因此它调用cache.invalidate(10)在cache.load(10)完成之前调用invalidate.

当load(x)执行时调用invalidate(x)时,Guava Loading Cache会做什么?

concurrency caching guava

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

如何监视Postgres中尚未提交的事务进行调试?

是否有postgres工具,允许我监视一个事务并运行查询,就像我是该事务的一部分一样.

我的java代码有一个断点,它已启动一个事务但尚未提交事务,因为它正在等待一个断点.我想要做的是能够以事务看待它的方式查看数据库的状态.

理想情况下,我想要一个工具,让我有一个类型的SQL控制台,我可以输入东西作为该tx的一部分,所以我可以编写select语句来查看尚未提交的东西.

我只需要这个工具用于我的开发工作站,我使用postgres 9.1但如果需要可以轻松升级到9.2或9.3.

postgresql transactions

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

如何从Spring JPA中的方法名称关闭查询创建?

在Spring Data中是否可以从方法名称关闭查询生成?

鉴于界面

public interface UserRepository extends Repository<User, Long> {

  List<User> findByEmailAddressAndLastname(String emailAddress, String lastname);
}
Run Code Online (Sandbox Code Playgroud)

我希望spring security能够产生一个错误,说明从方法名称生成查询已被关闭,请使用显式@Query注释,如此.

public interface UserRepository extends Repository<User, Long> {

  @Query("select u from User u where u.emailAddress = ?1 and u.lastname = ?2")
  List<User> findByEmailAddressAndLastname(String emailAddress, String lastname);
}
Run Code Online (Sandbox Code Playgroud)

我想关闭自动查询生成,因为我认为更容易阅读查询并知道发生了什么,而不是阅读方法名称并转换为Spring数据将生成的查询,同样在大型团队中有很多开发人员可能还不熟悉Spring数据@Query更具可读性?

如何从Spring JPA中的方法名称关闭查询创建?

java spring spring-data spring-data-jpa

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

pubspec.yaml中的配置标志如何工作?

我正在学习Flutter和Dart。我注意到该pubspec.yaml文件似乎不仅包含第三方库的依赖版本。例如。

# The following section is specific to Flutter.
flutter:
  uses-material-design: true
Run Code Online (Sandbox Code Playgroud)

我了解Dart Pub工具定义了的格式,pubspec.yaml并且像Flutter这样的框架似乎可以pubspec.yaml通过额外设置来增强,提出了以下问题:

  • pubspec.yaml设计用来提供配置标志或只依赖呢?
  • 颤动方式是使用pubspec.yaml惯用的Dart还是独特的?
  • 难道pubspec.yaml只能由分析pub工具,或者它在运行时解析为一个通用的应用程序配置文件?
  • Flutter是否实现自己的解析器pubspec.yamluses-material-design: true在运行时提供可用的设置?

dart dart-pub flutter flutter-dependencies

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

flutter 在哪个线程/隔离上运行 IO 操作?

例如,在使用 http 包或进行常规 IO 操作时出现抖动

import 'package:http/http.dart' as http;

http.Response response = await http.get(url);
if (response.statusCode == 200) {
  var json = jsonDecode(response.body); 
}
Run Code Online (Sandbox Code Playgroud)

我已经阅读了引擎架构,它表明引擎中有 4 个线程

  • 平台任务运行器
  • 用户界面任务运行器
  • GPU 任务运行器
  • IO 任务运行器

主应用程序 dart 代码在 UI Task Runner 线程上运行。IO 任务运行器似乎只是让 dart 引擎读取图像处理耗时的图像 IO 而不是应用程序 IO 发生的地方?

我知道 IO 库具有基于 Future 的无阻塞接口,因此我提供给 IO 库的回调将在 UI 线程上运行,但是实际的 IO 操作本身是否存在 Dart VM 用于执行这些操作的操作系统线程操作?

例如,如果我尝试上传/下载一个 800MB 的视频文件,是否有 Dart VM 使用的后台 IO 线程执行实际 IO?

是否应该将单独的隔离用于大型 IO 操作,例如上传/下载大文件?

dart dart-isolates flutter

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

如何处理Google Guava Cache刷新异常?

Google Guava缓存文档指出:

刷新与驱逐并不完全相同.正如在LoadingCache.refresh(K)中指定的那样,刷新密钥会加载密钥的新值,可能是异步的.在刷新密钥时仍会返回旧值(如果有),这与逐出驱动相反,后者强制检索等待,直到重新加载该值.

如果在刷新时抛出异常,则保留旧值,并记录并吞下异常.

在我的用例中,这种异常的记录和吞没非常糟糕,因为这意味着如果刷新抛出异常,则缓存的用户将继续在Cache中找到陈旧数据.

如何确保如果在刷新时抛出异常,缓存开始返回null或调用load方法?

guava

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

如何访问PostgreSQL pg_log文件夹而不是postgres用户并遇到权限问题?

在我的mac os x开发机器上,我安装了postgres 9.1 /Library/PostgreSQL/9.1并且PostgreSQL的数据目录在/Library/PostgreSQL/9.1/data我已经配置了日志记录,所以我从postgres获得了关于在服务器上执行什么SQL查询的好日志....等等这些都写给/Library/PostgreSQL/9.1/data/pg_log我使用企业db预打包的postgres二进制文件.

问题是$ PGDATA由运行postgres进程的postgres用户拥有.当我更改了数据目录的权限时,chmod o+xr datapostgres拒绝启动并告诉我它不能以postgres目录开始,除了postgres用户之外还有权限.

FATAL:  data directory "/Library/PostgreSQL/9.1/data" has group or world access
DETAIL:  Permissions should be u=rwx (0700)
Run Code Online (Sandbox Code Playgroud)

只是为了获取日志文件而不得不进出postgres dir是很烦人的.

在Mac OS X上配置postgres日志记录的好方法是什么,以便从登录的任何用户轻松访问日志文件,而不必使用sudo或成为postgres用户?

更新请参阅下面的答案,了解我过去使用的确切配方.

postgresql macos

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

Spring MVC选择了错误的控制器方法

在我的应用程序中,我遇到一种情况,即spring mvc始终选择错误的控制器方法来执行.从下面的弹簧调试日志显示问题,它找到两个匹配一个用于我的通用处理所有未映射的映射控制器映射到/api/**和一个用于实际的东西我正在寻找api/companies/2/records/cabinets/FileTypes/50/1spring mvc然后选择/api/**处理程序通过更具体的处理程序它找到.

我对spring的理解是,如果请求映射有两个匹配项,那么spring将使用更长的url选择handle方法.为什么spring mvc选择较短的映射?

给定以下映射:

  • /api/companies/{id}/records/cabinets/FileTypes/{fileTypeId}/{versionId} 映射到method1
  • /api/** 映射到method2

api/companies/2/records/cabinets/FileTypes/50/1应该将mvc选择的路径作为上述两个url的处理程序方法.

这里是调试日志的相关行.

17:58:49,858 DEBUG [DispatcherServlet] DispatcherServlet with name 'main' processing PUT request for [/web/api/companies/2/records/cabinets/FileTypes/50/1]
17:58:49,858 TRACE [DispatcherServlet] Testing handler map [org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping@2b25f2be] in DispatcherServlet with name 'main'
7:58:49,858 DEBUG [RequestMappingHandlerMapping] Looking up handler method for path /api/companies/2/records/cabinets/FileTypes/50/1
17:58:49,859 TRACE [RequestMappingHandlerMapping] Found 2 matching mapping(s) for [/api/companies/2/records/cabinets/FileTypes/50/1] : [{[/api/**],methods=[PUT],params=[],headers=[],consumes=[],produces=[],custom=[]}, {[/api/companies/{id}/records/cabinets/FileTypes/{fileTypeId}/{versionId}],methods=[PUT],params=[],headers=[],consumes=[],produces=[],custom=[]}]
Run Code Online (Sandbox Code Playgroud)

spring spring-mvc

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

如何使用注释在testng + maven中分离单元和集成测试?

maven故障安全插件需要能够区分单元测试和集成测试.似乎在使用JUnit时,一种分离测试的方法是使用JUnit @Categories注释.这篇博客文章介绍了如何使用junit http://www.agile-engineering.net/2012/04/unit-and-integration-tests-with-maven.html

@Category(IntegrationTest.class)
public class ExampleIntegrationTest{

 @Test
 public void longRunningServiceTest() throws Exception {

 }
}
Run Code Online (Sandbox Code Playgroud)

如何使用TestNG和Maven故障安全插件完成相同的操作.我想在测试类上使用注释将它们标记为集成测试.

java testng integration-testing maven

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