TODO LIST
待整理知识点,备忘
-
SDK:单项目多插件架构
-
Android:关键知识梳理
-
Linux
-
JVM
-
源码解析
-
Servlet门面模式
-
github:
Android View可见性判断
重定向工具类
来电闪屏 -
DBFound:
参考资料:github,快速应用开发平台 dbfound
- docker:一个类似虚拟机的技术
- Raft:分布式系统的算法,类似的有Paxos
参考资料:分布式系统的Raft算法
- Dubbo:一个分布式服务框架
参考资料:Dubbo是什么
- Hystrix熔断机制:
参考资料:Hystrix入门指南
- Velocity:是一个基于Java的模板引擎。它允许任何人使用简单而强大的模板语言来引用Java代码中定义的对象。
参考资料:Velocity入门
- Storm:
参考资料:《Storm入门》中文版
- TEST
参考资料:REST简介,REST,以及RESTful的讲解
- JS教程
- mongodb
- redis
- 索引
- 主仆模式
- maven深入
-
看完Wiki
-
大学习方向
- RPC
-
优雅降级、渐进加强
-
protobuf和protostuff
protostuff是一个基于protobuf实现的序列化方法,它较于protobuf最明显的好处是,在几乎不损耗性能的情况下做到了不用我们写.proto文件来实现序列化
https://blog.csdn.net/eric520zenobia/article/details/53766571
- Big Endian 和 Little Endian
- 负载均衡算法对比
轮询,随机,地址哈希,加权轮询,加权随机
- 负载均衡软件解决方案
LVS和Nginx的对比
- 集群间zab协议,Zookeeper举例
leader election、Atomic broadcas
- zookeeper容错特性
问题,zookeeper是为了避免服务路由或负载均衡服务器宕机而出现单点故障,但是,容错特性这里:zookeeper挂了怎么办?是同时將zookeeper部署在多台服务器(zookeeper集群)做容错处理吗?
服务消费者只有第一次调用服务器时需要查询服务配置中心(zookeeper),后面缓存到本地,而不需要再次请求,知道服务器的地址列表有变更?那服务消费者是怎么知道变更的?通过和zookeeper的长连接接收推送吗?
- zookeeper的watcher为什么设计成一次性的,也就是说,每次在处理完状态变化事件之后,需要重新注册watcher,这个特性也使得在处理事件和重新加上watcher这段时间发生的节点状态变化无法被感知。
-
一致性哈希算法?page 68
-
负载均衡算法里的最小连接数算法(Least Connections),最小积压连接数?要是多台服务器的积压连接数是一样,怎么处理?用随机分配吗?
-
由于memcache使用了libevent来进行高效的网络连接处理,因此在安装memcache之前,需要先安装libevent
libevent是啥?
memcache官方提供Memcached-Java-Client工具包含了对memcache协议的Java封装,可以设置是否适用Nagle算法,什么是Nagle算法?什么是Hash算法?
CAS操作?
ACID操作?
- MySQL复制(replication)策略
將一台MySQL数据库服务器中的数据复制到其他MySQL数据库服务器上。当各台数据库服务器上都包含相同的数据时,前端应用通过访问MySQL集群中任意一台服务器,都能够读取到相同的数据,这样每台MySQL服务器所需要承担的负载就会大大降低,从而提高整个系统的承载能力,达到系统扩展的目的。
要实现此功能,需要开启Master服务器端的Binary log。数据复制的过程实际上就是Slave从Master获取binary log,然后在本地的镜像执行日志中记录的操作。由于是异步操作,可能数据有延时,只能保证数据的最终一致性。
为了让SQL语句在Slave端也能够正确的执行,Master还需要记录SQL执行的上下文信息,SQL执行的上下文信息是什么?
Slave需要將Master上的sql全执行一遍,还需要执行所有查询,Master就只是做写入,怎么感觉不需要Master也可以?答案:如果没有Master,如果有Slave的sql执行失败,那以哪个Slave的数据为准?所以需要Master来保证数据一致性。另外,主从分离,要看业务场景来使用,比如银行系统,要求数据写读不能有延时,一定要即时一致性,就不能用读写分离的方案。
-
分表,冷热数据不均衡场景?
-
分表分库一般采用的对关键字段取模的方式,比如user_id%256,那么当256个表或者库也已经到达了瓶颈,这时候再次分表或分库,会导致取模不一致问题,怎么解决?还是有别的解决办法?难道一开始就用一致性hash?但是一致性hash也会导致部分数据受影响?
-
垂直化搜索引擎 Lucene
倒排索引
-
操作系统对进程打开的文件句柄数是有限制的
-
ISV 英文全称是Independent Software Vendors ,意为“独立软件开发商”,特指专门从事软件的开发、生产、销售和服务的企业,如微软(Microsoft)、甲骨文(Oracle)等。
-
取文件魔数
通过缩放图片改变图片的二进制结构,避免恶意代码执行,ImageMagick+jmagick
- 常见的Web攻击手段
XSS,CRSF,SQL注入,文件上传漏洞,DDoS(SYN Flood,DNS Query Flood,CC),DNS域名劫持,CDN回源攻击,服务器权限提升,缓冲区溢出等
- 数字签名
通过组合数字摘要和非对称加密算法,来确认内容是否被篡改,发送者是否正确,比如MD5withRSA,SHA1withRSA
- 摘要认证、签名认证和Https的进化过程
摘要认证:http协议里,通过数字摘要算法,例如MD5等,对传输的数据进行摘要,为了防止彩虹表攻击等,一般会哈希加盐,盐就是约定的私钥,通信的两端都需要保存(因此有泄露风险),两端通过这套相同处理用于判定传输的数据是否被篡改,但是无法做到对全部数据进行加密
签名认证:对所有数据进行非对称加密,用公钥私钥加解密,相对于摘要认证,可以对所有数据进行加密,更安全,但是对所有数据进行非对称加密,要消耗更多的性能和硬件资源
https:用相同密码及算法对数据进行高性能的对称加密,这个密码每次都用用签名认证的方式(非对称加密)进行传输,因此这个密码可以每次都不一样,因为只对这个密码进行加密,消耗的性能和硬件资源相对小很多。这个方案简直完美!
- kafka
Partition含有N个Replica,N为副本因子,其中一个为Leader,处理所有读写,其他都为Follow,定期同步Leader上的数据,为什么这样设计?有什么办法解决Leader的读写瓶颈吗?
Producer根据指定的路由方法(Round-Robin、Hash等),将消息push到topic的某个partition里面。路由方法的选择?比如hash和round-robin的弊端问题怎么处理?一个broker里面是只有一个partition吗?
- Spring boot
-
堡垒跳板机
-
各个技术比较,及使用sample,代码上传到github
-
macaca+uirecorder android 源码分析,技术原理
作者:DiffX —— 这个人在加班
出处:http://www.cnblogs.com/diffx/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步