Java并发原理抽丝剥茧,读写锁ReadWriteLock实现深入剖析
前面的章节中我们分析了Java语法层面的synchronized锁和JDK内置可重入锁ReentrantLock,我们在多线程并发场景中可以通过它们来控制对资源的访问从而达到线程安全。这两种锁都属于纯粹的独占锁,也就是说这些锁任意时刻只能由一个线程持有,其它线程都得排队依次获取…
数学的公理化及抽象化
现如今社会进入了高度分工的阶段,人们干的事被越来越局限在某个领域,甚至是某个领域很小的范围内。人们受到的教育也越来越长,研究的问题也越来越细越来越深越来越抽象。现在要想诞生以前的全才几乎不太可能了,主要是因为以前很多方面学科都都还比较浅,很多现在看似很简单的成果都能载入史册。印…
聊聊大数据与人工智能
这些年人类生产的数据呈爆发式增长,从十几年前移动智能设备的兴起,到如今人们身上穿戴的各种传感器设备,都在24小时不断产生大量数据。这些数据包括文本、语音、图像、视频等等。 大数据这个词最早出现在20世纪90年代,当时只是用来描述数据量很大,但并没有给出明确的定义和概念意思。出现…
linux内核的一些知识点(下)
内核以物理页作为内存的基本单位,内存管理单元(MMU)正式以页作为单位进行处理,内存管理单元硬件负责将虚拟地址转为物理地址。所以从虚拟内存的角度来看,页就是最小的单位。 多数32位体系结构的页大小为4KB,而64位体系结构则为8KB。也就是说1G大小的内存会被划分为262144…
linux内核的一些知识点(中)
内核为用户进程提供的交互接口,可以为用户进程提供受限制地访问硬件设备、申请操作系统资源以及创建进程和进程通信等能力。linux中的每个系统调用都对应一个系统调用号,调用号用于指明具体哪个系统调用。 系统调用既为应用程序提供了请求接口,又保证了系统的安全和稳定。用户空间的程序不能…
linux内核的一些知识点(上)
应用层通常专注于API的使用,认为将其看成是一个黑盒即可,但了解操作系统的一些机制将有助于我们更好地使用它,也有助于避免犯错误。 1969年,unix从贝尔实验室诞生,由一个失败的操作系统multics发展而来,它发布时带上了源码,以至于很多组织都对其进一步改进。它由C语言编写…
不确定世界的模型
我们生活在一个极其复杂的世界,不管是小到分子原子亦或是大到整个宇宙,其复杂程度都是超乎想象。或许你不曾深入去思考过身边事物的复杂性,那是因为你已经对你日常所见习以为常。所有在你出生之前发明的事物都是这个世界的自然组成部分,所以很多事物给人的感觉都是这个世界本来的样子。 像人类这…
现实世界的模型与理论
为了去分析理解现实世界的万物与人类的思想,我们引入了很多概念,从而形成概念体系。概念体系则被称为模型,将逻辑应用于模型得到的见解称为理论。比如数学有很多概念,这些概念组成数学模型,有很多应用在数学上的逻辑则是数学理论。数学模型非常严格,所以应用面非常广。一般模型理论的正确性可通…
大自然能否演变出一台计算机
按目前的科学解释,万物都是由原子和分子组成,大量的原子分子经过不同的组合从而形成不同的物体。从随机的角度来看,只要时间足够长就可以产生任意的物体。正所谓随机蕴含着万物,那么如果让大量原子和分子自由组合,经过很长时间是否就能产生一台计算机呢? 虽然说只要拥有随机机制并伴随很长时间…
了解无人驾驶汽车原理
无人驾驶汽车,又称自动驾驶汽车或轮式移动机器人,是一种运输动力的无人地面载具。我们理想的无人驾驶汽车是无需人类操作即能从地点A行驶到地点B,不管途中环境多复杂天气多恶劣都由机器自己完成。无人驾驶汽车的核心在于无人驾驶技术,如果说汽车工业是制造业的皇冠,那么无人驾驶技术就是皇冠上…
UMA架构与NUMA架构下的自旋锁(CLH锁与MCS锁)
我们知道自旋锁是实现同步的一种方案,它是一种非阻塞锁。它与常规锁的主要区别就在于获取锁失败后的处理方式不同,常规锁会将线程阻塞并在适当时唤醒它。而自旋锁的核心机制就在自旋两个字,即用自旋操作来替代阻塞操作。某一线程尝试获取某个锁时,如果该锁已经被另一个线程占用的话,则此线程将不…
再看计算机体系基础
CPU即处理器,是计算机中控制数据操控的电路。它主要由三部分构成:算术/逻辑单元、控制单元和寄存器单元。它们的作用分别为执行运算、协调机器活动以及临时存储。 CPU中的寄存器分为通用寄存器和专用寄存器,通用寄存器用于临时存放CPU正在使用的数据,而专用寄存器用于CPU专有用途,…
几大智能语义平台调研
云小蜜是一款面向开发者的会话机器人,支持在不同的消息端上实现基于自然语言处理(NLP)的智能会话。包含以下常用领域: 百度的DuerOS并不仅仅只是提供简单的机器人,而更像是一个操作系统,提供了软件和硬件的各种接口开发。主要有三大类: 小微客户机器人适用场景:用户导入业务领域知…
人机对话系统与自然语言处理
一两年前由于工作需要重点研究过自然语言处理与人机对话系统,本文将会列出的它们的知识点以及自己的思考。 对于普通企业,人机对话目前主要的应用是任务型人机对话系统。不管是nlp亦或是chatbot,学术上和工程上都有不同的实现手段。学术界上人机对话系统的研究成果以及最新的研究趋势在…
人工智能的本质是最优化过程
为了将事物和问题转化为最优化问题数学模型我们需要考虑三个要素:因素变量、约束条件和目标函数。我们根据事物和问题先找到影响模型的所有因素变量,然后再根据目的建立一个目标函数用来衡量系统的效果,最后还要找到客观的限制条件并作为模型的约束。 如上公式,实际问题的因素变量其实可以看成是…
这些年我坚持写作这件事
专注于人工智能、读书与感想、聊聊数学、计算机科学、分布式、机器学习、深度学习、自然语言处理、算法与数据结构、Java深度、Tomcat内核等。 坚持写作已经快接近5年了,文章涉及面也较广。已出版《Tomcat内核设计剖析》、《图解数据结构与算法》,即将出版《人工智能原理科普》。…
人类的数学抽象思维
如今的数学已经变得相当抽象深奥,但实际上数学却并非生来如此,数学的发展主要是由现实问题来推动,对数学进行抽象能使其成为通用性更强的理论。通过抽象思维从实际问题中提取出规律和概念,将更加本质性的东西提取出来是非常有必要的。这些规律能推广到其它很多学科上,比如物理、化学、计算机科学…
以向量和矩阵的视角抽象万物
从广义上,我们通过宇宙来定义万物,宇宙也是时间和空间的统一。对于整个物理世界,时间和空间是最重要最本质的两个维度。如果抛开时间维度,则可以通过空间来描述事物。空间能容纳事物,就好比现实世界中的人、建筑等都在某个空间内。 空间概念也可以推广到其它领域中,比如数学的空间就是点和几何…
聊聊香农的信息熵
我们生活在一个极其复杂的世界,不管是小到分子原子亦或是大到整个宇宙,其复杂程度都是超乎想象。或许你不曾深入去思考过身边事物的复杂性,那是因为你已经对你日常所见习以为常。所有在你出生之前发明的事物都是这个世界的自然组成部分,所以很多事物给人的感觉都是这个世界本来的样子。 像人类这…
计算机如何从 0 发展而来
现代计算机已经发展的非常复杂,要理解计算机的运行原理都已经变得异常艰难,虽说我们无法亲自去制造他,但我们可以了解下计算机系统是怎么从0发展而来的。 逻辑门是计算机的基础元件,通过它可以完成逻辑运算(也称布尔运算),这类运算输入输出都只有0和1。 执行“与”操作,两个输入一个输出…