自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(138)
  • 收藏
  • 关注

原创 Flink学习(三)

Flink的API主要分为DataStream API和DataSet API两种。DataStream API是基于流式数据处理的API,它支持无限的数据流处理,可以实时地对数据进行处理和分析。DataStream API提供了丰富的操作符,如map、filter、reduce、join等,可以方便地对数据进行转换、过滤、聚合等操作。DataStream API适用于实时数据处理、流式计算、实时监控等场景。

2023-05-18 10:18:30 750

原创 Flink学习(二)

Flink的核心组件包括以下几个部分:DataStream API:DataStream API是Flink的核心API,用于处理无界数据流。它提供了丰富的操作符和函数,可以进行数据转换、聚合、过滤、窗口计算等操作。DataSet API:DataSet API用于处理有界数据集,它提供了类似于Hadoop MapReduce的操作符和函数,可以进行数据转换、聚合、过滤等操作。

2023-05-17 10:48:56 462

原创 spark学习(一)

学习Spark可以按照以下步骤进行:学习Scala或Java:Spark的主要编程语言是Scala,也支持Java和Python。如果你已经熟悉Scala或Java,可以直接开始学习Spark。如果不熟悉,需要先学习Scala或Java的基础知识。学习Spark基础知识:学习Spark的基础知识,包括RDD、DataFrame、Dataset、Spark SQL等概念和API。可以通过官方文档、书籍、在线课程等方式进行学习。

2023-05-16 10:15:52 514

原创 Flink学习(一)

Java可以使用分布式计算来处理大规模的数据和计算任务,提高计算效率和性能。以下是一些Java分布式计算的例子:Apache Hadoop:Hadoop是一个开源的分布式计算框架,可以处理大规模数据集的分布式存储和处理。它使用Java编写,可以在分布式环境中运行MapReduce程序。Apache Spark:Spark是一个快速的、通用的分布式计算系统,可以处理大规模数据集的分布式存储和处理。它使用Java编写,可以在分布式环境中运行Spark程序。

2023-05-15 11:20:07 577

原创 分布式计算基础知识

分布式系统是由多个独立计算机组成的系统,这些计算机通过网络进行通信和协作,共同完成一个任务。分布式系统的特点是具有高可用性、可扩展性和容错性。在分布式系统中,每个计算机节点都可以独立地执行任务,同时也可以与其他节点进行通信和协作,共同完成一个任务。分布式系统通常由多个层次组成,例如客户端、应用服务器、数据库服务器等。分布式系统的设计需要考虑以下问题:数据一致性:分布式系统中的数据可能分布在不同的节点上,因此需要确保数据的一致性,避免数据冲突和错误。

2023-05-12 09:53:51 550

原创 Elasticsearch学习总结(三)

在ES中,数据之间可以通过以下方式建立关联性:索引:ES中的数据存储在索引中,每个索引可以包含多个文档,这些文档可以是同一类型或不同类型的数据。通过索引名称,可以将不同类型的数据存储在同一个索引中,从而建立它们之间的关联性。类型:在同一个索引中,可以定义多个类型,每个类型可以包含不同的字段和属性。通过类型名称,可以将不同的数据类型存储在同一个索引中,从而建立它们之间的关联性。ID:每个文档都有一个唯一的ID,通过ID可以快速访问和检索文档。

2023-05-11 11:36:28 376

原创 Elasticsearch学习总结(二)

使用Java与Elasticsearch(ES)结合时,可能会遇到以下问题:集群配置问题:ES是一个分布式系统,需要正确配置集群,包括节点数量、分片数量、副本数量等。索引设计问题:索引的设计需要考虑数据结构、字段类型、分词器等因素,不合理的设计可能会导致查询性能下降。查询性能问题:ES的查询语法非常灵活,但是不同的查询方式对性能有很大影响,需要根据具体情况选择合适的查询方式。数据量过大问题:ES可以处理大规模数据,但是当数据量过大时,需要考虑分片、副本、索引优化等问题,以保证查询性能。

2023-05-10 09:58:12 693

原创 Elasticsearch学习总结(一)

解决方法:在使用聚合操作时,需要注意聚合操作的嵌套顺序和参数设置。此外,还需要注意聚合操作的嵌套顺序,例如在使用SumAggregationBuilder时,需要将其添加到TermsAggregationBuilder中,否则聚合结果可能不正确。ES(Elasticsearch)的架构是分布式的,可以通过多个节点组成一个集群,实现数据的分布式存储和搜索。以上代码中,我们将连接池的大小设置为100,每个路由的最大连接数设置为50,并将HttpClient的最大连接数和每个路由的最大连接数也设置为50。

2023-05-08 10:39:50 370

原创 Spark学习(二)-SparkSQL

安装单机的spark,之前那个太复杂了https://blog.csdn.net/zhaohaibo_/article/details/84260310SprakSessionSpark有三大引擎,Spark core,SparkSQL,SparkStreamingSpark core的关键抽象是SparkContext,RDD;Spark SQL的关键抽象是SparkSession,DataFrame;SparkStreaming的关键抽象是StreamingContext,DStreamS

2021-03-03 18:05:23 294 1

原创 Scala学习(一)

Scala基础语法Scala与Java的最大区别是:Scala语句末尾的分号是可选的我们可以认为Scala程序是对象的集合,通过调用彼此的方法来实现消息传递,理解类,对象,方法,实例变量的概念对象:对象有属性和行为,对象是一个类的实例类:类是对象的抽象,而对象是类的具体实例方法:方法描述的基本的行为,一个类可以包含多个方法字段:每个对象都有它唯一的实例变量集合,即字段,对象的属性通过给字段赋值来创建交互式编程脚本形式创建一个HelloWorld.scala的文件来执行代码objec

2021-03-02 18:14:19 2440

原创 广告行业的学习

什么是程序化广告利用技术手段进行广告交易和管理的一种广告形态,广告主可以程序化采购媒体资源,并利用算法和技术自动实现精准的目标受众定向,只把广告投放给对的人,媒体可以程序化售卖跨媒体,跨终端(电脑,手机,平板,互联网电视等)的媒体资源,并利用技术实现广告流量的分级,进行差异化定价(如一线城市的价格高于二三线城市,黄金时段的价格高于其他时间段),因此程序化广告可以定义为:(1)以人为本的精准广告定向(2)媒体资源的自动化,数字化售卖与采购程序化广告自动化流程媒体先是将流量的展示资源发送到SSP(供应

2021-02-26 18:01:05 658

原创 Redis构建频次访问控制器(二)

前言在昨天的基础上新增了功能当访问广告服务时会自动将频次加1,当大于等于规定的频次返回失败页面,还有定时任务,并且使用了SpringCloud分布式的操作话不多说,直接上代码redis_filter(服务提供者)项目结构这个就是昨天的代码改的改动的代码AdShowController@RestControllerpublic class AdShowController { @Autowired private RedisFilterService filterServ

2021-02-25 17:28:52 167

原创 Redis构建频次访问控制器(一)

Redis频次访问控制器设计思路频次控制旨在控制某个用户接触到某个广告的次数,以达到提高广告性价比的目的,一般来说,随着某个用户看到同一个广告频次的逐渐上升,点击率呈逐渐下降的趋势,因此在按照CPM采买流量时,广告主有时会要求根据品次控制某个用户接触到某次广告的次数首先,使用redis的hash类型来构建用户,广告,频次访问限制其次,使用用户+广告id为key,来构建用户对某广告的访问频次统计# HMSET userID adID reqFrequency,使用HMSET构建用户,广告和访问频

2021-02-24 16:20:12 276

原创 SpringBoot+SpringCache实现两级缓存(Redis+Caffeine)

1. 缓存、两级缓存1.1 内容说明Spring cache:主要包含spring cache定义的接口方法说明和注解中的属性说明springboot+spring cache:rediscache实现中的缺陷caffeine简介spring boot+spring cache实现两级缓存使用缓存时的流程图1.2 Sping Cachespring cache是spring-context包中提供的基于注解方式使用的缓存组件,定义了一些标准接口,通过实现这些接口,就可以通过在方法上增加注解

2021-02-23 17:15:29 1414

原创 Kafka学习(二)

1.Kafka单机实操1.1 引入依赖导入kafka及相关依赖 <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-streams</artifactId> </dependency> <dependency> <g

2021-02-23 15:21:17 232

转载 kafka学习(一)

1.Kafka基本概念Kafka是一种消息队列,主要用来处理大量数据状态下的消息队列,一般用来做日志的处理,既然是消息队列,那么Kafka也就拥有了消息队列相应的特性了消息队列的好处解耦合耦合的状态表示当你实现某个功能的时候,是直接接入当前接口,而利用消息队列,可以将相应的消息发送到消息队列,这样的话,如果接口出了问题,将不会影响到当前的功能。每个分区多个副本的从角色,实时的从Leader中同步数据,保持和Leader数据的同步,Leader发生故障的时候,某个Follower会成为新的L

2021-02-23 14:54:29 178

转载 Spark学习(一)

1. 什么是Sparkspark是一个实现快速通用的集群计算平台,用来构建大型的,低延迟的数据分析应用程序,扩展了广泛使用的MapReduce计算模型,高效的支持更多计算模式,包括交互式查询和流处理,spark的一个主要特点是能够在内存中进行计算,及时依赖磁盘进行复杂的运算,Spark依然比MapReduce更加高效2. Spark的四大特性2.1 高效性运行速度提升100倍Apache Spark使用最先进的DAG调度程序,查询优化程序和物理执行引擎,实现批量和流式数据的高性能。2.2 易用性

2021-02-22 17:59:18 208

原创 Jedis的使用

之前的日报中有关于jedis和jediscluster对数据的操作https://blog.csdn.net/qq_42337039/article/details/1137377771. jedis连接redis单机1.1 引入依赖 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId>

2021-02-22 15:10:45 150

原创 Caffeine缓存和@Cacheable注解

1. Caffeine的基础使用借鉴了https://www.jianshu.com/p/9ee2911476171.1 简介Caffeine是基于Java 8的高性能,接近最佳的缓存工具库。Caffeine使用Google Guava启发的API提供内存缓存。所以它的使用成本较低,跟Guava的API大致一致。它主要有以下几个功能:自动将条目自动加载到缓存中,可以选择同步或异步加载基于频率和新近度超过最大值时基于大小的逐出自上次访问或上次写入以来测得的基于时间的条目到期发生

2021-02-22 14:08:45 2791

原创 2021-02-22实习日报

1. Map实现自定义缓存1.1 创建定时器线程池static class FactoryClass implements ThreadFactory{ @Override public Thread newThread(Runnable r) { Thread t = new Thread(r, "SegmentScheduledExecutorThread"); t.setDaemon(true); return t

2021-02-22 13:40:00 199 1

原创 2021-02-20实习日报

1. Builder建造者模式项目中使用到了Builder建造者模式将复杂繁琐的的配置操作整合起来建造者模式由产品,抽象建造者,具体建造者,指挥者等四个要素构成1.1 模式的结构建造者模式的主要角色如下产品角色(product):它是包含多个组成部件的复杂对象,由具体建造者来创建其各个零部件。抽象建造者(Builder):它是一个包含创建产品各个子部件的抽象方法的接口,通常还包含一个返回复杂产品的方法 getResult()。具体建造者(Concrete Builder):实现 Builde

2021-02-20 18:03:00 184

原创 2021-02-19实习日报

1. Java自定义注解1.1注解定义注解通过@interface关键字进行定义public @interface TestAnnotation{}创建一个名称为TestAnnotation的注解,形式和接口类似,多了个@符号1.2 注解的应用@TestAAnnotationpublic class Test{}创建一个类Test,然后在类定义的地方加上@TestAnnotation注解的使用还需要搭配上元注解1.3 元注解元注解:是一种基本注解,可以应用到其他注解上面元注解

2021-02-19 17:33:29 239

转载 2021-02-18实习日报

1. SpringCloud中Feign原理1.1 Feign远程调用的基本流程Feign远程调用,核心就是通过一系列的封装和处理,将以JAVA注解的方式定义的远程调用API接口,最终转换成HTTP的形式,然后将HTTP的请求的响应结果,解码成JAVA Bean,放回给调用者,Feign远程调用的基本流程可以看到,Feign通过处理注解,将请求模板化,当实际调用的时候,传入参数,根据参数在应用到请求上,进而转换为真正的Request请求,通过Feign以及JAVA的动态代理机制,使得JAVA的开发人

2021-02-18 16:32:25 158

转载 2021-02-10实习日报

HNSW算法理解起来有点困难需要多看几遍才能理解具体的含义参考HNSW算法背景介绍在浩渺的数据长河中做高效率相似性查找一直以来都是让人头疼的问题。比如,我在搜狗app上阅读了一篇文章,推荐系统就应当为我推送与这篇文章最相近的文章,数据库中所有文章是用向量表示的,所以我们要解决的问题就是“找到与这篇文章的向量最相近的几个向量”,然后把这些向量对应的文章推送出去。数据库中的文章千千万,所有用户每秒的请求也是千千万,我们需要又快又准又相对节约资源的办法来解决这个问题。HNSW算法第0层中,是数据集

2021-02-10 16:51:41 198

原创 2021-02-09实习日报

Hystrix的配置Hystrix配置参数实例具体配置可以看之前的文章,这里只是对项目中使用到的配置进行理解@Service//线程垄断配置//hystrix配置@DefaultProperties(threadPoolKey = "jedisFuse", //10个核心线程池 threadPoolProperties = {@HystrixProperty(name = "coreSize", value = "10"), //

2021-02-09 17:47:24 711

原创 2021-02-08实习日报

@Scheduled注解@Cacheable注解项目中redis的使用Map Stream流的使用

2021-02-08 16:58:09 209

原创 2021-02-07实习日报

学习项目中用到的技术Jedis、JedisCluster的使用引入依赖包<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> <type>jar</type> <scope>compile<

2021-02-07 17:49:17 266 1

原创 2021-02-05实习日报

从特征服务项目中学习到的新东西map.computIfAbsentpublic V computeIfAbsent(K key, Function<? super K,? extends V> mappingFunction)此方法首先判断map中是否存在指定key的值,如果不存在会自动调用mappingFunction(key)计算key的value,然后将key=value放入到map中,如果mappingFunction(key)返回的值为null或抛出异常,则不会有记录存入map

2021-02-05 16:42:30 192

转载 2021-02-04实习日报

公司内部服务就不记录在博客中了Java8 StreamStream流是一个来自数据源的元素队列并支持聚合操作Java的Stream并不会存储元素,而是按需计算数据源流的来源,可以是集合,数据,I/0Channel,产生器等generator等聚合操作类似SQL语句一样的操作,比如filter,map,reduce,find,match,sorted等Pipelining:中间操作都会返回流对象本身,这样多个操作可以串联成一个管道,如同流式风格,这样u做可以对操作进行优化,比如延迟执行和短路内

2021-02-04 15:17:15 147

转载 2021-02-03实习日报

总结Spring Cloud这里简单的总结一下学过的东西,并查缺补漏看下哪些没有学到Spring Cloud模块的相关介绍Eureka:服务注册中心,用于服务管理。Ribbon:基于客户端的负载均衡组件。Hystrix:容错框架,能够防止服务的雪崩效应。Feign:Web 服务客户端,能够简化 HTTP 接口的调用。Zuul:API 网关,提供路由转发、请求过滤等功能。Config:分布式配置管理。Sleuth:服务跟踪。Stream:构建消息驱动的微服务应用程序的框架。Bus:消息

2021-02-03 18:03:43 180

原创 2021-02-02实习日报

kafka的基础架构kafka的基础架构主要存在生产者Producer,Kafka集群Broker,消费者Consumer,注册消息ZookeeperProducer:消息生产者,向kafka中发布消息的角色Consumer:消息消费者,即从Kafka中拉取消息消费的客户端Consumer Group:消费者组,消费者组则是一组中存在多个消费,消费者消费Broker中当前Topic的不同分区中的消息,消费者组之间互不影响,所有的消费者都属于某个消费者组,即消费者组是逻辑上的一个订阅者,某一个分区

2021-02-02 18:02:24 571

原创 2021-02-01实习日报

SpringBoot集成kafka尝试了三种方式来发送和接收消息依赖文件 <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-streams</artifactId> </dependency> <dependency>

2021-02-01 18:05:46 119

转载 2021-01-30实习日报

启动kafka下载并解压kafkatar -xzf kafka_2.13-2.7.0.tgzcd kafka_2.13-2.7.0启动服务运行kafka需要使用Zookeeper,可以使用kafka自带打包和配置好的zookeeperxfgg@xfgg-OptiPlex-3050:~/Downloads/kafka_2.13-2.7.0$ bin/zookeeper-server-start.sh config/zookeeper.properties [2021-01-30 10:05:

2021-01-30 15:47:15 408

原创 2021-01-29实习日报

实现Redis缓存查询(出了点问题,已解决)在昨天的服务C上添加一个新的服务dao层String findUsernameById(int id);service接口层String findUsernameById(int id);service实现层 @Override public String findUsernameById(int id) { while(template.opsForList().size("user")>0){

2021-01-29 17:35:39 267

原创 2021-01-28实习日报

搭建增删改查服务还是用昨天的注册中心和聚合中心,编写服务C,服务B也需要一些修改数据库搭建了一个简单的user,数据是id,username,password总体结构依赖文件 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId&g

2021-01-28 17:55:42 709

原创 2021-01-27实习日报

搭建监控数据聚合Turbine注册中中心启动项package com.xfgg.demo;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;@SpringBoo

2021-01-27 16:55:59 168

原创 2021-01-26实习日报

Feign整合Hystrix整体结构新建项目导入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency>

2021-01-26 17:51:56 231

原创 2021-01-25实习日报

Hystrix的工作流程构造一个HystrixCommand或HystrixObservableCommand对象,用于封装请求,并在构造方法配置请求被执行需要的参数执行命令,Hystrix提供了四种执行命令的方式判断是否使用缓存响应请求,若启用了缓存,直接使用缓存响应请求。Hystrix支持请求缓存,但需要用户自定义启动;判断熔断器是否打开,如果打开,跳到第8步;判断线程池/队列/信号量是否已满,已满则跳到第8步;执行HystrixObservableCommand.construct()或

2021-01-25 17:33:36 200 1

原创 Spring Security详解

认识Spring Security基于SpringAOP和Servlet过滤器,除了常规的认证和授权外,还提供了ACLs,LDAP,JAAS,CAS等高级特性以满足复杂环境下的安全需求Spring Security的三个核心概念Principle:代表用户的对象Princple(User) 不仅指人类,还包括一切可以用于验证的设备Authority:代表用户的角色Authority(Role),每个用户都应该有一种角色,如管理员或会员Permission:代表授权,复杂的应用环境需要对角色的权限

2020-11-10 19:54:12 934

原创 ModelAndView详解

ModelAndView的构造函数有七个ModelAndView(String viewName):持有View的名称返回,之后View名称被view resolver,也就是实作org.springframework.web.servlet.View接口的实例解析,例如 InternalResourceView或JstlView等等ModelAndView(String viewName,Map model):返回model对象,用Map收集model对象,然后设定给ModelAndView,

2020-11-06 14:20:13 16201

空空如也

空空如也

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

TA关注的人

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