好代码赏析

1.这个方法使用键值作为锁对象,缩小了同步范围,提升了效率。

public <T> ServerBootstrap childOption(ChannelOption<T> childOption, T value) {
        if (childOption == null) {
            throw new NullPointerException("childOption");
        }
        if (value == null) {
            synchronized (childOptions) {
                childOptions.remove(childOption);
            }
        } else {
            synchronized (childOptions) {
                childOptions.put(childOption, value);
            }
        }
        return this;
}
时间: 2024-07-28 13:45:14

好代码赏析的相关文章

代码赏析——满二叉树

/* 标题:锦标赛 如果要在n个数据中挑选出第一大和第二大的数据 (要求输出数据所在位置和值) 使用什么方法比较的次数最少? 我们可以从体育锦标赛中受到启发. 8个选手的锦标赛,先两两捉对比拼,淘汰一半. 优胜者再两两比拼...直到决出第一名. 第一名输出后,只要对黄色标示的位置重新比赛即可. 下面的代码实现了这个算法(假设数据中没有相同值). 代码中需要用一个数组来表示图中的树 (注意,这是个满二叉树,不足需要补齐). 它不是存储数据本身,而是存储了数据的下标. 第一个数据输出后,它所在的位置

Mybatis Laz-Load功能实现代码赏析(原创)

对于Mybatis 拥有的Lazy Load(有中文翻译成延迟加载)功能,应该很同学都有听说过,今天主要与大家一起来解读一下Mybatis在Lazy Load功能的实现的代码.Lazy Load实现的功能很好理解,就是在数据与对象进行Mapping操作时,只有当真正使用该对象时,才进行Mapping操作,以减少不必要的数据库查询开销,从而提升了程序的效率. 首先就从配置部分讲起.(本文以Mybatis-3.0.5版本的源代码进行分析) 在配置SqlSessionFactoryBean时,需要指定

随想录(一个android原生app的代码赏析)

[ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 今天下午,无意看到android一个原生的app代码,也就一个文件SpeechRecorderActivity.java.开发android app原来不难.插句话,android所有的自带app都是开源的,它们其实才是最好的学习资料.接着大家可以看一下,具体内容如下, /* * Copyright (C) 2007 The Android Open Source Project * * L

c# winform中的一段代码赏析

我遇到了一个bug,是客户测试我们的产品,报出来的,而且有异常信息文件,这对于定位问题,很有帮助. 我找到源码看了下,bug还无法重现.于是我随便点点客户端,经过了几次调试,结果报出错误来了.客户端界面如下: 代码如下: 1 /// <summary> 2 /// 选定项发生改变事件 3 /// </summary> 4 /// <param name="sender"></param> 5 /// <param name=&quo

c++代码赏析之类对象传參

#include <iostream> using namespace std; class A { private: int x; public: A():x(0) { x = 0; cout << "construct" << endl; } A(const A &a) { x = a.x; cout << "construct copy" << endl; } ~A(){ cout <&

PHP PSR4自动加载代码赏析

第一部分是引入自动加载配置文件 1.入口文件:autoload.php里面没什么东西,就是导入ComposerAutoloader主题文件,一般由一个复杂的名字,不过不用担心就是机器随机生成的一个码而已,就是普通的一个类,名字比较长了. require_once __DIR__ . '/composer/autoload_real.php'; return ComposerAutoloaderInitd0a5721608b46fc86f3b980fb0cea37d::getLoader(); 2

c++代码赏析之类对象传参

#include <iostream> using namespace std; class A { private: int x; public: A():x(0) { x = 0; cout << "construct" << endl; } A(const A &a) { x = a.x; cout << "construct copy" << endl; } ~A(){ cout <&

代码赏析——史丰收速算

/* 标题:史丰收速算 史丰收速算法的革命性贡献是:从高位算起,预测进位. 不需要九九表,彻底颠覆了传统手算! 速算的核心基础是:1位数乘以多位数的乘法. 其中,乘以7是最复杂的,就以它为例. 因为,1/7 是个循环小数:0.142857..., 如果多位数超过 142857...,就要进1 同理,2/7, 3/7, ... 6/7 也都是类似的循环小数, 多位数超过 n/7,就要进n 下面的程序模拟了史丰收速算法中乘以7的运算过程. 乘以 7 的个位规律是:偶数乘以2,奇数乘以2再加5,都只取

keras rnn做加减法

一.背景 学习rnn怎么使用 例子: 输入两个数,做加法 二. 代码赏析 from __future__ import print_function from keras.models import Sequential from keras.engine.training import slice_X from keras.layers import Activation, TimeDistributed, Dense, RepeatVector, recurrent import numpy