Spring-MVC:什么是“上下文”和“命名空间”?

从XmlWebApplicationContext javadoc: 默认情况下,configuration将取自“/WEB-INF/applicationContext.xml”作为根上下文,“/WEB-INF/test-servlet.xml”作为命名空间为“test-servlet”的上下文(例如对于servlet名称为“test”的DispatcherServlet实例)。 这是什么意思一个spring的情况? 什么是根环境? 还有什么其他types的spring吗? 什么是命名空间? 更新: 一些后续问题: 什么是Spring ApplicationContext – 它是否包含在configurationXML文件中定义的Bean的“事情”? 看着ContextLoaderListener的代码,它看起来像加载configurationXML文件中定义的数据。 但是我的Spring web应用程序没有定义这个监听器或任何其他监听器。 怎么会这样? Spring的DispatcherServlet有多个实例,在哪些情况下有意义? 根上下文(来自applicationContext.xml的数据)适用于DispatcherServlet的每个实例,而其他上下文(例如来自test-servlet.xml的数据)仅适用于相关的DispatcherServlet(即testing)?

PBKDF2与Java中的bouncycastle

我试图安全地存储在数据库中的密码,并为此我select存储使用PBKDF2函数生成的散列。 我想使用弹性城堡库来做到这一点,但我不知道为什么我不能通过使用JCE接口使它工作…问题是生成3种不同的模式: 1.使用sun提供的PBKDF2WithHmacSHA1密钥工厂 2.直接使用充气城堡api 3.通过JCE使用充气城堡 结果有两个不同的值:前两个共同,第三个共同。 这是我的代码: //Mode 1 SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1"); KeySpec keyspec = new PBEKeySpec("password".toCharArray(), salt, 1000, 128); Key key = factory.generateSecret(keyspec); System.out.println(key.getClass().getName()); System.out.println(Arrays.toString(key.getEncoded())); //Mode 2 PBEParametersGenerator generator = new PKCS5S2ParametersGenerator(); generator.init(PBEParametersGenerator.PKCS5PasswordToUTF8Bytes(("password").toCharArray()), salt, 1000); KeyParameter params = (KeyParameter)generator.generateDerivedParameters(128); System.out.println(Arrays.toString(params.getKey())); //Mode 3 SecretKeyFactory factorybc = SecretKeyFactory.getInstance("PBEWITHHMACSHA1", "BC"); KeySpec keyspecbc = new PBEKeySpec("password".toCharArray(), salt, […]

DynamoDB相对于其他NoSQL数据库有哪些优缺点?

我们在Heroku上为我们的SaaS产品使用MongoDB数据库插件。 现在,亚马逊推出了DynamoDB,一个云数据库服务,我想知道如何改变NoSQL产品的景观? 特别是对于基于云的服务或SaaS供应商,与MongoDB相比,如何使用DynamoDB会更好还是更糟? 是否有成本,性能,可扩展性,可靠性,驱动程序,社区等使用一个与其他的好处?

如何确定性地validationJSON对象没有被修改?

根据JSON.stringify的MDN文档 : 非数组对象的属性不保证以任何特定的顺序被串行化。 不要依赖于string化中同一对象内的属性sorting。 我曾希望通过caching对象的string化版本来确定对象是否发生了更改,然后将其与对象的后续string化版本进行比较。 这似乎比迭代遍历对象和做比较简单得多。 问题是,因为JSON.stringify函数是不确定的,我可以在技术上得到一个不同的string,当我串化相同的对象。 我还有什么其他的select? 还是我必须写一个讨厌的比较函数来确定对象的相等性?

玩短的声音Android的正确方法?

我正在创build一个将在屏幕上显示多个图像的应用程序,这些图像将是button,当点击时会播放短暂的声音。 我研究了这一点,只能find目前我用来播放声音的方法,这听起来似乎没有反应。 我希望声音能够快速播放,并且能够响应很多快速响应。 我不确定这是甚至可能在Android。 我用来播放声音的代码是这样的: Button sound1; MediaPlayer firstSound; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); firstSound = MediaPlayer.create(SoundActivity.this, R.raw.click); sound1 = (Button) findViewById(R.id.Sound1); beaver.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { firstSound.start(); } }); } 我的滞后问题也可能是我使用媒体播放器对象的方式? 我确实觉得这应该是在我的手机上更顺畅,任何有关如何播放Android声音的build议表示赞赏。 谢谢。 自从发现Sound Pool以来,我已经编辑了我的代码来使用它,它完美的工作,新的代码如下所示: SoundPool soundPool; HashMap<Integer, Integer> soundPoolMap; int soundID = 1; Button sound1; @Override public […]

我如何查看完整的httpdconfiguration?

我试图找出什么是完整的httpd设置configuration。 所有的configuration文件分散在不同的文件(/etc/httpd/conf.d,httpd.conf,各种modconfiguration) 有没有办法列出最终的httpdconfiguration? 像在单个文件中的整个运行安assembly置?

为什么Spark使用java.lang.OutOfMemoryError失败:超出了GC开销限制?

我试图实现一个Hadoop Map / Reduce作业,在Spark之前工作正常。 Spark应用程序定义如下: val data = spark.textFile(file, 2).cache() val result = data .map(//some pre-processing) .map(docWeightPar => (docWeightPar(0),docWeightPar(1)))) .flatMap(line => MyFunctions.combine(line)) .reduceByKey( _ + _) MyFunctions.combine在哪里 def combine(tuples: Array[(String, String)]): IndexedSeq[(String,Double)] = for (i <- 0 to tuples.length – 2; j <- 1 to tuples.length – 1 ) yield (toKey(tuples(i)._1,tuples(j)._1),tuples(i)._2.toDouble * tuples(j)._2.toDouble) 如果用于input的列表很大,并且这是引发exception的位置,则combine函数会生成大量映射键。 在Hadoop […]

Swift的性能:map()和reduce()vs for循环

我在Swift中编写了一些性能关键的代码。 在实现了我所能想到的所有优化之后,并在Instruments中分析应用程序之后,我意识到绝大多数CPU周期都花在对Floats数组执行map()和reduce()操作上。 所以,为了看看会发生什么,我将所有的map实例都replace成了旧的for循环。 令我惊讶的是, for循环要快得多! 有点困惑,我决定执行一些粗糙的基准。 在一个testing中,在执​​行一些简单的算术之后,我有map返回一个Float数组: // Populate array with 1,000,000,000 random numbers var array = [Float](count: 1_000_000_000, repeatedValue: 0) for i in 0..<array.count { array[i] = Float(random()) } let start = NSDate() // Construct a new array, with each element from the original multiplied by 5 let output = array.map({ (element) -> Float […]

突变检测在实践中是否有用?

你有任何实际应用突变检测的例子吗? 它比简单的testing覆盖工具更好吗? 还是没用? 现实世界中突变检测的优点和缺点是什么?

MVVM ViewModel应该执行types转换/validation吗?

我们刚刚进入WPF中的MVVM。 我们用视图中绑定的“强types”属性(int,double?等)实现了ViewModel。 types转换工作正常,大多数,所以input数据很简单。 但是我们遇到了validation问题。 例如,如果在绑定到数字属性的文本框中input非数字值,则转换将失败,该属性将永远不会设置,并且我们从来没有机会向用户提供正确的反馈。 更糟糕的是,该属性保留了当前的值,导致视图中显示的内容与ViewModel中的实际内容不匹配。 所有这些都可以用价值转换器来处理,我知道。 但是我看到了一些意见,认为转换不应成为观点的责任。 在视图中input的是string,转换,validation等应该是ViewModel的责任(所以这个说法是这样的)。 如果是这样的话,我们应该将ViewModel的大部分属性重写为string,并通过IErrorInfo接口提供错误信息。 它肯定会使更简单,更精简的XAML。 另一方面,从视图devise者的angular度来看,转换,validation等将更less声明性,明确和灵活。 在我们看来,这两种方法是根本不同的,所以在我们决定之前,我们希望对这个问题有所了解。 所以:ViewModels应该向视图公开一个简化的,基于文本的界面,并在内部处理转换? 或者应该ViewModel属性公开实际的数据types,把这些杂事留给视图来处理? 更新: 很难在这里挑选一个胜利者,但是我最终落在了一个或多或less像我自己一样的人身上。 具体来说,我们决定保持ViewModel属性的types。 主要原因是它在视图devise中的灵活性,以及​​XAML中显式声明转换/格式化的能力。 我注意到一个假设,你会不同意我们这个观点的devise是固定和准备好的。 因此,在视图中不需要做出关于转换,格式化等的决定。 但是我们的过程是一个敏捷的过程,我们并没有事先弄清UI的细节。 事实上,把UI的细节留下来留给创造力,而且在我看来,即使是经过精心devise的devise,在整个实施过程中也总是会变形的。 所有这一切的重点是,虽然商业规则执法当然属于ViewModel,但在我们看来,简单的转换和格式化是一个视图。 这可能听起来像异端,但我并不认为视图中的types转换需要unit testing(只要我们unit testing实际的types转换器)。 总而言之,一个伟大的讨论,伙计,制定完善,知情的意见。 谢谢。