- 博客(43)
- 收藏
- 关注

原创 使用GitHub、Gitee作为图片仓库,优快云文档引入
错误示例不能直接使用插入图片方式写入url地址(虽然这种方式在Typora等工具支持)[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z1NTKIug-1598806934968)(https://github.com/hzb-start/MyImages/raw/master/test/my.png)]正确示例使用img标签<img src="https://github.com/hzb-start/MyImages/raw/master/test/.
2020-08-31 01:06:24
1726
4

原创 听说最近Gradle很火,我们一起去配置Gradle
Gradle是什么?与Maven的作用一样,帮助我们构建项目、管理jar包等为什么要使用Gradle?相比于Maven更加简洁、高效Spring官网推荐使用Gradle构建项目下载我将通过IDEA演示构建Gradle项目流程,IDEA可以通过wrapper(不依赖本机环境)方式使用Gradle,但是为了保障使用的Gradle版本统一并且可以自己更换版本所以不使用默认的wrapper方式,而是采用手工下载二进制压缩包并配置环境变量,再通过IDEA构建项目如果不太理解,可以.
2020-08-27 15:23:03
219
原创 大数加法 Java
头插法import java.util.*;public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * 计算两个数之和 * @param s string字符串 表示第一个整数 * @param t string字符串 表示第二个整数 * @return string字符串 */ public String solve(String s, Stri
2022-01-03 17:12:52
226
原创 Flink
report(transactions).executeInsert(“spend_report”);将transactions表经过report函数处理后写入到spend_report表每分钟(小时)计算在五分钟(小时)内每个账号的平均交易金额(滑动窗口)?注:使用分钟还是小时作为单位均可...
2021-10-26 22:28:42
581
原创 近似计算在Presto的使用
第一题搜索HyperLogLog算法相关内容,了解其原理,写出5条 HyperLogLog的用途或大数据场景下的实际案例概念HyperLogLog是一种高级数据结构,是用来统计基数,也称为基数计数算法基数计数(cardinality counting)是实际应用中一种常见的计算场景,在数据分析、网络监控及数据库优化等领域都有相关需求。精确的基数计数算法由于种种原因,在面对大数据场景时往往力不从心,因此如何在误差可控的情况下对基数进行估计就显得十分重要。目前常见的基数估计算法有Linear Count
2021-09-29 21:05:06
376
原创 Spark SQL思考题
一、如何避免小文件问题1、在最终输出数据时,减少 Task 的数目2、如果存在 Shuffle,可以通过 Adaptive Query Execution(AQE) 动态调整 partition 的数量3、如果不存在 shuffle,在代码端通过repartition的方法进行重分区然后再通过write的方式来减少 partition 的数量4、Hudi 提供的一个非常重要的特性是自动管理文件大小,而不用用户干预,使用 Hudi 提供的小文件合并功能避免小文件问题...
2021-09-21 15:55:08
101
原创 Spark SQL添加命令
为Spark SQL添加一条自定义命令SHOW VERSION显示当前Spark版本和Java版本(额外补充Scala版本)版本记录IDEA版本:2019.3.5本地Java版本:1.8.201本地Maven版本:3.6.3Spark版本:3.1.2版本问题困惑了好久,最后更换了IDEA版本后成功一、Spark SQL添加命令1、在SqlBase.g4添加语法规则src/main/antlr4/org/apache/spark/sql/catalyst/parser/SqlBase.g
2021-09-06 10:31:03
689
原创 反转链表之一题多解
一、题目LeetCode 206题测试地址:https://leetcode-cn.com/problems/reverse-linked-list/二、图解链表基本结构/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode() {} * ListNode(int val) { this.val =
2021-09-02 08:46:24
104
原创 从上到下打印二叉树(层序遍历)
从上到下打印二叉树(层序遍历)剑指 Offer 32 - I/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { public int[] levelOrder(Tre
2021-06-11 12:37:00
271
2
原创 conda使用(Windows 10)
未配置环境变量,所以使用Anaconda Powershell Prompt或Anaconda Prompt查看版本conda --version更新conda update conda查看环境conda info --envs或者conda env list创建环境conda create -n <env_name> python=x.x删除环境conda remove -n <env_name> --all激
2020-10-24 00:00:40
127
原创 阿里云购买服务器步骤
服务器为什么需要服务器?发布自己的网站或项目搭建数据库、tomcat、远程仓库等环境练习Linux基础操作以及Linux环境部署等等购买服务器24岁以下可以购买学生机,100+元/年官网:https://www.aliyun.com/,在阿里云购买需要在安全组设置中开通端口映射步骤如图123456789...
2020-08-23 18:14:41
191
原创 Spring Boot的配置文件存放规则
Spring Boot的配置文件可以写在哪些位置项目名:test总共有四种方式,如图所示方式一项目下创建文件夹:configconfig文件夹里面创建:application.yamlserver: port: 8081方式二项目下创建:application.yamlserver: port: 8082方式三项目的资源路径下创建文件夹:configconfig文件夹里面创建:application.yamlserver: port: 8083.
2020-08-23 18:08:47
266
原创 Spring Boot开发Web项目
静态资源通过jar包引入Spring Boot项目可以通过jar包去运行Web项目,因此静态资源不是存放到webapp中静态资源的存放路径通过WebMvcAutoConfiguration类中的addResourceHandlers()方法指定:/webjars/Spring Boot将静态资源存入到jar包中引入:从jar目录结构的webjars开始写检验:http://localhost:8080/webjars/jquery/3.3.1-1/jquery.js@Overridepub.
2020-08-23 18:06:14
162
原创 Spring Boot入门
1.微服务一个项目可以由多个**小型服务(微服务)**构成把各个功能变成独立的项目,再通过协议(例如HTTP等)将独立的项目连在一块如果需要对某个功能进行修改,只需对单独的项目进行修改,不涉及其它项目正常运行等问题2.Spring Boot作用(1)可以快速开发微服务模块(2)简化J2EE开发(用Java开发大型项目)(3)整个Spring技术栈的整合(整合SpringMVC、Spring等)(4)整个J2EE技术的整合(整合MyBatis、Redis等)3.准备工作(1)配置jdk①
2020-08-23 18:04:57
452
原创 8.事务
使用注解实现事务(声明式事务)目标:通过事务 使以下方法 要么全成功、要么全失败public void addStudent() {// 增加班级// 增加学生// CRUD}1.所需要的jar包(1)spring-tx-4.3.9.RELEASE.jar事务所需的jar包(2)commons-dbcp-1.4.jar连接池使用到的数据源(3)commons-pool-1.6.jar连接池(4)ojdbc7.jar事务与数据库相关,所以需要连接数据库(5)spring-jdb
2020-08-08 16:11:04
107
原创 7.使用注解定义bean
1.概念通过注解的形式将bean以及相应的属性值放入IOC容器2.示例(1)applicationContext.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springfra
2020-08-08 16:10:31
141
原创 6.自动装配
1.约定优于配置自动装配是一种以约定的方式进行赋值2.使用范围只适用于ref类型3.示例<bean id="course1" class="nuc.hzb.entity.Course" autowire="byName"> <property name="courseName" value="java"></property> <property name="courseHour" value="54"></property><
2020-08-08 16:09:58
137
原创 5.特殊值的注入问题
1.value与注入方式的区别使用子元素注入而使用value属性注入参数值位置写在首尾标签()的中间(不加双引号)写在value的属性值中(必须加双引号)type属性有(可选)可以通过type属性指定数据类型无参数值包含特殊字符(<, &)时的处理方法两种处理方法 一、使用<![
2020-08-08 16:09:27
102
原创 4.Spring DI
1.依赖注入示例(1)Teacher.javapackage nuc.hzb.entity;public class Teacher { private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return
2020-08-08 16:08:55
86
原创 3.Spring IOC发展史
1.通过new来获取对象Student student = new Student();student.setXxx();2.通过简单工厂来获取对象3.通过IOC(超级工厂)获取对象4.控制反转的解释(1)IOC(控制反转)也可以称之为DI(依赖注入)(2)控制反转将创建对象、属性值的方式进行了翻转,从new、setXxx()翻转为了从Spring IOC容器getBean()(3)依赖注入将属性值注入给了属性,将属性注入给了bean,将bean注入给了IOC容器(4)总结IOC/D
2020-08-08 16:08:24
208
原创 2.开发Spring IOC程序
1.Student.javapackage nuc.hzb.entity;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class Student { private int no; private String name; private int age;
2020-08-08 16:07:55
146
原创 1.Spring环境搭建
1.搭建Spring环境(1)下载jar①地址一https://repo.spring.io/webapp/#/artifacts/browse/tree/Properties/libs-release-local/org/springframework/spring②地址二https://maven.springframework.org/release/org/springframework/spring/(2)Spring至少需要的jar(5+1)①spring-aop.jar开发AO
2020-08-08 16:07:20
115
原创 MyBatis深入研究
MyBatis进阶1.数据库环境切换2.注解方式3.增删改的返回值问题4.Oracle事务提交5.自增1.数据库环境切换(1)切换environment在conf.xml中,指定实际使用的数据库<environments default="developmentOracle"> <!--Oracle数据库--> <environment id="developmentOracle"> <transactionManager type="JD
2020-07-21 23:24:19
447
原创 十七、Mybatis内置的类型处理器
类型处理器Java类型JDBC类型BooleanTypeHandlerBoolean,boolean任何兼容的布尔值ByteTypeHandlerByte,byte任何兼容的数字或字节类型ShortTypeHandlerShort,short任何兼容的数字或短整型IntegerTypeHandlerInteger,int任何兼容的数字和整型LongTypeHandlerLong,long任何兼容的数字或长整型FloatTypeHandl...
2020-07-21 18:24:37
224
原创 十六、逆向工程
1.概述表、类、接口、mapper.xml四者密切相关,因此当知道一个的时候,其他三个应该可以自动生成2.实现步骤(1)jarmybatis-generator-core.jarmybatis.jarojdbc.jar(2)generator.xml逆向工程的配置文件generator.xml<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE generatorConfiguration PUBLIC "-//mybati
2020-07-21 18:20:00
122
原创 十五、整合Ehcache缓存
1.概述三方提供的二级缓存有:ehcache、memcache要想整合三方提供的二级缓存 (或者自定义二级缓存),必须实现org.apache.ibatis.cache.Cache接口,该接口的默认实现类是PerpetualCache2.整合Ehcache二级缓存(1)jarehcache-core.jarmybatis-Ehcache.jarslf4j-api.jar(2)配置文件Ehcache.xml<ehcache xmlns:xsi="http://www.w3.org/20
2020-07-21 18:19:23
124
原创 十四、禁用、清理二级缓存
1.禁用<!--useCache="false"--><select id="queryAllStudents" resultType="student" useCache="false"> select * from student</select>2.清理(1)与清理一级缓存的方法相同commit会清理一级和二级缓存,但是清理二级缓存时,不能是查询自身的commit()一般执行增删改时会清理掉缓存,设计的原因是为了防止脏数据但是在清理二级缓存中,c
2020-07-21 18:18:31
211
原创 十三、查询缓存
1.一级缓存同一个SqlSession对象MyBatis默认开启一级缓存,如果用同样的SqlSession对象查询相同的数据则只会在第一次查询时向数据库发送SQL语句,并将查询的结果放入到SqlSession中(作为缓存在后续再次查询该同样的对象时,则直接从缓存中查询该对象即可,即省略了数据库的访问)public static void queryStudentByStuno() throws IOException { Reader reader = Resources.getResource
2020-07-21 18:16:53
146
原创 十二、延迟加载
1.使用场景一对一、一对多、多对一、多对多例如:一对一:学生、学生证,一对多:班级——学生如果不采用延迟加载(立即加载),查询时会将一和多都查询,班级、班级中的所有学生如果想要暂时只查询一的一方,而多的一方先不查询,而是在需要的时候再去查询,就要用到延迟加载2.一对一(1)conf.xml<settings> <!-- 开启日志,并指定使用的具体日志 --> <setting name="logImpl" value="LOG4J"/> <
2020-07-21 18:16:13
115
原创 十一、整合log4J日志
1.log4j依赖的jarlog4j.jar (mybatis.zip中lib中包含此jar)2.开启日志在conf.xml中开启<settings> <!-- 开启日志,并指定使用的具体日志 --> <setting name="logImpl" value="LOG4J"/></settings>如果不指定,Mybatis就会根据以下顺序 寻找日志SLF4J →Apache Commons Logging →Log4j 2 → Log4
2020-07-21 18:15:19
102
原创 十、关联查询
1.一对一(1)业务扩展类用resultType指定类的属性包含多表查询的所有字段package nuc.hzb.entity;public class Student { private int stuNo; private String stuName; private int stuAge; private String graName; private boolean stuSex; private Address address; public Student()
2020-07-21 18:14:38
151
原创 九、动态SQL
1.重复代码// 查询全部String statement = "select stuno,stuname from student";// 根据年龄查询学生String statement = "select stuno,stuname from student where stuage = #{stuage}"; // 根据姓名和年龄查询学生String statement = "select stuno,stuname from student where stuname = #{st
2020-07-21 18:13:44
120
原创 分享组件Share.js的使用
一、特别说明1.vue环境2.组件仓库地址3.使用 cdnjs引入share.min.css与 social-share.min.js(在线方式)二、使用效果1.初始版2.修改版三、使用说明1.引入(1)js文件地址https://cdnjs.cloudflare.com/ajax/libs/social-share.js/1.0.16/js/social-share.min.js(2)css文件地址https://cdnjs.cloudflare.com/ajax/lib
2020-07-21 15:01:57
4200
原创 idea热部署实现静态资源更新不需重启服务器
1.打开tomcat配置,点击Deployment,确保是带有war deployment,如果不是把之前的删掉,重新添加(这种情况一般是deployment有两种:war和war deployment)2.点击Server,确保On frame deactivation是Update classes and resources3.其它地方都与热部署生效的配置无关,看详细图...
2020-07-16 21:55:29
1022
原创 八、输出参数
1.简单类型(8个基本+String)<select id="queryStudentCount" resultType="int"> select count(*) from student</select>2.输出参数为实体对象类型<select id="queryStudentByStuno" parameterType="int" resultType="student"> select * from student where stuno = #{
2020-07-16 21:30:20
319
原创 七、调用存储过程
1.查询某个年级的学生总数输入:年级输出:学生总数create or replace procedure queryCountByGradeWithProcedure(gName in varchar, sCount out number)asbeginselect count(*) into sCount from student where gname = graName;end;<!--通过调用存储过程实现查询 存储过程的输入参数,在MyBatis用Map来传递
2020-07-16 12:52:52
439
原创 六、输入参数(parameterType)
1.类型为简单类型(8个基本类型+String)#{}、${}的区别区别1#{任意值}${value} ,其中的标识符只能是value<select id="queryStudentByStuname" parameterType="string" resultMap="studentResult"> <!-- select * from student where stuname = #{stuname} --> select * from student where
2020-07-16 12:50:51
433
原创 五、类型处理器(转换器)
1.自带类型处理器int——number等2.自定义类型处理器java——数据库(jdbc类型)3.示例实体类Studentboolean stuSex true:男false:女表studentnumber stuSex1:男0:女4.自定义类型转换器步骤(1)创建转换器通过阅读源码发现,此接口有一个实现类BaseTypeHandler ,因此要实现转换器有2种选择a.实现接口TypeHandler接口b.继承BaseTypeHandlerpackage nuc.
2020-07-16 12:49:28
193
原创 四、优化
1.db.properties可以将配置信息单独放入db.properties文件中,然后再动态引入db.properties:k=v(在conf.xml中通过k的值来取v的值)引入之后,使用${key}(1)db.propertiesdriver=oracle.jdbc.OracleDriverurl=jdbc:oracle:thin:@127.0.0.1:1521:ORCLusername=scottpassword=tiger(2)conf.xml<?xml vers
2020-07-16 11:02:54
148
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人