小编Ume*_*cha的帖子

多线程使用的Java同步和静态同步方法

我总是对以下场景感到困惑

MyClass只有一个对象,有两个线程T1,T2.现在一个线程说T2将能够使用同步方法m1(),它具有唯一的MyClass对象锁定,而其他线程T2将被阻止,如果它将尝试访问m1().

现在我的感觉是,如果T2将尝试通过访问静态共享字段来访问静态同步方法m2(),它将被阻止,因为当前对象锁定是T1并且不能执行m2()并且如果有两个Myclass对象然后T2线程将能够访问m1().我是对还是错?

class MyClass
{

            public static int i = 5;

        public synchronized void m1()
        {
                System.out.println(i); //uses static field i of MyClass
            //T1 is executing this method
        }

            public static synchronized void m3()
            {
                //T2 will be able to call this method on same object lock while it is using
                //static field i???
                System.out.println(i);//uses static field i of MyClass
            }
}
Run Code Online (Sandbox Code Playgroud)

请帮忙,这很混乱.提前致谢.

java synchronization

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

在目录上递归计算.gz文件的行数?

我有数百个目录,每个目录包含.gz文件,我想计算该.gz文件的行数.

我尝试了以下一个衬垫来实现这一点,但它不起作用说gzip:stdin:意外的文件结束

find . type -f -name '*.data.gz' | gunzip -c  | wc -l 
Run Code Online (Sandbox Code Playgroud)

例如,如果有两个目录,每个目录有一个.gz文件,并假设每个目录有100行,那么我想要200行总输出.

unix bash shell

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

使用Java API进行ElasticSearch日期范围查询聚合

嗨我有cpu使用文档,里面有date_time字段.现在我想找到日期范围的avg cpu用法.我想出了以下解决方案.如果我是Elastic Search的新手,请告诉我是否有任何进步或更好的方法.

client.prepareSearch("myindex").
       setTypes("mytype").
       setQuery(
           QueryBuilders.filteredQuery(QueryBuilders.matchAllQuery(),
           FilterBuilders.andFilter(FilterBuilders.termFilter("server","x"),
           FilterBuilders.rangeFilter(date_time).from(fdate).to(tdate)))).get()
Run Code Online (Sandbox Code Playgroud)

现在,上面的查询将我作为预期文档返回到日期范围内.现在我尝试做的是我从这些文档中找到所有独特的日期,SearchHits并且我将这个独特的日期组合存储在a中HashSet,现在对于此内的所有项目,HashSet我执行以下查询

client.prepareSearch("myindex").
       setTypes("mytype").
       setQuery(
           QueryBuilders.filteredQuery(QueryBuilders.matchAllQuery(),
           FilterBuilders.andFilter(FilterBuilders.termFilter("server","x"),
           FilterBuilders.termFilter(date_time),"dateinputfromloop"))).
       addAggregation(AggregationBuilders.avg("cpu_agg").field("cpu_time"))
       .get()
Run Code Online (Sandbox Code Playgroud)

现在上面的查询工作正常并给出输出我获得每个日期时间组合的平均CPU.我想知道这些是否是更好的方法,因为我在所有日期组合的循环中执行上面的查询.请提前指导谢谢.

java elasticsearch

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

基于正斜杠的Perl拆分字符串

我是Perl的新手,所以这是基本问题。我有一个字符串,如下所示。我有兴趣从中取出日期,所以想用斜线分割

my $path = "/bla/bla/bla/20160306";
my $date = (split(/\//,$path))[3];#ideally 3 is date position in array after split
print $date;
Run Code Online (Sandbox Code Playgroud)

但是,我没有看到预期的输出,但是看到了5个输出。请指导。

regex perl

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

使用 mergeSchema 时 Spark DataFrame 重复列名

我有一个巨大的 Spark DataFrame,我使用以下语句创建它

val df = sqlContext.read.option("mergeSchema", "true").parquet("parquet/partitions/path")
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试在上面的 DataFrame 上执行列重命名或选择操作时,它失败说发现了不明确的列,但出现以下异常

org.apache.spark.sql.AnalysisException:引用“Product_Type”不明确,可能是 Product_Type#13、Product_Type#235

现在我看到列,发现有两列Product_TypeProduct_type它们似乎是相同的列,但由于随着时间的推移模式合并而创建了一个字母大小写不同的列。现在我不介意保留重复的列,但 Spark sqlContext 由于某种原因不喜欢它。

我相信默认spark.sql.caseSensitive配置是正确的,所以不知道为什么会失败。我正在使用 Spark 1.5.2。我是 Spark 新手。

scala apache-spark apache-spark-sql

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

Java多线程访问一个String

我有一个字符串,将以不可预测的顺序由四个不同的线程访问.

String s = "When value is";
Run Code Online (Sandbox Code Playgroud)

现在上面的字符串将通过Java Swing EDT由四个不同的线程更新.我有两个JCombobox和两个JTextField.这些组件的内部事件处理程序我将不得不更新上面的字符串.

例如,当textfield焦点更改时,字符串应为"当值为X"时,当组合更改时,字符串应为"当值小于X和Y"时

所以像上面四个线程将改变一个字符串.如果我不控制它们输出是意料之外的.解决这个问题的最佳方法是什么?我可以使用join()或者可以使用volatile但它会使代码变得复杂.

请分享您的想法.提前致谢.

java swing

0
推荐指数
1
解决办法
703
查看次数

Java同步和静态同步方法访问静态字段

以下程序的行为是什么,静态同步方法和实例同步方法试图在不同的线程中访问同一类的静态字段?任何线程都会被阻止吗?它非常令人困惑.

class MyClass
{
        public static int i = 5;

        public synchronized void m1()
        {
                System.out.println(i); //uses static field i of MyClass
            //T1 is executing this method
        }

        public static synchronized void m3()
        {
            //T2 will be able to call this method on same object lock while it is using
            //static field i???
            System.out.println(i);//uses static field i of MyClass
        }
}
Run Code Online (Sandbox Code Playgroud)

java synchronization

0
推荐指数
1
解决办法
4360
查看次数

我们可以在Java 7中同时使用资源和多捕获吗?

您好我们可以在Java 7中同时使用资源和多重捕获吗?我试图使用它,它给出了编译错误.我可能错误地使用它.请指正.

try(GZIPInputStream gzip = new GZIPInputStream(new FileInputStream(f));
    BufferedReader br = new BufferedReader(new InputStreamReader(gzip))
    {
         br.readLine();
    }
    catch (FileNotFoundException | IOException e) {
         e.printStackTrace();
    }
Run Code Online (Sandbox Code Playgroud)

提前致谢.

java java-7

0
推荐指数
1
解决办法
479
查看次数

如何从Java String数组创建Spark广播变量?

嗨,我有Java字符串数组,其中包含45个字符串,基本上是列名

String[] fieldNames = {"colname1","colname2",...}; 
Run Code Online (Sandbox Code Playgroud)

目前,我将上面的String数组存储在静态字段中的Spark驱动程序中.我的工作运行缓慢所以试图重构代码.我在创建DataFrame时使用上面的String数组

DataFrame dfWithColNames = sourceFrame.toDF(fieldNames); 
Run Code Online (Sandbox Code Playgroud)

我想使用广播变量做上面的事情,它不会向每个执行者发送巨大的字符串数组我相信我们可以做如下的事情来创建广播

String[] brArray = sc.broadcast(fieldNames,String[].class);//gives compilation error 

DataFrame df = sourceFrame.toDF(???);//how do I use above broadcast can I use it as is by passing brArray 
Run Code Online (Sandbox Code Playgroud)

请指导我是Spark新手.非常感谢.

apache-spark

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

采访作业:哪个是更好的Java ArrayList创建

可能重复:
Java中的类型列表与类型ArrayList

嗨我在接受采访时被问到以下问题:

您会在何时何地选择以下哪一项?

ArrayList<SomeType> a = new ArrayList<SomeType>(); or
List<SomeType> a = new ArrayList<SomeType>();
Run Code Online (Sandbox Code Playgroud)

我不知道有什么区别,如果有人知道请帮助.提前致谢.

java list arraylist

-3
推荐指数
1
解决办法
370
查看次数

斯卡拉面试任务

我是Scala的新手.我遇到过这个Scala计划,并在采访中被问到.

以下程序的输出是什么

object ApplyTo extends Application { 
  val k = "gWU`UAXYjT[ig\\\\eBWca"; 
  println(k map {c => (c - k.size).toChar toLower}) 
}
Run Code Online (Sandbox Code Playgroud)

请帮忙.我是Scala的新手.我也不确定这个程序是否会编译.

scala

-4
推荐指数
1
解决办法
4252
查看次数