自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一条肥鱼的博客

同步更新:https://www.0xffff.run

原创 linux中的pushd、popd与dirs

最近在项目中,看到一些模块的启动脚本中,有一些 pushd、popd等操作。之前并没有接触过这类命令,但是目测它是与目录相关的,因为都是操作完了目录之后,才能运行启动命令。 dirs 展示目录栈。 什么是目录栈? 使用cd命令进入一个目录后,该目录会存放进以个栈中,当前目录永远位于栈顶。 dir...

2020-05-19 23:54:10 207 0

原创 JUC包下同步工具类及Condition队列

在上篇关于从ReentrantLock看JUC中AQS的这篇文章中,留下了一个非常重要的Condition模块,并未去分析。而这个模块,在实现BlockingQueue的过程中,用到了。因此特地回过头来,去补习一下关于Condition的实现与原理、以及JUC下面其他的同步工具类的使用。 Cond...

2020-04-21 10:33:02 68 0

原创 Java中的Queue之概述

对技术还是得有敬畏之心,总觉得Queue好像没啥,其实只是没有仔细去了解过。 不过自从上次认真地看了线程池的源代码之后,发现Queue是一个很神奇的集合类。Queue的形式有无界、有界,还有堵塞、非堵塞。初略想想,这个实现可能就不简单。 一个问题 在线程池中,自定义线程池时,放入什么样的队列可以...

2020-04-03 17:40:30 43 0

原创 Spring源代码学习系列②BeanPostProcessor执行时机与实现原理

这一篇主要学到了一种新的看源代码的方法。之前都是从最开始的代码开始,然后一步一步step into。这样会比较浪费时间,并且会因为代码多而容易搞混淆,抓不住重点。 这篇主要是看BeanPostProcessor的执行时机与相应的源代码,目前对于它是合适执行的,并不知道,但是可以明确的是我们继承的...

2020-04-03 00:01:40 60 0

原创 Windows常见问题解决办法汇总

在windows任务栏上显示秒 https://www.ithome.com/html/win10/288555.htm 用管理员模身份运CMD/POWERSHELL,使用下面命令,在注册表中,添加相应键值。 Reg add HKEY_CURRENT_USER\SOFTWARE\Microsoft...

2020-04-03 00:00:40 56 0

原创 Spring源代码学习系列①基础注解使用及场景概述

本来是打算按照书上面的内容,跟着看一看spring的实现。它是从XML中读取bean配置,感觉现在不怎么用XML来配置了,虽然可以跳过bean的读取,直接看bean的生命周期,但是毕竟现在基本上用注解,所以从网上找了一个直接基于注解讲解spring源码的视频。 视频内容讲解spring的AO...

2020-04-02 23:59:41 52 0

原创 Spring源代码学习系列〇源代码下载、导入与Hello World

最近确实受到一些打击,开始思考人生、也开始思考自己到底缺的是什么。决定从spring源代码开始学习,是我在思考后,作出的决定。但是同时我也不会放弃netty,等稍微有点时间了,我会继续开始netty相关的学习。 说起来很是惭愧,因为项目中每天都在用这个框架,也觉得自己大致懂spring是干什么的...

2020-04-02 23:58:23 338 0

原创 Netty源码学习系列④接收消息

有点开始怀疑人生。为什么我说不清楚netty的工作方式?博客基本上是自己一个字一个字敲出来的,也能在一定程度上说明,我当时确实是懂了,但为什么会说不出来呢?回顾了自己的博客,有些过程的细节确实忘了,但是可怕的是,我需要想半天才能想起来,有些还想不起来。我觉得方式有问题,单纯的文字记录,缺少指导性的...

2020-04-02 23:56:53 34 0

原创 Java中的线程池从精通到入门

说真的,我一直认为线程池很简单,也没去看过它的实现,大概了解过其中的原理,但是并未深入学习。一方面,了解过之后很长时间不去看,非常容易忘;另一方面,还是深入源码得到的信息才会比较深刻,还能避免背书式学习。 继承结构说明 在Executors中,有几个静态方法,预设了几个ThreadPoolEx...

2020-03-20 13:42:06 44 0

原创 如何快速确认链表上是否存在环

这个问题遇到过很多次了,但是并不是说每次都很清楚。所以这次用golang的代码来实现一遍,加深理解与记忆。 如果一个链表上不存在环,那么一定能够遍历完链表中所有的Node节点;如果存在环,那么可以想象成存在一个圆形操场。在一个圆里面,如果有两个人,行走的速度不一样,那么一定会有相遇的那一刻。最佳...

2020-03-20 13:40:49 36 0

原创 SpringCloud学习系列②Gateway从入门到出坑

说句实话,我觉得Spring Cloud Gateway看起来很牛逼。首先是因为zuul的难产,颇有一种谁行谁上的感觉;再一个是WebFlux的加持,瞬间逼格就上去了。但是感觉苦逼的又回到了原点,因为WebFlux看简介是说基于Netty来实现的,绕来绕去又回到了Netty。 言归正传,如果只是简...

2020-03-16 12:55:24 68 0

原创 SpringCloud学习系列①OpenFeign从入门到上天

在前篇的基础上,对整个demo项目进行了重新的规划,包括模块名、包名的修改,以及对接口进行了调整,并将模块调用改成了OpenFeign,这个用起来更加方便,连RestTemplate都不需要使用即可完成调用。修改之后的demo项目整体架构如下: . ├── module01 │ ├── mod...

2020-03-14 18:16:17 139 0

原创 SpringCloud学习系列〇nacos从入门到出门

nacos可提供动态服务发现、服务配置、服务元数据及流量管理。 nacos集群搭建 下载nacos:https://github.com/alibaba/nacos/releases/download/1.2.0/nacos-server-1.2.0.zip 解压 修改startup....

2020-03-12 23:39:20 37 2

原创 Netty源码学习系列③新连接的建立

当服务端启动好了之后,也就是说,服务端已经在执行NioEventLoop的一个死循环方法run()中,一直轮询事件,并且此时的监听的事件为OP_ACCEPT。如果有新连接接入,那么首先会在上述的run()方法中触发… 收到新的连接 首先,服务端启动好了之后,会进入等待事件的状态,也就是调用JDK...

2020-03-11 23:03:01 29 0

原创 Netty源码学习系列②服务端启动

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0NyPUqhT-1582826341444)(https://netty.io/images/logo.png)] 目前对于Netty的理解是:一套完善了Java NIO操作的框架,因为Netty的最底层还是调用jd...

2020-02-28 02:00:04 63 0

原创 Netty源码学习系列①JavaNIO概览

在正式开始Netty相关的学习之前,我决定还是要先回顾一下Java NIO,至少要对Java NIO相关的概念有一个了解,如Channel、ByteBuffer、Selector等。要自己动手写一写相关的demo实例、并且要尽可能地去了解其后面是如何实现的,也就是稍微看看相关jdk的源代码。 J...

2020-02-18 22:08:57 49 0

原创 Netty源码学习系列0️⃣源代码导入IDEA

Netty源代码导入IDEA时需要注意的地方 操作系统 64位 版本问题 官网上面说可以用64-bit OpenJDK 8 or above 。没有尝试OpenJDK,Oracle的JDK要1.8版本的。源码里面用到了Unsafe这个类,在jdk1.8之后的版本中被移除掉了。 IDEA的...

2020-02-18 22:07:22 82 0

原创 简略记录Reactor以及与Netty之间的关系

今天是2020年2月2号,感觉是一个比较特殊的日子,今天就来一篇记录型的博客吧,哈哈 起初很好奇,到底什么叫Reactor模式,这个名词感觉特别高大上,然后看描述,虽然能看懂描述,但是却不是特别明白到底是什么意思。这个时候主要是没有形成一种直观的印象,直观的印象就是比如说苹果,再给你看个实物...

2020-02-02 23:44:17 97 0

原创 真实记录一次对项目中代码的重构过程

这份记录来自对项目中下单接口重构,详细记录了每一步操作、以及运用到的一些方法。力求能够最大程度将当时的过程展现出来。 准备 重构中的每次修改都需要进行测试,用来验证修改是否正确,因此单元测试是一个非常好的选择。 单元测试 单元测试中可以进行mock操作,从烦人的token中摆脱出来,做到在任何人...

2020-02-02 23:43:20 227 0

原创 云主机如何应对大批量的漏洞测试请求

云主机上面跑的WordPress实例被别人用各种漏洞测试工具在做测试,通过日志发现,其搜寻的漏洞内容包括:SQL注入、XSS等。由于其请求的频率过高,以致于nginx做转发出现502错误,造成了宕机的假象。 正对这种情况,想到了以下两种处理方式。 wordpress拒绝请求 由于WordPre...

2020-02-02 23:41:33 51 0

原创 简略梳理IO模型

这是一篇对IO模式知识点的简要笔记,后续会根据知识的积累与理解继续做更新。 几种常见的IO名称 最早接触的是BIO,在Java的网络编程中,有一个ServerSocket,会调用accept()方法,监听某个端口,直到有新的连接进来,代码才会继续往后执行;再到后面是NIO,一说是New IO,又...

2020-02-02 23:40:20 37 0

原创 netty中粘包与拆包的处理

TCP是个流协议,流是一串没有界限的数据。TCP会根据TCP缓冲区的实际情况对包进行划分。因此造成一个完整的业务包,会被TCP分成多个包、把多个包封装成一个大的包进行发送。 粘包与拆包现象 服务端分两次读取到了两个独立的数据包,分别是D1和D2,没有粘包和拆包; 服务端一次接收到了两个...

2020-01-19 16:03:13 54 0

原创 《图解设计模式》之简易UML类图

每一种设计模式都可以用UML类图来表示,能看懂UML类图,就能够对该设计模式有宏观上的认知和理解。 单个类里面的简单格式 以长方形表示类,长方形内部被分成3个区域,分别表示类名、属性名、方法名。 格式 含义 斜体 抽象类、抽象方法 ...

2019-12-24 21:45:40 45 0

原创 理解Servlet与Filter的关系与设计思路

什么是Servlet 对一个HTTP请求的正常的处理流程是: 发送HTTP请求 服务端的HTTP服务器收到请求 调用业务逻辑 返回HTTP响应 产生了下面3个问题: HTTP 服务器怎么知道要调用哪个业务逻辑,也就是 Java 类的哪个方法呢? HTTP服务器可以被...

2019-12-18 19:56:43 34 0

原创 docker中的wordpress添加https访问

申请证书 可以从freessl.cn免费申请。免费的SSL证书时间长度为1年,但是只能对单个域名,不支持多域名通配符,选择的话以个人需求为准。 选择浏览器生成 点击确认创建后,得到如下信息: 接下来到域名管理里面,按上述信息配置域名的信息,可以参考上面的验证配置指南,如下: 配置完了之后,不...

2019-12-16 13:14:55 262 0

原创 Spring系中常见注解用法说明

@PathVariable与@RequestParm 在spring mvc中,有@requestparm, @requestbody和@pathvariable 三种注解来获得浏览器端的参数,其中@requestparm是取自url中“?”之后的a=b&c=...

2019-12-16 09:50:43 52 0

原创 MySQL备份记录

备份 命令行下具体用法如下: mysqldump -u用戶名 -p密码 -d 数据库名 表名 > 脚本名; 导出整个数据库结构和数据 mysqldump -h localhost -uroot -p123456 database > dump.sql 导出单个数据表结构和数据...

2019-12-16 09:42:13 69 0

原创 如何用代码将博客从hexo批量迁移到wordpress

感觉"业务"有扩展,hexo不能动态添加文章有点不太适应 wordpress添加markdown支持 选择了WP Editor.md这个插件,新增post,测试markdown能够生效。 获取hexo博客的md文档 在source/_posts下有所有的markdown文件,全...

2019-12-03 15:05:47 131 0

原创 docker构建MySQL环境

安装及配置docker(基于Ubuntu) sasurai@ubuntu:~$ sudo apt install docker.io sasurai@ubuntu:~$ docker version Client: Version: 19.03.2 API version:...

2019-11-21 09:49:20 935 0

原创 HashMap源代码分析-II-扩容策略详细分析

距离写第一篇关于HashMap的笔记(CSDN链接、HEXO链接)已经有1年多了,感觉当年的分析中还是少写了些内容,现在看起来有些部分有点费劲。所以现在特地补充上现在的分析笔记,主要集中在resize()扩容这一个操作上面。 从put()方法进入,经putVal()到达resize(),开始进行...

2019-11-06 15:16:33 47 0

原创 JUC源码学习之AbstractQueuedSynchronizer

源码基于的Oracle JDK版本为:11.0.5 什么是CLH队列 简单理解是一个双向链表,链表中存放的是包含线程在内的信息,队首的是正在执行的线程,后面的是等待执行的线程,如下图所示: Node概述 The wait queue is a variant of a “CLH” (Craig...

2019-10-30 16:27:14 36 0

原创 homebrew安装过程中从github拉取仓库超时的问题解决办法

最近github上的仓库拉不下来,在mac上面安装homebrew时,也无法将安装所需的仓库拉下来。困扰了很久,找到了两种解决办法。 让git走代理 git config --global http.proxy socks5://127.0.0.1:1086 git config --global...

2019-10-22 23:38:23 401 0

原创 leetcode回溯法题目解法若干

N皇后问题 N-Queens N-Queens II import java.util.ArrayList; import java.util.List; /* * @lc app=leetcode id=51 lang=java * * [51] N-Queens */ publ...

2019-10-21 20:19:43 47 0

原创 SpringBoot启动logo配置

起始 每次打开Spring Boot的应用的main方法时,都会出现下面如下所示Spring的Logo。 之前没有注意过这个Logo的配置,直到看到一个Spring Cloud的开源示例项目时,看到了一个配置如下: 有一个问题:为什么放在classpath下且名字为banner.txt就能够配...

2019-10-21 19:27:38 192 0

原创 处理后端与Android之间WebSocket连接经常断开的情况

nginx配置ws转发 location ~ /(mq|ws)/ { proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_se...

2019-08-26 21:52:57 1688 0

原创 黑苹果主机:从硬件组装到系统安装

不知道从什么时候开始,喜欢上了苹果,成为了一个不折不扣的果粉。2017年毕业的时候,刚买小屏的iPhone SE,在此之前已经还买过一个iPhone 6s。真的是贵啊。刚工作没几个月,就去澳门买了一个MacBook Pro 2017。当时主要是觉得台式机麻烦,搬家不方便,才选择笔记本。刚开始如获至...

2019-08-23 15:38:45 10635 0

原创 使用阿里云的RocketMQ中遇到的若干问题

Python的TCP订阅模式 官方文档上面RocketMQ的Python版本只支持HTTP的GroupID,链接为:https://github.com/aliyunmq/mq-http-python-sdk。 HTTP版本的SDK看起来是以轮询的形式来获取数据的,并且在控制台上也看不到使用HTT...

2019-08-19 18:57:52 2190 0

原创 WebSocket多实例部署时的一种解决方案

需要用到k8s进行扩展,在变更容器数量的时候,希望达到不改动代码。 遇到的问题 Client与哪一个WS服务建立连接是不知道的 当需要发送WS消息时,使用URL发送给所有的WS模块不可取(一旦容器数量改变,还需要修改代码,即增加新的URL) 架构图 代码 建立连接部分 @ServerEnd...

2019-08-19 15:57:05 1253 0

原创 公司分享: PageAble分页注解在并发环境下遇到的bug

在公司的第一次分享,主要内容包括对PageAble注解的分析、bug演示、bug产生原因等

2019-07-21 16:31:48 309 0

原创 一键搭建Hexo环境

每次在一台新的电脑上进行环境搭建,都需要搜索一下才行,然而弄来弄去命令就是那么几条,这里的脚本就是用来做hexo环境的搭建。 SYS=`uname` function init { git clone git@gitlab.com:yyuyang/sasuraiu.github.io.g...

2019-07-21 16:23:32 240 0

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