自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(53)
  • 收藏
  • 关注

原创 数据库分析

查看被锁住的sessionSELECT s.sid, -- session_id s.serial#, -- serial# 是序列号 s.username, -- 用户(表空间) s.logon_time, -- 登录时间 o.owner, o.object_nameFROM v$session s, -- v$Session 是session视图 v$locked_object l, dba_objects oWHERE s..

2021-07-08 10:18:50 143

原创 通过arthas诊断线上环境

文章目录原因下载测试代码使用1、启动2、watch监控出参入参监听过滤不需要的数据3、 trace跟踪方法arthas快速入门原因有时候生产环境出现问题,没法远程DEBUG且日志没有体现出详细问题时就没法迅速有效诊断BUG所在,此时就可以使用arthas,通过arthas监控方法链路及入参出参下载官方链接 https://arthas.aliyun.com/arthas-boot.jar也可从我百度云下载链接:https://pan.baidu.com/s/1-CMsWLELBaBw2U

2021-04-12 15:48:28 412

原创 Oracle实现split函数

创建TYPECREATE OR REPLACE TYPE TYPE_SPLIT AS TABLE OF VARCHAR2 (4000);创建函数CREATE OR REPLACE FUNCTION SPLIT(P_STRING VARCHAR2, P_SEP VARCHAR2 := ',') RETURN TYPE_SPLIT PIPELINED IS IDX PLS_INTEGER; V_STRING VARCHAR2(4000) := P_STRING;BEGIN .

2021-03-01 15:27:04 3526

原创 【Mybatis】Oracle IN查询超过1000条报错

修改前<select id="getOnlineUser" resultMap="OnlineUserMap" > SELECT <include refid="OnlineUser_Column_List" /> FROM SYS_LOGIN_LOG WHERE SESSION_ID IN <foreach collection="sessions" item="session" index="index" open="(" separator="," cl

2021-03-01 15:14:21 226

原创 vue-router添加动态路由及无限刷新白屏和添加不生效问题

文章目录添加动态路由问题一:路由守卫死循环问题二:addRouters()不生效最终版,所有相关文件添加动态路由router/index.js在router.js里定义asyncRoutes作为动态路由数组,import Vue from 'vue'import Router from 'vue-router'import Layout from '@/layout'Vue.use(Router)export const constantRoutes = [ { pa

2021-03-01 15:00:10 7799 3

原创 postgresql——存储过程使用while循环

DO $$declare var_count integer;beginvar_count := 0; while var_count < 1000 loop execute('INSERT INTO "boy"("name", "age") VALUES (''a'', 11)'); execute('INSERT INTO "boy"("name", "age") VALUES (''a'', 12)'); execute('INSERT INTO "boy"("name",

2020-09-15 09:40:42 6243

原创 通过实现ResponseBodyAdvice接口统一修改返回值

ResponseBodyAdvice是对请求响应后对结果的处理@ControllerAdvicepublic class TestResponseBodyAdvice implements ResponseBodyAdvice { private static Logger logger = LoggerFactory.getLogger(TestResponseBodyAdvice.class); @Override public boolean supports(Meth

2020-09-14 14:58:57 580

原创 不兼容IE的NPM组件

1.版本3以上的js-base64卸载: npm uninstall js-base64安装:npm install [email protected] --save2.sm-crypto

2020-09-09 17:41:02 309

原创 Windows使用redis自定义密码并注册到服务

压缩包链接:https://pan.baidu.com/s/1dDreXgSsg7iB7eTxI-CgLw提取码:38nn下载解压之后,redis-server.exe就能启动服务端,redis-cli.exe就能启动客户端自定义密码解压后的redis默认是未设置密码的,打开压缩包内的redis.windows-service.conf搜索# requirepass foobared,这里就是密码了把#去掉,默认密码就是foobared注册到服务在文件夹内新建一个redis-start.b

2020-09-09 09:58:11 127 1

原创 OKHttp使用

给旧系统做了个小功能,要调用到其他服务。因为没有fegin,就通过HTTP来发请求。工具类public class OkHttpUtil { private static final MediaType JSON = MediaType.parse("application/json; charset=utf-8"); private static OkHttpClient client = new OkHttpClient(); public static Respon

2020-09-04 16:44:51 94

原创 nginx部署vue项目,内外网映射后访问不到

问题:在内网服务器中用nginx部署了vue项目,再将外网域名与内网IP做了映射。访问内网IP:PORT 成功进入访问域名:PORT 无法进入例:内网ng地址:123.12.1.2:9000 通过这个可以访问到vue页面将此ip与外网www.abc.com:8006做映射,无法通过www.abc.com:8006进入原来的nginx.confworker_processes 1;events { worker_connections 1024;}http {

2020-09-04 16:27:35 2557

原创 使用mybatis拦截器实现公共字段自动注入——第三版

前段时间写了两版mybatis拦截器实现公共字段自动注入,感觉第二版还是限制的过多了。用户基本无法扩展字段,也无法自定义方法,作为一个公共的基础框架工具类是不够的,所以又根据以上做了一些修改。文章目录思路注解定义接口定义配置开关SpringBean工具类反射工具类拦截器设计最终配置类使用示例思路去除接口中定义的方法和默认实现,只保留一个空接口供用户实现用户在注解参数中决定该字段是否需要注入和注入方法名用户实现接口,按需写提供数据方法拦截器通过spring容器获取接口的实现类,并根据注解参数的方

2020-09-01 16:16:31 2279

原创 获取yml配置文件内容工具类

public class YmlUtils { private static final Logger LOGGER = LoggerFactory.getLogger(YmlUtils.class); private static String bootstrap_file = "classpath:bootstrap.yml"; private static Map<String,String> result = new HashMap<>();

2020-09-01 15:13:28 923

原创 使用Java -jar部署jar包,指定外部化配置文件和日志路径

nohup java -jar authentication-1.0.0-SNAPSHOT.jar --spring.cloud.bootstrap.location=/opt/service/bootstrap.yml > /opt/service/cas.log代码内获取外部化配置文件路径:@Value("${spring.cloud.bootstrap.location}")private String path;

2020-09-01 15:11:52 6500

原创 IDEA运行项目报Command line is too long解法

找到项目下的.idea/workspace.xml,在标签块< component name=“PropertiesComponent”>中添加一行:< property name=“dynamic.classpath” value=“true” />

2020-09-01 14:10:26 122

原创 记录碰到的postgresql和sqlserver的不同

1.sqlserver不区分大小写,脚本里基本都是小写,而表字段和表名基本是大写pg默认将sql都转为小写,如果需要大写要用""括起来。2.ISNULL() 变 COALESCE()3.len变length4.CHARINDEX(str1, str2) 变 POSITION(str1 in str2)5.函数中返回值类型前用RETURNS而不是RETURN6.声明变量用declare而不是as7.在函数结尾需要声明执行语言$$ LANGUAGE plpgsql;8.函数中执行sql命令

2020-09-01 14:08:34 1236

原创 postgresql存储过程_多行多列_多表且结构不同

突然发现之前测的都只是单表,如果多表结构不同,返回类型该如何定义呢?准备工作经典用户——角色——关联表--emp 用户表CREATE TABLE "emp" ( "id" int4 NOT NULL, "name" text NOT NULL, "age" int4 NOT NULL, "address" char(50), "salary" float4);INSERT INTO "emp" VALUES (1, 'Paul', 32, 'California', 200

2020-07-22 10:23:55 439

原创 postgresql存储过程_多行多列_单表或结构相同表

前面的单行单列和多行单列,返回值都只有一个类型,那多行多列如何定义返回值呢?使用RECORDrecord实际上相当于一个占位符或者说指针。也就是说,系统看到record不会反应过来要去查系统表。CREATE OR REPLACE FUNCTION am2m1 ( in_id integer)RETURNS SETOF RECORD as $$DECLARE v_rec RECORD; BEGIN for v_rec in ( (select id,d_code,d_name,d

2020-07-22 09:58:45 1064

原创 postgresql存储过程_多行单列

上一篇讲的返回的是单行单列,比较简单,那如何返回多行呢准备工作1. return next,用在 for 循环中CREATE OR REPLACE FUNCTION am2o ( in_id integer)RETURNS SETOF varchar as $$DECLARE v_name varchar;BEGIN for v_name in ( (select d_name from department where d_parentid = in_id) union a

2020-07-22 09:14:12 193

原创 postgresql存储过程_单行单列

前言postgresql是没有像其他数据库一样有存储过程的,在这其实就是函数,由一组 sql 语句组成,实现比较复杂的数据库操作;语法解析CREATE [OR REPLACE] FUNCTION function_name (arguments) RETURNS return_datatype AS $variable_name$ DECLARE declaration; [...] BEGIN < function_body >

2020-07-21 18:04:29 211

原创 postgresql——WITH RECURSIVE

文章目录前言准备工作实验WITH RECURSIVE 使用限制总结前言RECURSIVE,递归查询。他将WITH从单纯的句法便利变成了一种在标准SQL中不能完成的特性。通过使用RECURSIVE,一个WITH查询可以引用它自己的输出。准备工作CREATE TABLE "resource" ( "id" int4 NOT NULL constraint resource_pk primary key, "name" text, "parent_id" int4);INSERT INT

2020-07-21 17:42:15 3886

原创 UNION和UNION ALL的区别

Union:对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;Union All:对两个结果集进行并集操作,包括重复行,不进行排序;举个栗子:两张结构相同的表,有一条记录完全相同。先看看UNIONSELECT * FROM usersUNIONSELECT * FROM users_log;结果:只有一条id为3的阿杜,UNION会将重复的行给合并再看看UNION ALLSELECT * FROM usersUNION ALLSELECT * FROM user

2020-07-21 17:11:58 108

原创 一张图看懂left join、inner join、right join、full outer join

2020-07-21 16:59:55 166

原创 postgresql——WITH语句

文章目录前言WITH查询WITH修改WITH注意事项前言WITH提供了一种方式来书写在一个大型查询中使用的辅助语句,可以把他看做成一张临时表。WITH语句作为一个辅助语句依附于主语句,也叫CTE。WITH语句和主语句都可以是SELECT,INSERT,UPDATE,DELETE中的任何一种语句。WITH查询用户、公司、关联表3表连查WITH eResult AS ( SELECT e.id empid,e.name empname FROM emp e),ecResult AS ( SE

2020-07-21 16:56:29 1499

原创 docker安装postgresql

拉取镜像docker pull postgres:9.6启动容器创建/usr/postgresql/data文件夹,用来做持久化docker run --name postgres -e POSTGRES_PASSWORD=password -p 5432:5432 -v /usr/postgresql/data:/var/lib/postgresql/data -d postgres进入postgresql# 进入容器docker exec -it postgres /bin/bash#

2020-07-21 15:38:05 622 1

原创 关于maven依赖中的scope的使用

示例<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <scope>provided</scope> <version>1.3.2</version></dependency>可选值:

2020-06-15 09:58:44 169

原创 @Validated和@Valid使用

Spring Validation验证框架对参数的验证机制提供了@Validated(Spring’s JSR-303规范,是标准JSR-303的一个变种),javax提供了@Valid(标准JSR-303规范),配合BindingResult可以直接提供参数验证结果。使用@Validated或者@Valid在基本验证功能上没有太多区别。但是在分组、注解地方、嵌套验证等功能上两个有所不同:分组@Validated:提供了一个分组功能,可以在入参验证时,根据不同的分组采用不同的验证机制。@Valid

2020-06-14 02:18:55 675

原创 @ConditionalOnProperty注解使用

需求做一个工具包供其他项目使用,有时候项目不需要使用该工具,可以通过配置文件配置取消使用,而不用去修改pom取消引入。作用控制Configuration是否生效注解详情@Retention(RetentionPolicy.RUNTIME)@Target({ ElementType.TYPE, ElementType.METHOD })@Documented@Conditional(OnPropertyCondition.class)public @interface Conditional

2020-06-14 00:07:04 500

原创 @ConditionalOnMissingBean注解使用案例

前言继@Conditional注解后,又基于此注解推出了很多派生注解,比如@ConditionalOnBean、@ConditionalOnMissingBean、@ConditionalOnExpression、@ConditionalOnClass…动态注入bean变得更方便了。本篇将讲解@ConditionalOnMissingBean注解。需求做了一个功能接口提供给消费者实现,考虑到有些消费者没有实现接口,就会导致报错。所以需要写一个默认实现,并且在消费者有实现接口时,采用消费者的接口。@C

2020-06-13 23:54:41 7327 1

原创 @ConfigurationProperties配置模块

在SpringBoot项目中,我们通常有大量参数需要写在配置文件中,通过 @ConfigurationProperties 注解,我们可以方便的获取这些参数值使用 @ConfigurationProperties 配置模块配置文件my: interceptor: enabled: true配置模块类@ConfigurationProperties( prefix = "my.interceptor")public class MybatisIntercep

2020-06-13 23:32:42 602

原创 使用mybatis拦截器实现公共字段自动注入——第二版

文章目录引言需求思路实现使用测试引言上一篇说了下我写的第一版拦截器,通篇写死,复用性极差,经过指导,删掉来过。需求通过mybatis拦截器注入公共字段需要注入的公共字段:字段备注created_by创建人created_time创建时间updated_by修改人updated_time修改时间注解实现有些时候,项目不需要使用拦截器,还需要去修改pom,比较麻烦。要支持通过配置文件来控制。思路写一个自定义注解,将注解打在字段上,表

2020-06-13 15:20:13 2389 3

原创 使用mybatis拦截器实现公共字段自动注入——第一版

文章目录需求思路实现缺点需求如题,用Mybatis拦截器做公共字段的自动注入,这是我第一次使用Mybatis拦截器。之前做过一次自动注入,是用的自定义注解,然后用AOP拦截注入的。注意:这一版是我写的第一版。都是写死的字段,很废物,下一遍会写一个注解版,稍微能通用一点…需要注入的字段:字段备注created_by创建人created_time创建时间updated_by修改人updated_time修改时间思路因为是公共字段,所以抽一个基

2020-06-13 14:21:00 819

原创 Sentinel控制台面板空白和修改源码配置将流控和降级规则持久化到Nacos

文章目录问题问题1原因解决问题2仍然存在的问题Sentinel官网问题使用docker部署的springboot和sentinel并且是在不同的云服务器上,sentinel是直接用docker拉取的bladex/sentinel-dashboardSentinel控制台可以看到启动的项目,但是监控界面是空白的,看了下Sentinel日志,一直报Failed to fetch metric from <SpringBoot项目docker容器内网IP>控制台新增的规则都只是保存在

2020-05-31 21:09:16 2107

原创 vue获取外网ip地址

很简单在公共index.html中加上<script src="http://pv.sohu.com/cityjson?ie=utf-8"></script><script type="text/javascript"> let Ip=returnCitySN['cip'] localStorage.setItem('Ip', Ip)</script>后续从localStorage中拿就好了~...

2020-05-30 10:47:59 1468 2

原创 通过websocket实现强制下线功能,并使用vuex存储

文章目录POM文件配置文件核心代码工具类前端部分POM文件<!-- websocket --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId></dependency>配置文件public class MySpringCon

2020-05-30 10:45:51 1427

原创 基于redisson实现注解版分布式锁

文章目录配置自定义注解自定义切面实现使用配置配置文件singleServerConfig: #连接空闲超时,单位:毫秒 idleConnectionTimeout: 10000 pingTimeout: 1000 #连接超时,单位:毫秒 connectTimeout: 10000 #命令等待超时,单位:毫秒 timeout: 3000 #命令失败重试次数 retryAttempts: 3 #命令重试发送时间间隔,单位:毫秒 retryInterval:

2020-05-20 12:28:36 442

原创 SpringCloud Sleuth分布式链路跟踪

文章目录是什么作用使用术语界面展示文档是什么Spring Cloud Sleuth提供了一套完整的服务跟踪的解决方案,在分布式系统中提供追踪解决方案并且兼容支持了zipkin。作用微服务之间通过网络通信。如果能够跟踪每个请求,了解每个请求,了解请求经过哪些微服务(从而了解信息是如何在服务之间流动)、请求耗费时间、网络延迟、业务逻辑耗费时间等指标,那么就能更好地分析系统瓶颈、解决系统问题。使用安装zipkin,使用windows和docker都可,我是使用docker部署引入依赖 &l

2020-05-20 12:09:56 104

原创 OpenFeign服务接口调用

文章目录是什么Feign和OpenFeign两者区别使用超时控制日志打印GitHup文档是什么Feign是一个声明式的Web服务客户端,让编写Web服务客户端变得非常容易,只需 创建一个接口并在接口上添加注解即可Feign和OpenFeign两者区别OpenFeign在Feign的基础上支持了对SpringMVC的注解,如@RequestMapping。OpenFeign的@FeignClient可以解析@ReuqestMapping注解下的接口,并通过动态代理的方式产生实现类,实现类中做负载均

2020-05-20 11:59:36 334

原创 Ribbon介绍——核心组件IRule替换规则

文章目录Ribbon是什么核心组件IRuleIRule:根据特定算法从服务列表中选取一个要访问的服务主要算法如何替换官网Ribbon是什么Ribbon其实就是一个软负载均衡的客户端组件, 他可以和其他所需请求的客户端结合使用。就是负载均衡+RestTemplate调用。核心组件IRuleIRule:根据特定算法从服务列表中选取一个要访问的服务主要算法com.netflix.loadbalancer.RoundRobinRule:轮询com.netflix.loadbalancer.Ran

2020-05-20 11:37:06 518

原创 Jenkins流水线构建gitlab项目整合SonarQube扫描代码

文章目录为什么要配置注意创建SonarQube工程Jenkins配置首次构建,配置凭据(此步骤每组有一个人做了就好)构建项目配置项目注意为什么要配置​ 现在主要是使用SonarQube,在我们将项目上传到gitlab后,Jenkins自动对项目进行构建,并通过SonarQube进行代码分析,方便詹老师查看。注意​ 因为我们各微服务都有引入基础框架,所以一定要先配置基础框架跟starter,将jar先安装到jenkins服务器的maven中,我们各微服务才能正常构建创建SonarQube工程Son

2020-05-16 19:10:56 4037

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除