自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

全栈纸伞

学得慢,就慢慢学,每天进步一点点。

  • 博客(46)
  • 收藏
  • 关注

原创 源码解析:Spring源码解析笔记 目录

本文由colodoo(纸伞)整理QQ 425343603最近心血来潮,有阅读Spirng源码的想法并记录,计划是1个月内完成完整Spring核心逻辑的阅读,对后面自己封装框架或者各位面试的时候可能遇到的一些关于Spring的问题,都可以作为参考。如果你对本文章后续感兴趣的话,可以加群一起学习和进步!Java学习交流群(717726984)目录源码解析:Spring源码解析笔记(一)基本概念源码解析:Spring源码解析笔记(二)启动过程(上)源码解析:Spring源码解析笔记(三).

2021-06-30 21:46:23 242

原创 log4j2远程代码执行 原理解析图

log4j2远程代码执行 原理解析

2022-03-03 21:49:52 168

原创 Java源码解析:ThreadLocal

本文由colodoo(纸伞)整理参考源码:jdk1.8.0_131我相信大部分的人对ThreanLocal都一脸懵逼的,因为我一开始也是这样的,直到在面试中被问到以后,我才第一次知道ThreanLocal的存在。这是一些结论性的介绍,足以应付面试题:ThreadLocal是Java中所提供的线程本地存储机制,可以利⽤该机制将数据缓存在某个线程内部,该线程可以在任意时刻、任意⽅法中获取缓存的数据ThreadLocal底层是通过ThreadLocalMap来实现的,每个Thread对象(.

2021-07-17 19:51:59 220 1

原创 Java并发编程的艺术笔记:并发编程的挑战

本文由colodoo(纸伞)整理QQ 425343603参考书籍 《Java并发编程的艺术》笔记中会附带原文,如果不想看原文可以只看列表的总结上下文切换单核处理器支持多线程CPU通过给每个线程分配CPU时间片来实现支持多线程时间片是CPU分配个各个线程的时间时间片时间短,并不停切换让人感觉多个线程是同时执行的时间片一般是几十毫秒(ms)CPU通过时间片分配算法来循环执行任务,当任务指向一个时间片后会且到下一个任务.

2021-07-09 23:57:17 220 1

原创 剑指Offer笔记(3)从尾到头打印链表

描述输入一个链表的头节点,按链表从尾到头的顺序返回每个节点的值(用数组返回)。示例1输入:{1,2,3}返回值:[3,2,1]示例2输入:{67,0,24,58}返回值:[58,24,0,67]解题思路栈/*** public class ListNode {* int val;* ListNode next = null;** ListNode(int val) {* this.val =

2021-07-05 23:05:48 85 1

原创 源码解析:Spring源码解析笔记(五)接口设计总览

本文由colodoo(纸伞)整理QQ 425343603Java学习交流群(717726984)Spring解析笔记 启动过程部分已经完成,对启动过程源码有兴趣的朋友可以作为参考文章。源码解析:Spring源码解析笔记(二)启动过程(上)源码解析:Spring源码解析笔记(三)启动过程(中)源码解析:Spring源码解析笔记(四)启动过程(下)启动过程篇幅已经阅读结束,后续如果有遗漏的和错误的地方都会进行修正,接下来我们就要深入的学习一下Spring的设计。我们先从启动过程章节中经常.

2021-07-04 17:05:06 1322 1

原创 源码解析:Spring源码解析笔记(四)启动过程(下)

本文由colodoo(纸伞)整理QQ 425343603Java学习交流群(717726984)当前Spring源码版本是 5.2.10.RELEASE承接上一篇文章源码解析:Spring源码解析笔记(三)启动过程(中)。上一篇文章,我们了解了我们定义的beanDefinition是怎么被实例化的,但还不是完全体,还不是我们平常用到的bean对象,我们继续阅读源码,看看bean是怎么属性填充并完成初始化的。完成刷新(finishRefresh)org.springframework..

2021-07-01 22:38:34 129

原创 源码解析:Spring源码解析笔记(三)启动过程(中)

本文由colodoo(纸伞)整理QQ 425343603Java学习交流群(717726984)当前Spring源码版本是 5.2.10.RELEASE承接上一篇文章源码解析:Spring源码解析笔记(二)启动过程(上)。上一篇文章,我们把bean定义(beanDefinition)加载完毕了,下一步就是把我们加载的bean定实例化,我们跳过中间不必要的部分,直接到finishBeanFactoryInitialization这个方法。如果想直接看核心部分是如何实现的,不想阅读前面的源.

2021-06-30 00:13:44 252 3

原创 设计模式笔记:单例模式

本文由 colodoo(纸伞)整理参考书籍《图解设计模式》QQ 425343603Java学习交流群(717726984)单例模式确保只生成一个实例的模式被称作为Singleton模式。角色包含角色SingletonSingleton在Singleton模式中,只有Singleton这一个角色。Singleton角色中有一个返回唯一实例的static方法。该方法总是返回同一个实例。类图代码样例package com.zhisan.singleton;/** * .

2021-06-29 22:33:31 101

原创 设计模式笔记:工厂模式

本文由 colodoo(纸伞)整理QQ 425343603参考书籍《图解设计模式》工厂模式Product(产品)Creator(创建者)ConcreteProduct(具体的产品)ConcreteCreator(具体的创建者)Product(产品)Product角色属于框架这一方,是一个抽象类。Creator(创建者)Creator角色属于框架这一方,它是负责生成Product角色的抽象类,但具体的处理则由子类ConcreteCreator角色决定。ConcreteProdu.

2021-06-28 22:07:23 58

原创 设计模式笔记:观察者模式

设计模式笔记:观察者模式本文由 colodoo(纸伞)整理QQ 425343603参考书籍《图解设计模式》观察者模式Subject(观察对象)ConcreteSubject(具体的观察对象)Observer(观察者)ConcreteObserver(具体的观察者)Subject(观察对象)Subject角色表示观察对象。Subject对象定义了注册观察者和删除观察者的方法。此外,它还声明了“获取现在状态”的方法。ConcreteSubject(具体的观察对象)Concre

2021-06-27 21:55:13 69 2

原创 源码解析:Spring源码解析笔记(二)启动过程(上)

源码解析:Spring源码解析笔记(二)启动过程(上)本文由colodoo(纸伞)整理QQ 425343603Java学习交流群(717726984)环境搭建import com.zhisan.spring.service.UserService;import org.springframework.context.support.ClassPathXmlApplicationContext;public class MainXml { public static void m

2021-06-27 21:47:23 275 4

原创 源码解析:Spring源码解析笔记(一)基本概念

Spring源码解析笔记(一)本文由colodoo(纸伞)整理QQ 425343603Java学习交流群(717726984)参考 https://www.bilibili.com/video/BV1dK4y127mH 1-10章节BeanDefinitionBeanDefinition表示Bean定义,Spring根据BeanDefinition来创建Bean对象,BeanDefinition有很多的属性用来描述Bean,BeanDefinition是Spring中非常核心的概念。@

2021-06-20 00:22:08 194

原创 源码解析:Spring Boot(一)启动流程

参考资料java.awt.headless 模式

2021-06-17 23:36:11 505 2

原创 Java面试:ArrayList和LinkedList异同点

新增ArrayList在新增一个数组元素开始聊起,当ArrayList在新增一个元素的时候,因为它的内部是一个数组的结构,但是数组默认是定长的,所以它会创建一个新长度的数组,并对原有的数组进行复制,并在尾部设置新的元素;他们在内存中的地址是连续的。LinkedList是基于链表结构的,在新增的狮虎,是通过内部的next对象进行关联的,循环到最后一个元素,并讲内部的next对象设置为新增的元素,...

2021-03-17 20:57:35 85 1

原创 【网络安全】一段小笑话学习 加密算法+盐

催生这篇文章的一个原因是一位讲了半天听不懂原理还不虚心学习的群友。小笑话群友为啥两个一样的密码一个可以登录一个不可以群友不同用户名群友A账号 B密码 C账号 B密码 居然a能登陆c提示密码错误群友没有改东西想必大部分人肯定也有这样的经历,就是用数据库新增一个用户的时候,因为加了密所以把现有的账户复制了一条,然后改了用户名,便新增了一个用户。但是最后发现怎么也登录不了,这是怎么回事呢?其实原因也很简单,一个很简洁的解释:说明密码加密算法和用户名有关,比如sa

2021-03-17 20:50:37 579

原创 【LeetCode-数组】867-转置矩阵

给你一个二维整数数组 matrix, 返回 matrix 的 转置矩阵 。矩阵的 转置 是指将矩阵的主对角线翻转,交换矩阵的行索引与列索引。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[[1,4,7],[2,5,8],[3,6,9]]示例 2:输入:matrix = [[1,2,3],[4,5,6]]输出:[[1,4],[2,5],[3,6]]解题思路简单题,转换一维数组和二维数组的位置即可。class Solution {

2021-03-03 23:10:18 115 1

原创 Java面试:GC如何判断对象是否死亡

引用计数算法(不采用)给对象中添加一个引用计数器,每当有一个地方引用它,计数器就加 1;当引用失效,计数器就减 1;任何时候计数器为 0 的对象就是不可能再被使用的。此方法是最简单的实现方法,但是无法解决对象相互循环引用的问题。下面是一段伪代码。Obj a = new Obj();// a = 1Obj b = new Obj();// b = 1a.instance = b;//b = 2b.instance = a;//a = 2a = null;// (a去掉Obj引用 - 1)

2020-06-21 02:03:16 312

原创 Java面试:方法锁闹的一个小笑话

当然,笑话的主角就是我本人了,缘由一位群友关于线程锁的提问,我直接被带到沟里了,典型的审题不认真啊!-> 群友(滑稽) 各位问一个问题-> 群友一个方法synchronized修饰了 里面就Int++-> 群友几百个线程调用-> 群友会造成线程不安全吗-> 群友(滑稽)-> 群友哪里出了问题呢(滑稽)-> 群友我马上写个demo...

2020-06-17 22:23:33 163

原创 源码解析:HashMap:哈希表(JDK8)

之前写过一篇关于HashMap的文章,只是粗略的介绍了一下HashMap的整体架构,但是没有很彻底阅读整个源码。【Java面试】彻底搞懂HashMap这次直接通过阅读源码的方式来理解HashMap更为直观,话不多说直接从put方法开始。putpublic V put(K key, V value) { return putVal(hash(key), key, value, fal...

2020-04-18 23:43:46 352

原创 Java并发编程实战笔记(2):线程安全性-原子性

原子性竞态关系复合操作我们还是以一段代码来理解这两点。public class ThreadSecStudy { static int count = 0; public static void main(String[] args) { // 正确性反例 Thread add = new Thread(new Runnable() {...

2020-04-14 22:47:45 162

原创 Java并发编程实战笔记(1):线程安全性-什么是线程安全性

线程的安全的定义是复杂的,安全性中最核心的概念就是数据的正确性。正确性当多个线程访问某个类时,这个类始终能表现出正确的行为,那么就称这个类是安全的。如果我们还是不懂这个正确性的定义,就举一个反例来理解它。public class ThreadSecStudy { static int count = 0; public static void main(String[] ...

2020-04-14 22:47:09 208

原创 Java面试:一篇小故事理解 乐观锁与悲观锁

一直有听说乐观锁和悲观锁这两个名词,但是一直没有去了解他,今天特地去搜索了一下两者的区别。一篇小故事理解 乐观锁与悲观锁看图理解代码理解总结悲观锁乐观锁参考资料看图理解还是先以一个故事来理解这两个名词。A是幼儿园老师,又到了小朋友玩玩具的时间了,今天A给小朋友们带了新玩具,让小朋友们一起玩,一开始小朋友们都是很有秩序的,老师也很开心。快乐得时光总是短暂的,玩着玩着,其中两个小朋友们就...

2020-04-10 00:37:56 303

原创 Java面试:通过安检的例子理解什么是可重入锁

相信大家安检的时候最讨厌的就是两类人,一类是违禁物品非常多又恰巧在你前面、另一类就是插队的人,而这两类人恰好解释了可重入锁。看图理解现在安检的准备去安检的门前有一个大包小包A,老实巴交B,还有一个严厉的安检员S。A来得比较早,所以正好排在了最前头,但是他的东西实在太多了,一个个一个的放进去安检机。这时候B看到也来到了安检门前,但还不到他安检,因为前面的大包小包A一会儿被S叫A拿一下背包...

2020-04-08 00:12:46 311

原创 Java面试:以故事的形式教你理解死锁,如何避免死锁

目录什么是死锁死锁触发条件卖家强买强卖如何避免死锁参考资料什么是死锁先通过一段产生死锁的代码来理解死锁是怎么产生的。/** * 线程死锁 * */public class ThreadDeadkockStudy { // 钱 static Object money = new Object(); // 货 static Object goods = ...

2020-04-05 20:38:09 297

原创 Java面试:我终于理解了并发和并行的区别

这两个名词一定很多人听过,会不会有人理所当然的把这两个名词当成一个意思,其实这两者有着本质上的区别。【Java面试】我终于理解了并发和并行的区别并发并行画图理解总结参考资料用工作中开发来举个例子吧。并发同一时间有两个需求,需求A和B分配到了你的手上,而且这两个需求都很急,你为这两个需求分别开了两个分支A和B,一会儿需求A催你改代码,你切到了A的分支,一会儿B催你改代码,你又切到了需求B,你...

2020-04-05 00:25:25 3688 4

原创 Java面试:LinkedList和ArrayList的异同点

我们先把LinkedList的增删改查源码都阅读一遍,然后再各个方面进行比较两者之间的区别。LinkedList linkedList = new LinkedList();// addlinkedList.add("1");// getlinkedList.get(0);// setlinkedList.set(0, "1");// removelinkedList.remov...

2020-04-01 23:17:12 197

原创 Java面试:每天一篇小故事,搞定面试题。

我是十足的背面试题的苦手,毕竟好些面试题都是平时工作场景中碰不到了,想自己用编码实现、可视化、模拟场景等方式来灵活的背面试题,在此做个记录。...

2020-03-31 22:55:18 951

原创 Java面试:一步步搞懂ArrayList

【重拾Java基础】ArrayList源码分析add初始化一个Object[]对象数组,modCount++Arrays.copyOfSystem.arraycopyremove

2020-03-31 22:32:07 489

原创 Java面试:彻底搞懂HashMap

废话不多说,先来点无聊的,直接阅读源码。如果你实在无闲暇看无聊的代码阅读,那么可以直接跳到transient <K,V>[] table;实际上HashMap内就是由多个Node<K, V>对象组成的数组,如果你暂时还不知道泛型的话,那可能还是看不明白,我用Object[]这样来解释是不是更清楚呢,虽然两者是完全不相同,但是为了理解这个东西。而这个对象内又包含着哪些...

2020-03-30 22:16:57 367

原创 我为什么还继续呆在外包公司

之前因为觉得自己实习的地方很坑,没转正就辞职了,然后在家呆了好几个月,得有小半年了吧,首先不是我不想去工作,是真的没人要我!最后经人推荐去了一个外包公司,事后我自己琢磨了一下,根本原因还是在自己身上,距当初已经有500多天吧。先抛出几个致命且真实的结论吧,不知道各位有没有相同的。学历面渣雨露均沾就从以上几点开始聊吧,以免长篇大论。学历学历真的是个还蛮致命的东西,当你连门槛到达不到...

2020-03-28 19:12:26 2436 8

转载 空杯理论

南隐是一位禅师。一天,一位学者来向他问禅,但自己喋喋不休。南隐则默默无语,以茶相待。他将茶水注入这位客人的杯子,满了也不停下来,而是继续往里面倒。  眼睁睁看着茶水不停地溢出杯外,客人着急地说:“已经满出来了,不要再倒了! ”  南隐说:“你就像这只杯子一样,里面装满了自己的看法和成见。如果你不先把杯子空掉,叫我如何对你说禅呢?”

2020-03-28 13:01:06 714

原创 【LANB WVS】一个正在孵化的漏扫平台,开源漏洞扫描平台。

一个正在孵化的漏扫平台;漏洞扫描平台。前言本项目是立足于网络安全的的WEB扫描平台,定位是基于云服务的微扫描平台。整合安全资源,提供一个庞大的知识库。面向群体安全团队安全企业安全外包公司面向个人安全研究人员驻场人员安全团队管理基础展示首页基础表格驻场工程师首页创建任务资产维护安全管理员基础展示反馈交流对本项目有兴趣者,欢迎加群讨论:...

2019-09-28 23:28:42 805

原创 lanb-analog 基于Ajax拦截的前端数据模拟工具,脱离后端独立开发,实现前后端分离

lanb-analog为前端提供模拟测试数据 中文文档 特性轻量级Lanb-alalog是一个轻量级的小插件。 它仅仅只有2.15k,却可以对所有的ajax请求进行监控。 拦截它依赖于Ajax-hook,如果你想要自定义自己的请求拦截器,那么该项目可以是一个很好的参考。 开始该项目基于webpack构建,如果你是个爱折腾的人,那么你可以按照...

2018-08-17 23:33:28 366

原创 【Web渗透】jQuery是怎么形成XSS的

最近有人问我怎么检测jQuery的XSS,之前因为有强大的扫描器,只管上报即可,没有认真的分析形成的原因。这次真的给问倒了,于是自己搭了个环境来研究一下。分了如下几个可能出现的问题来解决。1、是否所有的jQuery都存在XSS漏洞?首先答案是否认的,用如下的例子来解决这个问题。之前被误导,在网上发现这个代码,说是用来检测jQuery的XSS代码。var value = l...

2018-06-28 11:19:19 6039

原创 【Eclipse】自己在build automatically挖的坑

【Eclipse】自己在build automatically挖的坑最近一直在排查的一个问题,使得很多项目都不能正常执行了,最近解决了。0x01 问题出现因为电脑本身配置的原因,所以一直觉得eclipse运行缓慢,找了很多相关的配置来优化和提速eclipse,以提升开发效率,也就此给自己挖了一个坑。0x02 排查过程一开始是觉得自己的所有代码都没有更新,困扰了很久,然后我就随便创建了一个项目,然后再

2017-11-26 18:42:40 8612

原创 【SSM开发】MyBatis Generator踩过的坑

【SSM开发】MyBatis Generator踩过的坑一个在使用MyBatis Generator工具的时候,花了一段时间才解决的一个坑。0x01 问题出现  在前几次整合SSM框架的时候,一直都是带着尝试的心态去学习的,因为原本比较少用偏向于原生SQL语句的Mybatis,一直都是用的Hibernate。   尝试整合Mybatis的时候,需要用到大量的原生SQL语句,偶然发现了mybatis

2017-11-26 18:27:41 1693

原创 【SQL注入之sqli-labs】Less 6 - Less 10 练习笔记

【SQL注入之sqli-labs】Less 6 - Less 10 练习笔记Less 6 - 10 这部分的内容基本上和Less 1-5差不多,换汤不换药,如果出现疑惑,可以看看1-5的解释。0x01 Less 6简单的说下测试的过程" // 出现SQL语句错误,说明可以基于报错修改参数,且"闭合方式id=1" and "1"="1 // 是否出现SQL注入的特征最后得出

2017-07-10 23:28:57 770

原创 【SQL注入之sqli-labs】Less 1 - Less 5 练习笔记

【SQL注入之sqli-labs】Less 1 - Less 5 练习笔记0x00 部署sqli-labs这部分相信大部分人都会了,我简单推荐一种简单的组合 wamp 实现一键部署,其中包含PHP环境 navicat 导入数据这里悄悄的给出一种作弊的方法,就是在每句SQL语句后面:echo $sql. '<br>';如果是练习盲注的同学还是老老实实按照不作弊的方式来。0x01 开始练习L

2017-07-09 23:58:38 1035

原创 【面试二三事】安全岗面试谈关于SQL注入

【面试二三事】安全岗面试谈关于SQL注入

2017-06-16 22:38:13 2300

空空如也

空空如也

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

TA关注的人

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