首页 > 代码库 > 一些心得(持续更新)
一些心得(持续更新)
数据库查询:
数据库查询对并发处理和事务处理都有很大影响;
查询性能越好,随并发量上升导致的性能下降的影响越小;
查询性能越好,受其他事务排他锁的影响越小;
总之,要解决超时、死锁等问题,优化查询性能,缩短事务时间(最好不用事务)是最根本办法
(非原创,引用自网络)用两个例子看清楚分布式和集群的区别:
例子1:
如果一个任务由10个子任务组成,每个子任务单独执行需1小时,则在一台服务器上执行改任务需10小时。 采用分布式方案,提供10台服务器,每台服务器只负责处理一个子任务,不考虑子任务间的依赖关系,执行完这个任务只需一个小时。(这种工作模式的一个典型代表就是Hadoop的Map/Reduce分布式计算模型) 而采用集群方案,同样提供10台服务器,每台服务器都能独立处理这个任务。假设有10个任务同时到达,10个服务器将同时工作,10小后,10个任务同时完成,这样,整身来看,还是1小时内完成一个任务!
例子2:
一堆机器堆在这儿,具备一定的相同的功能属性,就可以叫集群 分布式的话,应该是具备分布式特性的一类系统
集群的作用:负载均衡,错误恢复
集群式资源整合,分布式是计算能力整合
集群=聚合,分布式=组合
减少线程切换:
几乎所有IO操作(包括磁盘和网络)都产生线程切换
Mutex, AutoResetEvent, Sleep等方法会产生线程切换
在应用服务化的时代,网络服务接口常常被当成本地方法使用,当这样的接口被放入循环,递归中时,线程切换的时间消耗往往会超过要执行的逻辑本身+网络传输的开销
如何避免:
所有的IO操作用异步模式(这个比较难)
对会产生IO的接口使用特别小心
封装IO接口,适当引入缓存
设计时提供批量和单个接口,减少IO次数
……
降低嵌套循环:
用hash表,字典,分组等手段优化嵌套,把多层循环变成多次循环(复杂度由高次方变成一次方)
防暴力破解:
MD5(x+MD5(y));y.length>=8
一些心得(持续更新)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。