
开发基础技术
文章平均质量分 89
基础开发技术相关
关于技术
这个作者很懒,什么都没留下…
展开
-
Maven:mirror和repository 区别、pom.xml 指定仓库地址、releases 和 snapshots 区别
当 Maven 需要下载构件的时候,先向私服请求,如果私服上不存在该构件,则从外部的远程仓库下载,同时缓存在私服之上,然后为 Maven 下载请求提供下载服务,另外,对于自定义或第三方的jar可以从本地上传到私服,供局域网内其他 maven 用户使用。私服是一种特殊的远程 Maven 仓库,它是架设在局域网内的仓库服务,私服一般被配置为互联网远程仓库的镜像,供局域网内的 Maven 用户使用。换句话说,任何一个可以从仓库Y获得的构件,都胡够从它的镜像中获取。也可以把做的东西放到本地仓库,仅供本地使用;转载 2022-10-19 11:19:40 · 6663 阅读 · 1 评论 -
Jackson使用详解
有时,可能希望以不同于Jackson ObjectMapper缺省方式的方式将JSON字符串读入Java对象。可以将自定义反序列化器添加到ObjectMapper,可以按需要执行反序列化。这是在Jackson的ObjectMapper中注册和使用自定义反序列化器的方式:> vc) {super(vc);}}}}}有时,想要将Java对象序列化为JSON的方式与使用Jackson的默认方式不同。转载 2022-09-30 18:05:19 · 2733 阅读 · 0 评论 -
高并发分布式锁架构解密,不是所有的锁都是分布式锁!!
简介: 很多小伙伴留言说,在学习高并发编程时,不太明白分布式锁是用来解决什么问题的,还有不少小伙伴甚至连分布式锁是什么都不太明白。明明在生产环境上使用了自己开发的分布式锁,为什么还会出现问题呢?同样的程序,加上分布式锁后,性能差了几个数量级!这又是为什么呢?今天,我们就来说说如何在高并发环境下实现分布式锁。最近,很多小伙伴留言说,在学习高并发编程时,不太明白分布式锁是用来解决什么问题的,还有不少小伙伴甚至连分布式锁是什么都不太明白。明明在生产环境上使用了自己开发的分布式锁,为什么还会出现问题呢?同样的程序,转载 2022-06-23 10:52:32 · 183 阅读 · 0 评论 -
Java8 Stream实战
在了解Stream之前,我们先来看一个需求:已知一个公司的员工信息,获取当前公司中员工年龄大于30 岁的员工信息。首先,我们创建一个员工实体类。我们用一个List对象构建一组员工数据。接下来,最容易想到是我们使用常规遍历集合的方式来查找年龄大于等于30 的员工信息很快,业务需求发生了变化,要求”获取当前公司中员工工资大于或者等于5000 的员工信息“。于是,我们不得不再次创建一个按照工资过滤的方法。对比filterByAge()方法和filterBySalar() 方法后,我们发现,原创 2022-06-15 00:15:53 · 682 阅读 · 0 评论 -
UML类图(继承、实现、关联、依赖、组合、聚合),你还傻傻分不清吗?
什么是UML维基百科对UML的定义:UML(Unified Modeling Language)是一种开放的方法,用于说明、可视化、构建和编写一个正在开发的、面向对象的、软件密集系统的制品的开放方法。UML展现了一系列最佳工程实践,这些最佳实践在对大规模,复杂系统进行建模方面,特别是在软件架构层次已经被验证有效。这个语言由葛来迪·布区,伊瓦尔·雅各布森与詹姆士·兰宝于1994年至1995年间,在Rational Software公司中开发,于1996年,又进一步发展。UML集成了Booch转载 2022-05-19 09:15:33 · 9664 阅读 · 2 评论 -
UML科普文,一篇文章掌握14种UML图
文章目录 前言 什么是UML? 为什么要用UML? UML图有哪些? UML图概览 什么是类图? 泛化(Generalization) 实现(Realization) 关联(Association) 聚合(Aggregation) 组合(Composition) 依赖(Dependency) 什么是组件图? 什么是部署图? 什么是对象图? 什么是包图? 什么是组合结构图? 什么是轮廓图? 什么是用例图?转载 2022-05-18 18:43:56 · 481 阅读 · 0 评论 -
java 泛型解析
1、泛型的概述:1.1基本概述泛型的本质就是"参数化类型"。一提到参数,最熟悉的就是定义方法的时候需要形参,调用方法的时候,需要传递实参。那"参数化类型"就是将原来具体的类型参数化 泛型的出现避免了强转的操作,在编译器完成类型转化,也就避免了运行的错误。1.2 泛型的目的Java泛型也是一种语法糖,在编译阶段完成类型的转换的工作,避免在运行时强制类型转换而出现ClassCastException,类型转化异常。1.3 实例JDK 1.5增加了泛型,在很大的程度上方便在集合上的使用。如.原创 2022-05-17 15:54:17 · 1435 阅读 · 0 评论 -
聊聊 Java泛型通配符 “T,E,K,V,? ”
前言相信大家对Java泛型并不陌生,无论是开源框架还是JDK源码都能看到它,毫不夸张的说,泛型是通用设计上必不可少的元素,所以真正理解与正确使用泛型,是一门必修课,本文将解开大家对泛型的疑惑,并通过大量实践,让你get到泛型正确的使用姿势,下面开始进入正题吧!大纲基础因为本文重实践,而且面对的是Java开发人员群体,大家对泛型都有基础,所以泛型基础这块会快速过,帮助大家回忆下即可,后面主要的则重点是通配符编译期与运行期编译期是指把源码交给编译器编译成计算机可执行文件的过程,运行期转载 2022-05-17 10:49:34 · 1265 阅读 · 0 评论 -
Java多线程编程(3)- 线程同步
Java原创 2022-05-09 15:38:08 · 487 阅读 · 0 评论 -
Java多线程编程(2)- 线程安全
1 竞态 竞态指计算结果的正确性依赖相对时间顺序和线程的交错,通俗的说就是计算结果与时间有关,对于一个同样的输入,有时候结果正确,有时候结果不正确。竞态不一定会导致结果错误,只是说有这种导致结果出错的可能性。竞态往往伴随着读取脏数据问题,或是丢失更新问题。2 竞态的模式及竞态产生的条件竞态有两种模式: read-modify-write(读-改-写) 即读取一个共享变量的值(read),然后根据值做一些计算(modify),最后更新该变量的值(write)。例如...原创 2022-05-06 15:34:04 · 923 阅读 · 0 评论 -
Java多线程编程(1)- 线程基础
在Java中创建一个线程就是创建一个Thread类(或其子类)的实例。每个线程都有其执行的任务,线程的任务处理逻辑可以在Thread类的run方法中直接实现或者通过该方法调用相关处理函数,因此run方法相当于线程的任务处理逻辑的入口方法,它由Java虚拟机在运行相应线程时直接调用,而不是由应用代码进行调用。运行一个线程实际上就是让Java虚拟机执行该线程的run方法,从而使该线程的任务处理逻辑得以执行。Thread类的start方法可以启动一个线程。启动一个线程的实质是请求Java虚拟机运行相应的线程,原创 2022-05-05 12:22:53 · 508 阅读 · 0 评论 -
docker安装
一、安装前准备 根据不同系统准备安装docker的安装包,准备符合docker安装需求的Centos、Ubuntu系统。二、Centos系统(一)、安装前准备1、系统要求 要在 CentOS 上安装 Docker,最低的操作系统版本需要为 CentOS 7。其他的早期版本不能够获得支持。 centos-extras仓库需要被启用。这个仓库在默认情况下是启用的,但是可能因为其他的原因被关闭了,请参考重新启用 centos-extras仓库页面中的内容。 推荐使用overla转载 2022-04-22 12:34:53 · 208 阅读 · 0 评论 -
C语言中位操作
一、基本位操作| | ||-|-|-或-||-&-|-与-||-~-|-取反-||-^-|-异或-||-<<-|-左移-||->>-|-右移-|| | |二、位操作的常见用法1.获取某位的值#define BitGet(Number,pos) ((Number)|= 1<<(pos)) //把某位置1#define BitGet(Number,pos) ((Number) &= ~(1<<(pos)) //把某位原创 2022-02-17 10:07:08 · 1725 阅读 · 0 评论 -
Apache Calcite 优化器详解(二)
这里是 Calcite 系列文章的第二篇,后面还会有文章讲述 Calcite 的实践(包括:如何开发用于 SQL 优化的 Rule)。本篇文章主要介绍 Apache Calcite 优化器部分的内容,会先简单介绍一下 RBO 和 CBO 模型,之后详细讲述 Calcite 关于这两个优化器的实现 —— HepPlanner 和 VolcanoPlanner,文章内容都是个人的一些理解,由于也是刚接触这块,理解有偏差的地方,欢迎指正。什么是查询优化器查询优化器是传统数据库的核心模块,也是大数据计算引擎的核转载 2021-12-02 12:20:42 · 1767 阅读 · 1 评论 -
Apache Calcite 处理流程详解(一)
关于 Apache Calcite 的简单介绍可以参考 Apache Calcite:Hadoop 中新型大数据查询引擎 这篇文章,Calcite 一开始设计的目标就是 one size fits all,它希望能为不同计算存储引擎提供统一的 SQL 查询引擎,当然 Calcite 并不仅仅是一个简单的 SQL 查询引擎,在论文 Apache Calcite: A Foundational Framework for Optimized Query Processing Over Heterogeneous转载 2021-12-02 10:38:17 · 1812 阅读 · 0 评论 -
Calcite基础概念
1. Calcite中主要数据结构转化流程如图所示,SQL在Calcite中会经历以上流程,最终会生成优化过后的RelNode, 下面就以图中的各个点数据结构进行说明。2. SQL到SqlNode通过Parser, 可以将Sql转化成SqlNode, 什么是SqlNode? SqlNode是Calcite中用于表达关系运算的中间数据结构,这么说可能有些抽象,可以看下图:便于解释select id, cast(score as int), ‘hello’ from T where id <转载 2021-11-29 13:52:36 · 562 阅读 · 0 评论 -
MariaDB单机版安装(linux)
1 下载linux下安装二进制包以下以安装mariadb-10.5.8-linux-systemd-x86_64.tar.gz为例2 安装步骤1)解压缩安装包tar -xvzf mariadb-10.5.8-linux-systemd-x86_64.tar.gz建立一个软连接(方便后续操作)ln -s /opt/mariadb-10.5.8-linux-systemd-x86_64 /opt/maridb2)修改配置文件my.cnf先在/opt/maridb建立一个配置文件目录、日志目录原创 2021-07-15 17:47:53 · 1482 阅读 · 0 评论 -
微服务接口设计规范
1 接口评价标准一个好的接口设计通常需要满足以下几点:简单:满足需求的同时,越简单越好。易懂:优秀的API可读性好,尽量做到不需要文档就能读懂接口名称、参数的大概含义,提供给第三方的的接口要进行详细地描述。包括参数的取值范围、错误码、异常返回规则、SLA相关指标等。一致:对于同一公司、站点提供的API,最好有同一的规则,让开发者只要看过几个API后,基本能猜到剩余API的含义。稳定:最好在开始的时候就考虑好,不要轻易修改API,否则会给使用方造成麻烦。安全:设计时要考虑超出预原创 2021-07-13 14:25:40 · 3960 阅读 · 0 评论 -
IntellIJ IDEA 配置 Maven 以及 修改 默认 Repository***
IntellIJ IDEA 配置 Maven 以及 修改 默认 Repository***一.配置Maven环境1.下载apache-maven文件,选择自己需要的版本,地址: http://mirror.bit.edu.cn/apache/maven/maven-3/3.5.0/binaries/apache-maven-3.5.0-bin.zip2.解压1所下载文件,本人解压到:D:\server\maven\apache-maven-3.5.03.配置Maven环境变量a. MAVEN_HO转载 2021-05-12 10:19:53 · 4068 阅读 · 0 评论