Uncategorized

Uncategorized

面试ip查找问题

面试ip查找问题 现在有一台服务器内存是4G,硬盘无限大,服务器上存储了大量nginx 或者apache的访问日志,如何查询一个ip是否在服务器中访问过(注意不能借助第三方组建或者中间件工具,redis mysql es 等) 检索指定ip是否访问过? 在服务器协议个程序读取指定目录一条一条文件进行过滤找到了就通知在哪一个文件, 直接使用grep检索指定目录 如何检索一批ip是否访问过? 同样写一个程序一个文件一行读取后会被ip组进行比较 使用sed awk grep 进行检索 如果需要将这个功能封装成一个服务 使用布隆过滤器 判断是否一定不存在,一定不存在的pass 存在的再进行检索 将ipv4的数据分段,每一段是一个文件树的一层,组成一颗矮胖的二叉树 使用bitmap将所有数据读取到内存中后使用内存做索引,直接用bitmap检索ip段是否出现

Uncategorized

开发流程中Mysql设计表和优化表的过程

开发流程中Mysql设计表和优化表的过程 在实际开发过程中,先有开发需求,要解决实际问题和诉求在进行需求分析规划和排期, 我的实际开发流程 产品的需求文档,讲解需求,功能描述等 整理要实现的需求和功能点,和产品,需求方做功能确认 整理需求写开发文档 整理表关系,画er图,完善开发文档 写开发文档,实际完善和填充表字段和表结构 整理需求中涉及到的模块和开发顺序流程 如果涉及到老的业务流程和表结构的需要和之前的代码所有人同事进行确认沟通 开发过程中表结构可能还有缺陷,需要进行完善和补充, 有些场景下明确知道会有大量频繁查询的固定组合sql 可以提前建立索引 需要注意在设计表结构的时候需要和需求方确定一定的数据体量的预期,预期是20w 数据量,实际2000w数据量,这种数据量差异设计的表结构一定是不匹配,并且有问题的 开发上线后,需要根据慢查询sql 和实际接口响应,包括数据的增量状态来调整和完善表结构, 实际项目中,某些变化比较大,增量较大的项目可能会有较大的差异,需要注意实时分析和调整 今天面试某有声app科技公司有问到该问题,当时回答的不是很完善,回来整理了一下,希望对你有所帮助!

Uncategorized

Mysql中int(10)和int(11)有什么区别

Mysql中int(10)和int(11)有什么区别 mysql数据类型中int 数据类型也可以指定长度,但是mysql的int长度和varchar的长度的意义有些不同 不管是int(10)或者int(11)在存储大小和数据内容上是一致的,都是存储的4字节存储范围是-2147483648 – 2147483647 int类型的长度指示作用是显示宽度 当mysql 语句中使用zerofill 时 会在mysqlint字段中补充前导零,如果11位会填充满11位的前导零,10位则填充至10个前导零, 如果不使用zerofill则这个数字的填充位数不生效

Uncategorized

技术面试遇到的有趣的问题

技术面试遇到的有趣的问题 你有什么优势和别人比 审题总结就是你和别人比有什么不一样,’What’s the difference?’ 开放式问题没有标准答案大概可以分几个维度方向去回答这个问题 你的不可替代性 重点描述你的特长和不可替代性,或者在众多求职人中比较稀缺的能力,都可以说 岗位匹配度 重点描述你与岗位的匹配度 你的技术专业垂直度 技术深度,技术面,架构能力,对新知识点的获取积累,总结能力 技术基础 技术内容和基本功 基本面 基本情况,技术积累,技术能力,开发能力 文档和与人协调的能力 文档能力和与人配合的能力在中大型企业是非常需要,非常重要的,一定不要忽视 遇到问题的应急处理能力 遇到问题如何处理,有哪些自己单独负责项目并且解决问题的案例也可以说 表达和技术总结输出能力 技术人看问题的角度和表达方式都是在技术层面,但是实际工作和需求中,可能需要与大量不懂技术的其他职位的同时打交道,并且让他明白你的技术难点和技术方案是一项非常有优势的能力 融洽的与人配合 有些技术人员专业能力非常棒,但是不太能融洽的和同事相处,在中大幸公司与人配合协调的能力非常重要,10句话8句都是怼人的技术不是好技术 是否能站在技术之外看待问题? 在做开发时间长了之后,会有技术的路径依赖,处理一些问题更多的会依赖自己的技术能力,但是实际开发中可以尝试技术以外的方式看待或者处理问题,实际效果可能会更好 软件工程能力 对于程序员来说,产出的是代码,程序,实际项目是通过代码支撑运行,产生价值和收益,但是实际的开发完善和需求过程中,你写代码过程中的需求文档,开发文档,er图,表结构说明,表注释,完善良好的测试用例,关键逻辑的说明文档,api结构文档,业务逻辑说明文档,在软件工程中是对代码的强有力支撑,并且如果有完善的软件工程支撑的代码,会更加健壮完善,更好维护和迭代 总结: 实际面试中有些hr不懂技术,并且在成千上万的简历中,如何留下印象 是你要考虑的问题和方向 以上是一些经验和思考,临时想起来记录一下,希望对你有所帮助!

Uncategorized

Mysql的索引是如何实现数据的快速查找的

Mysql的索引是如何实现数据的快速查找的 inndb的存储引擎,索引实现的数据结构是B+树的一个数据结构,B+树是一个比较矮胖的数据结构,本身的特性比较适合在io磁盘的场景下做数据索引,可以减少大量不必要的io查询操作 B+树的数据结构本身就是一个平衡树,每个节点的子节点数量是固定的,每个节点的子节点数量是相等的 B+树的每个节点都有一个指向下一个节点的指针,这个指针可以用来遍历整个树 B+树的每个叶子节点都有一个指向下一个叶子节点的指针,这个指针可以用来遍历整个树

Uncategorized

Mysql-sql实例分析

Mysql-sql实例分析 Select A,B,C FROM t WHERE D=? AND E=?; 索引:D,E 组合索引 Mysql 执行这个sql 查询数据,会先根据索引D 查找符合条件的叶子节点,然后根据索引E 查找符合条件的叶子节点,最后返回符合条件的结果 问题:索引不变,新增一个字段F,F字段没有索引,sql也不变的场景下,查询效率会不会有变化? 我认为这个场景不会有变化,sql语句使用同样的索引命中同样的叶子结点,然后查询B+树的主树,根据id去检索数据,查询命中数据条目,最后将用户需要的数据字段检出返回给用户

Uncategorized

为什么要从php迁移到go

为什么要从php迁移到go 今天约到一个公司面试,聊到他们公司正在从php语言迁移到go语言,我就想知道他们为什么要迁移到go语言,有什么优势吗? 他们的回答是: 1. go语言是一种编译型语言,编译后直接运行在操作系统上,没有解释器的 overhead,所以性能要比 php 高很多。 2. go语言天生支持并发,通过 goroutine 和 channel 可以很方便地实现并发编程,而 php 原生要实现并发编程比较繁琐。 for example: 在实际使用场景下: php在需要进行大量数据计算和数据清洗的场景下,原生php只能顺序执行,在遇到计算体量比较大的场景下,如果顺序执行的时间成本比较高,比如要计算10个模块的子数据块的金额数据,一个数据块需要500ms 10个数据块则是5000ms go在进行大量数据计算和数据清洗的场景下,通过 goroutine 和 channel 可以很方便地实现并发编程,每个数据块可以分配一个 goroutine 来并行计算,最后通过 channel 来合并结果,这样可以大大提高计算效率,减少时间成本。同样的计算场景下10个子模块的数据可以将10个子模块的数据计算叠加到一起进行并发计算,计算需要的时间则是10个子模块数据计算中计算时间最长的单元的时间成本,相比于10个模块时间成本的和计算的时间成本是指数级的提高。 3. go语言的学习成本和php的swoole型框架的学习成本比较,底层知识的学习成本是一样,相近的,在相同学习成本的场景下,go语言普适性更高,性能更好,社区支持更长久,第三方框架和语言功能适配性会更好 4. go语言生成的二进制包能更好的迁移和服务器扩容

Uncategorized

MySQL事务隔离级别

MySQL事务隔离级别 事务四大特性(ACID) 特性 说明 MySQL 实现方式 原子性 (Atomicity) 事务要么全部完成,要么全部不完成 Undo Log(回滚日志) 一致性 (Consistency) 事务前后数据完整性一致 业务逻辑 + 数据库约束 隔离性 (Isolation) 事务之间互不干扰 MVCC + 锁机制 持久性 (Durability) 事务提交后永久生效 Redo Log(重做日志) 四种隔离级别 1. READ UNCOMMITTED(读未提交) SET SESSION TRANSACTION ISOLATION LEVEL READ UNCOMMITTED; 特点: 可以读取其他事务未提交的数据 脏读、不可重复读、幻读 都可能发生 使用场景: 对数据一致性要求极低的场景 统计类查询(如 count(*),允许一定的数据偏差) 实际生产环境几乎不使用 示例: — 事务A BEGIN; UPDATE accounts SET

Uncategorized

HTTP 协议简介

HTTP 协议简介 Page 1 E2HyperText TraTsfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。HTTP的发展是由蒂姆·伯纳斯-李于1989年在欧洲核子研究组织(CERN)所发起。HTTP的标准制定由万维网协会(World Wide Web Consortium,W3C)和互联网工程任务组(Internet Engineering Task Force,IETF)进行协调,最终发布了一系列的RFC,其中最著名的是1999年6月公布的 RFC 2616,F0mlth.616HTTP2cfr/atarr14年12月,互联网工程任务组(Ien超文本传输协议(英文:)的Hypertext Transfer Protocol Bis(httpbis)工作小组将HTTP/2标准提议递交至IESG进行讨论,于2015年2月17日被批准。 HTTP/2标准于2015年5月以RFC 7540正式发表,取代HTTP 1.1成为HTTP的实现标准。-enRFC文档ihttps://www.rfc-editor.org/rfc/inl 协议简介 1H。.1TTP 协议中现今广泛使用的一个版本——PTTH定义了 Page 2 HTTPRFC图解⽂档的定义请求格式 Page 3 HTTP请求格式 Page 4 HTTPRFC图解⽂档定义响应格式 Page 5 HTTP响应格式 Page 6 HTTP URI Page 7 w/Hostttp:可以部署多个h/wwww./index.htmltest2http://w.Host.test1.comco有些代理不接受⾃定义的mHTTP HeadersWEB站,根据请求头域说明了正在请求资源的⽹络主机和端⼝号,同⼀台服务器服务器收到了这两个请求,会根据oHst这个⾸⻚,在浏览器访问如下两个地址Host定位到正确的资源的资源,⽐如⼀台deraHestiltmh/iHndex.sto/ ndex.html Ho BWEstHo服务器部署了两个⽹站,都有字段来区分是请求哪个⽹是是tecoww..cost2mwwww.test1m. Page 8 ded-ForX-Forwarded-For格式如下:]X-Forwarded-For: client,”proxy1, proxy2R可以看到,XFF 的内容由「英文逗号 + 空格」隔开的多个部分组成,最开始的是离服务端最远的设备

Scroll to Top