我想在Android应用程序和服务器之间同步数据(例如数据库记录,媒体).如果您已经看过Evernote或类似的应用程序,您当然明白我的意思.
我有一些问题(想象一下我们想要同步DB记录):
每个用户都有自己的一部分服务器空间(例如Evernote或Dropbox).也许用户通过手机创建新记录并在服务器中创建新记录.我如何将这些记录匹配在一起?如果有相同ID的记录你建议我使用哪种算法?
除了JSON,手机设备和服务器之间有没有办法发送数据?
如果SyncAdapter和ContentProvider可以解决我的问题,请完全为我解释.(如果您可以向我提供一些示例或教程或任何建议或关键字,以帮助扩大/指导我的搜索也将受到赞赏).
我需要获得一些配置并连接到某处的外部资源/对象/系统并将其存储在应用程序范围内.
我可以看到两种设置应用程序的方法:
init()现有的servlet和所需的代码,并将所有构造的对象保留在同一个servlet中.init()来完成工作.然后存储创建的对象ServletContext以与其他servlet共享.以上哪种方法更好?有没有更好的方法在servlet之间共享对象?直接从彼此调用它们......?
我以前问了一个类似的问题,没有得到答案,似乎很多其他人正在寻找答案.所以我发布这个问题,希望得到一个明确的答案,每个人都可以从中受益.
我有一个包含2个片段的活动.当复选框被选中时,我希望fragment2在Activity中设置一个布尔变量,以便fragment1知道复选框是否被选中.
这是我的代码:
活动:
public class modestab extends Activity{
public static Context appContext;
public boolean lf=false;
public void onCreate(Bundle savedInstanceState){
appContext=this;
super.onCreate(savedInstanceState);
ActionBar tabbar= getActionBar();
tabbar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
ActionBar.Tab ModesTab =tabbar.newTab().setText("Modes");
ActionBar.Tab CatTab =tabbar.newTab().setText("Categories");
Fragment ModesFragment =new modes();
Fragment CatFragment =new cats();
ModesTab.setTabListener(new MyTabsListener(ModesFragment));
CattTab.setTabListener(new MyTabsListener(CatFragment));
tabbar.addTab(ModesTab);
tabbar.addTab(CatTab);
}
Run Code Online (Sandbox Code Playgroud)
片段1 :(我想要读取上面的Acitivity中设置的布尔值lf:
@TargetApi(11)
public class tabmodes extends Fragment{
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View V=inflater.inflate(R.layout.tab_modes, container, false);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO …Run Code Online (Sandbox Code Playgroud) 当前架构:
问题:
我们在前端和后端层之间有两步流程.
微服务2(MS2)需要验证来自前端的I1的完整性.如何避免对MS1的新查询?什么是最好的方法?
流程我正在尝试优化删除步骤1.3和2.3
流程1:
流程2:
途径
一种可能的方法是在MS2和MS1之间使用B2B HTTP请求,但我们将在第一步中复制验证.另一种方法是将数据从MS1复制到MS2.然而,由于数据量和它的波动性,这是令人望而却步的.复制似乎不是一个可行的选择.
我认为更合适的解决方案是前端有责任获取微服务2上的微服务1所需的所有信息并将其传递给微服务2.这将避免所有这些B2B HTTP请求.
问题是微服务1如何信任前端发送的信息.也许使用JWT以某种方式对来自微服务1的数据进行签名,并且微服务2将能够验证该消息.
注意 每次微服务2需要来自微服务1的信息时,执行B2B http请求.(HTTP请求使用ETAG和缓存控制:max-age).怎么避免这个?
建筑目标
微服务1需要来自微服务2的数据,以便能够在MS1数据库上保持MS1_Data和MS2_Data,因此使用代理的ASYNC方法不适用于此.
我的问题是,是否存在设计模式,最佳实践或框架,以实现这种推力沟通.
当前体系结构的缺点是在每个微服务之间执行的B2B HTTP请求的数量.即使我使用缓存控制机制,每个微服务的响应时间也会受到影响.每个微服务的响应时间至关重要.这里的目标是存档更好的性能,以及如何使用前端作为网关在多个微服务之间分配数据,但使用推力通信.
MS2_Data只是MS1必须用于维护数据完整性的产品SID或供应商SID的实体SID.
可能解决方案
这个想法是使用网关作为api网关请求处理,它将缓存来自MS1和MS2的一些HTTP响应,并将它们用作对MS2 SDK和MS1 SDK的响应.这样,在MS1和MS2之间不直接进行通信(SYNC或ASYNC),也避免了数据复制.
当然,上述解决方案仅适用于跨微服务的共享UUID/GUID.对于完整数据,事件总线用于以异步方式(事件源模式)跨微服务分发事件和数据.
灵感:https://aws.amazon.com/api-gateway/和https://getkong.org/
相关问题和文档:
architecture design-patterns data-sharing microservices aws-api-gateway
我有一项任务是在同一设备中的应用程序之间共享数据.可能两个应用程序都可以在同一设备上使用共享数据库.如何在IOS中的两个应用程序之间共享数据.任何人都以任何方式做到了.请告诉我.谢谢
在下面显示的图中,我有3个模块(作为android库)扩展了基础"通用组件模块",所有这3个模块将被添加到单个Android应用程序中.所有3个模块都是独立的模块,但当它作为一个应用程序时,它需要共享一些数据,启动其他模块并需要更多的相互通信.
那么有谁能让我知道如何在这种架构中实现"数据共享层"和"导航控制器"?
示例:Module1 - > Login,Module2 - > Profile Management等,根据应用需要可能有"n"个模块.
当我偶然发现这种奇怪的行为时,我试图回答关于多态性与共享的另一个问题.
在GHCi中,当我明确定义一个多态常量时,它没有得到任何共享,这是可以理解的:
> let fib :: Num a => [a]; fib = 1 : 1 : zipWith (+) fib (tail fib)
> fib !! 30
1346269
(5.63 secs, 604992600 bytes)
Run Code Online (Sandbox Code Playgroud)
另一方面,如果我试图通过省略类型签名并禁用单态限制来实现相同的目标,那么我的常量会突然被分享!
> :set -XNoMonomorphismRestriction
> let fib = 1 : 1 : zipWith (+) fib (tail fib)
> :t fib
fib :: Num a => [a]
> fib !! 50
20365011074
(0.00 secs, 2110136 bytes)
Run Code Online (Sandbox Code Playgroud)
为什么?!
呃...当使用优化编译时,即使禁用单态限制也很快.
我想将容器的共享卷中的数据提交给图像.我似乎无法做到这一点?我觉得这可能在Docker中是不可能的,但这似乎完全与不在主机上留下数据的理念相矛盾,因此我认为必须有一种方法可以做到这一点.
使用卷在1号终端启动容器.
$ docker run -it -v /data ubuntu:14.10 /bin/bash
root@19fead4f6a68:/# echo "Hello Docker Volumes." > /data/foo.txt
Run Code Online (Sandbox Code Playgroud)
在终端2中启动第二个容器,容器1中的文件就在那里,所以docker卷都在工作.
$ docker run -it --volumes-from 19fead4f6a68 ubuntu:14.10 /bin/bash
root@5c7cdbfc67d8:/# cat /data/foo.txt
Hello Docker Volumes.
Run Code Online (Sandbox Code Playgroud)
我的理解是我只能将差异提交给图像,所以我检查两个容器上的差异.出于某些奇怪的原因,我的更改没有显示出来!??
$ docker diff 19fead4f6a68
A /data
$ docker diff 5c7cdbfc67d8
A /data
Run Code Online (Sandbox Code Playgroud)
我在卷文件夹之外创建一个文件
root@19fead4f6a68:/# echo "Docker you are a very strange beast...." > /var/beast.txt
Run Code Online (Sandbox Code Playgroud)
我们现在有一些我们可以提交的更改,虽然我很沮丧,因为这不是我需要与其他容器共享的卷中的数据.
$ docker diff 19fead4f6a68
A /data
C /var
A /var/beast.txt
Run Code Online (Sandbox Code Playgroud)
显然这是设计上的.任何人都有任何想法,为什么docker不允许我将卷数据保存到提交?无论如何都要在容器之间共享文件然后将它们保存到图像中?我觉得必须有一些我想念的东西?特别是在共享数据的同时避免主机依赖性.
Wifi 配置在29 Android 版本中已弃用。我想使用 WIFI 共享文件,但没有这样的库可以用于此目的。因此,如果有人有解决此问题的方法,请分享。
WifiConfiguration wc = new WifiConfiguration();
wc.SSID = "\"SSID_NAME\""; //IMP! This should be in Quotes!!
wc.hiddenSSID = true;
boolean res1 = wifiManag.setWifiEnabled(true);
int res = wifi.addNetwork(wc);
Log.d("WifiPreference", "add Network returned " + res );
boolean es = wifi.saveConfiguration();
Log.d("WifiPreference", "saveConfiguration returned " + es );
boolean b = wifi.enableNetwork(res, true);
Run Code Online (Sandbox Code Playgroud)
WifiConfiguration 有没有其他我可以使用的替代方案!
我一直在研究如何安全地在应用程序之间共享数据.在使用错误的方法深入研究实现之前,我想获得一些正确的处理方法的信息.只是因为你可以做某事并不一定意味着你应该做.
用户案例:我正在开发一套语言学习应用程序,它们具有数百个音频文件的共享音频文件,以及包含与语言相对应的重要数据的json文件.我更愿意允许用户在我们的套件中使用其他应用时不必重新下载语言包.
1.应用扩展程序 - 文档提供程序非UI变体
根据文件:
文件提供程序扩展使用打开和移动操作授予对主机应用程序沙箱外部文件的访问权限.此扩展(有时缩短到文件提供程序)还允许主机应用程序下载文件而不显示文档选择器视图控制器.此功能允许主机应用程序使用安全URL书签访问以前打开的文档,即使这些文件不再存储在设备上也是如此.
从表面上看,这似乎是一个非常可靠的解决方案.我主要担心的是最后几行,它表明应用程序可以下载不再存储在设备上的文件.我希望文件存储在设备本地,以防止不断下载.如果文档提供程序确实在本地存储文件并允许组中的各种应用程序访问文件,那么我认为这可行.
2.共享钥匙串访问
允许您将数据安全地存储到共享密钥链,以便属于一组应用程序的其他应用程序可以访问.共享密钥链访问权限的所有应用程序必须使用相同的应用程序ID前缀.有关共享密钥链访问的示例.
我看了一下这个文档,我认为这可能是最合适的.我对此解决方案的主要关注是上传的数据是否存在大小限制,以及是否允许使用mp3/ogg/json文件类型.我在这个解决方案中发现的大多数示例/用途都指向共享字符串和小数据,我不确定它是否会处理像json或音频文件这样的大数据.
我还发现这个回购显然更容易处理Keychain:
3.定制粘贴板
自定义粘贴板最适合在两个应用程序之间半私有地共享自定义数据.使用唯一名称标识自定义粘贴板.它们可以将数据保留在创建它们的应用程序之外,允许粘贴板在应用程序终止后或甚至在重新启动设备后保留数据.
在粘贴板上写入数据或从中读取数据时,必须指定粘贴板类型.粘贴板类型通常使用统一类型标识符(UTI)来标识进入粘贴板并从粘贴板检索的数据类型.有关其他信息,请参阅Apple的UIPasteboard类参考文档.
以上文档摘自这篇文章
我对这个解决方案的主要关注点可能是它有点像黑客.从逻辑上讲,粘贴板似乎是临时保存数据并允许在应用程序之间共享的东西,而我正在寻找的解决方案需要更多的永久解决方案.
我很感激有关在应用之间共享这些类型文件的最佳做法的任何信息.我假设有很多其他的解决方案我在这里省略了,所以如果有更好的选择,我会喜欢它的一些信息.如果它发生了我在这里列出的解决方案之一是一个解决这个问题的好方法我想更多地了解你与他们合作的经验,如果我对他们的关注是有效的,或者没有什么可担心的.
Thx提前.一如既往,写得很好的答案得到了投票;)
data-sharing ×10
android ×3
swift ×2
android-wifi ×1
architecture ×1
docker ×1
ftp ×1
ghc ×1
haskell ×1
ios ×1
keychain ×1
module ×1
navigation ×1
servlets ×1
uipasteboard ×1
wifi ×1
wifimanager ×1