DFYoung
码龄7年
关注
提问 私信
  • 博客:173,324
    173,324
    总访问量
  • 46
    原创
  • 499,474
    排名
  • 31
    粉丝

个人简介:404

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:四川省
  • 加入CSDN时间: 2018-04-22
博客简介:

dh554112075的博客

查看详细资料
个人成就
  • 获得108次点赞
  • 内容获得68次评论
  • 获得446次收藏
  • 代码片获得259次分享
创作历程
  • 8篇
    2020年
  • 37篇
    2019年
  • 1篇
    2018年
成就勋章
TA的专栏
  • 分布式
  • JAVA基础
    1篇
  • dubbo
  • nginx
    5篇
兴趣领域 设置
  • 大数据
    mysqlredis
  • 后端
    spring架构
  • 搜索
    elasticsearch
  • 服务器
    linux
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

343人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

锁的升级过程——偏向锁、轻量级锁、重量级锁

对象的内存布局对象头(Header)实例数据(Instance Data)对其填充(Padding)对象头Mark Word:存储对象的hashcode、分代年龄、锁信息等Class Metadata Address(类型指针):存储到对象类型数据的指针Array length:数组长度(数组特有)实例数据对象真正存储的有效信息,继承自父类及子类所定义的所定义的各种类型的字段内容。对齐填充起占位符的作用,对象的大小必须为8字节的整倍数,对象头部分正好为8字节的倍数(1倍或2倍)
原创
发布博客 2020.08.10 ·
733 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

跨域及跨域请求伪造详解

什么是跨域?简单来说,就是我在一个站点向另一个站点发送了请求(ajax或者链接),只要这两个站点HTTP协议、域名或是端口中有一个不一样,说明发送了跨域。由于浏览器的同域安全策略(the same-origin security policy),这种跨域请求会被禁止。eg.如下为在一个站点向另一个站点发送请求。跨域问题解决(1)@CrossOrigin:该注解有一个origins参数,可配置允许进行跨域的站点。@CrossOrigin(origins = {"http://b.com:8080
原创
发布博客 2020.07.08 ·
3298 阅读 ·
0 点赞 ·
0 评论 ·
4 收藏

session、token、jwt区别分析

1.sessionsession不是在浏览器第一次请求时创建,而是在第一次使用时创建(request.getSession())。最终创建逻辑在org.apache.catalina.connector.Request的doGetSession()方法中,如下代码可以看到,这里会让请求方设置一个cookie:JSESSIONID/* org.apache.catalina.connector.Request doGetSession() 部分代码 */Cookie cookie = Ap
原创
发布博客 2020.07.08 ·
1532 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

CAP理论的理解

CAP定理的由来CAP定理是加州伯克利分校计算机科学家埃里·布鲁尔(Eric Brewer)于1998年提出的一个假说,并在2000年的分布式计算原则研讨会上发表。在2002年,麻省理工学院的赛斯·吉尔伯特(Seth Gilbert)和南希·林奇(Nancy Lynch)又完成了布鲁尔假说的证明,使之成为一个定理,但吉尔伯特和林奇证明的布鲁尔定理比布鲁尔假说狭义。CAP定理的含义一个分布式系...
原创
发布博客 2020.04.16 ·
638 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

Java限流代码实现

常见的限流算法大致有三种:令牌桶算法漏桶算法计数器算法网上对令牌桶又细分为固定窗口计数器限流和滑动窗口计数器限流,下面将对这几种限流方式进行简单的介绍及代码实现。固定窗口计数器限流固定窗口计数器限流就是在固定时间内(如10s),只允许固定的请求数访问(如10个),超过的请求将受到限制。实现逻辑图实现代码package com.dfy.ratelimiter.core;i...
原创
发布博客 2020.04.13 ·
870 阅读 ·
1 点赞 ·
0 评论 ·
4 收藏

Spring Boot请求拦截及请求参数加解密

代码已上传至github,如遇到问题,可参照代码https://github.com/dfyang55/auth1)加密实现后台代码实现:CodecUtil这里我生成两个AES的私钥,一个只是提高SHA1加密的复杂度,另一个才是用于AES的加解密/** AES密钥长度,支持128、192、256 */private static final int AES_SECRET_KEY_LE...
原创
发布博客 2020.04.01 ·
12142 阅读 ·
2 点赞 ·
3 评论 ·
24 收藏

Java Jsoup使用详解

1.Jsoup介绍jsoup 是一款Java 的HTML解析器,可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API,可通过DOM,CSS以及类似于jQuery的操作方法来取出和操作数据。——引自百度百科对Jsoup的介绍前置引入Jsoup依赖<dependency> <groupId>org.jsoup</groupId&g...
原创
发布博客 2020.03.20 ·
6407 阅读 ·
1 点赞 ·
0 评论 ·
7 收藏

Java随机数Random解析

首先介绍一下随机数生成的概念Java随机数的核心就是种子,在Random中其实就是一个AtomicLong类型的变量。private final AtomicLong seed;随机数的生成依赖于种子,当我们通过new Random()创建一个随机数生成器,会通过计算为我们默认生成一个种子的计算值,再通过这个种子的计算值运算得出最终的种子。下面这段代码是Random默认生成种子计算值的逻辑...
原创
发布博客 2020.01.23 ·
769 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Java Nio之Selector源码分析

Pipe——单向管道Pipe使用两组Channel,SinkChannel用于发送数据,SourceChannel用于接收数据。public class PipeDemo { public static void main(String[] args) throws Exception { String msg = "Hello world!"; Pip...
原创
发布博客 2019.11.03 ·
340 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

JDK、Guava异步回调使用及源码分析

使用JDK的FutureTask实现的异步调用lCallable有返回值,和Runnable没有关系public interface Callable<V> { V call() throws Exception;}public interface Runnable { public abstract void run();}FutureTask可以认为...
原创
发布博客 2019.10.20 ·
308 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Linux安装Elasticsearch及head插件

提示:本人使用的系统:Centos7。在此之前,请确保安装了JDK,由于安装过于简单,这里不介绍了。下载Elasticsearch【Elasticsearch7.2百度云,本人使用的版本】【官网下载】1.解压tar -zxvf /usr/local/elasticsearch.tar.gz2.修改limits.confvi /etc/security/limits.conf追加如下...
原创
发布博客 2019.10.12 ·
1206 阅读 ·
1 点赞 ·
0 评论 ·
5 收藏

Java并发编程有序性详解

提示:以下内容是对《Java多线程编程实战指南》的分析与总结,有截选《实战Java高并发程序设计》。一.有序性问题程序在执行过程中,可能会进行指令重排序,重排序后的指令与原指令的顺序未必一致。二.什么是重排序?重排序是对内存访问有关操作所做的一种优化,可以在不影响单线程程序正确性的情况下提升程序性能。这里我们知道,重排序是为了优化程序的执行效率,并且在单线程下能够保证程序的正确执行。...
原创
发布博客 2019.09.28 ·
643 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

使用Keytool、OpenSSL构建HTTPS单双向认证

首先介绍下操作过程中会遇到的几种文件格式cer:是数字证书的一种编码格式。pem:OpenSSL最为常见的密钥库文件。csr:证书签发申请。p12:属于PKCS#12标准,可作为Java中的密钥库或信任库直接使用。jks:Java原生的密钥库/信任库文件提示:单向和双向认证都是经过测试的,特别是双向认证测试过很多次。如果按步骤来的话应该是没有什么问题的。使用KeyTool搭建HT...
原创
发布博客 2019.09.24 ·
878 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

Spring Data Jpa入门详解

首先创建user表CREATE TABLE `user` (`id` int(11) NOT NULL ,`username` varchar(16) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL ,`nickname` varchar(12) CHARACTER SET utf8 COLLATE utf8_general_c...
原创
发布博客 2019.09.06 ·
704 阅读 ·
1 点赞 ·
0 评论 ·
3 收藏

HttpClient+定时实现页面静态化

页面静态化,就是将原本用户访问的url后的最终结果转换为静态页面 (可以是html) ,那么用户在以后的访问直接访问静态页面即可,这样就可以避免中间访问网络或是数据库的过程,从而降低了服务器压力。引入依赖 <dependencies> <dependency> <groupId>org.springframew...
原创
发布博客 2019.09.02 ·
363 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Redis持久化详解

Redis支持的持久化方式在Redis4.0版本之前,Redis支持两种持久化方式,RDB以及AOF,RDB是通过快照也就是记录所有数据的方式,后者是通过记录redis执行的修改命令的方式。从Redis4.0版本支持RDB以及AOF混合的方式,目的就是为了结合两者优点。所以下面从RDB以及AOF开始介绍。(一)RBD持久化方式该方式将内存中的所有数据生成一份副本并存储在硬盘上,这个过程即为 ...
原创
发布博客 2019.08.17 ·
192 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

浅谈虚拟机类加载过程

类的加载过程类的加载过程,主要有以下三步加载:通过ClassLoader加载class文件,生成Class对象连接:该过程分为三步,验证、准备、解析验证:主要是验证class文件的正确性与安全性准备:为类变量分配内存并设置类变量初始值解析:将常量池内的符号引用替换为直接引用初始化:执行类变量的赋值和静态初始化这里将着重介绍类的加载、以及初始化过程,而不会对连接部分做阐释。...
原创
发布博客 2019.08.14 ·
391 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

彻底弄懂快速排序

首先,用一句话介绍快速排序——选出一个基准值,用基准值将数组分为两边,左边小于基准值,右边大于基准值,然后又将左边和右边进行同样的操作,直到整个数组有序。下面用易于理解的方式阐释一下快速排序的大致步骤:这里将小的这边称为(左派),大的这边称为(右派)选择一个基准值(一般是第一个元素) (左派的担保)右派自右向左找一个数小于基准数,然后交给左派 (借给左派)左派自左向右找一个数,交给右...
原创
发布博客 2019.09.14 ·
551 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

使用RateLimiter限流(AOP + 注解实现)

注意:这里不会对RateLimiter做介绍引入依赖 <!-- guava --> <dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> ...
原创
发布博客 2019.06.25 ·
2424 阅读 ·
1 点赞 ·
1 评论 ·
8 收藏

Java防XSS攻击实现(AOP+注解+反射)

本文使用JSP验证效果引人依赖 <!-- springboot-aop --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-...
原创
发布博客 2019.06.21 ·
2803 阅读 ·
2 点赞 ·
2 评论 ·
20 收藏
加载更多