我必须备份Android项目.但是定期备份的整个文件夹结构大小非常大(达到几百MB).基本上我只想备份源文件和配置文件(这样我就能用备份成功构建项目).我不关心生成和中间文件.
但是,当我查看文件夹结构时,它看起来太混乱了,无法制作我应该备份哪些文件夹/文件,哪些应该丢弃(是的,我可以找到我自己编写的源文件,但是需要配置和其他文件Android Studio?)
有人可以指导吗?
谢谢!
此应用程序正在使用C++在Windows XP上的VS2010中开发.
当计算机在物理内存上运行时非常低(并且因为它是我们的测试用例而禁用了页面文件),这行代码:
std::map<UINT, std::vector<void *>> MyMap;
在malloc.c中导致"堆栈溢出"错误
'return HeapAlloc(_crtheap, 0, size ? size : 1);'
Run Code Online (Sandbox Code Playgroud)
MyApp.exe中0x7c90e8e5处的未处理异常:0xC00000FD:堆栈溢出.
此调用是从应用程序的一个线程进行的.如果内存不足是错误,它应该抛出bad_alloc
有人可以在这里建议可能的原因.
编辑:
这就是实际堆栈的样子
ntdll.dll!7c90e8e5()
[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll]
ntdll.dll!7c9100d3()
MyApp.exe!_heap_alloc_base(unsigned int size=72) Line 55 C
MyApp.exe!_heap_alloc_dbg_impl(unsigned int nSize=36, int nBlockUse=1, const char * szFileName=0x00000000, int nLine=0, int * errno_tmp=0x0af3f0e4) Line 431 + 0x9 bytes C++
MyApp.exe!_nh_malloc_dbg_impl(unsigned int nSize=36, int nhFlag=0, int nBlockUse=1, const char * szFileName=0x00000000, int nLine=0, int * errno_tmp=0x0af3f0e4) Line 239 …Run Code Online (Sandbox Code Playgroud) 这是基于Windows的XP上使用MSVC2010以C++开发的基于多线程控制台的应用程序.该应用程序消耗大量内存.但是当内存使用量达到2GB左右(Windows 32位内存限制)时,它突然在随机位置崩溃并出现以下任何一种错误:
- R6016-没有足够的空间用于线程数据
- 0xC0000005:访问冲突读取位置0x02030000
与此同时,控制台上还会出现一个字符串"运行时错误"很多次.但不确定它到底在哪里(我的代码不打印它).
不幸的是,在崩溃的地方没有明确的堆栈跟踪或位置.它只是在任何地方崩溃,特别是当内存使用量大约2GB时.我希望CRT在无法分配内存时返回错误或失败.在那种情况下,我确保应用程序运行顺利.但是为什么在这个地球上它显示带有这些错误的消息框导致退出应用程序.
我在这方面挣扎了很多天,现在真的难以忍受.我试过了:
1)通过调试器知道代码中崩溃的位置.但它只会在任何地方崩溃.例如,大多数新的内存分配调用类似于:
char* ptr = new (std::nothrow) char[1024];
我们可以看到没有理由让任何应用程序崩溃.
2)缩小代码路径以找到崩溃的确切场景:我也无法成功.
作为一种解决方法,我认为不要将我的应用程序的内存使用量接触到2GB.但后来我想到了一个问题,"即使在低内存使用情况下它也不会崩溃的保证.这可能只是时间问题?"
我真的很厌倦了这个bug,迫切需要帮助/指导.
更新:
我缩小了这个问题QueueUserWorkItem(Windows函数将工作项排队到线程池中的工作线程).当在没有内存的情况下进行调用时,它会导致线程内部的内存分配失败并出现"运行时错误"不幸的是,我无法在这里给出重现此崩溃的示例代码,因为我通过第三方库调用该函数它非常难以从中提取代码用于演示.
但是要解释一下,我调用函数(带有标志WT_EXECUTELONGFUNCTION),当它完成时,它会调用我再次调用它的回调(以便它可以处理下一个工作项).
作为一种解决方法,我试图检查应用程序的内存使用情况("私人字节"),而不是让它触及2GB.希望它应该工作.
在研究了“窗口大小”概念之后,我了解到它在通过线路发送之前保留数据包,直到收到最早的数据包的确认为止。一旦填满,后续数据包将被丢弃。我还在某处读到TCP是一种流协议,而数据包是与网络层的IP协议相关的。
直到我假设我已经声明了一个缓冲区(内部代码),我填充了一些数据并使用套接字发送该缓冲区。我声明了一个 10000 字节的缓冲区,并使用套接字通过 10 Gbps 链路重复发送它。
我有以下假设和问题。请核实并帮忙
如果我想发送 64,256,512 等字节的数据包,请在那么多空间的代码内声明缓冲区并通过套接字发送。每次执行 send() 命令都会发送一个同样大小的数据包。
那么,如果我想研究数据包大小变化对吞吐量的影响,我该怎么办?我需要改变代码中的缓冲区大小吗?
我们使用 SO_SNDBUF 和 SO_RECVBUF 设置的套接字缓冲区是什么?谷歌说这是套接字的缓冲区空间。它与 TCP 窗口大小相同还是不同?哪个参数更适合改变或增加吞吐量?
套接字缓冲区中还有三个参数:Min、Default 和 Max。我应该根据我的实验改变哪一项以获得更多相关性?
我想把UTC时间作为time_t.下面的代码似乎正确,但令人惊讶的是只打印当地时间:
time_t mytime;
struct tm * ptm;
time ( &mytime ); // Get local time in time_t
ptm = gmtime ( &mytime ); // Find out UTC time
time_t utctime = mktime(ptm); // Get UTC time as time_t
printf("\nLocal time %X (%s) and UTC Time %X (%s)", mytime, ctime(&mytime), utctime, ctime(&utctime));
Run Code Online (Sandbox Code Playgroud)
正如我们所看到的mytime,utctime我们得到的价值观是不同的.但是,当作为参数传递给ctime它时,将它们转换为相同的字符串.
当地时间55D0CB59(2015年8月16日23:11:45)和UTC时间55D07E01 (2015年8月16日23:11:45)
我正在尝试从第三方应用程序(例如WhatsApp)到我的应用程序(正在棉花糖上测试)的图像。当我从WhatsApp中“共享图像”并与我的应用程序共享时,我得到的URI如下所示:
content://com.whatsapp.provider.media/item/61025
Run Code Online (Sandbox Code Playgroud)
但是在我的应用中,当我调用getContentResolver().openInputStream(uri)或getContentResolver().openFileDescriptor(uri, "r")使用上面的URI时,它崩溃并发生以下异常:
java.lang.SecurityException:权限拒绝:从ProcessRecord {a4b804a 30321:com.myapp / u0a145}(pid = 30321,uid = 10145)打开未从uid 10083导出的提供者com.whatsapp.MediaProvider
到目前为止我尝试过的
我在SO上查找此异常,并发现了类似的问题,但要从Google相册导入图像,并需要添加权限,例如:
<uses-permission android:name="com.google.android.apps.photos.permission.GOOGLE_PHOTOS"/>
但这并不让您感到困惑,因为可能有许多应用程序,并且需要为每个应用程序或其他内容添加权限。
在其他一些答案中,建议立即从内容提供者读取/复制数据。但不确定如何。因为我openInputStream本身就有例外。
我还必须提到,WhatsApp图像可以成功与其他应用程序(例如Google云端硬盘)共享,因此必须有某种方法可以做到这一点。
请有人可以提供共享提示或可行的解决方案吗?
android android-contentresolver android-permissions android-6.0-marshmallow
有人可以解释一下这个错误的含义吗?
此应用程序依赖于使用 Angular 版本 14.0.7 发布的库,这需要 Angular 版本 14.0.0 或更高版本才能正常工作。考虑升级您的应用程序以使用更新版本的 Angular。
当应用程序在 Angular 版本 14.0.0 或更高版本上运行良好时,为什么它告诉我升级应用程序?它不应该告诉我升级 Angular 吗?(因为,应用程序在我的系统上找不到 Angular 14 或更高版本)
错误消息不会抱怨已安装的 Angular 版本。所以我安装的是 Angular 1.0 还是 Angular 99.0 并不重要。根据消息,如果我升级应用程序来使用,比如 Angular 99.0,它会自动处理其余的事情吗?
顺便说一下,这是我的机器上安装的内容:
Angular CLI:14.1.1
节点:16.13.1
包管理器:npm 8.3.2
操作系统:win32 x64
Angular:12.2.16
...动画、通用、编译器、编译器-cli、核心、表单
...本地化、平台浏览器、平台浏览器动态
...平台服务器、路由器、服务工作者
套餐版本
@Angular-devkit/architect 0.1202.16
@Angular-devkit/build-Angular 12.2.16
@Angular-devkit/core 12.2.16
@Angular-devkit/schematics 14.1.1(仅限 cli)
@Angular/fire 6.1.5
@schematics/angular 14.1.1(仅限 cli)
rxjs 6.6.7
typescript 4.3.5
如何安装 Angular 14.1.1?因为整个互联网都在讨论如何仅安装 Angular CLI。我也升级了。Angular CLI 是来自不同的供应商还是什么?如果不是,为什么要维护单独的版本,Angular CLI 与过时的 Angular?
我在VS2010中编写代码,我碰巧在编译后看到编译器为strcpy和sprintf调用提供了C4996警告("此函数或变量可能不安全").
但是,我无法获得memcpy的类似警告(可能在代码中有更多类似的'不安全'函数调用)
int _tmain(int argc, _TCHAR* argv[])
{
char buf1[100], buf2[100];
strcpy (buf1, buf2); // Warning C4996 displayed here asking to use strcpy_s instead
memcpy (buf1, buf2, 100); // No warning here asking to use memcpy_s
memcpy_s(buf1, 100, buf2, 100);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
为什么会这样?如何在代码中为所有可能的不安全呼叫打开C4996警告?
我在Visual Studio 2010中这样做.
我调用返回结构向量的函数.然后我将第一个向量元素(一个结构)存储到本地结构中,然后访问该结构的字符串成员,我得到正确的值.
但是,如果我通过应用方括号访问相同的字符串值,直接到函数调用本身,我得到垃圾结果.
struct stNameAge
{
char Name[64];
int Age;
};
typedef std::vector<stNameAge> NamesAndAges;
NamesAndAges GetNamesAndAges()
{
stNameAge nameage;
strcpy_s (nameage.Name, 64, "My name goes here");
nameage.Age = 23;
NamesAndAges nameandages;
nameandages.push_back(nameage);
return nameandages;
}
int _tmain(int argc, _TCHAR* argv[])
{
stNameAge nameage = GetNamesAndAges()[0];
char* MyName1 = nameage.Name ; // I get correct value of name here
int MyAge1 = nameage.Age ; // I get correct value here
char* MyName2 = GetNamesAndAges()[0].Name ; // *** I get …Run Code Online (Sandbox Code Playgroud) 我有一个表ALL_DEGREES有单列的表DEGREE被索引.
DEGREE
33
67
101
110
174
182
189
213
257
258
299
Run Code Online (Sandbox Code Playgroud)
我们知道该列的最大值可以是360.现在,如果我知道某个特定的度数为257,我想要获取包含257和下一个7度的行,即257,258,299,33,67,101,110
有没有办法写SELECT查询来做到这一点?