自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【spring源码】@Import在SpringBoot自动装配技术中的应用

上一篇文章写了spring中的工厂后置处理器(ConfigurationClassPostProcessor)所做的事情:【Spring源码】工厂后置处理器之ConfigurationClassPostProcessor其中说到了@Import注解,它可以引入三种类,第一种是普通类,第二种是实现了ImportSelector接口的类,第三种是实现了ImportBeanDefinitionRegistrar接口的类。我准备写2篇文章来分别说一下,引入普通类比较简单,就糅合在本文中了;也说到了这个注解也.

2021-05-17 09:53:40 210

原创 【Spring源码系列】工厂后置处理器之ConfigurationClassPostProcessor

上一篇文章对spring的工厂后置处理器做了简单的介绍,对工厂后置处理器还不了解的可以看看噢,传送门:聊聊spring中的工厂后置处理器今天就聊聊spring到底是如何使用工厂后置处理器的。1.spring是怎么执行到ConfigurationClassPostProcessor的?首先spring会在ApplicationContext的构造方法里去往beanDefinitionMap放几个spring内置的工厂后置处理器,其中最重要的就是今天要聊的ConfigurationClassPost.

2021-05-11 19:39:27 273 4

原创 聊聊spring中的工厂后置处理器

昂,有好久没有写文章了,不知从何写起…想起之前学习过的spring源码都快忘了,后续就写一写spring源码的文章吧。今天从工厂后置处理器开头,后续的文章会引出spring是如何利用工厂后置处理器去扫描bean的。其实我一直都喜欢读一些简短精悍的文章,因为太长了看着太累,然后就没啥兴趣了…不知大家是不是也这样呢?所以我决定写点简短没有精悍的的文章~对spring源码有兴趣的可以关注一下。1.BeanFactoryPostProcessor这个是spring中工厂后置器的顶级接口,里面只提供了一个.

2021-05-06 16:33:34 262

原创 《算法》系列—动态规划,你学废了吗?

1.前言今天聊一聊动态规划的问题,动态规划问题的一般形式就是求最值。在这类问题中,可能会有多个解,但是我们希望找到最优的解。动态规划算法与前面的分治算法类似,基本思想也是将求解的问题分解为子问题求解。与分治算法不同的是,适合动态规划算法来求解的问题,分解得到的子问题太多,有的子问题还会被重复计算很多次。如果把计算过的子问题的结果保存,就能够避免大量重复的计算,这就是动态规划算法的基本思想。解决动态规划问题的三步骤一般如下:a.找子问题;b.定义状态;c.列状态(DP)方程;本文将解决两个动态规

2021-01-18 10:19:35 153 1

原创 《算法》系列-深度、广度优先搜索

1.广度优先搜索(BFS)定义:又叫做层次遍历,从上往下对每一层,从左往右(也可以从右往左)访问节点,访问完一层就进入下一层,直至没有节点为止。用图来直观的看一下:先来说一下解题思路:广度优先遍历是一层一层的往下去遍历,我们可以用一个队列(先进先出)来存储每一层的节点,在遍历每一个节点时,取它下一层的节点,放到队列的末尾,遍历完一层时,下一层的节点也放到了队列中。我们在放入节点时,记录下一层的节点数量,就可以在队列中区分出每一层的节点了,这样就完成了广度优先遍历。下面来看一下广度优先遍历的代码模

2021-01-08 11:38:42 328 1

原创 《算法》系列—大白话聊分治、回溯,手撕八皇后

1.分治分治就是分而治之,即把一个问题分解成很多个子问题,且这些问题与原问题结构相似,然后递归解决子问题,最后合并子问题的结果,得到原来问题的结果。分治解题三个步骤:分解:将问题分解成与原问题结构相似的子问题解决:递归求解各个子问题,当子问题足够小,直接返回结果(问题分解到足够小,分解终止条件)合并:将子问题的结果合并,得到原问题的结果分治算法也是一种递归,之前有写到过递归的模板,这里也贴一下分治算法的模板。接下来看个问题,深入了解一下分治算法,并套用一下模板。首先按照分治解题的三个步

2020-12-30 14:06:09 291 1

原创 《算法》系列—递归

引言学妹问我递归是什么?应该怎么写?递归就是在运行过程中调用自己。构成递归需具备的条件:1.子问题须与原始问题为同样的事,且更为简单;2.不能无限制地调用本身,须有个出口,化简为非递归状况处理。当我们遇到一个递归问题的时候,不要人肉递归!不要人肉递归!不要人肉递归!方法1.找最近的重复子问题;学妹:什么是重复的子问题呢?我:就是找到解决问题的过程中的【重复的事件】,这个【重复的事件】可以理解为我们的递归函数,虽然递归函数的处理逻辑是一样的,但是所用到的参数的值不一样(参数的值

2020-12-25 21:35:05 145

原创 Java的学习路线和历程

Java的学习路线和历程前言不知道各位大大在Java这条路上走了多久了,我17年毕业的嘛,毕业了就干这一行,也一直做到了现在。我本专业是微电子专业的,怎么就走上了Java这条路呢?说来话长,哈哈哈哈... 做技术嘛,枯燥且有趣。也不知道能在这条路上走多远,路漫漫其修远兮,不谈上下而求索,只要做得开心就好。这是我写得第一篇文章,写得些许潦草,各位客官多多包涵。主要是想重头开始整理一下,包括了Java后端的学习路线,也想顺着这条路线写后续的文章,记录一下自己的所学所得。这篇文章也涵盖了大量的面试问

2020-12-24 09:19:13 129

原创 python简单爬虫简介(爬取csdn图文课程标题和作者)

1.正则表达式简介:a.元字符:. 匹配任意字符(不包括换行符) ^ 匹配开始位置,多行模式下匹配每一行的开始 $ 匹配结束位置,多行模式下匹配每一行的结束 * 匹配前一个元字符0到多次 + 匹配前一个元字符1到多次 ? 匹配前一个元字符0到1次 {m,n} 匹配前一个元字符m到n次 \d 匹配一个数字,相当与[0-9] \D 匹配一个非数字 \s 匹配任意空白字符 \...

2019-04-18 15:51:17 695

原创 Apollo简介

Apollo原理:上图简要描述了Apollo客户端的实现原理:客户端和服务端保持了一个长连接,从而能第一时间获得配置更新的推送。(通过Http Long Polling实现) 客户端还会定时从Apollo配置中心服务端拉取应用的最新配置。 这是一个fallback机制,为了防止推送机制失效导致配置不更新 客户端定时拉取会上报本地版本,所以一般情况下,对于定时拉取的操作...

2019-03-21 10:06:47 1410

转载 数据结构与算法(C、C++、Java)

转载地址:http://www.cnblogs.com/skywang12345/p/3603935.html   最近抽空整理了"数据结构和算法"的相关文章。在整理过程中,对于每种数据结构和算法分别给出"C"、"C++"和"Java"这三种语言的实现;实现语言虽不同,但原理如出一辙。因此,读者在了解和学习的过程中,择其一即可!下面是整理数据数据和算法的目录表,对于每一种按照C...

2018-11-01 17:55:27 624

转载 数据结构与算法(Java)

转自:http://blog.csdn.net/column/details/datastructureinjava.html 目录 (1)数据结构与算法概念解析 (2)数据结构之数组 (3)数据结构之栈 (4)数据结构之队列 (5)数据结构之链表 (6)数据结构之二叉树 (7)数据结构之霍夫曼树 (8)数据结构之红黑树(一)——基础分析 (9)数据结构之红黑树(二)——插入操作 (10)数据结...

2018-11-01 17:41:56 252

转载 计算机网络资料

码分复用解码与编码(小白强推)http://read.pudn.com/downloads64/doc/comm/223842/CDMA.pdf计算机网络面试考点整理https://hit-alibaba.github.io/interview/basic/network/计算机网络gitbookhttps://book.gitlore.com/java/JavaAndroid...

2018-09-21 17:34:21 258

转载 MongoDB简介和基本概念

NoSQL简介  NoSQL(Not Only SQL ),意即“不仅仅是SQL” ,指的是非关系型的数据库 。是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。   关系型数据库中的表都是存储一些结构化的数据,每条记录的字段的组成都一样,即使不是每...

2018-09-19 11:06:51 200

转载 在Mac上安装MongoDB

1.访问MongoDB官方下载地址 http://www.mongodb.org/downloads 2.点击“DOWNLOAD(tgz)”按钮: 3.将下载的文件压缩包解压后剪切到你的Mac中某个位置:4.配置环境变量,打开终端,输入“open -e .bash_profile”:5.定义MONGODB_HOME变量,这个值就是你刚才解压文件夹的存放地址,...

2018-09-19 10:55:36 133

转载 成为java高级程序员需要掌握哪些

转自:https://blog.csdn.net/zhibuguonicuo/article/details/60345715section 11.Core Java,就是Java基础、JDK的类库,很多童鞋都会说,JDK我懂,但是懂还不足够,知其然还要知其所以然,JDK的源代码写的非常好,要经常查看,对使用频繁的类,比如String,集合类(List,Map,Set)等数据结构要知道它们的实现,...

2018-06-18 21:12:48 247

原创 使用IntelliJ IDEA创建简单的Dubbo实例

Zookeeper为dubbo的注册中心,dubbo服务的生产者和消费者都需要在Zookeeper进行注册;下载zookeeper压缩包并解压;进入conf目录将 zoo_sample.cfg 改名为 zoo.cfg;进入bin目录双击zkServer.cmd,若启动成功,则windows单机版zookeeper搭建成功! 使用IntelliJ IDEA搭建Dubbo:创建一个maven空项目,作...

2018-05-21 21:30:01 6553 3

转载 zookeeper教程

转自:http://www.cnblogs.com/ggjucheng/p/3352614.htmlZooKeeper是一个高可用的分布式数据管理与系统协调框架。基于对Paxos算法的实现,使该框架保证了分布式环境中数据的强一致性,也正是基于这样的特性,使得ZooKeeper解决很多分布式问题。网上对ZK的应用场景也有不少介绍,本文将结合作者身边的项目例子,系统地对ZK的应用场景进行一个分门归类的...

2018-05-21 20:38:27 402

原创 设计模式——单例模式中的问题及优化方法

单例模式是一种简单常用的设计模式,但是越简单的东西,其中包含的东西越不能忽略。首先是线程不安全的单例模式:public class UnsafeLazyInitialization {     private static Instance instance;     public static Instance getInstance(){ if(instanc...

2018-05-20 10:27:20 280

转载 nginx简单教程

概述什么是nginx?Nginx (engine x) 是一款轻量级的Web 服务器 、反向代理服务器及电子邮件(IMAP/POP3)代理服务器。什么是反向代理?反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务...

2018-05-15 20:41:15 232

转载 HashMap为什么是线程不安全的?

一直以来只是知道HashMap是线程不安全的,但是到底HashMap为什么线程不安全,多线程并发的时候在什么情况下可能出现问题?HashMap底层是一个Entry数组,当发生hash冲突的时候,hashmap是采用链表的方式来解决的,在对应的数组位置存放链表的头结点。对链表而言,新加入的节点会从头结点加入。javadoc中关于hashmap的一段描述如下:此实现不是同步的。如果多个线程同时访问一个...

2018-05-13 21:00:51 197

转载 java集合类详解

一、集合与数组数组(可以存储基本数据类型)是用来存现对象的一种容器,但是数组的长度固定,不适合在对象数量未知的情况下使用。集合(只能存储对象,对象类型可以不一样)的长度可变,可在多数情况下使用。二、层次关系如图所示:图中,实线边框的是实现类,折线边框的是抽象类,而点线边框的是接口Collection接口是集合类的根接口,Java中没有提供这个接口的直接的实现类。但是却让其被继承产生了两个接口,就是...

2018-05-13 20:32:17 171

转载 微服务架构——什么是微服务?

解析微服务架构系列文章将分几篇描述微服务的定义、特点、应用场景、企业集成架构的演进以及微服务转型思路和技术决策考虑等内容,并以IBM技术为例介绍如何实现微服务架构转型。为什么需要微服务架构“微服务”架构是近期软件应用领域非常热门的概念。让我们先来看看传统IT架构面临的一些问题: 使用传统的整体式架构(Monolithic Architecture)应用开发系统,如CRM、ERP等大型应用,随着新需...

2018-05-10 22:48:38 487

原创 收集一些优秀的文章(永无止境地更新)

把平时看到写得好的文章记录一下,自己没事的时候也能好好多看几遍,也学习一下1.spring中IOC的原理:https://www.tianmaying.com/tutorial/spring-ioc2.spring中的AOP:Spring AOP详解图解AOP3.由于spring AOP是基于动态代理的,所以下面找了一下jdk动态代理和cglb动态代理的文章:jdk和cglib的2种实现以及二者的...

2018-05-01 10:57:58 261

转载 负载均衡的原理

本文转载自公众号 码农翻身这是1998年一个普通的上午。一上班,老板就把张大胖叫进了办公室,一边舒服地喝茶一边发难:“大胖啊,我们公司开发的这个网站,现在怎么越来越慢了? ”还好张大胖也注意到了这个问题,他早有准备,一脸无奈地说: “唉,我昨天检查了一下系统,现在的访问量已经越来越大了,无论是CPU,还是硬盘、内存都不堪重负了,高峰期的响应速度越来越慢。”顿了一下,他试探地问道:“老板,能不能买个...

2018-04-30 23:04:59 195

转载 一些数据库常见的问题

1、触发器的作用?触发器是一中特殊的存储过程,主要是通过事件来触发而被执行的。它可以强化约束,来维护数据的完整性和一致性,可以跟踪数据库内的操作从而不允许未经许可的更新和变化。可以联级运算。如,某表上的触发器上包含对另一个表的数据操作,而该操作又会导致该表触发器被触发。2、什么是存储过程?用什么来调用?存储过程是一个预编译的SQL语句,优点是允许模块化的设计,就是说只需创建一次,以后在该程序中就可...

2018-04-22 21:11:15 5780

转载 Oracle 恢复被删除的数据,解决误操作删除数据

前两天,一个同事不小心把数据库某个表里的数据删了,后来恢复了。一直记在心里,回家上网查资料做个记录。以备以后万一也遇到类似的问题,也能及时的解决。原文地址:https://www.cnblogs.com/chaizp/p/5192522.html第一种:1.打开Flash存储的权限ALTER TABLE tableName ENABLE row movement ;2.把表还原到指定时间点flas...

2018-04-22 20:11:49 386

原创 Java并发编程读书笔记——解析Java中线程池的原理

一、概述:Java中的线程池是运用场景最多的并发框架。在开发过程中,合理地使用线程池能够带来3个好处:        1).降低资源消耗。通过重复利用已经创建的线程降低线程创建和销毁造成的消耗。        2).提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。        3).提高线程的可管理性。线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统地稳定性...

2018-04-05 16:24:11 241

原创 Java并发编程读书笔记——CountDownLatch、CyclicBarrier、Semaphore

一、CountDownLatch:        CountDownLatch允许一个或者多个线程等待其他线程完成操作。        假设现在需要解析一个Excel里的多个sheet数据,此时可以使用多线程。等到所有sheet都解析完成后,需要提示解析完成。最简单的方法是使用join()方法:public class JoinCountDownLatchTest { public sta...

2018-03-29 22:45:51 317

原创 Java并发编程读书笔记——Java中的锁(Lock)以及队列同步器(AbstactQueuedSynchronizer)

一、Lock接口:            在Lock接口出现之前,Java靠synchronized关键字实现锁的功能。但是synchronized关键字将锁的获取与释放固化了,显得并没有这么灵活。在jdk1.5以后,新增加了Lock接口。lock主要具备synchronized关键字锁不具备的以下同步特性:            (1).尝试非阻塞地获取锁:tryLock();         ...

2018-03-25 23:03:02 328

原创 Java并发编程读书笔记——ThreadLocal

1. ThreadLocal定义:线程变量,是一个以ThreadLocal对象为键,任意对象为值得存储结构。2. 作用:提供线程内得局部变量,在线程的生命周期内起作用,在本线程内随时可取,隔离其它的线程。下面写了一个简单的例子:/** * 是一个以ThreadLocal对象为键,任意对象为值得存储结构; * 一个线程可以根据一个ThreadLocal对象查询到绑定在这个线程上得一个值 */...

2018-03-25 13:08:50 299

原创 Java并发编程读书笔记——Java内存模型(包括并发中的一些内存语义)

1.并发编程模型的两个关键问题:线程之间的通信和同步。    线程之间的通信有两种:共享内存和消息传递。    同步是指程序中用于控制不同线程间操作发生相对顺序的机制。    Java的并发采用的是共享内存模型,下面是Java内存模型的抽象结构:JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存中,每个线程有一个本地内存,本地内存存储了该线程以读/写共享变量的副本。本地内存是一...

2018-03-21 23:23:32 259

原创 Java并发编程读书笔记——volatile、synchronized和原子操作(CAS机制详解)

一、volatilevolatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的可见性。1.当一个共享变量被volatile修饰时,它实现可见性的原理如下:当对被volatile修饰的变量进行写操作时,Lock前缀指令会做两件事情:    (1).将当前处理器缓存行(工作内存)的数据写回系统内存(主内存);——store屏障指令    (2).这个写回内存的操作会使其他C...

2018-03-20 23:54:36 713

原创 Java并发编程读书笔记——并发编程的简述

这是读这本书的第二遍,所以会在前面记录一些后面可能比较重要的点,也希望记录一下所学,能学到第一遍所不能理解和懵懂的东西...1.上下文切换:    计算机单核处理器也支持多线程,是因为CPU通过给每一个线程分配CPU的时间片,即每个线程占用CPU的时间,这个时间非常短,所以会让我们以为是多个线程同时执行的。    当一个任务执行完当前的时间片,会保存当前的状态,等下一次切换回来的时候加载这个状态,...

2018-03-19 20:57:34 537

原创 使用IntelliJ IDEA创建SpringBoot项目

我本地的环境:Java为1.8版本;maven为3.5。创建一个新的Module,选择Spring Initializer那一项:然后点击下一步,给项目取一个名字,最近工作中写到登陆模块,我这里就取名为login:点击下一步创建成功后项目的目录如下:一个简单的springboot项目就创建完成了.下面看一下怎么访问这个项目在com.cy.login包下有一个自动生成的LoginApplicatio...

2018-03-18 10:49:06 4805

原创 JS实现发送验证码倒计时

//点击发送按钮触发事件function sendMsg(){ var time = 60; //设定倒计时时间为60s var obj = $('#btn');//发送验证码按钮对象 settime(obj,time);}function settime(obj,time){ if(time==0){ obj.attr('disabled',false); obj.val...

2018-03-05 22:57:59 261

原创 求二叉树根节点到子节点和为某一值的所有路径(Java实现)

该问题应该属于二叉树遍历一类的问题吧。简单描述一下:/** * 输入一颗二叉树和一个整数,打印出二叉树中结点值的和为输入整数的所有路径。 * 如下二叉树,和25 *             8 *    / \ *   8   7 * / \ *             9   2      *            / \ *           4   7 *   返回输出结果...

2018-03-04 21:27:30 1858

转载 关于爬楼梯问题以及优化

题目是这样的:假设你正在爬楼梯,一共有N阶楼梯。但每次你只能爬一阶或者两阶,你能有多少种不同的方法爬到楼顶部?初出茅庐,面试被问到,回家做个笔记记录一下。最先想到的应该是用递归的方法解:public static int climbStairs1(int n) { int ways; if(n==1||n==2) { ways = n; ...

2018-02-25 20:27:58 621

转载 java实现二叉树的前中后遍历(递归和非递归)

这里使用下图的二叉树作为例子:首先建立树这个类:public class Node { private int data; private Node leftNode; private Node rightNode; public Node(int data, Node leftNode, Node rightNode) { this.data =...

2018-02-25 20:26:57 271

原创 Redis持久化RDB简介及简单数据恢复案例

RDB(Redis DataBase):简介:在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话将的Snapshot快照,它恢复时是将快照文件直接读到内存里;是什么?Fork:RDB保存的是dump.rdb文件配置的位置:(SNAPSHOTTING)简单说一下上面图片中配置的含义:满足下列任意一条均会生成dump.rdb快照文

2017-11-15 23:08:56 450

空空如也

空空如也

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

TA关注的人

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