可能重复:
字符串对象和字符串文字之间的差异
假设我有两个陈述.
String one = "abc";
String two = new String("abc");
Run Code Online (Sandbox Code Playgroud)
哪一个是堆栈内存并存储在堆中?
这两者有什么区别?
创建了多少个对象以及内存中的引用如何?
什么是最佳做法?
请问,有人可以帮我弄清楚为什么下面的代码用jdk8u45及以上代码编译但是jdk8u25失败了吗?我查看了JDK发行说明,但没有找到任何与此问题相关的内容或者可能错过了它.
代码
public class Main {
static class Param {
final int id;
Param(int id) {
this.id = id;
}
}
static class Subtask {
final Param param;
Subtask(Param param) {
this.param = param;
}
}
public static void main(String[] args) {
List<? extends Param> params = IntStream.range(1, 100).mapToObj(Param::new).collect(Collectors.toList());
NavigableMap<String, Subtask> map = params.stream()
.collect(Collectors.toMap(p -> UUID.randomUUID().toString(), Subtask::new, (a, b) -> a, TreeMap::new));
}
}
Run Code Online (Sandbox Code Playgroud)
jdk8u25例外:
Error:(33, 17) java: no suitable method found for collect(java.util.stream.Collector<org.ka.Main.Param,capture#1 of ?,java.util.TreeMap<java.lang.String,org.ka.Main.Subtask>>)
method java.util.stream.Stream.<R>collect(java.util.function.Supplier<R>,java.util.function.BiConsumer<R,? super …
Run Code Online (Sandbox Code Playgroud) 我创建了一个简单的报告,它只需要一个参数.此参数在查询中使用,并在报表设计器中直接执行时执行.顺便说一句,我没有使用javascript或任何脚本编写此报告.我看到有些人试图在这里使用脚本和/或javascripts来传递参数,但这不是我正在做的事情.我通过java传递所有参数.继续,在本报告中,我列出了活动/非活动项目.我传入一个'N'表示非活动项目,一个'Y'表示活动项目.当我尝试通过API传递一个参数时,无论我传入什么内容,我总是会得到一个活动项列表.顺便说一句,'Y'是传入参数的默认值.(我将覆盖默认值)下面的代码)我遇到的问题是报告似乎不想采取我设置的参数.是的,传入的变量中的值发生了变化,但报告未反映更改.我的代码如下.我试图遵循此链接的建议以及如何设置参数.
http://www.eclipsezone.com/eclipse/forums/t67723.html
如果你转到链接,请转到#4并查看要执行的任务列表.这是我试图遵循的.我觉得我可能会遗漏一些东西.如果你有这个问题,你可以给我一些我缺少的建议吗?非常感谢!
-Dale
public class ReportGenerator {
public static void main(String args[]) throws Exception{
ReportGenerator rg = new ReportGenerator();
rg.executeReport("N");
}
@SuppressWarnings({ "unchecked", "deprecation" })
public void executeReport(String activeIndicator) throws EngineException {
IReportEngine engine=null;
EngineConfig config = null;
try{
config = new EngineConfig( );
config.setBIRTHome("C:\\birt-rcp-report-designer-3_7_2\\ReportEngine");
config.setLogConfig("c:/temp/test", Level.FINEST);
Platform.startup( config );
IReportEngineFactory factory = (IReportEngineFactory) Platform.createFactoryObject( IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY );
engine = factory.createReportEngine( config );
IReportRunnable reportDesign = null;
reportDesign = engine.openReportDesign("C:\\workspace\\SimpleReport\\ReportTemplates\\ItemListingReport.rptdesign");
IRunAndRenderTask task = engine.createRunAndRenderTask(reportDesign);
IGetParameterDefinitionTask parameterDefinitionTask = engine.createGetParameterDefinitionTask(reportDesign);
parameterDefinitionTask.evaluateDefaults();
HashMap<String, …
Run Code Online (Sandbox Code Playgroud) 我有一些奇怪的错误,有时会出现在我的Windows Phone 8.1 512MB RAM仿真器上的WinJS应用程序中.我无法在其他仿真器实例或设备上重现它.
执行通过promise链运行并完成以下return语句:
return ( currentUpload = uploadOperation.startAsync() );
Run Code Online (Sandbox Code Playgroud)
之后没有任何反应.我在.then定义的所有三个函数(成功,失败,待定)中设置了断点.当发生这种奇怪的情况时,这三个功能代码都不会到达.
我还把这个return语句放在try catch块上,但是没有异常可以捕获.
代码的简短说明:
创建后台上传器实例(自定义标头+ PUT方法)
StorageFile由URI打开
后台上传器准备上传该文件(uploadOperation的定义)
uploadOperation将开始
看完整代码:
var currentUpload; // global
function uploadFile(localFullPath, headers, serverUrl)
{
var fileUri = new Windows.Foundation.Uri('ms-appdata:///local' + localFullPath),
uploader = false;
try
{
uploader = new Windows.Networking.BackgroundTransfer.BackgroundUploader();
uploader.method = 'PUT';
// set headers to uploader
for (var key in headers)
{
if (headers.hasOwnProperty(key))
uploader.setRequestHeader(key, headers[key]);
}
}
catch (e)
{
// error handling
return false;
}
Windows.Storage.StorageFile.getFileFromApplicationUriAsync(fileUri)
.then(function success(file)
{ …
Run Code Online (Sandbox Code Playgroud) 设置场景:我的系统上有两个版本的Java.32位版本和64位版本.我的另一个版本是64位版本的Eclipse(Java EE).MyEclipse(32位版本)指向JDK的32位版本.我现在试图将Eclipse(32位版本)指向新安装的JDK 1.6.0_32.JAVA_HOME变量已经被64位版本占用,因此我无法使用它.
以前,此环境中的此环境和项目是使用Java 1.6.0_30.我更改JRE版本的地方在Preferences-> Java-> Installed JREs中.在这里,我添加了新的JRE并删除了旧的JRE.我还需要改变其他什么地方?当我启动我的Apache Tomcat服务器时,我仍然收到一个错误,指的是1.6.0_30.具体而言,我得到错误"归档:由类路径引用的Files/Java/jdk1.6.0_30/lib/tools.jar,不存在."
查看我的项目的类路径,我看到正确的1.6.0_33版本.我还需要在哪里更改类路径?
提前致谢.
JPA
我的 spring boot 项目在实体类中使用hibernate 注解。我有自己的通用存储库,并且我NOT
从 JPA 的entityManagerFactory 获取Hibernate SessionFactory。创建新表和列时会出现此问题。Camel 列在数据库上创建时带有下划线。我将命名策略更改为org.hibernate.cfg.EJB3NamingStrategy
inapplication.yml
但没有任何修复。
应用程序.yml:
jpa:
database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
show-sql: true
hibernate:
ddl-auto: update
naming-strategy: org.hibernate.cfg.EJB3NamingStrategy
Run Code Online (Sandbox Code Playgroud)
在我自己的通用存储库中获取休眠会话(不使用EntityManager):
@Autowired
public SessionFactory sessionFactory;
public Session getSession() {
try {
return sessionFactory.getCurrentSession();
} catch (HibernateException e) {
System.out.println(e.getMessage().toString());
}
return sessionFactory.openSession();
}
Run Code Online (Sandbox Code Playgroud)
我曾经创建一个自定义的命名策略扩展,ImplicitNamingStrategyJpaCompliantImpl
但什么也没发生!
怎么了?
What I want:
在数据库中用骆驼创建的列。甚至桌子!
在Java 8中,我可以使用流来过滤部分字符串吗?
让我们假设我有一个动物清单,如:
Brown Bear
Black Bear
Black Crow
Red Herring
Owl
Sparrow
Blackbacked Flocking Crow
Run Code Online (Sandbox Code Playgroud)
让我们假设所有动物名称都在动物对象列表中
public class Animal{
public name;
public animalType;
}
Run Code Online (Sandbox Code Playgroud)
有没有办法找到所有黑色的动物,无论名称中的某个地方是什么情况.像下面这样的东西......
List<Animal> filtList = employeeList.stream()
.filter(x -> "%Black%".toUpperCase().equals(x.getLastName().toUpper()))
.collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud) 我正在寻找一些方向来编码带有数据源的BIRT API.我不确定如何配置我的应用程序来访问创建的数据源.如果我能得到一些帮助,那就太好了.这就是我的位置.我已经通过BIRT RCP创建了一份报告.现在我想使用常规Java应用程序和Web应用程序生成报告.两者都将通过我将要创建的GUI传递日期参数.两者都需要有数据源.我已经看到一些使用报表设计器的示例,但我没有使用它.我也没有使用BIRT Report Creator(RCP)GUI来生成它.
谢谢
import java.util.logging.Level;
import org.eclipse.birt.core.framework.Platform;
import org.eclipse.birt.report.engine.api.EngineConfig;
import org.eclipse.birt.report.engine.api.EngineException;
import org.eclipse.birt.report.engine.api.HTMLRenderOption;
import org.eclipse.birt.report.engine.api.IReportEngine;
import org.eclipse.birt.report.engine.api.IReportEngineFactory;
import org.eclipse.birt.report.engine.api.IReportRunnable;
import org.eclipse.birt.report.engine.api.IRunAndRenderTask;
public class ReportGenerator {
public static void main(String args[]) throws EngineException {
ReportGenerator reportGenerator = new ReportGenerator();
reportGenerator.executeReport();
}
public void executeReport() throws EngineException {
IReportEngine engine=null;
EngineConfig config = null;
try{
config = new EngineConfig( );
config.setBIRTHome("C:\\birt-rcp-report-designer-3_7_2\\ReportEngine");
config.setLogConfig("c:/temp/test", Level.FINEST);
Platform.startup( config );
IReportEngineFactory factory = (IReportEngineFactory) Platform.createFactoryObject( IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY );
engine = factory.createReportEngine( config );
IReportRunnable …
Run Code Online (Sandbox Code Playgroud) 可能重复:
使用jQuery选择复选框组的值
我希望使用JQuery按值选择一个复选框.我不想循环遍历所有值以查看值是否在集合中.我可能有一堆复选框,所以这只会减慢整个过程.提前致谢.
为了澄清更多我看的是这个.我有一个包含聚合房间的下拉列表.每间客房均由多间独立客房组成.所以我们可能会在下拉菜单中有类似的东西
聚合室AB聚合室BC聚合室ABCD
下面是一个代表单一房间的复选框列表
房间A房间B房间C房间D.
我想要完成的是在选择顶部聚合房间时选择底部复选框.因此,如果我选择Aggregate Room AB,下面的复选框将选择A室和B室.
我的解决方案如下:http://jsfiddle.net/xkXSx/43/
谢谢你的回应.