程序员

【转】DevOps到底是什么意思?

谁说我不能喝 提交于 2019-12-12 13:17:31
提到DevOps这个词,我相信很多人一定不会陌生。 作为一个热门的概念,DevOps近年来频频出现在各大技术社区和媒体的文章中,备受行业大咖的追捧,也吸引了很多吃瓜群众的围观。 那么,DevOps是什么呢? 有人说它是一种方法,也有人说它是一种工具,还有人说它是一种思想。更有甚者,说它是一种哲学。 越说越玄乎,感觉都要封神啦!DevOps这玩意真的有那么夸张吗?它到底是干嘛用的?为什么行业里都会对它趋之如骛呢? 今天这篇文章,小枣君就和大家好好聊一聊这个DevOps。 DevOps的起源 这个故事有点长,从头开始讲起吧。 上个世纪40年代,世界上第一台计算机诞生。从诞生之日起,它就离不开程序(Program)的驱动。而负责编写程序的人,就被称为“程序员”(Programmer)。 程序员是计算机的驾驭者,也是极其稀缺的人才。那个时候,只有高学历、名校出身的人,才有资格成为程序员,操控计算机。 随着人类科技的不断发展,PC和Internet陆续问世,我们进入了全民拥抱信息化的时代。越来越多的企业开始将计算机作为办公用的工具,用以提升生产力。而普通个人用户也开始将计算机作为娱乐工具,用以改善生活品质。 于是,计算机的程序,开始变成了一门生意。程序,逐步演进为“软件(software)”,变成了最赚钱的产品之一。 在软件产业里,程序员有了更专业的称谓,叫做“软件开发工程师

好程序员大数据教程分享实用的大数据之数组

别等时光非礼了梦想. 提交于 2019-12-11 15:28:48
好程序员大数据教程分享实用的大数据之数组 1.5.1 数组的定义与元素访问 数组是一个容器, 是一个用来存储指定数据类型的容器 注意事项: 数组是一个定长的容器, 一旦实例化完成, 长度不能修改 名词解释: 数组长度: 指的就是这个容器的容量, 表示这个数组中能存储多少个数据 元素: 指的就是数组中存储的数据 下标: 某一个元素在数组中的一个位置索引 遍历数组: 依次获取到数组中的每一个元素 数组的元素访问 通过下标来访问的, 数组中元素的下标是从0开始的 数组中元素的下标: [0, 数组.length - 1] 注意: 在访问数组中元素的时候, 注意下标的范围, 不要越界!!! 遍历数组: 使用循环遍历下标的方式 int[] array = {1, 2, 3}; for (int index = 0; index < array.length; index++) { System.out.println(array[index]); } 使用增强for循环 int[] array = {1, 2, 3}; for (int ele : array) { System.out.println(ele); } 1.5.2 数组的内存分析 1.5.3 数组的常见操作 1.5.4 数组排序 选择排序 固定一个下标, 然后用这个下标对应的元素依次和后面每一个下标的元素进行比较 int[]

好程序员大数据实用教程之面向对象进阶

别等时光非礼了梦想. 提交于 2019-12-11 15:20:31
好程序员大数据实用教程之面向对象进阶:包的创建与使用 是对一个程序中指定功能的部分代码进行包装 ####构造方法 是一个方法 特殊点: 构造方法没有返回值,不是指的返回值类型是void,而是根本就不写返回值类型 方法名字和类名相同 构造方法不能用static来修饰 构造方法调用的时机: 通俗来讲:是在实例化一个对象的时候调用的 一般情况下,我们在构造方法中做什么: 对对象的某一些属性进行初始化赋值操作 实例化对象的过程: Person xiaoming = new Person(); new : 表示在堆上开辟空间 执行非静态代码段 然后再执行构造方法: 在构造方法中调用其他的构造方法 可以使用this()的方式来调用其他的构造方法 注意事项: this() 必须写在构造方法的第一行 不能循环调用 无参构造方法需要注意的问题 如果一个类中没有写构造方法,此时这个类具有一个默认的public权限的无参构造方法 如果一个类中写构造方法了,此时这个默认的public权限的无参构造方法将不再提供 代码块 非静态代码段 静态代码段 static { } // 当这个类第一次被加载到内存中的时候执行 // 当你第一次使用这个类的时候执行(实例化对象、调用静态方法...) private关键字与属性封装 是一种编程思想: 狭义上的封装: ​ 一个类中的某一些属性,我们不希望外界直接访问。

程序员,别再迷恋多线程工作了

淺唱寂寞╮ 提交于 2019-12-11 12:38:59
我刚刚尝试了一下,一边用 iPad 看“Java 极客技术”自制的 SpringBoot 视频(1.2X 倍速),一边在 iMac 上回复博客上读者的留言。过了一会,视频上讲了什么,我完全没有印象了;而回复的内容也写得乱七八糟。 很长一段时间内,我都在欺骗我自己:一边写博客,一边听音乐,自认为可以一心多用,做到了像计算机一样的“多线程工作”。可等到音乐的某个高潮响起时,我情不自禁地投入到了音乐的世界中,却完全忘了博客接下来应该写的主题。于是只能狠狠地把音乐关掉,重新读一遍计划好的内容大纲,寻找新的写作灵感(之前的灵感已经杳无音讯了)。 像我这样自作聪明的人应该不在少数,但实际上我们只是在几个不同的任务之间快速地进行切换 。当切换的频率过高的时候,我们的创造力就会下降得越快,我们浪费的时间就越多,我们学习的效率就会越低。 假如你要反驳,说自己在打发时间,那请你自便。 1、为什么我们会迷恋多线程工作 “人生苦短,我爱多线程”——这恐怕是我们迷恋多线程工作的主要原因了。想一想手头那么多事情要做,而我们又分身乏术,不能像孙悟空那样拔一根猴毛就能复制一个战斗力满满的自己,就只能硬着头皮 new Thread().start() 了。 就我们程序员来说,打开手机,掘金社区上的小册在向我招手,极客XX的课程在向我抛媚眼,GitChat 的小课在向我暗送秋波,就连XX星球也在喊我过去

支付宝这些程序员要逆天,滑板、画漫画、写科幻小说、航拍,玩得太溜

蹲街弑〆低调 提交于 2019-12-11 11:06:44
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 他一边用代码改变世界,一边用科幻小说去创造未来。 他一边用编程书写传奇,一边用画笔记录生活。 他一边用程序驱动科技,一边用滑板挥洒汗水。 他一边用产品推动技术,一边用航拍记录大地。 他们是四位来自蚂蚁金服的普通程序员,代码有千万种可能,人生有万千种姿态,看起来高冷的 IT 男,背地里也可能是热血青年! 无论什么时候,都不能失去对生活的热情 当边柳出现在镜头前,很多人觉得他根本不是程序员,因为他那一头乌黑茂盛的头发,在脑后扎成一个发髻。但是边柳没有使用过防脱发的洗发水,秘籍很简单——做你所爱,无论什么时候都要保持对生活的热情。 边柳碰到很多人,他们可能只是把写程序当成一份工作,边柳不知道怎么去评价这些人,但是边柳知道自己和他们不一样,自己真的是因为热爱程序才来写程序,这不是一份工作,更多的是一份爱好,就像自己玩滑板一样。 在边柳的人生里,摇滚和滑板对他的影响特别大,用边柳的话来说这两样东西影响了自己的价值观。虽然摇滚已经没落,当年黑豹鼓手也过上了保温杯里泡枸杞的养生人生,但是自己依旧热爱,对于滑板也是一样。 相比于摇滚,边柳对滑板更有一份特殊的感情。虽然当一般同龄人在结婚生子、家里也催促边柳早点成家,但是边柳觉得不重要,工作之外他选择抱着滑板去到处游玩,追逐和沉浸在自己的爱好中。 “我并不是评价别人的生活怎样

188W+程序员关注过的问题:Java到底是值传递还是引用传递?

独自空忆成欢 提交于 2019-12-11 08:46:25
在逛 Stack Overflow 的时候,发现了一些访问量像阿尔卑斯山一样高的问题,比如说这个:Java 到底是值传递还是引用传递?访问量足足有 188万+,这不得了啊!说明有很多很多的程序员被这个问题困扰过。实话实说吧, 我 就是其中之一。 来回顾一下提问者的问题: 我一直认为 Java 是按引用传递的,但是我看一些博客上说不是的。我就纳闷了,Java 到底是值传递还是引用传递?值传递和引用传递有什么区别呢? 如果你也曾被这个问题困扰过,或者正在被困扰,就请随我一起来梳理一下问题的答案。打怪进阶喽! 01、值传递和引用传递 什么是值传递,什么是引用传递?我们需要先把这两个定义搞清楚,才能搞清楚 Java 是按值传递还是按引用传递。 值传递(pass by value)是指在调用方法时将实参复制一份传递到方法中,这样当方法对形参进行修改时不会影响到实参。 引用传递(pass by reference)是指在调用方法时将实参的地址直接传递到方法中,那么在方法中对形参所进行的修改,将影响到实参。 上面是比较官方的定义,读起来不免生硬。在我看来,值传递和引用传递的关键区别有两点: 1)调用方法时有没有对实参进行复制。 2)方法内对形参的修改会不会影响到实参。 what?值传递和引用传递还没有搞清楚,又来两个新名词:实参和形参。别急,别急。 02、实参和形参

程序员进阶文章

丶灬走出姿态 提交于 2019-12-11 04:44:11
1、 拜托!面试请不要再问我Spring Cloud底层原理 2、 【双11狂欢的背后】微服务注册中心如何承载大型系统的千万级访问? 3、 【性能优化之道】每秒上万并发下的Spring Cloud参数优化实战 4、 微服务架构如何保障双11狂欢下的99.99%高可用 5、 兄弟,用大白话告诉你小白都能听懂的Hadoop架构原理 6、 大规模集群下Hadoop NameNode如何承载每秒上千次的高并发访问 7、 【性能优化的秘密】Hadoop如何将TB级大文件的上传性能优化上百倍 8、 拜托,面试请不要再问我TCC分布式事务的实现原理! 9、 【坑爹呀!】最终一致性分布式事务如何保障实际生产中99.99%高可用? 10、 拜托,面试请不要再问我Redis分布式锁的实现原理! 11、 【眼前一亮!】看Hadoop底层算法如何优雅的将大规模集群性能提升10倍以上? 12、 亿级流量系统架构之如何支撑百亿级数据的存储与计算 13、 亿级流量系统架构之如何设计高容错分布式计算系统 14、 亿级流量系统架构之如何设计承载百亿流量的高性能架构 15、 亿级流量系统架构之如何设计每秒十万查询的高并发架构 16、 亿级流量系统架构之如何设计全链路99.99%高可用架构 17、 七张图彻底讲清楚ZooKeeper分布式锁的实现原理 18、 大白话聊聊Java并发面试问题之volatile到底是什么?

[集合类]源码解析7(AbstractSequentialList抽象类和LinkedList类)

99封情书 提交于 2019-12-11 02:47:57
上一篇: [集合类]源码解析6(Queue接口、AbstractQueue抽象类、Deque接口) 文章目录 1. AbstractSequentialList 2. LinkedList 1) Node 2) 属性 3) 构造方法 4) 工具方法 5) List方法 (1) 添加方法 (2) 删除方法 (3) 修改方法 (4) 查找方法 6) Deque方法 (1) 添加方法 (2) 删除方法 (3) 查找方法 1. AbstractSequentialList 该抽象类翻译成中文是,顺序列表。这是相对RandomAccess标志接口而言的,我们在 [集合类] 源码解析1(Iterable、RandomAccess、Serializable、Cloneable) 一文中分析了RandomAccess,其表示容器支持随机访问,这类容器会优先使用索引进行操作。而不支持随机访问的容器,通常使用迭代器进行操作。 AbstractSequentialList中实现了List中的一些基本操作,都是基于迭代器的实现,下面我们看一下源码。 /** * 该类提供List接口的框架实现,以最小化由“顺序访问”数据存储(如链表)支持的实现该接口所需的工作。 * 对于随机访问数据(例如数组),应该优先使用AbstractList。 * * 这个类与AbstractList类相反,因为它另外实现了list