- 博客(36)
- 资源 (31)
- 收藏
- 关注
原创 内联函数(大学课件整理)
n用一个函数的代码替换函数调用叫内联。用inline关键字声明,如qinlineint abs(int n){return nn:n}qn内联函数减少了函数调用时的现场保护和函数调用完成时的现场恢复,提高了时间效率.nn内联函数和C中的#define相似,但消除了#define不安全性,define不做类型
2015-05-31 11:20:35 403
原创 std名字空间(大学课件整理)
std名字空间qC++标准化过程形成了两个版本:一个是以BjarneStroustrup最初设计的C++为基础的版本,称为传统C++;另一个是晚期(约1989年)以ANSI/ISO标准化委员会创建的C++,称为标准C++。q两种版本的C++有大量相同的库和函数。为了将两者区分:传统C++采用与C语言同样风格的头文件;标准C++的新式头文件没有扩展名,即不需要.h之类的扩展名
2015-05-31 11:19:17 544
原创 局部变量与函数返回地址(大学课件整理)
弄清楚了局部变量的存储方式与生命期之后,当用指针或引用从函数中返回一个地址时不要返回局部变量的指针或引用【例2-31】 返回引用的函数。//Eg2-31.cpp#includeiostream>using namespace std;int &f1(int x){ int temp=x; returntemp;}void main(){ int &
2015-05-31 11:14:46 366
原创 变量初始化(大学课件整理)
nC的未初始化的变量的值不定,导致许多程序错误。nnC++强调初始化,常量、引用、类对象必须初始化。nnC++的全局变量初始化时可以使用任意表达式,不再局限于C的常量表达式。nnC++提供一种函数风格的初始化方式,便于对象初始化,因为对象初始化参数可以不止一个。nn全局的、名字空间的、局部静态的对象将被自动初始化为0(在没有指定初值的情况下。)其他区域不被初始化。
2015-05-31 11:12:45 411
原创 变量类型及生存期(大学课件整理)
1、内存的类型一个程序在其运行期间,它的程序代码和数据会被分别存储在4个不同的内存区域,如图所示 2、内存类型与变量的关系q全局数据区中的数据由C++编译器建立,对于定义时没有初始化的变量,系统会自动将其初始化为0。这个区域中的数据一直保存,直到程序结束时才由系统负责回收。qq堆区的数据由程序员管理,程序员可用new或malloc分配其中的存储单元给指针变量,用完之
2015-05-31 11:12:03 492
转载 The Logging API
The Logging APIUsing logging in your application can be useful for monitoring, debugging, error tracking, and business intelligence. Play provides an API for logging which is accessed through the
2015-05-24 00:40:02 422
原创 spring4 JDBC
1.CODES MOST FROM DOCpackage foo.bar;import com.mysql.jdbc.PreparedStatement;import foo.bean.Actor;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.jdbc.
2015-05-23 19:32:32 991
转载 spring-data-jpa
1.config pom.xml<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.o
2015-05-21 13:36:14 470
转载 Linux经典书籍推荐
Linux经典书籍推荐入门篇 《LINUX权威指南》书不错,写的很全面也比较广,涉及的不深,做为入门书籍不错,可以比较全面的了解linux 。另外比较热门的也可以看看《鸟哥的私房菜》等书,偏管理类的书。如果想做server方向的可以找来看看。驱动 篇 《LINUX设备驱动程序 》就是网上说的“LDD”,经典之作,必备书籍。国产经典《Linux驱动
2015-05-19 22:27:10 2670
原创 使用anorm
package controllersimport play.api._import play.api.mvc._import anorm.SQLimport anorm.SqlQueryimport play.api.db.DBimport play.api.Play.currentimport play.api.libs.json._import play.api.libs.
2015-05-17 11:57:45 776
转载 用hash操作符来引用一个抽象类型的变量:
用hash操作符来引用一个抽象类型的变量:scala> trait Foo[M[_]] { type t[A] = M[A] }defined trait Fooscala> val x: Foo[List]#t[Int] = List(1)x: List[Int] = List(1)
2015-05-14 17:30:43 476
转载 结构类型
Scala 支持 结构类型 structural types — 类型需求由接口 构造 表示,而不是由具体的类型表示。scala> def foo(x: { def get: Int }) = 123 + x.getfoo: (x: AnyRef{def get: Int})Intscala> foo(new { def get = 10 }) re
2015-05-14 17:19:59 324
转载 更高级多态性类型 和 特设多态性
Scala可以对“更高阶”的类型进行抽象。例如,假设您需要用几种类型的容器处理几种类型的数据。你可能定义了一个Container的接口,它可以被实现为几种类型的容器:Option、List等。你要定义可以使用这些容器里的值的接口,但不想确定值的类型。这类似与函数柯里化。例如,尽管“一元类型”有类似List[A]的构造函数,这意味着我们必须满足一个“级别”的类型变量来产生一个具体的类型(就像
2015-05-14 17:10:42 484
转载 量化
有时候,你并不关心是否能够命名一个类型变量,例如:scala> def count[A](l: List[A]) = l.sizecount: [A](List[A])Int这时你可以使用“通配符”取而代之:scala> def count(l: List[_]) = l.sizecount: (List[_])Int这相当于是下面代码的简写:s
2015-05-14 13:16:41 523
转载 变性 Variance
Scala的类型系统必须同时解释类层次和多态性。类层次结构可以表达子类关系。在混合OO和多态性时,一个核心问题是:如果T’是T一个子类,Container[T’]应该被看做是Container[T]的子类吗?变性(Variance)注解允许你表达类层次结构和多态类型之间的关系:含义 Scala 标记协变covariant C[T’]是 C[T] 的子类[+T]逆变contr
2015-05-14 13:08:53 426
转载 case 之谜
case 之谜上周我们看到一些新奇的东西。我们在通常应该使用函数的地方看到了一个case语句。scala> case class PhoneExt(name: String, ext: Int)defined class PhoneExtscala> val extensions = List(PhoneExt("steve", 100), PhoneExt("robey"
2015-05-14 09:59:00 354
转载 偏函数
理解PartialFunction(偏函数)对给定的输入参数类型,函数可接受该类型的任何值。换句话说,一个(Int) => String 的函数可以接收任意Int值,并返回一个字符串。对给定的输入参数类型,偏函数只能接受该类型的某些特定的值。一个定义为(Int) => String 的偏函数可能不能接受所有Int值为输入。isDefinedAt 是PartialFunc
2015-05-14 09:58:23 776
转载 函数组合
函数组合让我们创建两个函数:scala> def f(s: String) = "f(" + s + ")"f: (String)java.lang.Stringscala> def g(s: String) = "g(" + s + ")"g: (String)java.lang.Stringcomposecompose 组合其他函数形成一个新的函数 f(g(x))
2015-05-14 09:49:34 413
转载 Monad
Todd.log - a place to keep my thoughts on programming冒号老师谈Monad那天就Monad的问题向冒号老师请教,下面是他的答复,与大家共享:关于monad实现I/O的问题,Haskell有专门的I/O库,包括readFile,writeFile,getChar,putChar等函数,具体由编译器执行。在C#或F#中
2015-05-14 07:50:50 506
原创 scala play处理json
看个例子package controllersimport play.api._import play.api.mvc._import play.api.libs.json._import play.api.libs.functional.syntax._object Application extends Controller { /*1.import play.api.li
2015-05-12 17:52:49 3049
原创 Array的分元操作
一个简单的例子def max(values: Int*) = values.foldLeft(values(0)) { Math.max }参数是多个Int类型参数列,它可以操作println(max(2, 5, 3, 7, 1, 6))如果是这样val numbers = Array(2, 5, 3, 7, 1, 6)就会出错现在我们会用到一个知识点就是数组的分元操作
2015-05-12 07:53:21 331
转载 创建一个监管策略
以下更加深入地讲解错误处理的机制和可选的方法。为了演示我们假设有这样的策略:import akka.actor.OneForOneStrategyimport akka.actor.SupervisorStrategy._import akka.util.duration._ override val supervisorStrategy = OneForOneStra
2015-05-10 21:46:10 1046
转载 Future异常
由于 Future 的结果是与程序的其它部分并发生成的,因此异常需要作特殊的处理。 不管是 Actor 或是派发器正在完成此 Future, 如果抛出了 Exception ,Future 将持有这个异常而不是一个有效的值. 如果 Future 持有 Exception, 调用 Await.result 将导致此异常被再次抛出从而得到正确的处理.通过返回一个其它的结果来处理 Excep
2015-05-10 21:14:07 2189
转载 Future辅助方法
Future fallbackTo 将两个 Futures 合并成一个新的 Future, 如果第一个Future失败了,它将持有第二个 Future 的成功值。val future4 = future1 fallbackTo future2 fallbackTo future3你也可以使用zip操作将两个 Futures 组合成一个新的持有二者成功结果的tuple的 Future
2015-05-10 21:12:16 754
转载 Future定义次序
由于回调的执行是无序的,而且可能是并发执行的, 当你需要一组有序操作的时候需要一些技巧。但有一个解决办法是使用 andThen. 它会为指定的回调创建一个新的 Future , 这个 Future 与原先的 Future 拥有相同的结果, 这样就可以象下例一样定义次序:val result = Future { loadPage(url) } andThen { case Left
2015-05-10 21:07:16 571
转载 Future回调
有时你只需要监听 Future 的完成事件, 对其进行响应,不是创建新的Future,而仅仅是产生副作用. Akka 为这种情况准备了 onComplete, onSuccess 和 onFailure, 而后两者仅仅是第一项的特例。future onSuccess { case "bar" ⇒ println("Got my bar alright!") case x
2015-05-10 21:01:54 746
转载 组合 Futures
组合 Futures上例中的 comprehension 是对 Future进行组合的例子. 这种方法的常见用例是将多个 Actor的回应组合成一个单独的计算而不用调用 Await.result 或 Await.ready 来阻塞地获得每一个结果. 先看看使用 Await.result 的例子:val f1 = ask(actor1, msg1)val f2 = ask(acto
2015-05-10 20:55:48 544
转载 For Comprehensions
For Comprehensions由于 Future 拥有 map, filter 和 flatMap 方法,它可以方便地用于 ‘for comprehension’:val f = for { a ← Future(10 / 2) // 10 / 2 = 5 b ← Future(a + 1) // 5 + 1 = 6 c ← Future(a - 1) //
2015-05-10 20:43:38 523
原创 定时器 (Scala)
有时需要设定将来发生的事情,这时该怎么办? ActorSystem 搞定一切! 在那儿你能找到 scheduler 方法,它返回一个 akka.actor.Scheduler 实例, 这个实例在每个Actor系统里是唯一的,用来指定一段时间后发生的行为。请注意定时任务是使用 ActorSystem 的 MessageDispatcher 执行的.你可以计划向actor发送消息或执行任务
2015-05-10 18:27:58 6953
转载 日志线程与MDC中的Akka源
日志线程与MDC中的Akka源日志的记录是异步的,完成日志记录的线程被保存在 Mapped Diagnostic Context (MDC) 的 sourceThread 属性里. 在 Logback 的模式配置中线程名可以通过 %X{sourceThread} 指定: %date{ISO8601} %-5level %logger{36} %X{sourceThre
2015-05-10 15:47:15 800
原创 将日志源转换为字符串和类
将日志源转换为字符串和类在运行时将源对象转换成要插入 LogEvent 的源字符串和类的规则是使用隐式参数的方式实现的, 因此是可配置的: 只需要创建你自己的 LogSource[T] 实例并将它放在创建logger的作用域中即可。import akka.event.LogSourceimport akka.actor.ActorSystem object MyType {
2015-05-10 15:38:04 588
转载 使用 PartialFunction 链来扩展actor
使用 PartialFunction 链来扩展actor有一个稍高级但是非常有用的方法是定义基础的消息处理器并通过继承或委托来对它进行扩展,使用 PartialFunction.orElse 链.abstract class GenericActor extends Actor { // to be defined in subclassing actor def spec
2015-05-10 13:41:00 499
转载 Scala case语句与偏函数
Scala通过case语句提供了形式简单、功能强大的模式匹配功能。但是也许你不知道,Scala还具有一个与case语句相关的语言特性,那就是:在Scala中,被“{}”包含的一系列case语句可以被看成是一个函数字面量,它可以被用在任何普通的函数字面量适用的地方,例如被当做参数传递。 Scala代码 scala> val defaultValue:Option
2015-05-06 11:15:32 4146
原创 scala api之Await
Await is what is used to ensure proper handling of blocking for Awaitable instances.While occasionally useful, e.g. for testing, it is recommended that you avoid Await when possible in favor of ca
2015-05-05 22:46:38 3536
原创 ScalaQuery
花费了两天从20多篇英文文章总结出这100多行代码,10几种情况问题1.scala版本问题2.sbt版本问题3.scalaquery版本问题4.从maven同步jar这些都是最头疼的import org.scalaquery.ql._import org.scalaquery.simple._import org.scalaquery.session._
2015-05-03 11:49:41 893
Real-time Analytics with Storm and Cassandra源码
2016-04-22
安卓取景器
2015-02-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人