后端开发
发表关于后端开发相关知识点
技匠三石弟弟
当你的才华还撑不起你的野心时,就应该静下心来学习;当你的能力还驾驭不了你的目标时,就应该沉下心来历练。梦想不是浮躁,而是沉淀和积累。
展开
-
解决springboot服务间Feign调用超时问题
解决springboot服务间Feign调用超时问题概述起因在完成项目功能需求的开发,经过自己测试以及通过测试组测试通过后,昨晚正式部署到线上环境进行正式运行前的最后一次的测试。但是在测试中,由A服务调用B服务接口时,***通过Feign调用(其实就是http请求,当A服务调用B服务时,如果不配置超时时间,那么A发出请求后,B应该立即响应,否则A服务会认为B已经断开连接)出现***连接超时的...原创 2019-09-12 10:29:41 · 18567 阅读 · 5 评论 -
Mybatis--实现批量插入list集合数据
**项目描述**今日在完成相应需求开发过程中,要实现多个参数插入数据库,其中有两个参数需做处理。ex:参数A为名称xxxName,参数B为内容xxxContent;参数A与参数B一一对应。这时在插入数据库时就需针对于参数A和参数B做特殊处理。1.简单描述其中两个参数的对应关系,方便解读。2.具体代码实现过程如下:(1)首先创建一个实体类名称为xxxTemplate.java(2)...原创 2019-09-19 21:58:53 · 7029 阅读 · 2 评论 -
SQL横表与纵表的相互转换
一、横表简单概述横表是普通的建表方式。例如:表结构为主键、字段1、字段2、字段3…。二、纵表简单概述纵表的表结构为主键、字段代码、字段值,字段代码则为字段1、字段2、字段3…。三、纵表转横表代码如下以及视图展示1.纵表视图如下:2.纵表转换成横表视图如下:3.sql语句如下所示:select student_name, sum(case ts.subject when 'C语言'...原创 2019-09-27 20:39:08 · 5260 阅读 · 0 评论 -
oracle数据库的分析函数ROW_NUMBER() OVER的基本用法
语法:ROW_NUMBER() OVER(PARTITION BY COLUMN1 ORDER BY COLUMN2)该语法的意思是根据COLUMN1分组,在分组内部根据 COLUMN2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)背景:今天主要在处理Oracle数据库表中重复数据,想到了使用该分析函数进行数据的处理示例如下图所示:(我的案例主要是以纬度分组)...原创 2020-02-20 20:29:02 · 717 阅读 · 0 评论 -
服务治理:Spring Cloud Eureka
核心内容:1. 构建服务注册中心2. 服务注册与服务发现3. Eureka的基础架构4. Eureka的服务治理机制5. Eureka的配置首先我们来搭建服务注册中心,需先创建一个Spring Boot项目,我的命名为eureka-server1)接下来需在pom.xml文件引入必要的依赖内容<project xmlns="http://maven.apache.org...原创 2020-02-25 12:47:58 · 106 阅读 · 0 评论 -
搭建注册服务提供者微服务
说明:本次主要完成将Spring Boot应用加入Eureka的服务治理体系(换句话说就是将一个微服务应用向服务注册中心发布自己)1.修改pom.xml文件(增加Spring Cloud Eureka模块的依赖)<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM...原创 2020-02-26 10:21:40 · 183 阅读 · 0 评论 -
声明式服务调用:Spring Cloud Feign
说明:此次任务主要是通过Spring Cloud Feign提供的声明式服务绑定功能来实现对该服务接口的调用。创建一个Spring Boot基础工程,命名为feign-consumer,并在pom.xml中引入spring-cloud-starter-eureka和spring-cloud-starter-feign依赖。<?xml version="1.0" encoding="...原创 2020-02-26 18:25:21 · 207 阅读 · 0 评论 -
清理oracle数据库中间表
一、流程公司A利用自己业务系统A将指定资源数据以csv文件上传到ftp服务器;公司B会通过已写好的定时任务脚本读取该ftp服务器目录下文件,(1)先进行检查数据操作:包括本地数据最新日期以及ftp数据最新日期比对;当两个数据日期无问题,就将资源数据文件下载到指定的目录下,若下载成功,退出服务器。(2)将下载好的资源文件数据导入中间表a,若完成,会报中间表导入成功;(3)利用Oracle...原创 2020-03-02 16:24:53 · 1085 阅读 · 0 评论 -
完成Oracle数据库dmp备份文件的导入
一、概述什么是dmp文件?dmp文件主要是从数据库导出的一种文件它主要用来做什么的?主要作用就是用来备份数据库利用什么方式进行导入、导出呢?一般会用exp命令来导出,用imp命令来导入也就是恢复数据库。二、操作需求将由Oracle其他库已导出的dmp文件导入到Oracle生产库(dmp文件是从远端服务器主机上进行下载的)问题当我通过PL/SQL工具中Import Tab...原创 2020-03-03 17:20:45 · 681 阅读 · 0 评论 -
oracle数据库大数据量表的复制备份以及表空间的清理
一、问题描述Oracle数据库retina用户表空间利用率频繁出现告警通知,利用率当前值已经不足10%。二、解决思录通过SQL语句检查表空间是否溢出--查询表空间是否溢出SELECT DBF.TABLESPACE_NAME "表空间", DBF.TOTALSPACE "总量(M)", DBF.TOTALBLOCKS "总块数", DFS....原创 2020-04-24 12:44:53 · 1660 阅读 · 0 评论 -
索引、单列索引、复合索引、主键、唯一索引、聚簇索引、非聚簇索引、唯一聚簇索引 的区别与联系
B树与红黑树最广泛的应用就是数据库索引,熟练使用索引是程序员最重要的基本功之一。索引的数据结构可以是树,也可以是哈希表。常用的数据库都是树结构的索引,本篇的背景也全部以树结构的索引为前提。本文旨在梳理各种常见的索引类型,简明扼要地说明它们的区别与联系,不讨论数据结构与算法。话不多说,直接上干货。索引数据库只做两件事情:存储数据、检索数据。而索引是在你存储的数据之外,额外保存一些路标(一般是B+树),以减少检索数据的时间。所以索引是主数据衍生的附加结构。一张表可以建立任意多个索引,每个索引可以是任意多个转载 2020-06-21 12:04:57 · 3226 阅读 · 0 评论 -
数据库sql实战
SQL1 查找最晚入职员工的所有信息 中等 41.34%SQL2 查找入职员工时间排名倒数第三的员工所有信息 中等 38.85%SQL3 查找各个部门当前领导当前薪水详情以及其对应部门编号dept_no 中等 21.21%SQL4 查找所有已经分配部门的员工的last_name和first_name 中等 36.86%SQL5 查找所有员工的last_name和first_name以及对应部门编号dept_no 中等 37.25%SQL6 查找所有员工入原创 2020-07-25 15:17:55 · 263 阅读 · 0 评论 -
java代码实现Ceph连接
一、简要概述Ceph做为优秀的性能、可靠性和可扩展性而设计的统一的、分布式文件系统;二、系统架构Ceph 系统架构可以划分为以下四部分:Clients:数据用户客户端cmds:Metadata server cluster,元数据服务器(缓存和同步分布式元数据)cosd:Object storage cluster,对象存储集群(将数据和元数据作为对象存储,执行其他关键职能)cmon:Cluster monitors,集群监视器(执行监视功能)Ceph的生态系统的概念架构如下图:原创 2020-09-28 20:33:56 · 4801 阅读 · 14 评论 -
MyBatis insert语句selectKey标签和返回主键
一、简要概述keyProperty:对应的domain 对象中需要被赋值的属性,一般是主键resultType:表示的是返回主键的类型order:如果设置为 BEFORE,那么它会首先选择主键,设置 keyProperty 然后执行插入语句。如果设置为 AFTER,那么先执行插入语句,然后是 selectKey 元素注意:SelectKey需要注意order属性,像MySQL一类支持自动增长类型的数据库中,order需要设置为after才会取到正确的值,像Oracle这样取序列的情况,需要设置为b原创 2020-10-08 11:37:18 · 1547 阅读 · 1 评论 -
mybatis 中的<![CDATA[ ]]>用法及说明
一、简要概述平时在mybatis的映射文件写sql时,很多时候都需要写一些特殊的字符。例如:"<“字符”>“字符”>=“字符”<="字符,但是在xml文件中并不能直接写上述列举的字符,否则就会报错。因为在解析xml文件时候,我们如果书写了特殊字符,在没有特殊处理的情况下。这些字符会被转义,但我们并不希望它被转义,所以我们要使用<![CDATA[ ]]>来解决。那为什么要这样书写呢?<![CDATA[ ]]> ,不言而喻:这是XML语法。在CDATA原创 2020-11-14 20:14:29 · 53977 阅读 · 4 评论 -
Oracle中decode、to_char、rollup函数用法
一、简要概述decode(条件,值1,返回值1,值2,返回值2,…值n,返回值n,缺省值)该函数的含义如下:IF 条件=值1 THEN RETURN(翻译值1)ELSIF 条件=值2 THEN RETURN(翻译值2) ......ELSIF 条件=值n THEN RETURN(翻译值n)ELSE RETURN(缺省值)END IFdecode(字段或字段的运算,值1,值2,值3)这个函数运行的结果是,当字段或字段的运算的值等于值1时,该函数返原创 2021-07-24 16:10:54 · 276 阅读 · 0 评论 -
Oracle分组函数之ROLLUP、GROUPING用法
一、简要介绍rollup用于分组统计,也属于oracle分析函数的一种,同理:grouping也是;假设有n个维度,那么rollup会有n个聚合,cube会有2n个聚合rollup统计列rollup(a,b) 统计列包含:(a,b)、(a)、()rollup(a,b,c) 统计列包含:(a,b,c)、(a,b)、(a)、()二、实践过程select a.deptname name, sum(b.sal) total from dept a, emp b where a.dept原创 2020-12-20 21:36:57 · 1925 阅读 · 0 评论 -
leetcode---程序员面试金典
面试题 01.01 判定字符是否唯一原创 2020-12-28 22:48:09 · 235 阅读 · 0 评论 -
MySQL存储过程实现点与点之间距离的计算
一、需求概述通过各个地级市中心点经纬度,计算出全国各地级市之间的距离。最后需整理出来的表字段需要提供以下内容,包括:(1)省份编码、城市编码、城市名称、经度、纬度、距离等四种类型字段。二、实现步骤实现手段使用mysql存储过程来完成本次的需求内容。距离计算方法使用mysql自带的计算地理距离的函数:ST_Distance(g1, g2 [, unit])以及ROUND() 函数(把数值字段舍入为指定的小数位数)SQL ROUND() 语法SELECT ROUND(column_n原创 2021-01-31 14:52:45 · 545 阅读 · 0 评论 -
idea上传本地项目到远端git仓库问题解决笔记
一、简要概述今天寻思将最终版本的项目上传到公司git仓库上,但是感觉自己好长时间没有做此操作了,有些生疏,迟迟没有上传成功。发生的问题大概如下所示:多次出现该界面,老是提示我输入密码;但是输入之后,就提示权限拒绝。让我一时不知所错,整的有点懵逼。二、解决步骤该次我出现的问题就是因为该处的url没有输入对造成的;该处的url应为远端git仓库这个url。如下图所示:...原创 2021-03-02 13:22:25 · 276 阅读 · 0 评论 -
StringUtils.equalsIgnoreCase与equals的区别
一、简要概述equalsIgnoreCase() 方法用于将字符串与指定的对象比较,不考虑大小写。equalsIgnoreCase() 方法中如果给定对象与字符串相等,则返回 true;否则返回 false。equals() 方法用于将字符串与指定的对象比较。String 类中重写了 equals() 方法用于比较两个字符串的内容是否相等。二、代码介绍看一下equalsIgnoreCase()和equals()方法的区别 String Str1 = new String("runoo原创 2020-12-31 14:47:57 · 1803 阅读 · 0 评论 -
java.util.concurrent.atomic包中并发原子类AtomicInteger讲解
一、简要介绍今天在项目代码中,注意到有使用AtomicInteger类,这个类主要是在java.util.concurrent.atomic并发包下的。Java并发机制的三个特性,如下所示:(1)原子性(2)可见性(3)有序性volatile关键字能禁止指令重排序,所以volatile能在一定程度上保证可见性、有序性。但是无法保证原子性;今天我们所讲述的AtomicInteger的作用就是为了保证原子性。代码如下所示:package concurrent;public class C原创 2020-12-29 23:12:39 · 517 阅读 · 2 评论 -
Java 日期格式化规则
一、日期格式化规则简要描述我们平时在java代码中有的时候会用到日期格式化的方法,但是我对这个日期格式化"yyyy-MM-dd HH:mm:ss" 输入参数的规则不是很明白,百度了一下,在这里记录一下。(1)yyyy代表年份;YYYY代表weak-year,通俗讲就是当周所在的年份;(2)MM代表月份;(3)dd代表这个月的多少天;DD代表 day of year 今年的第N天;(4)HH代表24小时制;hh代表12小时制;(5)mm代表分钟;(6)ss代表秒;代码 Date原创 2020-11-21 15:34:15 · 689 阅读 · 0 评论 -
java 集合判断是否为空
一、之前判断空常用手法集合判断是否为空if(null != list && list.size() > 0){ ......}以上存在的缺点代码的判断没有一点问题,纯粹个人书写习惯问题,只是写多了就会发现这样写有点麻烦。相信大家使用list集合,会发现本身带有判空的方法。如下所示:list.isEmpty();该方法的作用就是用来判断集合是否有数据存在,但是当我们这么判断的时候,会有一个问题就是当集合本身为null,会报空指针异常。如下图中列子所示:原创 2020-11-15 23:04:20 · 11894 阅读 · 1 评论 -
Java异常之checked与unchecked
一、异常概述首先,java的异常分为Error和Exception。这两类都是接口Throwable的子类。Error及Exception及其子类之间的关系,大致可以用下图简述。二、图例说明三、注意事项Error仅在java的虚拟机中发生,用户无需在程序中捕捉或者抛出Error。Exception分为一般的Exception和RuntimeException两类。这里有点让人觉得别扭的是RuntimeException(Unchecked)继承于Exception(Checked)的父类原创 2020-06-21 15:45:31 · 378 阅读 · 0 评论 -
Java中对List对象集合使用HashSet自动去重无法生效问题的解决
一、需求描述使用SQL语句关联三个表后,在Debug测试的过程中,获取数据库中的记录,发现有好几条记录是重复的。经过问题的排查,导致关联的结果出现重复,是因为其中一个表中含有多条重复的历史记录。需要有一种办法将返回的数据进行条件过滤,将重复的记录只保持一条,所以想到了Set集合。二、补充Set集合的特点: (1) 集合元素不重复(2)集合元素无序HashSet底层是HashMap实现,value固定为一个自定义对象,使用key保证集合元素的唯一性(原理:确保元素唯一性的两个方法,hashCo原创 2020-05-26 23:28:22 · 2431 阅读 · 2 评论 -
Java面试之方法的覆写与重载的区别
一、覆写方法的覆写可以总结成容易记忆的口诀:“一大两小两同”。(1)一大:子类的方法访问权限控制符只能相同或变大。(2)两小:抛出异常和返回值只能变小,能够转型成父类对象。子类的返回值、抛出异常类型必须与父类的返回值、抛出异常类型存在继承关系。(3)两同:方法名和参数必须完全相同。覆写示例代码如下:class Father { protected Number doSomething(int a, Integer b, Object c) throws SQLException {原创 2020-05-16 18:43:36 · 515 阅读 · 0 评论 -
JAVA并发与多线程-线程同步 synchronized 修饰方法
在JAVA多线程编程中,将需要并发执行的代码放在Thread类的run方法里面,然后创建多个Thread类的对象,调用start()方法,线程启动执行。当某段代码需要互斥时,可以用 synchronized 关键字修饰,这里讨论 synchronized 关键字修饰方法时,是如何互斥的。synchronized 修饰方法时锁定的是调用该方法的对象。它并不能使调用该方法的多个对象在执行顺序上互斥...转载 2020-01-31 17:24:45 · 357 阅读 · 0 评论 -
ArrayList底层jdk源码之modCount、expectedModCount解读
为了说明本次的内容,先看一下示例代码:运行结果:把目光聚焦在ConcurrentModificationException上,然后关于modCount的用处就会浮出水面。结合java.util.ArrayList.Itr源码分析代码中①②③④句。 public Iterator<E> iterator() { return new Itr(); }...转载 2019-11-03 13:45:21 · 3070 阅读 · 1 评论 -
Java中为什么要使用迭代器?
一、推出迭代器(iterator)目的1.从更高的角度进行分析,使用容器有一个缺点:要使用容器,就必须对容器的确切类型编程;如果我们暂且搁置一边,先来说说下面一种情况:(1)如果你在代码中原本对List进行编程,但是后来感觉使用Set进行编程更方便一些,此时你应该怎么做?你的答案可能会按照Set的逻辑在重头写代码,它们只是使用容器,不知道或者说不关心容器的类型,那么如何在不重写代码就应用于不同...原创 2019-10-27 21:01:16 · 4476 阅读 · 0 评论 -
浅谈Java中的栈内存和堆内存
Java把内存划分成两种:一种是栈内存,一种是堆内存。一、栈内存存放基本类型的变量,对象的引用和方法调用,遵循先入后出的原则。栈内存在函数中定义的“一些基本类型的变量和对象的引用变量”都在函数的栈内存中分配。当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。 Java...转载 2019-10-01 20:45:59 · 144 阅读 · 0 评论 -
学习java设计模式之单列模式---笔记
Java设计模式之单例模式详解在Java开发过程中,很多场景下都会碰到或要用到单例模式,在设计模式里也是经常作为指导学习的热门模式之一,相信每位开发同事都用到过。我们总是沿着前辈的足迹去做设定好的思路,往往没去探究为何这么做,所以这篇文章对单例模式做了详解。一、单例模式定义:有一些对象其实我们只需要一个,比方说:线程池(threadpool)、缓存(cache)、对话框、处理偏好设置和注册表...原创 2019-09-22 19:49:02 · 165 阅读 · 0 评论