- 博客(63)
- 资源 (1)
- 收藏
- 关注
原创 go语言实现任何excel的数据入库操作
需求:用户可以上传一个任意的excel表格,根据每一个sheet去将数据导入mysql,首先根据sheetname去判断数据表是否存在,若存在则用sheetname+编号创建表,若不存在则直接用sheetname创建表,创建完表后,将数据导入该表中。(excel的列和类型也是不固定)
2023-05-17 19:12:16
678
原创 SpringBoot拦截器的简单实现
1、首先完成拦截后的处理逻辑,本次的规则比较简单只需判断请求头里是否包含Ticket字段,包含且有效则进行放行。2、编写拦截规则,需要拦截哪些请求。
2022-12-21 13:59:08
252
原创 flink UDTF函数的编写
将含有n个json的jsonarray转换成n条数据,且每个字段都解析出来。即一反多的函数,使用场景较为广泛,近期也正好用到了,就写一下吧。jar包需要放在flink安装目录的lib里。
2022-11-10 18:15:17
854
原创 scala递归的方法快速解析Json数据
scala递归的方法快速解析Json数据思路:既然可以得到keyset() ,为什么不根据keyset去进行遍历,拿到所有的数据?主要难点在于我们不知道我们拿到的key去解析成一个对象还是去解析成一个字符串,我在这里用到了模式匹配,以下提供代码以供参考(Array类型的我没有处理,如果要处理根据业务去进行相应的处理):import java.utilimport com.alibaba.fastjson.{JSON, JSONObject}import org.apache.spark.rdd
2021-09-29 17:24:49
388
原创 spark streaming案例总结
spark streaming案例总结1、读取N分钟前文件def readFile(bachTime: Int, big_time: Int, frame: DataFrame, template_path: String, spark: SparkSession) = { val nowMinute: String = getNowTime()._3 val yu_time = nowMinute.toInt % bachTime var file_df: Data
2021-09-14 10:44:10
318
原创 spark streaming 读取kafka数据
spark streaming 读取kafka数据1、程序入口 val spark = SparkSession.builder().appName(this.getClass.getName).master("local[*]").getOrCreate() import spark.implicits._ val sc = spark.sparkContext val ssc = new StreamingContext(spark.sparkContext, Minutes
2021-09-14 10:17:41
931
原创 git常用命令
git命令git pull 拉取更新 (第一步)git add 文件路径名称(第二步)git commit -m ‘提交文件注释说明’(第三步)git push 上传远程代码并合并(第四步)(02与03机器上再 spark下ak下:git pull (第五步)uk 流)备注 : 第五步忽略,自用...
2021-09-03 16:06:54
103
原创 python自动更换电脑桌面壁纸
首先找图片的来源:http://api.btstu.cn/sjbz/?lx=meizi&format=images这是一个随机返回图片的api(搏天api)具体代码如下:(只需更改文件存储位置即可)import timeimport uuidimport requestsimport win32apiimport win32conimport win32guiurl = 'http://api.btstu.cn/sjbz/?lx=meizi&format=images
2021-07-25 21:50:10
574
1
原创 hive上的小文件使用spark进行合并
hive上的小文件使用spark进行合并引言:我们的一些实时处理的文件再不同批次下生成的文件大小不一致,有时会产生大量的小文件,对于我们后期的数据处理影响极大,因此需要将小文件合并再save成大小均为128M的文件更为合适。原理:首先读取该目录下的文件大小 val fs = FileSystem.get(sc.hadoopConfiguration) val dirSize = fs.getContentSummary(new Path(lastInputPath)).getLength
2021-07-22 19:18:01
712
原创 Kafka-分布式消息队列
结构图:一、组件1)Producer :消息生产者,就是向kafka broker发消息的客户端;2)Consumer :消息消费者,从kafka broker取消息的客户端;3)Topic :可以理解为一个队列(就是同一个业务的数据放在一个topic下);4)Consumer Group (CG):这是kafka用来实现一个topic消息的广播(发给所有的consumer)和单播(发给任意一个consumer)的手段。一个topic可以有多个CG。topic的消息会复制(不是真的复制,是概念上
2021-04-06 20:21:35
260
原创 hive案例-- 求连续N天登录天数
数据:A 2020-01-01A 2020-01-02A 2020-01-04A 2020-01-05A 2020-01-06A 2020-01-07A 2020-01-09A 2020-01-10B 2020-01-01B 2020-01-02B 2020-01-04B 2020-01-05B 2020-01-06B 2020-01-07B 2020-01-09B 2020-01-10建表:create table time(`id` string,`data`
2021-03-27 14:20:14
210
原创 spark-mysql的读写
一、读mysql1、format格式val personDFS: DataFrame = spark.read .format("jdbc") .option("url", "jdbc:mysql://localhost:3306/indo") .option("user", "root") .option("password", "root") .option("dbtable", "person") .load() pe
2021-03-23 20:21:45
142
原创 scala元组
1、定义:元组可以装着多个不同类型的值,最多可以放22个元素2、定义一个元组val t =(1,2.5,true,"abc")3、获取元组中的值,元组脚标从1开始,格式 元组名._脚标val t =(1,2.5,true,"abc")t._4t._14、通过productArity来获取元组的长度val t =(1,2.5,true,"abc")println(t.productArity)5、通过productElement来获取元组的元素,下标从0开始val t =(1,2
2021-03-11 19:52:43
249
原创 Scala数组的定义和使用
一、数组的定义:1、不可变数组的定义①、val arr=new Array[Int](5) 定义一个长度为五的定长数组②、val arr= Array[Int](1,4,5,6,7)给定泛型和内容的定长数组③、val arr3=Array(1,3,true,"hello",3.5,2L) 不给泛型给内容的定长数组2、可变数组的定义前提:先导包import scala.collection.mutable._①、val arr=new ArrayBuffer[Int]() new 一个Arr
2021-03-11 19:42:28
2900
原创 Scala循环的使用
一、while 循环(类似于java)var i=1while (i<=10){ i+=1}println(i)(注意:scala中没有 i++、i-- 可以 i+=1、i-=1)二、for循环(与java差别较大)1、三种定义方法①、to关键字(左右闭区间)for(i<- 1 to 10){ println(i)}②、until关键字(左闭右开)for(i<- 1 until(10)){ println(i)}③、Range关键字A:Ran
2021-03-10 19:45:46
1089
原创 Scala函数及方法的定义和使用
一、方法的定义:1、(不定义返回值类型)def 方法名(参数名:参数类型,参数名:参数类型)={方法体}def add(a:Int,b:Int)={a*b}println(add(2,3))2、(定义返回值类型)def 方法名(参数名:参数类型,参数名:参数类型):返回值类型={方法体}def jia(a:Int,b:String):String={ a+b}println(jia(1,"lisi"))二、函数的定义和使用1、(不定义返回值类型)val 函数名=(参数名:参数类型,
2021-03-10 19:29:34
295
原创 HBase博客案例
一、 需求分析1、微博内容的浏览,数据库表设计2、用户社交体现:关注用户,取关用户3、拉取关注的人的微博内容二、 所需要的表三、代码pom.xml <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>RELEASE</version>
2020-12-31 17:14:02
451
原创 hbase常用命令
1、建表create 'studut','info'student为表名,info为列族2、插入数据put 'student','1001','info:name','zhangsan'用put关键字,在student表info列族插入key为1001的行,列为name的value 为’zhangsan’要指定表、列族、行、列3、查看数据①、查看一行get 'student','1001'②、查看具体的某一个值get 'student','1001','info:name'③
2020-12-28 16:59:22
186
原创 hive常用函数
一、类型(1)UDF(User-Defined-Function)一进一出 select upper(“DD”) from emp;(2)UDAF(User-Defined Aggregation Function)聚集函数,多进一出类似于:count/max/min(3)UDTF(User-Defined Table-Generating Functions)一进多出二、常用函数(1)查看1.查看系统自带的函数hive> show functions;2.显示自带的函数的
2020-12-24 13:29:35
200
原创 hive--数据仓库常用命令
hive–数据仓库常用命令一、Hive实际操作(1)启动hivebin/hive(2)显示数据库hive> show databases;(3)使用default数据库hive> use default;(4)显示default数据库中的表hive> show tables;(5)删除已创建的student表hive> drop table student;(6)创建student表, 并声明文件分隔符’\t’hive> create tab
2020-12-23 22:27:41
868
原创 hadoop案例(三)--WritableComparable排序案例实操
对案例二话费汇总案例汇总后的结果进行处理,按照总花费升序排序输出。分析:把程序分两步走,也就是要写两个mapreduce程序,第一个用于统计每个用户的总话费(已经在案例2.4实现),第二个mapreduce程序把结果排序后输出即可。要想利用框架进行排序,要做两步:1:把要排序的字段置于mapper的keyout,因为我们的总花费位于bean中,因此,要让bean位于mapper的keyout。2:让bean实现WritableComparable接口,重写compareTo方法,通过该方法告知框架
2020-12-19 11:07:01
333
1
原创 hadoop案例(二)--统计每一个手机号全年的总话费
统计每一个手机号全年的总话费(注意,虚拟网包月费属于赠送费,不计入在内)。数据准备:流程:(1)读取一行数据,切分字段;(2)抽取手机号、套餐基本费、语音通信费、短信彩信费、流量费;(3)以手机号为key,bean对象为value输出,即context.write(手机号,bean)。Reduce阶段:(1)累加套餐基本费、语音通信费、短信彩信费、流量费得到总花费;(2)实现自定义的bean来封装流量信息,并将bean作为map输出的key来传输;(3) MR程序在处理数据的过程中会对数
2020-12-19 10:47:35
389
1
原创 Hadoop案例(一)--在给定的文本文件中统计输出每一个单词出现的总次数
要统计的文件原型:处理后的文件:按照mapreduce编程规范,分别编写Mapper,Reducer,Driver(1)编写mapper类import org.apache.hadoop.io.IntWritable;import org.apache.hadoop.io.LongWritable;import org.apache.hadoop.io.Text;import org.apache.hadoop.mapreduce.Mapper;import java.io.IOEx
2020-12-19 10:15:09
997
2
原创 linux的常用命令(超详细、超全)
一、配置主机名1、查看主机名字:hostname2、改主机名字:vi /etc/sysconfig/networkNETWORKING=yesNETWORKING_IPV6=noHOSTNAME= name(根据自己实际情况改)保存退出并重启设备,重启后,查看主机名,已经修改成功二、修改映射vim /etc/hosts格式:ip 主机名如 192.168.1.10 linux001保存退出可以直接 ping linux001三、防火墙**①、**service iptab
2020-12-11 22:14:41
560
1
原创 linux 根目录下各个文件的作用
**linux 根目录下各个文件的作用**Linux每个目录都有自己约定俗成的用处,或者说Linux的不同文件分门别类地放到了专门的文件夹,虽然Linux没有强制性的要求我们必须按照这些规定放置文件,但是为了方便起见,还是遵守约定的好。1、/bin:是Binary的缩写,这个目录存放着系统必备执行命令,比如ls、cat2、/boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件,自己的安装别放这里。3、/dev:Device(设备)的缩写,该目录下存放的是Linu
2020-12-11 21:27:12
321
原创 java.lang.NoSuchMethodError: org.springframework.dao.support.DataAccessUtils.nullableSingleResult(Lj
出现这样的报错java.lang.NoSuchMethodError: org.springframework.dao.support.DataAccessUtils.nullableSingleResult(Ljava/util/Collection;)Ljava/lang/Object;是因为Spring相关的jar包版本的问题,解决办法,把spring相关的jar包改成统一的版本。(建议在加载spring相关的jar时,就用统一的版本,可能有时候不会出错,为了避免此类的错误,还是改成一样版本的)
2020-12-01 11:03:30
770
1
原创 利用form表单上传图片,图片保存到本地,得到图片名字(后期可以将图片名字存进数据库)
利用form表单上传图片,图片保存到本地,得到图片名字(后期可以将图片名字存进数据库)html部分:enctype=“multipart/form-data” 一定要加!<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title></head><body><form actio
2020-11-29 21:11:40
3293
6
原创 基于调度优先的排班系统
基于调度优先的排班系统项目:学校有一个值班室,需要一天四班,一班两个人,一周值五天班。一个组织的学生需要为这个值班室值班,现要求,在学生无课的情况(不同班级,无课时间不同)下一周一人最多值两天班。调度优先算法原理讲解:收集所有学生的无课表存入数据库,一天四班 x五天,需要20个班次,根据每班的无课人数进行升序排序,先对人数最少的班次进行排班,每排一个人要先对其查重处理,如果已经排过两次了,就跳过,如果不够两次,则写入数据库中的值班表中。接着、排数据库中这个班的下一个人,直至这个班次够两个人或者数据库中这
2020-11-20 16:50:45
1153
3
原创 java-jdbc 数据库连接技术
JDBC:Java DataBase Connectivity(Java数据库连接), JDBC是Java访问数据库的标准规范。用于执行SQL语句的Java API(Java语言通过JDBC可以操作数据库)。实现过程:1、导入MySQL针对jdbc提供的访问实现,驱动jar包2、书写jdbc的开发步骤代码(1) 、注册驱动、加载驱动(2) 、获取数据库连接、访问对象(3) 、获取到执行sql语句的语句平台 Statement PreparedStatement(4) 、执行sql语句exec
2020-11-18 19:25:12
94
原创 mysql 的sql语句 中篇 (单表查询)
mysql 的sql语句 中篇 (单表查询)假设有这样一个student表简单查询:使用*表示所有列语法:SELECT * FROM 表名;具体操作:SELECT * FROM student;结果如下:写出查询每列的名称语法:SELECT 字段名1, 字段名2, 字段名3, … FROM 表名; (写几个字段查出来几列数据,不写的不显示)具体操作:select id,name,age,sex,address from student;结果如下:别名查询:
2020-11-16 19:27:42
1317
原创 Lambda表达的基本用法:
语法格式1:没有参数,也没有返回值() -> System.out.println(“Hello Lambda”);语法格式2:有一个参数,没有返回值(x) -> System.out.println(x * x);说明:如果只有一个参数,那么小括号可以省略语法格式3:有多个参数,没有返回值,格式和语法格式2相同(x, y) -> System.out.println(x + y);语法格式4:接口中需要重写的方法,方法内容有多句,需要给多句话加上大括号(x, y) -&g
2020-11-12 17:03:36
167
3
原创 白盒测试——单元测试
环境搭建:导jar包二、使用步骤1、把junit4.x的测试jar,添加到该项目中来;2、定义一个测试类(约定俗称的规则,非强制要求)测试类的名字: XxxTest,例如要测试MyMath类型,一般定义测试类的类名为MyMathTest3、在MyMathTest中编写测试方法public class Computer { public int add(int x,int y) { return x+y; } public int jian(int x,int y) {
2020-11-11 20:21:11
400
原创 java-实现多线程的两种方式
第一种,继承Threadpublic class A extends Thread{ @Override public void run() { for (int i = 0; i < 20; i++) { System.out.println("A____________"+i); try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); }
2020-11-09 10:40:16
101
原创 定义一个方法,功能如下:给定一个字符串,返回该字符串的反转形式 例如:字符串为abcdef,返回结果为fedcba
定义一个方法,功能如下:给定一个字符串,返回该字符串的反转形式例如:字符串为abcdef,返回结果为fedcbapackage test7_2;import java.util.Arrays;public class Demo04 { public static void main(String[] args) { String str ="abcdef"; char[] cc =fanZhuan(str); String str1=""; for(char c:cc) {
2020-11-06 16:19:43
1292
原创 键盘录入一个字符串,统计该字符串中的大写字母、小写字母、数字字符和其他字符分别有多少个 例如,键盘录入abcABCD12345!@#$%&,输出结果为:小写字母有3个,大写字母有4个,数字字符有5个,
键盘录入一个字符串,统计该字符串中的大写字母、小写字母、数字字符和其他字符分别有多少个例如,键盘录入abcABCD12345!@#$%&,输出结果为:小写字母有3个,大写字母有4个,数字字符有5个,其他字符有6个。package test7_2;import java.util.Scanner;public class Demo03 { public static void main(String[] args) { Scanner sc =new Scanner(System.
2020-11-06 16:18:51
6391
原创 (1)从键盘循环录入录入一个字符串,输入“end“表示结束 (2)将字符串中大写字母变成小写字母,小写字母变成大写字母,其它字符用“*“代替,并统计字母的个数 举例: 键盘录入:Hello
(1)从键盘循环录入录入一个字符串,输入"end"表示结束(2)将字符串中大写字母变成小写字母,小写字母变成大写字母,其它字符用"*"代替,并统计字母的个数举例:键盘录入:Hello12345World输出结果:hELLO*****wORLD总共10个字母package test7_2;import java.util.Scanner;public class Demo02 { public static void main(String[] args) { while(true
2020-11-06 16:17:02
655
原创 (1)定义数字字符串数组{“010“,“3223“,“666“,“7890987“,“123123“} (2)判断该数字字符串数组中的数字字符串是否是对称(第一个数字和最后一个数字相等,第二个数字和
(1)定义数字字符串数组{“010”,“3223”,“666”,“7890987”,“123123”}(2)判断该数字字符串数组中的数字字符串是否是对称(第一个数字和最后一个数字相等,第二个数字和倒数第二个数字是相等的,依次类推)的,并逐个输出(3)如:010 是对称的,3223 是对称的,123123 不是对称的(4)最终打印该数组中对称字符串的个数提示:循环获取字符串的每一个字符,依次比较第一个和最后一个,第二个和倒数第二个。。。package test7_2;public class
2020-11-06 16:11:57
388
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人