自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 jdk源码之java的NIO稍微了解篇

从JDK1.5开始,java引入了java.nio包,nio的含义为非阻塞型IO。这一篇就从使用到源码来简单了解一下NIO吧。一、基本用法 RandomAccessFile aFile = null; try { aFile = new RandomAccessFile(NIOTest.class.getClassLoader().getR...

2019-07-09 12:30:51 371

原创 jdk源码之java的IO

1.类族java.io包中包含了java基于流的IO类库的整个类族,其中包含了字符流和字节流两种流,这里来看一看整个类族结构。1.1 类图借用几张网络图片来说明(图片来自 http://blog.csdn.net/zhangerqing/article/details/8466532 )1.1.1 输入字节流1.1.2 输出字节流1.1.3 输入字符流1.1...

2019-07-01 16:22:08 231

原创 jdk源码之重入锁ReentrantLock

在许久前我的博客java锁机制中,我曾经梳理过java中的部分锁机制,通过实验和部分源码阅读来解释原理和优劣。在此先重新梳理一遍:1.最常用的synchronize,俗称悲观锁,但凡被其修饰的代码段(方法等)被执行时便要上锁,这种方式可以绝对保证线性安全,但效率偏低。2.基于CAS的乐观锁,数据的操作和更新分开,当代码段执行完毕执行更新的时候,将之前复制的原值和当前值比较,如果相同就更新,...

2019-05-14 13:36:35 240 2

原创 jdk源码之java集合类(四)——Map & Set

我们来看一下Map和Set这两个集合前两篇我们已经把List和Queue给看完了,这一篇之所以Map和Set一起看,主要是由于Map和Set的关系太紧密了。虽然在接口定义的时候二者并没有太紧密的联系,无非就是Map会返回关于Key的Set、Value的List以及Key-Value组合的Map.Entry的Set。但是,在二者实现类在实现的时候,尤其是Set在实现的时候,几乎就是把Map给用了...

2019-05-07 16:17:42 177

原创 jdk源码之java集合类(三)——Queue家族

上一篇文章已经介绍了List的家族,今天就来看一看另一个数据类型Queue的大家族罢!我们先看一看Queue家族的主要成员的类族结构(这里并不是所有的Queue都罗列的,不然太多了)从图中我们可以看出,除了线性集合的统一接口Collection外,Queue家族总共有四个主要接口:Queue、Deque、BlockingQueue、BlockingDeque,四个接口相互继承,构成了Q...

2019-05-05 16:11:20 377

原创 jdk源码之java集合类(二)——List家族

在一年多前我曾经简单地记录了一部分集合类源码,主要集中于ArrayList、Vector、HashMap、HashTable这几个常用常被提问的点。从这篇开始我将对集合家族的每个小家庭进行一个简单地描绘,首先我们从我们的线性表——list家族开始聊起,文章将会从浅到深一层层地直到源码解析。一.族谱上图:这里我把List家族的最主要成员全部都画进去了,来看下。 a)...

2019-04-26 14:56:34 246 1

原创 个人学习杂谈&java抽象杂谈

在时隔一年多重新开始写博客后,我翻阅了一下以往写的博客,发现了一个非常神奇的事情——我的博客可读性真的不强!这兴许是因为我在写博客的时候并不花太大的力气去组织语言,通篇写的有点流水账;但另一方面,或许是我在写博客的时候,总是只把我自身最新的理解给写下来,并不考虑读者的知识基础是否恰好可以读懂。由于我的博客是以源码阅读、设计模式等内容为主的,所以这篇文章简单谈一谈我在java的设计、抽象等方面的一点...

2019-04-25 14:08:51 256

原创 jdk源码之线程池

好久没有写博客了,今天来写一个线程池的内容。我们先来看一个简单地例子:ThreadPoolExecutor executor = (ThreadPoolExecutor) Executors.newFixedThreadPool(5);executor.execute(new Running(1));这段代码就是我们在使用线程池的时候最基本的一个使用方式了,而这里出现的几个类,Th...

2019-04-24 17:14:38 265 1

原创 jamVM阅读(一)——解析参数

学习源码,是代码技术提升的一个重要手段,在java相关的内容中,有各类框架的源码、tomcat的源码、android源码、jdk标准库的源码和jvm的源码等各种值得学习的内容。在这些内容当中,jvm的源码是唯一一种纯用c、c++完成的,因此对于很多写习惯了java的程序员来说,阅读jvm是一件不那么容易的事情,而且目前大多数的jvm源码相当冗长,不易于阅读,所以为了简单的了解jvm的运行机制,我们

2018-04-08 12:28:55 1557

原创 WEB漏洞测试(五)——SQL注入

这一篇我们讨论一下伪命题SQL注入首先简单介绍SQL注入的原理,当我们从用户界面采集文本框输入内容传到服务端,并用此内容于查询数据库的时候,在不考虑安全的情况下可能会有人使用sql语句拼接,而如果输入的是特殊的字符串,sql语句的原意就会被篡改。打比方,获取采集数据文本 account 和password,然后拼接 sql = "select * from user whe

2018-03-14 14:02:07 787

原创 WEB漏洞测试(四)——SSRF与XXE的超浅显的讨论

上一篇博客我讲了下CSRF,这一篇我们就来说下SSRF,别看这两者名字很像,但是其实差别还是有点大的。CSRF是伪造客户端的请求,为了绕开服务端的检测,在上一篇中我们运用了提交表单的方式去跳向被攻击网站的方式去伪造请求,从某种意义上说,就是A页面无法访问B服务,但是B页面可以访问B服务,于是乎A页面就访问了B页面并通过B页面去访问B服务以完成不可告人的目的。SSRF差不多也

2018-03-07 22:17:43 1447

原创 WEB漏洞测试(三)——CSRF结合XSS攻击

一.CSRF攻击首先我们来看下什么叫做CSRF攻击,CSRF是一种伪造请求访问网站的方式,我们都知道B/S架构是基于HTTP请求完成前后端的通讯的,假设我其实不是真正的网站前端而伪造请求进行访问后台,就会产生一定的危险。举例说,假设我登录A网站购买某产品,但是B网站伪造A网站购买产品的请求去访问A网站的后台接口,这就是一种CSRF的攻击了。那么问题来了,B网站实际上并没有登

2018-03-04 17:09:26 2262

原创 WEB漏洞测试(二)——HTML注入 & XSS攻击

上一篇介绍了我们安装BWAPP来完成我们的漏洞测试在BWAPP中,将HTML Injection和XSS做了非常详细的分类,那么为什么要将两个一起讲呢?归根结底,我觉得这两个分明是一个玩意,充其量是攻击的方式不一样。我们先来介绍一下这两种漏洞的原理,简单说:当用户在输入框输入内容,后台对输入内容不做处理直接添加入页面的时候,用户就可以刻意填写HTML、JavaScript脚

2018-02-28 12:41:18 29026 4

原创 WEB漏洞测试(一)——工具使用

本篇章主要讲下后续的web漏洞的测试学习中用到的主要工具——bwAPP首先下载安装:https://sourceforge.net/projects/bwapp/files/bee-box/https://sourceforge.net/projects/bwapp/files/bWAPP/分别下载虚拟机版(上面)和源码版(下面)然后解压虚拟机版,发觉有很多文件

2018-02-26 15:52:25 2218

原创 Ionic2踩坑记录(一)

首先为了兼容对Ionic尚且不了解的人,允许我对ionic做一个介绍。众所周知,在当今主流的移动应用开发中,android和ios平台采用的是完全不同的开发语言,android主流使用java和kotlin,而ios则主流OC和swift,因此在大多数移动应用开发中,不得不采用两套完全不同的代码来完成不同平台的开发。如何让ios和android能够兼容,这个问题已经困扰了很多IT开发的研究

2018-01-11 14:49:18 971 1

原创 浅读Tomcat源码(六)---webSocket

自从HTML5出现以后,webSocket机制立马引起了很多人的关注,相比起以前使用Ajax轮询的机制实现服务端数据向客户端的推送,webSocket的长连接显得更加高效实用,我们这次就来看下Tomcat中是如何实现WebSocket的服务端的。先帖一段Tomcat的webSocket实现的例子:@ServerEndpoint("/TestWebSocket")public class Te

2017-12-25 14:00:48 1356

原创 java锁机制

java的锁,相信大家都不会陌生,在前面讲集合类家族的时候提到了一个线性安全与不安全的概念,而锁这个机制,原本就是一个线性安全的保证。在众多的锁机制中,大家最熟悉的莫过于synchronize关键字,这个关键字修饰的方法、类、代码块在被某处调用时候会加上锁,除非锁解开,否则其他地方完全不能调用,这种机制我们称为悲观锁:无论不加锁存不存在线性安全的问题,都给加上锁。这样的机制无疑会产生两个...

2017-12-18 12:48:54 298

原创 浅读Tomcat源码(五)---classLoader

本文其实是个伪标题,相比起Tomcat源码,本文的主要内容在于解读java的classLoader机制对JVM有一点了解的人,应该都不会陌生java的classLoader机制了,这篇文章就着我自己学习中的一些不太理解的地方做一些分析。一.作用ClassLoader的作用是一个我一直比较苦恼的问题,因为似乎他的用法往往和Class.forName有一点点类似

2017-12-04 11:03:05 242 1

原创 java观察者模式

在G4的设计模式一书中,观察者模式是一种相对比较难以理解的模式,之所以难以理解,主要是由于单独看类图很难了解观察者和被观察者之间的通知关系。许多设计模式的书本在观察者模式这一章都是讲了一些开源框架中的观察者模式实现以方便读者理解,这篇文章我就以JDK源码中util包的Observable为主来简单说明下观察者模式。既然要来讲解,首先我们要知道怎么使用,首先设计一个类继承Observabl...

2017-11-27 13:43:02 185

原创 jdk源码之java集合类(一)

在jdk源码中有一个非常庞大的集合类大家族,在上一篇讲到工厂模式的时候介绍了一下其中的迭代器,今天就来简单了解下集合大家族首先先来看下网上摘下来的一张图:从这个类族结构中就可以看出整个集合类族的全貌了,现在我们来看下在源码中的设计。Collection是线性表集合类族的根接口,它定义了集合类的最基本操作,如上一篇讲到的迭代遍历等等,而Collection中有两个非常重要的...

2017-11-23 16:37:35 373

原创 工厂模式杂谈&java的迭代器

在java开发中,创建并初始化对象是再平常不过的一件事了,大部分情况下,我们都会选择用new构造符去创建一个新的对象,但是在开发中我们也常常会遇到一些特殊的初始化方式,随举一例,比如在hibernate中,创建session并不是用new构造符去初始化的,往往我们会从sessionFactory实例中去获取session,而这种通过factory获取实例的初始化方式,我们称为工厂模式。事...

2017-11-20 12:54:31 324

原创 JDBC源码分析&桥接模式

JDBC对于java的开发人员来说并不陌生,它封装了ODBC,简化了java连接数据库的开发,本文我从部分JDBC的源码入手来阐述一下JDBC。桥接模式是由Gang of four整理的23种设计模式中的一种,JDBC是桥接模式一个典型的例子。了解JDBC源码,能让我们更好地理解桥接模式的意图和实现;了解桥接模式,能让我们更清楚JDBC设计的优越之处。首先我们先来看下桥接模式的意图,它旨...

2017-11-16 10:29:18 2768 1

原创 javaScript----一切皆为对象

在现代网络应用的开发中,JavaScript可以说是一门无可替代的语言(即使是新型语言typescript也需要编译成为JavaScript才可以运行),无论web前端、移动端、甚至服务端都需要用到JavaScript,这篇文章就着JavaScript的一些特性做一些整理。作为一个java出身的开发人员,我第一次接触js是由于ionic框架的研究,当时我有一种“哇塞,这个世上居然有那么

2017-11-13 15:49:34 343

原创 浅读Tomcat源码(四)---session、servletContext、listener浅析

前面两篇简述了Tomcat的启动和请求处理,这篇我们来看一些平时使用中的细节用法一.sessionsession对于web开发人员应该不会陌生了,session和cookie一个存储在服务端一个存储在客户端,我们来看下tomcat是如何实现session的。建议大家认真读一下我在第一篇中发的几个链接,尤其是http://blog.csdn.net/beliefer/articl

2017-11-07 10:21:37 453

原创 浅读Tomcat源码(三)---请求处理

在上一篇中,我们讲述了Tomcat在启动之初所做的事情,我们简单罗列回顾一下1)依次开启组件,其中较为核心的是开启Connector的serverSocket,并等待请求2)开新线程初始化容器,补充一点,之所以要开启新线程而不在主线程完成,个人理解核心原因是为了在Tomcat运行过程中可以直接添加新的应用3)开启等待关闭线程,等待Tomcat的关闭指令这一篇我们将着重讲解T

2017-11-03 12:57:25 386

原创 浅读Tomcat源码(二)---启动过程

上一篇我们讲了Tomcat源码包的下载配置以及Tomcat组件的基本介绍,这一篇我们着重来讲述Tomcat的完整启动过程。众所周知,Tomcat的启动和停止是有startup.sh/bat和shutdown.sh/bat来控制的,这里sh是linux的shellScript脚本,其运行的模式是调用catalina.sh,并传入参数startup或shutdown,具体就不做详述了,而c

2017-11-02 09:08:55 350

原创 浅读Tomcat源码(一)---大体结构

Tomcat,对于所有的java开发人员都是不会陌生的东西,实现了J2EE规范的HTTP容器,出于好奇或者说出于对底层实现的了解,最近在读Tomcat的源码,下面就开始一起来读一下这段代码吧。首先列举出我在阅读过程中的一些主要参考:http://blog.csdn.net/beliefer/article/category/6154740http://blog.csdn.net/x87

2017-11-02 08:22:45 229

原创 关于跨域访问的扯淡

在web应用开发的过程中,难免遇到跨域访问的问题:关于跨域访问,网上也有人总结出了7/8种不同的解决方案,这里我简单整理一下我自己尝试过的解决方案。首先要说明一下跨域访问这个东西到底是怎么一回事情,简单的说大致是这样的。由于在web前端开发的时候,大部分的本地数据存储在cookie里面,但是浏览器的cookie基本上是没有任何沙箱措施的,也就是说某台电脑的浏

2017-10-08 11:57:18 244

空空如也

空空如也

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

TA关注的人

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