我有一个服务返回分页结果,或多或少实现了一个带有此签名的方法:
List<Record> getRecordsPage(long page, int pageSize);
Run Code Online (Sandbox Code Playgroud)
调用它时,我只需创建一个查询并进行如下配置:
TypedQuery<Record> query = entityManager.createQuery(criteriaQuery);
query.setFirstResult(page * pageSize);
query.setMaxResults(pageSize);
Run Code Online (Sandbox Code Playgroud)
这会将结果分页.这是按预期工作的,非常简单.
我的另一个要求是实现一个方法来检索包含特定记录的页面.使用以下签名实现方法:
List<Record> getRecordsPage(Record record, int pageSize);
Run Code Online (Sandbox Code Playgroud)
此方法需要生成记录所在的右页.例如,对于getRecordsPage(RECORD4, 2)
调用,考虑数据库状态:
1. RECORD1
2. RECORD2
3. RECORD3
4. RECORD4
5. RECORD5
Run Code Online (Sandbox Code Playgroud)
返回的页面应为2 [RECORD3, RECORD4]
.
该ORDER BY
参数始终设置,可以是多个字段.
到目前为止,我有一些解决方案:
使用提供的查询我只选择没有分页的id并执行只是indexOf
为了找到它的位置,并根据我可以找到记录页面的位置,然后使用getRecordsPage(long page, int pageSize)
已经实现的常规过程.
当我使用mySQL时,我可以执行一个类似的SQL:select r from (select rownum r, id from t order by x,y) z where z.id = :id
什么会返回记录的位置,我可以使用它来调用getRecordsPage(long page, int …
由于H2支持群集,因此过程非常类似于:
java org.h2.tools.CreateCluster
在所需群集中复制数据库并且知道CreateCluster
期望一个目标,一个源和一个集群端点列表,我有以下问题:
当我说为了启动3个服务器(A,B和C)的集群时,我是正确的,我需要准确知道集群上的服务器数量,因为每个服务器都需要有用于SET CLUSTER
语句的数据库服务器列表org.h2.tools.CreateCluster.process(String, String, String, String, String)
方法调用.
CreateCluster
上执行,A为源,B为目标,A,B,C为簇列表;CreateCluster
上执行,以B为源,C为目标,A,B,C为簇列表;假设我正在启动服务进程并启动A和B,应用程序开始在集群上执行一些SQL.找不到C,C会被处理掉吗?
继续在第二个问题上启动启动过程,我启动了C,我已经准备好执行CreateCluster
B作为源和A,B,C作为集群节点列表,在这个时刻发生了两件事:
SET EXCLUSIVE 2
)由于CreateCluster
SET CLUSTER 'A,B,C'
将在B和C上执行B被锁定时执行的SQL是否在A中执行?如果是这样他们已经承诺?当B被释放后,客户还在等待吗?之后会通知C这个命令吗?
我知道有很多关于OV7670的互联网(例如http://forum.arduino.cc/index.php?topic=159557.0),我读了很多关于它的内容,但似乎缺少了一些内容.
首先,我看看我们如何从相机逐像素地读取以构建矩形600 X 480图像的方式,考虑到文档中描述的HREF,VSYNCH和PCLOCK,这很容易理解:http:/ /www.voti.nl/docs/OV7670.pdf.我理解XCLOCK是一个输入,我需要将OV7670作为一种循环控制器给出,RESET可以重置它.
所以在这一点上,我认为通过连接以下引脚可以覆盖这种相机的功能:
从我的角度来看,这种方法的实现类似于:代码:
for each loop function do
write high to XCLK
if VSYNCH is HIGH
return;
if HREF is LOW
return;
if lastPCLOCK was HIGH and currentPCLOCK is LOW
readPixelFromDataPins();
end for
Run Code Online (Sandbox Code Playgroud)
我readPixelFromDataPins()
基本上只读了第一个字节(因为我只是测试我是否能从相机中读取内容),它的编写如下:
码:
byte readPixelFromDataPins() { …
Run Code Online (Sandbox Code Playgroud) 我一直试图让这个正确的2天,我准备扔东西.....
我有一个JSONArray,我正在try/catch块中处理,但它似乎没有在最后传递变量.
我的代码:
try{
//Get the element that holds the results ( JSONArray )
JSONArray getresults = json.getJSONArray("results");
//Loop the Array
for(int i=0;i < getresults.length();i++){
HashMap<String, String> map = new HashMap<String, String>();
JSONObject e = getresults.getJSONObject(i);
totalpass = e.getJSONObject(i).getString("ftotalpass");
}
} catch(JSONException e) {
Log.e("log_tag", "Error parsing data "+e.toString());
}
Run Code Online (Sandbox Code Playgroud)
我已尝试在try/catch块之前,之后,之后声明变量的所有庄园,但我无法将其传递给我的其余代码.
我究竟做错了什么?
是否有一些java.util.Map
不使用HashCode的实现?
我有以下问题:
get()
on时HashMap
,我得到null,因为旧对象hashCode在步骤1中是不同的.有解决方案吗?或者我应该只为我的equals/hashCode方法使用不可变字段?
我正在索引我的内容,并在将我的Solr实例升级到solr 4之后,我正面临着一些OutOfMemories.抛出的异常是:
INFO org.apache.solr.update.UpdateHandler - start commit{flags=0,_version_=0,optimize=false,openSearcher=true,waitSearcher=true,expungeDeletes=false,softCommit=false}
ERROR o.a.solr.servlet.SolrDispatchFilter - null:java.lang.RuntimeException: java.lang.OutOfMemoryError: Java heap space
at org.apache.solr.servlet.SolrDispatchFilter.sendError(SolrDispatchFilter.java:469)
at org.apache.solr.servlet.SolrDispatchFilter.doFilter(SolrDispatchFilter.java:297)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:166)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.OutOfMemoryError: Java heap space
Run Code Online (Sandbox Code Playgroud)
是否有一些已知的错误或我可以测试的东西摆脱它?
在此升级中,有两件事发生了变
3.4
到4.0
;LUCENE_34
到LUCENE_40
).我正在为几十万个产品构建一个postgres 数据库。我将设置一个索引(Solr 或 ElasticSearch)来改进复杂搜索查询的查询时间。
现在的重点是如何让索引与数据库同步?
在过去,我有一种应用程序会定期轮询数据库以检查应该完成的更新,但我会有一个过时的索引状态时间(从数据库更新到索引更新拉取)。
我更喜欢一种解决方案,其中数据库会通知我的应用程序(java 应用程序)数据库中的某些内容已更改,然后应用程序将决定是否需要更新索引。更准确地说,我将构建一种生产者和消费者结构,希望副本能够从 postgres 接收到某些更改的通知,如果这与索引的数据有关,则它会存储在一堆待办事项中。消费者将使用这个堆栈并构建要存储到索引中的文档。
一种解决方案是编写一种副本端点,在该端点中,应用程序将充当用于从原始数据库复制数据的 postgres 实例。有人对这种方法有经验吗?
对于这个问题,我还有哪些其他解决方案?
为了生成一些摘要数据,我们定期将数据导入Hive.我们目前使用的是CSV文件格式,其布局如下:
operation,item,timestamp,user,marketingkey
Run Code Online (Sandbox Code Playgroud)
目前,我们有一些查询正在执行时间戳字段的日期(yyyy-mm-dd)分组.
正在导入的文件有时会保留更多天,我想以分区方式存储它.有没有办法用Hive做,我已经基于以下DDL构建表:
CREATE TABLE
partitionedTable (name string)
PARTITIONED BY (time bigint)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
Run Code Online (Sandbox Code Playgroud)
数据加载完成如下:
LOAD DATA LOCAL INPATH
'/home/spaeth/tmp/hadoop-billing-data/extracted/testData.csv'
INTO TABLE partitionedTable PARTITION(time='2013-05-01');
Run Code Online (Sandbox Code Playgroud)
但我希望该配置单元基于正在导入的文件中的字段以自动方式应用分区.例如:
login,1,1370793184,user1,none --> stored to partition 2013-06-09
login,2,1360793184,user1,none --> stored to partition 2013-02-13
login,1,1360571184,user2,none --> stored to partition 2013-02-11
buy,2,1360501184,user2,key1 --> stored to partition 2013-02-10
Run Code Online (Sandbox Code Playgroud) 目前我有一个核心转储文件,我想提取堆转储。无论我尝试什么,我总是收到以下错误消息:
god@heaven:~$ sudo /opt/java-MyApp/bin/jmap -dump:format=b,file=my-file.hprof /opt/java-MyApp/bin/java /home/god/tmp/core
[sudo] password for god:
Attaching to core /home/god/tmp/my-app-core-dump from executable /opt/java-MyApp/bin/java, please wait...
Error attaching to core file: Doesn't appear to be a HotSpot VM (could not find symbol "gHotSpotVMTypes" in remote process)
sun.jvm.hotspot.debugger.DebuggerException: Doesn't appear to be a HotSpot VM (could not find symbol "gHotSpotVMTypes" in remote process)
at sun.jvm.hotspot.HotSpotAgent.setupVM(HotSpotAgent.java:411)
at sun.jvm.hotspot.HotSpotAgent.go(HotSpotAgent.java:305)
at sun.jvm.hotspot.HotSpotAgent.attach(HotSpotAgent.java:156)
at sun.jvm.hotspot.tools.Tool.start(Tool.java:191)
at sun.jvm.hotspot.tools.Tool.execute(Tool.java:118)
at sun.jvm.hotspot.tools.HeapDumper.main(HeapDumper.java:83)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at sun.tools.jmap.JMap.runTool(JMap.java:201)
at …
Run Code Online (Sandbox Code Playgroud) @Field上index = Index.YES和store = Store.YES的内涵是什么?最后(当执行搜索时)是否会从数据库加载此数据(搜索索引并从数据库加载结果)?为什么我也要将数据存储在索引中呢?
或者我的理解错了吗?
我正在使用GAE [JAVA]进行一些图像处理.GAE不允许将文件写入磁盘,所以我希望我的App允许输入一个URL,然后我想检查这个指定的URL是否代表一个图像,如果是,我想得到它的高度和宽度.
有没有人提供一些解决方案来告诉我如何实现这个?
从nosql文档数据库开始,我想出了许多新的可能性,但是,我看到了一些陷阱,我想知道如何处理它们.
假设我有一个产品,这个产品可以在很多地区销售.每个区域都有一个负责人(可以访问CMS).每个负责人都相应地修改产品的区域法律和规则.
由于我们在关系数据库上不支持Join功能,因此文档的设计应该包含构建选择语句和选择结果所需的所有信息,以避免往返数据库.
所以我的第一个是设计一个或多或少遵循这种结构的文档:
{
type : "product",
id : "product_id",
title : "title",
allowedAge : 12,
regions : {
'TX' : {
title : "overriden title",
allowedAge : 13
},
'FL' : {
title : "still another title"
}
}
}
Run Code Online (Sandbox Code Playgroud)
但我的印象是这种方法会在更新文档时产生冲突.假设我们有很多用户通过CMS更新大量文档.更新同一文档时,上次更新会覆盖之前完成的更新,即使用户只能修改此文档的片段(在这种情况下,负责人应该只能修改区域数据).
我想到的一个可能的解决方案是部分文档更新.肯定:减少来自不同操作的数据覆盖,否定:失去乐观锁定功能,因为如果对文件进行锁定而不是这样的片段.
还有另一种解决方法吗?
我正在使用java fileWriter()函数.它适用于Windows机器,但不适用于Linux.
所以我想知道fileWriter()函数是否仅适用于Windows,还是存在其他问题?
在此先感谢Enamul