Tag: scala

如何在JAXB中设置非命名空间的nil和datatype属性

我正在使用Scala的JAXB,我的编组代码如下所示: def marshalToXml(): String = { val context = JAXBContext.newInstance(this.getClass()) val writer = new StringWriter context.createMarshaller.marshal(this, writer) writer.toString() } 然后,对于我的可空元素,我使用注释@XmlElement(nillable = true) ,根据JAXB编组使用空字段 。 这给了我像这样的XML输出: Alex Dean 1 2011-05-14T00:00:00+03:00 这是一个良好的开端,但我真正想要为这些领域编组的是: Alex Dean 1 2011-05-14T00:00:00+03:00 换句话说,我想删除命名空间属性和前缀,并为除字符串之外的所有字符串添加显式XML数据类型属性。 它可能很简单,但我似乎无法在JAXB文档中找到它。 任何帮助感激不尽!

Scala getClass.getResource()返回null

我有这个代码: val url: URL = getClass.getResource(“com/mysite/main/test.fxml”) 它总是返回null (或Unit )。 我在项目中只有两个文件: MyProj/src/com/mysite/main/Test.scala MyProj/src/com/mysite/main/test.fxml 当我运行Test.scala , url值始终为null。 我刚试过重建项目,我正在使用IntelliJ IDEA。 我在这做错了什么?

递归创建目录

有没有人知道如何使用Java创建基于n级深度字母表(az)的子目录? /a /a /a /b /c .. /b /a /b .. .. /a /b /c .. /b /a /a /b .. /b /a /b .. .. /a /b .. .. /a /a /b .. /b /a /b .. .. /a /b ..

将java.util.Map 转换为scala.collection.immutable.Map

如何将java.util.Map [String,Object]转换为scala.collection.immutable.Map [String,Any],以便将原始映射中的所有值(整数,布尔值等)转换为正确的值在Scala工作得很好。

如何用scala方式解析基于行的文本文件(.mht)?

我想使用scala来解析.mht文件,但我发现我的代码与Java完全一样。 以下是mht文件示例: From: Subject: Tencent IM Message MIME-Version: 1.0 Content-Type:multipart/related; charset=”utf-8″ type=”text/html”; boundary=”—-=_NextPart_20CAFF23_6090_43fc_8C0A.EE179EE81D19″ ——=_NextPart_20CAFF23_6090_43fc_8C0A.EE179EE81D19 Content-Type: text/html Content-Transfer-Encoding:7bit … ——=_NextPart_20CAFF23_6090_43fc_8C0A.EE179EE81D19 Content-Type:image/jpeg Content-Transfer-Encoding:base64 Content-Location:{64172C34-99E7-40f6-A933-3DDCF670ACBA}.dat /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMU FRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU FBQUFBQUFBT/wAARCAJwA7sDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUF BAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVW V1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi ——=_NextPart_20CAFF23_6090_43fc_8C0A.EE179EE81D19 Content-Type:image/jpeg Content-Transfer-Encoding:base64 Content-Location:{64172C34-99E7-40f6-A933-3DDCF670ACBA}.dat /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMU FRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU FBQUFBQUFBT/wAARCAJwA7sDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUF BAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVW V1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi ——=_NextPart_20CAFF23_6090_43fc_8C0A.EE179EE81D19 Content-Type:image/jpeg Content-Transfer-Encoding:base64 Content-Location:{64172C34-99E7-40f6-A933-3DDCF670ACBA}.dat /9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMU FRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQU FBQUFBQUFBT/wAARCAJwA7sDASIAAhEBAxEB/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUF BAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVW V1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi ——=_NextPart_20CAFF23_6090_43fc_8C0A.EE179EE81D19 有一个叫做boundary的特殊线,它是一个分隔线: ——=_NextPart_20CAFF23_6090_43fc_8C0A.EE179EE81D19 第一部分是关于此文件的一些信息,可以忽略。 以下是4个块,第一个是html文件,其他是带有base64编码文本的jpg图像。 如果我使用Java,代码如下: BufferedReader reader = new […]

Scala无法访问Java内部类?

我有一个看起来像这样的java类: public class Constants { public class Commands { public static final String CreateOrder = “CreateOrder”; } } 我想访问“CreateOrder”常量,在java中我可以像这样轻松访问它: String co = Constants.Commands.CreateOrder 但在Scala这不起作用为什么??? 如何从Scala访问“CreateOrder”,我无法改变Java代码。 谢谢。

Apache Spark:在Java中有效地使用mapPartitions

在当前早期发布的名为High Performance Spark的教科书中, Spark的开发人员注意到: 为了让Spark能够灵活地将一些记录溢出到磁盘,重要的是在mapPartitions中表示你的函数,这样你的函数就不会强制将整个分区加载到内存中(例如隐式转换为列表)。 迭代器有很多方法可以编写函数式转换,或者你可以构造自己的自定义迭代器。 当转换直接获取并返回迭代器而不强制它通过另一个集合时,我们称之为迭代器到迭代器的转换。 但是,教科书缺乏使用mapPartitions或类似方法变体的好例子。 并且在线存在很少的好代码示例 – 其中大多数是Scala。 例如,我们使用mapPartitions编写的mapPartitions看到这个Scala代码如何将列添加到mapPartitions中的org.apache.spark.sql.Row中 。 def transformRows(iter: Iterator[Row]): Iterator[Row] = iter.map(transformRow) sqlContext.createDataFrame(df.rdd.mapPartitions(transformRows), newSchema).show 不幸的是,Java没有提供像iter.map(…)那样好的迭代器。 所以它引出了一个问题,如何有效地使用mapPartitions的迭代器到迭代器转换而不将RDD作为列表完全溢出到磁盘? JavaRDD collection = prevCollection.mapPartitions((Iterator iter) -> { ArrayList out = new ArrayList(); while(iter.hasNext()) { InObj current = iter.next(); out.add(someChange(current)); } return out.iterator(); }); 这似乎是在Java示例中使用mapPartitions的一般语法,但我不知道这将是多么有效,假设你有一个拥有数万条记录的JavaRDD (甚至更多…因为,Spark是对于大数据)。 你最终会得到迭代器中所有对象的列表,只是将它转回迭代器(这就要求某种地图函数在这里效率更高)。 注意 :虽然使用mapPartitions这8行代码可以写成带有map或flatMap 1行,但我有意使用mapPartitions来利用它对每个分区而不是RDD每个元素进行操作的事实。 请问有什么想法吗?

使用scala模式匹配而不是java switch case有什么好处?

每个人都说模式匹配是函数式语言的一个很好的特性。 为什么? 我不能简单地使用ifs和切换案例的一切吗? 我想了解使用模式匹配而不是常规过程编程ifs和switch case的优点

在Scala中创建Java Enum

我的工作场所一直在尝试从Java迁移到Scala执行某些任务,并且它适用于我们正在做的事情。 但是,一些预先存在的日志记录方法需要java.lang.Enum 。 日志记录方法在(Java)基类中定义,子类可以定义自己的枚举,记录器将跟踪多个线程/机器中的所有实例。 它在Java中的工作原理如下: public class JavaSubClass extends JavaBaseClass { enum Counters { BAD_THING, GOOD_THING } public void someDistributedTask() { // some work here if(terribleThing) { loggingMethod(Counters.BAD_THING) } else { loggingMethod(Counters.GOOD_THING) // more work here } } } 然后,当任务完成后,我们可以看到 BAD_THING: 230 GOOD_THING: 10345 有没有办法在Scala中复制它,通过创建Java Enum或从Enumeration转换为Enum ? 我试过直接扩展Enum ,但似乎是密封的,因为我在控制台中收到错误: error: constructor Enum in class Enum […]

用于解析latex或MathML字符串的Java或scala库

我需要将很多方程式和数学公式存储到数据库中进行模拟实验,我认为最好使用一些mathML或者乳胶串……但…… 我做了一些谷歌搜索请求,我很惊讶,因为我没有在java或scala中找到任何eval库来将字符串latex或字符串mathML表达式转换为java / scala中的等式。 我不想使用求解器eval()非常复杂的方程式 ,我的目标是“真正”存储并将简单方程(多项式,线性)转换为scala / java语言。 您是否有一些建议可以帮助我理解是否有其他解决方案可以在java或scala语言中进行字符串评估后轻松存储和解析方程式或数学公式? 更新1: 最后我找到一些读取et eval()字符串公式的java库…如果你找到了什么,我可以用你的提议完成这个列表。 没有解析MathML / Latex: http://www.singularsys.com/jep/ (非开源) https://github.com/darius/expr (开源,年轻的图书馆?) http://jeval.sourceforge.net/ (开源,非常老版本) http://projects.congrace.de/exp4j/index.html (开源,最新版本2011,maven存储库,由@fas开发) https://github.com/MarkyVasconcelos/Towel/wiki/Expression (开源,由@ marcos-vasconcelos开发 ) 来自我的Symja项目的 数学表达式解析器 => cf在stackOverflow上的这篇文章( Java Math(s)Parsing API ) 通过MathML的实验解析 jscl-meditor – 存储在github上 Java符号计算库和数学编辑器(开源,最新版本2011,伟大的前端和编辑器, mathML输入/输出 ( 参见此处的教程 ),很有可能: 多项式系统求解,向量和矩阵,分解,导数,积分(有理函数),布尔代数,简化,java代码生成,几何代数) JScience看起来对MathML的引入有一些实验性的支持。 (参见以下文章: 使用JScience和MathML和Java 解析mathml文档 ) 这里的课程: http : //jscience.org/experimental/javadoc/org/w3c/dom/mathml/package-tree.html 谢谢