小编Ran*_*ion的帖子

从给定的URL获取域名

给定一个URL,我想提取域名(它不应该包含'www'部分).网址可以包含h​​ttp/https.这是我写的java代码.虽然它似乎工作正常,有没有更好的方法或有一些边缘情况,可能会失败.

public static String getDomainName(String url) throws MalformedURLException{
    if(!url.startsWith("http") && !url.startsWith("https")){
         url = "http://" + url;
    }        
    URL netUrl = new URL(url);
    String host = netUrl.getHost();
    if(host.startsWith("www")){
        host = host.substring("www".length()+1);
    }
    return host;
}
Run Code Online (Sandbox Code Playgroud)

输入:http://google.com/blah

输出:google.com

java url

111
推荐指数
4
解决办法
17万
查看次数

按类型将引用bean自动装配到列表中

我有一个类有一个Daemon类型的对象列表.

class Xyz {    
    List<Daemon> daemons;
}
Run Code Online (Sandbox Code Playgroud)

我的弹簧配置看起来像这样.

<bean id="xyz" class="package1.Xyz">
   <property name="daemons" ref="daemonsList">
</bean>

<bean id="daemon1" class="package1.DaemonImpl1"/>
<bean id="daemon2" class="package1.DaemonImpl2"/>

<bean id="daemonsList" class="java.util.ArrayList">
        <constructor-arg>
            <list>
                <ref bean="daemon1" />      
                <ref bean="daemon2" />
            </list>
        </constructor-arg>
</bean>
Run Code Online (Sandbox Code Playgroud)

现在,不是在列表中显式连接每个守护进程实现,而是可以Daemon在列表中自动自动装配所有类型的bean .我试图解决的问题是,如果有人创建了一个新的Daemon类实现的bean 并忘记将其连接到列表中.

我在stackoverflow上的某个地方看到过这个问题,但是无法再找到它.为此道歉.

java spring

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

为什么Thread.sleep使用不好

对这个重复的问题道歉,但我还没有找到任何令人满意的答案.大多数问题都有自己的特定用例:
Java -
thread.sleep的替代方法是否有更好的或替代方法可以跳过/避免在Java中使用Thread.sleep(1000)?

我的问题是非常通用的用例.等待条件完成.做一些操作.检查条件.如果条件不成立,请等待一段时间再进行相同的操作.

例如,考虑一种通过调用其createAPI表来创建DynamoDB表的方法.DynamoDB表需要一些时间才能变为活动状态,因此该方法会调用其DescribeTable API以定期轮询状态,直到某个时间(假设5分钟 - 由于线程调度而导致的偏差是可接受的).如果表在5分钟内变为活动状态,则返回true,否则抛出异常.

这是伪代码:

public void createDynamoDBTable(String name) {
  //call create table API to initiate table creation

  //wait for table to become active
  long endTime = System.currentTimeMillis() + MAX_WAIT_TIME_FOR_TABLE_CREATE;

  while(System.currentTimeMillis() < endTime) {
    boolean status =  //call DescribeTable API to get status;
    if(status) {
         //status is now true, return
         return
    } else {
        try {
            Thread.sleep(10*1000);
        } catch(InterruptedException e) {
        }
    }
  }

  throw new RuntimeException("Table still not created");
}
Run Code Online (Sandbox Code Playgroud)

我理解通过使用Thread.sleep块当前线程,从而消耗资源.但是在一个相当中等规模的应用程序中,一个主题是一个大问题吗?
我在那里阅读使用 …

java multithreading java-threads

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

在使用EMR/Hive将数据从S3导入DynamoDB时,如何处理用引号(CSV)括起来的字段

我正在尝试使用EMR/Hive将数据从S3导入DynamoDB.我的CSV文件包含用双引号括起来并用逗号分隔的字段.在hive中创建外部表时,我可以将分隔符指定为逗号但是如何指定字段用引号括起来?

如果我没有指定,我看到DynamoDB中的值填充在两个双引号""value""中,这似乎是错误的.

我正在使用以下命令来创建外部表.有没有办法指定字段用双引号括起来?

CREATE EXTERNAL TABLE emrS3_import_1(col1 string, col2 string, col3 string, col4 string)  ROW FORMAT DELIMITED FIELDS TERMINATED BY '","' LOCATION 's3://emrTest/folder';
Run Code Online (Sandbox Code Playgroud)

任何建议,将不胜感激.谢谢Jitendra

hive amazon-s3 amazon-web-services amazon-emr amazon-dynamodb

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

一个对象是否总是看到其最新的内部状态而与线程无关?

假设我有一个带有简单整数计数变量的可运行对象,该变量在每次可运行对象运行时都会增加。提交此对象的一个​​实例,使其在预定的执行程序服务中定期运行。

class Counter implements Runnable {
    private int count = 0;

    @Override
    public void run() {
      count++;
    }
}

Counter counter = new Counter();
ScheduledExecutorService executorService = Executors.newScheduledThreadPool(5);
executorService.scheduleWithFixedDelay(counter, 1, 1, TimeUnit.SECONDS);
Run Code Online (Sandbox Code Playgroud)

在这里,对象正在访问其在不同线程内部的内部状态(读取和递增)。此代码是线程安全的,还是count在其他线程中计划变量时丢失变量的更新?

java concurrency multithreading

12
推荐指数
2
解决办法
393
查看次数

使用特定模式将Instant格式化为String

我试图格式化InstantString一个特定的格式.根据这里的问题格式化即时字符串,我这样做 -

DateTimeFormatter formatter = DateTimeFormatter
        .ofPattern("YYYY-MM-DD'T'hh:mm'Z'")
        .withZone(ZoneOffset.UTC);

// Fails for current time with error 'Field DayOfYear cannot be printed as the 
// value 148 exceeds the maximum print width of 2'
LocalDateTime 
      .ofInstant(Instant.now(), ZoneOffset.UTC)
      .format(DATE_TIME_FORMATTER);

// But works for smaller values of Instant    
LocalDateTime
     .ofInstant(Instant.ofEpochMilli(604800000), ZoneOffset.UTC)
     .format(DATE_TIME_FORMATTER));
Run Code Online (Sandbox Code Playgroud)

有关为什么会发生这种情况的任何建议?

谢谢

java

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

如何从Java中的®,©,™等字符串中删除高位ASCII字符

我想从Java中的String中检测并删除高级ASCII字符,如®,©,™.有没有可以做到这一点的开源库?

java string

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

如何以编程方式有效地将文件从HDFS复制到S3

我的hadoop作业在HDFS上生成大量文件,我想编写一个单独的线程,将这些文件从HDFS复制到S3.

任何人都可以指向任何处理它的Java API.

谢谢

hadoop amazon-s3 hdfs

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

SimpleDateFormat将lenient设置为false的异常

为什么这段代码会抛出不可解析日期的异常?

SimpleDateFormat f = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'.000Z'");
f.setLenient(false);
String dateStr = "2012-03-11T02:46:01.000Z";
f.parse(dateStr);
Run Code Online (Sandbox Code Playgroud)

当宽松是真的时,它工作正常.它奇怪地适用于输入日期' 2012-03-01T02:46:01.000Z ',即使宽松为假.使用的默认时区:PST

java formatting datetime

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

doAnswer用于静态方法 - PowerMock

我正在使用的静态方法之一,它做了两件事.它返回一些数据,但它也修改传递给它的参数对象.然后在代码中使用此更新的参数对象.

我正在使用PowerMock来模拟返回行为.

为了定义第二部分 - 更新输入参数,我正在定义doAnswer方法,但它不起作用.我正在尝试测试的方法看起来像这样.

public void login() throws ConnectionException, AsyncApiException {
    ConnectorConfig partnerConfig = new ConnectorConfig();

    //This call sets the value in one member variable 'serviceEndPoint in ParterConfig which is accessed later in this method only.
    partnerConnection = Connector.newConnection(partnerConfig);

    //partnerConfig.getServiceEndpoint is called.

    PowerMockito.mockStatic(Connector.class);
    when(Connector.newConnection(Mockito.any(ConnectorConfig.class))).thenReturn(partnerConnection);

    PowerMockito.doAnswer(new Answer<Void>() {
        @Override
        public Void answer(InvocationOnMock invocation) {
            ConnectorConfig config = (ConnectorConfig) invocation.getArguments()[0];
            config.setServiceEndpoint("service end point");
            return null;
        }
    }).when(Connector.newConnection(Mockito.any(ConnectorConfig.class)));
}     
Run Code Online (Sandbox Code Playgroud)

但是上面抛出的错误说'在这里检测到未完成的短截'. Connector是第三方课程,所以我无法控制其行为.

有什么建议,可能会出错吗?

java mocking powermock

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