懵懂的记得从前有个叫委托的东西是那么的高深难懂。 委托的使用 例一: ? 什么是委托? 个人理解:用来传递方法的类型。...(用来传递数字的类型有int、float、double,用来传递方法的就有委托) 例二: ? 又经过了很久很久... 匿名方法 很多时候委托接收的方法是一次性的或者方法体是非常简单的......细心的朋友可能看到了,Func相对于AddDelegate多定义了一个int。多出了的那个是指的是返回类型。我们F12看对应的定义: ?...C#4中的Action和Func有16个参数,足够你用了。 我们等了又等,又过了好久好久... Lambda的诞生 ? 我XX,这TM就是亲兄弟啊。...关于第2点,我们使用扩展方法的链式编程来解决。 如:(用链式来解决第二点) ? 从此,我们过上了幸福的生活... 借《深入理解C#》中的一图: ?
接口的诞生 接口其实就是一种标准一种规范。 先从生活中的例子讲起,理解含义和概念后,再去理解程序会更容易理解一些。...生活中的例子讲完,我们来延申到程序。 每项技术的产生,肯定是有其原因的。理解了技术的诞生经过,一般也就理解了技术本身。 那接口是如何诞生的呢?...这时候我们就可以将,父类的方法抽象出来,抽象类就这么诞生了,这里的抽象类其实已经有了标准和规范的意思,抽象方法就可以理解为一个对外的标准,子类就是这些标准的实现方,然后我们会发现,抽象类还不算彻底的抽象...在接口诞生中说过,这种类是没有必要创建实例对象的,所以第二个相同点就是不能创建本类对象,只能由子类去实例化子类对象。...在接口的诞生我们说过,抽象类更进一步地抽象后就诞生了接口,接口比抽象类更纯粹,因为它没有成员属性,只有方法,子类实现接口后,唯一能做的就是重写方法,不像抽象类,子类继承抽象类后,连带父类的成员属性一起继承了
这里向大家推荐一篇文章,本文转载自「码农翻身」的「JDBC的诞生」 网络访问 随着 Oracle, Sybase, SQL Server, DB2, Mysql 等人陆陆续续住进数据库村,这里呈现出一片兴旺发达的景象...外部的花花世界一下全部打开,很多程序开始离开这个拥挤的城镇,住到更加宜居的地方去。 可是他们的工作还是要读写数据库, 大家都在想办法能不能通过网络来访问数据库镇的数据库。...更让人恶心的是,每套代码都得处理非常多的协议细节,每个使用Java进行数据库访问的程序都在喋喋不休的抱怨:我就想通过网络给数据库发送SQL语句,怎么搞的这么麻烦?...SQL返回的结果也得有个抽象的概念:ResultSet。 他们之间的关系如图所示: ?...无论是任何数据库,只要正确实现了 Driver,Connection 等接口,就可以轻松的纳入到JDBC框架下了。 Java终于可以高兴的宣布: “JDBC正式诞生了!”
Lucene 的诞生 故事发生于 1997 年的某个下午,Doug Cutting 在电脑上敲下 Lucene 第一个版本的代码。 Apache Lucene 是一款搜索引擎,可以理解为百度。...Cutting 开始了新的工作,也就是给互联网上的网页增加索引,华盛顿大学的研究生 Mike Cafarella 也加入了他的工作。...这个新系统的主要目的是抽象集群的存储,使其呈现为一个可靠的文件系统,从而向用户隐藏所有操作的复杂性。...与以前的分布式编程模型相比,这证明了 API 的优雅程度。 MapReduce 的贡献的一个很核心的思路是不应该为了处理数据而被迫移动数据。相反,应该将程序发送到数据所在的位置。...Facebook 贡献了 Hive,它是基于 MapReduce 的 SQL 引擎。 2008 年,也是第一家专注于 Hadoop 的专业系统集成商诞生的一年。
”的甜品来命名。...发布会的时间只有短短的55秒,可以说比一个简单的自我介绍时间还要短。不如说是全球最短的发布会了。之所以确定为“奥利奥”,个人认为最大的攻城还是这次日全食。因为日全食的过程更像奥利奥的生产过程。 ?...1.关于通知:以前通知都是一大串的,现在我们可以设置重要通知,拦截那些无关紧要的通知信息。相当于我们的垃圾短信拦截把。...这样的好处是在一款设备上,播放影片的同时不影响其他工作。 ? 当然,这几个只是比较突出的。...,除了几个功能上的更新,Android 8.0 还加强了限制后台应用运行来提升设备的续航能力,同时还改进了蓝牙音频,并新增了 Google Play Protect 机制,定期扫描所以的应用保证设备的安全
目前热炒的“大数据”概念,其实也是“信息能”的体现之一,众多的中国公司都在此领域挖掘和耕耘,相信在不久的未来,我们的生活方式会有令人惊喜的变化。...文章内容 信息超新星的诞生 文/Michael Saylor 译/邹韬 移动技术将改变商业运作的方式,它将改变整个工业以及它们所推动的经济。...例如,某一年的总小麦产量是有价值的信息,但是10年来总小麦产量的信息,再加上10年来的降雨资料,以及10年来的施肥情况,这是30倍的信息水滴,但是它有可能蕴含了100倍的信息能量,因为它所呈现的趋势和相关效应会带来更多的决策...我们正在见证一颗超新星的诞生。移动计算技术有潜力让这个数据量变得更大。 在网络革命之前,即使最出色的商务数据库也只能跟踪购买交易。...我们需要一个无所不在的传送装置。20世纪90年代出现的台式电脑的网络浏览界面是最常见和应用最广泛的界面,于是它成为大规模应用软件所采纳的最主要的界面。
前言 最近家里宽带申请到了公网IP,并且上传可以在短暂时间内超过80Mpbs(10秒)(稳定50Mpbs),下载为200Mpbs,准备开启私有云,着手搭建自己的NAS,这里也分享点经验和踩坑。...我ssh的时候改密码会出现权限BUG,无法更改,这里我后来用3寸显示屏看树莓派连接键盘改密的,不知道这不是软件问题 环境搭建 建议下载宝塔,这是最简单最可视化的一种方案 https://bt.cn 选择...bt合适的版本,用root运行脚本,第一次可能会失败,安装提示配置安装一些基本的软件包就行了 安装过程我大概花了5~10分钟,挺慢的,树莓派单核编译能力即使是4B也是很差。...可道云部署 https://kodcloud.com/ 这里用这个私有云程序进行演示,当然你也可以用owncloud或他们团队做的另一个nextcloud,也可用其他的 下载源码 宝塔官方已经支持一键部署可道云了...(未写完) 我的公网私有云地址 https://fnas.cc:1334
以查找为例:在数组实现的查找表中,需要用二分等查找方式进行一系列的比较后,才能找到给定的键值对的位置。而二叉树的实现中也存在着一个向左右子树递归查找的过程。...相比起哈希表,其他的查找表中并没有特定的“键”和“键的位置”之间的对应关系。所以需要在键的查找上付出较大的开销。...及时调整数组大小的必要性 1. 在拉链法实现的哈希表中,因为链表的存在,可以弹性地容纳键值对,而对于线性探测法实现的哈希表,其容纳键值对的数量是直接受到数组大小的限制的。...这种方式不易产生键簇聚集的现象, 但会增加计算的时间 什么是好的哈希函数 在介绍完了解决冲突的方式后,我们再回过头来看什么是“好”的哈希函数, 一个“好”的哈希函数应该是均匀的, 即对于键的集合中的任意一个键...,映射到哈希值集合中的的任意一个值的概率是相等的。
一、起源与创始团队 Go语言(也称为Golang)的诞生可以追溯到2007年,由谷歌的三位资深工程师——罗伯特·格里斯莫(Robert Griesemer)、罗布·派克(Rob Pike)和肯·汤普逊(...肯·汤普逊:Unix操作系统的共同创始人,同时也是C语言的共同发明人之一。 二、为什么需要Go语言? 在Go语言诞生之前,谷歌主要使用C++和Java进行系统编程和后端服务开发。...部署的简化:Go语言编译生成的单一二进制文件,简化了应用程序的部署过程,不需要复杂的依赖管理。...Google Invented Go 通过这些信息,希望大家对Go语言的诞生背景和设计理念有了更深的了解。...这种现代化的编程语言在当今的软件开发中扮演着越来越重要的角色。
一、概念Bug,指软件中的缺陷,它可能会引发软件失效。二、bug由来Bug一词的原意是“昆虫”或“虫子”;而在电脑系统或程序中隐藏着的一些未被发现的缺陷或问题,人们也叫它“bug”。...而代表电脑程序出错的“bug” 这名字,正是由赫柏所取的。1945年9月9日,下午三点。哈珀中尉正领着她的小组构造一个称为“马克二型”的计算机。...这还不是一个完全的电子计算机,它使用了大量的继电器,一种电子机械装置。第二次世界大战还没有结束。哈珀的小组日以继夜地工作。机房是一间第一次世界大战时建造的老建筑。...:不影响产品的运行、不会成为故障的起因、但对产品外观和下道工序影响较大的缺陷1、次要功能不能正常实现2、操作界面错误(包括数据窗口内列名的定义,含义不一致)例如:列名与列名下的内容不一致3、查询错误、数据错误显示...等等,这个直接关系到个人利益和前途,另外测试的存在也是为了让程序没有bug,作为开发的我们更应该和测试配合打造更好的产品。
docker的诞生 Docker 公司起初是一家名为 dotCloud 的平台即服务(Platform-as-a-Service, PaaS)提供商。...Docker 就是这样诞生的! docker解决了什么问题?...Linux包依赖问题 解决了传统开发,部署模式的问题,给DevOps带来了落地的实现方案 解决了传统虚拟机过于浪费资源的问题 更便捷的升级和扩缩容 物理机,虚拟机,容器 下图,简单描述了物理机,虚拟机,...我们常见的有VMware vSphere、微软Hyper-V,开源的KVM、Xen等。 而容器相对于虚拟机而言,就轻量得多。它通过Linux内核虚拟化的能力来管理多个容器。...不像虚拟机,需要额外的资源来支持多个操作系统的运行。
终于有一天,几大派系的帝国派了代表聚在一起,商讨比特宇宙的经贸合作框架协议。 ☆ 第一天 ☆ 会议第一天的议题,商讨经贸合作的最重要的基础:制定比特宇宙通信标准。...Windows:这恐怕不太现实,帝国的公司经常在变化,每天诞生消亡不计其数,还有些公司根本不做国际化贸易,不需要网络通信,这种办法不好操作。...帝国内部再给自己的公司编个码,既然你说到公司会不断消亡和诞生,那这个号码就动态生成。...Linux:目前的方案通信是没有问题了,但因为咱们的包裹都是拆开了一个个发,由于中间网络的路况变化,可能后发的先到,有些还可能丢掉了,需要补发,还有可能发重复了,还有可能后面发的优先级更高,需要加快处理等等各种复杂的情况其实还挺多的...Linux:老大说的在理,刚才这套复杂的协议咱们取名叫TCP协议,就是传输控制协议的意思,老大说的简单版本的要不叫UDP,用户数据报协议,只记录收发公司的端口号就行,非常简单。
顾名思义,这个组件肯定是用来管理Activity的服务,其实不仅是Activity,它还负责四大组件相关的启动,切换,调度等等。 具体是怎么被启动的,又是怎么进行管理的呢?一起看看吧。...(代码基于Android9.0) 服务的启动 之前在SystemServer章节说过,系统的服务一般都是通过SystemServer进程启动的,AMS也不例外。...然后我们要使用相关服务的方法的时候,就通过Servermanager拿到对应服务的引用。...因为这些服务,包括我们今天说的AMS都是在SystemServer进程中的,而我们实际用到的时候是在我们自己的应用进程中,所以就涉及到进程间通信了,这里是用的Binder机制进行通信。...还有一些特殊状态的Activity对应的ActivityRecord,比如正在暂停的Activity,上一个暂停过的Activity。
在高通的设想中,Zeroth的终极目标就是形成标准化的新型处理架构,并且第一次提出了NPU的概念,这种芯片已经具备了AI芯片的雏形。...有了NPU之后,手机的AI性能就能得到大幅的提升。 从麒麟970的单核NPU、到最新的麒麟9000的2+1三核NPU,NPU的升级也伴着华为的AI技术的发展,最能直观体会到的就摄像功能带来的进步。...比如取景时的智能场景识别功能,可以让系统快速识别拍摄的物体和场景,并自动做出优化调教。再比如被广大消费者惊叹的“月亮模式”,以及强大的智能防抖功能,再包括最新的物体识别。...从整个市场上来看,目前AI芯片还处于算法主导到产品主导的过渡期,由于各家AI芯片的设计不同,AI方案架构方面都有不小区别,像寒武纪的“DIANNAO”、谷歌的TPU,再到华为的达芬奇架构,目前AI芯片的设计可谓百花齐放...所以,AI芯片只是提供了手机AI应用的基石,真正要挖掘出移动端AI的魅力,还需要开发者针对AI芯片的能力开发出合适的应用。
本文讲述了什么启发了 FastAPI 的诞生,它与其他替代框架的对比,以及从中汲取的经验。...在此之前的一些框架: Django Django 是最流行的 Python 框架,受到广泛信任。它用于构建 Instagram 之类的系统。...Django REST Framework 是第一个自动生成 API 文档的框架,自动生成 API 的接口文档是 FastAPI 框架诞生的缘由之一。...这就是为什么,如官方网站所述: Requests 是有史以来下载次数最多的Python软件包之一 您的使用方式非常简单。...这是一个伟大的工具,在 FastAPI 诞生之前,我一直在用它。 启发 FastAPI 地方: 对输入的请求数据的自动验证。 (未完待续)
作为一名正在岗位上的Android开发者,工作中常常需要我们使用自定义View去实现一些天马行空的效果,而作为一名正在寻找工作的Android开发者而言,面试过程中自定义View的相关知识点也是热门的面试题目之一哦...而对于api的灵活使用,可视为招式)。 本次我们将来探索自定义View的内功心法之自定义View的死亡三部曲:测量、布局、绘制。 在了解死亡三部曲之前,我们先从上层的视角看下死亡三部曲的执行流程。...Activity的布局文件是如何被加载的? 我们的activity中的视图是什么时候被加载的呢?...被调用,我们的资源文件不加载,但是此时还是不可见的,也就还没有进行侧脸之类的事情。...的源码: 我们继续看ViewRootImpl.setView方法的源码 setView完成的工作很多,如声明输入事件的管道,DisplayManager的注册,view的绘画,window的添加等等
接前文:FastAPI框架诞生的缘由(上) APISpec Marshmallow 和 Webargs 提供以插件形式提供验证,解析和序列化。...但文档这块缺失,然后 APISpec 诞生了。APISpec 可做为很多框架的插件(也是做为 Starlette 插件)。...它的工作方式是,在 Python 的文档字符串内部使用 YAML 格式的描述来为每一个函数自动生成文档。它会生成 OpenAPI 的 schemas。...由于参数由 TypeScript 类型(就像 Python 的类型提示一样)描述,对编辑器的支持是相当不错的。...Falcon Falcon 是另一个高性能的 Python 框架,它被设计成微型的做为其他框架的基础,就像 Hug。
这篇文章是关于 Spark 的,说实话,我是很犹豫写这篇文章的,因为 Spark 在国内非常火,大牛不计其数并且相关的文章也数不胜数,要找准一个有趣的角度去畅抒 Spark 是很难的。...在聊 Spark 之前,我们要先问一个问题:Spark 为什么诞生?没有一种软件是无缘无故诞生的,纯粹自娱自乐的软件是不可能得到大规模普及的。...在 Spark 的创造者的心中,Spark 诞生的上下文是:日益增长的数据量和逐渐遇到瓶颈的机器性能的矛盾。...当然,Spark 不是凭空诞生的。...刚开始诞生的 Spark 和现在的 Spark 是完全不同的,毕竟工业界玩的和学术界有的太多不同。
最近一门新的语言-Julia又刷爆了。...Julia 设计的独特之处包括,参数多态的类型系统,完全动态语言中的类型,以及它多分派的核心编程范型。它允许并发、并行和分布式计算,并直接调用 C 和 Fortran 库而不使用粘合代码。...标准库用的是 Julia 语言本身写的 调用许多其它成熟的高性能基础代码。如线性代数、随机数生成、快速傅里叶变换、字符串处理。...(还在增加中……) 丰富的用于建立或描述对象的类型语法 高性能,接近于静态编译型语言。...包括用户自定义类型等 为并行计算和分布式计算而设计 轻量级“绿色”协程 优雅的可扩展的类型转换/提升 支持Unicode, 包括但不限于UTF-8 可直接调用 C 函数(不需要包装或是借助特殊的API)
领取专属 10元无门槛券
手把手带您无忧上云