- 博客(43)
- 收藏
- 关注
原创 Flink基本概念和算子使用
会话窗口中,最重要的参数就是会话的超时时间,也就是两个会话窗口之间的最小距离。与BroadcastProcessFunction不同的是,这时的广播连接流,是一个KeyedStream与广播流(BroadcastStream)做连接之后的产物。滚动窗口可以基于时间定义,也可以基于数据的个数定义,需要的参数只有一个,就是窗口的大小。当这个窗口范围的进入第一条数据时,才会创建对应的窗口。对流的数据,来一条计算一条,将当前元素和上一次聚合后的数据组合,输出新值,并将新值进行保存,作为下一次计算的元素。
2024-09-27 15:00:33
1461
原创 学习记录之JVM
一个类在收到类加载请求后不会自己尝试加载这个类,而是将这个加载请求委派给父类加载器去完成,其父类加载器又会将这个请求委派给自己爹父类加载器去完成,以此类推,这样所有的类加载都会委派给启动类加载器。新生代又可被分为eden、from survivor、to survivor(比例 8:1:1),eden 存放的是刚刚创建的对象,from 和 to 存放的则是至少经历过一次回收且存活下来的对象,当幸存下来的对象达到指定年龄,则被移入老年代。存放的是类的元数据,包含类的类型数据,域信息、运行时常量池、方法信息。
2024-01-13 18:25:17
701
原创 浅学习Gradle
Gradle 是一种开源构建自动化工具,足够灵活,可以构建几乎任何类型的软件。支持依赖管理和多项目,类似 Maven。定义任务名称:任务名称必须是一个有效的标识符,以描述任务的具体操作。指定任务依赖项:可以指定任务依赖项,即指定该任务必须在执行其它任务之后再执行。这样可以确保任务按正确的顺序执行,以避免出现构建错误。配置任务行为:可以在任务中使用闭包或方法来定义任务的行为。// doFirst是一个闭包,在任务执行之前执行。使用doFirst可以在任务执行之前添加某些动作doFirst {
2023-06-12 15:17:31
535
原创 利用redis,模拟控制库存消耗场景
@Resource private RedisConnection<String, String> redisConnection; @Resource(name = "testPool") private ExecutorService executorService; @GetMapping(value = "/test") public void testRedis() { // 库存 redisConnecti.
2021-11-12 13:57:32
1256
原创 详细分析MyBatis的工作原理以及核心流程详解
一、MyBatis的工作核心流程图二、源码分析(图解)示例代码入口:public static void main(String[] args) throws IOException { InputStream inputStream = Resources.getResourceAsStream("mybatis-config.xml"); SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(inputStream)
2021-08-10 21:12:05
373
原创 理解代码分层架构
一、为什么要做代码分层代码分层架构设计主要为了实现责任分离、解耦、组件复用和标准制定。二、什么是代码分层架构先通过软件分层架构来说起1、什么是软件分层架构软件分层架构是通过层来隔离不同的关注点。软件部署分层架构主要包括以下四个核心部分:客户端层(Client):调用方,比如浏览器或 App。应用服务层的网页服务器(Web Server):实现程序的运行逻辑,并从下层获取数据,返回给上层的客户端层。应用服务层的缓存(Cache):加速访问存储的数据。数据层(DB):存储数据。软件分层架
2021-07-23 11:04:48
4077
1
原创 Unix哲学17条原则
一、什么是Unix哲学?其实就是开发Unix时的指导思想。二、Unix哲学17条原则(本人自我理解)1、模块化原则(Rule of Modularity) —— 就是可复用和可替换的代码。2、清晰原则(Rule of Clarity) —— 就是代码交给其他人看时,都能明白其中的含义。代码尽可能易读和易理解。3、和解原则(Rule of Composition)4、分离规则(Rule of Separation) —— 就是B提供接口内部实现,A直接使用B提供的接口,不用关心内部实现。5、简单
2021-07-23 11:00:00
649
原创 利用数组实现队列--顺序队列
代码实现:public class ArrayQueue { /** * 数组--元素 */ private String[] items; /** * head 表示队头下标 */ private int head = 0; /** * tail 表示队尾下标 */ private int tail = 0; /** * 队列大小 */ private
2021-04-12 14:50:26
313
原创 基于数组,实现动态扩容的顺序栈
实现代码:public class DynamicCapacityArrayStack<T> { /** * 存放数据的数组 */ private T[] items; /** * 栈中元素初始化容量大小 */ public static int initSize = 10; /** * 当前栈中元素个数 */ private int currentSize; /**
2021-04-09 15:38:30
341
原创 常用的LocalDateTime时间工具类
LocalDateTime时间工具类:public class LocalDateTimeUtils { /** * 获取指定日期所属周的周一的日期 * @param localDate * @return */ public static LocalDateTime getMondayForThisWeek(LocalDate localDate) { LocalDateTime monday = LocalDateTime.of
2021-01-04 16:31:57
1147
原创 Java--new Date插入mysql数据库,数据库时间多一秒问题
这是由于new Date()时,实际上是调用的System.currentTimeMillis()方法,即获得以毫秒为级别的时间戳。一般数据库表的字段类型datetime/timestamp长度都是设置为0。MySQL数据库对于毫秒大于500的数据进行进位,所以就造成的MySQL中的时间多一秒。实际效果:解决方案:1、将数据库表字段类型datetime/timestamp长度设置不为0即可2、在代码中将new Date()进行一次格式化“yyyy-MM-dd HH:mm:ss”,抑或是
2020-11-19 15:20:25
2650
原创 CountDownLatch和join()的使用
CountDownLatch概念CountDownLatch是一个同步工具类,用来协调多个线程之间的同步,或者说起到线程之间的通信(而不是用作互斥的作用)。CountDownLatch能够使一个线程在等待另外一些线程完成各自工作之后,再继续执行。使用一个计数器进行实现。计数器初始值为线程的数量。当每一个线程完成自己任务后,计数器的值就会减一。当计数器的值为0时,表示所有的线程都已经完成一些任务,然后在CountDownLatch上等待的线程就可以恢复执行接下来的任务。可以解决当一个某线程任务需要依赖其
2020-08-25 14:36:35
463
原创 Java Lambda表达式使用积累----过滤、去重、分组等
1、过滤集合中某个属性的具体数值的元素例子:public static void main(String[] args) { List<UserDto> userDtoList = new ArrayList<>(); UserDto userDto1 = new UserDto.Builder(1, "1").build(); ...
2020-03-05 11:28:18
3040
原创 解决Mac使用SVN命令出现xcrun: error: invalid active developer path (/Library/Developer/CommandLineTools)的问题
问题使用SVN checkout命令,下载远程仓库项目,报一下错误:分析这是由于缺失了CommandLineTools开发环境,无法找到此目录。解决在命令行输入xcode-select --install即可。或者去官网 More Downloads for Apple Developers 下载工具。...
2019-10-10 16:27:32
964
原创 MySQL之Explain查看执行计划中对各个关键字的含义以及索引的查看、添加和删除
一、用法explain + SQL语句例如:二、各个关键字含义1. idSELECT识别符,是SELECT查询序列号,查询序号即为sql语句执行的顺序,表示查询中执行select子句或操作表的顺序。(id相同,执行顺序从上往下;id不同,id值越大,优先级越高,越先执行)例如:2. select_type查询中每个select的查询类型。主要用于区别普通查询,联合查询...
2019-08-26 17:24:21
903
原创 基于Linux Centos7 环境下,安装Elasticsearch6.2.2,以及安装elasticsearch-analysis-ik-6.2.2分词器
一、Elasticsearch简介Elasticsearch是一个高度可伸缩的开源全文搜索和分析引擎。它允许您快速、实时地存储、搜索和分析大量数据。它通常用作底层引擎/技术,为具有复杂搜索特性和需求的应用程序提供动力。二、安装环境JDK版本:必须1.8以上yum install java-1.8.0-openjdk.x86_64三、安装步骤1. 创建目录[root@VM_0_3_c...
2019-07-23 10:59:49
1125
1
原创 关于String类的知识积累
字符串是常量,它们的值在创建之后不能更改。字符串缓冲区支持可变的字符串。String 对象是不可变的,所以可以共享。public final class String implements java.io.Serializable, Comparable<String>, CharSequence { ……}使用equals判断是否为nullTes...
2019-07-03 17:04:01
148
原创 Linux环境下,安装GitLab服务器和简单的使用以及GitLab完全的卸载删除(持续更新)
一、安装GitLub1、下载安装包选择需要的版本:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7wget https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-11.11.0-ce.0.el7.x86_64.rpm2、安装所需的命令yum insta...
2019-05-30 10:30:13
630
原创 Linux环境下,使用Nexus3.x搭建Maven私服,并使用Gradle进行上传和下载
一、准备环境JDK:jdk1.8 64位nexus:nexus3.x二、下载JDK8(如果没有JDK8的进行下载安装)nexus3.x需要JDK1.8支持。1.使用wget下载wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" ht...
2019-03-19 11:24:30
893
原创 SpringBoot之整合MongoDB实现增删改查操作
一、创建项目选用gradle做项目自动化构建工具添加lombok,web,mongodb的依赖
2019-03-18 16:32:16
8422
3
原创 Linux环境下,MongoDB库和集合的操作,增删改查的基本使用,游标的操作以及索引的基本使用
一、MongoDB数据库简介MongoDB,是NoSQL数据库,是一个基于分布式文档存储的开源数据库系统,旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB 将数据存储为一个文档,数据结构由键值对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。二、MongoDB数据库对比MySQL数据库的概念MySQL数据库概念Mon...
2019-03-13 16:31:16
1609
原创 Linux环境下,MongoDB 3.6.10 的安装步骤,以及设置用户和密码,配置随处执行mongo命令启动客户端,以及所遇到的问题
一、安装1.1 下载MongoDB安装包MongoDB官网下载地址:https://www.mongodb.com/download-center/community本人使用wget方式安装MongoDB。wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.6.10.tgz1.2 解压MongoDB安装包ta...
2019-02-25 17:19:12
3211
原创 SpringBoot 使用Cross-Origin Resource Sharing(CORS)解决前后端分离后的跨域问题
一、什么是跨域跨域,指的是浏览器不能执行其他网站的脚本,是由浏览器的同源策略造成的,是浏览器施加的安全限制。所谓同源是指,域名,协议,端口均相同。例如:http://127.0.0.1:8850/test/index.html 调用 http://127.0.0.1:8850/test/server (非跨域)http://127.0.0.1:8850/test/index.html ...
2019-01-23 09:56:58
8861
1
原创 Linux环境下,Redis的介绍和安装使用以及后台运行Redis的配置
一、Redis的介绍Redis 是完全开源免费的,是一个高性能的key-value数据库。Redis 与其他 key - value 缓存产品有以下三个特点:Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。Redis支持数据...
2019-01-09 17:42:54
391
原创 Lombok的介绍,以及在IDEA中使用Lombok来优雅的编码
一、Lombok是什么 Project Lombok是一个java库,可以自动插入编辑器和构建工具,为java增添趣味。永远不要再编写另一个getter或equals方法,使用一个注释,类就有了一个功能齐全的构建器,自动化了日志变量,等等。二、Lombok的便捷之处 Lombok能以简单的注解形式来简...
2019-01-07 16:58:19
279
原创 Linux环境下,MySQL主从复制的配置过程
一、什么是主从复制&nbsp;&nbsp;&nbsp;&nbsp;主从复制,是用来建立一个和主数据库完全一样的数据库环境,称为从数据库;主数据库一般是实时的业务数据库。二、从数据库的作用和用途&nbsp;&nbsp;&nbsp;&nbsp;从数据库的作用和使用场合一般有几个:一是作为后备数据库,主数据库服务器故障后,可切换到从数据库继续工作;二是可在从数据库作备份、数据统计等
2018-12-28 17:38:43
390
原创 Linux环境下安装Docker和Docker的好处和基本核心概念以及Docker的基本命令(持续更新)
1. Docker是什么Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、OpenStack 集群和其他的基础应用平台。2. 使用Docker的好处 或者 为什么使用Docker&amp;amp;amp;amp;amp;amp;amp;amp;amp;nbsp;&amp;amp;amp;amp;amp;amp;amp;am
2018-12-17 17:46:27
2849
原创 使用Java自定义注解实现获取请求的主机IP、URL、类型、方法名、入参以及返回结果
一、注解的基本知识1.注解的定义Java文件叫做Annotation,用@interface表示。2.元注解在创建注解的时候,需要使用一些注解来描述自己创建的注解,就是写在@interface上面的那些注解,这些注解被称为元注解。2.1注解的保留策略@Retention表示需要在什么级别保存该注解信息。可选的RetentionPolicy参数包括:SOURCE:注解仅存在于源码中...
2018-12-12 10:26:21
5618
1
原创 Linux环境下安装nginx
一、安装环境1.安装gcc环境安装nginx需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc。yum install gcc-c++2.安装PCRE库PCRE(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginx的http模块使用pcre来解析正则表达式,所以需要...
2018-12-07 10:52:16
811
原创 Linux 使用Docker安装MySQL8.0,并将MySQL数据库Volume卷挂载在本地目录下,实现数据的持久化
1.使用Docker查询MySQLdocker search mysql2.使用Docker拉取MySQLdocker pull mysql4.运行MySQL镜像并挂载到本地目录上sudo docker run -p 3307:3306 --name mysql -v /Users/qianye/Documents/docker/mysql/data:/var/lib/my...
2018-11-28 15:48:38
2204
原创 单体应用架构和微服务架构的区别
一、单体应用架构概念一个归档包(可以是JAR、WAR、EAR或其它归档格式)包含所有功能的应用程序,通常称为单体应用。而架构单体应用的方法论,就是单体应用架构。二、单体架构示意图三、单体应用架构的优缺点1. 优点便于共享:单个归档文件包含所有功能,便于在团队之间以及不同的部署阶段之间共享。易于测试:单体应用一旦部署,所有的服务或特性就都可以使用了,这简化了测试过程,因为没有额...
2018-09-25 17:32:41
23024
原创 解决HttpClient工具中application/x-www-form-urlencoded表单提交时,请求参数中文乱码问题
一、参数乱码现象当我去请求第三方接口时,接口接收格式为Form表单的时候,使用HttpClient工具类。这时,对于封装进HttpPost对象里的请求参数,如果有中文参数,会出现乱码的现象。二、代码现象复现controller层@RestController@RequestMapping(value = "/http")public class HttpClientControll...
2018-09-18 17:40:59
41827
原创 返回结果的HTTP状态码分类及描述
状态码是当客户端向服务器发送请求时,描述返回的请求结果。借助状态码,用户可以知道服务器端是正常处理了请求,还是出现了错误。状态码分类 状态码以3位数字和原因短语组成。数字中的第一位指定了响应类别,后两位无分类。一、2xx 成功 2xx相应的结果表明请求被正常处理了。1. 200 OK 表示从客户端发来的请求在服务器被正常处理了。 在响应报...
2018-09-11 18:06:42
1128
原创 SpringBoot之整合Swagger2
一、Swagger2介绍 Swagger是世界上最大的API开发工具框架,用于OpenAPI规范(OAS),使整个API生命周期的开发,从设计和文档,到测试和部署。 Swagger从API文档中提取了手工工作,具有一系列用于生成、可视化和维护API文档的解决方案。二、添加Swagger2依赖 我这里使用的是Gradle项目自动化构建开源工具 //swagger2 ...
2018-08-24 15:49:33
479
原创 SpringBoot之Spring JDBC Template常用方法
一、查询1.无条件查询,返回一个字段,需要使用queryForObject方法@Repositorypublic class TestMapper { @Resource private JdbcTemplate jdbcTemplate; //无条件查询,返回一个字段 public Integer selectCount() { St...
2018-08-21 16:15:25
2101
原创 List集合之判断List集合是否存在重复元素以及去重,以及针对集合内有重复对象的去重(利用TreeSet集合)
对于List集合判断是否存在重复元素,我是用了Set集合的特点:不能存储相同的元素, 达到判断List集合是否存在重复元素以及去重的效果。例子:public static void main(String[] args) { List&amp;lt;String&amp;gt; list = new ArrayList(); list.add(&quot;1&quot;); list.add(&
2018-08-20 17:49:27
8690
原创 在Mac上安装Gradle,以及Idea使用Gradle
一、Gradle下载地址:http://services.gradle.org/distributions/二、在Mac上配置Gradle环境本人Gradle文件的路径为 /Users/qianye/Documents/gradle-4.51.打开终端,输入open -e .bash_profile命令 2.在.bash_profile文件中添加一下信息,并保存GR...
2018-08-20 17:29:11
37537
3
原创 Steam流应用--排序
Stream通道流支持两种排序方式:sorted()自然排序;sorted(Comparator comp)。 sorted()自然排序:产生一个新流,流中每个序列按自然排序的方式进行排序。 sorted(Comparator comp):产生一个新流,流中的每个序列按自定义的比较器排序进行排序一、sorted()public static void main...
2018-08-09 16:51:41
9161
原创 @Autowired和@Resource的区别
@Resource和@Autowired都是注入Bean时使用的,@Resource不是Spring的注解,它的包是javax.annotation.Resource,需要导入,但是Spring支持该注解的注入;@Autowired是Spring的注解。1.共同点都可以写在字段和settrt方法上,如果都写在字段上,那么就不需要再写setter方法。2.不同点(1)@A...
2018-07-26 14:41:25
207
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人