数据库事务实现原理 1.1. 自己在程序中实现事务操作。 如果只是需要事务的话,你自己给mongo操作加上事务功能就可以啦。。数据库事务只不过是他自己实现了而已。。如果数据库不支持事务,就要你在代码里面实现事务就可以了。。 最简单方便的就是使用日志方式来做事务就可以了。。 比如插入俩个数据。每执行一个sql,就生成一个undo日志即可。。 Undo日志表如下字段(事务id,表格名称,操作【insert,update,delete】,原记录id,...
1.LinkedList实现的基本原理 LinkedList是一个双向链表,它主要有两个表示头尾节点的成员变量first 、last,因为有头尾两个节点,使其很方便分别从头尾操作数据。LinkedList通过内部类Node来保存元素 ,一个Node对象表示一个链表的节点,有多少个元素就需要同样个Node节点。如果要添加元素,则新建一个Node节点,保存这个元素,同时指定其前驱节点和后继节点的引用。若要删除一个元素,则将取消此元素对应的Node节点在链表中的前驱...
(KVO)键值观察者底层解析涉及到了runtime,关于isa指针手动实现键值观察(代码示例)被观察的对象Target(重写setter/getter方法)Target.h@interface Target : NSObject {int age; } // for manual KVO - age- (int) age; - (void) setAge:(int)theAge; @end Target.m@implementation Target - (id) init{ self = [super init]; if (nil != self) { age = 10; } return self; } // for manual KVO - age - (int) age{return age;...
文章目录背景介绍关键配置主要实现类改造需求实现方式背景介绍研究一个开源项目,做二次开发,与公司业务系统集成,基础数据打通,基础功能要做替换改造。研究代码发现,dao层操作就是一系列Mapper接口声明及MapperProvider的定义文件,以下是改造过程介绍:关键配置配置Sqlsession,mapper目录DataSource dataSource = getDataSource(); TransactionFactory transactionFactory = new JdbcTransactionFactory();Environment enviro...
LevelDb日知录之一:LevelDb 101说起LevelDb也许您不清楚,但是如果作为IT工程师,不知道下面两位大神级别的工程师,那您的领导估计会Hold不住了:Jeff Dean和Sanjay Ghemawat。这两位是Google公司重量级的工程师,为数甚少的Google Fellow之二。Jeff Dean其人:http://research.google.com/people/jeff/index.html,Google大规模分布式平台Bigtable和MapReduce主要设计和实现者。Sanjay Ghemawat其人:http://research.google.com...
SDWebImage这个类库提供一个UIImageView类别以支持加载来自网络的远程图片。具有缓存管理、异步下载、同一个URL下载次数控制和优化等特征。SDWebImage 支持异步的图片下载+缓存,提供了 UIImageView+WebCacha 的 category,方便使用。SDWebImage加载图片的流程:1. 入口 setImageWithURL:placeholderImage:options: 会先把 placeholderImage显示,然后 SDWebImageManager 根据 URL 开始处理图片。2. 进入 SDWebImageManager-do...
前言1. FineUI(开源版)是完整开源,最早发起于 2008-04,下载全部源代码:http://fineui.codeplex.com/2. 你可以通过捐赠作者来支持FineUI(开源版)的发展:http://fineui.com/donate/ FineUI的FState与ViewState早在2013-01 我曾写过一篇文章,对FState有详细介绍:http://www.cnblogs.com/sanshi/archive/2013/01/08/2850459.html现在来简要回顾一下:1. ViewState是ASP.NET WebForm的基石,用来在页面回发过程中维持控件状态...
代理是是什么?代理可以提高代码的复用性代理的作用:1、封装变化点 2、解决类与类之间的强耦合性3.、可以在类之间进行数据传递什么情况下使用代理?有一系列的变化点(比如我们所用的空间UIScrollView 有许多方法,苹果对其进行了封装,给用户提供了接口,用户只需遵守协议,然后实现协议方法即可)能够让用户清晰的了解到哪些变化方法被封装起来了实现代理需要以下的几个步骤:定义协议方法 这里实现的是登录界面的封装,使用了代...
简介: 从应用场景出发,给出解决方案与实现原理,并提供整套工业级实现源码。 作者:丁威 活动中心场景介绍 在电商系统上线初期,往往会进行一些“拉新”活动,例如活动部门提出新用户注册送积分、送优惠券活动。 基于分布式、微服务的设计理念,通常的架构设计(子系统交互)如下图所示: 其核心系统介绍如下: 账户中心 提供用户登录、用户注册等服务,一个新用户注册时,向 MQ 服务器中的 USER_REGISTER 主题发送一条消...
一、概述 线程池,顾名思义就是存放线程的池子,池子里存放了很多可以复用的线程。 如果不用类似线程池的容器,每当我们需要执行用户任务的时候都去创建新的线程,任务执行完之后线程就被回收了,这样频繁地创建和销毁线程会浪费大量的系统资源。 因此,线程池通过线程复用机制,并对线程进行统一管理,具有以下优点: 降低系统资源消耗。通过复用已存在的线程,降低线程创建和销毁造成的消耗; 提高响应速度。当有任务到达时,无需...
简介 内存堆是内存管理的一种方式,用户可以把一块固定的物理内存交给内存堆管理。在设备驱动需要反复的申请、释放内存时,为了提高内存的利用率,用户可以申请一块物理内存作为设备驱动专有的内存堆,并可以从这块内存堆里申请。 内存堆操作库中的函数才是region接口实现的核心代码,region接口是简单套用堆内存操作函数实现的。内存堆操作库中的函数只能由内核调用,源码位于libsylixos\SylixOS\kernel\core_HeapLib.c文件中。 内...
唯一索引唯一索引是不允许其中任何两行具有相同索引值的索引。 当现有数据中存在重复的键值时,大多数数据库不允许将新创建的唯一索引与表一起保存。数据库还可能防止添加将在表中创建重复键值的新数据。例如,如 果在employee表中职员的姓(lname)上创建了唯一索引,则任何两个员工都不能同姓。主键索引数据库表经常有一列或列组合,其值唯一标识表中的 每一行。该列称为表的主键。在数据库关系图中为表定义主键将自动创建主键索引...
前言这是我看到一篇很好的文章,转载至此,希望对你也有帮助。 正文内容AOP(Aspect Orient Programming),我们一般称为面向方面(切面)编程,作为面向对象的一种补充,用于处理系统中分布于各个模块的横切关注点,比如事务管理、日志、缓存等等。AOP实现的关键在于AOP框架自动创建的AOP代理,AOP代理主要分为静态代理和动态代理,静态代理的代表为AspectJ;而动态代理则以Spring AOP为代表。本文会分别对AspectJ和Spring AOP的实...
转自http://blog.csdn.net/kennyrose/article/details/7532032 强烈建议参阅链接:http://www.linezing.com/blog/?p=798#nav-1 说白了,索引问题就是一个查找问题。。。 数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。 在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数...
Note:文章的内容基于JDK1.7进行分析。1.8做的改动文章末尾进行讲解。原文地址:https://www.cnblogs.com/java-jun-world2099/p/9258605.html 一、先来熟悉一下我们常用的HashMap: 1、概述 HashMap基于Map接口实现,元素以键值对的方式存储,并且允许使用null 建和null 值, 因为key不允许重复,因此只能有一个键为null,另外HashMap不能保证放入元素的顺序,它是无序的,和放入的顺序并不能相同。HashMap是线程不安全的。 2、继承...