Java

可组合的类定义

我们定义类时,炉墙代码,和业务代码常常耦合在一起,本文是将业务代码和炉墙代码解耦。利用类继承的特性。 一个常用的构造类的模式是流利模式,或者方法链,耦合的代码如下: class Cake { setFlavour(flavour) { this.flavour = flavour; return t .........

JS 中的定时器与延时器

JS 定时器与延时器 JavaScript里面内置了两个定时器,一个是setTimeout()、一个是setInterval() 1.setTimeout() 延时器(setTimeout): setTimeout(function(){ console.log(222) },1000) 过一秒执行输出一个222,并不再执行。 2.setInterval() 定时器(setInterval): setInterval(function(){......

JUC多线程:Lock锁介绍、ReentrantLock与synchronized的区别

1、什么是 Lock 接口: JDK5 之后在 JUC 中加入了 Lock 接口,该接口中只有6个方法的声明。Lock 锁是显式锁,锁的持有与释放都必须手动编写,当前线程使用 lock() 方法与 unlock() 对临界区进行加锁,其他线程由于无法持有锁将无法进入临界区,直到当前线程释放锁,unlock() 操作必须在 finally 代码块中,这样可以确保即使临界区执行抛出异常,线程最终也能正常释放锁。 2、什么是重入锁 ReentrantLock : ReentrantLock 重入锁是基于 A......

javascript call方法的使用

this总是指向调用某个方法的对象,但是使用call()和apply()方法时,就会改变this的指向。 call.(thisOject, arg1 ,arg2 ...) 我们单独说说call(),因为apply()和call差不多,只不过apply第二个参数必须传入的是一个数组,而call 第二个参数可以是任意类型。 obj1.(method).call(obj2,argument1,argument2) 如上,call的作用就是把obj1的方法放到obj2上使用,后面的argument1..这些做......

剑指 Offer (easy)22. 链表中倒数第k个节点(Java)

原题链接 题目描述 输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。 例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。 示例 给定一个链表: 1->2->3->4->5, 和 k = 2. 返回链表 4->5. 解题思路 这道题我采用的是先遍历一遍该链表求出长度len,然后用长度len减去所给的数值.......

【观察者模式】1.一个模块变化通知其它模块 2.任务系统

1)一个模块变化通知其它模块 其实我不建议一个xxxHandler中既要处理普通的业务,又要处理Listener,这样子会看起来比较混乱。 而是EventManager.java中只处理 public class EventManager { public static onServerStartBegan(){ } public static onRoleLevelUp(){ RewardService.ca.........