摘要:
在最近做的一个项目中,由于每天核算的数据量过于庞大,需要把数据库进行分库保存。当数据分散到各个库之后,带来的数据更新操作就会存在一个一致性和完整性的问题。下面是一个典型的场景假设目前存在三个物理库,现在有一个文件,里面有1W条数据,根据分库的规则,可以把文件里面的数据分到三个库中,现在需要保证这1W条数据要要完整的保存到这三个库里面,并且数据是一致性的,也就是说 三个库里面已导入的数据完全和文件里面的数据一致。正常情况下,我们先把文件里面的数据按照所属的数据库分成三份,然后针对每一份数据库进行保存,在单库的情况下,可以保证单库的数据完整性。但是三个库要保证一致性,就是非常复杂的一项工作,很有可 阅读全文
摘要:
函数式编程的特点1 一切都是函数,没有对象的概念2 给定相同的输入产生相同的输出3 函数没有内部状态,函数没有副作用在erlang来说,继承了函数式编程的特点,同时增加了一条,elang函数变量只能赋值一次erlang继承了prolog的思想,在prolog语言中,有三种元素——原子,变量,列表,erlang也是一样,同时也继承了其语法和强大的模式匹配功能,这些特色都是来自与prolog如果说 erlang本身的特色的,主要包括以下几点:1 没有线程,都是轻量级进程没有线程就意味无资源共享,极大的简化了并发编程以及增加了并发执行的效率,对于并发实现来说,主要是创建一个轻量级进程。这个我比较好奇 阅读全文
摘要:
最近这一段时间一直在了解prolog这一门极其有意思的逻辑编程语言,和以往的命令式编程语言完全不一样。prolog是声明式的,个人觉得更像一门DSL语言,逻辑方面的DSL语言。prolog语言没有代码,其实就是三点事实:定义了一些逻辑概念,这些恒为真,不需要任何证明,就像欧式几何里面的公里一样。规则:定义基础事实之间的规则。有点像欧式几何的推理过程,由基础公里可以推导出来一些定理。目标:也就是问题,通过事实和定义的规则推导出来问题的解决方案,有点像数学证明题这一门语言最核心的就是递归。完全是通过递归去解决目标问题。递归有两个重要元素:边界条件,递归定义也就是不能无限递归下去,如果在单位时间内递 阅读全文
摘要:
最近这两周一直在看scala语言,突然发现这一门语言非常棒,能够编译成为java字节码。scala是编译式,静态,强类型语言,和java一样,但是经过scala添加的语法糖以及编译器的优化,在语言表达能力上完全比java强多了。现在看起来,java有一些太笨重了。和java相比,scala最大的优势在于1 类型推断,根据值推断类型,这个是经过scala编译器进行推断,个人觉得相对来说好实现。2 支持函数式编程:在java里面,任何事物都是对象。经过scala的语法润色,支持函数定义。其实执行起来还是需要对象的,只不过scala编译器帮你自己创建了匿名类,源代码层面看上去是定义了函数,实际是定义 阅读全文
摘要:
这周主要看了ruby,和prolog语言对于ruby语言,ruby是解释型语言,对命令一条条解释,其实个人认为也可以先编译,在执行,加快效率,甚至可以和java的JIT一样,编译成本地语言,加快执行速度。ruby明显特点就是动态性,变量不需要定义直接可以赋值,相对与java这样的静态语言,变量需要先定义变量名和变量类型,然后进行赋值,而ruby就可以直接进行赋值,赋值的过程包含在定义里面。这种特定对于开发效率非常高,但是排错的情况就比较复杂。对于里面提到的鸭子类型,并没有太大的感觉,和接口有点类似,实现了某一个接口的类就具有接口的类型,唯一不同的是ruby没有接口,可以通过mixin机制来实现 阅读全文
摘要:
今天写java代码,发现一个ruby的一个特性非常有意思,就是调用任何方法都有返回值在javabean里面,调用set方法,返回为void,如果想初始化对象,必须写成多条语句。例如帮助12345XXXBean xx = new XXXBean();xx.setName(name);xx.setAge(age);而在ruby里面,用xx.setName(name).setAge(age) 一行语句搞定,效率相当高由重新看了io语言,终于理解了javascript里面的prototype是什么意思,原型就是对象的类型,和面向对象Class有点类似,但是原型本身也是一个对象。可以在类型上添加方法 , 阅读全文
摘要:
原来一直是java的忠实粉丝,开始觉得java语法严谨,类型安全,面向对象的特性,觉得java特别适合大企业,多人协作式开发。这两年,自己也尝试做一些网站,发现java在这方面效率太低。所以慢慢接触了php,groove这些脚本语言,一下子开阔了自己的视野。所以买了这本书来了解各个编程语言的设计思想以及特性书名提到了编程范式,个人理解就是编程模型或者程序的设计思想,从以前的面向过程的编程(汇编,C),到面向对象的编程(java,c++,.net),在到函数式编程(list,haskell),再到并发编程(go) 。之所以出现这么多编程范式,个人觉得就是对为了解决特定的问题,在偏业务领域,比较适 阅读全文
摘要:
在java中,我们经常使用的是单例模式,这些设计模式在ios开发中也比较常用,最近也在考虑使用在ios开发中使用单例模式在objective-c中,需要在.m文件里面定义个static变量来表示全局变量(和java里面的类变量类似,但是在objective-c中,static变量只是在编译时候进行初始化,对于static变量,无论是定义在方法体里面 还是在方法体外面其作用域都一样在我们经常使用的UITableViewController里面,在定义UITableCellView的时候,模板经常会使用以下代码帮助1234567891011- (UITableViewCell *)tableVie 阅读全文
摘要:
(Command 键) – 在某些 Apple 键盘上,此键也可能带有 Apple 标志()(Control 键)(Option 键)-“Alt”可能也出现在此键上(Shift 键)(Caps Lock 键)- 切换大写字母锁定开或关fn(功能键) 阅读全文
摘要:
在java程序中,最常用的就是单例模式,这个在objective-c一样可以使用,但是和java还是有一点区别。简单看一下java里面如何定义一个单例模式public classSingletonClass{private staticSingletonClassinstance = null;privateSingletonClass(){}public static final getInstance(){synchorinzed(this){if(instance == null){instance = newSingletonClass();}returninstance}}}在ios 阅读全文