- 博客(100)
- 收藏
- 关注
转载 Apache Flink 零基础入门(十一)Flink transformation
前面讲了常用的DataSource的用法,DataSource其实是把数据加载进来,加载进来之后就需要做Transformation操作了。 Data transformations transform one or more DataSets into a new DataSet. ...
2019-09-05 17:31:00
432
转载 Docker 解决容器时间与主机时间不一致的问题三种解决方案
Docker容器时间与主机时间不一致 通过date命令查看时间 查看主机时间 [root@localhost ~]# date2016年 07月 27日 星期三 22:42:44 CST 查看容器时间 root@b43340ecf5ef:/#date ...
2019-09-05 15:12:00
706
转载 SpringBoot指定服务项目名
使用不同SpringBoot版本,指定访问项目路径的项目名,使用的配置也不一样 SpringBoot版本 配置 1.x server.context-path=/demo 2.x s...
2019-09-05 15:01:00
2964
转载 docker logs 日志原理
参数说明 $ docker logs [OPTIONS] CONTAINEROptions: --details 显示更多的信息 -f, --follow 跟踪日志输出,最后一行为当前时间戳的日志 --sinc...
2019-09-05 14:55:00
343
转载 Apache Flink 零基础入门(十)Flink DataSet编程
DataSet programs in Flink are regular programs that implement transformations on data sets (e.g., filtering, mapping, joining, grouping). The da...
2019-09-04 10:12:00
201
转载 Apache Flink 零基础入门(九)Flink支持哪些数据类型
Flink有7种数据类型分别是: Java TuplesandScala Case Classes Java POJOs Primitive Types Regular Classes Values Hadoop Writables Special Type...
2019-08-29 18:12:00
217
转载 Apache Flink 零基础入门(八)Flink中指定算子的方式
我们之前在使用flatMap时,传了一个new FlatMapFunction匿名内部类。而这仅仅是其中的一种方式。 方式一:实现MapFunction接口 最简单的方式就是实现一个MapFunction接口,例如: text.flatMap(new MyFlatMapFunction...
2019-08-29 16:55:00
376
转载 Apache Flink 零基础入门(七)Flink中keyBy三种方式指定key
keyBy 如何指定key 不管是stream还是batch处理,都有一个keyBy(stream)和groupBy(batch)操作。那么该如何指定key? Some transformations (join, coGroup, keyBy, groupBy) require ...
2019-08-29 16:25:00
2812
转载 Apache Flink 零基础入门(六)Flink核心概念
Flink程序是在分布式集合上实现转换的常规程序(例如filtering, mapping, updating state, joining, grouping, defining windows, aggregating)。集合最初是从sources上创建,这些源包括:本地文件, k...
2019-08-29 16:24:00
229
转载 Apache Flink 零基础入门(五)Flink开发实时处理应用程序
使用Flink + java实现需求 环境 JDK:1.8 Maven:3.6.1(最低Maven 3.0.4) 使用上一节中的springboot-flink-train项目 开发步骤 第一步:创建流处理上下文环境 StreamExecutionEnvironment e...
2019-08-28 17:20:00
331
转载 Apache Flink 零基础入门(四)Flink开发批处理应用程序
需求 词频统计,即给一个文件,统计文件中每个单词出现的次数,分隔符是\t。这个文件内容如下: hello world welcomehello welcome 统计结果直接打印在控制台。生产环境下一般Sink到目的地。 使用Flink + java实现需求 ...
2019-08-28 11:23:00
322
转载 Apache Flink 零基础入门(三)编写最简单的helloWorld
实验环境 JDK 1.8 IDE Intellij idea Flink 1.8.1 实验内容 创建一个Flink简单Demo,可以从流数据中统计单词个数。 实验步骤 首先创建一个maven项目,其中pom.xml文件内容如下: <properties>...
2019-08-27 16:27:00
842
转载 Linux nc命令
Server端: nc -l 9000 表示监听本地的TCP 9000端口,等待连接 Client端: nc 127.0.0.1 9000 表示连接本地TCP 9000 端口,可以发送消息,server端可以接收到消息 nc -z -v -n 127.0.0.1 21-25 上面的...
2019-08-27 15:33:00
138
转载 Apache Flink 零基础入门(二):使用docker快速搭建Flink
使用docker拉取镜像 docker pull flink 镜像拉取好之后,检查一下: iie4bu@swarm-manager:~/ddy/docker-flink$ docker image lsREPOSITORY ...
2019-08-23 09:51:00
10284
转载 Apache Flink 零基础入门(一):基础概念解析
Apache Flink 的定义、架构及原理 Apache Flink 是一个分布式大数据处理引擎,可对有限数据流和无限数据流进行有状态或无状态的计算,能够部署在各种集群环境,对各种规模大小的数据进行快速计算。 Flink Application 了解 Flink 应用开发需...
2019-08-21 17:16:00
360
转载 二叉堆与二叉堆的构建
什么是二叉堆? 二叉堆本质上是一种完全二叉树,它分为两个类型: 最大堆:任何一个父节点的值,都大于或等于它左、右孩子节点的值。 最小堆:任何一个父节点的值,都小于或等于它左、右孩子节点的值。 二叉堆的根节点叫做堆顶。 最大堆和最小堆的特点决定了:最大堆的堆顶是整...
2019-08-21 14:43:00
243
转载 springboot实现多线程service实现
线程安全:既然是线程安全问题,那么毫无疑问,所有的隐患都是在多个线程访问的情况下产生的,也就是我们要确保在多条线程访问的时候,我们的程序还能按照我们预期的行为去执行,我们看一下下面的代码: Integer count = 0; public void getCount() {...
2019-08-20 16:34:00
3048
转载 ThreadPoolExecutor里面4种拒绝策略--CallerRunsPolicy
首先介绍一下ThreadPoolExecutor构造方法: public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, ...
2019-08-19 21:13:00
7460
转载 Mesos介绍
Mesos项目可以很容易地实现分布式应用的自动化调度。同时,Mesos自身也很高的结合和主持了Docker等相关容器技术,基于Mesos已有的大量应用框架,可以实现用户应用的快速上线。 Mesos可以将整个数据中心的资源(包括CPU、内存、存储、网络等)进行抽象和调度,是的多...
2019-08-16 15:29:00
921
转载 docker 介绍
随着用户的需求越来越多样,系统的规模越来越庞大,运行的软件越来越复杂,环境配置问题所造成的的麻烦也层出不穷等等,为了解决这些问题,开源社区推出过不少优秀的工具。这些工具虽然在某些程度上确实能解决部分问题,但是始终没有一种方案能带来“一劳永逸”的效果。 伴随着信息技术的飞速发展...
2019-08-16 15:16:00
127
转载 【5分钟系列】搭建基于docker环境搭建下springboot-mysql项目框架
在云时代,开发者创建的应用必须要能很方便地在网络上传播,也就是说应用必须脱离底层物理硬件的显示;同时必须是“任何时间任何地点”可获取的。我们通常想要快速搭建一个项目框架,数据库的环境搭建需要消耗一定的精力,为了与外界系统环境隔离,推荐使用docker可以使我们把更多精力放在业务处...
2019-08-14 15:25:00
82
转载 Springboot线程池的使用和扩展
我们常用ThreadPoolExecutor提供的线程池服务,springboot框架提供了@Async注解,帮助我们更方便的将业务逻辑提交到线程池中异步执行,今天我们就来实战体验这个线程池服务; 实战环境 jdk 1.8 springboot2.1.4.RELEAS...
2019-08-12 16:20:00
121
转载 如何在10亿个整数中找出前1000个最大的数(TopN算法)
面试题目:如何在10亿个整数中找出前1000个最大的数。 我们知道排序算法有很多: 冒泡算法:通过两层for循环,外层第一次循环找到数组中最大的元素放置在倒数第一个位置,第二次循环找到第二大的元素放置在倒数第二个位置。。。循环N次就可以找到TopN。 缺点:冒泡排序内层循...
2019-08-10 00:36:00
2002
转载 mysql5.7中使用group by报错
报错信息: SELECT list is not in GROUP BY clause and contains nonaggregated column 使用命令: SHOW GLOBAL VARIABLES; 查看到sql_mode的值中包括only_full_group_by,将...
2019-08-05 00:29:00
306
转载 docker 安装mysql 5.7
首先从docker hub上搜索mysql,并选择想要的tag。我这里选择mysql:5.7 docker pull mysql:5.7 查看是否下载成功: docker image lsREPOSITORY TAG ...
2019-08-03 22:09:00
71
转载 java高并发(二十一)高并发场景下缓存常见问题
缓存一致性 当数据实时性要求很高时,需要保证缓存中的数据与数据库中的数据一致,缓存节点与副本中的数据一致,不能出现差异现象,这就比较依赖缓存的过期和更新策略了。一般会在数据发生更改的时候,主动跟新缓存中的数据或者移除对应的缓存,这时可能会出现缓存一致性的问题。 现象一:更...
2019-08-02 15:56:00
247
转载 java高并发(二十)HashMap与ConcurrentHashMap
HashMap HashMap底层就是一个数组,而数组的每一项都是一个链表,当我们新建一个HashMap时就会初始化一个数组。HashMap有两个参数影响性能,分别是初始容量和加载因子。 HashMap寻址方式:对于一个新插入的数据或者需要读取的数据,HashMap需要根据key按...
2019-08-02 11:43:00
129
转载 java高并发(十九)死锁、spring线程安全
死锁的必要条件 互斥条件 请求和保持条件 不剥夺条件 环路等待条件 /** * 一个简单的死锁类 * 当DeadLock的对象flag==1时(d1), 先锁定o1,睡眠500毫秒 * 而d1在睡眠的时候留一个flag=0的对象(d2)线程启动,先锁定...
2019-08-02 11:05:00
192
转载 java高并发(十八)线程池
在之前已经使用过线程池了。在使用中,基本上就是初始化好线程池的实例之后,把任务丢进去,等待调度执行就可以了。使用起来非常简单方便。 new Thread弊端 每次new Thread新建对象,性能差 线程缺乏统一管理,可能无限制的新建线程,相互竞争,有可能占用过多系统资...
2019-08-01 16:06:00
92
转载 java高并发(十七)J.U.C之BlockingQueue
BlockingQueue就是阻塞队列。在某些情况下对阻塞队列的访问可能会造成阻塞。 会产生阻塞的情况有以下两种: 当队列满之后,进行入队操作; 当队列空之后,进行出队操作; 因此,当一个线程对一个队列已满的情况下进行入队操作就会产生阻塞,除非有另一个线程进行出队列操...
2019-08-01 14:48:00
134
转载 java高并发(十六)J.U.C之ForkJoin
ForkJoin框架是Java7提供的一个用于并行执行任务的框架,是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。 与MapReduce思想非常类似。从字面意思上看,Fork就是把一个大任务切割成若干个子任务并行执行,Join就是合并这些子任务的执行结果,最后...
2019-08-01 11:48:00
209
转载 java高并发(十五)J.U.C之FutureTask
FutureTash是J.U.C里面的,但是它不是AQS的子类,但是这个类对线程结果的处理很值得我们学习和在项目中使用。 创建一个线程通常有两种方式,一种是直接继承Thread、另一种是直接实现Runnable,这两种方式有一个共同的缺陷就是在执行完任务之后无法获取执行结果。从java1.5...
2019-07-31 18:33:00
95
转载 java高并发(十四)ReetrantLock 与锁
java主要分两类锁,一种是synchronized关键字修饰的锁,另一种是J.U.C.提供的锁。J.U.C里核心锁就是ReentrantLock ReentrantLock(可重入锁)和synchronized区别 可重入性 锁的实现,synchronized关键字是依赖于JV...
2019-07-30 17:11:00
183
转载 java高并发(十三)并发容器J.U.C--AQS
AbstractQueueSynchronizer (AQS) J.U.C 大大提高了java并发的性能,而AQS则是J.U.C的核心。 AQS底层使用双向列表(队列的一种实现)。 使用Node实现FIFO队列,可以用于构建锁或者其他同步装置的基础框架 利用了一个int类型表...
2019-07-30 16:42:00
181
转载 java高并发(十二)并发容器J.U.C
并发容器是JDK提供的一个包名:java.util.concurrent ArrayList -> CopyOnWriteArrayList CopyOnWriteArrayList是线程安全的,写操作时复制,当有新元素添加到CopyOnWriteArrayList时先从原有的li...
2019-07-29 17:32:00
166
转载 java高并发(十一)同步容器
上面一节我们介绍了ArrayList、HashSet、HashMap这些容器都是非线程安全的。如果有多个线程并发访问这些容器时,就会触发线程安全问题。因此在编写程序的时候,必须要求开发人员手动的在任何访问到这些容器的地方进行同步处理,这样就导致使用起来非常不便。因此java提供了同步容器方便使...
2019-07-29 16:24:00
117
转载 java高并发(十)线程不安全类与写法
什么是线程不安全类? 如果一个类的对象同时可以被多个线程访问,如果不做特殊的同步与并发处理,就很容易表现出线程不安全的现象,比如抛出异常,比如逻辑处理错误等,这种类就是线程不安全类。 StringBuilder->StringBuffer @Slf4jpublic clas...
2019-07-29 14:46:00
140
转载 java高并发(九)线程封闭
上一节介绍了不可变对象,通过在某些情况下将不会修改的类对象设计成不可变对象,来让对象在多个线程间保证对象是线程安全的。归根到底,相当于躲避开了并发问题,实现好的并发是一件很困难的事情,所以很多时候都想躲避并发,避免并发除了设计成不可变对象其实还有一个简单的方法就是线程封闭。 什么是线程封闭...
2019-07-28 22:25:00
89
转载 java高并发(八)不可变对象
有一种对象一旦发布了,那么他就是安全对象,这就是不可变对象。 不可变对象需要满足的条件: 对象创建以后其状态就不能修改 对象所有的域都是final类型 对象是正确创建的(在对象创建期间,this引用没有逸出) final关键字:类、方法、变量 修饰类:不能被继...
2019-07-25 14:40:00
142
转载 java高并发(七)发布对象
发布对象 发布对象:是指使一个对象能够被当前范围之外的代码所使用。 对象逸出:一种错误的发布。当一个对象还没有构造完成时,就使它被其他线程所见。 我们经常需要发布一些对象例如通过类的非私有方法返回对象的引用,或者通过共有静态变量发布对象。 简单例子: @Slf4j@NotThr...
2019-07-24 17:33:00
170
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人