小编Tan*_*dar的帖子

如何在Android平台上反编译APK或DEX文件?

是否可以在Android平台上反编译APK或DEX文件?有没有可以反编译APK文件的工具?

android decompiling disassembly malware-detection

133
推荐指数
6
解决办法
23万
查看次数

接口和异步方法

我有一个申请.此应用程序使用接口访问数据库.该接口可以由许多类实现.例如,一个使用EF 4.4,但其他类可以使用效率更高的EF5.在将来,我可能会使用EF6,因为它使用异步方法.在此示例中,所有方法都使用EF,但也许其他方法可以使用其他方法.

应用程序编码一次,使用接口,并根据配置文件,使用一个实现或另一个,所以我只需要在一个地方修改代码,构造函数,在类的实例化中添加新选项分配给接口的.

目前所有类的方法都没有async,但是将来如果我使用EF6我想使用异步方法,所以我不知道使用EF6并实现接口的类是否可能使用async方法.

对于EF6的异步方法,我会使用async/awiat模式,所以在我的类的方法中我需要使用async属性.这让我await在调用EF6的异步方法时使用关键字.

但是这个类可以实现第一次用于同步方法的接口吗?

有没有办法在主应用程序中我可以使用许多实现而无需修改代码?一些实现将使用异步方法,而其他实现将是同步的.

c# interface async-await

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

initializing struct with {0}

I'm debugging some code that essentially is identical to this:

struct Foo { int a; int b; };
struct Bar { Bar() {} Foo foo{0}; };
Run Code Online (Sandbox Code Playgroud)

When I make an instance of Bar, it seems like both a and b are initialized to zero. Is this guaranteed? Where can I find that in the spec?

c++ initialization

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

使用指针/ malloc创建2D数组,然后将其打印出来

我正在尝试编写2个函数,一个用于读取矩阵(二维数组),另一个用于打印出来.到目前为止,我有:

    /* Read a matrix: allocate space, read elements, return pointer. The
       number of rows and columns are given by the two arguments. */
    double **read_matrix(int rows, int cols){

        double **mat = (double **) malloc(sizeof(double *)*rows);
        int i=0;
        for(i=0; i<rows; i++){
        /* Allocate array, store pointer  */
        mat[i] = (double *) malloc(sizeof(double)*cols); 
       //what to do after??

         return mat;
    }
Run Code Online (Sandbox Code Playgroud)

那么打印矩阵功能,不确定它是否正确

void print_matrix(int rows, int cols, double **mat){
    for(i=0; i<rows; i++){    /* Iterate of each row */
      for(j=0; j<cols; j++){  /* …
Run Code Online (Sandbox Code Playgroud)

c arrays malloc pointers 2d

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

C# - 通过反射获取所有程序集及其类型

我想要实现的是使用反射从解决方案中获取所有程序集,然后获取它们的类型,因此我可以Type[]使用 .NET Core 2.0将它们放入集合中。

我可以使用的是

  • AppDomain.CurrentDomain.GetAssemblies();- 问题是这将获得所有引用和使用的程序集。在我的情况下,我想获取所有被引用但没有必要使用的程序集。所以问题是 JIT 编译正在删除未使用的项目的引用,因此在这种情况下这将不起作用。
  • 其他选项是获取 DLL 的位置,Assembly.GetExecutingAssembly().Location然后加载所有程序集。这里的问题是,当后者我想使用.GetTypes()这个从类型抛出异常System.Reflection.ReflectionTypeLoadException然后加载器异常我有System.IO.FileNotFoundException: Could not load file or assembly Microsoft.EntityFrameworkCore. 问题在于,它试图使用找不到的库,显然使用加载 DLLAssembly.LoadFrom(dll)似乎也没有加载依赖项(库)。

我发现的是BuildManager.GetReferencedAssemblies,从我目前阅读的内容来看,它说这可以工作并且它正在获取所有引用,即使它们没有被使用,所以我也在 MsBuild 库中找到它,但不包含那个方法,所以我可能引用了错误的包。

我愿意接受任何建议,如何从 .NET Core 2.0 项目加载所有解决方案程序集及其类型。

提前致谢!

c# reflection metaprogramming .net-core

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

打开分号分隔的CSV文件

如何在Excel 2000中使用VBA打开以分号分隔的CSV文件?

样本数据

An ID;TEST20090222
A Name;Firstname Surname
A Date;11.05.2000

Country:;SomeCountryName
Currency;EUR
CostA;
CostB;
CostC;
Part1;10;20;30
Part2;;;;
Part3;34;56;87
Run Code Online (Sandbox Code Playgroud)

在带有VBA 6.5.1025的Excel 2003 11.8231.8221 SP3中,我可以使用以下VBA代码打开以分号分隔的文件:

Workbooks.OpenText filename:=myFilename, _
    DataType:=xlDelimited, Semicolon:=True, Local:=True
Run Code Online (Sandbox Code Playgroud)

但是,当在带有VBA 6.5.1025的Excel 2000 9.0.8961 SP1中运行相同的代码时,我收到以下错误:

编译错误:找不到命名参数

那是 - 我认为 - 因为Excel 2000不知道命名参数"Local".

因此,我删除了"Local:= True"部分.但问题是,CSV文件中的整行被写入一个单元格而不是分成单独的分号分隔部分.

我在互联网上搜索了一个解决方案,但没有发现任何有用和简洁的内容.

有任何想法吗?

[更新17.02.2009]

我尝试了用户lc和宏录制器的建议.然而,结果令人困惑.

当我使用菜单File-> Open ...打开CSV文件,然后选择CSV文件时,正确分析分号分隔数据.录制的代码非常简单:

Workbooks.Open filename:= _
               "D:\testdata\Example 01 CSV\input.csv"
Run Code Online (Sandbox Code Playgroud)

但是,当我在宏中使用该VBA代码时,每一行最终会再次出现在一个单元格中.

根据用户barrowc的建议,我还将Windows"区域和语言选项"设置从"德语(瑞士)"更改为"英语(美国)".即使重启Excel后,没有任何改变,同样的问题.

我想知道为什么它正在使用用户Remou的系统.您有哪些区域和语言设置?

csv excel-vba excel-2000

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

聚合初始化与统一初始化

我对 C++11 统一初始化了解得越多,我就越困惑。在 Effective Modern C++(第 55 页)中的 Scott Meyers 说,声明

Widget w2{};
Run Code Online (Sandbox Code Playgroud)

始终调用默认构造函数(即使存在带有std::initializer_list参数的构造函数)。

乍一看,这似乎与 Stroustrup 书“C++ 编程语言”的第 4 版一致,例如根据第 1200 页上的表格声明

std::atomic<T> x;
Run Code Online (Sandbox Code Playgroud)

使原子变量未初始化,而

std::atomic<T> x {};
Run Code Online (Sandbox Code Playgroud)

调用“默认构造函数”,以便 x 表示一个值初始化的 T 对象。

但是,我无法相信std::atomic<T> x;不再调用 C++11 中的默认构造函数,所以我在这里完全感到困惑。

最后,在查看了 C++11 标准(n3337 草案)后,我的困惑更大了。在第 1102 页,我们有:

template <> struct atomic<integral > {
  //[...] list of non-constructor functions
  atomic() noexcept = default;
  constexpr atomic(integral ) noexcept;
  atomic(const atomic&) = delete;
  //[...] other non-constructor functions
};
Run Code Online (Sandbox Code Playgroud)

在第 1104 页(第 29.5.5 点)我们看到 …

c++

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

使用Path.Combine()时,源和目标必须不同

我正在尝试为我的RPG创建一个批处理charsheet创建器。当程序加载,它看起来在其文件位置WORKINGDIR + WAITDIR对于有代码的所有图片文件ReadyMaleFemale标签,并将它们放入WORKINGDIR + LIVEDIRWORKINGDIR看起来像这样:

Debug // WORKINGDIR
????Live // LIVEDIR
????Wait // WAITDIR
????Crew.exe // program
????Other VS files
Run Code Online (Sandbox Code Playgroud)

运行代码System.IO.IOException: 'Source and destination path must be different.'时,当我尝试将文件从一个移到另一个时,将引发错误。不知何故sourcedestination成为等效。

const string LIVEDIR = "\\Live";
const string WAITDIR = "\\Wait";
List<string> files = new List<string>(Directory.EnumerateFiles(WORKINGDIR + WAITDIR, "*.jpeg", SearchOption.TopDirectoryOnly));
files.AddRange(Directory.EnumerateFiles(WORKINGDIR + WAITDIR, "*.png", SearchOption.TopDirectoryOnly));
files.AddRange(Directory.EnumerateFiles(WORKINGDIR + WAITDIR, "*.jpg", SearchOption.TopDirectoryOnly));
// ^ adds files that …
Run Code Online (Sandbox Code Playgroud)

c#

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

匿名字符串文字效率低下吗?

考虑以下代码:

bool isFoo(const char* bar) {
    return !strcmp(bar, "some_long_complicated_name");
}
Run Code Online (Sandbox Code Playgroud)

在这里,字符串文字"some_long_complicated_name"立即传递给strcmp。这是否意味着每次都isFoo被调用,因此在该堆栈帧上分配了该字符串文字的许多字节?如果是这样,不是吗:

const char FOO_NAME[] = "some_long_complicated_name";
bool isFoo(const char* bar) {
    return !strcmp(bar, FOO_NAME);
}
Run Code Online (Sandbox Code Playgroud)

更有效率?

c string

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

c#泛型函数类型不适应重载

我正在统一 C# 中编写一个通用函数(模板函数?),我遇到了这个问题。该函数是使用派生自的类型模板化运行的Component

T component = transform.gameObject.GetComponent<T>();
if(component != null)
{
    objects.Add(component);
}
Run Code Online (Sandbox Code Playgroud)

我逐步完成了这个,它的值component"null"(我期望的)但是然后程序继续并进入了if块......

在统一重载==/!=运算符以允许对其组件进行空检查(它们实际上永远不会为空 - 例如,component ??= foo不应该工作),但是当类型TComponent?

我最终设法让它与:

if(component as Component != null){...}
Run Code Online (Sandbox Code Playgroud)

但我的问题是,为什么这是必要的?c# 不检查传递给泛型函数的类型的运算符重载吗?传递的文字类型肯定会在运行时换入吗?

c# generics unity-game-engine

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

如何为模板化结构输入别名

我可以为一个结构添加别名,如下所示:

struct DummyStruct {}
use DummyStruct as MyStruct;
Run Code Online (Sandbox Code Playgroud)

但是当涉及到模板化结构时:

struct TemplatedStruct<T> {
    v: T
}
use TemplatedStruct::<i32> as AnotherStruct;
Run Code Online (Sandbox Code Playgroud)

我收到错误:

8 | use TemplatedStruct::<i32> as AnotherStruct;
  |                      ^ expected identifier
Run Code Online (Sandbox Code Playgroud)

如何修复它以给模板化结构起别名?

generics rust

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

停止多个任务

我正在使用以下方法创建新任务并长时间在后台执行操作.如果满足某个条件,我需要完全停止所有任务并向用户显示消息.

dowork()
{

    mylist = new List<DataModel.CheckData>();
    int index = 0;
    foreach (var line in mylist)
    {
        mylist.Add(new DataModel.CheckData() { RawLine = line, data = line,FileName=virtualfilelist[index].ToString() });
        index++;
    }

    BlockingCollection<DataModel.CheckData> ujobs = new BlockingCollection<DataModel.CheckData>();
    timerRefreshUi.Start();

    Task.Factory.StartNew(() =>
    {
        _dtRows.Clear();
        uiQueue.Clear();
        uiQueueBad.Clear();
        uiQueueGood.Clear();

        for (int i = 0; i < mylist.Count; i++)
        {
             AddResultRow(mylist[i].data, "Waiting...",mylist[i].FileName, Color.White);
             ujobs.TryAdd(new DataModel.CheckData() { RowId = i, data = mylist[i].data }, 1000);

         }
         List<Task> openCheckTasks = new List<Task>();

         while (ujobs.Count > 0)
         {
             while (openCheckTasks.Where(task => …
Run Code Online (Sandbox Code Playgroud)

.net c# multithreading task winforms

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