我有一个Map,它将被多个线程同时修改.
Java API中似乎有三种不同的同步Map实现:
HashtableCollections.synchronizedMap(Map)ConcurrentHashMap据我所知,这Hashtable是一个旧的实现(扩展过时的Dictionary类),后来经过调整以适应Map界面.虽然它是同步的,但似乎存在严重的可扩展性问题,并且不鼓励新项目.
但是其他两个怎么样?返回的地图Collections.synchronizedMap(Map)和ConcurrentHashMaps 之间有什么区别?哪一种适合哪种情况?
我已经为Android开发了不到两年的时间,我仍然对这个看似简单的问题感到困惑.应该何时实施服务?根据我的经验,有一些罕见的情况,但我对此提出质疑,因为在每部手机上都运行了很多,我怀疑它只是一个糟糕的应用程序设计.
这基本上是我的问题的核心,但以下是我对该主题的一些经验和想法,可以更详细地解释我的问题.
在我开发的所有应用程序中,只有一个真正需要服务.这是一个背景录音机,因为我希望按钮能够控制它(就像音乐播放器那样),我将它作为Foreground服务用于通知.
除此之外,我从未真正看到过持续运行服务的要求,因为:
A)Intent侦听器(Manifest注册的BroadcastReceivers)是一个非常有用的功能,如您所知,使用它们通常足以用于许多用例(例如显示通知).
B)如果计划执行是必须的,则可以订阅警报事件.
C)我知道Android中的服务与Windows中的服务完全不同,因为在Android服务中只是用于组织代码的"包",并且系统管理对象的生命周期.服务使用主线程,但习惯上在其中生成新线程.
D)在开发文档中建议使用服务进行网络通信和后台计算,但我不明白为什么你不应该只使用AsyncTasks.我非常喜欢这些并广泛使用它们,从下载数据到在时间紧迫的条件下进行FFT计算.
E)我得到了Foreground服务的有用性,但为什么人们使用后台服务这么多(不包括系统应用程序).
这些是我对服务的看法,我希望有经验的人能够解释这些PROS和CONS(以及我可能错过的其他人).
假设我有一个充满健康记录和ASP.NET MVC应用程序的数据库.假设某人使用URL"/ api/medicalRecords?$ filter = id gt 0"来调用Ajax请求.在我看来,这对SQL注入是开放的 - 就像10 - 15年前一样......
这是否意味着它是通过标准的SQL注入开放,还是依赖于服务器端(我使用IQueryable结果和实体框架4)?
我知道认证机制是必要的 - 但是为了这个问题,假设没有可用的认证机制......
我想以最小的努力取得巨大成果:如何在C#中为用VB编写的旧asp站点编写数据访问层和业务层.这方面的问题是在不使用Web服务或任何类型的字符串格式(例如XML)的情况下支持两种不同语言之间的自动键入.似乎这样做的唯一方法是用C#编写整个站点(意思是,转移到asp.net或asp.net MVC,因为这种升级在时间上是相同的,以便将整个站点更改为asp c#)或写作VB中的整个DAL和BLL(我不希望这样做).
提前致谢.
c# ×2
ado.net ×1
android ×1
asp-classic ×1
asp.net-mvc ×1
concurrency ×1
dictionary ×1
java ×1
linq ×1
odata ×1
vbscript ×1