猫头鹰的深夜翻译:从1000+JS项目中汇总的10个最容易出现的错误(以及如何解决)

2018-02-19
阅读 8 分钟
5.1k
如果你是一名JavaScript开发人员,你可能已经记不清楚多少次看到这个错误了。当你读取一个undefined对象的属性或是调用其上的方法时,就会出现这个错误。你可以再Chrome Console中进行测试。导致这个问题的原因有许多,最常见的是渲染UI组件时对state不恰当的初始化。让我们看一个真实APP中可能出现该情况的例子。我们选...

猫头鹰的深夜翻译:为什么要使用Spring Boot?

2018-02-19
阅读 18 分钟
4.4k
spring是一个用于创建web和企业应用的一个很流行的框架。和别的只关注于一点的框架不同,Spring框架通过投资并组合项目提供了大量的功能来满足现代的业务需求。

猫头鹰的深夜翻译:JAVA8 API设计准则

2018-02-17
阅读 5 分钟
3.9k
任何一个写JAVA代码的程序员都是一名API设计师!无论是否与他人分享代码,代码都将被自己或是他人使用。因此,所有的JAVA开发者都应该了解一个好的API设计的基本内容。

什么!2018了?!

2018-02-17
阅读 2 分钟
2.2k
在思否社区游荡了有一两年了。这期间发了一些文章,转了一些帖,写了几个回答,怒而收获了几个认可。还记得第一次被点赞,第一次被评论,第一次有了小粉丝,以及第一次被邀请答题时候的激动。人生啊,那些美妙的时刻,全在不断尝试的旅途之中!

猫头鹰的深夜翻译:JDK9 NotNullOrElse方法

2018-02-16
阅读 3 分钟
4.6k
JDK9在Object类中新添加了两个静态方法,requreNonNullElse(T, T)和 requireNonNullElseGet(T obj,Supplier<? extends T> supplier)。这两个方法简化了判断对象是否为空(null),如果是空的则返回一个默认值。因此,这两个方法和早期JDK版本中引入的方法requireNonNull(T),requireNonNull(T,String)和requireNonNul...

猫头鹰的深夜翻译:使用SpringBoot和AspectJ实现AOP

2018-02-14
阅读 8 分钟
16.6k
这篇文章会帮助你使用Spring Boot Starter AOP实现AOP。我们会使用AspectJ实现四个不同的通知(advice),并且新建一个自定义的注解来追踪方法的执行时间。

猫头鹰的深夜翻译:核心JAVA并发(二)

2018-02-13
阅读 8 分钟
1.7k
发布一个对象是指该对象的引用对当前的域之外也可见(比如,从getter方法中获取一个引用)。要确保一个对象被安全的发布(即在初始化完成之后发布),可能需要使用同步。可以通过以下方法实现安全的发布:

猫头鹰的深夜翻译:核心JAVA并发(一)

2018-02-13
阅读 6 分钟
2.3k
当多个线程在一个共享的资源上执行一组操作时,会产生竞争。根据各个线程执行操作的顺序可能产生多个不同结果。下面的代码不是线程安全的,value可能会被初始化多次,因为check-then-act型(先判断是否为null,然后初始化)的惰性初始化并非原子性操作。

猫头鹰的深夜翻译:软件设计原则--更健壮的代码

2018-02-12
阅读 5 分钟
2.2k
需求总是在变化--如果没有定期加入新功能,或是维护现有功能,软件很快就会成为遗弃产物--而这些变化带来的开销是由系统的架构和体系结构决定的。在这篇文章中,我们将会讨论一个关键的设计原则,该设计原则能帮助我们创建易于维护和扩展的软件。

leetcode 240. Search a 2D Matrix II

2018-02-11
阅读 4 分钟
2.2k
直观的来看我们肯定会从左上角开始判断,如果当前的值比目标值大,那么结束返回该值不存在,而如果当前的值比目标值小,则我们顺着行或是列继续查找。代码如下:

leetcode263,264,313 ugly numbers

2018-02-09
阅读 5 分钟
2.2k
丑数是指只包含2,3,5质因数的数。因此6,8是丑数因为6=2*3,8=2*2*2,而14不是丑数因为14包含质因数7。现在写一个方法判断一个数字是否是丑数。

leetcode233. Number of Digit One

2018-02-08
阅读 2 分钟
1.4k
如果使用暴力循环的话,那么我们只需要遍历所有小于n的正整数,计算该正整数中包含几个1并将返回这些结果的和。但是,这种方法浪费了很多不必要的计算。比如在小于n的正整数中,有很多甚至都一个1都没有。因此,我们需要用更好的方法,减少这种方法的浪费。

leetcode231. Power of Two

2018-02-04
阅读 1 分钟
1.4k
当我们从二进制的角度来看,这个题目就非常简单了。其实题目的要求等价于该整数对应的二进制数中,一共有几个1。该题目的难点在于考虑边界情况,比如-2^32,即10000000000000000000000000000000。虽然它只有一个1,但是它不是2的幂。

leetcode201. Bitwise AND of Numbers Range

2018-02-04
阅读 2 分钟
1.6k
给一个闭区间[m,n],对该闭区间的所有数字进行与(and)运算。与预算是指 1 and 1 = 0, 1 and 0 = 0, 0 and 1 = 0, 0 and 0 = 0。这里都是以二进制为基础进行与运算。在计算机底层所有的十进制数都是以二进制数进行存储的。写这道题目之前需要先去了解十进制转二进制以及未操作符>>,>>>和<<。

leetcode235-236 lowest common ancestor

2018-01-10
阅读 3 分钟
2.1k
现在有一棵搜索二叉树,这个二叉树的特点是左子树的节点一定小于根节点,而右子树的节点一定大于根节点。现在提供这棵树的根节点,并且输入两个节点,问这两个节点的最低共同父节点是谁?最低共同父节点是指两个节点在沿父节点向上爬升时遇到的第一个共同父节点,同时它也允许父节点就是其本身,比如在上图中2和4的最低...

leetcode202 Happy Number

2018-01-07
阅读 2 分钟
1.5k
实现一个算法来判断一个数字是否开心。一个开心数字是指将数字的各个位上的数求平方和,如果这个数字最终能够计算至1,那么这个数字就是一个开心数字。如果这个数字一直在某个圈中循环,那么这就不是一个开心数字。题目中也给了19这个例子。

leetcode148. Sort List

2018-01-07
阅读 2 分钟
1.7k
在给出了明确的时间复杂度和空间复杂度后,我第一个想到的就是利用divide and conquer 方法进行排序。那么问题就归结为如何将链表分为大小相近的两半以及如何将二者合并。了解利用分治法对数组进行排序的童鞋应该知道,我们会根据数组的下标将数组取一半分别进行排序后,再将排序好的二者进行合并。那么将链表分为大小相...

leetcode232 Implement Queue using Stacks

2018-01-04
阅读 3 分钟
2k
通过队列实现一个栈的功能。栈的api为push(压入栈顶),pop(出栈),peek(栈顶元素),empty(栈是否为空)。这道题和之前的使用栈实现队列功能是类似的,可以参考我的这篇博客。

spring-boot周边游(三)Thymeleaf-1 一个简单的demo以及初识Standard Dialect

2018-01-02
阅读 9 分钟
6.2k
1.在resources文件夹之下新加两个文件夹,分别为templates和static,其中templates用于存放界面HTML文件,而static则用于存储静态文件比如js,css或img。目录格式如下:

spring-boot周边游(二)SpEL

2017-12-29
阅读 6 分钟
6.4k
EL表达式是JSP中一个十分重要的概念。它允许我们从model中读取数据以及条件性的渲染JSP页面。Spring在3.0的版本中也引入了Spring Expression Language从而使得spring具有更好的可扩展性和跨平台性。虽然SpEL引擎作为Spring 组合里的表达式解析的基础 ,但它不直接依赖于Spring,可独立使用。这也是SpEL的最大优点。

spring-boot周边游(一) yaml

2017-12-29
阅读 4 分钟
3.2k
在spring漫长的历史中,配置一直是新手入门的头疼问题。往往只能从网上找到一个demo,再将里面的内容修改为自己的数据。但是一旦出现新的需求,往往不知道如何修改配置。spring经历了从xml到properties文件再到yml文件乃至利用java代码进行配置,努力将配置文件保持对用户友好。但是在这个可读性增强的过程中其实学习曲...

快速理解Union Find算法--java代码实现

2017-12-07
阅读 3 分钟
9.6k
在并查集中,如果想要将连个对象相连,当且仅当这两个对象不在同一个连通分量中时,才会相连。这句话什么意思呢?也就是说,如果已经存在一条路径,使得p和q之间相通,那么就不会对后续的连接p和q的请求作出任何操作。

用了那么久现在才来回顾系列一:maven重学习

2017-11-15
阅读 6 分钟
2.3k
本人从事JAVA编程已经有一些年月了(咳咳咳咳咳~喝一口茶),基本上在每次的项目开发过程中都会使用一些集成工具,比如说Maven或是Gradle。最近在写一个项目,但是项目在打包的过程中出现了问题,对把MAVEN一直当作傻瓜工具来使用的我完全不知道如何去解决这些问题。所以现在我想重新来了解一下这个工具,并用一种通俗易...

SSH免密登录--正常流程和异常处理

2017-10-25
阅读 2 分钟
2.6k
最近在搭一个集群环境。为了能让Master节点和Slave节点之间能够快速通讯,所以需要配置Master节点向Slave节点的免密登录。网上的教程非常多,但是我按照正常流程走了一遍之后还是会出现问题。所以这里我试着将我配置时候遇到的问题以及相应的解决方案记录下来。

MongoDB(二)CRUD 指令简单汇总

2017-10-17
阅读 3 分钟
2.3k
本教程适合有一定数据库开发经验的人员阅读。对于刚开始接触数据库的童鞋,建议直接跳到本文的References中去选择更适合的教程。还有一点需要注意的是,mongodb的版本2和版本3之间存在很大差异,查看教程的时候一定要注意~

在centos7上安装mongodb(一)

2017-10-16
阅读 2 分钟
3.5k
仅以此文记录一下我在centos上安装mongodb的过程。因为之前百度了一些教程结果并不理想,所以决定自己写一下。本教程用的版本分别是CentOS7和Mongodb-3.6

redux下action的命名规范--翻译文

2017-10-11
阅读 2 分钟
5.4k
这是对一篇文章的翻译,原文链接在这里:flux下action的标准命名规范鉴于redux是在flux的基础上的一个升华,很多本质的内容是相似的。因此Redux的action命名规范是可以参考flux的命名规范的。特此翻译一下。文笔拙劣,多多体谅。

react day one 让陡峭的学习曲线平缓一点

2017-10-08
阅读 1 分钟
3.3k
最近从javascript向react的跳跃过程相当的痛苦。可能本身在js的掌握上就存在问题,再加上最近前端的发展实在是突飞猛进。从ES6的公布,再到模块化管理的飞速发展,整个前端简直是天翻地覆。不过,和当年后端从汇编语言向高级语言的飞跃相比,这次的飞跃还是需要对js相当的熟练,直接上手难度较高。这里先简单的罗列一下...

js速记

2017-10-03
阅读 3 分钟
1.7k
马上就要参加一个团队项目进行React的前端开发了。最近正在着手熟练React语法,然后发现本质上还是建立在对javascript的深刻理解上。市面上在js基础上封装出了非常多优秀的车轮,其中最被新手广泛使用的当属jquery。熟悉jquery语法的童鞋可能会觉得js的语法非常的啰嗦,但是在ES6的最新标准出现以后,js重获新生,可以造...

git指令收编整理

2017-09-19
阅读 8 分钟
2.3k
Git作为一个当前被最广泛使用的版本控制开发工具,是每一个学习软件开发的程序员所必须熟悉的。这里我将所有的Git指令收编整理,列出一个简单的表项,方便自己以后查询。对于初学者,可以从这个教程入手,可以非常快的理解其内在的功能。