面试

原来Canal也可以做HA!

橙三吉。 提交于 2021-01-24 00:31:36
前言 在做实时数仓时,数据量往往比较大的,如果使用Canal来监听MySQL的状态当Canal 是单节服务时,服务器挂掉是就会造成数据丢失,这时Canal恰好可以配置HA这样就能解决单点问题,但是依赖于zookeeper,那我们就来配置一下Canal的HA。 一、Canal HA模式配置 1.1 服务器端HA模式配置 canal是支持HA的,其实现机制也是依赖zookeeper来实现的,用到的特性有watcher和EPHEMERAL节点(和session生命周期绑定),与HDFS的HA类似。 canal的ha分为两部分,canal server和canal client分别有对应的ha实现 canal server: 为了减少对mysql dump的请求, 不同 server上的instance(不同server上的相同instance)要求同一时间只能有一个处于running,其他的处于standby状态(standby是instance的状态)。 canal client : 为了保证有序性,一份instance同一时间只能由一个canal client进行get/ack/rollback操作,否则客户端接收无法保证有序。 1.2 环境准备 Canal:node01,node02 zookeeper: node01,node02,node03 MySQL: node01 1.3

程序员如何优雅度过一生的15个建议

回眸只為那壹抹淺笑 提交于 2021-01-23 23:10:37
首先,我要说明一下精彩的职业生涯应该是什么样。 他们不是这样的一个线性图形,不是每过一个月你就会有对应的成长。(就算是普通的职业生涯也不会这样。你不会每个月都有提升。每个月你都会变的好一点,但是每次有提升都是大幅度的) 精彩的职业生涯应该是这样。他们有一些时期缓慢的成长,然后从某些时刻开始快速成长。 为什么有不同的颜色?这些代表工作角色的转变:从软件开发到项目管理,销售到联合创始人或者此类。 中间也会有一些倒退挫折。因为要有所作为就要冒一些风险。冒风险就意味着有时也会遭遇失败。 现在开始: 编程: 1: 写代码,写很多代码 在学校里会学到很多理论知识,但是在实际的使用练习上却不多。尤其在顶尖的大学。教授很学院派,对于实际练习(practical)形式的教育常常不上心。成为伟大程序员的最好方式就是练习,写代码,写很多代码。不在于你在写哪方面的代码,重要的是你要在不断的写,然后提高自己。 2: 无视编程语言 编程语言只是一个工具。深入的了解一门语言是有好处的,但是学习新的东西也有好处。最好的程序员不会把被认为只是一个 __ 程序员(编程语言任填)。 职业选择: 3: 名气会帮助你 在你的简历里如果有在顶尖公司工作过的经历对于你后面的求职有很大的帮助。如果你能在Google, Facebook, Amazon, Microsoft, Dropbox工作,去吧。(但是别待太久,见下一条)

一个程序员的自述

跟風遠走 提交于 2021-01-23 20:50:46
从业四年,摸爬滚打的我,十分感谢路上碰到的给予过指导的师傅们,今天记录下曾经经历与大家分享,希望对刚入行的小朋友有点帮助。 16年7月末,大三结束后,在老家呆了7天就到了北京找实习工作。 清楚记得当时是两家单位叫我去面试,其中一家需要培训就没再考虑,在另一家单位面试通过,回顾下当时的场景: 大学并没有开设JAVA的课程,所以我去面试怀揣的仅仅就是从网上学习的简单的Struts2开发方法(无知者无畏) 面试官当时并没有问一丝丝关于JAVA基础或者框架的内容,问了在学校的一些情况,还问了爸妈的生日(没答上) 16年8月开始,稀里糊涂进了单位开始了作为一JAVA开发工程师的生涯( 这个时期真的是最渴望学习的时候,对未来的一无所知、憧憬让一个人那么热爱学习,但是如果你是一个人的话,学习效率却又那么低 ): 记得当时项目有一部分用的Spring框架,有一部分用的简单的Servlet 记得当时会学习怎么建一个工程并跑起来,说是学习其实就是照着一个好的工程抄一遍,记不住就多抄几遍 记得当时用的是Eclipse,在配置工程的时候会有很多复杂操作 记得当时配置Spring工程的XML文件时会因为xsd配置、命名空间配置搞出很多问题 记得当时调JSP样式只会硬写px,仅仅是在我的显示器上能看的顺眼而已 记得当时照着教程学习如何在Linux安装Mysql,安装Nginx,Nginx尤其复杂

自学系列 | 就谈自学方法!

点点圈 提交于 2021-01-23 13:24:34
阅读本文大约需要 5 分钟 今天虽然是周末,但是还是老样子,俺还要继续写俺的《自学系列》文章,俺也想尽快的更新完成。每次写这种文章,俺写前都要组织好自己的语言以及不确定的地方要去搜集大量的资料,写的时候要换位思考到读这篇文章的读者角,如何去写才能让读者能够有所思考和收获,有所感悟和实践。 如果没有看之前的两篇文章,建议去看一下,因为俺写系列的文章都是有一定的联系的。 自学系列 | 就谈自我管理! 我们有时候确实是看完文章就没有了下文,大家有没有这种感觉,文章里边可用到自己身上的只不过在看的过程中有所感悟和想法,过一段时间,已经忘记自己将要准备做些什么了。 其实这和学习编程一样,有些只停留在表面是什么上,这个过程是调动记忆力去采集信息的。而置为俺怎么说以及为什么这么说反而没有去经过深入思考,其实这就是我们今天要分享的学习方法问题。 说实话,俺在自己自学编程的道路上,发现很多的学习方式不仅用来学编程,还可以运用到其他各个领域的学习,所谓换汤不换药,只要你愿意加以思考和实践,你会发现学习一门新的领域,真的不是特别难。 之前分享过很多的学习方法,但是那些总的来说,逃不过今天的「学习三步曲」。其实这个世界很简单,之所以复杂,因为客观的事物加上了人为的主观意识。俺对这个世界的简单认识就是从 what、How、Why 来进行思考的,之所以认为复杂,只不过都是这三者的变体罢了。 学习三步曲 1

动画:面试必刷之二叉树的子结构

回眸只為那壹抹淺笑 提交于 2021-01-23 13:19:15
题目 输入两棵二叉树 A 和 B,判断 B 是不是 A 的子结构。 如下给你两棵树: 问题分析 我们要判断一个二叉树是否为另一个二叉树的子结构,如图,判断二叉树 B 是否为二叉树 A 的子结构,就需要从二叉树的 A 的根节点和二叉树 B 的根节点起开始判断。 如果两个二叉树的根节点相同的时候,我们就分别递归判断剩余的结点是否相同,如果相同,则 B 为 A 的子结构,否则,我们就判断其他的 A 的子结构是否和 B 的结构相同。 既然问题我们已经分析清楚了,我们开始手写代码。 动画实现 代码拆解 第一步,判断传入的两棵树是否为空,如果 A 树为空,则返回null。如果 B 树为空,则是 A 树的子结构返回 true。 1// 匹配的返回值 2const result = false; 3 4// 判断两棵树是否为空 5if(NodeA == null || NodeB == null){ 6 return null; 7} 第二步,如果两棵树不为空,则判断两棵树的根节点是否相同。 1// 根节点相等就进行匹配 2if(NodeA.data == NodeB.data){ 3 result = match(NodeA,NodeB); 4} 第三步,如果两棵树的根节点相同,则进行匹配。匹配过程是一个递归的过程。 1// 开始匹配 2const match = (NodeA,NodeB)=>

程序员面试:全部答错拿offer VS 全都答对没offer

戏子无情 提交于 2021-01-23 13:13:21
程序员面试,技术水平重要吗?当然了,技术是基础嘛。 不过技术并不是全部,而且一个面试者的技术能力如何,在面试成绩上,也未必反映得那么直接。 这是两个 真实的例子 : 两程序员A & B,分别去各自应聘企业面试。 A:面试官提出的问题,有少一半根本不会,其他的有的答错,有的答不全。总之没有任何一道题能完整答对。 最后拿到了offer。 B:面试官提出的问题,全都能回答出至少部分正确答案,多一半能完整答对。 最后没拿到offer。 这是怎么回事?后门?内幕?潜规则??? 如果说有内幕的话,只能说明,所有招聘岗位,工作能力只是候选人所具备的一项特征,而是否聘用,是多个特征综合考虑的成果。 A和B的际遇,其实基于这样一个简单的道理: 企业在雇佣人员的时候,考虑的是在所需时限内,找到和当前岗位最匹配的候选人 。 如何确认匹配呢?我们来看看下面几个方面: A B 态度 谦虚、坚韧 A同学颇有自知之明,认识到自己无论是理论基础还是学术背景都不够深厚的现状,态度自始至终谦虚有礼。 即使面对一句话都说不出来的问题,也努力的思考,并尽力解答,不到面试官说“换个题吧”,本人决不放弃。 傲慢、浮夸 B同学想必是把自己当作技术大牛看待了,落座后呈半瘫状堆在椅子里,一直 抬着下巴说话。 面试官每问一个问题,B同学必先仰天大笑三声,说一句:“我就知道你要问这个问题”,然后才进入解答步骤。 相对竞争力 面试成绩

Spring高级源码笔记:BeanFactory创建流程全面解析附带代码实现!

雨燕双飞 提交于 2021-01-23 12:59:34
BeanFactory创建流程 一、获取BeanFactory子流程 二、BeanDefinition加载解析及注册子流程 1.该子流程涉及到如下几个关键步骤 2.过程分析 3.时序图 一、获取BeanFactory子流程 时序图如下 本文参考资料《Spring高级源码笔记》,需要的同学添加助理VX:C18173184271免费获取 Spring面试专题文章点击这里!!! 二、BeanDefinition加载解析及注册子流程 1.该子流程涉及到如下几个关键步骤 Resource定位 :指对 BeanDefinition 的资源定位过程。通俗讲就是找到定义 Javabean 信息的 XML文件 ,并将其封装成 Resource对象 。 BeanDefinition载入 :把用户定义好的 Javabean 表示为 IoC容器内部的数据结构 ,这个容器内部的数据结构就是 BeanDefinition 。 注册BeanDefinition到 IoC 容器 2.过程分析 Step 1 :子流程入口在 AbstractRefreshableApplicationContext#refreshBeanFactory 方法中 Step 2 :依次调用多个类的 loadBeanDefinitions 方法 —> AbstractXmlApplicationContext —>

人脸识别SpringBoot快递代取平台系统 珍贵的一次开发经验分享给大家

两盒软妹~` 提交于 2021-01-23 10:56:37
最近上海理工大学光电学院的拉吉研究生张逸风全家出了车祸,他妈妈住进了ICU脑袋也不好使了,他爹害也不好意思过世了,这孩子挺坚强的,媳妇被人绿了,自己也住进去了,他委托我帮他开发一个系统,帮他圆梦,因此我开始了如下的创作,帮大家快速入门开发,奥利给 相关技术栈 前端: Thymeleaf、Bootstrap、Ajax、JQuery 开发环境: IDEA 、SpringBoot 2.1、Maven 数据库与缓存 :MySQL 5.7、Redis、Guava Cache 三方服务 :阿里云云短信服务、支付宝支付(沙箱)、百度人脸识别 安全框架 :Spring Security 其他技术 :API 接口限速、二级缓存 主要功能 登陆与注册: 用户名密码、短信验证码、人脸识别登录、QQ登录 权限: 普通用户、配送员、后台管理员 普通用户 :下单支付、订单查询、意见反馈、订单评价 配送员 :接单、订单管理、意见反馈、订单评价 系统管理员 :用户管理、订单管理、反馈管理 核心代码解析 短信接口代码解析 public SendSmsResponse sendSms(String mobile,String template_code,String sign_name,String param) throws ClientException { // String accessKeyId =env

三年半 Java 后端鹅厂面试经历,最后跪了!

余生颓废 提交于 2021-01-23 09:10:59
经过半年的沉淀,加上对MySQL,redis和分布式这块的补齐,终于开始重拾面试信心,再次出征。 鹅厂 面试职位: go后端开发工程师,接受从Java转语言。 都知道鹅厂是cpp的主战场,而以cpp为背景的工程师大都对os,network这块要求特别高,不像是Java这种偏重业务层的语言,之前面试Java的公司侧重还是在数据结构、网络、框架、数据库和分布式。所以OS这块吃的亏比较大。 一面基础技术面 电话面试,随便问了些技术问题,最后还问了个LeetCode里面medium级别的算法题,偏简单。 1、redis有没有用过,常用的数据结构以及在业务中使用的场景,redis的hash怎么实现的,rehash过程讲一下和JavaHashMap的rehash有什么区别?redis cluster有没有了解过,怎么做到高可用的?redis的持久化机制,为啥不能用redis做专门的持久化数据库存储? 2、了不了解tcp/udp,说下两者的定义,tcp为什么要三次握手和四次挥手?tcp怎么保证有序传输的,讲下tcp的快速重传和拥塞机制,知不知道time_wait状态,这个状态出现在什么地方,有什么用(参考quic)? 3、知道udp是不可靠的传输,如果你来设计一个基于udp差不多可靠的算法,怎么设计? 4、http与https有啥区别?说下https解决了什么问题,怎么解决的

Java面试题之Java基础

≡放荡痞女 提交于 2021-01-23 08:21:37
1 、作用域 public,private,protected, 以及不写时的区别 答: 区别如下: 作用域 当前类 同一package 子孙类 其他package public √ √ √ √ protected √ √ √ × friendly √ √ × × private √ × × × 不写时默认为friendly 2 、 Anonymous Inner Class ( 匿名内部类 ) 是否可以 extends( 继承 ) 其它类,是否可以 implements( 实现 )interface( 接口 ) 答: 匿名的内部类是没有名字的内部类。不能extends(继承) 其它类,但一个内部类可以作为一个接口,由另一个内部类实现。 3 、 Static Nested Class 和 Inner Class 的不同 答: Nested Class (一般是C++的说法),Inner Class (一般是JAVA的说法)。Java内部类与C++嵌套类最大的不同就在于是否有指向外部的引用上。注: 静态内部类(Inner Class)意味着1创建一个static内部类的对象,不需要一个外部类对象,2不能从一个static内部类的一个对象访问一个外部类对象 4 、 & 和 && 的区别 答: &是位运算符,表示按位与运算,&&是逻辑运算符,表示逻辑与(and) 5 、