
IT
AI乔治
十年码农,站在巨人的肩膀上敲代码!
-
原创 深度解读,带你一文看懂 Netty 架构设计
本文重点分析 Netty 的逻辑架构及关键的架构质量属性,希望有助于大家从 Netty 的架构设计中汲取营养,设计出高性能、高可靠性和可扩展的程序。Netty 的三层架构设计Netty 采用了典型的三层网络架构进行设计和开发,其逻辑架构图如下所示。通信调度层 Reactor它由一系列辅助类完成,包括 Reactor 线程 NioEventLoop 及其父类,NioSocketChannel / NioServerSocketChannel 及其父类,Buffer 组件,Unsafe.2021-01-28 01:02:4277
0
-
原创 十年架构师告诉你:学习JDBC需要掌握些什么?
不知道大家在工作中还有没有写过JDBC,我在大三去过一家小公司实习,里边用的就是JDBC,只不过它封装了几个工具类。写代码的时候还是能感受到「这是真真实实的JDBC代码」现在开发一般都是Mybatis,也有公司用的Hibernate或者Spring Data JPA。很多时候,不同的项目由不同的程序员开发,在公司层面可能没有将技术完全统一起来,一个项目用Mybatis,一个项目用Hibernate都是很有可能的。不管用的是什么ORM框架,都是在JDBC上封装了一层嘛,所以JDBC还是需要好.2021-01-27 02:26:29104
0
-
原创 深入浅出Redis实现分布式锁
分布式锁初见 public static int count = 0; private static int expireTime = 50; private static String lockKey = "desc"; private static String lockValue = "lockValue"; public void decr() { if (RedisPoolUtil.setNxPx(lockKey, lockValue,2021-01-26 01:42:5735
0
-
原创 如何实现一个实时更新的进度条
前言博主近期接到一个任务,大概内容是:导入excel表格批量修改状态,期间如果发生错误则所有数据不成功,为了防止重复提交,做一个类似进度条的东东。那么下面我会结合实际业务对这个功能进行分析和记录。正文思路前端使用bootstrap,后端使用SpringBoot分布式到注册中心,原先的想法是导入表格后异步调用修改数据状态的方法,然后每次计算修改的进度然后存放在session中,前台jquery写定时任务访问获取session中的进度,更新进度条进度和百分比。但是这存在session在服务间2021-01-26 01:39:30199
0
-
原创 上周刚面过MT拿到offer的最新面经来了_哈希+jvm+锁+MySQL+集群
前言本篇题材来自我朋友的朋友,他在最近的社招中拿到美团的Offer,整体思路和面试题目由面试本人提供由于作者面试过程中高度紧张,本文中只列出了自己还记得的部分题目。一面:自我介绍 HashMap,ConcurrentHashMap与LinkedHashMap的区别 如何在多线程环境下使用Map,ConcurrentHashMap原理,ConcurrentHashMap如何加锁。 多线程并发的同步实现,有两个方法,每个方法里有a部分代码和b部分代码,我要让两个线程分别执行两个方法,并且让2021-01-23 01:58:0543
1
-
原创 十年资深架构师解读6大设计原则和28种设计模式的定义、应用、实践
一句话总结:深刻解读6大设计原则和28种设计模式的准确定义、应用方法和最佳实践,全方位比较各种同类模式之间的异同,详细讲解组合使用不同模式的方法总览内容介绍:(全书共分为六部分)第一部分:大旗不挥,谁敢冲锋一6大设计原则全新解读第二部分:真刀实枪一23种设计模式完美演绎第三部分:谁的地盘谁做主一设计模式PK第四部分完美世界一设计模式混编第五部分:扩展篇...2021-01-22 02:33:2538
0
-
原创 十年老码农深入浅出让你彻底明白sql注入攻击
SQL注入攻击是黑客对数据库进行攻击常用的手段之一,随着B/S模式应用开发的发展,使用这种模式编写应用程序的程序员也越来越多。但是由于程序员的水平及经验参差不齐,相当大一部分程序员在编写代码的时候,没有对用户输入数据的合法性进行判断,使应用程序存在安全隐患。用户可以提交一段数据库查询代码,根据程序返回的结果,获得某些他想获取的数据,这就是所谓的SQL Injection,即SQL注入。一、背景假如某高校开发了一个网课系统,要求学生选课后完成学习,数据库中有一张表course,这张表存放着每个学生的选2021-01-21 03:28:0683
0
-
原创 RPC 用着好好的?为什么还需要使用 MQ?
MQ 想必大家或多或少都用过,接入 MQ 之后的整体架构如下:可以看到使用 MQ 之后,上下游通信就变成图上的这种方式。这种跨进程的通信方式,我们还有一种常用的解决方案,使用 Dubbo 等这类 RPC 服务。理论上使用 RPC 的跨进程通信的场景,使用 MQ 也能解决,当然反过来也能说通。那为什么不都用 RPC,或者 MQ 来解决那?这其实都是业务场景决定的,抛开业务场景来谈架构都是耍流氓!没有全能的架构,只要适合的架构。下面我们来看看哪些场景适合 RPC,而哪些场景适合.2021-01-21 03:23:5669
0
-
原创 JDK里面自带了这么多的exe,你都挨着试过么?
JVM话说面试这块,JVM算是一个经典的也是三年必问的知识点了,而且这个知识点算是最重要的一个知识点,你如果会这个内容,那么对你的在之后的面试中,能够喊出一个不错的价格。而关于JVM和还有关于垃圾回收算法的解析,在这里就不在给大家进行讲解了。大家有兴趣的可以看一下之前推出的这几篇文章性能监控工具我们都在最开始学Java的时候,安装过Java,不管是直接安装版本还是复制过来解压好的,大家都可以在JDK的安装目录中找到一些exe的程序,而这些exe的程序里面,有很多是我们不怎么去关注的性能的监控2021-01-21 03:22:0144
0
-
原创 十年架构师修炼之路:你该知道的 7 个必经阶段
导读:数据结构、算法、设计模式被认为是程序员必修的三大内功,你对设计模式有什么理解?你是什么时候意识到自己需要好好学习设计模式的?本文将分享作者多年编程道路上的一些思考和心得,以及对如何提升设计能力的几点建议。当我做完设计相关的培训分享过后,有同学来问我:如何才能快速提升自己的设计能力?我觉得这个问题非常有代表性,代表了一大波程序猿在艰辛的修炼路上的心声。现将我对这个问题的思考、心得体会分享出来,供大家参考,也欢迎提出不同的意见与看法,共同探讨。编码历练代码行经验是个非常重要的东西,当你还没.2021-01-21 03:09:1353
0
-
原创 都2021年了,你还不多学几种创建型模式,创建个对象?
设计模式(Design Pattern)是一套被反复使用,多数人知晓的,经过分类编写的目的,代码设计经验的总结。使用设计模式是为了可重用代码,让代码更容易被他人理解,保证代码可靠性。毫无疑问,设计模式于己于人于系统都是多赢的。设计模式使代码编制真正工程化。设计模式首先我们需要整理一下有哪几种设计模式,上图:看到原来有这么多设计模式,脑子是不是有些发蒙,不过没关系,接下来带你一个一个攻破!一、创建型模式创建型模式的主要关注点在于如何创建对象,它的主要特点是:将对象的创建与使...2021-01-20 02:35:5175
0
-
原创 寒冬下的温暖,一份“热腾腾”的面经分享—致敬疫情下还在奋斗中的码农
有赞云面经有赞云的电话面,题目比较简单。(更新一下,楼主一年经验,社招java岗位) 出于什么样的考虑,对系统进行了重构 有了解过领域模型相关知识吗 项目中最大的亮点,或者说项目中最大的难题是怎么解决的 索引失效场景有哪些 Dubbo服务暴露过程 Dubbo的spi和jdk的什么区别 Rabbitmq和kafka区别 Kafka适合什么场景,项目中是什么场景 Rabbit如何保证消息不丢失 Zk满足了CAP哪2021-01-20 02:15:16115
0
-
原创 软件架构基础 : 你的架构需要考虑到的特性
一个公司决定用软件解决一个特定的问题的时候,公司会去收集该软件的需求清单。需求可以说是软件开发的基础,但除了需求以外,架构师有很多因素需要去考虑。下图在第 1 章出现过:架构师可能会参与收集需求,但架构师一个关键的职责是要发现、定义其它和具体需求没有直接关系的东西,这些东西称之为架构特性(architectural characteristics)。一个架构特性满足三个标准: 指定了一个非领域(业务)设计的考虑因素:例如,一个重要的架构特性是应用程序的性能水平,而这一点往往不会.2021-01-18 23:38:5637
0
-
原创 深入浅出Kafka底层原理剖析
Kafka 简介Apache Kafka 是一个分布式发布-订阅消息系统。是大数据领域消息队列中唯一的王者。最初由 linkedin 公司使用 scala 语言开发,在2010年贡献给了Apache基金会并成为顶级开源项目。至今已有十余年,仍然是大数据领域不可或缺的并且是越来越重要的一个组件。Kafka 适合离线和在线消息,消息保留在磁盘上,并在集群内复制以防止数据丢失。kafka构建在zookeeper同步服务之上。它与 Flink 和 Spark 有非常好的集成,应用于实时流式数据分析。Ka2021-01-18 23:23:2863
0
-
原创 【京东&网易】最新面试题总结分享:线程+哈希+JVM+springboot+高性能
上周也是刚面试京东和网易回来,面试题还是还是跟京东Java面试一面1. 自我介绍2. 常用的数据结构有哪些?并大说了一些操作的时间复杂度3. 数组从下标最大的删与最小的删有什么区别?4. 介绍主要用到的技术(技术栈)5. 介绍一下集合类6. list和set的区别?以及各个实现类和底层实现7. CopyOnWriteList的特点及实现8. 创建一个线程有几种方式?项目中怎么创建的?9. 讲一下线程池10. 你们使用的任务拒...2021-01-18 23:18:3251
0
-
原创 【社招】1.5年,算法岗,微软,腾讯,网易热乎面筋
楼主半年前才入职字节,结果发现字节的工作节奏是10点到10点,大小周。呆了半年,身心俱疲,不想过试用期就直接跑路。废话不多说,直接上面筋。投递方向:广告算法工程师。微软苏州分院 bing ads。他家业务很厉害。第一轮:不过简历,直接考题。1. 有一个数组元素[a0, a1 ...],从数组中找出连续的数组和为最大。2. 有一个常数n,有一个数组元素[a0, a1 ...]无重复元素。从数组里面找出所有可能的组合加和是n,并且输出。第二轮:过简历,面试官不是专业学算法的。如何2021-01-17 01:56:3380
0
-
原创 最新西安华为Java面经,金三银四想跳槽的朋友可以看一看
12.09号机试(150min)牛客上在线做三道题,前面两道过了,第三道感觉题意有些模糊,也没处咨询,随便写了写,过了10%的case最终考了220分,满分400分,hr说是150分过。1.输入一个字符串,删除其中出现次数最少的字符然后输出,出现次数最少的字符可能不止一个,不打乱原来的顺序12.12号性格测试50多道选择题,基本往积极乐观的方向选就没问题,但听说也有挂的12.18号技术一面(70min)技术面试约在晚上7点半,是zoom视频会议面试1.自我介绍2.说下项.2021-01-17 00:31:35233
1
-
原创 中台架构下的DDD和落地实践
Why DDD matters?Note: 本文只讨论DDD的战术层面,BC/ContextMap等战略层面不在本文范围内。目标场景:你已经明确了要建设XXX中心,如何使用DDD把它建好的问题。GoF Design Pattern、EIP、Refactoring、P of EAA等,它们的理念是通过技术手段解决技术问题,并没有根本上解决业务的问题。DDD是真正解决业务问题的架构思想:把业务设计和业务开发统一,产品同学和研发同学统一 统一在domain层,DDD的精华在这一层 业务专2021-01-16 00:36:5999
0
-
原创 极致残忍,我这10道Java面试题虐哭了
有一天,小王告诉我,他去一家公司面试 Java 岗,结果被面试官虐哭了。整整 10 道 Java 面试题,小王一道也没答正确。他沮丧地给我说,“哥,说点我的情况,你愿意听吗?我和一个女孩相处,女孩大我两岁,我非科班。本来打算国庆换一家薪水高点的,好确认关系。我经验不多,技术一般般,之前在一家外包公司,有一个甲方内推,我就鲁莽地把外包的工作辞了,结果没想到面试被虐了,我担心女朋友会不会因为我没有工作和我分手。”听他这么一说,确实挺虐心的。后来我就安慰他,要他端正心态,先把这些面试题整明白,然后继续找工2021-01-16 00:31:4860
0
-
原创 并发笔记 - ofcoder.com
总结epaxos作为paxos族中的一员,并不是单独存在的。所以我在文中开篇给出总结,罗列与basic-paxos、mutli-paxos之间的区别。带着目的学习,可能相对容易理解一些。回顾paxos的局限性,总结来说存在三个问题:basic-paxos,多个proposal提出时,容易形成活锁,影响整个算法的活性。 mutli-paxos,通过只允许leader提出proposal,解决活锁问题,同时影响了吞吐量(性能局限于leader)、可扩展性(必须要leader发起提案)、可用性(le2021-01-15 23:20:3228
0
-
原创 最近的一些Java面试小结
前言前段时间陆续面试了一些大中小公司,踩了不少坑,挂了很多,同时也有不少感悟和收获。这里想把那段经历记录一下,如果能对亲们有所帮助就再好不过了。面试的过程其实也是一个自我认识和学习的过程,即便暂时没打算跳槽,隔段时间出去面一面对自己还是有些好处的:不仅可以评估一下自己在市场的价值和竞争力,同时也能了解一些新技术、更新一下自己的技术栈。而且在一个地方待久了,可能不自觉的就会陷入到一种「舒适区」,久而久之,就像温水里的青蛙,万一哪天被“优化”了可能会不知所措。本文主要从「项目」和「技术」两个方面2021-01-15 23:16:5830
0
-
原创 万字详解 Zookeeper 的五个核心知识点
1 ZooKeeper简介ZooKeeper是一个开源的分布式协调框架,它的定位是为分布式应用提供一致性服务,是整个大数据体系的管理员。ZooKeeper会封装好复杂易出错的关键服务,将高效、稳定、易用的服务提供给用户使用。如果上面的官方言语你不太理解,你可以认为ZooKeeper=文件系统+监听通知机制。1.1 文件系统Zookeeper维护一个类似文件系统的树状数据结构,这种特性使得Zookeeper不能用于存放大量的数据,每个节点的存放数据上限为1M。每个子...2021-01-15 23:11:0248
0
-
原创 深度剖析Zookeeper(一):Dubbo+Zookeeper
前面花了一段时间去学习SpringCloud的相关知识,主要是理解微服务的概念并使用SpringCloud的一系列组件实现微服务落地。学习这些组件本身是简单的,跟着操作一遍基本就会了,这也得益于Springboot给我们带来了很多便利。实际的应用中也许还会碰到一些坑,但只要我们掌握基本的原理就能够解决。前面也讲了微服务的解决方案有两个,一个是SpringCloud,另外一个就是Dubbo+Zookeeper,下面我们来学习Dubbo+Zookeeper实现微服务。在学习微服务的第一篇中,理解了微服务2021-01-15 01:30:43103
0
-
原创 深度剖析Dubbo架构(二)Dubbo+Zookeeper
上次更新博客已经是一年前,这一年发生了很多事,并不顺利,甚至有些痛苦,不过不管怎样,不要停止学习,只有学习才能让你变强,应对更多不安定。一、RPC概念Dubbo服务是一个RPC框架,那我们首先就要先理解什么叫做RPC, Remote Procedure Call 即远程过程调用。远程过程调用相对的是本地过程调用,本地过程调用就不用说了,简单理解成本地方法调用函数即可,而远程调用是指调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数。而不用程序员显式编码这个远程调用的细节。即程序员无论2021-01-15 01:24:0851
0
-
原创 字节跳动面试回来,想跟在金三银四准备跳槽面试的伙伴聊聊
三轮技术面,整体感觉非常好,面试官都非常的专业而且nice可能有一轮给我的感觉是压力测试,看你在被质疑的情况下的表现一面:问了下简历和岗位相关的项目问题tcp 四次挥手协议,为什么是四次b tree和b+ tree的区别回表,联合索引https ssl讲一下,讲一下证书签发过程算法题:binary tree 每层找最大值:level order traversal(BFS)array,先递增后递减,可能有重复,找到一个数:三次binary search,第一次找到分界点.2021-01-15 01:06:5129
0
-
原创 软件架构基础 :架构师的 8 大核心能力
软件架构基础(Fundamentals of Software Architecture)》被誉为和《设计数据密集型应用》一样经典的后端书籍,架构师的入门指南。本篇为该书第一章的读书笔记,2021 年第一个目标就是和大家一起读完这本书。如今,全球范围内“架构师”这一头衔炒得十分火热,但没有真正的指南来帮助开发人员成为软件架构师。这本书主要有三部分内容:基础、架构风格、技术和软技能。基础部分是关于软件体系结构的一般概念;架构风格部分介绍了不同的架构风格,并以一些架构特征标准进行评价;技术和软技能部2021-01-14 23:37:40102
0
-
原创 说说Kubernetes是怎么实现服务发现的
我们来说说 kubernetes 的服务发现。那么首先这个大前提是同主机通信以及跨主机通信都是 ok 的,即同一 kubernetes 集群中各个 pod 都是互通的。这点是由更底层的方案实现,包括 docker0/CNI 网桥、flannel vxlan/host-gw 模式等,在此篇就不展开讲了。在各 pod 都互通的前提下,我们可以通过访问 podIp 来调用 pod 上的资源,那么离服务发现还有多少距离呢?首先 Pod 的 IP 不是固定的,另一方面我们访问一组 Pod 实例的时候往往会有负载均2021-01-13 23:46:1786
0
-
原创 最新金三银四必备Java面试进阶:Dubbo、Zookeeper面试题锦集
Dubbo面试题锦集1、默认也推荐使用netty框架,还有mina。2、默认是阻塞的,可以异步调用,没有返回值的可以这么做。3、推荐使用zookeeper注册中心,还有redis等不推荐。4、默认使用Hessian序列化,还有Duddo、FastJson、Java自带序列化。5、服务失效踢出基于zookeeper的临时节点原理。6、采用多版本开发,不影响旧版本。7、可以结合zipkin实现分布式服务追踪。8、核心配置有 dubbo:service/ dubbo:refer..2021-01-13 23:33:12110
0
-
原创 2021年最新BATJava面试题合集:JVM+多线程+算法+spring+数据库
马上进入求职招聘高峰,总结了一份BAT(阿里、百度等)资深Java相关的面试题答案合集给到大家。该板块的各面试章节,后续会持续迭代更新最新一线互联网公司的面试题目,建议收藏该页面,不定期更新查看~Java虚拟机(JVM)JVM内存模型结构 方法区和直接内存什么时候会oom? JVM收集器G1的内存模型和CMS的内存模型有什么不同? jvm调优用过吗? 如何查看java内存使用情况(jconsole、命令jmap、jstack等等)Java集合类与并发容器Arrayl...2021-01-13 23:09:2173
0
-
原创 2021年最新阿里Java3轮面试真题:JVM+并发锁+Sql防注入+Zookeeper等
天猫一面自我介绍、项目介绍 Spring拦截器、实现了哪些方法?底层原理 AOP如何配置,底层原理、2种动态代理,aop注解实现,xml定义切面 Bean的作用域,单例模式是否线程安全?恶汉模式是否线程安全?bean如何结束生命周期? Spring事务种类,如何回滚,A方法调用B方法,在B方法中出现异常,会回滚吗?(动态代理) 快速排序时间复杂度 JVM内存结构详细分配,各比例是多少 讲讲dubbo,数据库主从复制,2个节点读写分离,如何在读节点马上读到主节点写入的值 ...2021-01-13 22:23:01163
0
-
原创 都2021年了,你还不懂数据库索引的底层原理?那是因为你心里没点b树
前几天下班回到家后正在处理一个白天没解决的bug,厕所突然传来对象的声音: 对象:xx,你有《时间简史》吗? 我:我去!妹子,你这啥癖好啊,我有时间也不会去捡屎啊! 对象:...人家说的是霍金的科普著作《时间简史》,是一本书啦! 我:哦,那我没有... 对象:人家想看诶,你明天帮我去图书馆借一本吧... 我:我明天还要改... 对象:你是不是不爱我了,分手! 我:我一大早就去~ 第二天一大早我就到了图书馆,刚进门就看到一个索引牌,标识着不同楼层的功能,这样我很快能定位到2021-01-12 23:42:4325
0
-
原创 深度剖析阿里terway源码分析
背景随着公司业务的发展,底层容器环境也需要在各个区域部署,实现多云架构, 使用各个云厂商提供的CNI插件是k8s多云环境下网络架构的一种高效的解法。我们在阿里云的方案中,便用到了阿里云提供的CNI插件terway。terway所提供的VPC互通的网络方案,方便对接已有的基础设施,同时没有overlay网络封包解包的性能损耗,简单易用,出现网络问题方便诊断。本文对该插件做简单的代码分析,理解其原理,以便后期诊断问题和维护。功能划分阿里云开源的terway代码有三部分组成:CNI plugin:2021-01-12 23:33:2655
0
-
原创 作为新时代的程序员,我们需知道应用软件的层次划分
谈到应用程序的层次,我们平时所说的层次有两种:逻辑的层次(layer)和部署的层次(tier)。这两种层次划分的目的是不同的,因此划分方式也有一些差异,能够为应用程序带来的好处也是不同的。逻辑层次逻辑层次(layer)划分的最重要的目的在于调整应用程序各部分之间的依赖关系。应用程序可以看作数据和业务规则的集合,这个集合通过用户界面与用户发生交互。如果不划分层次,或者只划分最简单的层次,系统的结构就会是这样:数据库处于系统的中心地位,在此之上建立用户界面,业务规则写在用户界面里。这样做的问题在于:数据库作2021-01-12 23:30:3237
0
-
原创 跳槽涨薪必问20道Spring 常见面试题整理与答案
本人收集了一些在大家在面试时被经常问及的关于Spring的主要问题,这些问题有可能在你下次面试时就会被问到。对于本文中未提及的Spring其他模块, 欢迎大家向我推荐你在面试过程中遇到关于Spring的问题。我会把大家推荐的问题添加到下面的Spring常用面试题清单中供大家参考。以下问题,用于复习面试也是可以的。 IOC和DI是什么? Spring IOC 的理解,其初始化过程? BeanFactory 和 FactoryBean的区别? BeanFactory和Ap2021-01-11 23:53:4638
0
-
原创 2021年金三银四必问的Java基础40道常见面试题及详细答案
最近看到网上流传着,各种面试经验及面试题,往往都是一大堆技术题目贴上去,而没有答案。为此我业余时间整理了,Java基础常见的40道常见面试题,及详细答案,望各路大牛,发现不对的地方,不吝赐教,留言即可。 八种基本数据类型的大小,以及他们的封装类 引用数据类型 Switch能否用string做参数 equals与==的区别 自动装箱,常量池 Object有哪些公用方法 Java的四种引用,强弱软虚,用到的场景 Hashcode的作2021-01-11 23:43:46951
0
-
原创 2021年跳槽涨薪必问之Java并发编程80道面试题及答案
1、在java中守护线程和本地线程区别?java中的线程分为两种:守护线程(Daemon)和用户线程(User)。任何线程都可以设置为守护线程和用户线程,通过方法Thread.setDaemon(bool on);true则把该线程设置为守护线程,反之则为用户线程。Thread.setDaemon()必须在Thread.start()之前调用,否则运行时会抛出异常。两者的区别: 唯一的区别是判断虚拟机(JVM)何时离开,Daemon是为其他线程提供服务,如果全部的User Thread已经撤离,2021-01-11 23:31:29135
0
-
原创 魔都一年Java后端经验的小伙年终面经总结报告-【建议收藏】
鉴于现在还有很多私信我内推和咨询问题,不能及时回复,在此篇中做回复并对我一年经验之后选择其他公司的过程做一个指路型的描述注:在这里不做公司的比较,每个人都有偏好一,面试过程因为考虑到刚开始面试可能会遇到困难,所以投递次序为从很不想进到想进的同规模公司:拼多多考察点:一致性哈希,常见哈希算法,Java的hashmap,reentrantlock,mysql事务,g1垃圾收集器,线程池创建参数及实现经验百度:聊简历,java基础,多态等字节:判断图中形成环 优先队列的删除节点2021-01-09 23:19:3135
0
-
原创 金三银四跳槽季,为了年后offer,我竟然撸完了这50场1000多道面经
写在前面大家好,这是一篇超长面经+总结,是对自己上一阶段的梳理,也希望给今年金三银四准备找工作/正在找工作的同学们多多少少一点帮助。基本介绍:普通985本+海外渣硕,大二转到CS专业,大三项目交流3+2,19年10月留学毕业,有工程项目,无实习无额外加分项,主Java研发岗,非battmd级别选手,加一起拿了4个offer,最后准备去星环了。一,面经集合(按公司划分)最早是去年的12月开始,中间有几个月在研究室抗压没有面,考虑到读者的阅读喜好所以按公司划分面经,强调一点是时间线很重要,前后自2021-01-09 23:08:04446
0
-
原创 Nginx(四):http服务器静态文件查找的实现
上一篇nginx的文章中,我们理解了整个http正向代理的运行流程原理,主要就是事件机制接入,header解析,body解析,然后遍历各种checker,直到处理成功为止。 我们以访问一个普通文件为例,nginx到底是如何找到这个文件并返回信息的呢?它会不会有些什么限制呢? 按我们自己的理解,它应该是uri栏里截取出相应的路径,然后对应到root下,查找到相应文件,返回即可。那么,它又是如何处理html和其他的各种不同格式的文件呢? 就让我们一起来探秘nginx文件的查找实现吧!0.2021-01-08 23:16:5855
0
-
原创 Nginx(一):启动流程解析
nginx作为高效的http服务器和反向代理服务器,值得我们深入了解。 我们带着几个问题,深入了解下nginx的工作原理。首先是开篇:nginx是如何启动的? nginx是用c写的软件,github地址:https://github.com/nginx/nginx 其目录结构如下,我们主要关注 src 目录下的文件。 nginx.c 是main函数入口,我们也是通过这里进行启动流程分析的。零、启动流程时序图 我们先通过一个时序图进行全局观察nginx是如何跑起来的,然.2021-01-08 23:08:0631
0