自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(268)
  • 论坛 (1)
  • 收藏
  • 关注

原创 FastJson的坑:JSON.toJSONString 关于null值不序列化

在使用fastjson中JSON.toJSONString去转json字符串的时候遇到一个坑。1.现象null值不会被序列化,导致转出的json字符串里面丢失存在null值的字段。JSON.toJSONString(dto);转换前的实体,- dto: VisitTaskDto(actId=123, actName=xxx, prodCode=null, prodName=null)转换后,null值的字段丢失为{"actId":"123","actName":"xxx".

2021-09-08 13:49:53 127

原创 Rest API设计时,POST和GET如何区分

在做API设计时,纠结新增的时候用POST还是PUT,更新的时候用POST还是PUT,到底改如何选择。具体还要看使用场景,这里面涉及一个幂等性的问题。PUT方法还是POST方法?这取决于这个REST服务的行为是否是幂等的,假如我们发送两个http://xxx/xxx/test请求,服务器端是什么样的行为?如果产生了两条记录,那就说明这个服务不是幂等的,因为多次使用产生了副作用了;如果后一个请求把第一个请求覆盖掉了,那这个服务就是幂等的。不要求接口幂等(比如insert),应该使用POST方法,对

2021-08-27 09:58:11 38

原创 大数据集群巡检,最佳实践记录

公司使用的大数据集群是Cloudera,定期巡检,还是查出不少问题,后面进行优化。mark下供大家参考。发现主要的几个问题如下,1. HDFS 小文件过多小文件问题是目前HDFS上存在的最大问题。可以使用hadoop fs -count命令,简单统计下文件数量较多的目录。小文件很多是临时文件,建议定期清理。并检查业务逻辑,主要是什么导致的小文件过多,看能否通过修改处理逻辑来避免。2. DNS域名解析不全很多新加的边缘节点,没有配置全部的host,导致集群内部解析不全。虽不影响程序运行,但

2021-03-29 17:56:30 254

原创 Flink 连接 MySQL 错误:The server time zone value ‘Öйú±ê׼ʱ¼ä‘ is unrecognized or represents

Flink 处理好数据后,需要 Sink 到 MySQL 保存,连接的时候报错。1. 错误描述Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone. You must configure either the serve

2021-03-17 09:09:45 103

原创 Flink SQL 项目通用模板一

总结项目中的常用 flink sql 开发模板,供大家参考。主要分三大步:创建表执行环境。 创建输入表、输出表,并进行数据的逻辑处理。 任务执行。其中第二部是重点,细分三小步(也就是三个 tabEnv.executeSql)tableEnv.executeSql(inputTableDDL) // 1) create inputTable tableEnv.executeSql(outputTableDDL) // 2) create outputTable tableEnv.exec

2021-03-15 11:17:50 168

原创 Flink SQL 开发的代码结构

最近一直都在搞 Flink 相关的开发,清晰的代码结构有利于开发规范的统一和业务逻辑的梳理。Scala 代码结构,官网推荐的如下,// create a TableEnvironment for specific planner batch or streamingval tableEnv = ... // see "Create a TableEnvironment" section// create an input TabletableEnv.executeSql("CREATE T

2021-03-05 11:23:44 110 1

原创 Flink 使用 Scala 编程中注意的隐式转换

写代码过程中,IDE 的代码提示功能是程序员的最爱,但是在用 Scala 写 Flink 代码的过程中,经常会有不提示的情况。蛋疼。。。这个就是 Scala 的引入包的问题,常用的用下面这几个,mark 下,import org.apache.flink.streaming.api.scala._import org.apache.flink.table.api._import org.apache.flink.table.api.bridge.scala._注意后面的下划线,就是整包

2021-03-04 16:22:46 240 1

原创 Oracle 字符串批量替换

项目迁移,原来数据库中存储的 IP 地址变化了,需要批量替换下。使用 Oracle 的 replace 函数来操作,replace 函数说明replace(source,str1,str2),把 source 中 str1 字符串替换为 str2 字符串。若 str2 为 null 或空时,相当于把 str1 字符串剔除。 replace(source,str1) ,把 source 中的 str1 字符串剔除。 regexp_replace(source,pattern_str,rep_str

2021-03-04 09:50:05 569 1

原创 谷歌浏览器安装 elasticsearch-head 插件

谷歌浏览器安装Elasticsearch-head 插件下载该插件,地址:https://github.com/liufengji/es-head/blob/master/elasticsearch-head.crx 下载后的文件名是:elasticsearch-head.crx 打开谷歌浏览器,找到扩展程序,然后打开开发者模式,拖拽上一步的插件进来进行安装。 若提示:程序包无效:“CRX_HEDER_INVALID”,则按下面的步骤进行操作将文件elasticsearch-head.crx直接

2021-02-08 16:14:29 404

原创 scratch win10 环境搭建

scratch 在少儿编程里面非常受欢迎,今天也来安装下,操作系统win10。1、下载 scratch推荐官网(经常打不开):https://scratch.mit.edu/备用地址:https://scratch.software.informer.com/2、双击安装3、运行4、试用整个过程安装非常简单。。...

2020-12-14 13:23:39 927 1

原创 springcloud中fegin第一次跨模块调用超时

问题springcloud架构的项目中,偶尔出现fegin第一次调用超时的问题,该怎么处理?现象项目是个后端接口服务,接口调用链路会涉及到多个模块间fegin的调用。现象是:有时候重启部署后或者经过很长一段空闲时间,第一次调用网关接口不成功,第二次调用的时候就好了,建立连接之后调用都正常,并且是偶发性的,不好重现。解决通过分析日志文件,多方排查,确认是fegin第一次调用超时,从源码点进去查找,发现fegin的默认超时时间是2s,这对于第一次调用来说,初始化连接的时间不够,导致超时。尤其

2020-12-04 10:58:59 346

原创 CentOS7 安装 MySQL8

一、msql安装1、下载mysqlwget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm2、安装rpm包rpm -ivh mysql-community-release-el7-5.noarch.rpm3、安装mysql-serveryum install mysql-server4、重启mysqlservice mysqld restart 这时会提示:Redirecting

2020-11-24 12:08:41 58

原创 好好理解 Java 中的递归

递归的思想把规模大的问题转化为规模小的相似的子问题来解决。在函数实现时,因为解决大问题的方法和解决小问题的方法往往是同一个方法,所以就产生了函数调用它自身的情况。另外这个解决问题的函数必须有明显的结束条件,这样就不会产生无限递归的情况了。一句话总结:递归就是自己调用自己。递归的条件要素1、递归有两个重要条件,可以通过递归调用来缩小问题规模,且新问题与原问题有着相同的形式。(自身调用) 存在一种简单情境,可以使递归在简单情境下退出。(递归出口)2、递归的三要素,尝试将一个问题化简到

2020-11-24 10:18:49 972

原创 CentOS JDK环境安装配置

centos7.5,JDK1.8,1、修改配置文件,vim /etc/profileexport JAVA_HOME=/usr/local/Java/jdk1.8.0_261export JRE_HOME=${JAVA_HOME}/jreexport CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/libexport PATH=${JAVA_HOME}/bin:$PATH2、使环境变量生效(重要)source /etc/profile

2020-11-20 18:58:23 52

原创 HiveSQL和普通SQL的区别

HiveSQL和普通SQL的区别总结如下,HiveSQL对分号识别不是很智能,只要出现分号就认为是语句结尾。 HiveSQL不支持等值连接,即不支持where a.id = b.id的连接方式,HiveSQL使用join连接。 HiveSQL中没有not null,当字段为null时,使用Empty空值代替。即长度为0, 那么对它进行IS NULL的判断结果是False。 HiveSQL不支持将数据插入现有的表或分区,仅支持覆盖重写整张表。即不支持insert into,而需要使用insert

2020-11-19 09:30:48 1241

原创 2021最新Java面经系列整理,持续更新

2021最新Java面经系列整理,持续更新。。。欢迎大家关注收藏,一起加油O(∩_∩)O哈~2021最新Java面经系列 系列 内容 地址 框架篇 2021最新Java面经整理 | 框架篇(一)Spring框架 https://blog.csdn.net/shipfei_csdn/article/details/109530018 2021最新Java面经整理 | 框架篇(二)SpringMVC框架 https://blog.csdn.net/..

2020-11-14 07:06:38 12263 3

原创 2021最新Java面经整理 | 数据结构和算法篇

2021最新Java面经整理 | 数据结构和算法篇

2020-11-12 15:07:50 859

原创 2021最新Java面经整理 | 计算机网络篇

2021最新Java面经整理 | 计算机网络篇一、网络层次划分1、OSI 七层二、TCP/IP协议(重点)1、介绍TCP/IP协议是Internet最基本的协议、Internet国际互联网络的基础,由网络层的IP协议和传输层的TCP协议组成。通俗而言:TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台联网设备规定一个地址。IP层接收由更低层(网络接口层例如以太网设备驱动程序)发来的数据包...

2020-11-12 10:49:32 3813

原创 2021最新Java面经整理 | 数据库篇(一)MySQL

2021最新Java面经整理 | 数据库篇(一)MySQL一、基础1、数据库范式第一范式:1NF是对属性的原子性约束,要求字段具有原子性,不可再分解 (只要是关系型数据库都满足1NF)。 第二范式:2NF是在满足第一范式的前提下,非主键字段不能出现部分依赖主键;解决:消除复合主键就可避免出现部分以来,可增加单列关键字。 第三范式:3NF是在满足第二范式的前提下,非主键字段不能出现传递依赖,比如某个字段a依赖于主键,而一些字段依赖字段a,这就是传递依赖。解决:将一个实体信息的数据放..

2020-11-11 17:59:31 4948 1

原创 2021最新Java面经整理 | 框架篇(五)SpringBoot框架

2021最新Java面经整理 | 框架篇(五)SpringBoot框架目录一、SpringBoot简介二、SpringBoot核心注解1、@SpringBootConfiguration2、@ComponentScan3、@EnableAutoConfiguration三、SpringBoot starter 作用在什么地方?四、常用操作1、怎么禁用某些自动配置特性?2、怎么注册一个定制的自动化配置?3、当 bean 存在的时候怎么置后执行自动配置?4、怎么使

2020-11-10 19:07:02 3718 1

原创 2021最新Java面经整理 | 框架篇(六)SpringCloud框架

2021最新Java面经整理 | 框架篇(六)SpringCloud框架SpringCloud是对Springboot使用的分布式解决方案,适合分布式、中大型的项目架构开发,现在也逐渐成为Java服务端的主流框架。使用Spring Cloud开发的应用程序非常适合在Docker和PaaS(比如Pivotal Cloud Foundry)上部署,所以又叫做云原生应用(Cloud Native Application)。云原生可以简单地理解为面向云环境的软件架构。一、SpringCloud简介.

2020-11-10 18:14:05 3356 1

原创 2021最新Java面经整理 | 框架篇(四)Dubbo框架

2021最新Java面经整理 | 框架篇(四)Dubbo框架目录一、Dubbo 的工作流程二、Dubbo 的十层架构三、Dubbo 常见配置四、服务调用1、提供者暴露一个服务的过程2、消费者消费一个服务的过程3、服务调用过程五、Dubbo 的负载均衡机制六、Dubbo 的容错机制七、Dubbo 的服务降级八、Dubbo 的动态代理策略九、Dubbo 的SPI机制十、Dubbo 的序列化协议十一、Dubbo内置了哪几种服务容器十二、Dubbo 和

2020-11-10 14:14:55 550 1

原创 2021最新Java面经整理 | 中间件篇(六)Tomcat

2021最新Java面经整理 | 中间件篇(六)Tomcat目录一、Tomcat的整体结构1、连接器(connector)2、容器(container)3、其他二、Tomcat HTTP请求流程三、Tomcat的类加载机制(不同于JVM的类加载机制)1、Tomcat 如何实现自己独特的类加载机制?2、JVM类加载和Tomcat加载的不同四、其他问题一、Tomcat的整体结构Tomcat的本质是一个Servlet容器。一个Servlet能做的事情是:处理请求资源

2020-11-10 10:45:07 1533

原创 2021最新Java面经整理 | 中间件篇(五)Zookeeper

2021最新Java面经整理 | 中间件篇(五)Zookeeper一、ZooKeeperzookeeper=文件系统+通知机制zk是一个分布式的应用程序协调服务,比如有两台集器A、B,A对一个数据进行了操作,B是如何知道的,这个就需要zk的支持。分布式应用程序可以基于 ZooKeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协 调/通知、集群管理、Master 选举、配置维护,名字服务、分布式同步、分布式锁和分布式队列等功能。1、简介ZooKeeper是一个开放源.

2020-11-10 08:33:13 307

原创 2021最新Java面经整理 | 中间件篇(四)Nginx

2021最新Java面经整理 | 中间件篇(四)NginxNginx应该是现在最火的web和反向代理服务器,没有之一。她是一款诞生于俄罗斯的高性能web服务器,尤其在高并发情况下,相较Apache,有优异的表现。那除了负载均衡,还有静态代理、限流、缓存、黑白名单等功能。目录一、Nginx的负载均衡策略1、轮询2、加权轮询3、ip_hash( IP 绑定)4、fair(第三方插件)5、url_hash(第三方插件)二、Nginx的进程模型1、Nginx采用多进程单线程模

2020-11-09 16:26:11 1389

原创 2021最新Java面经整理 | 中间件篇(二)Kafka

2021最新Java面经整理 | 中间件篇(二)Kafka目录一、Kafka简介1、Kafka是一个分布式流平台2、主题和日志(Topics and Logs)(工作原理)3、分布式4、Kafka的优势二、Kafka的使用场景三、Kafka的重要概念1、kafka的拓扑结构2、Kafka在Zookeeper中的存储结构五、理解好:主题(Topics)、分区(Partitions)、日志(Logs)六、Pull 模式七、kafka 的设计原理1、生产者

2020-11-09 14:48:33 1509 2

原创 2021最新Java面经整理 | 中间件篇(三)RabbitMQ

2021最新Java面经整理 | 中间件篇(三)RabbitMQ目录一、RabbitMQ 简介二、结构组成和核心组件(重点)三、工作模式(交换机类型)1、fanout(扇型交换机)2、direct(直连交换机)3、topic(主题交换机)4、headers(头交换机)四、消息的传递过程(重点)1、发送消息过程2、消费消息过程五、持久化(重点)1、队列持久化和消息持久化2、持久化原理六、事务七、确认机制(重点)1、Confirm 消息确认机制

2020-11-09 11:25:54 851

原创 2021最新Java面经整理 | 中间件篇(一)Redis

2021最新Java面经整理 | 中间件篇(一)Redis

2020-11-09 08:10:37 5260 3

原创 2021最新Java面经整理 | 框架篇(三)Mybatis框架

2021最新Java面经整理 | 框架篇(三)MybatisC框架目录一、Mybatis常见问题1、啥是 MyBatis?2、MyBatis 的优缺点和适用场景?3、MyBatis 与 Hibernate 的区别?4、#{} 和 ${} 的区别,防注入?(重点)5、XML 映射文件中的常见标签?6、MyBatis 的核心组件?7、MyBatis 如何分页?8、MyBatis都有哪些 Executor 执行器?9、MyBatis 的一级缓存和二级缓存?1...

2020-11-06 15:18:17 2703

原创 2021最新Java面经整理 | 框架篇(二)SpringMVC框架

2021最新Java面经整理 | 框架篇(二)SpringMVC框架目录一、SpringMVC 的核心组件二、SpringMVC 的原理和工作流程三、SpringMVC 的常见注解四、SpringMVC 常见问题一、SpringMVC 的核心组件1、DispatcherServlet(前端控制器)(最重要)用于请求的接收和处理,响应结果,相当于转发器、中央处理器。DispatcherServlet是整个流程控制的中心,由它调用其它组件处理用户的请求,她的存在降低了组件之间的耦

2020-11-06 13:53:11 1932

原创 2021最新Java面经整理 | 框架篇(一)Spring框架

2021最新Java面经整理 | 框架篇(一)Spring框架目录一、Spring框架的模块组成二、Spring的核心原理1、控制反转 IOC2、面向切面 AOP三、Spring的两大核心接口:BeanFactory和ApplicationContext四、Spring容器中的Bean1、Bean的作用域2、Bean注入的几种方式3、Bean的自动装配4、Bean的生命周期和加载流程(重点)五、单例Bean的线程安全和并发问题(重点)1、单例Bean的线程

2020-11-06 13:44:11 4032

原创 搞定分布式系列:缓存 热key 问题解决方案

在分布式缓存中,面对高并发要求有两个问题非常重要:热key问题(hot key)和大value(big key)问题。热key问题:是指缓存集群中的某个key在瞬间被数万甚至十万的并发请求打爆。 大value问题:是指某个key对应的value可能有gb级别的大小,导致查询value的时候会引发网络相关的故障问题。不管是hot key,还是big key都有可能是压垮服务的最后一根稻草。本...

2020-11-06 10:14:15 1473

原创 分布式环境下定时任务重复执行问题解决方案

现在为了提高服务的响应时间,避免单点故障,一般项目都会做集群部署,最少两个节点。集群部署的时候就会暴露出一些单节点下不会遇到的问题,比如session问题、缓存不一致问题等。还有一种情况是,定时任务重复执行的问题。对于分布式环境下定时任务重复执行问题,常见的几种解决方案有下面这几种。一、分布式锁分布式锁是最常用的一种方式,需要对定时逻辑加上一些判断,防止在同一时间重复执行。分布式锁常见...

2020-11-06 10:10:21 4296 1

原创 2021最新Java面经整理 | 分布式篇(五)分布式Session

在搭建完集群环境后,不得不考虑的一个问题就是用户访问产生的session如何处理。如果不做任何处理的话,用户将出现频繁登录的现象,比如集群中存在A、B两台服务器,用户在第一次访问网站时,Nginx通过其负载均衡机制将用户请求转发到A服务器,这时A服务器就会给用户创建一个Session。当用户第二次发送请求时,Nginx将其负载均衡到B服务器,而这时候B服务器并不存在Session,所以就会将用户踢到登录页面。这将大大降低用户体验度,导致用户的流失,这种情况是项目绝不应该出现的。目录一、基于客户端co

2020-11-05 16:11:41 719 3

原创 2021最新Java面经整理 | 分布式篇(四)分布式事务

分布式事务区别于本地事务,是指事务的操作位于不同的节点上,需要保证事务的 AICD 特性。常见的分布式事务场景:跨银行转操作就涉及调用两个异地银行服务。目录一、两阶段提交(2PC)1、两阶段2、具体流程3、存在的问题二、三阶段提交(3PC)1、三阶段2、具体流程3、总结三、补偿事务(TCC)1、TCC2、优缺点四、本地消息表(异步确保)五、消息事务六、最大努力通知七、总结常见的分布式事务解决方案有:XA协议(2PC和3PC)、TCC、本地消

2020-11-05 14:17:42 1715

原创 2021最新Java面经整理 | 分布式篇(三)分布式锁

分布式篇(三)分布式锁整理目录一、为什么要使用分布式锁?二、分布式锁需要具备的条件三、分布式锁的三种实现方式1、基于数据库的实现方式2、基于Redis的实现方式3、基于zookeeper的实现方式四、三种方式对比一、为什么要使用分布式锁?为了保证一个方法在高并发情况下的同一时间只能被同一个线程执行,在传统单体应用单机部署的情况下,可以使用Java并发处理相关的API(如ReentrantLcok或synchronized)进行互斥控制。但是,随着业务发展的...

2020-11-05 09:04:25 1309 1

原创 2021最新Java面经整理 | 分布式篇(二)分布式缓存

分布式缓存是分布式系统面对高并发高性能要求的关键组件。缓存可以极大的减轻db的访问压力,当然缓存涉及到分布式要考虑的问题也很多,主要有:更新模式、失效机制、淘汰策略、常见问题(缓存穿透、缓存击穿、缓存雪崩)等。缓存解决的问题:提升访问性能,redis、memcached等的访问效率明细比关系型db的访问效率高出一个数量级。 缓解db压力,缓存能够过滤掉大部分频繁访问的数据,极大缓解db压力。适用场景:对于性能要求高,比如一些秒杀活动场景。 对于数据实时性要求不高,对一些读多写少的数据,适用

2020-11-05 08:05:44 1239

原创 2021最新Java面经整理 | 分布式篇(一)分布式理论基础

Java面经系列之分布式篇(一)分布式理论基础目录一、CAP理论二、BASE理论三、数据一致性(副本、协调者、分布式协议2PC 3PC、选举、逻辑时钟)1、副本2、协调者3、分布式协议4、选举、多数派、租约5、逻辑时钟一、CAP理论CAP理论是指在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得。C (Consistency),一致性:数据在分布式系统

2020-11-05 06:12:36 1080 1

原创 swagger 界面没有出来,报 swagger No mapping for GET /swagger-ui.html

在springboot中集成swagger,ui界面没有出来,后台报错swagger No mapping for GET /swagger-ui.html查了下,需要在拦截器里面添加如下配置, @Override protected void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("swagger-ui.html")

2020-10-02 07:12:07 703

原创 Linux修改允许root用户登录

公司内部申请的私有云虚拟机,默认是不允许root用户登录的。但是一些环境的搭建,需要使用root,不然会有些诡异的问题。所以在搭建环境这个阶段,需要先用root登录。1、使用su root命令,切换root用户su root然后输入当前用户的密码,就切换到root用户了。2、修改sshd配置文件的PermitRootLogin属性vi /etc/ssh/sshd_config在最后面加上,PermitRootLogin yesPermitRootLogin yes #是否允

2020-09-22 08:46:30 651

空空如也

空空如也

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

TA关注的人 TA的粉丝

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