`
deepinmind
  • 浏览: 456174 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
1dc14e59-7bdf-33ab-841a-02d087aed982
Java函数式编程
浏览量:42011
社区版块
存档分类
最新评论
文章列表
在介绍使用到的Quartz和Obsidian的API之前,首先我得声明一下,一般来说使用API并不是调度任务的最佳方式。Quartz提供了一个通过XML来配置作业的机制,而Obsidian则为你提供了一套完整的管理和监控的WEB应用。 然而,有一些使用场 ...
如果你在工作经常使用正则表达式的话,你可能对灾难性回溯(catastrophic backtracking)这个概念并不陌生,这说明你在强迫正则引擎去进行指数级的排列运算。比如说,点击这里运行下这个用例来看看它得花多长时间(大概是5到10秒): public class LongRunningRegexExample { public static void main(String[] args) throws InterruptedException { final Pattern pattern = Pattern.compile("(0* ...
1. 不小心重用了流 我敢打赌,每人至少都会犯一次这样的错误。就像现有的这些“流”(比如说InputStream),你也只能对它们消费一次。下面的代码是无法工作的: IntStream stream = IntStream.of(1, 2); stream.forEach(System.out::println); ...
自从使用Objective C开发原生的iOS应用以来,就有许多使用别的语言来开发iOS应用的替选方案。比如说,下面就列出了一些: PhoneGap, 使用HTML/JS来开发 RubyMotion,使用Ruby ionic,使用AngularJS开发 我最近发现的一个的是RoboVM,你可以通过它来用Java开发iOS程序。本文将介绍一下如何使用RoboVM和Java来开发一个简单的应用。 下面是一些前期准备: OSX 10.9.3 JDK 1.7 Eclipse Kepler 4.3 Xcode 5.1.1 首先,给eclipse安装一个RoboVM插件,在帮助——安 ...
现在是早晨6点钟。已经醒来的我正在总结到底是什么事情使得我的起床闹铃提前了这么多。故事刚开始的时候,手机铃声恰好停止。又困又烦躁的我看了下手机,看看是不是我自己疯了把闹钟调得这么早,居然是早晨5点。然而 ...
当在静态初始化块中出现了异常的时候,JVM会抛出 java.lang.ExceptionInInitializerError异常。如果你了解Java中的静态变量,你会知道它们是在类加载的时候进行初始化的。如果在这个静态变量初始化的过程中出现了异常,那么就会抛出 ...
你理解泛型了吗 随便看一下你就会发现Java的许多框架中都用到了泛型。从WEB应用框架到Java集合框架本身。这个话题已经有不少人讲过了,这里我只列出一些我认为比较有价值的资源,以及一些别人没有提及过的东西,或者是没有讲得那么细的。因此如果你不太了解泛型的核心概念的话,你可以参考一下下面这些资料: SCJP Sun Certified Programmer for Java 6 Exam      对我而言,这本书主要是为了准备Oracle的OCP认证考试的。不过后来我发现书中介绍泛型的部分,对于想了解泛型和学习如何使用的人非常有帮助。非常值得一读,不过该书是基于Java 6的,要能看 ...
1. 你的健康 显而易见,开发人员经常都是坐着不动的。每天坐8到16个小时,只休息很短的时间,你的肚子周围很容易会堆起赘肉。肥胖是其它疾病的催化剂,而其中心脏病又是最可怕的。多花点时间运动一下就能避免这样的情况,如果有可能的话,花点钱办一张健身房的会员卡。 长时间以不符合人体工程学的姿势打字,也容易使开发人员选成重复性的肌肉损伤,比如说腕管综合征。每隔几个小时拉伸一下你的手腕或者买块鼠标和键盘都能用的手腕护垫可以避免这样的损伤。 盯着屏幕也会给你的眼睛造成压迫,这就是为什么建议配一副防眩光眼镜而不是普通眼镜的原因(假设你是戴眼镜的)。 2. 提高你的数学能力 数学可以提高你的逻辑思考能 ...
同步区域有点像拜访你的公公婆婆。你当然是希望待的时间越短越好。说到锁的话情况也是一样的,你希望获取锁以及进入临界区域的时间越短越好,这样才不会造成瓶颈。 synchronized关键字是语言层面的加锁机制,它可以用于方法以及代码块。这个关键字是由HotSpot JVM来实现的。我们在代码中分配的每一个对象,比如String, Array或者一个JSON文档,在GC的层面的对象头部,都内建了一个加锁的机制。JIT编译器也是类似的,它在进行字节码的编译和反编译的时候,都取决于特定的某个锁的具体的状态和竞争级别。 同步块的一个问题在于——进入临界区域内的线程不能超过一个。这对生产者消费者场景是一个 ...
不兼容的类 如果你尝试反序列化老代码生成的文件的话。。。 URL配置错误 当你把一个错误的REST URL放到配置文件里的时候,你将收不到任何消息。。 过长的XML消息 由于你的XML消息过大,导致序列化和反序列化会浪费大量的时间,因此无法满足SLA的要求。。 没测试就上线 产品上线前没有覆盖到所有的测试路径,而你还觉得不会出什么问题。。 过多的请求将网站压垮了 如果没进行压测就上线的话。。 线程瓶颈 你认为创建新的线程会运行得快一些,不过你忘了那些同步的方法。。 线程干扰 当你忘了进程间的协作时。。 第三方库的BUG 当你选用的外部 ...
这篇文章是关于最近一次性能调优的经历。跟往常一样,开始的时候总会有一些模糊的征兆。这次的现象看起来是”应用程序运行缓慢,但是我们无法获取到对应的源代码。我们该如何来解决这个问题“。 仔细观察下这个应用 ...
SEO作为一个战略营销服务多年来它的效果一直都是非常不错的。许多营销人员用过了都说好。他们通过给网站进行深度优化从而使网站流量得到了质的提升。SEO的主要优势在于: 转化率的显著提升 给客户的最大的投资回报 更好的站点管理 客户群更多元化 品牌的曝光度和知名度的提升 这些理由足以让营销人员将SEO作为主要的在线营销策略了。然而,需要仔细调整SEO来适应客户企业以及目标用户的分布特征。否则,无法达到预期的效果。许多SEO服务提供商在替客户取得满意的效果前都经历了许多常见的错误的方法。还有一部分人使用的是现成的解决方案,他们坚信能”一招吃遍天下“。 不管使用何种方式,任何公司在制定他 ...
接上文Java 8与Runtime.getRuntime().availableProcessors(). 通用池的并发数一般都是availableProcessors() - 1,除非我们通过系统属性指定了它的值。然而,如果你在一个单核的机器上运行Java的话,你会把这个通用池的并发数设置成1,更准确的值其实应该是0。你可能会想,地球上还有谁有单核的机器?事实上,现在给开发人员提供共享的虚拟开发环境已经越来越普遍了,这种通常都是配备单核CPU,但内存会很大。在虚拟机里,单核并不是什么稀奇事。问题在于像parallelSort这样的代码试图去以并行的方式来进行排序,而不是传统的老的排序机制。在 ...
Java 8已经发布两个月了,我也接到不少公司的邀请希望能给他们做些关于如何使用新语法编程的培训。我问他们什么时候会用Java 8来写生产环境的代码,回答通常都是”还没呢,我们现在只是想了解下“。每当一个新的大版本发 ...
为了能在Java应用程序中正确的使用状态模式和策略模式,开发人员需要清楚地知道这两种模式之间的区别。尽管状态模式和策略模式的结构非常相似,它们又同样遵循开闭原则,都代表着SOLID设计原则的'O',但它们的意图是完全不同的。Java中的策略模式是对一组相关的算法进行封装,给调用方提供了运行时的灵活性。调用方可以在运行时选择不同的算法,而不用修改使用策略的那个Context类。使用策略模式的经典例子包括实现加密算法,压缩算法,以及排序算法。另一方面,状态模式使用一个对象可以在不同的状态下表现出不同的行为。真实世界里的对象也是有状态的,并且它们会随着状态的不同而有不同的表现,比方说自动售货机,它只 ...
Global site tag (gtag.js) - Google Analytics