我在Surface Pro 2平板电脑上运行带有Java 7更新45 x64(没有安装32位Java)的Windows 8.1 x64.
当i的类型为long时,下面的代码需要1688ms,当i是int时,代码需要109ms.为什么在具有64位JVM的64位平台上,long(64位类型)比int慢一个数量级?
我唯一的猜测是,CPU需要更长的时间来添加64位整数而不是32位整数,但这似乎不太可能.我怀疑Haswell不使用纹波进位加法器.
我在Eclipse Kepler SR1中运行它,顺便说一句.
public class Main {
private static long i = Integer.MAX_VALUE;
public static void main(String[] args) {
System.out.println("Starting the loop");
long startTime = System.currentTimeMillis();
while(!decrementAndCheck()){
}
long endTime = System.currentTimeMillis();
System.out.println("Finished the loop in " + (endTime - startTime) + "ms");
}
private static boolean decrementAndCheck() {
return --i < 0;
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:以下是VS 2013(下面),同一系统编译的等效C++代码的结果. 长:72265ms int:74656ms 这些结果是在调试32位模式下.
在64位发布模式下: 长:875ms long long:906ms int:1047ms
这表明我观察到的结果是JVM优化怪异而不是CPU限制.
#include "stdafx.h"
#include "iostream"
#include …Run Code Online (Sandbox Code Playgroud) 我知道我的Windows计算机上许多不需要的文件的文件名的共同特征.如何使用单个正则表达式 PowerShell命令从给定文件夹或文件夹层次结构中删除所有这些文件?
我试图找出与Java 7 x64中的BigIntegers相关的以下问题.我试图计算一个极高功率的数字.代码如下,然后是问题描述.
import java.math.BigInteger;
public class main {
public static void main(String[] args) {
// Demo calculation; Desired calculation: BigInteger("4096").pow(800*600)
BigInteger images = new BigInteger("2").pow(15544);
System.out.println(
"The number of possible 16 bpc color 800x600 images is: "
+ images.toString());
}
}
Run Code Online (Sandbox Code Playgroud)
我遇到打印此操作结果的问题.当此代码执行时,它会打印消息但不打印值images.toString().
为了隔离问题,我开始计算2的幂,而不是在该行的注释中列出的所需计算.在我测试过的两个系统上,2^15544是触发问题的最小计算; 2^15543工作良好.
我没有接近达到主机系统的内存限制,我不相信我甚至接近VM限制(无论如何运行VM参数-Xmx1024M -Xms1024M都没有效果).
在互联网上寻找答案之后,我开始怀疑我在这些类型用于内部数据存储的数组()的最大大小BigInteger或者String与之相关的限制Integer.MAX_VALUE.如果问题在于String我认为可以扩展BigInteger并编写一个一次喷出几个字符的打印方法,直到整个BigInteger打印出来,但我宁愿怀疑问题出在其他地方.
感谢您抽出宝贵时间阅读我的问题.
我正在开发一个需要捕获屏幕到位图进行传输的应用程序.我正在尝试使用新的Android 5.0 android.media.projection API来进行屏幕捕获.
此API的工作流程最终会调用
mediaProjection.createVirtualDisplay("Test Screen", WIDTH, HEIGHT, DPI,
DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR, surface, null, null);
Run Code Online (Sandbox Code Playgroud)
在我最初尝试捕获时,我从SurfaceView中获取了表面对象.这工作正常; 最终结果是在屏幕上绘制的显示器的微小副本(导致Droste效果)
我认为这个功能几近完成,但我发现 SurfaceViews(从代码的角度来看)是不可读的; 你不能从他们那里得到一个位图.
在寻找其他解决方案时,我遇到了这个与我的目标非常相似的问题,并且在该线程中建议使用ImageReader而不是SurfaceView来获取传递给createVirtualDisplay API调用的Surface.
但是,当我更改我的代码以使用ImageReader代替SurfaceView时,我得到运行时logcat错误(没有异常),并且永远不会调用ImageReader的回调函数.createVirtualDisplay调用还返回一个看似有效的VirtualDisplay对象.
这是logcat:
9230-9270/com.android.techrocket9.nanoid E/BufferQueueProducer? [unnamed-9230-0] dequeueBuffer: createGraphicBuffer failed
9230-9246/com.android.techrocket9.nanoid E/BufferQueueProducer? [unnamed-9230-0] dequeueBuffer: can't dequeue multiple buffers without setting the buffer count
9230-9246/com.android.techrocket9.nanoid E/BufferQueueProducer? [unnamed-9230-0] dequeueBuffer: can't dequeue multiple buffers without setting the buffer count
9230-9246/com.android.techrocket9.nanoid E/BufferQueueProducer? [unnamed-9230-0] dequeueBuffer: can't dequeue multiple buffers without setting the buffer count
9230-9246/com.android.techrocket9.nanoid E/BufferQueueProducer? …Run Code Online (Sandbox Code Playgroud) 我正在使用两个C#流API,其中一个是数据源,另一个是数据接收器.
两个API都没有实际公开流对象; 两者都希望您将流传递给它们,并且它们处理流中的写入/读取.
有没有办法将这些API链接在一起,以便源的输出流入接收器,而不必在MemoryStream中缓冲整个源?这是一个非常敏感的RAM应用程序.
这是一个使用我正在尝试避免的MemoryStream方法的示例,因为它在将整个流缓存到RAM之前将其缓存在RAM中:
using (var buffer = new MemoryStream())
using (var transferUtil = new TransferUtility(s3client))
{
// This destructor finishes the file and transferUtil closes
// the stream, so we need this weird using nesting to keep everyone happy.
using (var parquetWriter = new ParquetWriter(schema, buffer))
using (var rowGroupWriter = parquetWriter.CreateRowGroup())
{
rowGroupWriter.WriteColumn(...);
...
}
transferUtil.Upload(buffer, _bucketName, _key.Replace(".gz", "") + ".parquet");
}
Run Code Online (Sandbox Code Playgroud) 我正在Windows 7 x64上使用Apache Spark 1.4.0,Java 1.8.0_45 x64和IPython 3.2.0中的Python 2.7.10 x86
我正在尝试在IPython笔记本中编写一个基于DataFrame的程序,该程序可以读取和写入SQL Server数据库。
到目前为止,我可以从数据库中读取数据
from pyspark.sql import SQLContext
sqlContext = SQLContext(sc)
df = sqlContext.load(source="jdbc",url="jdbc:sqlserver://serverURL", dbtable="dbName.tableName", driver="com.microsoft.sqlserver.jdbc.SQLServerDriver", user="userName", password="password")
Run Code Online (Sandbox Code Playgroud)
并将数据转换为Panda,然后做我想做的任何事情。(这虽然有点麻烦,但是在将Microsoft的sqljdbc42.jar添加到spark-defaults.conf中的spark.driver.extraClassPath之后,它可以工作)
当我要使用DataFrameWriter API将数据写回到SQL Server时,会出现当前问题:
df.write.jdbc("jdbc:sqlserver://serverURL", "dbName.SparkTestTable1", dict(driver="com.microsoft.sqlserver.jdbc.SQLServerDriver", user="userName", password="password"))
Run Code Online (Sandbox Code Playgroud)
?
---------------------------------------------------------------------------
Py4JError Traceback (most recent call last)
<ipython-input-19-8502a3e85b1e> in <module>()
----> 1 df.write.jdbc("jdbc:sqlserver://jdbc:sqlserver", "dbName.SparkTestTable1", dict(driver="com.microsoft.sqlserver.jdbc.SQLServerDriver", user="userName", password="password"))
C:\Users\User\Downloads\spark-1.4.0-bin-hadoop2.6\python\pyspark\sql\readwriter.pyc in jdbc(self, url, table, mode, properties)
394 for k in properties:
395 jprop.setProperty(k, properties[k])
--> 396 self._jwrite.mode(mode).jdbc(url, table, jprop)
397 …Run Code Online (Sandbox Code Playgroud) 我在Azure SQL Server数据库中有一个表,它只是一个nvarchar(max)包含JSON字符串的列,如下所示,每行一个扁平化为一行(约200,000行)
{
"username": "George84",
"items": [{
"type": 8625,
"score": "90"
}, {
"type": 8418,
"score": "84"
}, {
"type": 7818,
"score": "90"
}, {
"type": 23,
"score": "q"
}
]
}
Run Code Online (Sandbox Code Playgroud)
每条记录都有一个用户名和一个包含一个或多个条目的项目数组.items数组中的每个条目都包含一个类型字段(整数)和一个得分字段(字符串).用户名是唯一的.多个用户可能具有相同类型的项目,并且这些重复项可能具有相同的分数,也可能不具有相同的分数.
我想将其转换为一组新的正确规范化的表,其架构如下所示:
我知道我可以使用外部应用程序来完成它,但我希望利用SQL Server 2016的新JSON处理功能完全在数据库/ TSQL中完成.
完成此转换的最佳方法是什么?
t-sql sql-server json database-normalization sql-server-2016
我正在写在golang半面向外部的Web服务,它允许用户查询有关他们的账户被分散在几个内部传统业务的信息.
我的服务将用户输入字符串传递到多个后端RESTful API,后者根据字符串执行MySQL查找以生成结果,这些结果将传递回我的服务以提供给用户.
从历史上看,这些传统的后端服务还没有暴露给用户输入,所以我不确定他们是否有针对SQL注入的适当防护.
通常我会阻止使用Prepared Statements注入SQL 以防止数据库引擎将用户字符串视为可解析,但在这种情况下我不控制数据库调用 - 它们远在下游,审计它们是不切实际的现在好了.
我可以在golang代码中做些什么来尽可能地清理用户输入,以最大限度地降低SQL注入的风险?这最终是一个权宜之计,直到所有下游数据库调用都可以进行注入安全审核.
编辑:用户输入可以用于所有实际目的是一个任意字符串,但它不应该是可执行代码.我的服务需要用户的字段值,而不是代码.
我有一个不寻常的问题.我一直在实现Merge Sort并遇到以下问题:除最后一次传递外,该方法正常工作.给定一个随机Integer数组作为输入返回一个Integer数组,其中前半部分和后半部分分别排序.合并正常,除了最后一次传递.在摆弄调试器几个小时之后,我发现"提示点"始终false在最后一遍中进行评估,即使它不应该基于值.
所有帮助表示赞赏.
public static Integer[] mergeSort(Integer[] input)
{
if (input.length == 1) return input;
int splittle = input.length / 2;
Integer[] first = new Integer[splittle];
Integer[] second = new Integer[input.length - splittle];
for (int i = 0; i < splittle; i++)
first[i] = input[i];
for (int i = splittle; i < input.length; i++)
second[i - splittle] = input[i];
mergeSort(first);
mergeSort(second);
LinkedList<Integer> returner = new LinkedList<Integer>();
PriorityQueue<Integer> sFirst = new PriorityQueue<Integer>();
PriorityQueue<Integer> sSecond = …Run Code Online (Sandbox Code Playgroud) 我相信我的.NET 4.5 DateTime对象被我的ASP.NET MCV 4 Web应用程序中的ApiController错误地序列化了.从SQL Server数据库中检索DataRow对象后,我将其分配给CarrierObject中的DateTime成员对象.
StartTime = (DateTime)row["start_time"]
Run Code Online (Sandbox Code Playgroud)
在此之后,我将CarrierObject添加到列表中,并在处理完所有相关条目后返回列表.ApiController将列表转换为JSON字符串以进行传输.
当我在客户端上执行API调用并读取JSON输出时,我得到了2013-06-03T22:49:21.66形式的输出虽然这看起来很乍一看,试图在客户端解析这个
var client = new HttpClient();
var uri = new Uri("http://555.55.55.55/test4/api/values");
Stream respStream = await client.GetStreamAsync(uri);
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(List<CarrierObject>));
List<CarrierObject> feeds = (List<CarrierObject>)ser.ReadObject(respStream);
Run Code Online (Sandbox Code Playgroud)
它失败了,例外
System.Runtime.Serialization.SerializationException was unhandled by user code
HResult=-2146233076
Message=There was an error deserializing the object of type System.Collections.Generic.List ... PublicKeyToken=null]]. DateTime content '2013-06-03T22:49:21' does not start with '\/Date(' and end with ')\/' as required for JSON.
Run Code Online (Sandbox Code Playgroud)
它似乎想要格式/日期(1224043200000)/的东西.虽然我可以手动编写一个转换器来生成正确的JSON格式,这似乎违背了API控制器执行的自动序列化和DataContractJsonSerializer执行的自动反序列化的目的.有没有办法让DataContractJsonSerializer接受API控制器生成的格式或相反的格式?我应该使用不同的解析器吗?
感谢您的时间,
- Techrocket9
java ×4
c# ×2
json ×2
sql-server ×2
.net-core ×1
32bit-64bit ×1
64-bit ×1
amazon-s3 ×1
android ×1
apache-spark ×1
api ×1
biginteger ×1
datetime ×1
file ×1
file-io ×1
go ×1
java-7 ×1
long-integer ×1
mergesort ×1
mysql ×1
nexus6 ×1
parquet ×1
performance ×1
powershell ×1
py4j ×1
pyspark ×1
python ×1
regex ×1
stream ×1
t-sql ×1
windows ×1