这篇是我们自开设星际随笔以来写得最长的一篇.我们也花了不少力气.包括把那5盘棋各打了两遍的谱,包括从Nature官网上把那篇谷歌的报告花了200元下载下来研究它的算法(后来发现谷 歌网站上可以免费下载的),包括也查阅了很多其他文献资料. 为了方便大家阅读,我们先列一下我们这篇随笔主要讲了哪些问题: 1. 计算机战胜欧洲围棋冠军到底为啥好像很牛逼? 2. 从棋谱看,到底AlphaGo什么水平?樊麾有没有放水? 3. AlphaGo的技术原理是什么?这次的创新在哪里? 4. 深度学习相比神经网络有啥…
深度分析如何在Hadoop中控制Map的数量 guibin.beijing@gmail.com 很多文档中描述,Mapper的数量在默认情况下不可直接控制干预,因为Mapper的数量由输入的大小和个数决定.在默认情况下,最终input 占据了多少block,就应该启动多少个Mapper.如果输入的文件数量巨大,但是每个文件的size都小于HDFS的blockSize,那么会造成 启动的Mapper等于文件的数量(即每个文件都占据了一个block),那么很可能造成启动的Mapper数量超出限制而导…
java.util 类 HashMap<K,V>java.lang.Object  java.util.AbstractMap<K,V>      java.util.HashMap<K,V>类型参数:K - 此映射所维护的键的类型V - 所映射值的类型所有已实现的接口: Serializable, Cloneable, Map<K,V> 直接已知子类: LinkedHashMap, PrinterStateReasons -----------------…
转自:https://mp.weixin.qq.com/s/WPZSElF3OQPMGqdoldm07A 作者简介 宋牧春,linux内核爱好者,喜欢阅读各种开源代码(uboot.linux.ucos.rt-thread等),对于优秀的代码框架及其痴迷.现就职于一家手机研发公司,任职Android BSP开发工程师. 正文开始 前情提要: 宋牧春: Linux设备树文件结构与解析深度分析(1) 征稿和征稿奖励名单: Linuxer-"Linux开发者自己的媒体"第二月稿件录取和赠书名单…
笔者<Qftm>原文发布<合天>:https://mp.weixin.qq.com/s?__biz=MjM5MTYxNjQxOA==&mid=2652852661&idx=1&sn=1dd018a6694b79e18087e31ac44d44fa&chksm=bd592d788a2ea46eae02350200b61e29bb944c5c444bd5c1282d58a3d43557104deb31c1d214&mpshare=1&sc…
大家好,我是冰河~~ 在<高并发之--通过ThreadPoolExecutor类的源码深度解析线程池执行任务的核心流程>一文中我们深度分析了线程池执行任务的核心流程,在ThreadPoolExecutor类的addWorker(Runnable, boolean)方法中,使用CAS安全的更新线程的数量之后,接下来就是创建新的Worker线程执行任务,所以,我们先来分析下Worker类的源码. Worker类分析 Worker类从类的结构上来看,继承了AQS(AbstractQueuedSync…
前言 很多.NET的初学者对const和readonly的使用很模糊,本文就const和readonly做一下深度分析,包括: 1. const数据类型的优势 2. const数据类型的劣势 3. readonly类型的优势 4. readonly类型的劣势 5. 编译器对const数据类型如何做处理 6. 编译器对readonly数据类型如何做处理 const常量 编译器在编译const常量的时候会直接把常量值嵌入到IL代码中,这是const常量的优势,即在程序运行过程中不需要通过类型对象或者…
[gevent源码分析] 深度分析gevent运行流程 http://blog.csdn.net/yueguanghaidao/article/details/24281751 一直对gevent运行流程比较模糊,最近看源码略有所得,不敢独享,故分享之. gevent是一个高性能网络库,底层是libevent,1.0版本之后是libev,核心是greenlet.gevent和eventlet是亲近,唯一不同的是eventlet是自己实现的事件驱动,而gevent是使用libev.两者都有广泛的应…
关键词:android  电容屏 tp 工作队列 中断 坐点计算  电容屏主要参数平台信息:内核:linux2.6/linux3.0系统:android/android4.0  平台:S5PV310(samsung exynos 4210)  作者:xubin341719(欢迎转载,请注明作者) android 电容屏(一):电容屏基本原理篇 android 电容屏(二):驱动调试之基本概念篇 android 电容屏(三):驱动调试之驱动程序分析篇 以goodix的gt8105为例 一.总体架构…
写在前面: Java SE5 提供了一种新的类型 Java的枚举类型,关键字 enum 可以将一组具名的值的有限集合创建为一种新的类型,而这些具名的值可以作为常规的程序组件使用,这是一种非常有用的功能.本文将深入分析枚举的源码,看一看枚举是怎么实现的,是如何保证线程安全的,以及为什么用枚举实现的单例是最佳方式. 枚举是如何保证线程安全的 要想看源码,首先得有一个类吧,那么枚举类型到底是什么类呢?是enum吗?答案很明显不是,enum就和class一样,只是一个关键字,他并不是一个类,那么枚举是由…
AndroidService 深度分析(2) 上一篇文章我们Service的生命周期进行了測试及总结. 这篇文章我们介绍下绑定执行的Service的实现. 绑定执行的Service可能是仅为本应用提供服务,称为本地Service.也可能为其它应用提供跨进程服务,即远程Service.以下分别进行介绍: 本地Service 假设Service仅仅服务于本应用.那么我们仅仅须要继承Binder类,定义我们须要实现的方法就可以,当发起绑定连接时,Service将会在onBind方法中返回这个继承类的对…
MapReduce深度分析(二) 五.JobTracker分析 JobTracker是hadoop的重要的后台守护进程之一,主要的功能是管理任务调度.管理TaskTracker.监控作业执行.运行作业容错机制等. 首先启动interTrackerServer,将端口配置为mapred.job.tracker绑定的地址和端口.interTrackerServer提供两种用途: 接收和处理TaskTracker的heartbeat请求,必须实现InterTrackerProtocol接口及协议. 接…
MapReduce深度分析(一) 一.数据流向分析 图为MapReduce数据流向示意图 步骤1.输入文件从HDFS流向到Mapper节点.在一般情况下,存储数据的节点就是Mapper运行的节点,不需要在节点之间进行数据传输,也就是尽量让存储靠近计算. 步骤2.mapper输出到内存缓冲区.Mapper的输入是解析后的键值对,输出是经过处理后新的<key,value>键值对.mapper的输出并不是直接写到本地文件系统,而是先写入一个内存缓冲区,当缓冲区达到一定的阈值后就将缓冲区中的数据以一个…
原文:深度分析Java的ClassLoader机制(源码级别) 为了更好的理解类的加载机制,我们来深入研究一下ClassLoader和他的loadClass()方法. 源码分析 public abstract class ClassLoader ClassLoader类是一个抽象类,sun公司是这么解释这个类的: /** * A class loader is an object that is responsible for loading classes. The * class <tt>…
原文:深度分析Java的枚举类型--枚举的线程安全性及序列化问题 枚举是如何保证线程安全的 要想看源码,首先得有一个类吧,那么枚举类型到底是什么类呢?是enum吗?答案很明显不是,enum就和class一样,只是一个关键字,他并不是一个类,那么枚举是由什么类维护的呢,我们简单的写一个枚举: public enum t { SPRING,SUMMER,AUTUMN,WINTER; } 然后我们使用反编译,看看这段代码到底是怎么实现的,反编译(Java的反编译)后代码内容如下: public fin…
[深度分析] Python Web 开发框架 Bottle(这个真的他妈的经典!!!) 作者:lhf2009913 Bottle 是一个非常精致的WSGI框架,它提供了 Python Web开发中需要的基本支持:URL路由,Request/Response对象封装,模板支持,与WSGI服务器集成支持.整个框架的全部代码约有 2000行,它的核心部分没有其他任何依赖,只要有Python环境就可以运行. Bottle适用于小型的Web开发,在应用程序规模比较小的情况下可以实现快速开发.但是由于自身功…
转自:http://jwen.iteye.com/blog/1123991 memcached是高性能的分布式内存缓存服务器.一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度.提高可扩展性. Memcached使用libevent库实现网络连接服务,理论上可以处理无限多的连接,但是它和Apache不同,它更多的时候是面向稳定的持续连接的,所以它实际的并发能力是有限制的.在保守情况下memcached的最大同时连接数为200,这和Linux线程能力有关系,这…
JAVA CAS原理深度分析 http://blog.csdn.net/hsuxu/article/details/9467651 偏向锁,轻量级锁 https://blog.csdn.net/zqz_zqz/article/details/70233767 http://tutorials.jenkov.com/java-concurrency/volatile.html 深入理解Java并发之synchronized实现原理 全面理解Java内存模型(JMM)及volatile关键字 深入剖…
Job Manager 启动 https://t.zsxq.com/AurR3rN 博客 1.Flink 从0到1学习 -- Apache Flink 介绍 2.Flink 从0到1学习 -- Mac 上搭建 Flink 1.6.0 环境并构建运行简单程序入门 3.Flink 从0到1学习 -- Flink 配置文件详解 4.Flink 从0到1学习 -- Data Source 介绍 5.Flink 从0到1学习 -- 如何自定义 Data Source ? 6.Flink 从0到1学习 --…
Task Manager 启动 https://t.zsxq.com/qjEUFau 博客 1.Flink 从0到1学习 -- Apache Flink 介绍 2.Flink 从0到1学习 -- Mac 上搭建 Flink 1.6.0 环境并构建运行简单程序入门 3.Flink 从0到1学习 -- Flink 配置文件详解 4.Flink 从0到1学习 -- Data Source 介绍 5.Flink 从0到1学习 -- 如何自定义 Data Source ? 6.Flink 从0到1学习 -…
首先说观点:java只有值传递没有引用传递 然后再来看看值传递与引用传递两者的定义 值传递(pass by value)是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数. 引用传递(pass by reference)是指在调用函数时将实际参数的地址直接传递到函数中,那么在函数中对参数所进行的修改,将影响到实际参数. 这里牢记值传递中将实际参数复制一份. 然后就是对于参数类型:值类型 和 引用类型. 结合起来理解就是:值类型传递,java是将其…
深度分析HBase架构 https://zhuanlan.zhihu.com/p/30414252   原文链接(https://mapr.com/blog/in-depth-look-hbase-architecture/) HBase的架构 物理上看, HBase系统有3种类型的后台服务程序, 分别是Region server, Master server 和 zookeeper. Region server负责实际数据的读写. 当访问数据时, 客户端与HBase的Region server…
从Wannacry到WannaRen:螣龙安科2020年4月7日,360CERT监测发现网络上出现一款新型勒索病毒wannaRen,该勒索病毒会加密windows系统中几乎所有的文件,并且以.WannaRen作为后缀.360CERT该事件评定:危险等级为高危,影响面为广泛. 经360安全大脑分析确认,"WannaRen"勒索病毒的作者正是此前借"永恒之蓝"漏洞祸乱网络的"Shadow Brokers"组织.从三年前Wannacry席卷全球,至少3…
一.dm9000_porbe函数分析 不同于u-boot代码,tq2440中的DM9000更加复杂,需要分析的点也很多: /* * Search DM9000 board, allocate space and register it */ static int __devinit dm9000_probe(struct platform_device *pdev) { struct dm9000_plat_data *pdata = pdev->dev.platform_data; struc…
网卡初始化 1.分配描述结构,alloc_etherdev 2.获取平台资源,platform_get_resource 2.1.在s3c_dm9k_resource中有相关的资源 2.2.add地址由CS4和ADD2决定,是20000000 2.3.dat地址由CS4和ADD2决定,是20000004 2.4.中断资源是EINT7 3.虚拟地址映射,ioremap 4.读取芯片类型 5.设置操作函数集 6.读取MAC地址 7.注册网卡驱动,register_netdev 8.启动发送队列,ne…
本节目的: 通过分析块设备驱动的框架,知道如何来写驱动 1.之前我们学的都是字符设备驱动,先来回忆一下 字符设备驱动: 当我们的应用层读写(read()/write())字符设备驱动时,是按字节/字符来读写数据的,期间没有任何缓存区,因为数据量小,不能随机读取数据,例如:按键.LED.鼠标.键盘等 2.接下来本节开始学习块设备驱动 块设备: 块设备是i/o设备中的一类, 当我们的应用层对该设备读写时,是按扇区大小来读写数据的,若读写的数据小于扇区的大小,就会需要缓存区, 可以随机读写设备的任意位…
Linux网络设备结构 首先看一下Linux网络设备的结构,如下图: 网络协议接口层向网络层协议提供提供统一的数据包收发接口,不论上层协议为ARP还是IP,都通过dev_queue_xmit()函数发送数据,并通过netif_rx()函数接受数据.这一层的存在使得上层协议独立于具体的设备. 网络设备接口层向协议接口层提供统一的用于描述具体网络设备属性和操作的结构体net_device,该结构体是设备驱动功能层中各函数的容器.实际上,网络设备接口层从宏观上规划了具体操作硬件的设备驱动功能层的结构.…
一.前言 从本博文开始,正式开启Spring及SpringBoot源码分析之旅.这可能是一个漫长的过程,因为本人之前阅读源码都是很片面的,对Spring源码没有一个系统的认识.从本文开始我会持续更新,争取在系列文章更完之后,也能让自己对Spring源码有一个系统的认识. 在此立下一个flag,希望自己能够坚持下去.如果有幸让您能从系列文章中学到丁点的知识,还请评论,关注,或推荐.如有错误还请在评论区指出,一起讨论共同成长. 二.SpringBoot诞生的历史背景 随着使用 Spring 进行开发…
目录 前言 4. LED芯片手册分析 4.1 内存管理单元MMU 4.1.1 MMU的功能 4.1.2 TLB的作用 4.2 地址转换函数 4.2.1 ioremap函数 4.2.2 iounmap函数 4.3 LED驱动 4.3.1 配置GPIO时钟 4.3.2 配置引脚复用 4.3.3 引脚属性 4.3.4 引脚控制 前言 参考: <IMX6ULLRM(6ULL用户手册).pdf> 李柱明博客 4. LED芯片手册分析 本章节记录实现LED寄存器配置,芯片手册分析. 4.1 内存管理单元M…
现在一般的企业都会 使用双网卡接入,这样既能添加网络带宽,同时又能做相应的冗余,可以说是好处多多.而一般企业都会使用linux操作系统下自带的网卡绑定模式,当然现在 网卡产商也会出一些针对windows操作系统网卡管理软件来做网卡绑定(windows操作系统没有网卡绑定功能 需要第三方支持).进入正题,linux有七种网卡绑定模式:0. round robin,1.active-backup,2.load balancing (xor),  3.fault-tolerance (broadcas…