- 博客(109)
- 收藏
- 关注
原创 普通类使用spring容器管理的bean
这里最重要的是使用ApplicationContext,我们首先要实现ApplicationContextAware接口获取到ApplicationContext。在这里写了一个类实现ApplicationContextAware接口/** * @author matao * @create 2020-08-05 */@Componentpublic class ApplicationContextUtil implements ApplicationContextAware { pri
2020-08-06 20:57:32 433
原创 alibaba的fastjson转为json首字母变小写解决方法
我们经常用fastjson的话 有时候要涉及将实体对象转为json格式,但当用Json.toJsonString()方法时,会默认将属性的首字母后转为小写,但真正有时候我们是不想将首字母变成小写的,针对这个解决办法,就是我们可以用@JSONField()注解比如: @JSONField(name = "DATA") private AEData DATA; //AEData对象 @JSONField(name = "BATCH_ID") private String BAT
2020-05-10 20:36:40 2754
原创 前端传formdata数据 后端接收不到
关于前端传formdata数据 后端接收不到问题//填写的信息提交到数据库 submitFormFriuit = function(){ var form =new FormData(); form.append("fruit_id",$("#fruit_id").val().toString()); form.append("fruit_type",$("#fruit_type").val().toString()); form.append("fruit_name
2020-05-10 20:20:51 10531
原创 Spring之ApplicationContext介绍
ApplicationContext介绍:如果说BeanFactory是Spring的“心脏”,那么ApplicationContext 就是完整的“身躯”了。ApplicationContext由BeanFactory派生而来,提供了更多面向实际应用的功能。在BeanFactory中,很多功能需要以编程的方式实现,而在ApplicationContext中则可以通过配置的方式实现。1. Ap...
2020-01-07 09:10:16 1141
原创 Spring之BeanFactory介绍
BeanFactory介绍:BeanFactory 是一一个类工厂,但和传统的类工厂不同,传统的类工厂仅负责构造-一个或几个类的实例:而BeanFactory 是类的通用工厂,它可以创建并管理各种类的对象。这些可被创建和管理的对象本身没有什么特别之处,仅是一个POJO, Spring称这些被创建和管理的Java对象为Bean。我们知道JavaBean是要满足一-定规范的,如必须提供-一个默认不带...
2019-12-09 19:53:54 556
原创 分布式文件系统——fastDFS安装
安装 1 核心安装1.1安装 FastDFS 依赖1.2解压 FastDFS 核心库1.3进入解压后的目录1.4编译安装1.5创建软连接1.6解压 FastDFS 主程序1.7进入 FastDFS 主程序源码目录1.8修改安装路径1.9编译安装 .1.10FastDFS 安装后资源简介1.10.1 服务脚本1.10.2 配置文件模板1.10.3 内置命令2 tracker 基础配置2.1创建跟踪...
2019-11-27 21:09:51 271
原创 分布式文件存储——FastDFS
FastDFS 一、简介1、架构图2、上传流程:3、下载流程:4、术语简介5、同步机制6、 FastDFS 运行时目录结构6.1、Tracker Server 目录6.2、Storage Server 目录7、 FastDFS 和其他文件存储的简单对比7.1FastDFS 和集中存储方式对比7.2FastDFS 和 mogileFS 对比一、简介FastDFS 是一个开源的轻量级分布式...
2019-11-23 11:34:38 431
原创 Spring中的那些注解和解释
常用注解 @Component@Repository@Service@Controller@RestController@Scope@Value@Autowired@Qualifier@Resource@RequestMapping@GetMapping@PostMapping@ResponseBody@RequestBody@PathVariable@Component描述类型的,代表类...
2019-11-22 20:44:18 264
原创 Spring-4.1.6源码分享
最近学习Spring源码,为了方便学习源码做笔记,特意从GitHub上下载一份,但是GitHub下载源码慢的要死,为了下载源码也是费了九牛二虎之力,为了大家学习,特意将它分享出来,动动小手给个赞哦。如果觉得有需要可以去网盘下载。网址:https://pan.baidu.com/s/1vOlcGalaKwIeOJUBjlK7tA提取码:ajer...
2019-11-20 21:21:01 207
原创 解读Mybatis中的dtd文件并配置config、mapper文件
dtd文件一般可以在哪找到规则定义dtd文件一般可以在哪找到一般我们可以在builder、factory、或者context等地方找到就以Mybatis为例:<!ELEMENT configuration (properties?, settings?, typeAliases?, typeHandlers?, objectFactory?, objectWrapperFacto...
2019-11-20 19:58:34 885
原创 Dubbo面试题总结
1、Dubbo 是什么?Dubbo 是一个分布式、高性能、透明化的 RPC 服务框架,提供服务自动注册、自动发现等高效服务治理方案, 可以和Spring 框架无缝集成。2、 Dubbo 的主要应用场景?1) 透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何 API 侵入。2) 软负载均衡及容错机制,可在内网替代 F5 等硬件负载均衡器,降低成本,减少单点。3...
2019-11-18 21:43:00 641
原创 mysql性能优化之sql
SQL优化方式1、避免全表扫描对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。商业化开发中,强制要求,不能全表扫描。尽量将查询type提升到ref级别之上,必须是index级别之上。const > eq_ref > ref > range > index > ALL2、避免判断null值应尽量避免在 w...
2019-11-16 20:19:55 160
原创 mysql性能优化之索引
1、存储引擎:sql语句:SELECT * from information_schema.ENGINES上图可知道mysql提供了八种存储引擎
2019-11-15 20:46:56 195
原创 弗洛伊德(Floyd)算法
1,.弗洛伊德(Floyd)算法介绍和Dijkstra算法一样,弗洛伊德(Floyd)算法也是一种用于寻找给定的加权图中顶点间最短路径的算法。该算法名称以创始人之一、1978年图灵奖获得者、斯坦福大学计算机科学系教授罗伯特·弗洛伊德命名弗洛伊德算法(Floyd)计算图中各个顶点之间的最短路径迪杰斯特拉算法用于计算图中某一个顶点到其他顶点的最短路径。弗洛伊德算法 VS 迪杰斯特拉算法:迪杰斯...
2019-11-09 21:28:13 363
原创 迪杰斯特拉算法详解
迪杰斯特拉(Dijkstra)算法介绍迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个结点到其他结点的最短路径。 它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止。应用场景-最短路径问题看一个应用场景和问题:战争时期,胜利乡有7个村庄(A, B, C, D, E, F, G) ,现在有六个邮差,从G点出发,需要分别把邮件分别送到 A, B...
2019-11-08 17:40:01 1002
原创 KMP算法(字符串匹配)
对于KMP算法来言,我自己感觉文字介绍,方法理解起来相对于代码算是简单的,KMP算法介绍1)KMP是一个解决模式串在文本串是否出现过,如果出现过,最早出现的位置的经典算法2)Knuth-Morris-Pratt 字符串查找算法,简称为 “KMP算法”,常用于在一个文本串S内查找一个模式串P 的出现位置,这个算法由Donald Knuth、Vaughan Pratt、James H. Morr...
2019-11-06 09:35:59 384
原创 查找算法以及代码实现
1.线性查找算法特别简单的算法,就是遍历数组,一一比较,返回坐标代码实现:public static void main(String[] args) { int arr[] = { 1, 9, 11, -1, 34, 89 };// 没有顺序的数组 int index = seqSearch(arr, -11); if(index == -1) { System.out....
2019-11-04 11:12:40 754
原创 链表和双向链表介绍和代码实现
链表(Linked List)链表是有序的列表,但是它在内存中是存储如下小结:1)链表是以节点的方式来存储,是链式存储2)每个节点包含 data 域, next 域:指向下一个节点.3)如图:发现链表的各个节点不一定是连续存储.4)链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定5)链表存储位置和顺序都是不一定的,头结点也不是一定在最前端//定义SingleLinke...
2019-11-02 11:19:35 388
原创 JVM的算法和垃圾收集器
标记整理标记清除复制算法OutOfMemoryError?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1BpcmF0ZXNh,size_16,color_FFFFFF,t_70)StackOverflowError栈满会抛...
2019-11-01 20:17:06 193
原创 kafka保证数据一致性机制
为保证 producer 发送的数据,能可靠的发送到指定的 topic,topic 的每个 partition 收到producer 发送的数据后,都需要向 producer 发送 ack(acknowledgement 确认收到),如果producer 收到 ack,就会进行下一轮的发送,否则重新发送数...
2019-10-30 16:22:46 1681 1
原创 kafka工作流程以及文件存储机制
Kafka 中消息是以** topic** 进行分类的,生产者生产消息,消费者消费消息,都是面向 topic的。topic 是逻辑上的概念,而 partition 是物理上的概念,每个 partition 对应于一个 log 文件,该 log 文件中存储的就是 producer 生产的数据。Producer 生产的数据会被不断追加到该og 文件末端,且每条数据都有自己的 offset。消费者组...
2019-10-29 15:59:04 446
原创 大厂面试题之JVM
JVM结构Java8 JVM内存结构基本结构与之前类似,只是Java8取消了之前的“永久代”,取而代之的是“元空间”——Metaspace,两者本质是一样的。“永久代”使用的是JVM的堆内存,而“元空间”是直接使用的本机物理内存。简单来说就是栈管运行,而堆管存储GC Roots如果判断一个对象可以被回收?引用计数算法维护一个计数器,如果有对该对象的引用,计数器+1,反之-1...
2019-10-28 15:01:40 385
原创 大厂面试关于多线程和高并发阻塞队列问题
阻塞队列概念:当阻塞队列为空时,获取(take)操作是阻塞的;当阻塞队列为满时,添加(put)操作是阻塞的。好处:阻塞队列不用手动控制什么时候该被阻塞,什么时候该被唤醒,简化了操作。体系:Collection→Queue→BlockingQueue→七个阻塞队列实现类。类名作用ArrayBlockingQueue由数组构成的有界阻塞队列LinkedBlocki...
2019-10-27 09:19:41 723
原创 BAT面试题之Collection
集合类不安全问题ListArrayList不是线程安全类,在多线程同时写的情况下,会抛出java.util.ConcurrentModificationException异常。private static void listNotSafe() { List<String> list=new ArrayList<>(); for (int i = 1; ...
2019-10-26 20:45:49 177
原创 多线程和高并发关于Java锁的问题
Java锁公平锁/非公平锁概念:所谓公平锁,就是多个线程按照申请锁的顺序来获取锁,类似排队,先到先得。而非公平锁,则是多个线程抢夺锁,会导致优先级反转或饥饿现象。区别:公平锁在获取锁时先查看此锁维护的等待队列,为空或者当前线程是等待队列的队首,则直接占有锁,否则插入到等待队列,FIFO原则。非公平锁比较粗鲁,上来直接先尝试占有锁,失败则采用公平锁方式。非公平锁的优点是吞吐量比公平锁更大。s...
2019-10-25 20:58:20 449
原创 面试题之JUC
对于JUC方面的面试题,我们首先应该讲一下JMMJMM(Java Memory Model) Java内存模型首先看一下java内存模型图对于JMM 是有以下要求:1.保持原子性2.保持可见性3.有序性对于一些操作,分别对应在下面图/** * */package com.matao.concurrent.atomic;import java.util.concur...
2019-10-24 21:57:54 8128 1
原创 稀疏数组和队列以及代码实现
1.稀疏数组基本介绍当一个数组中大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组。稀疏数组的处理方法是:1)记录数组一共有几行几列,有多少个不同的值2)把具有不同值的元素的行列及值记录在一个小规模的数组中,从而缩小程序的规模说明:应用实例1)使用稀疏数组,来保留类似前面的二维数组(棋盘、地图等等)2)把稀疏数组存盘,并且可以从新恢复原来的二维数组数3)整...
2019-10-23 21:06:31 203
原创 常见排序算法原理和实现(二)
5.快速排序快速排序法介绍:快速排序(Quicksort)是对冒泡排序的一种改进。基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列示意图:代码实现:/** * */package com.matao.sort;im...
2019-10-22 19:54:57 234
原创 常见排序算法原理和实现(一)
排序也称排序算法(Sort Algorithm),排序是将一组数据,依指定的顺序进行排列的过程。排序的分类:内部排序:指将需要处理的所有数据都加载到内部存储器中进行排序。外部排序法:数据量过大,无法全部加载到内存中,需要借助外部存储进行排序。1.冒泡排序基本介绍:冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始)...
2019-10-21 19:23:27 222
原创 Spark优化汇总
1.资源优化搭建集群在Spark安装路径下 spark/conf/spark-env.sh配置:SPARK_WORKER_CORES=XXXSPARK_WORKER_MEMORY=XXX提交任务提交任务命令,最好使用脚本化提交,可以在提交任务时,给当前Spark 应用程序足够的资源,提交命令:./spark-submit –master spark://mynode1:7077 ...
2019-10-19 21:27:38 199
原创 数据倾斜解决方案之使用随机数以及扩容表进行join
当采用随机数和扩容表进行join解决数据倾斜的时候,就代表着,你的之前的数据倾斜的解决方案,都没法使用。这个方案是没办法彻底解决数据倾斜的,更多的,是一种对数据倾斜的缓解。原理,其实在和上一个几乎一样的。步骤:1、选择一个RDD,要用flatMap,进行扩容,将每条数据,映射为多条数据,每个映射出来的数据,都带了一个n以内的随机数,通常来说,会选择10。2、将另外一个RDD,做普通的ma...
2019-10-18 17:38:11 668 1
原创 数据倾斜解决方案之sample采样倾斜key进行两次join
这个方案的实现思路,跟大家解析一下:其实关键之处在于,将发生数据倾斜的key,单独拉出来,放到一个RDD中去;就用这个原本会倾斜的key RDD跟其他RDD,单独去join一下,这个时候,key对应的数据,可能就会分散到多个task中去进行join操作。就不至于说是,这个key跟之前其他的key混合在一个RDD中时,肯定是会导致一个key对应的所有数据,都到一个task中去,就会导致数据倾斜。...
2019-10-17 21:02:58 283
原创 数据倾斜解决方案之使用随机key实现双重聚合和将reduce join转换为map join
使用随机key实现双重聚合使用随机key实现双重聚合2、使用场景(1)groupByKey(2)reduceByKey比较适合使用这种方式;join,咱们通常不会这样来做,后面会讲三种,针对不同的join造成的数据倾斜的问题的解决方案。第一轮聚合的时候,对key进行打散,将原先一样的key,变成不一样的key,相当于是将每个key分为多组;先针对多个组,进行key的局部聚合;接着,再...
2019-10-16 20:03:17 198
原创 数据倾斜解决方案之提高shuffle操作reduce并行度
第一个和第二个方案,都不适合做。第三个方案,提高shuffle操作的reduce并行度将reduce task的数量,变多,就可以让每个reduce task分配到更少的数据量,这样的话,也许就可以缓解,或者甚至是基本解决掉数据倾斜的问题。提升shuffle reduce端并行度,怎么来操作?很简单,主要给我们所有的shuffle算子,比如groupByKey、countByKey、re...
2019-10-15 21:06:10 142
原创 数据倾斜解决方案之聚合源数据
数据倾斜的解决,跟之前讲解的性能调优,有一点异曲同工之妙。性能调优,跟大家讲过一个道理,“重剑无锋”。性能调优,调了半天,最有效,最直接,最简单的方式,就是加资源,加并行度,注意RDD架构(复用同一个RDD,加上cache缓存);shuffle、jvm等,次要的。数据倾斜,解决方案,第一个方案和第二个方案,一起来讲。最朴素、最简谱、最直接、最有效、最简单的,解决数据倾斜问题的方案。第一个方案...
2019-10-14 20:34:48 186
原创 数据倾斜解决方案之原理以及现象分析
数据倾斜在任何大数据类的项目中,都是最棘手的性能问题,最能体现人的技术能力,最能体现RD(Research Developer,研发工程师)的技术水平。数据倾斜 = 性能杀手1、数据倾斜的原理在执行shuffle操作的时候,大家都知道,shuffle的原理。是按照key,来进行values的数据的输出、拉取和聚合的。同一个key的values,一定是分配到一个reduce task进行...
2019-10-13 09:07:21 201
原创 troubleshooting之解决yarn-cluster模式的JVM内存溢出无法执行问题
yarn-client和yarn-cluster模式的不同之处:yarn-client模式,driver运行在本地机器上的;yarn-cluster模式,driver是运行在yarn集群上某个nodemanager节点上面的。yarn-client会导致本地机器负责spark作业的调度,所以网卡流量会激增;yarn-cluster模式就没有这个问题。yarn-client的driver运行...
2019-10-11 22:27:32 159
原创 troubleshooting之解决yarn-client模式导致的网卡流量激增问题
Driver到底是什么?我们写的spark程序,打成jar包,用spark-submit来提交。jar包中的一个main类,通过jvm的命令启动起来。JVM进程,这个进程,其实就是咱们的Driver进程。Driver进程启动起来以后,执行我们自己写的main函数,从new SparkContext()。。。ApplicationMaster?yarn中的核心概念,任何要在yarn上启动...
2019-10-10 21:20:23 144
原创 troubleshooting之解决yarn-client模式导致的网卡流量激增问题
Driver到底是什么?我们写的spark程序,打成jar包,用spark-submit来提交。jar包中的一个main类,通过jvm的命令启动起来。JVM进程,这个进程,其实就是咱们的Driver进程。Driver进程启动起来以后,执行我们自己写的main函数,从new SparkContext()。。。ApplicationMaster?yarn中的核心概念,任何要在yarn上启动...
2019-10-09 14:08:03 169
原创 解决算子函数返回NULL问题和错误的持久化以及checkpoint的使用
在算子函数中,返回null// return actionRDD.mapToPair(new PairFunction<Row, String, Row>() {//// private static final long serialVersionUID = 1L;// // @Override// public Tuple2<String, Ro...
2019-10-08 22:15:12 224
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人