自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 maven Jar包反向install到本地仓库

但是在maven仓库都找不到此jar包,其他人提供了这个jar包。需要把这个jar包install到本地仓库,使项目能正常打包运行。使用git bash命令执行以下脚本。项目打包时报错,缺少一个jar包。-Dfile=文件名。

2023-08-10 21:15:57 1397

原创 Spark写PGSQL分区表

一直都是spark计算完后写单表或者hive的表,都需要去手动去维护分区。但是写PGSQL空表(只有表字段,还没有数据,没有创建分区),需要手动先创建分区,否则会报错。插入失败的行的分区键包含的时间戳值 2023-08-04 21:14:09.641 在分区表中找不到对应的分区范围。最终的解决方案是在插入数据之前,通过代码去添加分区,添加好分区后再写入数据即可。spark程序计算后的数据需要往PGSQL中的分区表进行写入。使用了字符串格式,导致插入报错。自动生成当天日期和分区名称。

2023-08-04 22:27:36 815

原创 Java读取Excel 单元格包含换行问题

针对用户上传的Excel数据,或者本地读取的Excel数据。单元格中包含了换行,导致读取的数据被进行了切片。目前是把数据读取出来的cell转成字符串后,然后替换掉换行符即可。正常读取如下图所示。

2023-07-19 20:36:39 1912

原创 Maven打包报错

maven打包插件报错

2022-11-18 21:54:57 356

原创 Hive中UDFJar包被加载的时机

Hive UDF函数类加载时机

2022-09-15 12:36:00 805

原创 Linux虚拟机配网

问题环境:Centos7在保证VM8、虚拟机网络设置无误以及ifcfg-ens33网卡配置无误的情况下,使用ifconfig命令不出来ens33网卡配置的信息。使用ifup ens33命令,报下面的错误。Error: Conection activation failed : No suitable device found for this comnection (device lo mot ava解决直接在命令行执行一下命令chkconfig NetworkManager offchk

2021-07-13 11:01:27 221

原创 Linux调整目录显示的颜色的正常

问题描述在使用Linux虚拟机的时候,通过ls命令查看当前目录下的所有文件,但是都显示白色。(这个已经执行了一些操作,但是只显示目录,压缩包不显示红色)问题排查通过echo $LS_COLORS打印ls命令的颜色环境变量,发现本虚拟机是空的。但是通过此命令查看另一台虚拟机发现能打印出一些颜色码值。最终结论是:可能部分文件缺失。解决既然是打印环境变量,首先想到/etc/profile这个文件以及/etc/profile.d/这个目录下的文件。发现ls目录为白色的虚拟机/etc/prof

2021-07-12 22:19:48 659

原创 多个应用使用一个浏览器的session丢失问题

问题场景之前使用Dubbo做前后台项目的时候,因为前台和后台使用了同一浏览器登录。发现登录了前台,再登录后台时,前台的状态已经被磨掉了产生原因通过DEBUG调试了一下,发现是session失效的问题。但是自己想的是两个系统应该不会有影响。而实质是使用同一个浏览器导致的。当我使用两个不同的浏览器来处理的时候就会互不影响。简单场景复现复现场景通过启动两个SpringBoot框架的Web项目,并打印对应的sessionId观察情况两个请求的映射对应session1和session2,同时在后端处理

2021-05-18 17:02:50 636 3

原创 Spring中FactoryBean的BeanName解读

这里写目录标题简介结果演示环境结论源码分析1、转变BeanName2、从容器中获取BeanName对应的对象3、核心方法getObjectForBeanInstance4、判断逻辑1、先判断`name`是否为空,是否是`&`开头2、 接下来继续走逻辑,通过BeanName从`某个`缓存中获取对象3、如果缓存取不到就进行创建对象处理4、创建对象过程5、加入到Bean对象`factoryBeanObjectCache`容器中小结DEBUG查看容器对象信息factoryBeanObjectCache容器B

2021-05-14 16:27:49 3106 4

原创 通过mybatis的Executor查看完成SQL语句

问题场景在开发项目中,自己在本地测试的时候可能需要去验证SQL问题。但是会存在一些问题:例如,这条SQL语句是错误的,那么mybais在执行中会报错,并且SQL语句和参数都是处于分离的状态。导致从打印台中复制出来的SQL语句在需要参数的地方都是显示?符号。执行前Preparing : select * from user where id = ?Parameters : 1(Integer)成功执行后==> select * from user where id = 1SQL语句语法错

2021-05-14 11:36:38 821

原创 Win10系统本地调试IE8兼容的问题

Win10系统本地调试IE8兼容的问题需求解决方法问题的产生虚拟机使用windows系统的小技巧新的问题产生内网穿透工具IE11兼容模式问题需求最近碰到一个问题,就是IE8浏览器兼容性的问题。那么肯定会面临两个问题。首先,是安装IE8浏览器的问题;其次,是代码修改部署的问题(这种情况只针对IE8浏览器在虚拟机中才会出现)解决方法问题的产生因为我的笔记本电脑是Win10系统的,所以在下载IE8进行安装的时候就会报错了。去问了别人,在结合网上的一些博客,发现有一篇对于IE8的安装问题讲解得比较

2021-02-26 13:41:02 907

原创 SpringBoot源码简要解析

SpringBoot源码简要解析涉及到的注解@Import@Condition衍生注解proxyBeanMethods属性依赖管理自动装配注解AutoConfigurationImportSelector自动配置自定义starter流程代码启动实例化对象过程Run方法内容补充:注解方式IOC的包扫描类注入小细节Tomcat的启动涉及到的注解@Import这个注解可以导入相应的组件对象,并且这个注解对应的有三种使用方法;下面简单举一些例子。1、直接使用import导入组件类2、直接使用import

2021-02-19 11:38:17 229

原创 从源码的角度简单分析Spring中的循环依赖

Spring中的循环依赖循环依赖条件解决方案Spring的一些容器不允许循环依赖出现的情况1、构造器注入2、多例对象的setter注入无法循环依赖数据结构支撑流程简单解析处理流程为什么需要二级缓存不支持循环依赖的原因提前暴露对象的条件循环依赖条件对象之间彼此的相互引用。例如A持有B对象,同时B也持有A对象也存在多个对象相互引用;例如A持有B,B持有C,C持有A的情况。解决方案Spring中解决循环依赖使用了三个缓存(即一二三级缓存),并且通过提前暴露对象的手段使未进行依赖注入的对象可用。S

2021-02-19 10:04:20 146

原创 知网获取论文参考文献

知网获取论文参考文献进入知网搜索相应材料普通检索高级检索选择相应的文献点击右上角左边双引号“凑”参考文献进入知网中国知网官方网址:https://www.cnki.net/搜索相应材料搜素一般可分为`普通检索和高级检索``。一般而言,普通检索即可完成我们想要的搜索;高级搜索提供了更加精确,范围更大的检索匹配功能。普通检索高级检索选择相应的文献顶部有文献类型可以进行选择,文章的下载量,数据库,作者等信息都会一一显示出来。点击右上角左边双引号我们随便点击一片文章“凑”参考文

2021-02-05 13:19:51 3153

原创 设计模式理念在开发中的使用

前段时间在看项目源代码的时候,发现有一个模块在设计的时候挺有意思的。用了一些设计模式,还跟小伙伴争论起来具体是用了啥设计模式。这个模块能便于扩展,适配很多的地方;如果需要新增相关的功能不需要修改原有的代码,只需要新增一个类即可完成我们的需求增加。回去研究了一下,把一些相关的核心思想给整理写了一下;下面简单说一下这个模块。设计模式在开发中的使用模块简介简要分析用户抽象行为工厂行为处理类工厂简单操作流程效果演示核心代码包管理用户对象事件对象(核心)抽象类具体实现类(以上网为例)事件执行对象(核心)公共抽象

2021-02-02 11:54:09 152

原创 Git代码冲突

Git代码冲突测试用例结果解决方案一步骤图例冲突文件中多出来的东西是啥解决冲突方案二步骤图例错误示范未提交拉取最新代码事前准备测试中解决方案git reset 进行强制覆盖git stash结论最近在使用SVN版本管理碰到了一点冲突问题,就想测试一下Git的代码冲突。冲突的文件,什么情况会发生冲突,冲突的解决方法等等测试用例1、新建一个码云仓库(因为码云比GitHub快,所以用码云做测试),并准备a.txt文件做用例2、使用两个两个账户(A和B)对a.txt进行拉取,并同时修改3、B先修改内容;

2021-02-01 23:31:13 256

原创 SVN碰到的一些问题

最近在使用SVN进行代码提交和回退的时候碰到了一些小问题,在这里分享一下碰到的一些坑,顺便小结一下这段时间常用的一些SVN的操作。SVN碰到的一些问题鼠标右键不显示SVN菜单可能解决办法一、修复SVN二、修改SVN对应的选项三、卸载杀毒软件四、其他还原版本并提交具体步骤代码冲突问题IDEA一些常用的地方提交代码更新代码查看当前文件被修改的记录快捷方式鼠标右键不显示SVN菜单就是在任何地方右击鼠标的时候没有出现对应的菜单可能解决办法一、修复SVN可以通过SVN的安装包,对SVN进行修复的操作;修

2021-02-01 16:34:38 2272

原创 Dubbo过滤器失效问题

Dubbo过滤器失效问题问题描述解决方案1、检查导入包2、resources目录问题问题描述在进行Dubbo练习Demo的时候,配置了过滤器。发现并没有生效,在进行服务调用的时候,没有显示过滤器打印的内容。解决方案1、检查导入包检查看过滤器中导入的包是否是Dubbo的包org.apache.dubbo.rpc.Filter,点进去会发现有该类下有@SPI注解,那就说明没有引入错误。2、resources目录问题这个也是我碰到的问题。根据SPI的机制,针对maven工程,我们需要在resou

2021-01-24 20:20:39 3260

原创 Spring的事务传播行为

Spring的事务传播行为概念分类表格解析简单测试PROPAGATION_REQUIREDPROPAGATION_NESTED捕获异常的结果未捕获异常的结果这几天看了一下Guzz这个ORM框架,突然看到事务这块去复习了一下Spring事务一些东西,就看到了事务传播行为。之前一直觉得这一块比较混乱,所以在稍微整理一下概念事务传播行为主要针对被调用的业务对象。事务的传播行为表示整个事务处理过程所跨越的业务对象,将以什么样的行为参与事比如A.service()调用了B.service()的业务层方法

2021-01-21 12:22:56 139

原创 Spring事件发布监听机制

Spring事件发布监听机制大致流程步骤1、创建事件2、创建监听对象3、注册消息发布者结果演示DEBUG调试消息推送者是谁消息是如何推送的这几天在看业务源代码,发现一些业务的service层执行完时都会执行一个publishStateChangeEvent推送状态改变事件的方法。因为在经过这个消息推送后发现,数据发生了一些改变,说明这个事件肯定执行了一些方法去对相关数据进行了一些增删改查的操作。所以去追踪了一下执行的机制,也算是了解一下该功能,毕竟之前也没有用过Spring的发布监听。大致流程流

2021-01-19 17:28:51 372

原创 AOP结合ThreadLocal完成切面日志记录

AOP结合ThreadLocal完成切面日志记录功能需求业务步骤代码演示引发的问题测试准备测试问题的产生解决方案优化小结功能需求在开发过程中有时候会碰到一些日志记录的需求。需要记录包括统计执行时间,调用者IP,调用者登录的用户名,调用方法的全限定类名......等等信息。这时候,只需要使用Spring的AOP应用将系统一行一个切面插入,用前置通知和后置通知完成即可。业务步骤这里就不讲AOP配置啥的了,直接简单说明一下业务步骤记录当前时间通过JoinPaiont来获取要调用的方法信息通过re

2021-01-18 15:31:20 3114 2

原创 Zookeeper(一)安装

Zookeeper(一)安装JDK的安装官网信息步骤总结配置环境变量ZK的安装下载创建目录修改配置文件运行zk小结安装一般根据官方文档比较清晰一点。或者一些README等文件信息可以很好的看出需要依赖的其他软件或环境等。根据官网提供的信息,我们知道:在安装zk之前要先安装JDKJDK的安装在JavaSE文档中能找到一些相关信息官网信息提供了RPM和tar.gz的两种方式进行安装步骤总结下载好对应的rpm包或tar.gz压缩文件解压或安装如果是包直接通过rpm -ivh命令

2021-01-18 13:46:49 243

原创 JDK7的自动资源管理

JDK7的自动资源管理简介用法模板使用代码传统方法JDK7方法编译文件注意事项简介Java 7 增加了一个新特性,该特性提供了一种管理资源的方式,这种方式能自动关闭文件。这个特性有时被称为自动资源管理(Automatic Resource Management, ARM)。该特性以 try 语句的扩展版为基础。自动资源管理主要用于,当不再需要文件(或其他资源)时,可以防止无意中忘记释放它们。当 try 代码块结束时,自动释放资源。因此不需要显示的调用 close() 方法。该形式也称为“带资源的

2021-01-17 20:39:23 2124

原创 SpringBoot中使用@PropertySource的问题

使用@PropertySource的问题官网概述碰到的问题可能遇到的问题和解决办法1.resources2.打包编译的问题3.可能是YAML4.其他问题官网概述先来看一下SpringBoot官网中对@PropertySource注解的一些使用说明:大概了解一下就是:加个全局配置测试环境怎么用这个注解加载@Configuration注解的类中这个注解不能加载yaml文件…等等(有兴趣可以用谷歌浏览器翻译一下)配置文档:https://docs.spring.io/spring-boot

2021-01-15 13:16:51 1395 1

原创 JBOSS容器碰到的一些问题

JBOSS容器碰到的一些问题下载安装JBOSS下载地址解压完后先看README文件配置环境变量运行环境选择修改端口项目部署碰到的一些问题端口号出错:port out of range ........版本不兼容编译出错造成的原因:解决方案一:解决方案二:高版本跑低版本项目报错权限不够的问题小结下载安装选择一个合适的版本进行下载并解压即可。JBOSS下载地址https://jbossas.jboss.org/downloads解压完后先看README文件因为涉及到JDK版本兼容性的问题,最终下载

2021-01-13 14:43:50 418

原创 mybatis源码分析(1)整体架构及日志模块

mybatis整体架构及日志模块整体架构逻辑分层日志模块单模块分析其他模块的引用小结整体架构在把mybatis源码下载编译好成自己的模块时,就可以随心的加入一些注释。下面对其整体架构进行简单分析。mybatis一共有16个包。其实比较核心的模块也就几个,其他的都是用于辅助,锦上添花的。16个模块很多都是一眼就看出负责什么的。例如datasouce肯定就是数据源模块;logging就是负责日志的;cache负责缓存模块;transaction负责事务相关;annotations负责基于注解的开发映射

2020-12-15 10:28:28 120

原创 编译mybatis源码及一些问题

编译mybatis源码及一些问题步骤下载源码及工具修改配置安装到本地其他工程引入小结步骤下载源码及工具1.mybatis源码mybatis的下载地址:https://github.com/MyBatis/MyBatis-32.maven工具mybatis通过maven进行编译的,比Spring用Gradle要方便一点。maven自行下载即可,毕竟也是常用的jar包管理工具。至于版本,必须是3.25以上,最新的也好。我用的是3.6.2版本进行编译的。修改配置将pom.xml文件中的所有

2020-12-13 19:44:55 281

原创 编译Spring源码的步骤及一些问题

编译Spring源码的步骤及问题步骤下载对应工具编译部分测试其他工程引入自己编译的源码碰到的问题小结步骤下载对应工具1.下载gradle,使用下载好的gradle进行编译,不需要太新,但是版本一定要匹配(好像没碰到版本冲突问题,注意一下就得了)。gradle网址:https://services.gradle.org/distributions/下载好后记得配置环境变量方式一:1.新增环境变量GRADLE_HOME->文件安装目录2.配置Path新增%GRADLE_HOME%bin即可

2020-12-13 11:48:35 482

原创 Java虚拟机运行时数据区

虚拟机运行时数据区程序计数器虚拟机栈本地方法栈堆方法区直接内存小结程序计数器程序计数器也叫PC计数器,用于记录程序当前所运行到的指令行。在多线程中,CPU会对就绪状态的线程进行随机调度,此时就需要程序计数器来记录不同线程所执行到的位置。程序计数器是唯一不会发生OOM(OutOfMemory)的地方。虚拟机栈其实虚拟机栈和本地方法栈都是栈结构。在方法调用中就容易看出这个结构:public void one(){ System.out.println("one start");

2020-11-24 00:49:49 334 1

原创 反编译字节码文件不显示局部变量表

在调试反编译字节码文件的时候,发现没有生成对应的局部变量表。如下图所示:出现问题的原因:查了一些资料发现,是我们在进行编译的时候没有让生成的字节码显示调试信息,所以反编译的时候就不会显示局部变量表。通过javac -help,可以看出:我们在编译的过程中需要加入相应的参数(-g),才会显示调试信息如下图:对此,进行了重新编译最终,能成功显示局部变量表...

2020-11-20 23:13:03 303

原创 JUC中对线程的协同合作控制

线程的协同合作控制CountDownLatch使用代码演示小结Semaphore使用小结Condition使用代码CyclicBarrier使用:代码演示小结在使用多线程的时候,我们可以使用一些工具来达到对资源的访问量控制、线程之间的相互等待、线程之间的通信唤醒。控制线程的合作并发,主要有四大工具;CountDownLatch,Semaphore,Condition以及CyclicBarrier。下面对这四个工具进行逐一介绍。CountDownLatchCountDownLatch主要是用于线程之间

2020-11-19 15:40:26 273 1

原创 并发编程之ThreadLocal汇总小结

并发编程之ThreadLocal解决的问题引入ThreadLocal数据结构相关常用方法getMapset方法get方法initialValue方法remove方法空指针和内存泄漏应用小结在多线程开发过程中,我们往往不能忽略并发安全的问题。处理线程安全的问题有很多,例如让变量不可变,使用线程安全的集合,使用JUC包下的相关类(如Atomic包)等等,这里的话我们简单总结一下ThreadLocal这个常用的类。解决的问题首先来看一些很常见的场景,当我们开发一个Web网站。不同的用户进来能显示不同的信息,

2020-11-16 10:23:47 141

原创 一文小结设计模式之命令模式(Java实现)

设计模式之命令模式简介命令模式模板引入命令模式注意事项UML类图小结简介日常的需求中,我们有时候需要调用者与被调用者进行分离。即将动作的执行者与动作的发布者进行解耦分离。在实际业务过程中,发布者就不需要过多的关心谁是执行者,只需要发布命令,具体的执行者会去执行。但是,为了避免命令的错误发布,在抽象出来的命令接口中要提供一个撤销操作。对于撤销操作,即返回上一步命令,可以结合备忘录模式使用;或者命令只有对立的状态,可以调用其相反状态(例如电灯开关,执行了开的操作想要撤销的话就直接执行关即可。因为它的状态只

2020-11-12 10:50:28 101 2

原创 一文小结设计模式之观察者模式(Java实现)

设计模式之观察者模式简介传统方式引入观察者JDK的支持UML类图小结简介首先,我们来看一个需求。当某一件事情发生的时候会去通知另外一件事情的执行。例如,小孩子哭肯定会引起爸爸妈妈的注意,接收到消息会引起QQ或者微信的闪动…等等。总之呢,对于一个你想要监听的方法,你可以使用观察者模式进行设计。观察者模式在23种设计模式中也是比较常用的,他能做得到的很多;包括事件监听、发布订阅、消息通知,甚至可以帮我们一理解面向切面APO。传统方式我们先来看传统的方法,直接暴力解决,当被观察的方法触发时,就会调用对应

2020-11-11 15:48:41 120

原创 一文小结设计模式之代理模式(Java实现)

设计模式之代理模式静态代理代码UML类图动态代理jdk代理代码参数说明UML类图代理类源码注意事项小结cglib代理代码注意事项Instrument代理对于类中的某个方法的增强,在之前文章也有介绍。可以通过继承、装饰者模式、组合/聚合、代理模式等进行增强,本文主要介绍通过代理的方式对方法的增强操作。静态代理先来看静态代理;静态代理,故名思议就是你传给我什么类,我就帮你加强什么类,并且代理类是通过自己编写class类来完成的。代码接口类:public interface IProxyMethod

2020-11-10 19:33:56 115

原创 一文小结设计模式之工厂模式(Java实现三种)

设计模式之工厂模式简单工厂引入简单工厂UML扩展小结工厂方法引入工厂方法UML小结抽象工厂引入抽象工厂UML小结工厂方法是常用的创建型模式之一,其主要核心是将对象交由工厂去实例化,我们只需要通过工厂去获得该我们想要的实例即可。本文简单描述三种工厂模式,但是简单工厂模式并不属于23种设计模式之一,其作为一个铺垫可以更好的理解工厂方法和抽象工厂两种设计模式。简单工厂我们先来看最原始的工厂模式,也就是简单工厂。其通过传入的字符参数不同来对应生产不同的实例,而工厂通过大量的if...else来对我们传入的字符

2020-11-10 11:09:42 2248

原创 一文小结设计模式之装饰者模式(Java实现)

设计模式之装饰者模式简介引入装饰者模式注意事项UML类图扩展小结简介我们从扩展类的功能有哪些方法来分析。继承、代理都可以对原有的类进行增强的操作。但是,如果我们需要在特定的场合加入特定的增强,那就需要装饰者模式来实现功能。就是可以做到一个可根据需求及特定的场合进行穿配拆卸的增强操作。装饰者模式相对比较简单,只需定义好最终被包装的基类,以及需求对应的增强类。引入装饰者模式我们直接引入装饰者模式进行分析:接口类(定义一个学习的人抽象接口):public interface Cake { v

2020-11-09 16:47:11 138

原创 UML类图的简单小结

UML类图的简单小结UML中的简介传统UML类图的标识UML中的关系依赖泛化(继承)实现关联组合聚合IDEA中的类图小结UML中的简介UML中主要是用于描述类与类之间的关系。在从整体浏览项目的时候,往往会通过相应的流程图来了解该项目的相关业务流程;而具体的对应类我们可以通过UML类图去看到每个类中对应的关系。例如下图中的是状态模式相关的UML类图:传统UML类图的标识简单了解了一下UML和看过对应类图后,我们来简单看看相应的标识(通用表示)。整体概览第一矩形:类名第二矩形:属性名第

2020-11-09 15:02:11 286

原创 一文小结设计模式之状态模式(Java实现)

设计模式之状态模式简介传统方法引入状态模式注意事项UML类图小结简介当我们需用要程序去描述某个物体的某些事情的时候,并且这些事情会随着这个物体的状态有不同的处理机制。例如,电梯在运行的时候不可以开门,在停止的时候可以开门;视频在停止的时候只能开启,在播放的时候可以暂停、停止、快进。从这两个例子可以看出,面对物体的当前状态不同,那么他执行的方法也会产生不同的变化。传统方法我们先来从普通的角度来编写代码;我们可以根据对象当前状态进行判断从而完成我们希望他去执行的方法:public class Rad

2020-11-05 18:04:33 129

原创 一文小结设计模式之责任链模式(Java实现)

设计模式之责任链模式简介传统处理引入责任链注意事项小结简介责任链模式可以很好的帮我们处理对一个请求或者数据的阶梯级链式处理。例如,对于一个OA审批过程,需要从主管->部门经理->分公司经理->总经理…层层递进;或是对于某个叠加数据的层层处理,如一个Json串{A:x,B:y,C:z},如果A不存在就不往下判断了,对某个数据进行递进式校验(先看空不空,看长度满不满足,看字符对不对,看格式有无问题…)等等。总之,如果需要对某项请求或者数据进行阶梯级处理的话,推荐使用责任链模式。传统处理

2020-11-05 15:32:25 202

空空如也

空空如也

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

TA关注的人

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