首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

编写加工中心优秀宏程序要诀

有很多新手在编程序时就像‘逛街’一般,脑子里想去哪里就去哪里,写程序想到哪里就写到哪里,当遇到难题就‘跑’(GOTO),这样是不对的,当遇到困难要勇敢面对,不要动不动就GOTO,这样的程序不仅可读性低而且程序执行效率也低,那么作为一个新手,刚开始编程时我们应该怎样来做呢?首先,要养成一个良好的习惯,先确定自己要编写一个什么功能的程序,确定了功能后,再画个流程图,当哪个部分须实现什么功能,需用什么算法,都可以画在上面,有句话说:“说的不如写的,写的不如画的“,当把程序的构架整理好了就可以照着图编写程序了,当遇到了什么难题都可以很轻松的搞定它,再也用不着遇到问题就GOTO了。

01

关于数据库的一些学习笔记

一、锁、并发 一个很有趣的事实:容易理解的模型性能都不好,性能好的模型都不容易理解。(性能好,这就意味着锁的颗粒度很少,这样就需要更多的细节) 事务单元: 一个简单的例子: bob给smith100元 顺序是: 锁定bob账户,锁定smith账户,查看bob账户是否有100元,bob账户减100元,smith账户增加100元,分别解锁。 这个时候很重要的是事务的一致性,客户端的查看,都要是一致的,四个原则ACID。 事务之间的抽象: 读写,写读,读读,写写 方式: 序列化读写: 优势:不需要冲突控制 劣势:慢速设备 排他锁事务单元之间没有冲突,就应该并行,只有两个事务单元共享数据时,只能排队。 读写锁: 写和读分开,读之间是并行 排队法: 针对同一个单元的访问控制 MVCC: 写时复制的方式,对写进行优化,能够做到写不阻塞读 二、事务的常见问题 读写之间的先后顺序: 逻辑时间戳 SCN(oracle) Trx_id(Innodb) 还有物理时间戳,实际上就是时钟的概念 故障恢复: 业务属性不匹配:记录下所有操作的反操作。 系统崩溃:checkpoint 死锁产生的原因: 两个线程,同时获得了不同的锁,但是这两个锁具有逻辑关系。方案:降低隔离性,碰撞检测(会把所有的锁记录下来,两个集合的并集,中止其中一边),等锁超时(解锁) 不同方向 相同资源 三、单机事务 ACID。 原子性:一个事务要么同时成功,要么同时失败。要回滚到事务的初始状态,不存在中间态。只记录了undo日志回滚。 一致性:can(happen before)保证能够看到系统内的所有更改 隔离性:以性能为理由,对一致性的破坏。快照读的情况下能保证在读到一致性的同时实现读未提交。 持久性:事务完成后,该事务对数据库所作的更改便持久的保存在数据库之中。持久性和延迟二选一。 四、分布式事务 目标: 提供与单机事务一样的操作 可按需无限扩展 问题:基于锁的事务遇到的问题 --2PL到2PC --异常处理 --日志记录 --延迟问题 MVCC碰到的问题 --顺序 数据共享,时序,延迟,超时是否成功,光速不是无限的

02

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券