我是C/C++编程的新手,但我已经用C#编程了1.5年了.我喜欢C#而且我喜欢List类,所以我想在C++中创建一个List类作为练习.
List<int> ls;
int whatever = 123;
ls.Add(1);
ls.Add(235445);
ls.Add(whatever);
Run Code Online (Sandbox Code Playgroud)
该实现类似于任何Array List类.我有一个T* vector存储项目的成员,当这个存储空间即将完全填满时,我会调整它的大小.
请注意,这不是用于生产,这只是一个练习.我很了解vector<T>和朋友们.
现在我想循环浏览列表中的项目.我不喜欢用for(int i=0;i<n; i==).我输入for了视觉工作室,等待Intellisense,它建议我:
for each (object var in collection_to_loop)
{
}
Run Code Online (Sandbox Code Playgroud)
这显然不适用于我的List实现.我想我可以做一些宏观魔术,但这感觉就像一个巨大的黑客.实际上,最让我烦恼的是传递类似的类型:
#define foreach(type, var, list)\
int _i_ = 0;\
##type var;\
for (_i_ = 0, var=list[_i_]; _i_<list.Length();_i_++,var=list[_i_])
foreach(int,i,ls){
doWork(i);
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:有没有办法让这个自定义List类使用foreach-like循环?
[编辑]这个问题解决了!请参阅帖子末尾的说明.
[编辑2]好的,这个线程已经过时了,MySQL Connector的新版本已经使用MySQL EF解析器处理了这个问题.在这个帖子上寻找@KingPong的答案.不过,我还没有测试过.
我正在尝试使用MySql和EntityFramework进行迁移,但似乎有些错误.
当我进入Update-Database -Verbose包管理器控制台时,EF执行一些将"镜像"我的模型类的查询,一切都很完美,但是EF尝试执行此查询:
create table `__MigrationHistory`
(
`MigrationId` varchar(150) not null
,`ContextKey` varchar(300) not null
,`Model` longblob not null
,`ProductVersion` varchar(32) not null
,primary key ( `MigrationId`,`ContextKey`)
) engine=InnoDb auto_increment=0
Run Code Online (Sandbox Code Playgroud)
结果是: Specified key was too long; max key length is 767 bytes
我试图将我的数据库排序规则更改为utf-8,但仍然相同.也许关键长度是450个字符,做UTF-8数学(我可能错了),我认为它试图创建一个大约1800字节长度的密钥.
由于我是EF的新手,我遵循了一些教程,他们告诉我这样做:
public Configuration()
{
AutomaticMigrationsEnabled = false;
SetSqlGenerator("MySql.Data.MySqlClient", new MySql.Data.Entity.MySqlMigrationSqlGenerator());
}
Run Code Online (Sandbox Code Playgroud)
也许这个SQL生成器做错了,或者EF本身要求生成器生成一个高达767字节的密钥.
我该如何解决这个问题,避免这个问题并让它与MySql一起使用?
[编辑] 好的,这个问题解决了.你必须告诉EF它必须改变它生成__MigrationHistory表的方式.
我做了什么:首先,MySqlHistoryContext.cs用这个内容创建一个名为(或任何你想要的)文件:
...
using System.Data.Common;
using System.Data.Entity;
using System.Data.Entity.Migrations.History;
namespace [YOUR NAMESPACE].Migrations //you …Run Code Online (Sandbox Code Playgroud) 发生了很多事情,我不知道从哪里开始.说真的,这不应该更简单吗?
编辑:有人在这里知道我怎么能联系微软告诉这个?甚至,有人可以告诉他们这个问题吗?
我有最新的Windows 10桌面,还有Windows Phone 10.0.10512.1000.我在Visual Studio 2015中安装了用于Universal Apps开发的工具(以及8.1).我有一个Lumia 730.
所以我用USB线连接了手机.一切都很好,电话得到识别,我可以浏览文件夹.
然后我启动了Visual Studio 2015并创建了一个空白的通用应用程序.编译并尝试部署.现在这发生在我身上:Visual Studio暂停一段时间.最终我收到错误,告知找不到设备(DEP6200).
我已经尝试过几十种解决方案:
我还尝试使用Windows Phone Developer Power Tools.当我尝试使用它时,它要求我安装一些"Phone Tools Update Pack",但是当我尝试时,它说操作没有成功,并且还显示NRE消息字符串(对象引用未设置为实例)一个对象).
我可以毫无问题地浏览手机的文件夹.我试图重新安装驱动程序......我尝试了一切.
这太可悲了.
你们有没有想过要检查的东西?
编辑:我在完成所有这些之前测试了这个应用程序:https://blogs.windows.com/buildingapps/2015/07/09/just-released-windows-10-application-deployment-tool/
它奏效了.如果是这种情况,Windows Phone 10部署在Visual Studio上的工作是否已经开始,或者我们还需要等待一段时间?
编辑2:对我的应用程序清单进行一些更改并选择"ARM"配置后,现在我得到了这个:
1>Deploying to SD Card...
1>Updating the layout...
1>Copying files: Total <1 mb to layout...
1>Checking whether required frameworks are installed...
1>Framework: Microsoft.NET.CoreRuntime.1.0/ARM, app package version 1.0.23117.0 is not currently installed.
1>Framework: Microsoft.VCLibs.140.00.Debug/ARM, app package version …Run Code Online (Sandbox Code Playgroud) deployment visual-studio windows-phone windows-phone-8 windows-10
编辑:已经差不多5年了,我不认为这是要走的路.客户端应以正确的数字格式发布数据.使用React或Angular等当前框架,或者使用适当的架构和错误处理和验证,我认为这几乎不是问题.
但是如果有人想要展示他们的Json.NET肌肉,请随时查看答案.
我有一个MVC应用程序,我在其中处理一些JSON.这很简单.我在ModelBinder中有这么简单的代码:
return JsonConvert.DeserializeObject(jsonString, bindingContext.ModelType, new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore,
MissingMemberHandling = MissingMemberHandling.Ignore,
Formatting = Formatting.None,
DateFormatHandling = DateFormatHandling.IsoDateFormat,
FloatParseHandling = FloatParseHandling.Decimal
});
Run Code Online (Sandbox Code Playgroud)
它完美无瑕.
好吧,有点.
假设我有这个课程:
public class MyClass
{
public decimal MyProp { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
如果我尝试反序列化这个json:
"{\"MyProp\": 9888.77}"
Run Code Online (Sandbox Code Playgroud)
当然它可以工作,因为它9888.77是一个Javascript浮点值.我认为.
但是我的页面中有一个屏蔽输入,使得JSON看起来像这样(对不起我的英文):
"{\"MyProp\": \"9.888,77\" }"
Run Code Online (Sandbox Code Playgroud)
AAAND,它失败了.它说它Could not convert string to decimal.
好的,这很公平.它不是JS浮点数,而是Convert.ToDecimal("9.888,77")以我想要的方式工作.
我在互联网上阅读了一些关于自定义反序列化器的教程,但是我可以为我的应用程序中的每个类定义一个自定义反序列化器.
我想要的是简单地重新定义JSON.Net将字符串转换为十进制属性的方式,在任何我想要反序列化的类中.我想Convert.ToDecimal在转换小数的过程中注入函数,当前转换器不起作用.
有没有办法可以做到?
我认为有办法做到这一点,所以我改变了我的代码.
JsonSerializer serializer = new JsonSerializer
{
NullValueHandling = NullValueHandling.Ignore,
MissingMemberHandling = MissingMemberHandling.Ignore, …Run Code Online (Sandbox Code Playgroud) 我正在学习CUDA,同时遵循本指南.
我还没有完成它,但我决定玩到目前为止看到的东西.
我试图重写第一个使用256个线程的例子.我想这样做,所以每个线程都在一个连续的数组切片上运行.
目标是将2个数组与1,048,576个项相加.
为了比较,这是原始代码,其中每个数组项都是根据步幅访问的:
Run Code Online (Sandbox Code Playgroud)__global__ void add(int n, float *x, float *y) { int index = threadIdx.x; int stride = blockDim.x; for (int i = index; i < n; i += stride) y[i] = x[i] + y[i]; }
这是我的功能:
__global__
void add2(int n, float* x, float* y) {
int sliceSize = n / blockDim.x;
int lower = threadIdx.x * sliceSize;
int upper = lower + sliceSize;
for (int i = lower; i < upper; i++) {
y[i] …Run Code Online (Sandbox Code Playgroud) 首先,我不熟悉Java.我做了一些小项目,但从未对Play做过任何事情.
我正在使用Windows 8.1.
我创建了一个项目activator new prj,然后尝试使用其内置功能将其导入IntelliJ.
当它最终尝试导入时,它给了我这个堆栈跟踪:
Error:Error while importing SBT project:
...
at scala.collection.TraversableLike$$anonfun$map$1.apply(TraversableLike.scala:244)
at scala.collection.IndexedSeqOptimized$class.foreach(IndexedSeqOptimized.scala:33)
at scala.collection.mutable.WrappedArray.foreach(WrappedArray.scala:34)
at scala.collection.TraversableLike$class.map(TraversableLike.scala:244)
at scala.collection.AbstractTraversable.map(Traversable.scala:105)
at sbt.Classpaths$.appRepositories(Defaults.scala:1524)
at sbt.Classpaths$$anonfun$40.apply(Defaults.scala:1040)
at sbt.Classpaths$$anonfun$40.apply(Defaults.scala:1040)
at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
at scala.Function1$$anonfun$compose$1.apply(Function1.scala:47)
at sbt.EvaluateSettings$MixedNode.evaluate0(INode.scala:177)
at sbt.EvaluateSettings$INode.evaluate(INode.scala:135)
at sbt.EvaluateSettings$$anonfun$sbt$EvaluateSettings$$submitEvaluate$1.apply$mcV$sp(INode.scala:67)
at sbt.EvaluateSettings.sbt$EvaluateSettings$$run0(INode.scala:76)
at sbt.EvaluateSettings$$anon$3.run(INode.scala:72)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
[error] java.net.URISyntaxException: Illegal character in authority at index 7: file://${activator.home}/repository
[error] Use 'last' for the full log.
See complete log in C:\Users\Ricardo\AppData\Local\Temp\sbt13.log
Run Code Online (Sandbox Code Playgroud)
是的,错误似乎很明显:Illegal character in authority at index …
c# ×2
c++ ×2
c++11 ×1
cuda ×1
deployment ×1
foreach ×1
javascript ×1
json ×1
json.net ×1
list ×1
mysql ×1
performance ×1
sbt ×1
scala ×1
windows-10 ×1