我已经实现了BackupAgentHelper使用提供FileBackupHelper的备份和恢复我拥有的本机数据库.这是您通常与之一起使用ContentProviders并驻留在其中的数据库/data/data/yourpackage/databases/.
人们会认为这是一个常见的情况.但是,文档不清楚该怎么做:http://developer.android.com/guide/topics/data/backup.html.这些典型的数据库并不BackupHelper专门.因此,我使用了FileBackupHelper,将它指向我在."中的.db文件,在我的/databases/任何数据库操作(例如db.insert)中引入了锁ContentProviders,甚至尝试创建" /databases/"目录,onRestore()因为它在安装后不存在.
我已经SharedPreferences在过去的不同应用程序中成功实现了类似的解决方案.但是,当我在模拟器2.2中测试我的新实现时,我看到正在LocalTransport从日志执行备份,以及正在执行(并onRestore()调用)恢复.然而,db文件本身永远不会被创建.
请注意,这是在安装之后,以及在首次启动应用程序之后,在执行还原之后.除此之外,我的测试策略基于http://developer.android.com/guide/topics/data/backup.html#Testing.
还请注意,我不是在谈论我自己管理的一些sqlite数据库,也不是要备份到SDcard,自己的服务器或其他地方.
我确实在文档中提到有关建议使用自定义的数据库,BackupAgent但它似乎并不相关:
但是,如果需要,可能需要直接扩展BackupAgent:*备份数据库中的数据.如果您在用户重新安装应用程序时有要还原的SQLite数据库,则需要构建一个自定义BackupAgent,在备份操作期间读取相应的数据,然后创建表并在还原操作期间插入数据.
请清楚一点.
如果我真的需要自己完成SQL级别,那么我担心以下主题:
打开数据库和事务.我不知道如何在应用程序的工作流程之外从这样的单例类中关闭它们.
如何通知用户正在进行备份并且数据库已锁定.这可能需要很长时间,所以我可能需要显示进度条.
如何在恢复时执行相同操作.据我了解,恢复可能发生在用户已经开始使用应用程序(并将数据输入数据库)时.所以你不能假定只是恢复备份数据(删除空数据或旧数据).你必须以某种方式加入它,由于id的原因,任何非平凡的数据库都是不可能的.
如何在恢复完成后刷新应用程序,而不会让用户卡在某个 - 现在 - 无法访问的点.
我可以确定数据库是否已在备份或还原时升级?否则,预期的架构可能不匹配.
database android restore database-restore android-backup-service
我正在尝试使用ldap_bind,但是得到了这个错误.
error: âldap_bindâ was not declared in this scope
Run Code Online (Sandbox Code Playgroud)
码:
#include <lber.h>
#include <ldap.h>
#include <stdlib.h>
#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
LDAP *ld;
char *ldap_host = "ldap://localhost";
int ldap_port = 389;
int auth_method = LDAP_AUTH_SIMPLE;
int desired_version = LDAP_VERSION3;
char *root_dn = "ou=people,dc=localhost,dc=local";
char *root_ps = "password";
int result;
result = ldap_initialize(&ld, ldap_host);
cout << "result: " << result << endl;
result = ldap_set_option(ld, LDAP_OPT_PROTOCOL_VERSION, &desired_version);
cout << "result: " << result << endl;
result …Run Code Online (Sandbox Code Playgroud) 首先,对于冗长的帖子感到抱歉.基本上,我的问题是:
我试图在C#中重现以下F#区别联合类型:
type Relation =
| LessThan of obj * obj
| EqualTo of obj * obj
| GreaterThan of obj * obj
Run Code Online (Sandbox Code Playgroud)
任何人都可以建议一个比以下更简单的基于接口的解决方案?
interface IRelation // concrete types represent ? in the expression "Subject ? Object"
{
object Subject { get; }
object Object { get; }
}
struct LessThanRelation : IRelation { … }
struct EqualToRelation : IRelation { … }
struct GreaterThanRelation : IRelation { … }
Run Code Online (Sandbox Code Playgroud)
我的所有算法都识别这三种关系类型,而这些只是这些,所以我需要阻止IRelation第三方(即其他程序集)的任何进一步实现.
脚注:对某些人来说,如果我只是在面向对象/多态性方面得到了我的接口和算法,那么可能会出现第三方实现被注入到我的算法方法中并不重要,只要接口是正确实施.这是一个有效的批评.但是,让我们假设,在这种情况下,我倾向于在严格的面向对象上采用更多功能编程风格.
我的最好的办法,到目前为止是宣布所有以上类型的internal(即它们将永远不会被外人直接看到.),并创建一个代理类型Relation,这将是唯一可见的类型的第三方: …
到目前为止,我主要集中在如何正确设计代码,使其尽可能可读和尽可能可维护.所以我总是选择了解编程的更高层次细节,例如类交互,API设计等.
我从未真正发现的算法特别有趣.因此,即使我可以为我的程序设计一个好的设计,即使我能够提出解决特定问题的解决方案,但它很少是最有效的.
是否有一种特殊的方式来思考可以帮助您提出尽可能高效的解决方案的问题,或者在实践和/或记忆方面是否简单?
此外,您可以推荐哪些在线资源,教您针对不同问题的各种高效算法?
我有简单的Hello World C++程序(main.cpp):
#include <iostream>
using namespace std;
int main ( void ) {
cout << "Hello world" << endl;
return ( 0 );
}
Run Code Online (Sandbox Code Playgroud)
我编译通过
g++ -Wall -pedantic -Wno-long-long -Werror -c main.cpp
Run Code Online (Sandbox Code Playgroud)
然后添加"be executable"权限
chmod +x main.o
Run Code Online (Sandbox Code Playgroud)
并尝试运行它
./main.o
Run Code Online (Sandbox Code Playgroud)
我的控制台返回
-bash: ./main.o: Invalid argument
Run Code Online (Sandbox Code Playgroud)
我在干什么?
我是一个Java翻新的C#新手.我希望在未来几周内制作一堆DML代码时不会遇到麻烦.
我习惯于使用JDBC的抽象类,如Connection,Statement等.C#在System.Data.Common命名空间中提供类似的抽象类,如DbConnection,DbCommand等.
但是,我见过的大部分例子 - 无论是在MS文档还是其他书籍中 - 都使用了具体的类:SqlConnection,OracleCommand等.这种具体性甚至出现在mySQL文档中.
这方面的最佳做法是什么?是否有一些强有力的理由为此目的选择具体的表 - 服务器特定而不是抽象类?(当然,我知道将抽象向抽象混凝土的危害).
我已经坚持了一段时间.我工作的一个WordPress网站,我从头开始写的主题,我用PHP调用获得WordPress的功能,我需要在某些章节.
我正在尝试使用插件,但通过它调用它
echo do_shortcode('[STORE-LOCATOR]');
Run Code Online (Sandbox Code Playgroud)
只是不工作.即使我切换到默认模板并发布该代码,它仍然无法正常工作.它只是回声"[STORE-LOCATOR]"
任何帮助将不胜感激.
我在UIImagePicker上有一个按钮,我希望它在点击时发出一些声音.为此,我在我的项目资源中有m4a和mp3格式的声音(用于测试目的).
我尝试通过多种方式播放声音,尝试使用m4a和mp3格式,但没有任何东西从iPhone(不是模拟器)中消失.
框架包含在项目中.
这是我的示例代码:
#import <AudioToolBox/AudioToolbox.h>
#import <AVFoundation/AVAudioPlayer.h>
- (IBAction) click:(id)sender {
// Try
/*
SystemSoundID train;
AudioServicesCreateSystemSoundID(CFBundleCopyResourceURL(CFBundleGetMainBundle(), CFSTR("TheSound"), CFSTR("mp3"), NULL), &train);
AudioServicesPlaySystemSound(train);
*/
// Try
/*
NSError *error;
AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[[NSBundle mainBundle] URLForResource: @"TheSound" withExtension: @"mp3"] error:&error];
[audioPlayer play];
[audioPlayer release];
*/
// Try (works)
//AudioServicesPlayAlertSound(kSystemSoundID_Vibrate);
// Try
/*
SystemSoundID soundID;
NSURL *filePath = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"TheSound" ofType:@"mp3"] isDirectory:NO];
AudioServicesCreateSystemSoundID((CFURLRef)filePath, &soundID);
AudioServicesPlaySystemSound(soundID);
*/
NSLog(@"Clicked");
}
Run Code Online (Sandbox Code Playgroud)
你能告诉我出了什么问题吗?
我正在尝试读取*.csv文件.
所述*.csv-file包括由分号分隔的两列的(" ; ").
我能够*.csv使用StreamReader 读取-file,并能够使用该Split()函数分隔每一行.我想将每列存储到一个单独的数组中然后显示它.
有可能吗?
为什么很多人说I/O完成端口是快速而漂亮的模型?
什么是I/O完成端口的优缺点?
我想知道一些比其他模型更快的IOCP的要点.
如果你可以解释它比较其他模型(选择,epoll,传统的多线程/进程),那会更好.