- 博客(35)
- 收藏
- 关注
原创 阶段5模块1
Flume采集日志,配置如下: a1.sources = r1 a1.sinks = k1 a1.channels = c1 #taildir source a1.sources.r1.type = TAILDIR # 监控文件,这个是有关flume的。这里记录了flume采集到了哪里 a1.sources.r1.positionFile = /liuchang_data/flume_dw/conf/startlog_position.json # 监控的目录 a1.sources.r1.filegrou
2022-02-24 19:34:48
494
原创 阶段4模块2作业
注意:安装zookeeper,启动zookeeper服务,我只起了当前这一台虚拟机,所以之前配置的集群起不来,需要修改conf文件夹下的zoo.cfg,将集群节点注释掉,记得用完恢复。 安装之前需要先安装好zookeeper 和 kafka zookeeper配置文件 Kafka 的server.properties 配置 上面两个安装完成,并测试可以启动,开始安装nginx和ngx_kafka_module 确认安装以下jar包 yum -y install gcc pcre-devel zli.
2022-01-18 23:11:01
2917
原创 大数据作业
#import job type=command command=sh import.sh #import.sh #!/bin/bash dateStr=`date "+%Y%m%d"` echo "---->${dateStr}" log_path=/user_clicks/${dateStr}/ hive -e "use default; load data inpath '${log_path}' into table user_clicks partition(dt='${dateStr}'
2022-01-18 22:54:15
291
原创 Mybatis 的流式查询
流式查询指的是查询结果是一个迭代器,而不是一个集合,应用每次从迭代器查询一条结果。流式查询的好处是降低内存的使用。 但是要注意流式查询的过程中要保持连接一直存在,所以流式查询以后数据库访问框架就不负责关闭数据库连接了,需要自己去维护。 流式查询接口 package org.apache.ibatis.cursor; import java.io.Closeable; /** * Cursor contract to handle fetching items lazily using an Ite
2021-11-23 14:16:55
6799
翻译 Prometheus学习2
官方文档 prometheus是什么 简单的说就是后台服务监控组件 被监控服务暴露自己与前台或者其他服务的交互数据,prometheus采集这些具体数据,通过目前现有的聚合方式或者说监控指标所需要基础数据源通过图表的方式,展示出服务的当前状态以及之前某一段时间内的状态。 它并不能保证采集回来的数据100%正确、采集的数据量是被监控服务的100%。 组件 Prometheus Server:用于收集指标和存储时间序列数据,并且提供查询接口。 client Liberary:客户端库(例如ja
2021-11-22 17:13:31
464
翻译 Spring事务管理
Spring事务管理器 在spring的事务流程中事务的打开回滚和提交都是交给事务管理器来完成。事务管理器顶层接口是PlatformTransactionManager. 当我们使用mybatis框架时,最常用的是DataSourceTransactionManager它实现了PlatformTransactionManager接口,关于 PlatformTransactionManager的源码如下: package org.springframework transaction; public i.
2021-11-20 14:28:49
188
原创 Prometheus学习1
配置文件 官方配置文件解释 - 英文 原配置文件为yml,写入配置的时候注意不要使用tab或者其他特殊符号去编辑,否则不识别。 也可以将配置文件定义为其他类型的文件比如json格式,在yml中配置每一种类型的监控需要一个job_name,比如后台需要一个job_name,mysql需要一个,redis需要一个,相同的job_name下的targets中可以配置多个ip,然后通过配置下面的配置文件生效配置 配置:prometheus.yml - job_name: 'node-exporter' #
2021-11-12 15:34:14
1078
原创 Nginx和HA负载
Nginx和HA负载NginxHAProxyF5硬负载LVS负载 Nginx 1. 工作在OSI第7层之上,可以针对http做一些分流策略,例如针对域名、目录结构,它的正则规则比HAproxy更为强大和灵活。 2. 对网络稳定性依赖小,理论上能ping通就可以负载 3. 安装、配置简单,测试方便,基本能把错误日志打印出来 4. 可以承担高负载压力且稳定,硬件不差的情况下一般能撑几万次的并发量,负载度比LVS小 HAProxy F5硬负载 LVS负载 ...
2021-11-12 14:37:09
2674
原创 JVM07-类加载器<ClassLoader>
1. 任何Class对象,都会包含一个定义该类的ClassLoader对象 2. 数组类(一个数组,元素是类)不由类加载器创建,是运行时由java虚拟机根据需要创建。如果使用该数组对象调用getClassLoader对象,则返回的类加载器的类型和他元素调用getClassLoader()方法,返回的是一样的。 String[] str = new String[2]; //在rt.jar下,所以是根类加载器加载 System.out.println(str.ge...
2021-06-26 19:16:48
310
原创 JVM06-类加载器深入解析
类加载 类加载的最终产品是位于内存中的Class对象。 Class对象封装了类在方法区内的数据结构,并且想向Java程序员提供了访问方法区内的数据结构的接口。 类加载器类型 Java自带虚拟机的类加载器 根类加载器(Bootstrap,启动类加载器) 扩展类加载器(Extension) 系统引用类加载器(System) 用户自定义类加载器 java.lang.ClassLoader的子类 用户可以定制类的加载方式 类加载器的初始化 类加载器并不需要等到某个类被 “首次主动使用” 时在加
2021-06-16 00:27:55
291
原创 JVM05-接口初始化和类加载分析学习
public class interfaceLoader { public static void main(String[] args) { System.out.println(ChildInter.child); } } interface ParentInter { Integer parent = 1; } interface ChildInter extends ParentInter { Integer child = 2; }
2021-05-24 23:29:25
173
原创 JVM04-编译器常量和运行期常量的区别以及数组创建的分析学习
此文章,为学习记录 变量在编译期和运行期的区别 public class FinalVariableDemo { public static void main(String[] args) { System.out.println(StaticTest.str); } } class StaticTest{ static final String str = UUID.randomUUID().toString(); static { Sy
2021-05-19 23:06:39
136
原创 JVM03-常量的本质含义和反编译助记符学习
JVM指令 -xx:+TraceClassLoading , 用于追踪类的加载信息并打印出来 最先加载java.lang.Object 这里最后加载了我们自定义的父类和子类,并输出结果 -XX:+ < jvm_optional > ,开启optional选项,就比如上面的TraceClassLoading -XX:- < jvm_optional > ,表示关闭jvm_optional选项 -XX:< optional > = < value
2021-05-18 23:38:56
131
原创 JVM02-类的加载连接与初始化过程
加载:将java的字节码文件加载到内存中。 Java对类的使用过分为两种 主动使用 被动使用 注意:所有的java虚拟机实现必须在每个类或者接口被Java程序 首次主动使用的时候才会被初始化 主动使用 Jvm字节码划分的主动使用和被动使用准确性更高,但是平时开发接触不多,所以粗略的分为以下几种: 创建类的实例 即:new class 访问某个类或者接口的静态变量,或者对该静态变量赋值 调用类的静态方法 反射,如Class.forName(“xx.xx.Test”) 初始化一个类的子类。.
2021-05-17 22:52:53
169
原创 JVM01-类加载器解析和阶段分解
类加载 在java代码中,类型的加载、连接、初始化都是在运行期间完成的 Java虚拟机和程序的生命周期 以下几种情况java虚拟机将结束生命周期 执行了System.exit() 程序正常执行 程序在执行过程中遇到异常或者错误而异常终止 由于操作系统出现错误导致虚拟机进程终止 类的加载、连接、初始化 加载 查找并加载类的二进制数据 连接 验证:确保被加载类的正确性 准备:为类的静态变量分配内存,并将其初始化为默认值 解析: 将类中的符号引用转换为直接引用 初始化 为类的静态变量赋予正确
2021-05-12 22:14:57
135
原创 Gradle配置文件-build.gradle
buildscript 声明gradle脚本自己需要使用的资源 repositories 主要是为了gradle脚本自身的执行,获取脚本依赖插件。这里声明依赖项、第三方插件 、maven仓库地址。 dependencies 中可以使用classpath声明依赖。该classpath声明说明了在执行其余build脚本时,class loader可以使用这些你提供的依赖项。这也正是我们使用的buildscript代码块的目的。 根级别(最外层的)repositories主要是为了当前项目提供所需要的..
2021-05-05 19:07:40
887
原创 Eleasticreach学习-02
简单查询 #根据id查询数据 GET / 索引 / _type / id //这里不介意使用_type字段,后面会删除 > GET /demo2/_search?q=name:张 //q(query) 注意:keyword 类型的字段ik分词器是不会拆分词的 复杂查询 #下面俩句话一个意思 GET /demo2/_search?q=name:张 //q(query) GET /demo4/_search //demo4是索引(就是库的名称) { "query": .
2021-05-05 19:04:48
190
原创 Eleasticreach学习-01
Lucene:信息检索工具包 (不包含搜索引擎系统) 包含索引结构 包含读写索引的工具 包含包含排序搜索规则的工具。 Elasticsearch 和 Lucene的联系 es基于Luene做了一些增强和封装 Elasticsearch(es) 开源的高扩展分布式全文搜索引擎 他可以近乎实时存储、检索数据 java开发的 通过简单地RESTFul API,来隐藏Lucene的复杂性。 Solr java开发 基于Luence的全文搜索服务器。 提供了比Lucene更为丰富的查询语言 实现了可配置 可扩展、并
2021-05-05 19:01:08
213
转载 mybatis动态sql中#{}和${}的区别
(1)#{}表示一个占位符号,通过#{}可以实现preparedStatement向占位符中设置值,自动进行java类型和jdbc类型转换,#{}可以有效防止sql注入。#{}可以接收简单类型值或pojo属性值。如果parameterType传输单个简单类型值,#{}括号中可以是value或其它名称。 (2)表示拼接sql串,通过{}表示拼接sql串,通过表示拼接sql串,通过{}可以将parameterType传入的内容拼接在sql中且不进行jdbc类型转换,可以接收简单类型值或pojo属性值,如果par
2021-04-15 10:56:58
632
原创 设计模式-建造者模式
应用背景 将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示。 实现 在bean中创建一个静态内部类Builder,然后将bean中的成员变量复制到Builder类中。 在bean中创建一个private 的构造函数(bean的构造函数),参数为刚刚在bean中创建的Builder类型。将Builder中的成员变量对应赋值给bean的成员变量。 在Builder中创建一个public的构造函数,参数是bean中的必填参数。 在Builder中创建set函数,对bean中那些可选参数进
2021-04-13 16:30:51
143
原创 图数据库(neo4j) -CQL
开启远程访问 一、对于3.0以前的版本 在安装目录的 $NEO4J_HOME/conf/neo4j.conf 文件内,找到下面一行,将注释#号去掉就可以了 #dbms.connector.https.address=localhost:7473 改为 dbms.connector.https.address=0.0.0.0:7473 这样,远程其他电脑可以用本机的IP或者域名后面跟上7474 端口就能打开web界面了 如: https://:7473 当然,你的操作系统的防火墙也要确保开放了7474端口才行
2021-04-11 14:12:59
480
原创 SpringBoot配置文件扫描
SpringBoot配置文件位置: 外置,在相对于应用程序运行目录的/config子目录里 外置,在应用程序运行的目录里 内置,在resources/config包内 内置,在classpath更目录(resources)目录下。
2021-04-08 00:48:59
1728
原创 rstp协议学习笔记
概念 RSTP协议以客户服务器方式工作,如:暂停/继续、后退、前进等。他是一个多媒体播放控制协议,用来使用户播放从英特网下载的实时数据能够进行控制 ,因此RSTP又称为“因特网录像机遥控协议”。 其实就个人理解,RSTP协议就是一种控制协议,它并不实现流媒体的实体传输,但是它可以控制流媒体的传输,可以让流媒体暂停、播放、倒退,就好像我们看电影可以通过按钮实现暂停、播放、后退、快进。RSTP协议就像是流媒体的按钮。 ...
2021-04-08 00:41:19
1382
原创 Python-基础三
集合 不重复 类型:set 无序 运算: set1.intersection(set2) #交集 符号:& set1.union(set2) #并集 符号:| set1.difference(set2) # 差集 符号:- set1.issubset(set2) #判断set2是否为set1的子集 set1.issuperset(set2) #判断set1是否为set2的父级 set1.symmetric_difference(set
2021-04-06 22:40:30
168
原创 图数据库(neo4j) - 学习01
知识图谱 在图书情报界称为知识域可视化或者知识领域隐射地图,是显示知识发展进程与结构关系的一系列各种不同的图形,用可视化技术描述知识资源及其载体,挖掘、分析、构建、绘制和显示知识及他们之间的相互关系。知识图谱通过将应用数学、图形学、信息可视化技术、信息科学等学科的理论与方法与计量学引文分析、共现分析等方法结合,并利用可视化的图谱形象的展示学科的核心结构、发展历史、前沿领域以及整体知识架构。达到多学科融合目的的现代理论。他可以为学科研究提供切实的、有价值的参考。 和关系型数据库的区别 图数据库没有一范式、
2021-04-06 22:34:44
481
原创 Java基础01
java执行流程 Java源码 ---> 编译器 ---->Jvm可以执行的字节码(即虚拟指令)---->jvm ---->jvm中的解释器 ----->机器可以执行的二进制机器码 ----->程序运行 遗忘点01 this和super相关 this代表当前类,super代表父类 super()和this()均需要放在构造方法内第一行 尽管可以用this调用一个构造器,但是却不能调用两个 this和Super不能出现在同一个构造函数中,因为this必然会调用其他的构
2021-03-14 19:02:26
122
原创 Dubbo学习一
Dubbo是一个分布式、高性能、透明化的RPC服务框架,提供服务自动注册、自动发现等高效服务治理方案、可以和Spring框架无缝集成 RPC 指的是远程调用协议,也就是说两个服务器交互数据 核心功能 Remoting: 网络通信框架,提供对多种NIO框架抽象封装,包括"同步转异步"、"请求-响应"模式的信息交换方式 Cluster: 服务框架,提供基于接口方法的透明远程过程调用,包括多协议支持,以及负载均衡、地址路由、动态配置等集群支持 Registry:服务注册,基于注册中心目录服务,使服务消费方能.
2021-03-14 16:51:43
165
原创 SpringBoot框架下实现配置文件修改动态加载(不用重启服务)
Controller层 File file = new File("配置文件url"); JSONObject jsonObject = fileLinstenerService.fileChangeDoSomething(file); Service层 @Autowired RedisUtils redisUtils; @Autowired FlowSurveyComponent flowSurveyComponent; private Map<String,Long> configFi
2021-03-13 15:43:33
3870
原创 问题集合-01
stream流判断列表中有多少重复数据 Map<Object,Long> map= list.stream().collect(Collectors.groupingBy(item->item,Collectors.counting())); map.forEach((k,v)-> System.out.println(k+":"+v)); Redis的差值比较 sdiff 注意时间的格式、数据类型、数据精度的变化。 mysql使用ENCODE/DECODE加密/解密的方式处理数据
2021-03-13 15:14:48
176
原创 SpringBoot的start的作用以及基本原理
SpringBoot优点: 创建独立的Spring应用 内嵌Tomcat、Jetty或Undertow(无需部署war包) 提供自用的starter来简化构建配置 提供指标监控、运行状况检查和外部化配置 没有代码生成,也不需要配置xml 如果部署一个常规spring需要做以下操作: pom文件引入相关jar包,如spring、springmvc、mybatis等 配置web.xml,Listener配置、Filter配置、Servlet配置、Log4j等等插件配置 配置数据库连接、配置spring事务
2021-03-13 14:50:53
7501
原创 Python-基础二
列表 格式:[] 类型:list 存: demo =["zhangsan","lishi"] 取: eg1:print(demo[0]) # 取出列表第一个元素 eg2:print(demo[1:2]) #[开始位置:结束位置] 包含开始位置的值,不包含结束位置的值(从左往右 正向) 1.demo[0:3]和demo[:3]结果一致 eg3:print(demo[-3:-1]) #[结束位置:开始位置] 获取最后的俩个元素 1. 复数代表反向获取 2. 开始位置和结束位置
2021-03-13 13:02:44
106
转载 HTTP1和HTTP2的区别
Http1.x 缺点是在多线程情况下会阻塞,而且浏览器是短连接。频繁请求拦截太消耗资源(服务器、浏览器建立连接需要3次握手)。但是1.1有改善,浏览器连接改成了持久链接,不用声明Connection: keep-alive(对于同一个域名,大多数浏览器允许同时建立6个持久连接)。而且允许发送多个请求,但是服务器只能一个一个来。同时也增加了几种请求方式: PUT:请求服务器存储一个资源; DELETE:请求服务器删除标识的资源; OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项和需求; TRA
2021-03-10 23:10:09
549
原创 数据库索引失效的情况
1、列与列之间的对比 比如一张表中的两列(id和c_id)都单独建立了索引,但是下面这种情况不会走索引 select * from table where id = c_id; //这种情况会被认为还不如走全表扫描 2、存在NULL值 我们在设计数据库时尽量避免NULL值的出现,如果不可避免地要出现NULL值的情况,也要这是默认值,比如数值类型的可以设置为0或者-1,字符串可以设成空字符串或者其他的东西。 如果索引列是可空的,是不会给其创建索引的,索引值是小
2021-03-07 23:04:38
937
1
原创 VUE基础学习01
理解MVVM REACT 你可以用于网站前端开发,也可以开发手机app,vue也可以开发手机app只不过要借助wee MVC 后端开发分层概念 MVVM 前端开发的分层 思想,它把每个页面都分成M 、V、VM三层,其中VM是MVVM的核心。VM是M和V的调度者 vue指令 v- cloak 解决了插入表达式的闪烁问题,即:因为网络环境差vue的js文件无法及时加载导致页面暴露渲染页面的插入表达式。 注意:使用这个命令,配合插入表达式只会替换占位符那个地方字符其他地方不会动。当元素渲
2021-03-07 14:36:32
220
1
原创 Python-基础一
Python-基础一 #!/usr/bin/env python 或者是 #!/usr/bin/python 这个用于声明可执行python程序的解释器。你自己安装一个python版本并将他设为默认版本,那么env python指定的解释器为我们新装的python解释器,而第二种写法就是只能指定/usr/bin下的python解释器。 变量(强类型、动态、解释型、脚本语言) 定义变量不需要指定数据类型。 name = "zhangsan" print(name); 命名规则: 数字、字母
2021-03-07 14:17:24
363
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅