我刚刚注意到 Hibernate 中的这种行为,并发现它有点令人惊讶(以一种受欢迎的方式)。我有一个名为的实体类型SyncItem,它充当许多其他实体的超类。继承策略设置为InheritanceType.JOINED,超类中的所有字段都有一个表,而子类表仅包含子类中添加的任何内容的字段,以及对超类表的引用。
例如,我的SyncItem表格如下所示:
mysql> describe syncItems;
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | bigint(20) | NO | PRI | NULL | auto_increment |
| hidden | bit(1) | NO | | NULL | |
| title | varchar(255) | NO | | NULL | |
| createDate | datetime | NO | | NULL | |
| modifyDate | datetime | YES …Run Code Online (Sandbox Code Playgroud) 我正在调查Heroku作为一个平台,我正在尝试使用基本的Java webapp来运行它.webapp已经构建并运行Maven(使用Tomcat和cargo-maven-plugin),所以我认为这应该是轻而易举的,因为Heroku使用Maven来管理其安装/部署任务.
然而事实并非如此,因为我无法让事情真正启动.我Procfile的内容如下:
web: sh ./startServer-heroku.sh
Run Code Online (Sandbox Code Playgroud)
这startServer-heroku.sh只是:
mvn clean install cargo:start -Dcargo.maven.wait=true
Run Code Online (Sandbox Code Playgroud)
当我使用foreman start命令在本地测试时,这可以正常工作,如Heroku教程文档中所述.但是当我在实际的Heroku服务器上尝试它时,我得到以下日志消息:
2011-11-09T02:30:27+00:00 heroku[web.1]: State changed from created to starting
2011-11-09T02:30:27+00:00 heroku[slugc]: Slug compilation finished
2011-11-09T02:30:33+00:00 heroku[web.1]: Starting process with command `sh ./startServer-heroku.sh`
2011-11-09T02:30:33+00:00 app[web.1]: ./startServer-heroku.sh: 1: mvn: not found
2011-11-09T02:30:33+00:00 heroku[web.1]: Process exited
2011-11-09T02:30:34+00:00 heroku[web.1]: State changed from starting to crashed
Run Code Online (Sandbox Code Playgroud)
似乎mvn无法在系统上找到PATH,因此命令失败.
可以mvn从Heroku 调用Procfile吗?是否有任何具有明确的命令列表的地方Procfile?
我最近遇到了一些问题android.os.Bundle,我希望通过简单地扩展类并使其更松散类型来修复.我遇到的具体问题是:
W/Bundle ( 6782): Key access_token expected byte[] but value was a java.lang.String. The default value <null> was returned.
W/Bundle ( 6782): Attempt to cast generated internal exception:
W/Bundle ( 6782): java.lang.ClassCastException: java.lang.String
W/Bundle ( 6782): at android.os.Bundle.getByteArray(Bundle.java:1305)
Run Code Online (Sandbox Code Playgroud)
当然,从转换String到byte[]是小事,所以我的想法是只拥有Bundle它是否在寻找一个自动执行此转换byte[],但找到一个String替代.这是愚蠢的,它并没有做到这一点已经(而且它有特定的getter和setter的几乎每一个基本类型和几个不同的Object类型,而不是普通的那些只是在以下方面的工作Object,或在最坏的情况Number,String和Parcelable)在我看来.
但无论如何,我很快发现我无法通过扩展解决问题Bundle,因为它已被声明final.这有什么已知/具体原因吗?还有其他类android.os没有final,那么Bundle值得分配的是什么呢?
另外,关于如何解决这个问题的任何想法?一个包装类已经没有了,因为它没有共同interface的实现(实际导致问题的代码是第三方库的一部分,因此我不能只更新它直接引用包装类).
我想这留下了唯一的选择,寻找代码中的所有位置,恰好为String第三方代码期望作为字节数组传递的东西设置值.
将quartz-scheduler添加到项目后,Tomcat的服务器日志会收到以下垃圾邮件:
[INFO] [talledLocalContainer] 12:15:06.319 [DefaultQuartzScheduler_QuartzSchedulerThread] DEBUG o.quartz.core.QuartzSchedulerThread - 批量获取0个触发器
我正在尝试禁用该日志消息,该消息每 25 秒左右重复一次。我已经回答过同一问题的许多其他答案,例如:
...建议的方法都不起作用。
我在 中声明了以下依赖项pom.xml:
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.5</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我已将以下log4j.properties设置添加到我的项目中:
log4j.rootLogger=OFF
log4j.logger.quartz=OFF
log4j.logger.o.quartz=OFF
log4j.logger.org.quartz=OFF
Run Code Online (Sandbox Code Playgroud)
...还有以下内容simplelogger.properties:
org.slf4j.simpleLogger.defaultLogLevel=error
Run Code Online (Sandbox Code Playgroud)
除了尝试链接答案之一建议的编程解决方案之外,该解决方案还应禁用所有日志记录,大致如下:
List<Logger> loggers = Collections.<Logger>list(LogManager.getCurrentLoggers());
loggers.add(LogManager.getRootLogger());
for ( Logger logger : loggers ) {
logger.setLevel(Level.OFF);
}
Run Code Online (Sandbox Code Playgroud)
这似乎禁用了除了石英运行时的日志消息 之外的所有内容。
有没有办法摆脱quartz 中的日志消息,而不需要修改quartz 源代码来删除它?
我正在尝试将相当大的数据量(约 4100 万行)从 SQL 数据库迁移到 Cassandra。我之前已经使用一半的数据集进行了试运行,一切都完全按照预期进行。
问题是,现在我正在尝试完整迁移,Cassandra 不断抛出超时错误。例如:
[INFO] [talledLocalContainer] com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: /127.0.0.1:10112 (com.datastax.driver.core.exceptions.DriverException: Timed out waiting for server response))
[INFO] [talledLocalContainer] at com.datastax.driver.core.exceptions.NoHostAvailableException.copy(NoHostAvailableException.java:84)
[INFO] [talledLocalContainer] at com.datastax.driver.core.DefaultResultSetFuture.extractCauseFromExecutionException(DefaultResultSetFuture.java:289)
[INFO] [talledLocalContainer] at com.datastax.driver.core.DefaultResultSetFuture.getUninterruptibly(DefaultResultSetFuture.java:205)
[INFO] [talledLocalContainer] at com.datastax.driver.core.AbstractSession.execute(AbstractSession.java:52)
[INFO] [talledLocalContainer] at com.mycompany.tasks.CassandraMigrationTask.execute(CassandraMigrationTask.java:164)
[INFO] [talledLocalContainer] at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
[INFO] [talledLocalContainer] at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
[INFO] [talledLocalContainer] Caused by: com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: /127.0.0.1:10112 (com.datastax.driver.core.exceptions.DriverException: Timed out waiting for server response))
[INFO] [talledLocalContainer] at com.datastax.driver.core.RequestHandler.sendRequest(RequestHandler.java:108)
[INFO] [talledLocalContainer] …Run Code Online (Sandbox Code Playgroud) 我有一个Java(基于JAX-WS)的SOAP客户端,试图与基于(第三方)WCF的服务器进行通讯。我发现这里表达的观点非常准确。但是目标仍然存在。
长话短说,我可以从服务器中哄骗有效的“安全上下文令牌”,但是却挂在消息签名问题上(我相信)。
服务器似乎期望hmac-sha1使用客户端/服务器秘密密钥(PSHA1算法)使用身份验证代码对消息进行签名。很公平。但是,JAX-WS似乎要使用rsa-sha1X509证书来签名出站消息(服务器不喜欢),并且似乎仅在提供hmac-sha1a 时才使用UsernameToken(服务器也不喜欢)。
因此,我尝试从SOAPHandler实现中手动签名出站SOAP消息。客户端发送以获取安全上下文令牌的请求如下所示:
<t:RequestSecurityToken xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust">
<t:TokenType>http://schemas.xmlsoap.org/ws/2005/02/sc/sct</t:TokenType>
<t:RequestType>http://schemas.xmlsoap.org/ws/2005/02/trust/Issue</t:RequestType>
<t:Entropy>
<t:BinarySecret Type="http://schemas.xmlsoap.org/ws/2005/02/trust/Nonce">NzM1MDZjYWVkMTEzNDlkNGEyODY0ZDBlMjlkODEyMTM=</t:BinarySecret>
</t:Entropy>
<t:KeySize>256</t:KeySize>
</t:RequestSecurityToken>
Run Code Online (Sandbox Code Playgroud)
服务器发回的令牌如下所示:
<t:RequestSecurityTokenResponse xmlns:t="http://schemas.xmlsoap.org/ws/2005/02/trust">
<t:TokenType>http://schemas.xmlsoap.org/ws/2005/02/sc/sct</t:TokenType>
<t:RequestedSecurityToken>
<c:SecurityContextToken xmlns:c="http://schemas.xmlsoap.org/ws/2005/02/sc" u:Id="uuid-106bdbae-76e5-4195-b5d0-cc1c1a7a813e-13">
<c:Identifier>urn:uuid:c0be4929-da8d-4955-8e13-b25aa7a37217</c:Identifier>
</c:SecurityContextToken>
</t:RequestedSecurityToken>
<t:RequestedAttachedReference>
<o:SecurityTokenReference xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<o:Reference ValueType="http://schemas.xmlsoap.org/ws/2005/02/sc/sct" URI="#uuid-106bdbae-76e5-4195-b5d0-cc1c1a7a813e-13" />
</o:SecurityTokenReference>
</t:RequestedAttachedReference>
<t:RequestedUnattachedReference>
<o:SecurityTokenReference xmlns:o="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<o:Reference URI="urn:uuid:c0be4929-da8d-4955-8e13-b25aa7a37217" ValueType="http://schemas.xmlsoap.org/ws/2005/02/sc/sct" />
</o:SecurityTokenReference>
</t:RequestedUnattachedReference>
<t:RequestedProofToken>
<t:ComputedKey>http://schemas.xmlsoap.org/ws/2005/02/trust/CK/PSHA1</t:ComputedKey>
</t:RequestedProofToken>
<t:Entropy>
<t:BinarySecret u:Id="uuid-106bdbae-76e5-4195-b5d0-cc1c1a7a813e-14" Type="http://schemas.xmlsoap.org/ws/2005/02/trust/Nonce">dssunihZGy2dnnDHV9PMe3vU3lg/kKKZQkFohvGvCAk=</t:BinarySecret>
</t:Entropy>
<t:Lifetime>
<u:Created>2016-04-08T04:11:54.392Z</u:Created>
<u:Expires>2016-04-08T19:11:54.392Z</u:Expires>
</t:Lifetime>
<t:KeySize>256</t:KeySize>
</t:RequestSecurityTokenResponse>
Run Code Online (Sandbox Code Playgroud)
我BinarySecret使用PSHA1以下方法组合客户端和服务器密钥:
private …Run Code Online (Sandbox Code Playgroud) TL; DR
Android 7.1.2的“ 2017年6月5日”安全更新是否导致Android开始忽略电池优化白名单(即让应用程序禁用“打ze”模式的功能)?
如果是这样,如果应用程序需要持续保持CPU和wifi的使用情况,那么现在该如何通过编程方式禁用“打ze”模式?
语境
我有一个Android应用程序,它支持将本地音频文件投射到联网的Chromecast接收器(使用嵌入式HTTP服务器将文件内容流式传输到接收器)。
为了在Android M上实现此功能(就在设备投射音频时没有使Chromecast会话掉落,否则处于空闲状态),我不得不在此答案中使用该方法来禁用打ze模式。
具体来说,AndroidManifest.xml我有:
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
Run Code Online (Sandbox Code Playgroud)
...,只要建立Chromecast会话,就会执行以下代码:
if (Build.VERSION.SDK_INT >= 23) {
String packageName = context.getPackageName();
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
if (! pm.isIgnoringBatteryOptimizations(packageName)) {
//reguest that Doze mode be disabled
Intent intent = new Intent();
intent.setAction(
Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
intent.setData(Uri.parse("package:" + packageName));
context.startActivity(intent);
}
}
Run Code Online (Sandbox Code Playgroud)
...并且在Chromecast播放处于活动状态时,我还以标准方式获取唤醒/ wifi锁定:
PowerManager powerManager = (PowerManager) getApplicationContext().getSystemService(Context.POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "myapp-cast-server-cpu");
wakeLock.acquire();
WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
wifiLock = wifiManager.createWifiLock(WifiManager.WIFI_MODE_FULL_HIGH_PERF, "myapp-cast-server-net");
wifiLock.acquire();
Run Code Online (Sandbox Code Playgroud)
该应用程序出现在电池白名单中,而就在几周前,这一切都运行良好。但是,该应用程序现在被打ze睡模式捕获。
测试设备没有改变;这是运行Android …
我正在尝试创建一个基本的3列布局.基本上中心柱应该是流动的,因为它应该扩展以消耗左右列未使用的任何空间.但是,它还需要固定min-width大约378像素.
有许多用于与一个完全流体中心柱创建3列布局,选项与或不使用浮动.但是,到目前为止我遇到的每个预先打包的解决方案(以及我自己尝试过的解决方案)的问题是,随着页面宽度的减小,右列将在页面的中心列顶部出现太狭隘了.
如果可能的话,我想防止这种情况发生.理想情况下,一旦min-width被击中,右列应该保持原样,页面应该可以水平滚动.所以目标是:
一个纯CSS的解决方案是首选,但如果有一个简单的方法来使用一些聪明的JavaScript,我也不反对这种方法.
我必须在这里做一些根本错误的事情.我的代码非常简单:
private static final long MILLIS_PER_YEAR = 1000 * 60 * 60 * 24 * 365;
//...
public long getAge() {
long millis = System.currentTimeMillis() - this.getBirthdate().getTime();
System.out.println("Computed age: " + (millis / MILLIS_PER_YEAR) + ", birthdate=" + this.getBirthdate() + ", birthdateMillis="
+ this.getBirthdate().getTime() + ", now=" + new Date() + ", nowMillis=" + System.currentTimeMillis()
+ ", elapsedMillis=" + millis);
return millis / MILLIS_PER_YEAR;
}
Run Code Online (Sandbox Code Playgroud)
...但它会给出一些完全不正确的输出:
Computed age: 248, birthdate=2001-01-01 10:00:00.0, birthdateMillis=978307200000, now=Fri Aug 10 16:56:48 EST 2012, nowMillis=1344581808173, elapsedMillis=366274608173 …Run Code Online (Sandbox Code Playgroud) 我正在尝试为iOS库添加一些简单的点对点连接功能.传出连接的编码很简单; 调用CFStreamCreatePairWithSocketToHost连接到远程主机并设置用于从/向其读/写的流.很简单.
但是,我找不到一个等效的简单方法来设置套接字来监听/接受传入的连接.于是我又回到基础知识和使用socket(),bind(),listen(),并accept()实现低级别的连接处理,这里的例子后,大部分图案:
http://www.pcs.cnu.edu/~dgame/sockets/server.c
这一切都很好,但现在我能够接受传入的连接,我想知道如何创建CFReadStream和CFWriteStream实例来管理它们.有这么简单的方法吗?
顺便说一句,我知道CocoaAsyncSocket存在一个支持异步服务器套接字的库,但我真的对异步解决方案不感兴趣.
java ×7
android ×2
maven ×2
android-doze ×1
cassandra ×1
chromecast ×1
css ×1
css3 ×1
date ×1
deployment ×1
heroku ×1
hibernate ×1
html ×1
ios ×1
jpa ×1
layout ×1
logging ×1
media-player ×1
networking ×1
slf4j ×1
soap ×1
soap-client ×1
sockets ×1
time ×1
timeout ×1
wcf ×1