是否可以在Android平台上反编译APK或DEX文件?有没有可以反编译APK文件的工具?
我有一个申请.此应用程序使用接口访问数据库.该接口可以由许多类实现.例如,一个使用EF 4.4,但其他类可以使用效率更高的EF5.在将来,我可能会使用EF6,因为它使用异步方法.在此示例中,所有方法都使用EF,但也许其他方法可以使用其他方法.
应用程序编码一次,使用接口,并根据配置文件,使用一个实现或另一个,所以我只需要在一个地方修改代码,构造函数,在类的实例化中添加新选项分配给接口的.
目前所有类的方法都没有async,但是将来如果我使用EF6我想使用异步方法,所以我不知道使用EF6并实现接口的类是否可能使用async方法.
对于EF6的异步方法,我会使用async/awiat模式,所以在我的类的方法中我需要使用async属性.这让我await在调用EF6的异步方法时使用关键字.
但是这个类可以实现第一次用于同步方法的接口吗?
有没有办法在主应用程序中我可以使用许多实现而无需修改代码?一些实现将使用异步方法,而其他实现将是同步的.
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?
我正在尝试编写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) 我想要实现的是使用反射从解决方案中获取所有程序集,然后获取它们的类型,因此我可以Type[]使用 .NET Core 2.0将它们放入集合中。
我可以使用的是
AppDomain.CurrentDomain.GetAssemblies();- 问题是这将获得所有引用和使用的程序集。在我的情况下,我想获取所有被引用但没有必要使用的程序集。所以问题是 JIT 编译正在删除未使用的项目的引用,因此在这种情况下这将不起作用。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 项目加载所有解决方案程序集及其类型。
提前致谢!
如何在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的系统.您有哪些区域和语言设置?
我对 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 点)我们看到 …
我正在尝试为我的RPG创建一个批处理charsheet创建器。当程序加载,它看起来在其文件位置WORKINGDIR + WAITDIR对于有代码的所有图片文件Ready,Male和Female标签,并将它们放入WORKINGDIR + LIVEDIR。WORKINGDIR看起来像这样:
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.'时,当我尝试将文件从一个移到另一个时,将引发错误。不知何故source,destination成为等效。
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) 考虑以下代码:
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# 中编写一个通用函数(模板函数?),我遇到了这个问题。该函数是使用派生自的类型模板化运行的Component
T component = transform.gameObject.GetComponent<T>();
if(component != null)
{
objects.Add(component);
}
Run Code Online (Sandbox Code Playgroud)
我逐步完成了这个,它的值component是"null"(我期望的)但是然后程序继续并进入了if块......
在统一重载==/!=运算符以允许对其组件进行空检查(它们实际上永远不会为空 - 例如,component ??= foo不应该工作),但是当类型T为Component?
我最终设法让它与:
if(component as Component != null){...}
Run Code Online (Sandbox Code Playgroud)
但我的问题是,为什么这是必要的?c# 不检查传递给泛型函数的类型的运算符重载吗?传递的文字类型肯定会在运行时换入吗?
我可以为一个结构添加别名,如下所示:
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)
如何修复它以给模板化结构起别名?
我正在使用以下方法创建新任务并长时间在后台执行操作.如果满足某个条件,我需要完全停止所有任务并向用户显示消息.
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) c# ×5
c ×2
c++ ×2
generics ×2
.net ×1
.net-core ×1
2d ×1
android ×1
arrays ×1
async-await ×1
csv ×1
decompiling ×1
disassembly ×1
excel-2000 ×1
excel-vba ×1
interface ×1
malloc ×1
pointers ×1
reflection ×1
rust ×1
string ×1
task ×1
winforms ×1