- 博客(472)
- 资源 (152)
- 收藏
- 关注
原创 OpenRefine使用教程
无论是现今的大数据还是企业内部的小数据,都存在一些普遍的问题,如数据格式不对需要转换,一个单元格内包含多个含义的内容,包含重复项等等,虽然我们也可以使用excel解决,但是excel天生有诸多限制,比如其为直接对数据进行操作,容易导致误操作;数据量大会处理缓慢;透视表功能太过简单;无法进行高级的数据分类分析。而OpenRefine很好的解决了以上问题,最重要的一点是它还是免费的!!确认错误是保证数据质量的第一步,主要包括数据画像和数据清洗。数据画像 Olson定义为:使用统计方法发现数据的结构、内容
2020-07-26 14:58:17 8740 6
原创 CentOS7安装FTP服务器及默认21端口修改
本文章向大家介绍CentOS7安装及配置vsftpd (FTP服务器FTP账号创建以及权限设置),主要包括CentOS7安装及配置vsftpd (FTP服务器FTP账号创建以及权限设置)使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。1,安装vsftpd的yum -y install vsftpd2、设置开机启动systemctl enable vsftpd3、启动ftp服务 systemctl start vsftpd.servi
2020-07-26 14:44:28 5377
原创 Antlr4简易快速入门
1. 简介Antlr (ANother Tool for Language Recognition) 是一个强大的跨语言语法解析器,可以用来读取、处理、执行或翻译结构化文本或二进制文件。它被广泛用来构建语言,工具和框架。Antlr可以从语法上来生成一个可以构建和遍历解析树的解析器。2. 谁在使用Hive Spark Oracle Presto Elasticsearch3. 常见的语法分析器Antlr Javacc SqlParser (位于Alibaba的Druid库中)其
2020-07-26 11:20:22 1274
原创 Pulsar较Kafka的优势
前言对于开发云原生分布式应用程序的开发人员来说,他们应该把更多的精力放在应用程序和微服务上,而不是把时间浪费在处理复杂的消息基础设施上,他们需要一些解决方案帮助他们管理好这些基础设施。构建消息基础设施的第一步是选择合适的消息中间件技术。在这方面有很多选择,从各种开源框架(如 RabbitMQ、ActiveMQ、NATS)到一些商用产品(如 IBM MQ 或者 RedHat AMQ)。当然,除了这些之外,我们还有 Kafka。不过,我们最后并没有选择 Kafka,而是选择了 Pulsar。为什
2020-07-14 00:27:53 626
原创 分布式架构之缓存系统
一个大型稳健成熟的分布式系统的背后,往往会设计众多的支撑组件,将这些支撑系统成为分布式系统的基础设施。进行系统架构设计所依赖的基础设施,还包括分布式协作及配置管理组件、分布式缓存组件、持久化存储组件、分布式消息系统、搜索引擎、以及CDN系统、负载均衡系统、运维自动化系统等,还有实时计算系统、离线计算系统、分布式文件系统、日志收集系统、监控系统、数据仓库等。此处主要讲讲缓存系统组件。缓存组件层缓存系统带来的好处:加速读写。缓存通常是全内存的,比如Redis、Memcache。对内存的直接读写会比传
2020-07-14 00:26:30 368
原创 MapReduce计算模型(二)
MapReduce到底解决什么问题?MapReduce准确的说,它不是一个产品,而是一种解决问题的思路,能够用分治策略来解决问题。例如:网页抓取、日志处理、索引倒排、查询请求汇总等等问题。通过分治法,将一个大规模的问题,分解成多个小规模的问题(分),多个小规模问题解决,再统筹小问题的解(合),就能够解决大规模的问题。最早在单机的体系下计算,当输入数据量巨大的时候,处理很慢。如何能够在短时间内完成处理,很容易想到的思路是,将这些计算分布在成百上千的主机上,但此时,会遇到各种复杂的问题,例如:并发计算、数据
2020-07-14 00:25:43 214
原创 MapReduce框架Hadoop应用(一)
Google对其的定义:MapReduce是一种变成模型,用于大规模数据集(以T为级别的数据)的并行运算。用户定义一个map函数来处理一批Key-Value对以生成另一批中间的Key-Value对,再定义一个reduce函数将所有这些中间的有相同Key的value合并起来。“Map”(映射)和“Reduce”(简化)的概念和它们的主要思想都是从函数式编程语言借用而来的,还有从矢量编程语言借来的特性。在实现过程中,需指定一个map函数,用来把一组键值对映射成一组新的键值对,再指定并发的reduce函数,用来保
2020-07-14 00:24:50 228
原创 关于Pulsar与Kafka的对比
Pulsar和Kafka比较文章中,我将引导您完成我认为重要的几个领域,并且对于人们选择强大,高可用性,高性能的流式消息传递平台至关重要。消息传递模型(Messaging model)是用户在选择流式消息传递系统时应首先考虑的事情。消息传递模型应涵盖以下3个方面:Message consumption(消息消费):如何发送和消费消息 Message Acknowledgement(消息确认):如何确认消息 Message Retention(消息保留):消息要保留多久、出发消息删除的原因以及删除方式
2020-07-14 00:21:02 2149
原创 局域网Maven Java包批量上传的方法
局域网批量上传maven仓库所有jar包1.先将本地~/.m2/repository仓库打一个完整的zip压缩包2.上传到linux目录,如:/opt3.解压repository.zip4.进入repository目录5.创建touch 1-LocalJarsBatchImportTool.sh脚本,写入以下内容;#!/bin/bash# copy and run this script to the root of the repository directory contai
2020-07-13 23:44:50 585
原创 Java计划任务:ScheduledThreadPoolExecutor
自JDK 1.5 开始,JDK提供了ScheduledThreadPoolExecutor类用于计划任务(又称定时任务),这个类有两个用途:在给定的延迟之后运行任务 周期性重复执行任务在这之前,是使用Timer类来完成定时任务的,但是Timer有缺陷:Timer是单线程模式; 如果在执行任务期间某个TimerTask耗时较久,那么就会影响其它任务的调度; Timer的任务调度是基于绝对时间的,对系统时间敏感; Timer不会捕获执行TimerTask时所抛出的异常,由于Timer是单线程,
2020-07-11 11:52:44 476
原创 Java中几种高性能的队列
一、阻塞队列由于阻塞队列(BlockingQueue)是加了锁的,所以在阻塞队列是一个性能瓶颈,影响中间件传输数据速度。二、disruptorDisruptor是一个无锁高性能安全的队列三、JCTools最后采用了一种github上实现的无锁、线程安全的队列(类似于阻塞队列,用atomicLong实现以至于无锁,同时解决了伪共享问题)https://github.com/JCTools/JCToolshttps://github.com/JCTools/J...
2020-06-14 23:45:56 2247
原创 正则表达式及常用大全
正则表达式是记录文本规则的代码,常用于文本匹配、文本替换及输入验证。正则表达式由两种基本字符类型组成:原义(正常)文本字符和元字符,然而,元字符是针对单个字符匹配的,要想要同时匹配多个字符的话,还需要借助限定符;下面介绍一些常见的元字符、限定符以及相关概念。基本概念1、常见元字符及限定符元字符 说明 . 匹配除 \n 以外的任何字符(注意元字符是小数点) [abcde] 匹配 abcde 之中的任意一个字符 [a-h] 匹配 a 到 h 之间的任意一个字符.
2020-06-14 23:40:41 637
原创 MpscGrowableArrayQueue分析
概要MpscGrowableArrayQueue是JCTools里的一个工具,是对于特定场景化的定制,即MPSC(Multi-Producer & Single-Consumer),在这种场景下,相对于BlockingQueue,能够满足高性能的需要。背景JCTools是一款对jdk并发数据结构进行增强的并发工具,主要提供了map以及queue的增强数据结构。Mpsc**ArrayQueue是由JCTools提供的一个多生产者单个消费者的数组队列。多个生产者同时并发的访问队列是线程安
2020-06-14 22:55:05 838
原创 JCTools简介-增强的并发工具
JCTools早在96年就有论文提出了无锁队列的概念,再到后来 Disruptor,高性能已得到生产的验证。此处介绍的 Jctools 中的高性能队列,其性能丝毫不输于 Disruptor。JCTools (Java Concurrency Tools) 提供了一系列非阻塞并发数据结构(标准 Java 中缺失的),当存在线程争抢的时候,非阻塞并发数据结构比阻塞并发数据结构能提供更好的性能。JCTools 是一个开源工具包,在 Apache License 2.0 下发布,并在 Netty、Rxj
2020-06-14 18:53:56 7780
原创 HashedWheelTimer时间轮原理分析
概要时间轮是一种非常惊艳的数据结构。其在Linux内核中使用广泛,是Linux内核定时器的实现方法和基础之一。Netty内部基于时间轮实现了一个HashedWheelTimer来优化I/O超时的检测,本文将详细分析HashedWheelTimer的使用及原理。背景由于Netty动辄管理100w+的连接,每一个连接都会有很多超时任务。比如发送超时、心跳检测间隔等,如果每一个定时任务都启动一个Timer,不仅低效,而且会消耗大量的资源。在Netty中的一个典型应用场景是判断某个连接是否idle,如
2020-06-14 18:48:32 4297 2
原创 Echarts 折线图最后一个点发光闪烁效果
效果如下:实现方式:var myChart = echarts.init(document.getElementById('main'));//数据加载完之前先显示一段简单的loading动画//myChart.showLoading();var names = []; //横坐标数组(实际用来盛放X轴坐标值)var values = []; //纵坐标数组(实际用来盛放Y坐标值)var effectValues = []; //闪烁效果$.ajax({ type : "post
2020-06-12 23:30:41 6278 1
原创 mysql8 bigint类型和datetime类型的转换
TLDR在 Mysql 8 中使用 datetime 在 Mysql 5 中使用 bigint辨析timestamp这种数据类型的时间范畴有限,基本被淘汰了,不要考虑。datetime在 mysql 5 中,datetime 只能存储年月日时分秒,并不能存储毫秒,不够精确。而在 mysql 8 中,datetime 可以存储毫秒,推荐使用。bigint使用整数来保存 unix 时间戳是一个好想法。编程语言中的时间戳支持到毫秒位,要在 mysql 中进行存储的话,int 型大小
2020-06-07 20:20:15 1689
原创 Quill富文本编辑器—多图片视频混合上传示例
Quill is a modern WYSIWYG editor built for compatibility and extensibility.https://quilljs.comQuill 的使用快速开始开始构建一个quill编辑项目包括引入文件、创建自定义工具栏、创建编辑容器以及初始化这几部分。<!-- 引入css文件 --><link href="https://cdn.quilljs.com/1.0.0/quill.snow.css" rel="sty.
2020-06-07 12:41:38 609
原创 Echarts数据可视化特效散点图点动态闪烁效果
效果如下:Echarts数据可视化series-effectscatter特效散点图全解mytextStyle={ color:"#333", //文字颜色 fontStyle:"normal", //italic斜体 oblique倾斜 fontWeight:"normal", //文字粗细bold bolder lighter 100 | 200 | 300 | 400... fontFa
2020-05-31 14:41:26 7958
原创 JavaScript中Null和Undefined的区别
Null:null是js中的关键字,表示空值,null可以看作是object的一个特殊的值,如果一个object值为空,表示这个对象不是有效对象。Undefined:undefined不是js中的关键字,其是一个全局变量,是Global的一个属性,以下情况会返回undefined:1)使用了一个未定义的变量;var i;2)使用了已定义但未声明的变量;3)使用了一个对象属性,但该属性不存在或者未赋值;4)调用函数时,该提供的参数没有提供:function func(a){
2020-05-30 23:00:56 421
原创 小白学前端之:JavaScript null 和 undefined 的区别
nullnull 表示一个变量被声明了,并被赋值为空var lzh = null;console.log(lzh); // nullconsole.log(typeof lzh); // objectundefined简单的理解:undefined 表示一个变量被声明了,但是还没有赋值,比如:var lzh;console.log(lzh); // undefinedconsole.log(typeof lzh); // undefined详细一点的理解:在 Jav
2020-05-30 22:57:31 231
原创 用setTimeout代替setInterval
解决setInterval占用内存问题,用setTimeout代替/**************************************************** tomTimer 自定义定时器方法,解决setInterval占用内存问题 ****************************************************/function tomTimer(f, timerName, time) { return function walk() {
2020-05-28 00:05:59 344
原创 HttpClient、HttpURLConnection、OKHttp和Volley
今天突然想起有必要总结一下市面上通用的一些网络请求方式,主要通过分析其优缺点和性能,为以后选择网络请求连接方式提供支持。现在常用的网络请求方式主要有:HttpClient、HttpURLConnection、OKHttp和Volley。一、HttpClient:HttpClient是Apache的一个三方网络框架,网络请求做了完善的封装,api众多,用起来比较方便,开发快。实现比较稳定,bug比较少,但是正式由于其api众多,是我们很难再不破坏兼容性的情况下对其进行扩展。所以,Android团队对.
2020-05-28 00:01:02 627
原创 禁止前端页面用户打开HTML页面调试功能的初级方法
禁止用户打开HTML页面调试有些时候,我们可能想要禁止用户修改或者调试我们HTML页面的代码,这个时候需要组织用户打开调试窗口,下面介绍一些能够阻止用户在浏览器中打开调试窗口的方法,这些方法只能一定程度的提高打开调试的门槛,并不能完全杜绝。禁用F12对于使用F12打开调试窗口的方法,我们只要注册F12按键的处理方法,并阻止默认事件行为即可:window.onkeydown = window.onkeyup = window.onkeypress = function (event) {
2020-05-27 23:48:48 1219
原创 JavaScript中清空数组的三种方式对比以及JavaScript常用数组操作方法
方式1,splicevar ary = [1,2,3,4];ary.splice(0,ary.length);console.log(ary); // 输出 [],空数组,即被清空了定义和用法splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。注释:该方法会改变原始数组。语法arrayObject.splice(index,howmany,item1,.....,itemX)参数 描述 index 必需。整数,规定添加/删除项目的位置
2020-05-26 00:41:32 1161
原创 超快的HTML5 2D渲染引擎Pixi.js入门
PixiJS是一个2D渲染引擎,能自动侦测并使用WebGL或Canvas。PixiJS使用JavaScript或HTML5基础来显示媒体,创建动画或管理交互式图像,从而制作游戏或应用。PixiJS适合制作游戏但并非是游戏引擎,其核心本质是尽可能快速有效地在屏幕上移动物体。PixiJS作为JavaScript的2D渲染器,目标是提供快速轻量且兼容所有设备的2D库。提供无缝Canvas回退、支持主流浏览器,包括桌面和移动设备。PIXI只做三件事Loading and displaying o
2020-05-24 22:09:20 1679 1
原创 时间和日期的JS库Moment.js常见用法总结
Moment.js常见用法总结Moment.js是一个轻量级的JavaScript时间库,它方便了日常开发中对时间的操作,提高了开发效率。 日常开发中,通常会对时间进行下面这几个操作:比如获取时间,设置时间,格式化时间,比较时间等等。接下来,我将按照这些操作对Moment.js中的Doc进行整理分类,方便学习和日后的查阅。获取时间 Start of Time moment().startOf(String) 获取今天0时0分0秒 moment().start
2020-05-24 21:39:35 724 1
原创 时间和日期的JS库Day.js入门教程
dayjs是一个轻量的处理时间和日期的 JavaScript 库,这里是dayjs的github网址https://github.com/iamkun/dayjs。dayjs好处???? 和Moment.js有着相同的API和模式 ???? 不可变、持久性 ???? 提供链式调用 ???? 国际化标准 ???? 超小的压缩体积,仅仅有2kb左右 ???? 极大多数的浏览器兼容dayjs安装NPM:npm install dayjs --savevar dayjs = req
2020-05-24 21:38:07 1448
原创 WebSocket刷新断开原因、设计心跳机制防止自动断开连接
1、断开原因WebSocket断开的原因有很多,最好在WebSocket断开时,将错误打印出来。ws.onclose = function (e) { console.log('websocket 断开: ' + e.code + ' ' + e.reason + ' ' + e.wasClean) console.log(e)}错误状态码:WebSocket断开时,会触发CloseEvent, CloseEvent会在连接关闭时发送给使用 WebSockets 的客户端. 它在
2020-05-24 16:44:33 8419
原创 理解WebSocket心跳及重连机制以及加强版的reconnectingwebsocket.js实现
理解WebSocket心跳及重连机制 在使用websocket的过程中,有时候会遇到网络断开的情况,但是在网络断开的时候服务器端并没有触发onclose的事件。这样会有:服务器会继续向客户端发送多余的链接,并且这些数据还会丢失。所以就需要一种机制来检测客户端和服务端是否处于正常的链接状态。因此就有了websocket的心跳了。还有心跳,说明还活着,没有心跳说明已经挂掉了。1. 为什么叫心跳包呢?它就像心跳一样每隔固定的时间发一次,来告诉服务器,我还活着。2. 心跳机制是?心跳机制是每隔..
2020-05-24 14:31:07 5814
原创 Java中常见定时任务的实现方式
定时任务实现的几种方式:Timer:这是java自带的java.util.Timer类,这个类允许你调度一个java.util.TimerTask任务。使用这种方式可以让你的程序按照某一个频度执行,但不能在指定时间运行。一般用的较少。 ScheduledExecutorService:也jdk自带的一个类;是基于线程池设计的定时任务类,每个调度任务都会分配到线程池中的一个线程去执行,也就是说,任务是并发执行,互不影响。 Spring Task:Spring3.0以后自带的task,可以将它看成一个轻
2020-05-24 11:16:33 215
原创 SpringBoot两种定时任务(Spring Schedule 与 Quartz 整合 )实现
前言最近在项目中使用到定时任务,之前一直都是使用Quartz 来实现,最近看Spring 基础发现其实Spring 提供 Spring Schedule 可以帮助我们实现简单的定时任务功能。下面说一下两种方式在Spring Boot 项目中的使用。Spring Schedule 实现定时任务Spring Schedule 实现定时任务有两种方式 1. 使用XML配置定时任务, 2. 使用 @Scheduled 注解。 因为是Spring Boot 项目 可能尽量避免使用XML配置的形式,主要说
2020-05-24 11:10:26 432
原创 Spring Batch开发简单入门实践
什么是 Spring BatchSpring Batch 作为 Spring 的子项目,是一款基于 Spring 的企业批处理框架。通过它可以构建出健壮的企业批处理应用。Spring Batch 不仅提供了统一的读写接口、丰富的任务处理方式、灵活的事务管理及并发处理,同时还支持日志、监控、任务重启与跳过等特性,大大简化了批处理应用开发,将开发人员从复杂的任务配置管理过程中解放出来,使他们可以更多地去关注核心的业务处理过程。更多的介绍可以参考官网:https://spring.io/projects/
2020-05-24 11:07:35 906
原创 高效的CSV文本处理利器——univocity-parsers
univocity-parsers简介工作中经常会遇到需要导出或者解析csv的需求,Java中处理csv的开源库也有很多,本文主要介绍通过univocity-parsers来解析和生成csv,univocity-parsers的github地址见此,在写这篇文章的时候univocity-parsers 最新版为2.6.3注: 本文所有例子源码在都在github上。使用详解在详解介绍之前,我们先通过一个简单的例子来看看如何使用univocity-parsers@Slf4jpubl.
2020-05-24 10:23:53 2506
原创 前端一键复制粘贴插件——clipboard.js的使用
将文本复制到剪贴板应该不难。配置它不需要几十个步骤,也不需要加载数百KB的js文件 。但最重要的是,它不应该依赖Flash或任何臃肿的框架。这就是clipboard.js存在的原因。安装从npm安装npm install clipboard --save或者,如果您不喜欢包管理,只需下载一个ZIP文件设置 script引入 <scriptsrc="dist/clipboard.min.js"></script> 三方CDN引入现在需...
2020-05-22 21:05:33 1175
转载 HTTP、websocket、XMPP、COAP、MQTT和DDS协议对比
对于物联网,最重要的是在互联网中设备与设备的通讯,现在物联网在internet通信中比较常见的通讯协议包括:HTTP、websocket、XMPP、COAP、MQTT1、HTTP和websocket在互联网时代,TCP/IP协议已经一统江湖,现在的物联网的通信架构也是构建在传统互联网基础架构之上。在当前的互联网通信协议中,HTTP协议由于开发成本低,开放程度高,几乎占据大半江山,所以很多厂商在构建物联网系统时也基于http协议进行开发。包括google主导的physicweb项目,都是期望在传统w.
2020-05-19 12:49:51 1608
原创 基于guava的重试组件Guava-Retryer
一、使用场景在日常开发中,我们经常会遇到需要调用外部服务和接口的场景。外部服务对于调用者来说一般都是不可靠的,尤其是在网络环境比较差的情况下,网络抖动很容易导致请求超时等异常情况,这时候就需要使用失败重试策略重新调用 API 接口来获取。重试策略在服务治理方面也有很广泛的使用,通过定时检测,来查看服务是否存活(Active)。Guava Retrying 是一个灵活方便的重试组件,包含了多种的重试策略,而且扩展起来非常容易。用作者的话来说:This is a small extensio
2020-05-19 00:14:17 359
原创 Jquery ajax, Axios, Fetch区别之我见
引言前端技术真是一个发展飞快的领域,我三年前入职的时候只有原生XHR和Jquery ajax,我们还曾被JQuery 1.9版本版本以下不支持大文件请求这个问题卡了半天(最后自己写了原生的XHR请求)。一晃眼,JQuery ajax早已不能专美于前,axios和fetch都已经开始分别抢占“请求”这个前端高地。本文将会尝试着阐述他们之间的区别,并给出自己的一些理解。1 JQuery ajax$.ajax({ type: 'POST', url: url, data: data
2020-05-18 22:58:05 402
原创 Guava学习笔记(六):Immutable(不可变)集合
不可变集合,顾名思义就是说集合是不可被修改的。集合的数据项是在创建的时候提供,并且在整个生命周期中都不可改变。 为什么要用immutable对象?immutable对象有以下的优点: 1.对不可靠的客户代码库来说,它使用安全,可以在未受信任的类库中安全的使用这些对象 2.线程安全的:immutable对象在多线程下安全,没有竞态条件 3.不需要支持可变性, 可以尽量节...
2020-05-18 13:22:43 438
台电U盘加密.zip
2019-12-21
大数据+分析案例+视频讲解.rar
2019-12-19
软考+系统+架构师+教程+真题+解答.rar
2019-12-14
通信专业技术人员职业资格考试辅导书最新版.zip
2019-12-06
最优停止理论.zip
2019-12-01
15000条航班数据2016年.zip
2019-09-14
企业数据湖
2019-03-18
备份软件-CobianBackup
2019-03-18
人人都会数据分析:从生活实例学统计
2019-01-22
中文知识图谱报告-2018
2019-01-13
全国中文知识图谱研讨会2015
2019-01-13
中文知识图谱研讨会2014
2019-01-13
Modern Big Data Processing with Hadoop
2018-12-28
大数据科学
2018-12-28
SQL 经典实例
2018-12-21
收获,不止SQL优化--抓住SQL的本质
2018-12-21
MySQL王者晋级之路
2018-12-21
Using Flume
2018-12-21
Flume 构建高可用、可扩展的海量日志采集系统
2018-12-21
疯狂Ajax讲义(第3版)+源代码(百度云下载)
2018-11-19
疯狂HTML 5+CSS 3+JavaScript讲义(第2版)+源代码
2018-11-19
DivertTCPconn-master.zip
2021-04-18
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人