随笔分类 -  scala

摘要:1. 到网站 http://idea.lanyus.com/ 获取注册码。 2.填入下面的license server: http://intellij.mandroid.cn/ http://idea.imsxm.com/ http://idea.iteblog.com/key.php 阅读全文
posted @ 2019-02-11 17:17 飞末
摘要:Scala 为我们提供了三种字符串插值的方式,分别是 s, f 和 raw。它们都是定义在 StringContext 中的方法。 s 字符串插值器 val a = 2println(s"小明今年$a 岁了") f 字符串插值器 它除 s 的功能外(不指定格式就和 s 一样),还能进行格式化输出,在 阅读全文
posted @ 2018-11-12 15:08 飞末
摘要:这是三种线性时间复杂度的排序算法,它们是用运算而不是比较来确定排序顺序的 一、基数排序 1.简介 它一种与其他排序算法完全不同的排序方法,其他的排序算法都是通过关键字之间的比较和移动来完成的,而它是采用一种多关键字的思想。 多关键字的思想:给定一组数据,我可以先按个位的大小对所有数进行排序,然后再按 阅读全文
posted @ 2018-07-16 09:20 飞末
摘要:1.简介 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序, 二叉堆满足二个特性: 1.父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。 2.每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最 阅读全文
posted @ 2018-07-12 16:29 飞末
摘要:一、归并排序 归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案"修补"在一起,即分而治之) 可以看到这种结构 阅读全文
posted @ 2018-07-12 15:41 飞末
摘要:1.基本思想 对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入,通常以第一个元素为已排序序列。在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间 2.应用场景 插入排序不适合对于数据量比较大的排序应用。但是,如果需要排序的数据量很小,例如,量级小于千,那么插 阅读全文
posted @ 2018-07-11 17:02 飞末
摘要:一、获取jar包的位置 1.使用类路径 返回值都是/xxx/xxx.jar这种形式。如果路径包含Unicode字符,还需要将路径转码 2.利用了java运行时的系统属性来得到jar文件位置,也是/xxx/xxx.jar这种形式 path.separator在Windows系统下得到;(分号),在Li 阅读全文
posted @ 2018-06-20 17:42 飞末
摘要:将部分控制台输出的内容保存到文件中,部分输出 具体应用场景:记录程序运行过程中的异常情况 阅读全文
posted @ 2018-06-14 17:02 飞末
摘要:/** * ScheduledExecutorService是从Java SE5的java.util.concurrent里,做为并发工具类被引进的,这是最理想的定时任务实现方式。 * 它有以下好处: * 1>相比于Timer的单线程,它是通过线程池的方式来执行任务的 * 2>可以很灵活的去设定第一次执行任务的延迟时间 * 3>提供了良好的约定,以便设定执行的时间间隔 *... 阅读全文
posted @ 2018-06-09 15:00 飞末
摘要:一、表单处理流程如下 1.定义一个表单,在这里表单最多有22个字段 UserData给定Map时,表单将使用绑定值创建实例: 但大多数情况下,都会使用Action中的表单和请求中提供的数据。Form中包含的bindFromRequest把请求作为一个隐式参数。如果你定义了一个隐含的请求,那么bind 阅读全文
posted @ 2018-06-07 17:05 飞末
摘要:1.布局 声明一个views/main.scala.html模板作为主布局模板 有两个参数,一个标题,一个html格式的内容,在 views/Application/index.scala.html模板中调用它 有时你需要第二个特殊页面的侧边栏或者浏览路径,可以通过添加一个参数做到 可以从‘inde 阅读全文
posted @ 2018-06-07 14:40 飞末
摘要:一、语法 1.@ 它是一个特殊的字符,表示动态声明的开始。对于简单的动态声明结尾可以从代码块中自动推断结尾,对于复杂的表达式通常加上() 注意: 在关键字、动态声明和参数之间不能有空格,否则会编译错误 也可以使用大括号来编写多语句块: Hello @{val name = customer.firs 阅读全文
posted @ 2018-06-07 11:23 飞末
摘要:WebSockets是一种支持全双工通信的套接字。现代的html5通过js api使得浏览器天生支持webSocket。但是Websockets在移动端以及服务器之间的通信也非常有用,在这些情况下可以复用一个已经存在的TCP连接。 1.处理WebSockets 一般Play通过action来处理ht 阅读全文
posted @ 2018-06-07 09:04 飞末
摘要:Comet是指基于 HTTP 长连接的“服务器推”技术,是一种不需要客户端主动请求,服务端可以主动给客户端推送消息的技术。 1.使用chunked response来实现Comet chunked responses最主要的作用是创建Comet sockets。 一个Comet socket 只包含 阅读全文
posted @ 2018-06-06 16:35 飞末
摘要:1.从HTTP1.1开始,服务端为了在single connection下对HTTP请求及响应提供服务,需要在response中提供响应的Content-Length。 默认情况下,不需要显示的指明Content-Length,比如以下的例子 由于发送的内容十分简单,play可以帮助我们计算内容的长 阅读全文
posted @ 2018-06-06 16:00 飞末
摘要:1.创建异步的controller Play是一个自底向上的异步框架,play处理所有的request都是异步、非阻塞的。默认的方式是使用异步的controller。换句话说,contrller中的应用代码需要避免阻塞,i.e.不能等待某一个操作。 场景的阻塞操作有JDBC调用、streaming 阅读全文
posted @ 2018-06-06 15:33 飞末
摘要:一、自定义action 从一个日志装饰器的例子开始 1.在invokeBlock方法中实现 在控制器中使用依赖注入来得到一个实例 ActionBuilder提供了所有构建action的方法,因此也适用于自定义的解析器 2.编写Action 可重用的动作代码可以通过包装动作来实现 也可以使用compo 阅读全文
posted @ 2018-06-05 17:49 飞末
摘要:一个http请求是一个请求头后面跟着一个请求体,头部信息比较短,可以安全的缓存在内存中,在Play中头部信息使用RequestHeader类进行建模。请求体的内容可能较大,使用流stream的形式进行建模。 然而,有许多请求体是比较小的,因此Play提供了一个BodyParser抽象用于将流中的信息 阅读全文
posted @ 2018-06-05 15:11 飞末
摘要:1.修改默认的Content-Type 自动设置内容类型为text/plain 自动设置内容类型为application/xml. 手动设置类型 2.添加或更新http请求头 cookies是一个特殊格式的http请求头 丢弃一个浏览器中之前存储的cookie 设置或移除cookie后,回复不变 改 阅读全文
posted @ 2018-06-04 11:32 飞末
摘要:一、Action(play.api.mvc.Action) 大多数的应用的请求都是由action进行处理,并生成一个结果给客户端,Action有多种创建方式: 1. 2. 3. 4. 5. 6.空的响应 二、 controller controller通常是生成Action值的对象,通常把它定义为一 阅读全文
posted @ 2018-06-02 18:03 飞末