小编Kal*_*ist的帖子

Future.cancel(boolean)方法的实用程序

我只是在探索java.util.concurrent包.

我了解到类' Future '有一个方法boolean cancel(boolean mayInterruptIfRunning)

请查找附上我写的测试代码:

package com.java.util.concurrent;

import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;
import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.ScheduledThreadPoolExecutor;

public class FutureTester {

/**
 * @param args
 * @throws InterruptedException
 */
public static void main(String[] args) throws InterruptedException {
    // TODO Auto-generated method stub
    int poolCnt = 1;
    Callable<NumberPrinter> numberPrinter = null;
    ScheduledThreadPoolExecutor schPool = new ScheduledThreadPoolExecutor(
            poolCnt);
    ScheduledFuture<NumberPrinter>[] numPrinterFutures = new ScheduledFuture[poolCnt];
    FutureTask<NumberPrinter>[] futureTask = new FutureTask[poolCnt];

    for (int i = 0; i < poolCnt; i++) {
        numberPrinter = new …
Run Code Online (Sandbox Code Playgroud)

java multithreading future futuretask

37
推荐指数
3
解决办法
3万
查看次数

Hibernate:没有配置CurrentSessionContext

我因某些愚蠢的错误而陷入困境但却无法弄明白!

Hibernate 4.2.6

我之前曾多次提到这个问题,例如这里

的hibernate.cfg.xml

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-configuration SYSTEM
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN" 
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
    <session-factory>
        <property name="hibernate.bytecode.use_reflection_optimizer">false</property>

        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.password">root</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property>
        <property name="hibernate.connection.username">root</property>

        <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>

        <property name="show_sql">true</property>

        <property name="hibernate.current_session_context_class">org.hibernate.context.ThreadLocalSessionContext</property>

        <mapping resource="Event.hbm.xml"></mapping>
    </session-factory>
</hibernate-configuration>
Run Code Online (Sandbox Code Playgroud)

Event.hbm.xml

<!DOCTYPE hibernate-mapping PUBLIC 
    "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">

<hibernate-mapping>

    <class name="com.db.pojo.Event" table="Events">

        <id name="id" column="Id">
            <generator class="native"></generator>
        </id>
        <property name="title" column="Title"></property>

        <property name="date" column="Date" type="timestamp"></property>

    </class>

</hibernate-mapping>
Run Code Online (Sandbox Code Playgroud)

的HibernateUtil

package com.db.util;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistryBuilder;

public class HibernateUtil { …
Run Code Online (Sandbox Code Playgroud)

hibernate hibernate-mapping hibernate-4.x

27
推荐指数
2
解决办法
7万
查看次数

Maven构建问题 - 拒绝连接到存储库

我希望导入,更改,重建,测试和推送/签入我对此Github存储库中可用代码的更改

目前,我不希望为此目的使用任何IDE或插件.

我在我的Windows机器上安装了Maven,按照安装说明进行操作,如下所示:

C:\Documents and Settings\298790\My Documents\Downloads\seismichadoop-master>mvn
 -X package
Apache Maven 3.0.5 (r01de14724cdef164cd33c7c8c2fe155faf9602da; 2013-02-19 19:21:
28+0530)
Maven home: D:\Omkar\Development\Softwares\Tools\apache-maven-3.0.5
Java version: 1.6.0_20, vendor: Sun Microsystems Inc.
Java home: C:\Program Files\Java\jdk1.6.0_20\jre
Default locale: en_US, platform encoding: Cp1252
OS name: "windows xp", version: "5.1", arch: "x86", family: "windows"
[INFO] Error stacktraces are turned on.
[DEBUG] Reading global settings from D:\Omkar\Development\Softwares\Tools\apache
-maven-3.0.5\conf\settings.xml
[DEBUG] Reading user settings from C:\Documents and Settings\298790\.m2\settings
.xml
[DEBUG] Using local repository at C:\Documents and Settings\298790\.m2\repositor
y
[DEBUG] …
Run Code Online (Sandbox Code Playgroud)

github maven-3 maven

14
推荐指数
1
解决办法
7万
查看次数

使用Jersey的JAX WS RS - 返回Collection,Map等

我正在使用Jersey 2.3

我的WS端点类:

@Path("/employees")
public class EmployeeWSEndpoint {

    @Context
    Request request;

    @GET
    @Path("/allEmployees")
    @Produces(MediaType.APPLICATION_JSON)
    public List<Employee> getAllEmployees() {

        System.out.println("In EmployeeWSEndpoint.getAllEmployees()");

        EmployeeService employeeService = new EmployeeServiceImpl();
        return employeeService.getAllEmployees();
    }

    @GET
    @Path("/allDept")
    @Produces(MediaType.APPLICATION_JSON)
    public List<String> getAllDept() {

        System.out.println("In EmployeeWSEndpoint.getAllDept()");

        List<String> deptNames = new ArrayList<>();
        deptNames.add("CoE");
        deptNames.add("iLabs");

        return deptNames;
    }

    @GET
    @Path("/allDeptPOJO")
    @Produces(MediaType.APPLICATION_JSON)
    public TempPOJO getAllDeptPOJO() {

        System.out.println("In EmployeeWSEndpoint.getAllDeptPOJO");

        TempPOJO tempPOJO = new TempPOJO();

        return tempPOJO;
    }
}
Run Code Online (Sandbox Code Playgroud)

员工PO​​JO:

public class Employee {

    private int id;
    private String firstName;
    private String middleName; …
Run Code Online (Sandbox Code Playgroud)

rest jax-ws jaxb jersey-2.0

14
推荐指数
3
解决办法
2万
查看次数

Hive - 外部(动态)分区表

我在MySQL中有一个表.nas_comps.

select comp_code, count(leg_id) from nas_comps_01012011_31012011 n group by comp_code;
comp_code     count(leg_id)
'J'           20640
'Y'           39680
Run Code Online (Sandbox Code Playgroud)

首先,我使用Sqoop将数据导入HDFSHadoop版本1.0.2):

sqoop import --connect jdbc:mysql://172.25.37.135/pros_olap2 \
--username hadoopranch \
--password hadoopranch \
--query "select * from nas_comps where dep_date between '2011-01-01' and '2011-01-10' AND \$CONDITIONS" \
-m 1 \
--target-dir /pros/olap2/dataimports/nas_comps
Run Code Online (Sandbox Code Playgroud)

然后,我创建了一个外部的分区Hive表:

/*shows the partitions on 'describe' but not 'show partitions'*/
create external table  nas_comps(DS_NAME string,DEP_DATE string,
                                 CRR_CODE string,FLIGHT_NO string,ORGN string,
                                 DSTN string,PHYSICAL_CAP int,ADJUSTED_CAP int,
                                 CLOSED_CAP int)
PARTITIONED BY (LEG_ID int, month INT, COMP_CODE …
Run Code Online (Sandbox Code Playgroud)

hive hiveql

9
推荐指数
2
解决办法
2万
查看次数

HBase:get(...)vs scan和in-memory table

我正在执行MR over HBase.

reducer中的业务逻辑大量访问两个表,比如T1(40k行)和T2(90k行).目前,我正在执行以下步骤:

1.在reducer类的构造函数中,执行以下操作:

HBaseCRUD hbaseCRUD = new HBaseCRUD();

HTableInterface t1= hbaseCRUD.getTable("T1",
                            "CF1", null, "C1", "C2");
HTableInterface t2= hbaseCRUD.getTable("T2",
                            "CF1", null, "C1", "C2");
Run Code Online (Sandbox Code Playgroud)

在减少(...)

 String lowercase = ....;

/* Start : HBase code */
/*
 * TRY using get(...) on the table rather than a
 * Scan!
 */
Scan scan = new Scan();
scan.setStartRow(lowercase.getBytes());
scan.setStopRow(lowercase.getBytes());

/*scan will return a single row*/
ResultScanner resultScanner = t1.getScanner(scan);

for (Result result : resultScanner) {
 /*business logic*/
}
Run Code Online (Sandbox Code Playgroud)

虽然不确定上面的代码是否在第一时间是合理的,但我有一个问题 - 获得(...)会在扫描中提供任何性能优势吗?

Get get …
Run Code Online (Sandbox Code Playgroud)

hadoop hbase mapreduce

9
推荐指数
1
解决办法
5210
查看次数

基础知识 - 使用Java读/写远程文件

我开始要求从远程Ubuntu机器上的目录中读取和写入文件.

首先,我编写了一个Java程序,可以从远程Windows机器(即LAN)上的共享文件夹中读取,写入文件.在这里,这样的东西适用于我的(本地)Windows机器:

File inputFile = new File(
                "\\172.17.89.76\EBook PDF");/*ignore the syntax errors, the loc is just for the idea*/
Run Code Online (Sandbox Code Playgroud)

现在,当我考虑一台远程Ubuntu机器时,显然我不能做这样的事情,因为机器不在局域网上(我不确定即使它在LAN上也能做到!).因此,我尝试了以下方法:

  1. 使用Jsch,在两台机器之间建立信任(本地 - 远程Linux,远程Linux - 远程Linux)和使用sftp写入文件.(完成)
  2. 在两台机器上运行套接字 - 一个发送器,一个接收器(两个Java)(完成)
  3. 试图实现I/O相似的Windows(LAN)机器的代码片段(未实现)

在做所有这些的时候,我有很多疑问,阅读过很多帖子等等,我觉得我在基础知识上缺少一些东西:

  • 实现IO需要某种信任构建(在两台机器之间)实用程序.但最后,我想编写一个类似于代码片段的代码,无论机器,网络等.
  • Jsch解决方案和其他建议(在URL上使用http,ftp等)最终使用在远程计算机上运行的一些服务.换句话说,并不是Java IO被用于访问远程文件系统 - 这对我没有吸引力,因为我依赖于服务而不是使用旧的I/O.
  • Samba,SSHFS太突然出现在场景中,只会增加我的困惑.但我不认为它们是我的目标的解决方案!

重申一下,我想用Java I/O编写一个代码(普通的或者nio,两者都很好),这些代码只需读取,编写远程文件而不使用ftp,http等协议或套接字发送器 - 接收器模型的服务.我的期望有效吗?

  • 如果没有,为什么以及使用Java读取/写入远程文件的最佳方法是什么?
  • 如果是的话,如何实现同样的目标!

PS:如果我需要精心准确地提出我的问题,请发表评论!

java file-io java-io

8
推荐指数
2
解决办法
4万
查看次数

HBase - 行键基础知识

注意:几个小时前,我开始使用 HBase 并且我来自 RDBMS 背景:P

我有一个类似 RDBMS 的表 CUSTOMERS 具有以下列:

  1. CUSTOMER_ID STRING
  2. CUSTOMER_NAME STRING
  3. CUSTOMER_EMAIL STRING
  4. CUSTOMER_ADDRESS STRING
  5. CUSTOMER_MOBILE STRING

我想到了以下 HBase 等效项:

表:客户行键:客户 ID

列族:CUSTOMER_INFO

列:姓名电子邮件地址移动

从我读过的内容来看,RDBMS 表中的主键大致类似于HBase 表的行键。因此,我想保留 CUSTOMER_ID 作为行键。

我的问题既愚蠢又直接:

  1. 不管我是使用 shell 命令还是 HBaseAdmin java 类,我如何定义行键?我在 shell 或 HBaseAdmin 类中都没有找到任何可以做的事情(比如 HBaseAdmin.createSuperKey(...))
  2. 给定一个 HBase 表,如何确定 rowkey 详细信息,即哪些值用作 rowkey?
  3. 我知道 rowkey 设计是一件至关重要的事情。假设客户 id 接收 CUST_12345、CUST_34434 等值,HBase 将如何使用 rowkey 来决定特定行驻留在哪个区域(假设该区域概念类似于 DB 水平分区)?

* * *编辑添加示例代码片段

我只是想在 shell 中使用“put”为客户表创建一行。我这样做了:

hbase(main):011:0> put  'CUSTOMERS', 'CUSTID12345', 'CUSTOMER_INFO:NAME','Omkar Joshi'
0 row(s) in …
Run Code Online (Sandbox Code Playgroud)

hbase nosql

8
推荐指数
1
解决办法
2万
查看次数

正好处理一次消息

请考虑附图中所示的场景:

多个应用的​​多个实例.

  1. 门户(生产者)将向总线发送一些消息,必须由多个应用程序(消费者)处理 - PAYROLLAPP,HELPDESK等.
  2. 可能正在运行多个消费者应用程序实例,也可以动态添加/删除这些实例
  3. 现在,确保每个应用程序只处理一次消息是至关重要的,即如果PAYROLLAPP -1处理消息,PAYROLLAPP -2不应该处理它; 当然,在上图中,HELPDESK - 1必须处理它.简而言之,在多个实例的情况下,只需要处理一次消息
  4. 当我搜索答案时,大部分内容都是关于创建一个"选择性消费者" - 一个基于某种逻辑接受/拒绝消息的消费者 - 请注意,对于所显示的应用程序,不能进行任何更改/添加/包装.图.逻辑必须驻留在管理总线的提供程序中的某个位置

请指导一下.

在Petter回答后添加更多细节:

我目前的理解和方法

  1. 左点划线左侧的项目是"接近" - 纯JMS,ESB,EAI
  2. 右点划线右侧的项目是"实施"

现在,最重要的部分 - 问题:

  1. 无论解决方案(纯JMS,ESB,EAI)如何,是否需要实现水平虚线(特定于应用程序的队列)下方的部分?
  2. 如何使用ESB(JBoss ESB等)而不是"纯粹的"JMS(Active MQ等)来帮助/阻碍?ESB是否提供优于JMS的任何优势,即"仅限Java"(?).我很困惑 - 'ESB或JMS',即使在引用这样的线程之后:JMS和ESB - 它们是如何相关的?.它有一个回复说"JMS不太适合REST服务,文件系统,S/FTP,电子邮件,Hessian,SOAP等的集成,这些都可以通过本机支持这些类型的ESB更好地处理.例如,如果您有一个进程在午夜转储500MB的CSV文件,并且您希望另一个系统拾取该文件,解析CSV并导入到数据库中,这可以通过ESB轻松完成 - 而只需要一个解决方案JMS会很糟糕.同样,REST服务的集成,以及对多个后端实例的负载平衡/故障转移,可以通过本机支持HTTP/S的ESB更好地完成." 这只会增加我的困惑!
  3. EAI框架(Apache Camel等)的使用方法是否与纯JMS或ESB方法完全不同?如果是,那么利弊如何?
  4. 有人告诉我ESB本身无济于事,需要使用BPM(或其他东西?)来定义和存储"路由"逻辑 - 这是真的吗?

messaging esb jms

6
推荐指数
1
解决办法
2435
查看次数

$cond运算符java代码

我有一个聚合查询如下:

db.TWITTER_DATA_Processed.aggregate( {$match : { SpId : 840, Scheduler_id : "SCH_01" }},{$group : {_id : {SpId : "$SpId", Scheduler_id : "$Scheduler_id",Country : "$Country"}, positive_count :  { $sum: { $cond: [ { $gt: [ "$Sentiment", 0 ] } , 1, 0 ] } }, neutral_count :  { $sum: { $cond: [ { $eq: [ "$Sentiment", 0 ] } , 1, 0 ] } }, negative_count :  { $sum: { $cond: [ { $lt: [ "$Sentiment", 0 ] } , 1, 0 …
Run Code Online (Sandbox Code Playgroud)

mongodb mongodb-java aggregation-framework

5
推荐指数
1
解决办法
3808
查看次数