我正在使用正则表达式来匹配模式是否匹配,但我也想知道它何时失败.
例如,假设我有一个"N {1,3} Y"的模式.我将它与字符串"NNNNY"匹配.我想知道它失败了因为Ns太多了.或者,如果我将它与字符串"XNNY"匹配,我想知道它失败了,因为字符串中包含无效字符"X".
通过查看Java正则表达式包API(java.util.regex),匹配成功时,似乎只能从Matcher类中获取其他信息.
有没有办法解决这个问题?或者是正则表达式甚至在这种情况下的选项?
我已经将一个C++项目加载到Eclipse(Europa)中,我熟悉了CDT界面.
以下行有一条特别恼人的错误消息:
#include "somedir/somefile.h"
Run Code Online (Sandbox Code Playgroud)
somedir/somefile.h:没有这样的文件或目录
include文件存在于"/opt/local/project/include/somedir/somefile.h"中.
在项目>属性> C/C++常规>路径和符号>包含下,我已经添加了包含目录"/ opt/local/project/include".
但是,这似乎并没有解决问题.
有谁知道如何处理这个错误?谢谢.
编辑:解决了问题.事实证明这是一个简单的问题.我不得不"刷新"工作区中的所有项目.
我想通过将年初以来所有值的 FLAG 列设置为 1 来更新 SQL Server 中的表:
TABLE
DATE ID FLAG (more columns...)
2016/01/01 1 0 ...
2016/01/01 2 0 ...
2016/01/02 3 0 ...
2016/01/02 4 0 ...
(etc)
Run Code Online (Sandbox Code Playgroud)
问题是该表包含数亿条记录,并且建议我一次将更新分块 100,000 行,以避免阻塞其他进程。
我需要记住我更新了哪些行,因为后台进程在完成处理后会立即将 FLAG 翻转回 0。
有人对我如何做到这一点有建议吗?每天的数据价值超过一百万条记录,因此我不能简单地使用 DATE 作为计数器进行循环。我正在考虑使用 ID
我正在研究PostgreSQL 8.1 SQL脚本,它需要从表中删除大量行.
假设我需要删除的表是Employees(~260K行).它的主键名为id.
我需要从此表中删除的行存储在一个名为EmployeesToDelete(~10K记录)的单独临时表中,其中包含一个名为employee_id的Employees.id的外键引用.
有没有一种有效的方法来做到这一点?
起初,我想到了以下几点:
DELETE
FROM Employees
WHERE id IN
(
SELECT employee_id
FROM EmployeesToDelete
)
Run Code Online (Sandbox Code Playgroud)
但我听说使用"IN"子句和子查询可能效率低下,尤其是对于较大的表.
我查看了PostgreSQL 8.1文档,并提到了DELETE FROM ... USING但它没有示例,所以我不知道如何使用它.
我想知道以下是否有效并且效率更高?
DELETE
FROM Employees
USING Employees e
INNER JOIN
EmployeesToDelete ed
ON e.id = ed.employee_id
Run Code Online (Sandbox Code Playgroud)
非常感谢您的意见.
编辑:我运行了EXPLAIN ANALYZE,奇怪的是第一个DELETE跑得很快(几秒钟内),而第二个DELETE花了这么长时间(超过20分钟)我最终取消了它.
向临时表添加索引有助于提高性能.
这是对任何感兴趣的人的第一个DELETE的查询计划:
Hash Join (cost=184.64..7854.69 rows=256482 width=6) (actual time=54.089..660.788 rows=27295 loops=1)
Hash Cond: ("outer".id = "inner".employee_id)
-> Seq Scan on Employees (cost=0.00..3822.82 rows=256482 width=10) (actual time=15.218..351.978 rows=256482 loops=1)
-> Hash (cost=184.14..184.14 rows=200 width=4) (actual time=38.807..38.807 rows=10731 loops=1) …Run Code Online (Sandbox Code Playgroud) 使用 PL/pgSQL 或(其他一些机制),是否可以创建一个带有变量名的表?
我想创建多个名为 table_1、table_2、table_3 等的表……如果我可以使用循环来创建它们,而不是显式地创建每个表,那就更简单了。
我怀疑这个答案是否定的,但我想确认一下。
我需要Java中的Augmented Backus-Naur Form Parser(RFC 5234)来验证某些语言.
为了不重新发明轮子,我宁愿使用现有的ABNF Parser开源实现(如果已经存在).
我需要开源,因为它允许我根据需要维护代码.
有谁知道存在的任何东西?
我正在尝试编写一个SQL查询,该查询返回包含数据的表中的行:
表结构如下:
CREATE TABLE person(
id INT PRIMARY KEY,
name TEXT,
operation TEXT);
Run Code Online (Sandbox Code Playgroud)
我想返回尚未"取消"的所有唯一名称行.如果操作是"插入"或"删除"并且存在具有相同操作的相同名称的另一行,则认为行被"取消".
例如,如果我有以下行
id name operation
1 bob insert
2 bob delete
3 bob insert
Run Code Online (Sandbox Code Playgroud)
前两行相互"取消",因为它们使用相反的操作共享相同的名称.所以查询应该返回第3行.
这是另一个例子:
id name operation
1 bob insert
2 bob delete
3 bob insert
4 bob delete
Run Code Online (Sandbox Code Playgroud)
在这种情况下,行1和2抵消,行3和4抵消.因此查询不应返回任何行.
最后的例子:
id name operation
1 bob insert
2 bob insert
Run Code Online (Sandbox Code Playgroud)
在这种情况下,行1和2不会取消,因为操作不相反.所以查询应该返回两行.
我有以下查询处理前两个方案,但它不处理最终方案.
有没有人对可以处理所有3种情况的查询有任何建议?
SELECT MAX(id),name
FROM person z
WHERE operation IN ('insert','delete')
GROUP BY name
HAVING count(1) % 2 = 1;
Run Code Online (Sandbox Code Playgroud) 我有2种类型的资源的Web应用程序。
我想使用一个身份验证提供程序(即CAS)保护网页,并使用另一个身份验证提供程序(即BASIC身份验证)保护Web服务。
我找到了一个可以在这里工作的解决方案,但是它使用XML,并且如果可能的话,我宁愿不使用XML配置。
是否有Java Config解决方案?
Spring Boot似乎有一个默认行为来处理某些异常.我有一个休息控制器.如果我没有HttpRequestMethodNotSupportedException在带@ControllerAdvice注释的rest控制器中处理,则应用程序返回包含错误消息的默认JSON响应.
我不想替换这个JSON响应,但我确实希望在发生时记录其他信息(例如记录某个请求者的IP地址).
有没有办法用带@ExceptionHandler注释的方法或其他机制来做到这一点?
java ×5
postgresql ×3
sql ×3
spring ×2
c ×1
c++ ×1
database ×1
eclipse ×1
eclipse-cdt ×1
include ×1
parsing ×1
plpgsql ×1
regex ×1
spring-boot ×1
spring-mvc ×1
sql-server ×1