最近听到一些学员反馈《迷你微信红包》这个项目遇到瓶颈了,如果按照企业分层架构去设计和实施,感觉架构设计这块技能没GET到,心有余而力不足。但是也不想用已经熟练的一套技术去解决。
下面是理工网络专业刘同学的“架构”,我们一起看看。
客户端
用户名和密码做正则表达式校验;
用户名优先到服务器做唯一性校验(优点就不赘述了);
密码采用RSA+Base64/MD5混合加密(防止被暴力破解--穷举比对,打算在用户名里取特定位置的字符和密码做移位);
验证码打算借用牛逼哄哄的12306那样,哈哈,佩服我不?必能识别妖魔鬼怪。
虽然有成熟的Http+Openssh,但是我不打算用,因为我觉得只有底层TCP协议栈那套东东才能吸引我。这里要感谢老师讲过的霸气服务器编程模型--Reactor+libevent(Epoll)+线程池(自创的哦,调度算法用过的人都说很流弊)+异步多队列+消息写扩散+亿级别红包秒过期算法方案。
服务器
服务器要实现的功能和考虑点略多,点击我查看。
好,偏题了。回到主题:如何完美备战实习生和秋招?
基础很重要,基础很重要,基础很重要。嗯,三遍就行。
知己知彼百战不殆,下面看下众多学长学姐们精心整理的面经。
面试大概知识面,总结目的不是猜题,只是引导大家有重点,不迷失。
最后,给寒假在家复习的学员一些具体建议:
把socket网络编程再深入去学习和实战,切记,实战才能发现一些细节问题,解决这些问题又可以引出来一些相关的知识。具体可参考《Linux TCP/IP 协议栈》、《深入分析Linux内核源码》。
尝试把客户端发送第一个请求链接报文到三次握手完成,发送数据后,服务器如何处理ip头部、如何处理tcp头部,如何调度起进程,内核在哪里取数据,放到哪里,进程又如何去内核取数据,涉及的核心流程和数据结构是哪些。。。
提示:struct sock、struct socket、struct sk_buff、struct inode ,把各自作用和关系梳理一下。
把多线程、多进程基本使用,通信机制等代码实战。在把我的CSDN为大家收集的多线程系列文章看看。
把数据结构复习一下,可以扩展看下海量数据处理方案,此外也要把《剑指Offer》看起来。
人与人的区别在于如何把控自己。
合理规划自己的时间,你身边是什么样的人,你才能成为什么样的人。希望大家能把握好人生重要的一次转折点,加油。一会儿群里我再分享一个实习生复习资料加油包,接着就看大家十八般武艺了。