历经颇多曲折,才迎来光明的Java语言,作为一名使用者的你,是否对它的诞生/历史发展进程、背后的创造者(Java之父),有着很多的疑惑呢?到底是一个什么样的人,才能写出如果优秀的语言?...今天,本文将用漫画的形式带你倒回历史的长河,一起探索Java语言起起伏伏的诞生历程及Java之父的成长~ PS: Java之父,人物主人公名叫:James Gosling,统一以中文名:詹姆斯.高斯林称呼...具有强大的生命力的编程语言Java诞生了、在一片混乱中诞生了....至此,Java语言的诞生部分就到这里结束了。时间回到2021年的今天,java已经走过了近30年,互联网快速发展它可以说是功不可没。...以下是它的迭代史: 1995年5月23日,Java语言诞生 1996年1月,第一个JDK-JDK1.0诞生 1996年4月,10个最主要的操作系统供应商申明将在其产品中嵌入JAVA技术 1996年9月,
博客地址 此博客记录了搭建网站的详细过程,以及建站过程中遇到的一些坑。博客介绍了安装homebrew,nodejs,hexo,域名注册,github设置,DNS解析等过程。此次建站过程基于mac系统。...这个设置是防止别人往你的项目里提交内容。 注意: 输入密码的时候没有*字样的,你直接输入就可以了。 最后看到这样的界面,就成功设置ssh key了: ?...GitHub 也是用这些信息来做权限的处理,输入下面的代码进行个人信息的设置,把名称和邮箱替换成你自己的,名字必须是你的真名,而不是GitHub的昵称。...添加记录 其中A的两条记录指向的ip地址是github Pages的提供的ip 192.30.252.153 192.30.252.154 如博客不能登录,有可能是github更改了空间服务的ip地址,...www指定的记录是你在github注册的仓库。
同时在多数情况下,必须尽量限制pMOS型晶体管的出现,因为在制造过程的后期,需要将N型材料植入P型衬底当中,而这一过程会导致pMOS管的形成。 在掺入化学物质的工作完成之后,标准的切片就完成了。...● 光刻蚀 这是目前的CPU制造过程当中工艺非常复杂的一个步骤,为什么这么说呢?光刻蚀过程就是使用一定波长的光在感光层中刻出相应的刻痕, 由此改变该处材料的化学特性。...这项技术对于所用光的波长要求极为严格,需要使用短波长的紫外线和大曲率的透镜。刻蚀过程还会受到晶圆上的污点的影响。每一步刻蚀都是一个复杂而精细的过程。...这个掺杂过程创建了全部的晶体管及彼此间的电路连接,没个晶体管都有输入端和输出端,两端之间被称作端口。 ● 重复这一过程 从这一步起,你将持续添加层级,加入一个二氧化硅层,然后光刻一次。...在CPU的包装过程完成之后,许多产品还要再进行一次测试来确保先前的制作过程无一疏漏,且产品完全遵照规格所述,没有偏差。
感谢苹果与三星的专利“核战”,苹果才稍微肯让人知道他们是如何开发产品的——如果你以为在苹果内部,产品的开发就好像外界传言般浪漫,这绝对是误解。...现在,Wired的记者 Fred Vogelstein 对苹果的前员工进行采访,挖掘更多更深的内幕。...为了达到理想中的演示效果,Steve Jobs 让工程师们花几个星期的时间,改造舞台的影像传输网路,还有 iPhone 的机身后盖。...当时日本的的 Wi-Fi 禁止在美国使用。 Grignon 当时拥有来自 AT&T 的携带式无线基站,因此他知道现场的无线信号是强劲的。...Tim Bucher,当时的苹果高级主管称,在利用多点触摸技术的时候,公司所遭遇最大的难题在于软件部分。OS X 最初的设计是为鼠标设计的,而非手指。
当我们提到一些常见的功能时,可以一笔带过,简单的描述一下就可以了,比如:对于微信登录,手机号注册。 那如果我们提到的是一些比较复杂的,具备一定创造性功能的时候,又该如何呢?...对于产品经理而言,我们有义务将一个idea转化成可用代码实现的方案,实际上这个转化过程正是产品经理重要技能的一环。 不仅仅是想到需求,还要确保需求可被实现。 ?...扩展 我们所说的异常保护,就是在上述的过程中,每一个环节都有可能出现错误,我们无法将所有的错误都进行预设,通常会将异常做分类。 没有返回以及返回的信息,不是“对”,也不是“错”。...这个是基于分享的泳道图,他能满足我们分享的需求,但显然,这不能完成案例中的复杂逻辑。我们来看看另外一副泳道图。 ? 这个图补充了B用户在微信打开被分享出来的链接所对应的操作,但是这任然是不够的。...访问者ID加上分享者ID再加上一些其他的参数,生成一个新的参数,我们可以将其称为幸运ID。 B用户只要在注册过程中,甚至注册以后的正常使用过程中,输入这个幸运ID,就能建立起这道桥梁。
大家好,又见面了,我是你们的朋友全栈君。 Java编译运行过程 在上一篇文章中,我们了解了第一个Java入门程序,以及如何编译和运行第一个Java程序。...1 Java程序编译过程 在编译时,Java文件由Java编译器(它不与底层操作系统交互)将Java代码转换为字节码(.class)。...2 Java程序运行过程 在Java程序运行中,会执行以下步骤: 类加载器(Classloader):类加载器是JVM的子系统,用于加载类文件。...3 两个常见的问题 3.1 Java源文件命名方式 问题:一个class的名称为Simple,Java源文件名称可以不是Simple.java么?...答案是可以的,但是前提是该类不是public修饰符。 3.2 一个Java源文件写多个类 问题:一个Java源文件中可以写多个类么? 答案是可以的。
懵懂的记得从前有个叫委托的东西是那么的高深难懂。 委托的使用 例一: ? 什么是委托? 个人理解:用来传递方法的类型。...(用来传递数字的类型有int、float、double,用来传递方法的就有委托) 例二: ? 又经过了很久很久... 匿名方法 很多时候委托接收的方法是一次性的或者方法体是非常简单的......细心的朋友可能看到了,Func相对于AddDelegate多定义了一个int。多出了的那个是指的是返回类型。我们F12看对应的定义: ?...C#4中的Action和Func有16个参数,足够你用了。 我们等了又等,又过了好久好久... Lambda的诞生 ? 我XX,这TM就是亲兄弟啊。...关于第2点,我们使用扩展方法的链式编程来解决。 如:(用链式来解决第二点) ? 从此,我们过上了幸福的生活... 借《深入理解C#》中的一图: ?
接口的诞生 接口其实就是一种标准一种规范。 先从生活中的例子讲起,理解含义和概念后,再去理解程序会更容易理解一些。...生活中的例子讲完,我们来延申到程序。 每项技术的产生,肯定是有其原因的。理解了技术的诞生经过,一般也就理解了技术本身。 那接口是如何诞生的呢?...在接口的诞生我们说过,抽象类更进一步地抽象后就诞生了接口,接口比抽象类更纯粹,因为它没有成员属性,只有方法,子类实现接口后,唯一能做的就是重写方法,不像抽象类,子类继承抽象类后,连带父类的成员属性一起继承了...一定要去理解 Java 设计者背后的意图,为什么突然在Java 8就加了这个特性呢?...因为Java 8 许多原有的接口,新增了很多方法,这些新增的方法会影响到之前的子类如果你继承了某个接口,突然接口新增了一个方法,而你没有去实现,你的子类就会编译失败,为了保证向下兼容性,Java 8就推出了
这里向大家推荐一篇文章,本文转载自「码农翻身」的「JDBC的诞生」 网络访问 随着 Oracle, Sybase, SQL Server, DB2, Mysql 等人陆陆续续住进数据库村,这里呈现出一片兴旺发达的景象...更让人恶心的是,每套代码都得处理非常多的协议细节,每个使用Java进行数据库访问的程序都在喋喋不休的抱怨:我就想通过网络给数据库发送SQL语句,怎么搞的这么麻烦?...面向接口编程 第一个使用JDBC,叫做学生信息管理的程序很快发现了问题,跑来质问Java: “你这个Connection 接口设计的有问题!” Java 说: “不可能, 我的设计多完善啊!”...肯定不能直接 new , Java似乎陷入了鸡生蛋、蛋生鸡的无限循环中了。...无论是任何数据库,只要正确实现了 Driver,Connection 等接口,就可以轻松的纳入到JDBC框架下了。 Java终于可以高兴的宣布: “JDBC正式诞生了!”
这是我参与「掘金日新计划 · 12 月更文挑战」的第37天,点击查看活动详情 Java对象的创建过程 类加载检查:虚拟机遇到⼀条 new 指令时,首先将去检查这个指令的参数是否能在常量池中定位到这个类的符号引...如果没有,那必须先执行相应的类加载过程。 分配内存:在类加载检查通过后,接下来虚拟机将为新⽣对象分配内存。...分配⽅式有“指针碰撞”和“空闲列表”两种,选择哪种分配⽅式由Java堆是否规整决定,⽽Java堆是否规整⼜由所采⽤的垃圾收集器是否带有压缩整理功能决定。...内存分配的两种⽅式 选择以上两种⽅式中的哪一种,取决于 Java 堆内存是否规整。...内存分配并发问题 在创建对象的时候有⼀个很重要的问题,就是线程安全,因为在实际开发过程中,创建对象是很频繁的事情,作为虚拟机来说,必须要保证线程是安全的,通常来讲,虚拟机采⽤两种⽅式来保证线程安全: CAS
知识手册里写的 仿佛我从来没学过一样 有点沉不下心来看 整理一下 笔记 从Javac代码的总体结构来看,编译过程大致可以分为1个准备过程和3个处理过程,它们分别如下所示。 1....准备过程:初始化插入式注解处理器。 2. 解析与填充符号表过程,包括: 词法、语法分析,将源代码的字符流转变为标记集合,构造出抽象语法树。 填充符号表,产生符号地址和符号信息。 3....插入式注解处理器的注解处理过程: 在Javac源码中,插入式注解处理器的初始化过程是在 ** initPorcessAnnotations() ** 方法中完成的,而它的执行过程则是在processAnnotations...分析与字节码生成过程,包括: 标注检查,对语法的静态信息进行检查。 数据流及控制流分析,对程序动态运行过程进行检查。 解语法糖,将简化代码编写的语法糖还原为原有的形式。...上述3个处理过程里,执行插入式注解时又可能会产生新的符号,如果有新的符号产生,就必须转回到之前的解析、填充符号表的过程中重新处理这些新符号,从总体来看,三者之间的关系与交互顺序如图所示。 ?
下图便是 Java 对象的创建过程: Java创建对象过程 ?...如果没有,那必须先执行相应的类加载过程。 分配内存: 在类加载检查通过后,接下来虚拟机将为新生对象分配内存。...分配方式有"指针碰撞"和"空闲列表"两种,选择那种分配方式由 Java 堆是否规整决定,而Java堆是否规整又由所采用的垃圾收集器是否带有压缩整理功能决定。 ?...选择以上两种方式中的哪一种,取决于 Java 堆内存是否规整。...内存分配并发问题 在创建对象的时候有一个很重要的问题,就是线程安全,因为在实际开发过程中,创建对象是很频繁的事情,作为虚拟机来说,必须要保证线程是安全的,通常来讲,虚拟机采用两种方式来保证线程安全:
面试官:创建java对象有哪几种方式? 小白:new、clone、反射、反序列化。 面试官:那你知道 new 一个对象的时候,JVM 做了哪些事吗?说说具体的过程。...所以你知道 new 一个对象的时候做了哪些事,具体过程是怎样的吗?其实主要经历了如下过程: 检查类是否加载过; 分配内存; 1....java 对象头包括: Mark word:存储对象自身的一些数据,比如 hashCode,gc 分代年龄等; Klass pointer:存储指针,JVM 通过这个指针来确定该对象是哪个类的实例; array...执行init方法: 经过上面四个步骤,一个新的 java 对象就已经产生了,最后就是执行 init 方法,让对象按照程序猿的意愿,进行初始化。什么叫按照程序猿的意愿初始化?...就是你 new 对象的时候传了哪些参数,属性值是什么。 内存分配的过程中,如何保证线程安全呢?JVM 采用 TLAB + CAS 的方式保证线程安全。
类的加载过程 类的加载过程又分为三个步骤: 过程1:类的装载(Loading) 将类的class文件读入内存,并为之创建一个java.lang.Class的实例对象,此过程由类加载器(负责类的加载,对应一个...过程2:链接(Linking) 验证(Verify):确保加载的类的信息符合JVM规范,例如:每一个class文件都以cafebabe开头,没有安全方面的问题。...准备(Prepare):正式为类中的(static)静态变量分配内存,并设置默认初始化值的阶段。这些内存都在方法区中进行分配。...解析(Resolve):虚拟机常量池内得符号引用(常量名)替换为直接引用(地址)的过程。 过程3:初始化(initialization) 执行类构造器方法的过程。...执行所有类中(static)静态变量和(static)静态代码块中的语句的赋值动作,这些操作都在方法中进行。 因为类的加载过程中还没有对象的存在,因而赋值操作也只能是对静态变量进行。
Lucene 的诞生 故事发生于 1997 年的某个下午,Doug Cutting 在电脑上敲下 Lucene 第一个版本的代码。 Apache Lucene 是一款搜索引擎,可以理解为百度。...这个时候,Cuting 发现很多人开始使用他开发的软件了,并且很多人向他反馈使用过程的问题和希望改进的地方。再过了一年,Lucene 迁移到了 Apache Software Foundation。...在论文中,Cuting 和 Cafarella 找到了解决上述四个问题的思路,并尝试使用 Java 实现论文里的想法。2004年,Nutch 分布式文件系统 (NDFS)完成了。...“但那是用 Java 编写的”,工程师抗议道,“它怎么能比我们强大的 C++ 系统更好?”。随着来自老板和数据团队的压力越来越大,他们决定将这个全新的开源系统纳入考虑范围。...Facebook 贡献了 Hive,它是基于 MapReduce 的 SQL 引擎。 2008 年,也是第一家专注于 Hadoop 的专业系统集成商诞生的一年。
对于“数据”这个关键词,要有自己的理解。数据是什么,在开发中是如何对待数据的。其实数据在面向对象的编程中是类对象,在面向过程编程中是叫结构体的术语,都是描述数据的一种计算机编程概念。...计算机的硬件内存条里面分配的就是运行内存。在Java中,Java虚拟机封装了很多东西,有垃圾回收器,有可以跑字节码文件的。...刚毕业的时候,接触过前端开发框架,编写前端页面。开发效果很好,总算是看到页面效果了。后台有很多的代码业务逻辑需要处理,数据的处理过程没那么简单。...导入是把Excel中的数据导入到数据库中。Excel导入校验是开发过程中第一个模块,只有校验成功之后的数据才是正确可信,才能入库保存。...读文件和写文件的效率是十分低下,把磁盘中的文件加载到内存中,通过中央系统处理器处理之后要持久化到磁盘中,这个过程消耗的时间太多。时间响应的指标对用户的体验影响十分大。
,另外也将赠送作者原创的Java学习指南、Java程序员面试指南等干货资源) Java日志系统的演变史 我们先看一个故事。...阶段五 在这个卸载与上新的过程中,老D的工作量陡增,他感觉很累。...比较巧的是slf4j的作者(Ceki Gülcü)就是log4j的作者,他觉得JCL不够优秀,所以他要自己搞一套更优雅的出来,于是slf4j日志体系诞生了,并为slf4j实现了一个亲子——logback...到此本来应该完了,但是Ceki Gülcü觉得还是得回头拯救下自己的“大阿哥”——log4j,于是log4j2诞生了,同样log4j2也参与到了slf4j日志体系中,想必将来会更加混乱。...JCL(commons-logging) 由于项目的日志打印必然选择两个框架中至少一个,这时候,Apache的JCL(commons-logging)诞生了。
,另外也将赠送作者原创的Java学习指南、Java程序员面试指南等干货资源) <!...阶段五 在这个卸载与上新的过程中,老D的工作量陡增,他感觉很累。...比较巧的是slf4j的作者(Ceki Gülcü)就是log4j的作者,他觉得JCL不够优秀,所以他要自己搞一套更优雅的出来,于是slf4j日志体系诞生了,并为slf4j实现了一个亲子——logback...到此本来应该完了,但是Ceki Gülcü觉得还是得回头拯救下自己的“大阿哥”——log4j,于是log4j2诞生了,同样log4j2也参与到了slf4j日志体系中,想必将来会更加混乱。...JCL(commons-logging) 由于项目的日志打印必然选择两个框架中至少一个,这时候,Apache的JCL(commons-logging)诞生了。
”的甜品来命名。...发布会的时间只有短短的55秒,可以说比一个简单的自我介绍时间还要短。不如说是全球最短的发布会了。之所以确定为“奥利奥”,个人认为最大的攻城还是这次日全食。因为日全食的过程更像奥利奥的生产过程。 ?...1.关于通知:以前通知都是一大串的,现在我们可以设置重要通知,拦截那些无关紧要的通知信息。相当于我们的垃圾短信拦截把。...这样的好处是在一款设备上,播放影片的同时不影响其他工作。 ? 当然,这几个只是比较突出的。...,除了几个功能上的更新,Android 8.0 还加强了限制后台应用运行来提升设备的续航能力,同时还改进了蓝牙音频,并新增了 Google Play Protect 机制,定期扫描所以的应用保证设备的安全
目前热炒的“大数据”概念,其实也是“信息能”的体现之一,众多的中国公司都在此领域挖掘和耕耘,相信在不久的未来,我们的生活方式会有令人惊喜的变化。...文章内容 信息超新星的诞生 文/Michael Saylor 译/邹韬 移动技术将改变商业运作的方式,它将改变整个工业以及它们所推动的经济。...现金能够记录单笔交易信息,甚至具体到某人购买了什么食物;而电子商务系统不仅能完整地保留你的每一笔购买记录,还可以跟踪你所查询的产品;道路传感器监控着交通;条形码扫描器记录了每管牙膏从生产商到你的购物袋的过程...我们正在见证一颗超新星的诞生。移动计算技术有潜力让这个数据量变得更大。 在网络革命之前,即使最出色的商务数据库也只能跟踪购买交易。...他们可以发现什么品牌的电视机非常受欢迎,以至于人们不用比较浏览就直接购买。自动化的零售商可以掌握关于产品实质和关于消费者决策过程的关键信息。
领取专属 10元无门槛券
手把手带您无忧上云