自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Mr.Phoebe的专栏

退役后还是一个弱渣

  • 博客(590)
  • 资源 (1)
  • 收藏
  • 关注

原创 Restful API 设计原则

Restful API 设计原则前言网络应用程序分为前端和后端两个部分。当前的发展趋势,就是前端设备层出不穷(手机、平板、桌面电脑、其他专用设备……),这也就意味着前端的开发代码、开发框架变得多种多样。因此,必须有一种统一的机制,方便不同的前端代码与后端进行通信。这就导致了API构架的流行。REST是目前比较成熟的一套互联网应用程序的API设计理论。 它可以降低开发的复杂度,提...

2018-04-10 05:00:11 7281 1

原创 初识Restful架构

初识Restful架构起源REST这个词,是Roy Thomas Fielding在他2000年的博士论文《Architectural Styles and the Design of Network-based Software Architectures》中提出的。《CHAPTER 5 Representational State Transfer (REST)》是REST的...

2018-04-09 10:42:08 435

原创 Google Code Jam 2018: Qualification Round

资格赛,除了最后一题比较有趣以外,其他都比较简单Saving The Universe Again贪心 一开始想着尽可能将S往前移,但是想了想觉得这样移动好多次,可能才等于后面的S往前移一位的成果。 所以就变成尽可能地将C往末尾移(末尾一段连续的C就不用考虑了),即,每一次移动减少的伤害最大。int T,n;vi a1,a2;int main(){ cin>&...

2018-04-09 00:19:56 1718

原创 HTTP协议与其请求方法

HTTP协议与其请求方法HTTP协议简介HTTP(超文本传输协议,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议,最初的目的是为了提供一种发布和接受HTML页面的方法,即用于从WWW服务器传输超文本到本地浏览器的传输协议。所有的WWW文件都必须遵守这个标准。HTTP连接使用的是“请求—响应”的方式,不仅在请求时需要先建立连接,而且需要客...

2018-04-08 09:44:26 2157

原创 4和7是一个幸运数字

一个比较有趣的面试题题意:仅由4和7组成的十进制数字被称为幸运数字,如,4,7,44,47。那么仅由幸运数字乘积得到的数字为超级幸运数字,如,28 = 4 * 7。现在给你两个数字表示上下限,让你求这段区间内有多少个超级幸运数字。总共有1000组查询,上下限最多到1012101210^{12}。思路:第一想法是容斥搞一下,但是其实非常难,因为除了爆搜很难去构造出仅由幸运数字...

2018-04-04 00:49:34 6870

原创 Java中的自定义注解@interface

Java的注解大家用得都挺多的,现在讲解一下它提供的自定义注解语法。自定义注解使用@interface自定义注解时,自动继承了java.lang.annotation.Annotation接口,由编译程序自动完成其他细节。在定义注解时,不能继承其他的注解或接口。@interface用来声明一个注解,其中的每一个方法实际上是声明了一个配置参数。方法的名称就是参数的名称,返回值类型就是...

2018-03-20 05:03:55 1679 1

原创 线程的3种实现方式

线程的3种实现方式在引入线程的操作系统中,进程是资源分配的基本单位,线程是独立调度的基本单位。在同一进程中,线程的切换不会引起进程切换。在不同进程中进行线程切换,如从一个进程内的线程切换到另一个进程中的线程时,会引起进程切换。线程分为两种: 名称 描述 用户级线程(User-Level Thread, ULT) 由应用程序所支持的线程实现, 对内核不可见...

2018-03-20 04:55:48 12865

转载 JavaScript关于作用域、作用域链和闭包的理解

作用域先来谈谈变量的作用域 变量的作用域无非就是两种:全局变量和局部变量。 全局作用域: 最外层函数定义的变量拥有全局作用域,即对任何内部函数来说,都是可以访问的:<script> var outerVar = "outer"; function fn(){ console.log(outerVar); } fn();/...

2018-03-10 10:39:53 432

转载 JAVA回调机制(CallBack)详解

原文https://www.cnblogs.com/heshuchao/p/5376298.html序言最近学习java,接触到了回调机制(CallBack)。初识时感觉比较混乱,而且在网上搜索到的相关的讲解,要么一言带过,要么说的比较单纯的像是给CallBack做了一个定义。当然了,我在理解了回调之后,再去看网上的各种讲解,确实没什么问题。但是,对于初学的我来说,缺了一个循序渐进的过...

2018-03-01 07:34:01 322

转载 Java中的抽象类

抽象类的基本概念普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法、普通方法、static方法、常量和变量等内容。而抽象类是指在普通类的结构里面增加抽象方法的组成部分。那么什么叫抽象方法呢?在所有的普通方法上面都会有一个“{}”,这个表示方法体,有方法体的方法一定可以被对象直接使用。而抽象方法,是指没有方法体的方法,同时抽象方法还必须使用关键字abstrac...

2018-02-23 01:14:40 433

转载 多线程、同步异步及阻塞和非阻塞

多线程、同步异步及阻塞和非阻塞进程和线程的概念进程:运行中的应用程序称为进程,拥有系统资源(cpu、内存)线程:进程中的一段代码,一个进程中可以有多段代码。本身不拥有资源(共享所在进程的资源);在java中,程序入口被自动创建为主线程,在主线程中可以创建多个子线程。区别:是否占有资源问题创建或撤销一个进程所需要的开销比创建或撤销一个线程所需要的开销大。进程为重量...

2018-02-23 00:38:48 3186

转载 C++内存分配方式详解(堆、栈、自由存储区、全局/静态存储区和常量存储区)

一、数据结构中的栈和堆虽说我们经常把堆栈放在一起称呼,但是不可否认的是,堆栈实际上是两种数据结构:堆和栈。堆和栈都是一种数据项按序排列的数据结构。栈:就像装数据的桶或箱子,它是一种具有后进先出性质的数据结构。堆:一种经过排序的树形数据结构,每个结点都有一个值。通常我们所说的堆的数据结构,是指二叉堆。堆的特点是根结点的值最小(或最大),且根结点的两个子树也是一个堆。由于堆的这个特性,...

2018-02-20 00:20:43 17482 8

原创 Java中可变参数方法

Java中可变参数方法J2SE 1.5中提供了Varargs机制,允许直接定义能和多个实参相匹配的形参。从而,可以用一种更简单的方式,来传递个数可变的实参。Varargs的含义大体说来,“Varargs”是“variable number of arguments”的意思。有时候也被简单的称为“variable arguments”,不过因为这一种叫法没有说明是什么东西可变,所以意义稍...

2018-02-18 09:51:38 15441 2

原创 Scala中的文件操作

Scala中的文件操作文件读取在Scala中,如果只是简单的读取文件内容,可以有两种方法,第一是使用Java的API,第二种就是使用scala.io.Source模块。读取行import scala.io.Source;object Demo extends App { val filename = "/Users/Phoebe/Documents/haha...

2018-02-18 08:38:40 1722

原创 Scala中的Option

Scala中的Option避免null使用大多数语言都有一个特殊的关键字或者对象来表示一个对象引用的是“无”,在Java,它是null。写Java程序的时候,经常会碰到没有有意义的东西可以返回,我们返回null。在Java 里,null 是一个关键字,不是一个对象,所以对它调用任何方法都是非法的。因此调用方必须检查返回值,不然会有NullPointerException的异常。...

2018-02-13 05:20:36 3089

原创 Spark中的RDD基本操作

Spark中的RDD基本操作前言RDD是spark特有的数据模型,谈到RDD就会提到什么弹性分布式数据集,什么有向无环图。这些知识点在别的地方介绍得非常多,本文就不去讲这些了。在阅读本文时候,大家可以就把RDD当作一个数组,或者一个Scala的collection对象,这样的理解对我们学习RDD的API是非常有帮助的。RDD的创建Spark里的计算都是操作RDD进行,那...

2018-02-11 05:32:59 9318 2

原创 Spark中的cache和persist

Spark中cache和persist的作用以及存储级别前言Spark开发高性能的大数据计算作业并不是那么简单。如果没有对Spark作业进行合理的调优,Spark作业的执行速度可能会很慢,这样就完全体现不出Spark作为一种快速大数据计算引擎的优势来。因此,想要用好Spark,就必须对其进行合理的性能优化。有一些代码开发基本的原则,避免创建重复的RDD,尽可能复用同一个RDD,如下...

2018-02-08 11:51:05 5788

原创 Scala中的yield

Scala中的yield简介对于for循环的每次迭代,yield都会生成一个将被记住的值。就像有一个你看不见的缓冲区,for循环的每一次迭代都会将另一个新的值添加到该缓冲区。 当for循环结束运行时,它将返回所有已赋值的集合。返回的集合的类型与迭代产生的类型相同,因此Map会生成Map,List将生成List,等等。另外请注意,最初的集合没有改变。for / yield构造根据

2018-02-07 05:07:00 1207

原创 scala中的隐式转换与隐式参数

scala中的隐式转换与隐式参数简介在scala语言中,隐式转换是无处不在的,它们存在固有的隐式转换,不需要人工进行干预。这是我们之前说的Scala类的继承情况,虚线标注出了Scala帮我们实现的隐式转化。例如Float在必要情况下自动转换为Double类型在 scala中的泛型编程的视图界定中我们也提到,视图界定可以跨越类层次结构进行,它背后的实现原理就是隐式转换。例

2018-02-04 10:15:40 370

原创 scala中的集合与集合操作

scala中的集合Scala的集合类可以从三个维度进行切分:可变与不可变集合(Immutable and mutable collections)静态与延迟加载集合 (Eager and delayed evaluation )串行与并行计算集合(Sequential and parallel evaluation )可变与不可变集合[1]可变集合可以在适当的地方被更新或扩

2018-02-04 01:05:28 3327

原创 Scala中的模式匹配

Scala中的模式匹配前言模式匹配是一种scala中的一种函数式编程概念,也常常用于OOP中的一些多态实现,跟java、C++中的switch case或者正则表达式神似,但是试用范围更广。大家需要记住的是:Scala的模式匹配发生在但绝不仅限于发生在match case语句块中,这是Scala模式匹配之所以重要且有用的一个关键因素!match表达式match表达式始

2018-02-03 01:50:10 871

转载 Java中的String、StringBuffer和StringBuilder

Java中的String、StringBuffer和StringBuilder线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。 线程不安全就是不提供数据访问保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据。java.lang.String不可变

2018-02-02 08:42:51 233

原创 scala中的classOf、isInstanceOf、asInstanceOf

scala中的classOf、isInstanceOf、asInstanceOfScala的三个预定义(predefined)方法,我们经常用到。object PredefineTest{ def main(args: Array[String]): Unit = { val c : Char = 97.asInstanceOf[Char] "hello

2018-02-01 12:57:35 7060

原创 Scala和Java中的Infinity和NaN

Scala和Java中的Infinity和NaNInfinityi == i + 1,一个数字永远不会等于它自己加1?Java强制要求使用IEEE 754浮点数算术运算,它可以让你用一个double或float来表示无穷大。正如我们在学校里面学到的,无穷大加1还是无穷大。你可以用任何被计算为无穷大的浮点算术表达式来初始化i,例如:double i = 1.0 / 0.0

2018-02-01 10:31:13 5971

翻译 scala中的类型擦除的问题

Overcoming type erasure in Scala原文来自Overcoming type erasure in Scala。本文旨在展示一些技术来解决由Scala泛型编程中的类型擦除引起的一些常见问题。介绍Scala有一个非常强大的类型系统,Scala是强类型语言。存在类型,结构类型,嵌套类型,路径依赖类型,抽象和具体类型成员,类型边界((upper, lower,

2018-02-01 00:26:43 3052

原创 scala中的一切皆对象

scala中的一切皆对象单纯从面向对象的角度来看待scala,可以说scala就是一门纯面向对象的编程语言,因为在scala中,一切都可以看做是对象。这点和java是不同的,java中区分基本数据类型和引用类型。可以说scala比Java的面向对象理念还彻底!数字对象scala> 5210000 + 1 *1024 / 1res0: Int = 5211024scal

2018-01-31 12:24:20 659

原创 scala中的泛型编程

Scala中的泛型编程简介在Java或者C++里面,像列表(List)这些数据结构,在编写的时候,都不需要指定其中元素的类型,而是构造的时候指定,这一特性就称为泛型。同样,Scala中也提供了泛型,而且功能比Java的泛型更加强大。List strList = new ArrayList();strList.add("one");strList.add("two");st

2018-01-31 05:17:40 1342

原创 scala中的require和assert

Scala中的require和assertrequire和assert都用于在运行时执行某些检查来验证某些条件。那么他们的差别是什么呢?assert意味着你的程序已经达到了不一致的状态,这可能是目前的方法/函数的一个问题(我喜欢把它想成HTTP 500 InternalServerError)require意味着方法的调用者有问题,应该修复它的调用(我喜欢把它看作HTTP 400

2018-01-27 12:57:57 7576

原创 Scala中的Any、Nothing、Null、Nil

Scala中的Any、Nothing、Null、NilAny在scala中,Any类是所有类的超类。Any有两个子类:AnyVal和AnyRef。对于直接类型的scala封装类,如Int、Double等,AnyVal是它们的基类;对于引用类型,AnyRef是它们的基类。Any是一个抽象类,它有如下方法:!=()、==()、asInstanceOf()、equals()、hash

2018-01-27 10:30:25 6502

原创 Scala中的抽象类与特征

Scala中的抽象类与特征抽象类Scala的抽象类跟Java的一样,不能被实例化。其中一些特性也与Java的抽象类非常类似。定义抽象类需要使用abstract在抽象类中,变量不使用就无需初始化,可以等到子类继承时再进行初始化。在抽象类中,抽象方法无需使用(也不能)用abstract进行修饰。 一个方法只要是没有它的实现(没有等号或没有方法体),它就是抽象的,在子类中覆写或者

2018-01-27 01:28:50 1499

原创 Scala中的类和构造器

Scala中的类摘要网络上很多资料讲得不清不楚的,有些甚至是片面的错误的,看语言应该是直接用翻译器将英文翻译成中文。所以依照着网上的一些说法和自己的实验重新将一些概念和定义讲解一些。scala编译器会自动为类中的字段添加getter方法和setter方法可以自定义getter/setter方法来替换掉编译器自动产生的方法用@BeanProperty注解来生成JavaBeans

2018-01-26 02:44:49 5891 3

原创 Scala中的override

Scala中的overrideoverride是覆盖的意思,在很多语言中都有,在scala中,override是非常常见的。在类继承方面,它和java不一样,不是可写可不写的了,而是必须写的。如果不写而覆盖了对应的属性或者方法的话,编译器就会报错了。基础用法/*基本的override特性*/object Testclass { class A {

2018-01-25 06:53:10 3241

原创 scala中的高阶函数和柯里化

高阶函数在计算机科学中,高阶函数是至少满足下列一个条件的函数:接受至少一个函数作为输入输出一个函数在数学中它们也叫做算子(运算符)或泛函。微积分中的导数就是常见的例子,因为它映射一个函数到另一个函数。高阶函数的例子假设有一个函数对给定两个数区间中的所有整数求和:def sumInts(a: Int, b: Int): Int = if(a > b) 0

2018-01-23 22:09:51 809

原创 scala中的尾递归

递归一个函数直接或间接的调用它自己,就是递归了。例如,递归计算阶乘:def factorial(n: Int): Int = { if( n 1 ) 1 else n * factorial(n-1)}以上factorial方法,在n>1时,需要调用它自身,这是一个典型的递归调用。如果n=5,那么该递归调用的过程大致如下: factorial(5)

2018-01-20 07:22:14 2135 1

原创 scala中的方法

scala中的方法在OOP中,方法作用于对象,是对象的行为,在Scala中的方法也是如此。 方法定义定义方法的基本格式是:def 方法名称(参数列表):返回值 = 方法体scala中方法的返回值默认是方法体重的最后一行表达式 的值,当然也可以用return来执行返回值,但scala并不推荐这么做。 def function1(param1: String, para

2018-01-20 07:21:38 288

原创 scala中的call-by-name和call-by-value

scala中的call-by-name和call-by-valuevar/def/val/lazy valdef:类似于每一次重新赋值,如果是用def定义函数,则是每一次重新获得一个函数,做call-by-name操作。val:获得一次,并立即执行,且在生命周期内不能再被修改,使用的是call-by-value操作。var:在生命周期内可以被再次赋值lazy val:惰性执行,

2018-01-20 05:01:08 1424

原创 函数式编程介绍

历史来源讲述历史来源,不喜欢的可以跳过。但是我个人认为这对理解有帮助。在计算机的世界中,有两位巨擘对问题的可计算性做了模型化描述[4]。一位是阿兰.图灵(Alan Turing),他提出的图灵机。计算机系的各种学科中都充斥着这个概念,假设有一个纸带和一个打孔机,然后有一套指令,能够控制打孔机在纸带上移动、能够读取当前位置是否打了孔、能够在当前位置打一个孔,这就是一个图灵机,假设一个问题

2018-01-19 10:44:59 32679 23

原创 高级数据库二十五:不易失内存数据库

Non-Volatile Memory Databases背景新兴的存储技术提供像DRAM一样的低延迟读取/写入,但具有永久写入和大容量等类似SSD的特性。AKA存储级内存,永久内存最早的设备将是块地址(NVMe),但是基于块地址的设备并不被数据库研发人员所青睐,它的性能仅仅类似于一个更好更快的NAND flash内存。后来的设备,字节地址改变了人们设计操作系统结构的方

2018-01-17 10:41:33 1199

原创 高级数据库二十四:内存存不下的内存数据库

Larger-than-Memory Databases背景我们知道DRAM价格非常昂贵,且运行耗电量也非常大。那么当内存数据库存储的信息更大了之后,我们就希望使用更加便宜的存储设备,希望改善DRAM带来的一些不利条件。新技术因此就产生了Larger-than-Memory Databases这种技术。即,允许内存中的DBMS存储/访问磁盘上的数据,而无需重新引入面向磁

2018-01-17 08:38:58 578

原创 高级数据库二十二:矢量化运行(二)

Vectorized Execution (Part II)上一次将的哥大的论文的矢量化算法在没有四五个SIMD寄存器的情况下是没法运行的。因为DBMS需要将64位的地址和64位的数据存入寄存器考虑到数据压缩技术,我们不能改变64位的地址,但是我们不一定要全部存储64位的数据。这样产生的问题是,压缩数据的位宽不一定自然地适合SIMD寄存器插槽。如你压缩前128位的寄存器存储了4个32位

2018-01-16 13:36:31 958

poj第1200题

北京大学在线测评网站POJ第1200题的解答,已经AC通过

2013-11-30

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除