技术
文章平均质量分 66
各种其他不好归类的文章
宝华的小岛
生命不息,奔跑不止。
展开
-
Springboot AOP 使用小结
Springboot AOP 使用小结引言搭建工程POM依赖添加配置编写两个用于测试的接口文件编写几个自定义注解编写两个切面配置1. 用于注解匹配的Aspect关于注解匹配的语法2. 用于包路径匹配的Aspect关于包路径匹配的语法简记测试结果引言为了简化应用层开发人员的工作复杂性,我一般会把一些通用的,复杂的,跟具体业务没有特别关系的逻辑封装在框架层。AOP用的就会比较多。有一段时间,总是会出现自己设计的AOP不能准确匹配的问题。特意做了一点研究,为了增强记忆,方便日后应用,做个小结。搭建工程搭建原创 2021-08-29 18:46:31 · 228 阅读 · 0 评论 -
Sentinel接口限流框架在Springcloud中的简单应用
Springboot使用Sentinel,还是稍显复杂。alibaba封装了针对Springcloud的使用,更加简单。还是上次启动的那个控制台。一、创建Spri原创 2021-05-31 15:49:22 · 206 阅读 · 0 评论 -
Sentinel接口限流框架在Springboot中的简单应用
本来目的只是限流,在程序里面可以定义规则。但是鉴于接口限流规则应该随着访问热度而改变,使用硬编码方式不可取,这样就需要借助于Sentinel控制台程序在网页端dong'tai'jin'xi原创 2021-05-31 15:34:53 · 566 阅读 · 0 评论 -
Java整合Flink使用结巴中文分词器
这是本次学习的最后一篇了,我在完成基本业务处理模型的基础之上https://blog.csdn.net/xxkalychen/article/details/117190236?spm=1001.2014.3001.5501,增加一个中文分词的功能。一、添加pom依赖。<dependency> <groupId>com.huaban</groupId> <artifactId>jieba-analysis</artifactId原创 2021-05-23 12:05:24 · 624 阅读 · 2 评论 -
Java整合Flink将结果写入ElasticSearch
上次修改https://blog.csdn.net/xxkalychen/article/details/117152948?spm=1001.2014.3001.5501把数据源确定为消息中间件kafka,从数据源来讲已经比较符合标准模型了。数据处理的最终结果也不能只是控制台打印,终究还是要持久化的。我们可以写入HBase,可以写入HDFS,我这里还是选择写入ElasticSearch。首先我们要启动ElasticSearch服务器,zookeeper和kafka。一、添加ElasticSearc原创 2021-05-23 11:31:08 · 858 阅读 · 1 评论 -
Java整合Spark第一个程序WordCount
创建一个maven工程。一、添加pom依赖。<dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.12</artifactId> <version>3.1.1</version></dependency>我搭建的服务器安装的scala版本是2.12.10,spark版本是3.1.1原创 2021-05-23 03:21:21 · 652 阅读 · 0 评论 -
CentOS7架设Kafka服务器
一、下载软件cd /var/appwget https://mirrors.bfsu.edu.cn/apache/kafka/2.8.0/kafka_2.13-2.8.0.tgz二、解压tar -zxvf kafka_2.13-2.8.0.tgz三、创建日志文件夹mkdir -p /var/app/kafka_2.13-2.8.0/logs四、运行zookeeper和kafkanohup /var/app/kafka_2.13-2.8.0/bin/zookeeper-s原创 2021-05-23 01:44:58 · 421 阅读 · 0 评论 -
Java整合Flink流式处理从Kafka获取的数据
上次的例子https://blog.csdn.net/xxkalychen/article/details/117149540?spm=1001.2014.3001.5502将Flink的数据源设置为Socket,只是为了测试提供流式数据。生产中一般不会这么用,标准模型是从消息队列获取流式数据。Flink提供了跟kafka连接的封装,我们只需要一点小小的改动就可以实现从Kafka获取数据。不过修改之前,需要搭建一个Kafka服务器。具体搭建过程这里不做详述。现在我们来修改程序。一、添加pom依赖。原创 2021-05-22 11:31:04 · 2800 阅读 · 0 评论 -
Java整合Flink流式处理从Socket获取的数据
尝试把Flink的小例子部署到集群去执行,发现找不到本地的txt文件。可是看jar包里面明明被打包进去了,可能获取路径的方法有点问题。懒得去处理,因为流式处理极少去处理本地数据的。我们要把数据来源更换成一个可以源源不断地输入的模式。比如Socket。我们就在前次小例子的基础上来修改https://blog.csdn.net/xxkalychen/article/details/117148830。修改部分很简单。我们另外创建一个测试类,其他都不用修改。package com.chris.flink原创 2021-05-22 09:39:02 · 2164 阅读 · 0 评论 -
Java整合Flink流式处理本地数据
流式处理用于处理源源不断的数据,服务处理等待状态,有一批新数据进来就处理一批。跟批处理一次性完成一批数据不同。我们在上一次的小例子上做修改https://blog.csdn.net/xxkalychen/article/details/117147480。其实也没有什么大的修改,我们还是另外创建一个测试类就好,pom什么的都不用修改。package com.chris.flink;import org.apache.flink.api.common.functions.FlatMapFunct原创 2021-05-22 08:59:43 · 910 阅读 · 0 评论 -
Java整合Flink批处理本地数据
Flink是一个流式数据处理框架。我们与Java进行整合的第一个例程基于简单的原则,从本地一次性获取需要的数据,一次性处理完成。这个例程在本地运行,不需要服务器的支撑。创建一个maven工程。一、pom依赖。<properties> <flink.version>1.13.0</flink.version></properties><dependencies> <dependency>原创 2021-05-22 08:01:20 · 868 阅读 · 1 评论 -
Java整合Storm使用中文分词
以前写的例子,都是基于用空格分割的单词,英文文本本身就是用空格分割,识别相对容易,但是中文之间是没有空格的,严格地说,中文没有可识别的分隔符,能够识别中文词汇来自于中文语法规则,计算机哪里会?所以必须基于一些词库来识别。所以很多大数据处理框架都提供了使用中文分词器的功能。这里我们是用一款叫做结巴分词器的工具,来对输入源的中文进行分词。在上一次修改过的基础之上https://blog.csdn.net/xxkalychen/article/details/117136261?spm=1001.2014.3原创 2021-05-21 23:55:43 · 359 阅读 · 1 评论 -
Java整合Storm实现WordCount单词统计
如同每一种程序语言的入门都要设计一个输出"Hello,World!"的小例子一样,几乎每一种流式数据处理框架都有一个WordCount的入门例程。MapReduce是一个标准,包括Spark和Flink都提供map和reduce算子,可以很方便地实现单词统计。Storm好像没有发现这个,不过实现起来却也很容易。基于上次修改的程序https://blog.csdn.net/xxkalychen/article/details/117058030?spm=1001.2014.3001.5501,我们把从Ka原创 2021-05-21 23:20:38 · 411 阅读 · 0 评论 -
Java整合Storm使用代码提交远程集群执行
上次我们通过微小修改https://blog.csdn.net/xxkalychen/article/details/117045413,实现了本地jar包上传到远程Storm集群执行。Strom还提供直接在本地代码执行提交到远程集群执行的方法。我们还是在上次的小例子上做一点点修改。只需要修改主类MyTopology即可。package com.chris.storm.topology;import com.chris.storm.bolt.CountBolt;import com.chri原创 2021-05-19 22:15:18 · 701 阅读 · 3 评论 -
Java整合Storm任务分流
Storm以流水线的模式处理流式数据,每一个环节完成一条逻辑需求中的一个阶段性任务。但是我们的需求不止一个,并不一定处于一条逻辑线,甚至经过几次处理环节之后就没有什么共同点了,这就需要我们将任务处理环节划分开多个分支,每一种需求又会在各自的分支以流水线的模式处理下去。基于上次我们修改过的小例子https://blog.csdn.net/xxkalychen/article/details/117019970?spm=1001.2014.3001.5501,我们在处理完文字行之后,一方面在后台打印,一方面原创 2021-05-19 11:52:31 · 412 阅读 · 1 评论 -
Java整合Storm写入ElasticSearch
上次写了一个Java整合Storm的一个最简单的例子https://blog.csdn.net/xxkalychen/article/details/117018310,一个数据源,一个处理中间环节,一个最终环节,一个任务拓扑。我们能看到的效果是控制台打印。根据需要,我们要把数据写入ElasticSearch。我们在原有的项目中做一点小的调整,来实现这个需求。当然,首先我们需要一个ElasticSearch的服务器。我已经开启了自己架设好的ES服务器,版本号7.12.0一、pom中添加Ela原创 2021-05-19 11:14:17 · 387 阅读 · 1 评论 -
Java整合Storm的简单例子
刚刚架设好一台Storm单实例服务器https://blog.csdn.net/xxkalychen/article/details/117014994,需要写个Java程序来测试一下。使用Idea创建一个Java项目。一、pom依赖<dependency> <groupId>org.apache.storm</groupId> <artifactId>storm-core</artifactId> <v原创 2021-05-19 10:32:48 · 818 阅读 · 0 评论 -
CentOS7安装指定版本的Git
在CentOS7系统中使用yum安装版本控制工具Git,受数据源等因素的限制,安装的版本可能不是最新的,或许还很旧,影响使用。所以我们需要用另外的办法来安装我们需要的版本。一、在https://mirrors.edge.kernel.org/pub/software/scm/git/这个网址可以查看到所有的git版本,我们可以找到目前最新的版本。二、下载需要的版本。cd /var/softwareswget https://mirrors.edge.kernel.org/pub/soft原创 2021-05-18 02:30:07 · 1712 阅读 · 0 评论 -
Springboot缓存的使用
我们将在Springboot框架中分别测试EhCache和Redis两种缓存技术。一、Springboot开启默认缓存。1. 创建Springboot工程,添加一些必要的依赖。<dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.8.6</version>原创 2021-05-05 03:36:27 · 1142 阅读 · 0 评论 -
ThreadLocal使用和理解
虽然也使用过几次ThreadLocal来在线程中传递数据,但是大多数是计算http请求耗时,而且多在拦截器中处理,因为存取在一个类中,又没有去研究源码,导致对其的设计理解有偏差。近日看了一些资料和视频,再做了一些研究和尝试,对其认识也渐渐变得清晰起来。由于ThreadLocal跨类使用还是需要有一个公共的静态生成,于是猜测他维护了一个公共的Map来存储线程和变量的绑定,当然这个Map并不是util包下面那个Map,而是另行实现的,各个线程只能操作本线程的数据,没有提供通过key来获取value的途径,所原创 2021-05-02 07:50:51 · 383 阅读 · 0 评论 -
Electron初体验
初次接触Visual Studio Code,就被其高端优雅的界面风格所吸引,后来偶然打开Cocos Creator,更是无限神往。以前开发桌面应用,.Net那界面真心感觉不上档次,想自定义又觉得太麻烦。偶然发现Cocos Creator竟然是用前端技术设计的。于是猜测着是不是有有个什么工具,可以很方便地使用前端技术开发桌面应用,顺便还能解决跨平台的问题。搜了一下,还真有,最有名的就是Electron了。VSCode和Cocos Creator都是用它开发的,个人怀疑Termius也是用它开发的。于是决原创 2021-05-01 11:27:26 · 2301 阅读 · 2 评论 -
Consul注册中心服务器架设与整合
本次练习我测试了CentOS单实例运行,Docker单实例部署,Docker集群架设,CentOS集群架设。Windows下的运行没有做,貌似太简单。Docker集群做内网伪分布式模式测试成功,但是模拟分布式把容易运行在不同的虚拟机测试失败。下次需要尝试创建私人网络再试。这种资料好像不太多,找到的有关Docker架设Consul集群的资料几乎都是基于同一个服务器。这有什么用呢?要挂一起挂,于高可用没有什么作用。还好不用Docker创建分布式集群成功了。一、CentOS7架设单实例服务依次执行以下命令原创 2021-04-22 00:59:40 · 245 阅读 · 0 评论 -
Netty应用(六)Websocket连接时携带用户名
接上次Netty实现Websocket协议通信的例子https://blog.csdn.net/xxkalychen/article/details/115903261?spm=1001.2014.3001.5501整个实例对于客户端的标识都是channel的id或者远程地址,并不直观,我们希望有更加清楚的标识,比如用户名。我们可以制定协议或者上行报文,来识别哪些消息是身份标识,哪些是聊天内容。不过这样我们就要在连接成功之后第一次发送消息时确定。其实我们也可以在连接的时候就带上我们的用户名,就像原创 2021-04-20 17:04:15 · 3361 阅读 · 0 评论 -
Netty应用(五)架设WebSocket服务
Springboot有封装好的Websocket包,只需要几个简单的类和注解就能提供服务。在Java程序中,我们可以使用Netty来实现Websocket服务。依赖:compile 'io.netty:netty-all:4.1.63.Final'同样还是基本的三个文件。1. 自定义处理器package com.chris.ws.server.handler;import io.netty.channel.ChannelHandlerContext;import io.nett原创 2021-04-20 13:27:39 · 573 阅读 · 0 评论 -
Netty应用(四)实时通信的简单实现
本实例实现最基本的CS应用模型,程序启动后通过控制台输入来实现交互。服务器端和客户端使用相同的依赖。compile 'io.netty:netty-all:4.1.63.Final'一、服务器端1. 自定义处理器package com.chris.chat.server.handler;import io.netty.channel.Channel;import io.netty.channel.ChannelHandlerContext;import io.netty.ch原创 2021-04-20 12:53:51 · 849 阅读 · 0 评论 -
Netty应用(三)粘包与拆包
粘包与拆包可能是Netty应用中比较重要的一环。在数据发送端,如果连续发送了一批数据,系统会更具一定规则和条件把这些数据拼接在一起一次性发送。这样对于接收端就失去了数据原来的完整性,所以需要按照协议的规则把拼在一起的数据拆分开来。netty默认提供了几种拆包的策略,有很多资料可以参考。不过我认为最实用的,还是通过网数据头部写入数据长度的方案,它既能准确识别数据,又能节省空间,还能避免像使用分隔符的方式造成分隔符误判(定义好的分隔符在消息中不能包含)。我们创建一个CS模型来测试。为了简洁起见,我们设定原创 2021-04-20 01:19:07 · 243 阅读 · 0 评论 -
Netty应用(二)传输Protobuf数据类型
接上面两篇文章:Netty应用(一)基本模型https://blog.csdn.net/xxkalychen/article/details/115876196Protobuf初次使用小记https://blog.csdn.net/xxkalychen/article/details/115875643?spm=1001.2014.3001.5501一、服务器端1. gradle依赖 compile 'io.netty:netty-all:4.1.63.Final' ..原创 2021-04-19 22:57:05 · 272 阅读 · 1 评论 -
Netty应用(一)基本模型
netty是NIO通信框架,七基本使用方式大同小异。一、创建工程,添加依赖compile 'io.netty:netty-all:4.1.63.Final'这个依赖是目前官网上推荐的最高版本。二、创建测试类服务端:package com.chris.netty;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.ChannelHandlerContext;import io.netty.cha原创 2021-04-19 22:36:52 · 205 阅读 · 0 评论 -
Protobuf初次使用小记
本来是正在研究学习netty,教程中出现了protobuf,索性仔细研究了一番。厚积薄发,说不定哪一天就突然要用到。protobuf是一种类似于json和xml的数据传输格式,优势在于高效的序列化和反序列化。关于这个,我没有去测试,只是把整个使用过程熟悉了一遍。一、首先是需要安装protobuf我是用的是windows,需要从github下载安装文件https://github.com/protocolbuffers/protobuf/releases需要下载这个文件,这是目前的最新版原创 2021-04-19 22:09:00 · 215 阅读 · 0 评论