定义方法和函数
Scala中的+ - * / %等操作符的作用与Java一样,位操作符 & | ^ >> <<也一样。只是有一点特别的:这些操作符实际上是方法。
例如:
1234a + b是如下方法调用的简写:a.+(b)a 方法 b可以写成 a.方法(b)
定义方法
方法的返回值类型可以不写,编译器可以自动推断出来,但是对于递归函数,必须指定返回类型。
定义函数
方法和函数的区别在函数式编程语言中,函数是“头等公民”,它可以像任何其他数据类型一样被传递和操作,函数是一个对象,继承自FuctionN。N代表函数创建是有多少个参数。
函数对象有apply、curried(柯里化)、toString、tupled(元组)这些方法。而方法不具有这些特性。
如果想把方法转换成一个函数,可以用方法名跟上下划线的方式。
案例:首先定义一个方法,再定义一个函数,然后将函数传递到方法里面
方法代码123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 ...
Scala基础
声明变量123456789101112131415object Hello { def main(args: Array[String]): Unit = { println("Hello Scala") // 使用val定义的变量值是不可变的,相当于Java里面final修饰的变量 val i = 1 //使用var定义的变量是可变的,在Scala中鼓励使用val var s = "Hello Scala" // Scala编译器会自动推断变量的类型,必要的时候可以指定类型 val str: String = "Hello Spark" }}
常用类型Scala和Java一样,有7种数值类型Byte、Char、Short、Int、Long、Float、Double类型和1个Boolean类型。
条件表达式Scala的条件表达式比较简洁,定义变量时加上if else判断条件。例如:
12345678910111213141516/*** ...
Linux安装Scala编译器
下载Scala地址https://www.scala-lang.org/download/2.11.8.html
解压Scala到指定目录1tar -zxvf scala-2.11.8.tgz -C /usr/java
配置环境变量,将scala加入到PATH中123vim /etc/profileexport JAVA_HOME=/usr/java/jdk1.8export PATH=$PATH:$JAVA_HOME/bin:/usr/java/scala-2.11.8/bin
Docker 部署SpringBoot项目整合 Redis 镜像做访问计数Demo
Docker 部署SpringBoot项目整合 Redis 镜像做访问计数Demo最终效果如下
大概就几个步骤
1.安装 Docker CE
2.运行 Redis 镜像
3.Java 环境准备
4.项目准备
5.编写 Dockerfile
6.发布项目
7.测试服务
环境准备
系统:Ubuntu 17.04 x64
Docker 17.12.0-ce
IP:45.32.31.101
一、安装 Docker CE国内不建议使用:“脚本进行安装”,会下载安装很慢,使用步骤 1 安装,看下面的链接:常规安装方式
1.常规安装方式Ubuntu 17.04 x64 安装 Docker CE
2.脚本进行安装国内安装不建议使用脚本:
安装Docker CE
1234567891011121314151617$ curl -fsSL get.docker.com -o get-docker.sh$ sudo sh get-docker.sh<output truncated>If you would like to use Docker as a non-root user, yo ...
使用docker安装kafka
下载kafkaManager源码下载地址:https://github.com/yahoo/kafka-manager/下载源码,然后上传解压准备编译
123cd /export/servers/kafka-manager-1.3.3.15unzip kafka-manager-1.3.3.15.zip -d ../servers/./sbt clean dist
编译完成之后,我们需要的安装包就在这个路径之下
1/export/servers/kafka-manager-1.3.3.15/target/universal
将我们编译好的kafkamanager的压缩包解压到指定目录
12cd /export/servers/kafka-manager-1.3.3.15/target/universalunzip kafka-manager-1.3.3.15.zip -d /export/server ...
一分钟实现内网穿透(ngrok服务器搭建)
简单来说内网穿透的目的是:让外网能访问你本地的应用,例如在外网打开你本地http://127.0.0.1指向的Web站点。
最近公司的花生壳到期了,要续费,发现价格一直在涨,都是5年以上的老用户,旗舰版都没有实现内网完全穿透,打算自己动手替换这个服务,中间走了不少的弯路,这里记录一些文字为大家提供参考。
随着开发与运行移动互联网的应用越来越多对打通内外网的需要也更加迫切,如微信开发、IOS与Android开发等。
虽然租用VPS、ECS等服务器可以解决很多问题但高性能的外网服务器价格非常贵还有数据安全问题,我选择的是公网服务器仅做代理与轻量应用,复杂的应用部署到内网服务器再穿透访问。
一、内网穿透概要为了理解内网穿透我们先来了解几个概念:
1.1、IP地址网络中唯一定位一台设备的逻辑地址,类似我们的电话号码
在互联网中我们访问一个网站或使用一个网络服务最终都需要通过IP定位到每一台主机,如访问baidu网站:
其中119.75.213.61就是一个公网的IP地址,他最终指向了一台服务器。
IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址, ...
基于Redis解决并发场景下的数据不一致问题
spring-boot-redisson-lock环境
JDK 1.8
Spring boot 2.1.0.RELEASE
redisson-spring-boot-starter 3.9.1
spring-data-redis 2.1.2.RELEASE
说明我们在做业务的时候进程会碰到并发的问题,比如秒杀,下面我们通过Redis解决这类问题
1234初始化接口:http://192.168.1.145:8080/kill/initBaiKe用户秒杀抢到的商品数量接口:http://192.168.1.145:8080/kill/successNumRedisson锁秒杀接口:http://192.168.1.145:8080/kill/redis事务秒杀接口:http://192.168.1.145:8080/kill/affair
初始化数据
通过锁方式秒杀我们知道在Redis中官方提供了一个名为Redisson的工 ...
分布式缓存系统Memcached学习心得
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778package com.danga.MemCached.test; import java.util.Date; import com.danga.MemCached.MemCachedClient; import com.danga.MemCached.SockIOPool; public class Test { protected static MemCachedClient mcc = new MemCachedClient(); static { String[] servers ={"192.16 ...
简单的mybatis多数据源配置
spring-boot-mybatis-mutiple-datasource环境
开发工具:IDEA
基础工具:Maven+JDK8
所用技术:SpringBoot 2.1.1.RELEASE、Mybatis
数据库:MySQL 5.7
说明源码:spring-boot-mybatis-mutiple-datasource基于mybatis的多数据源操作,首先我们来看一下目录结构
在sql目录下有两个数据源的测试SQL可以在自己的数据库中执行方便后续的测试。
然后再我们application.properties配置文件中配置我们数据的数据源
1234567891011121314server.port=8081# 配置第一个数据源spring.datasource.hikari.db1.jdbc-url=jdbc:mysql://127.0.0.1:3306/baike?useUnicode=true&characterEncoding=utf8&useSSL=true&se ...
Flink入门
说明这篇文章只是让你入门接触到流计算的强大。
下载安装Apache Flink1http://www.mirrorservice.org/sites/ftp.apache.org/flink/flink-1.8.0/flink-1.8.0-bin-scala_2.12.tgz
这里以windows为例子,解压后双击start-cluster.bat启动集群模式
正常情况下,现在访问http://localhost:8081就能进入管理界面
好,写下来我们编写我们的代码,我们可以从官方的工程开始,生成Java项目的工程有两种方式,一种是maven生成
123456789mvn archetype:generate \ -DarchetypeGroupId=org.apache.flink \ -DarchetypeArtifactId=flink-quickstart-java \ -DarchetypeVersion=${1:-1.8.0 ...