leowcc leowcc
一只努力向上的少年
关注数: 3 粉丝数: 18 发帖数: 566 关注贴吧数: 9
干货贴---前端编程基础常识(一) 一、PC端响应式 结构上无非就是DIV+CSS。 主要的页面布局是非常经典的双飞翼布局,主要通过三个样式实现:浮动float、负边距negative margin、相对定位relative;这种布局产生的低版本浏览器bug非常少。 响应式对应的宽度有三种。然后根据产品需求来进行不同区块的隐藏和显现。比如:一整行结构,没有需求显示固定区块,body内定义的响应式变小时,直接把溢出的部分overflow:hidden。一整行结构,最后一个区块固定显示,其他根据响应式进行隐藏。一行两列式,1380时是4+3 1180时是3+3 980时是3+2。一行三列式怎样怎样的等等。主要看产品需求,不过实现起来都主要靠那三个样式。 二、怎么好好写样式 1)为了更好的使样式得到更好的复用,我们都会以语义化的碎片形式来拼凑,每个页面里独有的样式单独写在这个页面定义的独有碎片样式中。 公共的碎片除了base级的文件,还主要有三种不同的导航头、分类页签、不同的轮播图:5个轮播 7个轮播等;分类标签:20%+40%+40%;33%+33%+33%;20%+30%+50%等等;图文结构中不同尺寸的图片对应的样式;图文结构中文字对应的样式:只有一行title溢出截断、两行title、title+slogan等;总之,样式碎片非常多,根据UI和自己设定的碎片,保证页面显示正确的同时,使样式得到最大的复用性,保证不冗余,同时也可以在项目交接的时候让别人根据命名就直接了解到内里样式实现的功能。最大的优点是,当所有页面都进行大改版时,只需要改一个碎片,进行上线就可以达到用到这个碎片的所有样式都改版的效果。 2) 那些网上一搜就能搜到的面试题目,工作中确实用到,但都是基本知识,像什么盒子模型啊 浮动啊 选择器啊等是非常重要的内容基础
干货贴---前端编程基础常识(一) 一、PC端响应式 结构上无非就是DIV+CSS。 主要的页面布局是非常经典的双飞翼布局,主要通过三个样式实现:浮动float、负边距negative margin、相对定位relative;这种布局产生的低版本浏览器bug非常少。 响应式对应的宽度有三种。然后根据产品需求来进行不同区块的隐藏和显现。比如:一整行结构,没有需求显示固定区块,body内定义的响应式变小时,直接把溢出的部分overflow:hidden。一整行结构,最后一个区块固定显示,其他根据响应式进行隐藏。一行两列式,1380时是4+3 1180时是3+3 980时是3+2。一行三列式怎样怎样的等等。主要看产品需求,不过实现起来都主要靠那三个样式。 二、怎么好好写样式 1)为了更好的使样式得到更好的复用,我们都会以语义化的碎片形式来拼凑,每个页面里独有的样式单独写在这个页面定义的独有碎片样式中。 公共的碎片除了base级的文件,还主要有三种不同的导航头、分类页签、不同的轮播图:5个轮播 7个轮播等;分类标签:20%+40%+40%;33%+33%+33%;20%+30%+50%等等;图文结构中不同尺寸的图片对应的样式;图文结构中文字对应的样式:只有一行title溢出截断、两行title、title+slogan等;总之,样式碎片非常多,根据UI和自己设定的碎片,保证页面显示正确的同时,使样式得到最大的复用性,保证不冗余,同时也可以在项目交接的时候让别人根据命名就直接了解到内里样式实现的功能。最大的优点是,当所有页面都进行大改版时,只需要改一个碎片,进行上线就可以达到用到这个碎片的所有样式都改版的效果。 2) 那些网上一搜就能搜到的面试题目,工作中确实用到,但都是基本知识,像什么盒子模型啊 浮动啊 选择器啊等是非常重要的内容基础
坊间新闻--力排众议,自由软件之父 RMS 正式回归 FSF! 争议许久的“自由软件之父理查德·斯托曼(Richard M. Stallman)回归 FSF(Free Software Foundation,自由软件基金会)”事件终于落下帷幕。 4 月 12 日,自由软件基金会官方发文宣布,经过几个月激烈的讨论以及深思熟虑的审议,通过投票正式任命 Richard Stallman(RMS)为 FSF 的董事。 “RMS 对自由软件的历史、法律和技术敏锐度是他人无可匹敌的。“FSF 如是说,同时其表示,”RMS 仍然是最能言善辩的哲学家,无疑是计算机自由的忠实拥护者。“ 回归引发的争议 正如 CSDN 此前发文所述,作为世界顶级程序员之一,斯托曼先后创立了 GUN 项目、Emacs 编辑器、自由软件基金会、GPL 协议,并发起且带动自由软件运动的发展。基于此,他也成为业界很多程序员学习的楷模。 不过,2019 年,他因为在 MIT 计算机科学与人工智能实验室的邮件列表中,在对杰弗里·爱泼斯坦案和马文·明斯基(人工智能之父)(涉性犯罪案件)的关联的表述中的用词不当,评论“性侵案中的受害者有罪”,引起用户不满。 后来,斯托曼遂宣布辞去麻省理工 CSAIL 的职位以及自由软件基金会主席一职。 时隔 18 个月之后,斯托曼在一次活动中公开宣布要回归 FSF,然而这一举动并未得到很多社区的认可及欢迎,甚至不少组织和个人联合签名抵制他的回归。 如今,FSF 承认此前在 LibrePlane 大会上突然宣布 RMS 回归的处理方法非常糟糕,并对此表示歉意。同时,在最新的声明中,FSF 也指出,斯托曼已承认了自己的错误。虽然他的个人个性仍然困扰着一些人,但大多数董事会成员认为他的行为已经缓和,并相信他的想法将助力 FSF 未来的工作。
坊间新闻--力排众议,自由软件之父 RMS 正式回归 FSF! 争议许久的“自由软件之父理查德·斯托曼(Richard M. Stallman)回归 FSF(Free Software Foundation,自由软件基金会)”事件终于落下帷幕。 4 月 12 日,自由软件基金会官方发文宣布,经过几个月激烈的讨论以及深思熟虑的审议,通过投票正式任命 Richard Stallman(RMS)为 FSF 的董事。 “RMS 对自由软件的历史、法律和技术敏锐度是他人无可匹敌的。“FSF 如是说,同时其表示,”RMS 仍然是最能言善辩的哲学家,无疑是计算机自由的忠实拥护者。“ 回归引发的争议 正如 CSDN 此前发文所述,作为世界顶级程序员之一,斯托曼先后创立了 GUN 项目、Emacs 编辑器、自由软件基金会、GPL 协议,并发起且带动自由软件运动的发展。基于此,他也成为业界很多程序员学习的楷模。 不过,2019 年,他因为在 MIT 计算机科学与人工智能实验室的邮件列表中,在对杰弗里·爱泼斯坦案和马文·明斯基(人工智能之父)(涉性犯罪案件)的关联的表述中的用词不当,评论“性侵案中的受害者有罪”,引起用户不满。 后来,斯托曼遂宣布辞去麻省理工 CSAIL 的职位以及自由软件基金会主席一职。 时隔 18 个月之后,斯托曼在一次活动中公开宣布要回归 FSF,然而这一举动并未得到很多社区的认可及欢迎,甚至不少组织和个人联合签名抵制他的回归。 如今,FSF 承认此前在 LibrePlane 大会上突然宣布 RMS 回归的处理方法非常糟糕,并对此表示歉意。同时,在最新的声明中,FSF 也指出,斯托曼已承认了自己的错误。虽然他的个人个性仍然困扰着一些人,但大多数董事会成员认为他的行为已经缓和,并相信他的想法将助力 FSF 未来的工作。
干货 -------- 前端面试题整理 打算找工作的看过来了 1.Doctype作用?严格模式与混杂模式如何区分?它们有何意义? 1)<!DICTYPE>声明位于文档中的最前面,处于<html>标签之前,告诉浏览器的解析器,用什么文档类型来规范解析这个文档。 2)严格模式的排版和js运作模式是以该浏览器支持的最高标准运行 3)在混杂模式中,页面以宽松的向后兼容的方式显示,模拟老式浏览器的行为以防止站点无法工作,DOCTYPE不存在 或格式不正确会导致文档以混杂模式呈现 2.HTML5 为什么只需要写 <!DOCTYPE HTML>? html5不基于SGML(标准通用语言),因此不需要对DTD(文档类型定义)进行引用,但需要doctype来规范浏览器的行为(让浏览器按照它们应该的方式运行) 而html4.01基于SGML,所以需要对DTD进行应用,才能告知浏览器文档所使用的文档类型。 3.行内元素有哪些?块级元素有哪些?空(void)元素有哪些? 1)css规范规定,每个元素都有display 属性,配档该元素的类型,每个元素都有默认的display值。 2)行内元素有:a b soan img input select strong(强调的语气) 块级元素有:div ul li ol dl dt dd h1 h2 h3... p 空元素(没有内容的HTML内容被称为空元素,空元素是在开始标签中关闭的)有: img input br hr link meta 4.页面导入样式时,使用link和@import有什么区别? 1)link属于XHTML标签,而@import是CSS提供的; 2)页面被加载的时,link会同事被加载,而@import引用的CSS会等到页面被加载完再加载; 3)import只有在IE5以上才能被识别,而link是XHTML标签,无兼容问题; 4)link 方式的样式的权重>@import的权重 5.常见的浏览器内核有哪些? IE浏览器的内核:Trident、 Mozilla的Gecko、 Chrome的Blink(WebKit的分支)、 Opera内核原为Presto,现为Blink 6.介绍一下你对浏览器内核的理解? 浏览器内核是浏览器最重要的或者说是最核心的部分。主要负责对网页语法的解释并渲染(显示)网页。 浏览器内核又可以分为两个部分(渲染引擎和js引擎) js引擎则是解析JavaScript语言,执行javascript语言来实现网页的动态效果。 渲染引擎负责取的网页的内容,整理讯息,以及计算网页的显示方式,然后哦会输出至显示器或者打印机。 7.简述一下你对HTML语义化的理解? HTML语义化是指根据内容的结构化(内容语义化),选择合适的标签(代码语义化)便于开发者阅读和写出更优雅的代码的同时让浏览器的爬虫和机器很好地解析。 HTML语义化的主要目的是: 1)为了在没有css的情况下,页面也能呈现出很好地内容结构、代码结构 2)有利于用户体验 3)有利于SEO和搜索引擎建立良好的沟通。 4)方便其他设备解析以意义的方式来渲染网页、 5)便于团队开发和维护,增加可读性。 8.HTML5的离线储存怎么使用 离线存储局势将一些源代码文件保存在本地,这样后续的页面重新加载将使用本地资源文件,在离线情况下可以继续访问web应用,同时通过一定的手法(更新相关文件或者使用相关 API),可以更新、删除离线存储等操作。
干货 -------- 前端面试题整理 打算找工作的看过来了 1.Doctype作用?严格模式与混杂模式如何区分?它们有何意义? 1)<!DICTYPE>声明位于文档中的最前面,处于<html>标签之前,告诉浏览器的解析器,用什么文档类型来规范解析这个文档。 2)严格模式的排版和js运作模式是以该浏览器支持的最高标准运行 3)在混杂模式中,页面以宽松的向后兼容的方式显示,模拟老式浏览器的行为以防止站点无法工作,DOCTYPE不存在 或格式不正确会导致文档以混杂模式呈现 2.HTML5 为什么只需要写 <!DOCTYPE HTML>? html5不基于SGML(标准通用语言),因此不需要对DTD(文档类型定义)进行引用,但需要doctype来规范浏览器的行为(让浏览器按照它们应该的方式运行) 而html4.01基于SGML,所以需要对DTD进行应用,才能告知浏览器文档所使用的文档类型。 3.行内元素有哪些?块级元素有哪些?空(void)元素有哪些? 1)css规范规定,每个元素都有display 属性,配档该元素的类型,每个元素都有默认的display值。 2)行内元素有:a b soan img input select strong(强调的语气) 块级元素有:div ul li ol dl dt dd h1 h2 h3... p 空元素(没有内容的HTML内容被称为空元素,空元素是在开始标签中关闭的)有: img input br hr link meta 4.页面导入样式时,使用link和@import有什么区别? 1)link属于XHTML标签,而@import是CSS提供的; 2)页面被加载的时,link会同事被加载,而@import引用的CSS会等到页面被加载完再加载; 3)import只有在IE5以上才能被识别,而link是XHTML标签,无兼容问题; 4)link 方式的样式的权重>@import的权重 5.常见的浏览器内核有哪些? IE浏览器的内核:Trident、 Mozilla的Gecko、 Chrome的Blink(WebKit的分支)、 Opera内核原为Presto,现为Blink 6.介绍一下你对浏览器内核的理解? 浏览器内核是浏览器最重要的或者说是最核心的部分。主要负责对网页语法的解释并渲染(显示)网页。 浏览器内核又可以分为两个部分(渲染引擎和js引擎) js引擎则是解析JavaScript语言,执行javascript语言来实现网页的动态效果。 渲染引擎负责取的网页的内容,整理讯息,以及计算网页的显示方式,然后哦会输出至显示器或者打印机。 7.简述一下你对HTML语义化的理解? HTML语义化是指根据内容的结构化(内容语义化),选择合适的标签(代码语义化)便于开发者阅读和写出更优雅的代码的同时让浏览器的爬虫和机器很好地解析。 HTML语义化的主要目的是: 1)为了在没有css的情况下,页面也能呈现出很好地内容结构、代码结构 2)有利于用户体验 3)有利于SEO和搜索引擎建立良好的沟通。 4)方便其他设备解析以意义的方式来渲染网页、 5)便于团队开发和维护,增加可读性。 8.HTML5的离线储存怎么使用 离线存储局势将一些源代码文件保存在本地,这样后续的页面重新加载将使用本地资源文件,在离线情况下可以继续访问web应用,同时通过一定的手法(更新相关文件或者使用相关 API),可以更新、删除离线存储等操作。
干货----前端就业技术需求 HTML&CSS 对Web标准的理解(结构、表现、行为)、浏览器内核、渲染原理、依赖管理、兼容性、CSS语法、层次关系,常用属性、布局、选择器、权重、盒模型、Hack、CSS预处理器、CSS3、Flexbox、CSS Modules、Document flow、BFC、HTML5(离线 & 存储、Histoy,多媒体、WebGL\SVG\Canvas) JavaScript 数据类型、运算、对象、Function、继承、闭包、作用域、事件、Prototype、RegExp、JSON、Ajax、DOM、BOM、内存泄漏、跨域、异步请求、模板引擎、模块化、Flux、同构、算法、ECMAScript6、Nodejs、HTTP 其他 主流MVVM框架(React\Vue\Angular)、Hybrid App\React Native\Weex、TypeScript、RESTFul、WEB安全、前端工程化、依赖管理、性能优化、重构、团队协作、可维护、易用性、SEO、UED、前端技术选型、快速学习能力等 掌握的知识点 1、DOM结构 —— 两个节点之间可能存在哪些关系以及如何在节点之间任意移动 2、DOM操作 —— 如何添加、移除、移动、复制、创建和查找节点等。 3、事件 —— 如何使用事件,以及IE和标准DOM事件模型之间存在的差别。 4、XMLHttpRequest —— 这是什么、怎样完整地执行一次GET请求、怎样检测错误。 5、严格模式与混杂模式 —— 如何触发这两种模式,区分它们有何意义。 6、盒模型 —— 外边距、内边距和边框之间的关系,及IE8以下版本的浏览器中的盒模型 7、块级元素与行内元素 —— 怎么用CSS控制它们、以及如何合理的使用它们 8、浮动元素 —— 怎么使用它们、它们有什么问题以及怎么解决这些问题。 9、HTML与XHTML —— 二者有什么区别,你觉得应该使用哪一个并说出理由。 10、JSON —— 作用、用途、设计结构
干货----前端就业技术需求 HTML&CSS 对Web标准的理解(结构、表现、行为)、浏览器内核、渲染原理、依赖管理、兼容性、CSS语法、层次关系,常用属性、布局、选择器、权重、盒模型、Hack、CSS预处理器、CSS3、Flexbox、CSS Modules、Document flow、BFC、HTML5(离线 & 存储、Histoy,多媒体、WebGL\SVG\Canvas) JavaScript 数据类型、运算、对象、Function、继承、闭包、作用域、事件、Prototype、RegExp、JSON、Ajax、DOM、BOM、内存泄漏、跨域、异步请求、模板引擎、模块化、Flux、同构、算法、ECMAScript6、Nodejs、HTTP 其他 主流MVVM框架(React\Vue\Angular)、Hybrid App\React Native\Weex、TypeScript、RESTFul、WEB安全、前端工程化、依赖管理、性能优化、重构、团队协作、可维护、易用性、SEO、UED、前端技术选型、快速学习能力等 掌握的知识点 1、DOM结构 —— 两个节点之间可能存在哪些关系以及如何在节点之间任意移动 2、DOM操作 —— 如何添加、移除、移动、复制、创建和查找节点等。 3、事件 —— 如何使用事件,以及IE和标准DOM事件模型之间存在的差别。 4、XMLHttpRequest —— 这是什么、怎样完整地执行一次GET请求、怎样检测错误。 5、严格模式与混杂模式 —— 如何触发这两种模式,区分它们有何意义。 6、盒模型 —— 外边距、内边距和边框之间的关系,及IE8以下版本的浏览器中的盒模型 7、块级元素与行内元素 —— 怎么用CSS控制它们、以及如何合理的使用它们 8、浮动元素 —— 怎么使用它们、它们有什么问题以及怎么解决这些问题。 9、HTML与XHTML —— 二者有什么区别,你觉得应该使用哪一个并说出理由。 10、JSON —— 作用、用途、设计结构
干货--java语法基础(二)科普来了 Hello Java 1、一般考虑开发效率的情况下可以使用IDE集成开发环境工具,目前练习一天采用的是记事本之类的文本编辑工具,Centos下使用的是vi/vim 2、创建一个文本文件修改名称为Hello.java 3、Java是一个面向对象的编程语言,所以编写程序的开始就是定义类的开始,如果类是public类型的类,则类名称必须和文件名称一致(不包括后缀,包括大小写)4、在命令行下执行编译,编译操作可以将程序.java转换为后缀为.class的二进制文件(字节码文件)。名称和源代码文件一致,只是后缀为.class的二进制文件。如果有语法错误则返回文本编辑工具进行修改,直到编译通过生成一个.class文件,文件名称和.java名称一致 javac.exe就是编译器 javac Hello.java【源代码文件名称]编译,将源代码转换为虚拟机可以识别的中间性质语言,一般生成一个同名的后缀为class的文件【二进制文件,字节码文件】,这里就是跨平台的原理】 5、执行程序,语法为java 类名称。例如java Hello,注意这里是类名称,不是文件名称,所以没有后缀.class java.exe就是解释器Java文件的类型 Java文件的类型有两种: - 扩展名为java的文件:是Java源文件,属于编译之前的纯文本文件,存储java源代码 - 扩展名为class的文件:是Java类文件,属于编译之后的二进制文件,存储字节码。 Java的编译运行原理首先编写java源文件,然后编译成class类文件【javac,ML文件--跨平台】,然后通过虚拟机解释成机器码到硬件执行。 Java既不是完全编译型,也不是完全解释型,是半编译半解释的。特殊例外。 Java语言区分大小写:不管是数据还是标识符或者关键字都区分大小写,例如public不能写成Public,“abc”不能写成“ABC”,inti不能写成INTI等 main方法作用:这是程序的入口方法,是由虚拟机自动调用的----方法签名不能出错,否则程序不能运行 public static void main(String[] args) java虚拟机与运行平台 java程序语言必须先经过编译,然后再利用解释的方式来运行。一个java程序先要使用编译器compile将其转化成与平台无关(Windows、DOS或Linux操作系统就是一种平台)的机器码,把这种机器码称为字节码byte-codes。然后通过解释器interpreter可以解释并运行java的字节码 Java能够解决互联网应用的安全和可移植性的关键在于Java编译器的编译结果不是可执行代码,而是字节码。字节码是一系列设计用来由名为Java虚拟机的Java运行时系统执行的高度优化的指令。Java虚拟机值一个字节码的解释器。 字节码的执行的三个大步骤 由类装载器负责把类文件加载到java虚拟机中,在此过程需要检验该类文件是否符合类文件规范 字节码校验器检查该类文件的代码中是否存在着某些非法操作 如果字节码校验器检验通过,由java解释器负责把该类文件解释成为机器码进行执行 java虚拟机采用的是沙箱运行模式,即把java程序的代码和数据都限制在一定内存空间里执行,不允许程序访问该内存空间外的内存 总结Java虚拟机中类加载的过程:系统会通过加载、连接、初始化三步来实现这个类进行初始化。 链接包括验证、准备以及解析三个阶段。(1)验证阶段。主要的目的是确保被加载的类满足Java虚拟机规范,不会造成安全错误。(2)准备阶段。负责为类的静态成员分配内存,并设置默认初始值。(3)解析阶段。将类的二进制数据中的符号引用替换为直接引用。 java字节码特性的最大的好处就是可以使java开发的程序跨平台运行,也就是说只要某种平台上配备了java虚拟机,它就可以运行java的字节码文件。“一次编写,到处运行”就是对java语言特性的极好描述
坊间新闻篇---Java都到16了,为什么都还在用8,是越做越烂了? 前几日 Java 16 发布了,发现还是有童鞋不太了解Java目前的版本机制,所以看到了这样的留言:那么为什么大家都还在用 Java 8 呢?从这张图可以一目了然,大家平时最喜欢的是什么?当然是白嫖啦~ 而从JDK 8u211开始往后的版本,可都是需要商业收费的,所谓的商业收费,就是你自己开发程序使用不打紧,但是一旦当你开发的程序如果用于商业用途,也就是你的程序给你赚钱了,那此时此刻Oracle可是要跟你收费的,你的JDK的使用需要缴费获得授权才是合法的。 有的人会问,如果我不缴费直接用呢?当然,Oracle也是不知道这个事情的,天底下那么多程序员他不可能每个都时刻紧盯有没有付费。 不过万一你真的有那么点才华,你的产品越做越大,越被人熟知的话,总有一天树大招风会引起Oracle的注意,指不定哪天就来跟你打打知识产权的官司。毕竟这是Oracle的惯用手法了,小编毕业前在某视频网站(已被收购)实习的时候,就听闻有项目组因使用盗版Oarcle而收到律师信,最后被迫买了几个Lisence的教训。 这或许就是很多人用老Java 8的原因。 图中我们还可以看到,最后免费的是8u201和8u202两个版本,其实他们可以说都是拥有不同版本号的最后一个免费版本。或许很多小伙伴对这两个版本的区别也傻傻分不清,且让小编为你一一道来: Oracle从2014年发布了Java SE 7u71版本之后,每当他在发布JDK关键补丁更新时,一般会同步发一个相应的补丁集更新版本。 关键补丁一般用代号CPUs:Critical Patch Updates表示,补丁集更新版本用代号PSUs:Patch Set Updates表示,而两者的区别在于CPUs往往包含安全漏洞修复和重要漏洞修复,是需要所有用户都及时升级更新的,版本号一般采用奇数编号。 当然了,Oracle还算一个人性化的公司,考虑到一部分码农既不想付费(主要没有那么多商业头脑,可能只是单纯的编码),又想跟上当下最新潮的JDK功能特性,所以Oracle其实还提供一个完全免费开源的版本 Open JDK给个人用户使用。在功能特性上, Open JDK与最新版本的Oracle JDK基本没什么区别。
坊间新闻篇---Java都到16了,为什么都还在用8,是越做越烂了么? 前几日 Java 16 发布了,发现还是有童鞋不太了解Java目前的版本机制,所以看到了这样的留言:那么为什么大家都还在用 Java 8 呢?从这张图可以一目了然,大家平时最喜欢的是什么?当然是白嫖啦~ 而从JDK 8u211开始往后的版本,可都是需要商业收费的,所谓的商业收费,就是你自己开发程序使用不打紧,但是一旦当你开发的程序如果用于商业用途,也就是你的程序给你赚钱了,那此时此刻Oracle可是要跟你收费的,你的JDK的使用需要缴费获得授权才是合法的。 有的人会问,如果我不缴费直接用呢?当然,Oracle也是不知道这个事情的,天底下那么多程序员他不可能每个都时刻紧盯有没有付费。 不过万一你真的有那么点才华,你的产品越做越大,越被人熟知的话,总有一天树大招风会引起Oracle的注意,指不定哪天就来跟你打打知识产权的官司。毕竟这是Oracle的惯用手法了,小编毕业前在某视频网站(已被收购)实习的时候,就听闻有项目组因使用盗版Oarcle而收到律师信,最后被迫买了几个Lisence的教训。 这或许就是很多人用老Java 8的原因。 图中我们还可以看到,最后免费的是8u201和8u202两个版本,其实他们可以说都是拥有不同版本号的最后一个免费版本。或许很多小伙伴对这两个版本的区别也傻傻分不清,且让小编为你一一道来: Oracle从2014年发布了Java SE 7u71版本之后,每当他在发布JDK关键补丁更新时,一般会同步发一个相应的补丁集更新版本。 关键补丁一般用代号CPUs:Critical Patch Updates表示,补丁集更新版本用代号PSUs:Patch Set Updates表示,而两者的区别在于CPUs往往包含安全漏洞修复和重要漏洞修复,是需要所有用户都及时升级更新的,版本号一般采用奇数编号。 当然了,Oracle还算一个人性化的公司,考虑到一部分码农既不想付费(主要没有那么多商业头脑,可能只是单纯的编码),又想跟上当下最新潮的JDK功能特性,所以Oracle其实还提供一个完全免费开源的版本 Open JDK给个人用户使用。在功能特性上, Open JDK与最新版本的Oracle JDK基本没什么区别。
干货--java语法基础科普来了 Java是一种简单的、跨平台的、面向对象的、分布式的、解释的、健壮的安全的、结构的中立的、可移植的、性能很优异的多线程的、动态的语言。当1995年SUN推出Java语言之后,全世界的目光都被这个神奇的语言所吸引。 2020年是Java诞生的第25个年头。Oracle表示目前java仍然流行编程语言,广泛使用在企业中。目前全世界有超过69%的专职开发人员使用Java,全世界有510亿台活动Java虚拟机JVM在部署中,目前Java主要被用于数据分析、数据管理、大数据、DevOps、移动、持续开发工具和聊天机器人等服务。 1、什么是程序 程序=算法+数据结构 为什么需要编程语言 用户:有亟待解决的问题--问题空间,使用自然语言进行描述 计算机:能够解决问题--解空间。计算机能够理解的语言和人类的自然语言相去甚远。要使用计算解决问题则需要采用某种方式将问题空间的内容映射到计算解空间中去,这里能够采用的方法无非是人迁就机器(机器语言-->芯片级后巷的微码语言-->汇编语言)或者机器迁就人(高级语言)。可以将解空间能够提供的能力抽象出来使得更接近人类的语言--这就是计算机编程语言,所谓编程无非是使用这种语言描述问题,并按照逻辑生成一个求解过程。使用高级语言所编写的程序需要通过编译器或者解释器将其转换为机器代码才能真正的执行。 2、Java概述 一种编程语言、一种开发环境、一种应用环境、一种部署环境 Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言。Java技术具有卓越的通用性、高效性、平台移植性和安全性(以牺牲执行效率为代价换取了高安全性),广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。 Java完全面向对象的编程语言,主要用于Internet应用程序 Java 既是一种解释执行的语言(先编译后解释执行),也是一种编译执行的语言。 Sun公司对Java编程语言的解释是:Java编程语言是个简单、面向对象、分布式、解释性、健壮(鲁棒性)、安全与系统无关、可移植、高性能、多线程和静态的语言(从JDK8开始引入了一些动态语言的特性) Java平台是基于Java语言的平台。这样的平台非常流行。因此微软公司推出了与之竞争的.NET平台以及模仿Java的C#语言 首先将源代码编译成二进制字节码(bytecode不是机器语言),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了【一次编译、到处执行】的跨平台特性。不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了Java程序的性能 Java是一个开发环境,Java技术包含一系列的工具:编译器,解释器,文档生成工具,打包工具等。另外由Java 2 SDK提供的JRE还包括了一个完整的Java集合,如基本语言类,GUI控件类等。 Java是一个运行环境,它可以从SUN公司提供的Java 2 SDK中来搭建运行环境。
干货--java语法基础科普来了 Java是一种简单的、跨平台的、面向对象的、分布式的、解释的、健壮的安全的、结构的中立的、可移植的、性能很优异的多线程的、动态的语言。当1995年SUN推出Java语言之后,全世界的目光都被这个神奇的语言所吸引。 2020年是Java诞生的第25个年头。Oracle表示目前java仍然流行编程语言,广泛使用在企业中。目前全世界有超过69%的专职开发人员使用Java,全世界有510亿台活动Java虚拟机JVM在部署中,目前Java主要被用于数据分析、数据管理、大数据、DevOps、移动、持续开发工具和聊天机器人等服务。 1、什么是程序 程序=算法+数据结构 为什么需要编程语言 用户:有亟待解决的问题--问题空间,使用自然语言进行描述 计算机:能够解决问题--解空间。计算机能够理解的语言和人类的自然语言相去甚远。要使用计算解决问题则需要采用某种方式将问题空间的内容映射到计算解空间中去,这里能够采用的方法无非是人迁就机器(机器语言-->芯片级后巷的微码语言-->汇编语言)或者机器迁就人(高级语言)。可以将解空间能够提供的能力抽象出来使得更接近人类的语言--这就是计算机编程语言,所谓编程无非是使用这种语言描述问题,并按照逻辑生成一个求解过程。使用高级语言所编写的程序需要通过编译器或者解释器将其转换为机器代码才能真正的执行。 2、Java概述 一种编程语言、一种开发环境、一种应用环境、一种部署环境 Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言。Java技术具有卓越的通用性、高效性、平台移植性和安全性(以牺牲执行效率为代价换取了高安全性),广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。 Java完全面向对象的编程语言,主要用于Internet应用程序 Java 既是一种解释执行的语言(先编译后解释执行),也是一种编译执行的语言。 Sun公司对Java编程语言的解释是:Java编程语言是个简单、面向对象、分布式、解释性、健壮(鲁棒性)、安全与系统无关、可移植、高性能、多线程和静态的语言(从JDK8开始引入了一些动态语言的特性) Java平台是基于Java语言的平台。这样的平台非常流行。因此微软公司推出了与之竞争的.NET平台以及模仿Java的C#语言 首先将源代码编译成二进制字节码(bytecode不是机器语言),然后依赖各种不同平台上的虚拟机来解释执行字节码。从而实现了【一次编译、到处执行】的跨平台特性。不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了Java程序的性能 Java是一个开发环境,Java技术包含一系列的工具:编译器,解释器,文档生成工具,打包工具等。另外由Java 2 SDK提供的JRE还包括了一个完整的Java集合,如基本语言类,GUI控件类等。 Java是一个运行环境,它可以从SUN公司提供的Java 2 SDK中来搭建运行环境。
Web前端和后端开发的区别和要求? Web前端和后端开发的区别和要求 有时候自己会分不清,其实是因为前后端都了解,类似于全栈工程师,但又什么都不是很精通。那到底什么是前端、后端呢,我整理了一些企业要求级别的前端/后端基础,开发框架等。 Web前端开发 什么是 Web 前端? Web前端,顾名思义是来做web的前端页面的。这里所说的前端泛指web前端,也就是在web应用中用户可以看得见碰得着的东西。包括web页面的结构、web的外观视觉表现以及web层面的交互实现。web前端分为网页设计师、网页美工、web前端开发工程师。首先网页设计师是对网页的架构、色彩以及网站的整体页面代码,负责网页美工只针对UI这块儿的东西,比如网站是否做的漂亮。web前端开发工程师是负责交互设计的,需要和程序猿进行交互设计的配合。 Web前端开发需要掌握的技术: 1.熟练掌握前端开发技术(HTML5、JS、JSON、XHTML、CSS3),了解各项技术的相关标准 2.掌握Ajax异步编程,能够写出高性能、可复用的前端组件; 3.对OO、MVC、MVVM等编程思想、前端框架有深刻理解,熟练掌握一个前端框架(常用前端框架 Vuejs,AngularJS,React,Bootstrap,QUICK UI,移动端有:Frozen UI,weUI ,SUI,MUI,AUI)了解其原理(框架有很多,选择两三个主流的框架,熟练,深度了解才可以); 4.善于Web性能优化,可访问性、对SEO等有良好的体验;理解表现层与数据层分离的概念、 Web语义化(这些也是在找工作中,很有用的加分项); 5.了解前端安全机制,熟悉HTTP协议以及浏览器缓存策略; 6.熟悉常见JS开发框架源码实现,(如:prototype、jQuery、Mootools,Ext, Dojo,underscore、YUI、Kissy),至少熟练一种(当然也不要去选一些用的人很少的框架,要明白大项目都是团队做,不能自己搞一套); 7.拥有良好的代码编写,设计文档撰写的经验,熟练使用Git等版本控制工具; 8.对常见的浏览器兼容问题有清晰的理解,并有可靠的解决方案;如IE6/7/8/9、 Firefox、Safari、Chrome; 9.具有较高的审美(这个很重要,多去见识一些模板,高端的项目,就能感觉到有多大的差距)
Web前端和后端开发的区别和要求 Web前端和后端开发的区别和要求 有时候自己会分不清,其实是因为前后端都了解,类似于全栈工程师,但又什么都不是很精通。那到底什么是前端、后端呢,我整理了一些企业要求级别的前端/后端基础,开发框架等。 Web前端开发 什么是 Web 前端? Web前端,顾名思义是来做web的前端页面的。这里所说的前端泛指web前端,也就是在web应用中用户可以看得见碰得着的东西。包括web页面的结构、web的外观视觉表现以及web层面的交互实现。web前端分为网页设计师、网页美工、web前端开发工程师。首先网页设计师是对网页的架构、色彩以及网站的整体页面代码,负责网页美工只针对UI这块儿的东西,比如网站是否做的漂亮。web前端开发工程师是负责交互设计的,需要和程序猿进行交互设计的配合。 Web前端开发需要掌握的技术: 1.熟练掌握前端开发技术(HTML5、JS、JSON、XHTML、CSS3),了解各项技术的相关标准 2.掌握Ajax异步编程,能够写出高性能、可复用的前端组件; 3.对OO、MVC、MVVM等编程思想、前端框架有深刻理解,熟练掌握一个前端框架(常用前端框架 Vuejs,AngularJS,React,Bootstrap,QUICK UI,移动端有:Frozen UI,weUI ,SUI,MUI,AUI)了解其原理(框架有很多,选择两三个主流的框架,熟练,深度了解才可以); 4.善于Web性能优化,可访问性、对SEO等有良好的体验;理解表现层与数据层分离的概念、 Web语义化(这些也是在找工作中,很有用的加分项); 5.了解前端安全机制,熟悉HTTP协议以及浏览器缓存策略; 6.熟悉常见JS开发框架源码实现,(如:prototype、jQuery、Mootools,Ext, Dojo,underscore、YUI、Kissy),至少熟练一种(当然也不要去选一些用的人很少的框架,要明白大项目都是团队做,不能自己搞一套); 7.拥有良好的代码编写,设计文档撰写的经验,熟练使用Git等版本控制工具; 8.对常见的浏览器兼容问题有清晰的理解,并有可靠的解决方案;如IE6/7/8/9、 Firefox、Safari、Chrome; 9.具有较高的审美(这个很重要,多去见识一些模板,高端的项目,就能感觉到有多大的差距)
干货-----Java基础 代码: 1.Java编写代码的基本结构 /修饰符 类关键字 类名{}/ public class day01 { /* * 类:具体实物的抽象,模板 * 对象:是类的实例 * 方法:行为 * 实例变量:特征码 * */ /修饰符 参数类型 名称/ private String yanse; /修饰符 关键字 返回值 方法名称(参数类型 名称){}/ public static void main(String[] args) { System.out.printf(“how”); } } 2.String的一些基本方法及使用 public class day02 { //变小写 public static char firstLowerCase(char a){ a=(char)(a+32); return a; } //变大写 public static char firstUpperCase(char a){ a=(char)(a-32); return a; } public static void main(String[] args){ String str=“where you now”; //长度 System.out.println(“length:”+str.length()); //截取 System.out.println(“substr:”+str.substring(0,13)); //获取字符位置(从0开始) System.out.println(“index:”+str.indexOf(“you”)); //变大写 System.out.println(“upper:”+str.toUpperCase()); //变小写 System.out.println(“lower:”+str.toLowerCase()); //获取字符串中的345 String str1=“232423424_hhhh_345”; System.out.println(“最后三个数字:”+str1.substring(str1.lastIndexOf("_")+1)); //将字符串分为字符数组 String str2=“111,222,333,444”; String str3[]=str2.split(","); //普通for语句 for(int i=0;i<str3.length;i++){ System.out.println(str3[i]); } //增强for语句 for(String x:str3){ System.out.println(x); } //将str字符串中所有单词首字母大写 String[] str4=str.split(" “); for(String x:str4){ System.out.print(x.substring(0,1).toUpperCase()+x.substring(1)+” “); } //将str中单词首字母换成大写 String str5=str; for(String x:str4){ //replace更换 str5=str5.replace(x.substring(0,1),x.substring(0,1).toUpperCase()); } System.out.println(str5); //使用方法将首字母变成大写 str=”"; for(String x:str4){ str +=firstUpperCase(x.charAt(0))+x.substring(1)+" "; } System.out.println(str); } } Java正则表达式的应用 package com.example.chen_gao_pan.day2021_1_20; import java.util.regex.Pattern; public class CHEN_GAO_PAN_20_Q1 {
干货-----Java基础 代码: 1.Java编写代码的基本结构 /修饰符 类关键字 类名{}/ public class day01 { /* * 类:具体实物的抽象,模板 * 对象:是类的实例 * 方法:行为 * 实例变量:特征码 * */ /修饰符 参数类型 名称/ private String yanse; /修饰符 关键字 返回值 方法名称(参数类型 名称){}/ public static void main(String[] args) { System.out.printf(“how”); } } 2.String的一些基本方法及使用 public class day02 { //变小写 public static char firstLowerCase(char a){ a=(char)(a+32); return a; } //变大写 public static char firstUpperCase(char a){ a=(char)(a-32); return a; } public static void main(String[] args){ String str=“where you now”; //长度 System.out.println(“length:”+str.length()); //截取 System.out.println(“substr:”+str.substring(0,13)); //获取字符位置(从0开始) System.out.println(“index:”+str.indexOf(“you”)); //变大写 System.out.println(“upper:”+str.toUpperCase()); //变小写 System.out.println(“lower:”+str.toLowerCase()); //获取字符串中的345 String str1=“232423424_hhhh_345”; System.out.println(“最后三个数字:”+str1.substring(str1.lastIndexOf("_")+1)); //将字符串分为字符数组 String str2=“111,222,333,444”; String str3[]=str2.split(","); //普通for语句 for(int i=0;i<str3.length;i++){ System.out.println(str3[i]); } //增强for语句 for(String x:str3){ System.out.println(x); } //将str字符串中所有单词首字母大写 String[] str4=str.split(" “); for(String x:str4){ System.out.print(x.substring(0,1).toUpperCase()+x.substring(1)+” “); } //将str中单词首字母换成大写 String str5=str; for(String x:str4){ //replace更换 str5=str5.replace(x.substring(0,1),x.substring(0,1).toUpperCase()); } System.out.println(str5); //使用方法将首字母变成大写 str=”"; for(String x:str4){ str +=firstUpperCase(x.charAt(0))+x.substring(1)+" "; } System.out.println(str); } } Java正则表达式的应用 package com.example.chen_gao_pan.day2021_1_20; import java.util.regex.Pattern; public class CHEN_GAO_PAN_20_Q1 {
坊间新闻--滴滴副总裁章文蒿离职继续担任滴滴技术委员会名誉主席 1 月 20 日,滴滴内部发公告称将成立技术委员会,CTO 张博担任技术委员会主席,橙心优选 CTO 赖春波、国际化 CTO 卜峥担任副主席。技术委员会将在稳定性保障和中后台降本增效进行持续投入。 公告同时显示,高级副总裁章文嵩将于近期离职。他负责的基础平台工作,将由智能中台负责人杨毅接任;滴滴云将并入企业服务事业群,由蔡晓鸥负责。 离职之后,章文蒿仍将继续担任滴滴技术委员会名誉主席。 章文嵩于 2016 年从阿里云离职加入滴滴,曾负责基础平台、智慧交通、滴滴云等工作。章文嵩将继续担任滴滴技术委员会名誉主席,为滴滴技术体系建设提供指导和帮助。 据内部多名人士表示,这一变动或与 2020 年 9 月 30 日滴滴发生大面积宕机事故有关。 当时网约车、出租车等多个产品受到影响。此外,去年一名直接向章文嵩汇报的高级总监,因出现重大贪腐,被警方带走。 近一年来,滴滴有多名高管离职,包括滴滴高级副总裁兼普惠出行与服务事业群总经理付军华;技术副总裁、科技生态与发展部负责人郄小虎;国际化事业部 COO 仇广宇;技术副总裁、AI 实验室负责人叶杰平;副总裁兼网约车平台公司执行总裁陈熙等。相关职位由内部培养的管理者接任。这或表明,滴滴在做管理层更新迭代。 一直以来,滴滴的困境不在对手,而是自己。网约车是个高频、低毛利业务,降本增效会是未来一直存在的课题。而前提是,组织要足够高效。
坊间新闻--滴滴副总裁章文蒿离职继续担任滴滴技术委员会名誉主席 1 月 20 日,滴滴内部发公告称将成立技术委员会,CTO 张博担任技术委员会主席,橙心优选 CTO 赖春波、国际化 CTO 卜峥担任副主席。技术委员会将在稳定性保障和中后台降本增效进行持续投入。 公告同时显示,高级副总裁章文嵩将于近期离职。他负责的基础平台工作,将由智能中台负责人杨毅接任;滴滴云将并入企业服务事业群,由蔡晓鸥负责。 离职之后,章文蒿仍将继续担任滴滴技术委员会名誉主席。 章文嵩于 2016 年从阿里云离职加入滴滴,曾负责基础平台、智慧交通、滴滴云等工作。章文嵩将继续担任滴滴技术委员会名誉主席,为滴滴技术体系建设提供指导和帮助。 据内部多名人士表示,这一变动或与 2020 年 9 月 30 日滴滴发生大面积宕机事故有关。 当时网约车、出租车等多个产品受到影响。此外,去年一名直接向章文嵩汇报的高级总监,因出现重大贪腐,被警方带走。 近一年来,滴滴有多名高管离职,包括滴滴高级副总裁兼普惠出行与服务事业群总经理付军华;技术副总裁、科技生态与发展部负责人郄小虎;国际化事业部 COO 仇广宇;技术副总裁、AI 实验室负责人叶杰平;副总裁兼网约车平台公司执行总裁陈熙等。相关职位由内部培养的管理者接任。这或表明,滴滴在做管理层更新迭代。 一直以来,滴滴的困境不在对手,而是自己。网约车是个高频、低毛利业务,降本增效会是未来一直存在的课题。而前提是,组织要足够高效。
看过来--11条好的编程习惯 取个好名字 不管是包名,类名还是函数方法和变量,不要随意命名,像什么 foo, bar, a,b,c 这种没有任何意义的名字会污染你的整个代码 先构思再写代码 拿到一个需求最开始是分析需求,拆解问题,将大问题拆解为更小问题,思路清晰了代码写起来才快。 能用Google就不用百度 百度搜出来的东西一是广告太多,难以辨识,二是质量太差,容易被带偏。 写注释 “最好的注释就是代码本身”,这句话不是你不写注释的借口,相信我你的代码时间久了自己都不知道什么意思。必要的地方加上注释不仅方便别人理解你的代码,也方便自己。 写单元测试 没有单元测试的代码不是跑不起来,而是无法对预期结果做出正确的承诺。单元测试是个短期内投入回报比低,但是长期投入回报比巨大的事情。无论是定位问题还是代码重构,有单元测试犹如系上保险带走钢丝。 dont repeat yourself 重复的代码不要出现两次以上,学会将类似的代码进行封装,减少代码的冗余。 这句话的另一层意思不不要重复造轮子,有成熟的方案就直接用,不要什么都想着自己实现。 做好版本管理 git 是个好东西 不炫技 不要代码里面强加炫技的代码,按规范来写 多阅读优秀代码 学习优秀的开源代码,这是让自己进步最好的捷径,不一定研究透一个完整的框架,哪怕是管中窥豹也比不去看有收获。 多读书 多读点经典书籍,评价是否经典可以去豆瓣看评分,8.0以上的书籍都值得读 学好英语 英语再差也要做到能熟练阅读英文文档的水平,不然每天只能看二手资料,看翻译的东西不仅不严谨而且时效性很差,毕竟技术日新月异。
看过来--11条好的编程习惯 取个好名字 不管是包名,类名还是函数方法和变量,不要随意命名,像什么 foo, bar, a,b,c 这种没有任何意义的名字会污染你的整个代码 先构思再写代码 拿到一个需求最开始是分析需求,拆解问题,将大问题拆解为更小问题,思路清晰了代码写起来才快。 能用Google就不用百度 百度搜出来的东西一是广告太多,难以辨识,二是质量太差,容易被带偏。 写注释 “最好的注释就是代码本身”,这句话不是你不写注释的借口,相信我你的代码时间久了自己都不知道什么意思。必要的地方加上注释不仅方便别人理解你的代码,也方便自己。 写单元测试 没有单元测试的代码不是跑不起来,而是无法对预期结果做出正确的承诺。单元测试是个短期内投入回报比低,但是长期投入回报比巨大的事情。无论是定位问题还是代码重构,有单元测试犹如系上保险带走钢丝。 dont repeat yourself 重复的代码不要出现两次以上,学会将类似的代码进行封装,减少代码的冗余。 这句话的另一层意思不不要重复造轮子,有成熟的方案就直接用,不要什么都想着自己实现。 做好版本管理 git 是个好东西 不炫技 不要代码里面强加炫技的代码,按规范来写 多阅读优秀代码 学习优秀的开源代码,这是让自己进步最好的捷径,不一定研究透一个完整的框架,哪怕是管中窥豹也比不去看有收获。 多读书 多读点经典书籍,评价是否经典可以去豆瓣看评分,8.0以上的书籍都值得读 学好英语 英语再差也要做到能熟练阅读英文文档的水平,不然每天只能看二手资料,看翻译的东西不仅不严谨而且时效性很差,毕竟技术日新月异。
前后端永不过时的技能? 无论是前端工程师,还是后端工程师,随着技术的更新换代都会面临危机。 前端工程师: 前端的端,是非常广泛的,目前有 IOS,Android,Chrome,IE,小程序,未来还会有全息影像的设备、穿戴设备、人机接口等技术,最终都将归于端内。即使你是大前端,也不可能从都到尾负责所有的终端产品的开发,你一样要和别人去配合完成自己最擅长的内容。而这些端会随着技术的进步可能会被新的端取代,比如以前的 windows Phone,诺基亚,及正在走向衰落的 IE,那么与之对应的技术栈也将被淘汰。 要成为大前端,原来的 Web 工程师需要学习原生应用的开发,移动工程师则需要进入 JavaScript 这个极为复杂的 Web 领域,除此之外,有许多前端框架层出不穷,JQuery,Bootstrap,Vue,Reac,Angular,后面还有更多 ui 框架,以有生之年逐无尽之技术,做为前端的你能学的过来么? 除了技术,大前端还需要你能更好的理解产品和用户体验,并与产品经理、设计师和交互体验师进行顺畅的沟通,这里面要学习的知识一点也不比技术领域少。 后端工程师: 早期的编程大概是这样的:2000 年左右时使用 Perl 写 CGI 程序(Perl + HTML 混合编程),后来陆续学 JavaScript、Java、C#、Python、Objective C、Go 等技术,早期的项目或产品基本上都是从前做到后,除了设计之外,从切图、前端页面到业务逻辑、持久化、连接池、异常、缓存、日志、集群等等,基本上都要自己参与编程或独立实现,在那个年代,你很难以专业细分的方式运作项目,因为根本找不到那么多程序员。 现在的情况完全不一样了,以前都是需要后端工程师或者架构师搞定的事情,现在,云计算厂商都替你搞定了。比如阿里云的虚拟主机(ECS)、数据库(RDS)、负载均衡(SLB)、文件存储(OSS)、Redis、CDN、日志、NAS 等服务。后端工程师可以看看云计算厂商提供的基础服务范畴,看看有没有覆盖你的知识和技能领域。类似亚马逊阿里云这样的云计算厂商,上千的技术人员除了满足自己系统的需求,其他资源都会投入到公共云的建设上,这些优秀的工程师做出来基础服务,无论是稳定性还是扩展性,都会大大超过创业公司里几个人捣腾出来的技术组件。而且这是一种不可逆转的趋势。 看到这里,你是否有种危机呢,大家都用云了,还要后端工程师干吗?
前后端永不过时的技能? 无论是前端工程师,还是后端工程师,随着技术的更新换代都会面临危机。 前端工程师: 前端的端,是非常广泛的,目前有 IOS,Android,Chrome,IE,小程序,未来还会有全息影像的设备、穿戴设备、人机接口等技术,最终都将归于端内。即使你是大前端,也不可能从都到尾负责所有的终端产品的开发,你一样要和别人去配合完成自己最擅长的内容。而这些端会随着技术的进步可能会被新的端取代,比如以前的 windows Phone,诺基亚,及正在走向衰落的 IE,那么与之对应的技术栈也将被淘汰。 要成为大前端,原来的 Web 工程师需要学习原生应用的开发,移动工程师则需要进入 JavaScript 这个极为复杂的 Web 领域,除此之外,有许多前端框架层出不穷,JQuery,Bootstrap,Vue,Reac,Angular,后面还有更多 ui 框架,以有生之年逐无尽之技术,做为前端的你能学的过来么? 除了技术,大前端还需要你能更好的理解产品和用户体验,并与产品经理、设计师和交互体验师进行顺畅的沟通,这里面要学习的知识一点也不比技术领域少。 后端工程师: 早期的编程大概是这样的:2000 年左右时使用 Perl 写 CGI 程序(Perl + HTML 混合编程),后来陆续学 JavaScript、Java、C#、Python、Objective C、Go 等技术,早期的项目或产品基本上都是从前做到后,除了设计之外,从切图、前端页面到业务逻辑、持久化、连接池、异常、缓存、日志、集群等等,基本上都要自己参与编程或独立实现,在那个年代,你很难以专业细分的方式运作项目,因为根本找不到那么多程序员。 现在的情况完全不一样了,以前都是需要后端工程师或者架构师搞定的事情,现在,云计算厂商都替你搞定了。比如阿里云的虚拟主机(ECS)、数据库(RDS)、负载均衡(SLB)、文件存储(OSS)、Redis、CDN、日志、NAS 等服务。后端工程师可以看看云计算厂商提供的基础服务范畴,看看有没有覆盖你的知识和技能领域。类似亚马逊阿里云这样的云计算厂商,上千的技术人员除了满足自己系统的需求,其他资源都会投入到公共云的建设上,这些优秀的工程师做出来基础服务,无论是稳定性还是扩展性,都会大大超过创业公司里几个人捣腾出来的技术组件。而且这是一种不可逆转的趋势。 看到这里,你是否有种危机呢,大家都用云了,还要后端工程师干吗?
首页 1 2 下一页