在metro应用程序中,我需要执行许多WCF调用.有大量的调用,所以我需要在并行循环中进行调用.问题是并行循环在WCF调用完成之前退出.
你会如何重构这个按预期工作?
var ids = new List<string>() { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" };
var customers = new System.Collections.Concurrent.BlockingCollection<Customer>();
Parallel.ForEach(ids, async i =>
{
ICustomerRepo repo = new CustomerRepo();
var cust = await repo.GetCustomer(i);
customers.Add(cust);
});
foreach ( var customer in customers )
{
Console.WriteLine(customer.ID);
}
Console.ReadKey();
Run Code Online (Sandbox Code Playgroud) 我想知道是否可以配置IntelliJ Idea来立即显示项目树中类文件的编译错误.目前,如果无法编译类,我需要手动触发重新编译以查看我的类上的错误标记.
简而言之,hashCode契约,根据Java的object.hashCode():
让我们主要关注不可变数据对象 - 它们的信息在构造之后永远不会改变,因此假定#1成立.留下#2:问题只是确认等于隐含代码==.
显然,我们无法测试每个可想到的数据对象,除非该集合很小.那么,编写可能会遇到常见情况的单元测试的最佳方法是什么?
由于此类的实例是不可变的,因此构造此类对象的方法有限; 如果可能的话,这个单元测试应该涵盖所有这些.在我的脑海中,入口点是构造函数,反序列化和子类的构造函数(应该可以简化为构造函数调用问题).
[我打算通过研究来回答我自己的问题.来自其他StackOverflowers的输入是这个过程的一个受欢迎的安全机制.]
[这可能适用于其他OO语言,所以我添加了该标签.]
出于某种原因,在Xcode 8.2中,我的代码完成已停止工作.我已经清理了我的产品,重新启动了Xcode,重新启动了我的计算机,并删除了派生数据,但仍然没有运气.我已将此提交给Apple支持.有没有人遇到这个并且能够修复它?
我有几个单独的程序,从概念上可以适合单个项目.但是,我无法告诉Eclipse在项目文件夹中创建多个文件夹.
一种简单的结构形式是:
/UberProject
/UberProject/ProgramA/
/UberProject/ProgramA/com/pkg/NiftyReader.java
/UberProject/ProgramB/
/UberProject/ProgramB/com/pkg/NiftyWriter.java
Run Code Online (Sandbox Code Playgroud)
也就是说,ProgramA而且ProgramB是这两个项目(事实上,他们目前现有的Java项目),其概念嵌入UberProject.
我认为我不应该UberProject成为一个Java项目; 例如,它不是类路径. ProgramA和ProgramB 你看起来像他们应该是Java项目(他们可能会使用不同的生成依赖关系为好),但我看到在Eclipse 3.3没有办法创建两个文件夹下UberProject被用来包含Java代码.我想到将.project文件添加到两个子项目中的每一个,但我也不确定是否合适.Eclipse帮助没有帮助,我没有看到关于这个特定问题的任何内容.
只是要明确:假设存在的必要性UberProject. UberProject可以是Java项目,也可以不是; 没关系.(顺便说一下,它确实包含其他不包含Java代码的文件夹.)
突然间,我的screen/tmux在每个命令后都开始改变我的windows名字.他们不断将名称更改为$PROMPT_COMMAND终端上每个操作的值,即使在手动重命名后(通过Ctrl+A A屏幕或Ctrl+B在tmux上).
在tmux上我已经尝试更改tmux.conf设置以禁用窗口自动重命名关闭,但似乎它被忽略了.
我在没有标准/etc/bashrc配置文件的情况下使用bash .我的发行版是Fedora 18.
我的代码检索与用户相关的所有信息:
SessionFactory sessionFactory = HibernateUtilities.configureSessionFactory();
Session session = sessionFactory.openSession();
UserDetails ud = null;
Set<Address> userAddress = null;
try {
session.beginTransaction();
ud = (UserDetails) session.get(UserDetails.class, 1);
userAddress = ud.getAddresses();
session.getTransaction().commit();
} catch (HibernateException e) {
e.printStackTrace();
session.getTransaction().rollback();
} finally {
session.close();
}
System.out.println(ud.getName());
for(Address addr: userAddress){
System.out.println("State " + addr.getState());
}
Run Code Online (Sandbox Code Playgroud)
在ud.getAddresses()简单地返回一组Address用户的ES.
我的问题是:ud即使会话已经关闭,为什么对象仍然具有其值(例如,名称)?getAddresses()是类的实例变量UserDetails.但为什么我不能检索它的值,但我可以检索UserDetails该类的常规实例变量?
ud.getAddresses()是一个@EmbeddedCollection.
java persistence hibernate lazy-evaluation lazy-initialization
我使用两个配置文件:开发和生产.
开发应在默认情况下有效; 我发布时应该使用生产.
在我的pom.xml中,我有:
[...]
<plugin>
<artifactId>maven-release-plugin</artifactId>
<version>2.0-beta-9</version>
<configuration>
<useReleaseProfile>false</useReleaseProfile>
<goals>deploy</goals>
<arguments>-Pproduction</arguments>
</configuration>
</plugin>
[...]
<profiles>
<profile>
<id>production</id>
<properties>
<profile.name>production</profile.name>
</properties>
[...]
</profile>
<profile>
<id>development</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<profile.name>development</profile.name>
</properties>
[...]
</profile>
[...]
Run Code Online (Sandbox Code Playgroud)
它只是不起作用.
useReleaseProfiles也不起作用:http:
//jira.codehaus.org/browse/MRELEASE-459
开发配置文件应始终处于活动状态,但在运行时不应mvn release:perform.你是如何实现这一目标的?
[更新]:我已经看到调试标志使用了我的生产配置文件,但也使用了开发配置文件,因为它是activeByDefault.这个releaseProfile论点无法改写.强制释放插件仅使用"生产"配置文件会很好.
要记录给定类的错误,我正在访问类名,如下所示:这是一种将类名作为String返回的"好方法",因此它可以用于记录吗?
private static final String CLASS_NAME = MyClass.class.getName();
logger.error("Error occurred in "+CLASS_NAME);
Run Code Online (Sandbox Code Playgroud) 我有一个类来管理大型软件项目的用户首选项.项目中可能需要从持久性存储设置或检索用户首选项的任何类都是在此类上调用静态方法.这种集中管理允许以编程方式完全擦除首选项 - 如果每个pref都是在接近其使用代码的情况下处理的话,这将是不可能的.
在此过程中,我遇到了集中化设计的另一个含义.该软件具有公共API.该API可以在jar中自行提供.该API中的类可能引用pref管理类.因此,pref管理器必须进入API jar.
每个首选项可能都有一个默认值.软件启动时,可能会计算该默认值.该算法取决于偏好,因此倾向于驻留在使用代码附近.因此,如果pref管理器需要提供默认值,它会调用相关的类.
但现在pref经理已成为一个"章鱼类",将各种类型的类吸入到不应该存在的API jar中.如果没有,那么使用API jar的程序很快会遇到ClassDef异常.如果确实如此,则API jar现在变得臃肿,因为其他每个类都可能引用其他类.
通常,其他Java程序员是否使用集中式类来管理他们的首选项?
将静态pref管理类作为公共API的一部分进行分发是否有意义?
该pref经理是否应该成为确定默认值的代码的守护者?
我找不到重复的,所以我决定发布。我们现在正在进入套接字(初学者级别),并获得了下面的代码,使客户端使用send()和向服务器发送一条简单的消息recv()。但是,我尝试过的一切似乎都没有摆脱error: Bad File Descriptor并且newsockfd总是返回 value -1。我很困惑,不知道为什么它不起作用。
定义文件
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#define SERV_TCP_PORT 6000
#define SERV_HOST_ADDR "127.0.0.1"
char *pname;
Run Code Online (Sandbox Code Playgroud)
客户端
#include "../defs.h"
#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
main(argc, argv)
int argc;
char *argv[];
{
int sockfd;
struct sockaddr_in serv_addr;
pname=argv[0];
bzero((char*) &serv_addr, sizeof(serv_addr));
serv_addr.sin_family=AF_INET;
serv_addr.sin_addr.s_addr=inet_addr(SERV_HOST_ADDR);
serv_addr.sin_port=htons(SERV_TCP_PORT);
if((sockfd=socket(AF_INET,SOCK_STREAM,0)) < 0) {
printf("client: can't open stream socket\n");
exit(0);
}
if (connect(sockfd,(struct sockaddr *) &serv_addr, sizeof(serv_addr)) < …Run Code Online (Sandbox Code Playgroud) 我试图使用java正则表达式匹配器类,我在我的代码中遇到NullPointerException:
String input = null;
System.out.println("\nEnter your username: ");
Matcher matcher = VALID_USERNAME_REGEX.matcher(input); //EXCEPTION IS HERE
if (matcher.find()) {
username = input;
} else {
input = null;
System.out.println("\nInvalid input, please try again!");
}
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪:(行:173在上面的代码中,注释" //EXCEPTION IS HERE"所在的位置)
Exception in thread "main" java.lang.NullPointerException
at java.util.regex.Matcher.getTextLength(Unknown Source)
at java.util.regex.Matcher.reset(Unknown Source)
at java.util.regex.Matcher.<init>(Unknown Source)
at java.util.regex.Pattern.matcher(Unknown Source)
at org.console.Interface.createAccount(Interface.java:173)
at org.console.Interface.login(Interface.java:78)
at org.application.Application.run(Application.java:31)
at org.application.Application.main(Application.java:37)
Run Code Online (Sandbox Code Playgroud)
输入的值应该是用户在控制台中输入的值.正则表达式应匹配输入以验证它是否满足正则表达式要求.
网站上的日常维护通常涉及验证链接是否有效,标记链接是否有效等.
我知道如何通过脚本匹配电子邮件地址(特别是在他们在mailto:链接中的网页的上下文中).我的问题是如何在不发送垃圾邮件的情况下验证它们是否正常?
剥离域并验证它正在侦听端口25是部分答案,但不处理验证用户名/别名.
有没有办法将此添加到我管理的网站的维护脚本中?
我真的不在乎它写的是什么语言,只要它有效:)
java ×7
algorithm ×1
appearance ×1
async-await ×1
bash ×1
c ×1
c# ×1
eclipse ×1
email ×1
gnu-screen ×1
hibernate ×1
linux ×1
logging ×1
maintenance ×1
maven-2 ×1
oop ×1
persistence ×1
sockets ×1
tmux ×1
unit-testing ×1
verification ×1
wcf ×1
xcode ×1
xcode8.2 ×1