
Java
文章平均质量分 88
程序员与Python
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Java中定时任务的6种实现方式,你知道几种?
几乎在所有的项目中,定时任务的使用都是不可或缺的,如果使用不当甚至会造成资损。还记得多年前在做金融系统时,出款业务是通过定时任务对外打款,当时由于银行接口处理能力有限,外加定时任务使用不当,导致发出大量重复出款请求。还好在后面环节将交易卡在了系统内部,未发生资损。所以,系统的学习一下定时任务,是非常有必要的。这篇文章就带大家整体梳理学习一下Java领域中常见的几种定时任务实现。线程等待实现先从最原始最简单的方式来讲解。可以先创建一个thread,然后让它在while循环里一直运行着,通过sleep方法原创 2021-08-05 22:15:40 · 2454 阅读 · 0 评论 -
知乎万赞:Java程序员的悲哀竟然是......自己的技术能力不能满足大厂要求?
之前就有看到知乎上有一个浏览千万+的讨论帖:除了一些常规回答之外,其中还看到了一个引人思考的点那就是年龄和项目经验间的矛盾关系。“没工作经验是不是进不了大厂?而不进大厂又没有那些牛批的项目经验?这都快金九银十了,来不及了?”在我看来,与其说工作经验,不如说是**项目经验或实战经验,而“经验”往往是你拿到offer的关键。不得不说,很多人都有过这类疑问。想要进大厂的Java人很多,同时放弃的人也不少。选择中途放弃往往是因为拿下大厂Java岗没有想象中那么简单,自己的技术能力不能满足大厂要求。一方面原创 2021-08-03 16:03:59 · 5618 阅读 · 16 评论 -
深度掌握 Java Stream 流操作,让你的代码高出一个逼格!
概念Stream 将要处理的元素集合看作一种流,在流的过程中,借助 Stream API 对流中的元素进行操作,比如:筛选、排序、聚合等。Stream` 的操作符大体上分为两种: `中间操作符` 和 `终止操作符中间操作符对于数据流来说,中间操作符在执行制定处理程序后,数据流依然可以传递给下一级的操作符。中间操作符包含8种(排除了parallel,sequential,这两个操作并不涉及到对数据流的加工操作):map(mapToInt,mapToLong,mapToDouble) 转换操作原创 2021-08-02 15:01:39 · 590 阅读 · 0 评论 -
【Java技术探索】「ConcurrentHashMap」深入浅出的源码分析(JDK1.8版本)
前提概要ConcurrentHashMap是concurrent家族中的一个类,由于它可以高效地支持并发操作,以及被广泛使用,经典的开源框架Spring的底层数据结构就是使用ConcurrentHashMap实现的。与同是线程安全的老大哥HashTable相比,它已经更胜一筹,因此它的锁更加细化,而不是像HashTable一样为几乎每个方法都添加了synchronized锁,这样的锁无疑会影响到性能。原理简介本文的分析的源码是JDK8的版本,与JDK7的版本有很大的差异。实现线程安全的思想也原创 2021-07-16 16:22:38 · 191 阅读 · 0 评论 -
数据结构:真不难!树,二叉树,哈夫曼树
写在前面之前讲的链表,栈,队列等都是线性存储结构,都是一对一的关系。而树是具有一对多关系的数据结构。比如我们经常说的湖北省武汉市,湖南长沙的一个类图,就类似于一颗倒转的树。什么是树树是一种数据结构,由n个节点构成的具有层次关系的有限集合。树的基本术语节点:树中的每一个数据元素都是节点(A,B…)节点的度:节点的子树个数(A的子树为B和C)树的度:树中所有节点最大的度(树A和树C的度都是2)叶子节点:度为0的节点(D,E,F)节点的层次:树的根开始,树根所在的层为第一层,根的子节点所在的原创 2021-07-15 17:27:10 · 764 阅读 · 4 评论 -
大厂高级工程师面试必问系列:Java动态代理机制和实现原理详解
代理模式Java动态代理运用了设计模式中常用的代理模式代理模式:目的就是为其他对象提供一个代理用来控制对某个真实对象的访问代理类的作用:为委托类预处理消息过滤消息并转发消息进行消息被委托类执行后的后续处理通过代理层这一中间层,有效的控制对于真实委托类对象的直接访问,同时又可以实现自定义的控制策略,比如Spring中的AOP机制,这样使得在设计上获得更大的灵活性代理的基本构成:代理模式中有Subject角色,RealSubject角色和Proxy角色:Subject:转载 2021-07-14 15:42:21 · 204 阅读 · 0 评论 -
关于程序员35岁的坎:年龄不是挡板,当你匹配了这个年纪该有的能力还有什么畏惧!
35 岁,真的是职场荣枯线吗?前几天看到知乎上的这个帖子:35 岁似乎已成职场荣枯线,失业风险叠加中年危机加剧焦虑,你如何看待「 35 岁危机」?个人觉得的,其实 我们工作到了一定的年纪,有时候不用社会淘汰你,你自己就感觉体力跟不上了尤其是互联网公司,做开发的35岁甚至不到35岁,很多普遍转行或者是被动离职的。(PS:这里不卖焦虑)我们要以正确要以正确的眼光看待:1、有些互联网公司的文化就是这样,比如部分互联网公司,基本不招聘35岁以上的了,对于老员工也会逐渐的减少或淘汰;2、技术跟不上,或者技原创 2021-07-12 22:02:55 · 5505 阅读 · 30 评论 -
脉脉热议:美团Java工程师面试后,吐槽问的太离谱!面试越来越难了
最近有不少读者给我留言,说 Java 的面试越来越难了,尤其是技术面,考察得越来越细,越来越底层。作为一名程序员,技术面试是不可避免的一个环节,一般技术面试官都会通过自己的方式去考察程序员的技术功底与基础理论知识。第一个是基础:比如对集合类,并发包,IO/NIO,JVM,内存模型,泛型,异常,反射,等有深入了解,最好是看过源码了解底层的设计。比如一般面试都会问ConcurrentHashMap,CopyOnWrite,线程池,CAS,AQS,虚拟机优化等知识点,因为这些对互联网的企业是绝对重要的原创 2021-07-09 14:39:01 · 394 阅读 · 3 评论 -
Java实现:二叉搜索树(Binary Search Tree)
目录一、二叉搜索树二、完整代码实现(Java)1、二叉搜索树1.1、 基本概念二叉树的一个性质是一棵平均二叉树的深度要比节点个数N小得多。分析表明其平均深度为 O(√N)O(N) ,而对于特殊类型的二叉树,即二叉查找树(binary search tree),其深度的平均值为 O(logN)O(logN) 。二叉查找树的性质:对于树中的每个节点X,它的左子树中所有项的值小于X中的项,而它的右子树中所有项的值大于X中的项。由于树的递归定义,通常是递归地编写那些操作的例程。因为二叉查找原创 2021-07-08 18:05:27 · 1265 阅读 · 4 评论 -
阿里换了这个开发框架,国内用得最多的框架,它排第一,也是Java程序员必修课之一!
对于Java工程师来说,几乎没有没听过大名鼎鼎的Spring框架的,Spring框架早已成为了Java后端开发事实上的行业标准,可以说,是Spring成就了Java,Spring也成为Java程序员必修课之一。同时,随着Spring Boot和Spring Cloud的出现,使得开发工程师能更高效的利用Spring和其他基础设施快速搭建系统,Spring全家桶的诞生又一次解放了大家的生产力。经常有粉丝留言有关Spring全家桶学习的问题,大家遇到的困惑无非是这些方面:1、刚刚入行或转行的兄弟,不明白原创 2021-07-05 17:35:28 · 627 阅读 · 0 评论 -
职级2-2!4面字节拿下30K*16薪Offer,吊打面试官,师弟yyds!
跳槽面试的时候,明明只是一份 15K 的工作,却问会不会多线程,懂不懂高并发,火箭造得让人猝及不防,结果就是凉凉。现如今,多线程、高并发编程、分布式、负载均衡、集群等可以说是现在高级后端开发求职的必备技能,做开发的门槛越来越高。但是,总有一些技术牛批的程序员可以碾压面试官!我有个师弟经常隔段时间就偷偷投点简历,请假出去面试几次,目的不是想跳槽,主要是为了看看市场上的技术流行趋势,顺便检验一下自己的水平,当然,如果面上心仪的大厂,那就更好了!前段时间他收到了字节跳动的面试,结果一不小心,面试的时候就吊.原创 2021-07-02 17:19:52 · 5140 阅读 · 5 评论 -
泪目!跳槽太不容易了,美团4轮面试,四个小时灵魂拷问,结局我哭了!
大多数情况下,程序员的个人技能成长速度,远远大于公司规模或业务的成长速度。所以,跳槽成为了这个行业里最常见的一个词汇。实际上,跳槽的目的无非是为了涨薪或是职业发展,我也不例外。普通本科毕业后,进了一家互联网公司,这几年里不断在积累经验,最终选择跳到美团,涨薪了50%,下面分享一下我个人的面经和一些心得建议。面经美团一面:redis集群,为什么是16384?哨兵模式,选举过程,会有脑裂问题么?raft算法,优缺点JVM类加载器,自定义类加载器,双亲委派机制,优缺点,tomcat类加载机制Tom原创 2021-06-30 20:57:10 · 4286 阅读 · 10 评论 -
有多少小伙伴用着JDK8却写着JDK6的代码?早学早享受,晚学被卷走……
有多少小伙伴在用着 JDK8 却写着 JDK6 的代码,最近在连载 WebFlux,深感 JDK8 中的 Lambda、函数式接口,JDK9 中的 FlowAPI 的重要,因此一直想整篇文章和大家梳理下从 JDK8 开始 Java 的一些变化,刚好跟大家分享下JAVA 这几年的更新实在是太太太……快了,JAVA 8 都还没用多久,16 都已经发布了。自从 JAVA 8 发布了 Lambda 和 Stream 之后,JAVA 就像打了鸡血一样,半年一个版本的发布,生产队的驴也没这么勤快。导致我们现在完全原创 2021-06-28 22:11:26 · 1377 阅读 · 21 评论 -
95% 的算法都是基于这 6 种算法思想,大厂Java面试必考点
算法思想是解决问题的核心,万丈高楼起于平地,在算法中也是如此,95% 的算法都是基于这 6 种算法思想,结下了介绍一下这 6 种算法思想,帮助你理解及解决各种算法问题。1 递归算法1.1 算法策略递归算法是一种直接或者间接调用自身函数或者方法的算法。递归算法的实质是把问题分解成规模缩小的同类问题的子问题,然后递归调用方法来表示问题的解。递归算法对解决一大类问题很有效,它可以使算法简洁和易于理解。优缺点:优点:实现简单易上手缺点:递归算法对常用的算法如普通循环等,运行效率较低;并且在递归调用的原创 2021-06-23 22:10:48 · 627 阅读 · 1 评论 -
深入理解Java中的反射机制和使用原理!详细解析invoke方法的执行和使用
前段时间,一则“腾讯试点强制 6 点下班”的消息冲上了微博热搜。腾讯这波操作引来网友们的纷纷好评,并成为了互联网大厂带头反内卷的标杆。有鹅厂员工甚至发帖问,这会给国内互联网公司开个好头吗?你也许觉得互联网大厂的“螺丝钉们”996 很辛苦,但是他们真实想法又会是什么样的呢?如果加班一天能赚几千块钱,你会不会觉得自己应该 997 呢?近日,在脉脉上出现了多条关于“字节跳动取消大小周”的帖子。据 Tech 星球报道,6 月 17 日上午,在字节跳动公司的 openday 上,面对员工的疑虑,字节跳动 C转载 2021-06-22 16:32:57 · 8975 阅读 · 1 评论 -
给学弟学妹肝的一篇Java学习路线,保证学弟学妹们大三大四的时候顺利找到实习 Offer
写在开头的闲言碎语2020年过去了,对很多人来说,这一年经历了太多太多,可能是十年来记忆里比较浓墨重彩的一笔。过去的一年里,“熬”算是这个阶段我的关键字,确实太多时候就要放弃,好在自己“熬”过去了,在新的2021年里,也有个一个非常好的开端,我收获了心仪的offer。说实话,如果是单纯奔着实习 Offer 去的话,还是不难的。说句挺不好意思的话,上学和刚参加工作那会,我一直傻乎乎的认为,只要把 Java 吃透的话就可以了,直到近些年我才恍然大悟,我的认知是有缺陷的。想从事 Java 后端开发工作,需要原创 2021-06-21 22:26:09 · 461 阅读 · 3 评论 -
面试高频算法难题:数组中的第K个最大元素
目是什么意思呢?比如给定的无序数组如下:如果 k=6,也就是要寻找数组中的第6大元素,这个元素是哪一个呢?显然,数组中第一大的元素是24,第二大的元素是20,第三大的元素是17 …第6大的元素是9。让我想想啊……对了,我可以先把无序数组排序,然后数出排序后的第k个元素!方法1:排序法这是最容易想到的方法,先把无序数组从大到小进行排序,排序后的第k个元素,自然就是数组中的第k大元素。先进行排序的话,算法时间复杂度是O(nlogn),性能有些差,有没有更优化的方法?让我想想啊……对了,原创 2021-06-18 18:41:22 · 358 阅读 · 0 评论 -
新一代消息中间件,腾讯、华为都用疯了,RocketMQ淘汰倒计时?
提起成熟的消息队列,毋庸置疑,大多数人的第一反应一定是 Kafka。Kafka 作为一款明星级产品,能够彻底满足海量数据场景下高吞吐、高并发需求,在短短几年内,已经被阿里、腾讯、百度、字节跳动、Netflix、Twitter 等超一线大厂视为技术核心——可以说今天还没听说过 Kafka,等于不知道地球是圆的!然而,技术的世界从没有“三十年河东三十年河西”的说法,夸张地比喻一下:很多技术经常是今天诞生、明天爆火、后天淘汰。市面上真的没有其他产品有可能取代 Kafka 吗?一身光环、头顶王冠的 Kafka原创 2021-06-17 17:43:10 · 715 阅读 · 6 评论 -
Java技术功底不够,面试十家九家难,面霸究竟是怎样炼成的?《Java面试通关手册》程序员必备
最近在网上看许多面经的文章,有拿到Offer的,也有凉凉的,这些文章中都有一个共同的特点,就是单单的只有面试题目。而没有面试过程中需要注意的细节和面试心得。导致有些面试者们在面试来临,就去盲目的去刷这些题目,而没有结合自己做过的那些项目中,遇到的一些技术问题会被面试官问道,回答不上导致面试落选或者薪资上不去。不过确实,因为疫情情况一些公司倒闭,有部分Java开发者直接原地失业,也有另外一大批开发者在今年这种大环境下依旧难以按捺心中跳槽的小心思。不管是因为什么,我们需要的只有一个:更高的技术追求,更好的薪原创 2021-06-16 19:57:38 · 291 阅读 · 3 评论 -
GitHub标星17万:打破程序员“中年危机”,非科班出身亲身证明了35岁之后的无限可能
程序员圈子里一直流传着一个魔咒:35 岁的中年危机。他们说,35 岁程序员的精力和体力会无法避免地下降;他们说,35 岁程序员的丰富经验没有年轻员工的创新活力吃香;他们说,35 岁程序员会面临越来越窄的职业上升通道和日益复杂的社会压力。这些“传说”令许多程序员每离 35 岁进一步,就更焦虑一分,并迫切寻找打破这一魔咒的方法。而今天我要介绍的程序员可谓是“不一样的烟火”。非科班出身亲身证明了 35 岁之后的无限可能。为什么年长的软件开发人员如此稀有?高昂的薪资很显然,经验丰富且年龄偏大的软件开原创 2021-06-15 16:18:07 · 17049 阅读 · 31 评论 -
绝了!字节大牛最新上线1940页LeetCode刷题秘籍,堪称完美
在想进一线互联网大厂 “算法”可以说是面试必问。而大厂的算法面试题又比较难!那该怎么办呢?昨天在知乎上刷到一个热门问题:程序员需要达到什么水平才能顺利拿到 20k 无压力?其中一个最热门的回答是:“其实,无论你是前端还是后端、想进大厂还是拿高薪,算法都一定很重要。”为什么,算法会如此重要?不瞒各位说,这点我最有发言权,因为我也曾怀疑过,但就在我初入职场时,一位资深前辈对我说过的一段话,让我受用至今:”我们招人的时候都有一个标准,就是招进来的这个人至少要排到team里面前50%,因为只有这样原创 2021-06-11 17:25:17 · 375 阅读 · 9 评论 -
知乎热榜:月薪30~50K的程序员,在业内算什么水平?
前言:总有很多人问,该怎样才能成为一名架构师,还有一个是对当前的状态感到迷茫,本文做个简单的说明,对迷茫中的你来说有些许帮助。当前你感到迷茫吗?有很多人对现在的工作感到很没意思,因为当前的工作,完全是实现业务,技术上没有任何提升。在这种状态下就会感到迷茫,特别是一想到将来这种迷茫感就更强烈了。与其说迷茫还不如说是担忧,随着时间的推移,自己的技术又没有长进,所以感觉忧心忡忡。这里分为二种人:1、混日子,过一天算一天这一种就不过多讨论了,没有什么意义。有很多这样的人,此类程序员已经废啦。2、想原创 2021-06-10 16:50:36 · 2073 阅读 · 5 评论 -
算法转 Java 后端,2021秋招斩获腾讯、京东、百度等大厂offer 面经分享!
这是一篇来自算法转Java后端的一位读者的投稿!文章主要分享了作者从迷茫崩溃到最终斩获腾讯、京东、百度等大厂 offer 的经历。文章内容很全面、真实,相信可以对正在准备面试的小伙伴有帮助!意识到又一年的秋招大戏要开始了,也不由的想起了去年这会的自己。就想写这篇文章记录一下曾经的秋招之路,也希望能帮助到看到这篇文章的各位。个人简介不用太多介绍,也不用太多指教,三秒钟之内就能让大家尖叫…嗯…好了,不闹了。开始!我是 2021 年毕业的研究生。本科是在一所双非大学读的,专业是软件工程,本科时学过一些 J原创 2021-06-09 15:44:08 · 651 阅读 · 2 评论 -
java中的NIO和IO到底是什么区别?20个问题告诉你答案
摘要:NIO即New IO,这个库是在JDK1.4中才引入的。NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多。NIO即New IO,这个库是在JDK1.4中才引入的。NIO和IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块,所以NIO的效率要比IO高很多。Q: NIO和标准IO有什么区别?A:标准IO, 基于字节流和字符流进行操作,阻塞IO。NIO基于通道channel和缓冲区Buffer进行操作,支持非阻塞IO,提供选择器§原创 2021-06-08 18:25:07 · 365 阅读 · 0 评论 -
《Kubernetes》你需要掌握的 Service 和 Ingress,纯干货!
这节我们说下 k8S 搭建完服务后如何访问!首先我们要清楚什么是Service 和 Ingress。简单来说,这两个组件都是用来做流量负载的。那么什么又是流量负载呢?当我们在集群内部已经通过 pod 部署了我们的应用服务,那么下一步要干啥?那就是让用户访问到我们的应用服务,这个才是最重要的,不然你部署完了,用户却访问不了,那岂不是无用功~一、Service在 k8s 中,pod 是应用程序的载体,我们可以通过 pod的 IP 来访问我们的应用程序,但是我们已经清楚了 pod 是具有生命周期的,一旦 p原创 2021-06-07 16:52:15 · 543 阅读 · 1 评论 -
35岁+程序员就该被辞退?或者主动离职,提前退休?就问凭什么,还不学起来等着被裁吗?
作为一名程序员,都会对自己未来的职业发展而焦虑。一方面是因为IT作为知识密集型的行业,知识体系复杂且知识更新速度非常快,“一日不学就会落后”。另外一方面,IT又是劳动密集型的行业,不仅业人员多,而且个人在平时的开发过程中有大量的重复劳动(如 CRUD),自己的能力没有随年龄的增加而增长。这种情况下,就会应验“35岁就失业”魔咒。最近在网上看到这么一个帖子:很扎心,很犀利,很现实。但即便如此,还是那句话:只要实力过硬,就算到了35岁又能怎么样,照样有公司抢着要!1、认真做好手头上的事情,并做到原创 2021-06-05 22:03:27 · 782 阅读 · 3 评论 -
Terraform入门教程,示例展示管理Docker和Kubernetes资源
1 简介Terraform 是一个可快速部署、方便管理IT基础架构配置的工具,它的理念是 Infrastructure as Code ,一切资源都是代码。如虚拟机、网络、DNS等,这些都通过代码来管理部署,而不是人工手动的去创建、删除等。它能大大减少人为操作的风险,能快速部署多套环境,适应多种硬件资源,特别适合云环境:AWS、GCP、Azure、阿里云等。它通过丰富的 Providers 来管理多种类型的资源,就像是插件一样,如GCP、Docker、Kubernetes等。本文将通过演示讲解如何部署原创 2021-06-04 20:46:22 · 1661 阅读 · 1 评论 -
网易面试Java开发凉凉经,面试官:基础不牢,技术不够深入,无缘offer,无缘网易......
前言我也是经朋友介绍来的网易,先是投了简历,然后朋友通知我说可以面试了,于是我就带着忐忑的心理来到网易公司。面试的是一位帅气的光头叔叔,下午三点开始,之前准备了很多准备应付技术问答,结果基础还是太差了,无缘网易…首先还是感谢吧,感谢网易面试官的肯定和建议。网易一共经历了四轮面试,前三轮技术面,第四轮总监面。岗位:我投递的是杭研所的Java开发岗位。行程:半天的时间南京=杭州之间穿行,单程2个小时,从杭州东站=网易大厦,单程1个小时(如果能买到城站高铁动车票可以从城站触发。)吃饭:可以去网易食原创 2021-06-04 17:26:33 · 2149 阅读 · 3 评论 -
透彻掌握Spring整合MyBatis的原理彻底征服面试官,建议收藏
在MyBatis篇内容的最后我们来给大家详细介绍下Spring是如何整合MyBatis的。让大家彻底掌握MyBatis的底层设计原理及实现。MyBatis整合Spring原理把MyBatis集成到Spring里面,是为了进一步简化MyBatis的使用,所以只是对MyBatis做了一些封装,并没有替换MyBatis的核心对象。也就是说:MyBatis jar包中的SqlSessionFactory、SqlSession、MapperProxy这些类都会用到。mybatis-spring.jar里面的类只原创 2021-06-03 22:11:01 · 489 阅读 · 0 评论 -
在Docker容器中运行Spring Boot GraalVM原生镜像
将 Spring Boot与GraalVM原生映像的优点结合起来真的很酷。但是在Docker容器里也做这些魔术怎么样?在Heroku这样的云基础设施上运行那些本地应用程序怎么样?再说一次“在我的机器上工作”!在写第一篇关于 [将Spring Boot应用程序作为GraalVM本机映像运行]的文章时,我对今天我们尝试将Spring Boot与GraalVM本机映像一起使用的可能性感到非常兴奋。但是,无论我是在客户的网站上,还是在Fachhochschule Erfurt给我的学生讲课,我都会努力避免这种在原创 2021-06-03 17:11:31 · 3236 阅读 · 2 评论 -
以GraalVM原生镜像的方式运行Spring Boot应用程序
Spring Boot &GraalVM–系列共有3个部分:第1部分:以GraalVM原生镜像运行Spring Boot应用程序第2部分:使用Docker&Heroku容器运行Spring BootGraalVM原生镜像第3部分:使用原生镜像maven插件简化Spring Boot GraalVM原生镜像构建Spring Boot变GraalVM在我去年的一个项目中,我遇到了一个使用Spring Boot的情况。这个想法是在Kubernetes上运行所有的微服务,而Java(更原创 2021-06-01 20:33:32 · 2444 阅读 · 6 评论 -
转行Java后第一次面试某鹅被坑,那些一毕业就进大厂的程序员,有哪些秘诀?
题外话近期准备离职,转行Java,这次正式以Java的开发者进入面试,哎,发觉一大堆坑。其实面试主要进行了如下方面:Java相关知识java基础知识开发者的基础知识 数据结构与算法、操作系统(这一面没有涉及)等面试相关技术准备由于我简历上还有iOS相关的经验,还写了个熟悉c/c++,于是复习内容如下:程序员面试笔试宝典剑指offer找的网上java相关的面试题目看java源码: 这里准备有些不足,细节上很多答不上来。Java的知识1、面向对象的特征有哪些方面?原创 2021-05-31 21:35:15 · 221 阅读 · 2 评论 -
主流的四种限流策略,我都可以通过redis实现,干货仅此一篇
引言在web开发中功能是基石,除了功能以外运维和防护就是重头戏了。因为在网站运行期间可能会因为突然的访问量导致业务异常、也有可能遭受别人恶意攻击所以我们的接口需要对流量进行限制。俗称的QPS也是对流量的一种描述针对限流现在大多应该是令牌桶算法,因为它能保证更多的吞吐量。除了令牌桶算法还有他的前身漏桶算法和简单的计数算法下面我们来看看这四种算法固定时间窗口算法固定时间窗口算法也可以叫做简单计数算法。网上有很多都将计数算法单独抽离出来。但是笔者认为计数算法是一种思想,而固定时间窗口算法是他的一原创 2021-05-31 14:22:22 · 342 阅读 · 4 评论 -
腾讯程序员熬夜码字:网络 IO 演变发展过程和模型介绍,仅此一篇
在互联网中提起网络,我们都会避免不了讨论高并发、百万连接。而此处的百万连接的实现,脱离不了网络 IO 的选择,因此本文作为一篇个人学习的笔记,特此进行记录一下整个网络 IO 的发展演变过程。以及目前广泛使用的网络模型。1.网络 IO 的发展在本节内容中,我们将一步一步介绍网络 IO 的演变发展过程。介绍完发展过程后,再对网络 IO 中几组容易混淆的概念进行对比、分析。1.1 网络 IO 的各个发展阶段通常,我们在此讨论的网络 IO 一般都是针对 linux 操作系统而言。网络 IO 的发展过程是随原创 2021-05-29 17:15:57 · 316 阅读 · 1 评论 -
腾讯开发工程师写万字长文:读懂微服务编排利器Zeebe,超详细
1.工作流与微服务编排1.1工作流提到工作流,印象里都是OA系统各种请假审批流。事实上,广义上的工作流是对工作流程及其各操作步骤之间业务规则的抽象、概括、描述。简单理解,我们为了实现某个业务目标,抽象拆解出来的一系列步骤及这些步骤之间的协作关系,就是工作流。例如订单发货流、程序构建流等。业界通常用BPMN流程图来描述一个工作流。1.1.1没有工作流时的任务协作以实现一个用户购买逻辑为例,如果不应用工作流模型,我们串联多个任务(步骤)一般是通过显示的代码调用:校验、支付、发货一气呵成,流畅自然。正原创 2021-05-29 11:37:34 · 1226 阅读 · 4 评论 -
有Github霸榜半年的Java并发图册+JDK源码剖析笔记在手,我终于不慌内卷了
如何打开并发世界的大门?想也不用想,最简单最快捷的方法当然是一头扎进源码!但是只适用于并发理论已经储备足够的小伙伴。对于基础稍弱的小伙伴肯定需要先通过理论远看轮廓,然后再通过源码近看明细。当然为了能大家更好地入手Java并发,互联网雷锋小编我前段时间特地从阿里的一位朋友手上拿到了他手码的Java并发图册与一份Github上霸榜半年的JDK源码剖析笔记,大家看了之后就知道,差距不止一点点!为什么要看源码我们在做项目的时候一般会遇到下面的问题:(1)不知道如何去设计。比如刚入职场时,来一个需求需做概要设原创 2021-05-28 16:16:31 · 617 阅读 · 16 评论 -
阿里大神万字总结:InnoDB锁类型及其详细分析(仅此一篇,干货建议收藏!!)
0 事务支持首先回顾一下事务相关的基础概念。在默认情况下,InnoDB 开启自动提交,每一个 SQL 语句会形成其独立的事务,在语句执行完毕后自动提交,如果语句执行失败,则自动回滚。用户可以通过 START TRANSACTION 或 BEGIN 命令显式开启事务,通过 COMMIT 或 ROLLBACK 显示提交或回滚事务。用户可以通过 SET AUTO_COMMIT=0 显式关闭自动提交。隔离级别方面,InnoDB 支持标准的: READ UNCOMMITTED , READ COMMITED ,原创 2021-05-28 11:23:52 · 704 阅读 · 6 评论 -
Java并发编程专题系列之深入分析synchronized
** Java对象内存结构**HotSpot虚拟机中,对象在内存中存储的布局可以分为三块区域:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。对象头(Object Header)markWord(标记字段)用于存储对象自身的运行时数据, 如哈希码(HashCode)、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID、偏向时间戳等等,这部分数据的长度在32位和64位的虚拟机(暂 不考虑开启压缩指针的场景)中分别为32个和64个Bits。new一个原创 2021-05-27 18:59:39 · 144 阅读 · 0 评论 -
Java程序员14个K8S必备基础概念,你知道哪些,建议收藏
在微服务、云计算和无服务架构时代,理解Kubernetes并且知道如何使用它是十分有用的。然而,官方的Kubernetes文档对于刚开始接触云计算的用户来说有些难以理解。在本文中,我们将了解在Kubernetes中的重要概念。在之后的系列文章中,我们还将了解如何写配置文件、使用Helm作为软件包管理器、创建一个云基础架构、使用Kubernetes轻松编排服务并且创建一个CI/CD流水线来自动化整个工作流。有了这些信息,你可以启动任意种类的项目,并且创建一个强大的基础架构。首先,我们知道使用容器有多种好处,原创 2021-05-26 18:10:48 · 837 阅读 · 2 评论 -
给刚毕业工作的学弟学妹们:要想进大厂,这些技能是必须要掌握的
毕业季即将来临了,给学弟学妹们一些忠告,要想进大厂,这些核心技能是你必须要掌握的。很多小伙伴问我进大厂到底需要怎样的技术能力,经过几天的思考和总结,终于梳理出一份相对比较完整的技能清单,小伙伴们可以对照清单提前准备相关的技能,在平时的工作中注意积累和总结。只要在平时的工作中总结到位,对技术知其然,知其所以然,进大厂,是水到渠成的事情。接下来,我就简单的列举下,在我个人看来,进大厂需要的一些技能。注意:本文为去大厂面试,想进大厂需要具备的Java核心技术栈与学习路线,建议收藏,按照文章技术栈学习!!在即将原创 2021-05-26 17:01:05 · 636 阅读 · 10 评论