- 博客(14)
- 收藏
- 关注
原创 SpringBoot自动配置原理,面试高频!
SpringBoot自动配置我们都知道一个SpringBoot主配置类只要标注上@SpringBootApplication的注解,Spring就会帮我们自动配置各个组件和实例化Bean,我们来通过源码分析一下SpringBoot自动配置原理。首先我们要知道,SpringBoot将符合条件的@Configuration类都加载到Spring容器中,就像一只八爪鱼,我们的启动类就是一个典型的@...
2019-11-15 13:18:33 2451
原创 前后端日常使用:前后端两次MD5加密
MD5加密设计前端后端分别进行一次md5 salt加密前端加密为了防止密码明文在http上传输,则需要在前端进行一次md5 salt加密使用JQuery md5前端JQuery md5工具:https://github.com/emn178/js-md5在前端js中声明一个固定盐salt//saltvar g_passsword_salt="ewn...
2019-11-15 13:17:18 3229
原创 Mybatis源码分析—Mapper创建和Spring的管理
Mybatis源码分析—Mapper创建和Spring的管理我们分析的时候先自己猜测实现方式再对比mybatis的源码实现方式mapper 创建因为mybatis可以脱离spring自己使用,所以mapper的bean创建是由mybatis完成的创建方式,根据不同的mapper,方法都是对应与注解或者配置文件对应名称的方法,所以我们猜测使用的是spring的动态代理创建方式我们...
2019-11-15 13:14:37 1039
原创 Java全文搜索引擎—Solr
全文检索倒排索引根据文档创建索引,再对索引进行查询获取文档。相比与顺序查询:不需要那么多的查询(一个文档一个文档找索引,找到就匹配,需要全部查询,效率很低),而且可以在索引上定位,出现在哪个文档哪个地方,支持高亮LuceneLucene是一个基于Java的全文检索库,可以看成一个持久层框架,与Lucene索引交互倒排索引存储信息左边保存的是一系列字符串,称为词典。...
2019-11-15 13:12:51 1342
原创 多次尝试的学习,终于搞懂了NIO!
NIO—NonBlocking IO(new IO)io面向流编程,只能作为输入或者输出流的一种,是同步阻塞的,每一个连接过来都要创建一个线程去处理,线程上下文切换开销很大,造成了很大的瓶颈于是有了线程池实现的伪阻塞IO,一定程度解决了线程创建过多的问题,但是没有从根本上解决阻塞的问题,并且线程过多而线程池过小时也会造成很大的瓶颈既然根本瓶颈原因是线程数和阻塞IO,那么我们有没有办法只用...
2019-11-15 13:07:07 930
原创 01背包问题
01背包问题有N件物品和一个容量为V的背包。第i件物品的费用是v[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。要么拿,要么不拿dp解决方法关键就在于找到它的最优子问题,物品为N个,体积为V,我们需要取二维状态的dp将前i个物品放入体积为j的背包中可以获得的最大价值->dp[i][j]只有单件物品就只需要考虑放或者不放,如果放入,体积就需要减去v[i],价...
2019-11-15 13:01:00 863
原创 MongoDB基本知识和操作扫盲!
MongoDB学习笔记—updatingjson可以为我们描述多种关系:一对一、一对多、多对一和多对多与js语法类似创建记录会自动生成一条_id主键,唯一id,代表该Object,也可以声明为自定义的数据{_id:"123"}BSON和JSON我们都知道Mongodb存储的是BSON格式数据,BSON格式数据以二进制格式存储,可以嵌套文档和数组,增加了数据类型,Date...
2019-11-15 12:53:00 885
原创 多次尝试的学习,终于搞懂了NIO!
NIO—NonBlocking IO(new IO)io面向流编程,只能作为输入或者输出流的一种,是同步阻塞的,每一个连接过来都要创建一个线程去处理,线程上下文切换开销很大,造成了很大的瓶颈 于是有了线程池实现的伪阻塞IO,一定程度解决了线程创建过多的问题,但是没有从根本上解决阻塞的问题,并且线程过多而线程池过小时也会造成很大的瓶颈 既然根本瓶颈原因是线程数和阻塞IO,那么我们有没有办法只...
2019-11-15 00:26:50 264
原创 01背包问题
01背包问题有N件物品和一个容量为V的背包。第i件物品的费用是v[i],价值是w[i]。求解将哪些物品装入背包可使价值总和最大。要么拿,要么不拿dp解决方法关键就在于找到它的最优子问题,物品为N个,体积为V,我们需要取二维状态的dp将前i个物品放入体积为j的背包中可以获得的最大价值->dp[i][j]只有单件物品就只需要考虑放或者不放,如果放入,体积就需要减去v[...
2019-11-15 00:11:03 156
原创 你真的了解二分查找吗?
二分查找算法解析基本框架:int binarySearch(int[] nums, int target) { int left = 0, right = ...; while(...) { int mid = (right + left) / 2; if (nums[mid] == target) { ... ...
2019-11-15 00:04:09 93
原创 AbstractQueuedSynchronizer AQS锁原理及ReentrantLock非公平锁的实现
AbstractQueuedSynchronizer AQS锁原理及ReentrantLock非公平锁的实现AbstractQueuedSynchronizer是基于一个FIFO双向链队列 ==CLH队列==,用于构建锁或者同步装置的类,也称为Java同步器,ReentrantLock的公平锁与非公平锁就是由该同步器构成,链队列结构图如下。你可以理解为银行ATM机取钱,一个人先去取,获取到了锁...
2019-11-14 14:09:09 1080
原创 netty学习—实现websocket长连接和socket之间进程通信
netty学习—实现websocket长连接和socket之间通信最近正在学习netty,跟着教程写了一个基于WebSocket的网页聊天室,对netty有了一定的了解,现在正好项目使用到长连接,选用了netty。项目目标:客户端A(网页)和服务端通过WebSocket进行通信,客户端B和服务端通过Socket通信,把客户端B的数据传输到客户端A,桥梁为服务端Socket服务端监听8090...
2019-11-14 14:06:25 1630
原创 扫码登录功能Demo—Postman模拟扫码请求
扫码登录功能Demo—Postman模拟扫码请求扫码登录功能—轮询or长连接WebSocket—Zxing生成二维码扫码登录其实就是一个登录请求,只不过信息存储在用户手机上,还需要通过二维码验证是否匹配的方式就可以登录,免去了用户多次输入密码的场景,现在越来越多登录方式,其中扫码登录算是比较人性化的了我们把一个全局唯一id保存在二维码中,使用手机扫码可以获取到二维码中的信息,此时就把...
2019-11-14 13:40:33 3387
原创 SpringBoot 轮询or长连接 实现扫码登录功能Demo—Postman模拟扫码请求
扫码登录功能Demo—Postman模拟扫码请求扫码登录功能—轮询or长连接WebSocket—Zxing生成二维码扫码登录其实就是一个登录请求,只不过信息存储在用户手机上,还需要通过二维码验证是否匹配的方式就可以登录,免去了用户多次输入密码的场景,现在越来越多登录方式,其中扫码登录算是比较人性化的了我们把一个全局唯一id保存在二维码中,使用手机扫码可以获取到二维码中的信息,此时就把...
2019-11-14 13:39:49 2603 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人