自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

崩玉~雅的博客

跌跌撞撞

  • 博客(36)
  • 问答 (3)
  • 收藏
  • 关注

原创 全面开战系列之Spring源码---依赖注入(五)

AutowireCapableBeanFactory getAutowireCapableBeanFactory() throws IllegalStateException;

2021-01-04 18:33:59 401

原创 全面开战系列之Spring源码---Bean实例化流程(四)

文章目录系列文章目录 前言 一、FactoryBean 二、实例化Bean过程 2.1.缓存 2.2.实例化bean 2.3.属性装配 2.4.回调接口 三、总结 系列文章目录前言本篇主要分析bean实例化的大体过程,主要分为缓存,构造函数实例化bean,属性装配,回调生命周期接口这4个模块。对于各个模块的具体细节实现,在之后的章节会详细分析。本篇先把各个流程串起来,然...

2020-12-29 17:54:48 214

原创 这个2020很不一样

文章目录 一.2020年回顾 二.2021年展望 三.总结 一、2020年回顾一转眼,2020年已经到年末了,时间飞逝啊。想想自己已经毕业一年半了,只是还经常想着自己是刚毕业的。今年发生了很多事情,工作,生活都有很大的起伏。工作方面,一整年下来,自我感觉就一个字:闲。闲的蛋疼!这对一个程序员来说是很难想象的,毕业后,一共待了2家公司。因受不了上家公司日夜加班以及领导的pua,刚毕业后3个月,果断离职。好在程序员这个行业,年轻还是好找工作的,很快就入职了...

2020-12-22 19:07:43 307 2

原创 全面开战系列之Spring源码---IOC实例化前的准备工作(三)

文章目录系列文章目录 前言 一、配置BeanFactory 二、动态注册bean到容器 三、注册BeanPostProcessor 四、总结系列文章目录前言在上一节IOC启动流程中,已经分析了加载bean过程,此时距离真正实例化bean步骤还有一段距离。本节主要分析从bean定义到bean实例化之间Spring会做什么。Spring的一个明显特性是:可扩展性强,允许使用者参与Ioc创建过程。回顾IOC的创建过程(refresh方法):AbstractApplica.

2020-10-14 16:43:00 147

原创 全面开战系列之Spring源码---IOC启动流程(二)

文章目录系列文章目录 前言 一、IOC启动全局概览 二、加载Bean信息到BeanFactory 1.创建BeanFactory并关联父容器 2.解析Xml配置文件 3.解析Document对象 总结系列文章目录全面开战系列之Spring源码---Spring概述(一) 全面开战系列之Spring源码---IOC启动流程(二)前言IOC是什么?控制反转,也称为依赖项注入(DI)。在此过程中,对象仅通过构造函数参数,工厂方法的参数或在构造或从工厂方法...

2020-10-14 10:54:51 235

原创 全面开战系列之Spring源码---Spring概述(一)

文章目录系列文章目录 前言 一.Spirng概述 二.源码阅读步骤 1.下载源码 2.基本配置 三.总结系列文章目录全面开战系列之Spring源码---Spring概述(一)前言在写这系列文章前,我先狠狠的打了自己两个巴掌,看了看之前Mybatis源码系列的时间在7月底,至今2个半月没写博客了。痛斥自己的懒惰,当真是声泪俱下,刻骨铭心。但今天终于重拾初心,继续征战。本系列主要探讨Spring框架,系列名定为:全面开战!一起冲一、Spring...

2020-10-13 14:03:05 194

原创 花里胡哨系列之Mybatis源码终篇---感悟(九)

一.Mybatis回顾 Mybatis源码终于要结束了,这个系列一共写了九篇博客,基本上算是把Mybatis的各个功能模块都分析过一遍。最精华的部分个人认为是缓存模块,面试也常考。其实回过头来想想,Mybatis源码给我的感觉是小巧,精致的,并没有复杂的继承结构(spirng这块就让人头大);而且 Mybatis中的设计模式也用到了很多,如装饰者,模板方法,动态代理等等,有兴趣大家可以研究一下。Mybatis其它模块,如延迟加载,自增id获取,插件机制就留给大家自行分析了。二.源码技巧...

2020-07-28 11:03:18 171

原创 花里胡哨系列之Mybatis源码---数据源(八)

一.Mybatis数据源介绍Mybatis的提供三种数据源,UNPOOLED,POOLED,JNDIUNPOOLED– 这个数据源的实现会每次请求时打开和关闭连接。虽然有点慢,但对那些数据库连接可用性要求不高的简单应用程序来说,是一个很好的选择。 性能表现则依赖于使用的数据库,对某些数据库来说,使用连接池并不重要,这个配置就很适合这种情形。POOLED– 这种数据源的实现利用“池”的概念将 JDBC 连接对象组织起来,避免了创建新的连接实例时所必需的初始化和认证时间。 这种处理方式很流行,能使并

2020-07-28 09:58:51 172

原创 花里胡哨系列之Mybatis源码---结果映射(七)

一.结果映射介绍 在映射文件中,Mybatis可以根据配置,自动将查询结果封装成对象。常见的结果配置有: 1.通过 resultType 映射 <select id="selectFromAuthor" parameterType="java.lang.String" resultType="org.apache.ibatis.domain.blog.Author"> select * from Author where id = #{id} and u...

2020-07-27 15:06:21 533

原创 花里胡哨系列之Mybatis源码---缓存机制(六)

一.缓存机制介绍 在默认情况下,Mybatis会启用缓存,俗称一级缓存,没办法关闭的。。 当然可以配置缓存,俗称二级缓存。当初学Mybatis的时候,视频里的老师说一级缓存的生命周期是整个SqlSession,二级缓存的生命周期是整个Mapper.xml ,云里雾里的。接下来以源码的角度看看缓存是如何运作的吧。 Mybatis在查询的时候,会先查二级缓存,如果没有,再查一级缓存。就以sql执行流程开始分析。二.缓存分析 SqlSession是sql执行的关键,Sq...

2020-07-23 19:13:36 133

原创 花里胡哨系列之Mybatis源码---参数解析(五)

一.基本介绍本节分析的主要内容是:Mybatis如何将传入的参数填充到Sql语句当中。举个例子:映射文件:<mapper namespace="org.apache.ibatis.mytest.MyDao"> <insert id="insertAuthor" parameterType="org.apache.ibatis.domain.blog.Author"> insert into Author (id,username,password,email,

2020-07-23 13:55:19 515

原创 花里胡哨系列之Mybatis源码---SQL执行流程(四)

一.本章概述 对于Mybatis的配置文件,映射文件在之前的博客已经分析过,之后正式进入Sql执行分析阶段。Sql执行整体过程还是比较清晰的,但是其中有很多细节值得琢磨。 Sql执行过程涉及到的模块: 1.SqlSession获取 2.参数解析 3.缓存机制 4.连接获取 5.结果映射 这章计划先把sql执行流程串起来,有个基本的执行印象,然后再各个击破,抽丝剥茧分析模块细节。二.基本用法 在获取到 SqlSessi...

2020-07-21 15:49:21 131

原创 花里胡哨系列之Mybatis源码分析---映射文件解析(三)

一:映射文件介绍 MyBatis 的真正强大在于它的语句映射,这是它的魔力所在。由于它的异常强大,映射器的 XML 文件就显得相对简单。如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% 的代码。MyBatis 致力于减少使用成本,让用户能更专注于 SQL 代码。简单说:就是写SQL代码的地方。SQL 映射文件只有很少的几个顶级元素(按照应被定义的顺序列出):cache– 该命名空间的缓存配置。 cache-ref– 引用其它命名空间的缓存配置。 r...

2020-07-20 17:04:41 259 2

原创 花里胡哨系列之Mybatis源码---配置文件解析(二)

一.配置文件介绍 官网描述:MyBatis 的配置文件会深深影响 MyBatis 行为的设置和属性信息 配置文件基本结构二.配置文件解析流程String resource = "org/mybatis/example/mybatis-config.xml";//将 配置文件路径转为输入流InputStream inputStream = Resources.getResourceAsStream(resource);//根据输入流 创建SqlSessionFac...

2020-07-17 19:24:25 288

原创 花里胡哨系列之Mybatis源码 ----前序(一)

一.基本介绍 已经好久没写博客了,其实心里一直想着写的,但就是静不下来。忽然醒悟不能在堕落下去,自己扶自己起来,逼着自己学习。老实说,之所以看源码,最开始纯粹是因为工作太闲,不敢相信吧。当自己不经意间成为工具人的时候,是时候想办法提高,改变自己了。 看源码过程是痛苦的,枯燥的,不断的调试。但是在这个过程中,对于思维推理能力的锻炼还是有成效的,希望大家能坚持!二.Mybatis基本介绍 对于Mybatis的用途,特性以及和其他框架比较,网上介绍一大堆,天花乱坠,就不在赘述。我这里以源码...

2020-07-17 10:46:18 125

原创 sql——Union的使用场景

最近遇到一个需求,需要将数据库的一条记录展示成4条记录。初次一听,什么玩意??仔细分析之后,大概是这样,一条记录有多个字段,这些字段又可以归为不同类别,所以需要展示成多行形式。这里想到2种方案,1是将记录从数据库中原模原样取出来,在代码中将记录分成多条记录;2是使用union,选择记录中的部分字段,合并记录中的另一部分字段,接下来分析第二种方法。1:建一张测试表 user 插入...

2020-01-17 15:41:16 1918

原创 Nginx安装以及基本配置

一 Nginx概述1:实际开发遇到的问题 一个服务器支撑不了高并发,需要对服务器进行集群2:Nginx概述 nginx常做静态内容服务和代理服务,tomcat主要做应用服务器 一个http服务器,高性能http服务器及反向代理服务器。支撑10万并发量,cpu,内存等资源消耗低,运行稳定3应用场景 1.http服务器,常做网页静态服务器 2.虚拟主机,可以实现一台服...

2020-01-09 16:00:17 87

原创 SQL ——深入分析左连接

背景:在一次开发中,查询出现了2条重复数据。数据来源于2张表的不同字段,使用左连接方式连表。在这之前,对于左连接的印象始终停留在:以左边(x left join y ) 即x 的表为最终结果为基础,右边取需要的字段,如果右边符合条件的数据行的字段为空,则取空。 直到出现了以上现象:左连接出现了2条重复数据,颠覆了我的想象。。测试:环境:mysql5.5.62 1:新建2张表做测试...

2020-01-09 15:05:25 437

原创 Tomcat 服务器学习

一:tomcat架构图 在tomcat服务器中,只允许存在一个Server,一个Server可以有多个Service,一个Service中只允许有一个Engine,与配置文件Server.xml 对应二:tomcat 配置文件 1:catalina.policy 安全策略配置文件防止项目影响tomcat(服务器)安全影响,如删除文件,重启系统,需要对java代码进行安全...

2020-01-08 08:54:49 131

原创 Redis主从架构--搭建

一:安装redis1.获取redis资源  wget http://download.redis.io/releases/redis-3.2.1.tar.gz2.解压3.安装 cd redis-3.2.1  make  cd src  make install PREFIX=/usr/local/redis ,prefix表示安装路径 ...

2019-12-12 18:06:41 180

原创 Redis读写分离--复制

1.redis高并发的瓶颈 单机redis,能够承载的QPS大概在上万-几万2.如果redis要支撑超过10万+QPS (读) 读写分离,一般来说,对缓存,一般来支撑读高并发的,写请求比较少。 master(主)节点负责写,同步数据到slave节点;slave(从)负责读。易于水平扩容,增加slave就可以3.redis replication (r...

2019-12-12 16:04:07 128

原创 Redis持久化以及数据备份和恢复

1.持久化的意义 灾难恢复,数据恢复。可以归类到类似高可用的环节;如果redis挂了,重启redis,从磁盘上读取数据到内存中2.RDB和AOF两种持久化机制 RDB,12:00,redis中有100条数据,生成RDB文件,有100条数据 12:05 ,redis中有150条数据,生成RDB文件,有150条 周期...

2019-12-12 14:00:16 186

原创 Redis分布式锁实现

1:为什么需要分布式锁 一个web应用部署在多台服务器上,在程序内部使用锁,如synchronized(),在单台服务器上确实没问题,但是只能控制单台服务器的线程执行,对于部署在其他服务器上的应用无法控制,会导致线程安全问题。 synchronized (this){ int i = getData() -1; //模拟减单操作,从数据库中获取...

2019-11-05 18:47:51 129

原创 Java面试经历(初级)

1:权限控制了解(高频)2:项目监控3:事务,隔离基本,事务级别4:多线程创建方式,常用线程池(高频)5:100万数据的表优化(高频)6:日志文件中,如何查询出top5的sql语句7:netty底层原理,为什么要用netty,为什么要用nio8:spring的常用注解,自定义标签?9:项目中的职责描述(高频)10:如何判断redis的key过期?11:spr...

2019-10-10 22:13:49 139

原创 多线程使用

项目背景:前端发送一次请求,后台通过远程连接技术grpc获取数据。在一次请求中分多次请求grpc服务端,且请求为单线程,需要等待上一次请求结束后再发送请求,严重影响性能。解决方案:采用多线程并发发送多个请求。解决步骤: 1:创建线程连接池: private ExecutorService threadPool = Executors.newFixedThreadPool...

2019-07-09 17:08:22 98

原创 Maven解决jar包冲突示例

项目背景:在使用grpc远程连接框架时,导入jar包至已有的项目,在客户端与服务器连接时,一直报错:NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;J)V产生原因:由于项目中已经有guava包,且版本是18.0.0.而grpc同样依赖这个包,但是grpc依赖的gu...

2019-07-09 16:20:56 320

原创 bug查找思路总结及常见错误

解决bug总结:1:首先确认这是不是一个bug,可能是因为运行环境导致出现该现象;可能是因为某种依赖的服务未开启导致,例如报502,503等错误;redis连接超时。对于和数据库数据相关的bug,例如数据不显示。先用查询语句,使用这个bug的相同的条件查询相关表,看是否存在数据。2:确认bug的确存在,开始调试。可以使用接口调试工具对接口直接调试,通过打日志的方式或者本地debug查看信息...

2019-04-22 16:22:15 501

原创 Spring通过注解@Autowired注入对象 注意事项

背景描述:项目使用技术比较老,请求直接通过继承HttpServlet 接收,用spring,jdbcTemplate管理交互数据。 在servlet层,想要直接注入一个 TenantInfoService 例如:TenantInfoService :@Servicepublic class TenantInfoService { private final stati...

2019-04-19 17:03:54 3400 2

原创 HttpClient发送http请求

项目中经常需要调用别人系统的接口,无法使用dubbo等远程连接技术,这里使用httpClient直接在代码中发送请求。依赖的jar<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId&...

2019-04-12 10:45:31 282

原创 如何在静态方法中使用注入的对象

1:在通常情况下,如果需要在静态方法中使用注入的对象,注入的对象会为null。例如:public Class utils{@Autowiredpublic TenantInfoDao tenantInfoDao; public static void test(String id){ String mac = tenantInfoDao.getMac(id)...

2019-04-12 10:37:24 4794

原创 ajax上传文件,限制图片格式

html:&lt;input type="file" name="diyProtalImg" style="display: none" id="diyProtalImg" onchange="ajaxUpload()"/&gt;js:function ajaxUpload(){        var _name, _fileName, personsFile;       

2018-12-24 19:06:51 793

原创 Java基础——四舍五入

1:java四舍五入函数 Math.round 例子: int a=5; int b=2; int x=Math.round(a/b); int f = Math.round(Float.valueOf(a)/b); System.out.println(a/b);...

2018-12-08 17:11:34 2078

原创 Mysql学习--处理取值为null,多表连接

1:处理取值为null,需要转变为0. (1)COALESCE ,总是返回第一个不为null的值。 例如:SELECT COALESCE (SUM( class3),0) AS total FROM t_third_common_consumption WHERE `tenant_id`='mylsxVtRvaVcSSuylZtAOYROaYknOjzm...

2018-12-08 08:58:08 999

原创 Mybatis总结一——日期比较,参数传递,Mapper文件的编写

1 参数传递 (1)如果不想把参数放在一个对象内封装,使用多个参数。 Dao接口层方法传参: Integer selectAnnualSales(@Param("tenantId")String tenantId,@Param("beginDate") String beginDate,@Param("endDate")...

2018-12-04 17:35:06 11922

原创 Javascript——字符串等变量的学习

   1:字符串类型         定义方式:  var a ="abc";   或者   var  a='abc';  使用单双引号都可以。    2常用函数           (1)charAt();获取字符串特定索引处的字符  。             例如: var  a ="abcdefg";   var b=a.charAt(2);    此时b的值为c。索引是从...

2018-12-04 15:59:20 179

原创 Javascript学习——引入方式,变量定义

1:html中使用js的两种方式(内联方式)    (1)使用javascript:前缀执行js代码,例如:&lt;a href="javascript:alert('运行js');"&gt;javascript前缀运行js&lt;/a&gt;      (2)使用&lt;script/&gt;方式引入,例如:&lt;script type="text/javascript" &gt;al...

2018-12-04 15:09:53 158

空空如也

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

TA关注的人

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