自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Neo Xiao的博客

个人学习笔记

  • 博客(45)
  • 资源 (1)
  • 收藏
  • 关注

原创 druid源码学习9-总结

第一次参与一个这样的源码活动,坚持这么一段时间,看了其中的一部分。直观的感受是:这些跟平时工作的项目也没什么区别,当入职一家新公司时,需要先知道公司的业务,然后再去阅读相关项目的文档、代码。看开源代码也是一样,首先需要知道这个开源项目是为了解决什么问题,怎么设计的,解决问题的思路流程是怎么样的,阅读的时候就会很轻松。连接池也一样,只是一段公共的业务,解决了一个完整企业项目必须要解决的一系列问题:维护服务于数据库的连接、监控sql执行情况等等。为了实现解决这些问题的目标,需要用一些数据结构、设计模式去处

2022-05-20 00:06:29 134

原创 druid源码学习8-WallFilter

WallFilter是一个特殊的filter,用于监控SQL安全,避免SQL注入。具体支持程度,需要看Sql parser支持哪些数据库的sql 解析功能。spring中配置启用WallFilter时,需要先注入StatFilter开启监控、WallFilter配置各种信息、WallConfig配置拦截SQL的规则。...

2022-05-19 00:25:21 1717

原创 druid源码学习8-sqlparser3

以MySQL为例构建顺序为 Lexer -> MySqlLexer (mysql方言)-> SQLParser -> SQLExprParser -> MySqlExprParser -> SQLStatementParser -> Lexer.nextToken() (解析出一个词,每解析一个字符就要判断当前的状态)构建完以后调用parseStatementList去拿sql列表List如果不是select的话 就拿token跟定义好的com.alibab

2022-05-18 00:24:25 303

原创 druid源码学习7-sqlparser2

根据druid test中的实例调试com.alibaba.druid.sql.mysql.demo.Demo0具体的sql解析过程,参考https://www.pianshen.com/article/9885112548/,看完以后就能更好的理解这个模块的结构设计。根据这个test,可以很好的分辨出解析的核心,SQLStatementParser作为一个sql解析的核心,MySqlStatementParser继承并扩展了自己的方言,通过覆盖getExprParser()parseFlashback

2022-05-17 00:06:50 253

原创 druid源码学习6-SQL-parser

druid中sql模块提供sql的解析分析功能,sql包下有很多子模块,比较核心的是ast 抽象语法树builder 构建sql的构建器dialect 不同数据库的方言处理parser sql解析解析的入参是sql字符串,解析完成后构建成一个ast;所有的关键词都定义在sql.parser.Keywords和Token中;语法分析处理在Lexer中;每一种通用/方言的sql解析都需要继承SQLParser。...

2022-05-16 00:53:48 627

原创 druid源码学习5-DataSource中锁的运用

// 可重入锁 protected ReentrantLock lock; //非空条件变量 protected Condition notEmpty; //空条件变量 protected Condition empty; public DruidAbstractDataSo...

2022-05-15 00:51:12 212

原创 druid源码学习4-testOnBorrow、testOnReturn、testWhileIdle

看到几个test开头参数比较好奇,所以探究一下看看它们都做了些什么工作。通过研究发现下面几个参数是相关的, 默认都是FALSE,关闭# 配置A 配置用于检测连接是否正常的sqlspring.datasource.druid.validation-query='SELECT 1'# 配置B 执行上一个配置中sql的超时时间,默认不超时spring.datasource.druid.validation-query-timeout=-1# 当getConnection获取连接的时候,

2022-05-14 01:30:30 1572

原创 druid源码学习3-FilterChain

从druid的wiki中发现,druid在强调FilterChain很牛逼,所以对这部分的实现进行一个阅读分析。共有几个核心定义:Filter 定义了一些基础行为,包括初始化、销毁以及连接相关的对象。FilterAdapterFilterChain 跟Filter几乎一样,但是没有继承java.sql.WrapperFilterChainImpl 处理chain中事件的具体事件;将请求分发给下一个filter处理FilterEventAdapter 适配器的设计模式,提供了doB

2022-05-13 01:17:51 367

原创 druid源码学习2-DruidDataSource.DestroyTask

DestroyTask有两部分任务,一个是shrink,一个是removeAbandonedShrink我对shrink的理解是,当连接池的连接数量大于最小空闲连接数量的时候,通过一定的策略,将多余的连接释放。获取需要驱逐连接的数量:如果开启了phy-timeout-millis物理连接的超时时间removeAbandoned经过检索相关配置的含义,对removeAbandoned操作的理解就是将一些连接超时的异常连接进行处理,从连接池中移除。...

2022-05-12 01:04:07 222

原创 druid源码学习1-DruidDataSource相关

文章目录DruidDataSoruce是druid中的一个核心类,作为数据源管理整个连接的生命周期,包括初始化、销毁、获取等功能其中实现了几个内部类来处理任务:CreateConnectionTask和CreateConnectionThread用于创建连接池中的连接DestroyTask和DestroyConnectionThread用于销毁连接池中的连接LogStatsThread用于统计相关的处理,相关数据结构:DruidDataSourceStatValue连接使用DruidConne

2022-05-11 17:58:39 548

原创 【docker】使用jib打包镜像并推送到远程仓库

编译# 编译到本地dockermvn compile jib:dockerBuild# 打包镜像并push到hub.docker.commvn compile jib:build -Djib.to.auth.username=account -Djib.to.auth.password=passwordpom 必要配置<packaging>jar</packaging><properties> <java.version>1.8&l

2021-03-16 11:35:47 637

原创 mobx 如何删除/替换数组元素

直接类成员变量export default class XxxStore { //这种方式定义的数组 也会是一个可观察对象, //但是和使用@observable/observable()修饰的有区别 xInfoList = []; @action delInfo = (info) => { //返回id不为为info.id的数据 this.xInfoList = this.xInfoList.filter(item => item.id !== info.id); .

2020-12-20 19:00:54 1103

原创 docker MySQL修改时区

# 进入容器docker exec -it mysql8 bash# 到目标目录cd /etc/mysql# 追加到文件末尾echo "default-time-zone = '+08:00'">>my.cnf# 然后连接上mysql用select NOW(); 查看是否设置成功

2020-05-16 10:58:50 1160

原创 Mac终端输出重定向到剪切板

文章目录简介常用粘贴组合命令粘贴复制+其他组合命令简介在终端操作中有时候需要将输出直接输出到剪切板,而不是终端或者文件中,比如使用base64编码文件的时候标准输出或者重定向到文件都不太方便。使用如下命令即可# 复制base64 文件名 | pbcopy# 粘贴到终端(单独使用似乎没卵用,直接⌘+v更香),组合命令倒是挺好用pbpaste这时候再去看剪切板,base64已经存在最新的记录里了。常用粘贴组合命令注意:所有剪切板文本全都指最新的一条。# 粘贴重定向到文件流pbpast

2020-05-09 12:31:52 1543

原创 markdown还需要图床?你out了!用base64代替图床!

文章目录使用base64命令替代图床,和管理图片的麻烦,markdown本身支持base64,使用语法很简单,写上引用语法[1]:后面紧接data:image/png;base64,后面再接上base64的字符串即可,使用该图片只需要![description][1]即可。下面展示图片就是用这种方式引用,文章末尾贴上了下面图片的编码,复制即可食用。在Mac下使用brew可以安装base64,...

2020-05-07 13:39:40 9362 1

原创 根据雪花算法生成的id逆序推导创建时间的工具类

import java.util.Date;public class SnowFlakeUtil { public static void main(String[] args) { Date date = new Date(1586361600000L); System.out.println(date); System.out.p...

2020-04-27 10:03:23 4577

原创 Linux/Mac统计文件夹下的所有文件行数

find . -type f | xargs cat | wc -l

2020-04-26 20:39:02 1069

原创 spring data redis 序列化导致string多出一些奇怪的字符

问题出现的过程如下:首先使用redis-cli执行set aaa bbb然后使用spring data redis 默认的序列化器(就是不额外配置,会默认使用JdkSerializationRedisSerializer)使用RedisTemplate执行执行get查询aaa,会返回null,但是回到redis-cli发现aaa还在使用RT去创建一个 key=aaa v=qqq的kv,...

2020-04-12 22:37:02 913

原创 spring data redis使用Lettuce的离奇连接空指针异常

使用lettuce在操作redis时会出现离奇空指针异常配置如下:public LettuceConnectionFactory redisConnectionFactory() { LettuceConnectionFactory connectionFactory = new LettuceConnectionFactory( new RedisStanda...

2020-04-12 16:46:49 857

原创 硬链接

硬连接硬链接一旦建立,源文件和链接文件的任意一方修改则会同步修改。本质上是同一个文件命令:ln 参数: -i 交互模式。 -s 软链接(符号链接)。如果不加 “-s” 选项,则建立硬链接文件 -d 允许超级用户制作目录的硬链接。 -b 删除,覆盖以前建立的链接 -f:强制。如果目标文件已经存在,则删除目标文件后再建立链接文件实例我有个需求,maven的conf/setting...

2020-04-11 11:03:53 2864

原创 mac say命令转mp3

# 转mp3工具brew install lamesay Java宇宙无敌!!! -o java.aiffsay -f textfile -o tf.aifflame -m m java.aiff java.mp3

2020-04-09 18:47:52 575

原创 mac如何正确的卸载应用

无系统权限~/Application/Application~/Library~/Library/Application Support~/Library/Application Support/CrashReporter~/Library/Caches~/Library/Containers~/Library/LaunchAgents~/Library/Pref...

2020-04-04 13:18:44 158

原创 单链表逆置(golang)

反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULLtype ListNode struct { Val int Next *ListNode}递归解法```gofunc reverseList(head *ListNode) *ListNode {if...

2020-03-29 20:22:50 224

原创 彻底搞清Homebrew

文章目录安装/卸载访问加速镜像代理常用命令安装/卸载/更新/查看已安装搜索查看包信息查看依赖brew软链接带来的冲突和解决安装/卸载官网、社区# installruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"# uninstallruby -e "$(cur...

2020-03-29 13:46:28 1191 1

原创 Homebrew 更改国内阿里源

文章目录图形版文字版图形版文字版cd $(brew --repo)git remote -v# origin https://github.com/Homebrew/brew (fetch)# origin https://github.com/Homebrew/brew (push)git remote set-url origin https://mirrors.aliyun...

2020-03-25 15:46:16 834 2

原创 使用Spring Boot 发送各种格式邮件

文章目录介绍邮箱配置文本邮件html格式邮件添加附件/嵌入图片添加附件嵌入图片介绍Spring内置了JavaMailSender,引用即可,Spring-boot-starter-mail本文采用的当前最新版本 spring-boot 2.2.5邮箱配置spring: mail: host: smtp.163.com # 邮件服务器地址 username: aeg**...

2020-03-23 16:06:00 561

原创 如何正确使用starUML?

starUML如何认证?由于starUML是electron开发的(nodejs),所以源码肯定都能找到。不管是Windows用户还是OS X用户,只要找到app.asar这个文件就行了asar是一个打包工具(类似压缩工具),只需要本地安装一个nodejs,然后使用npm命令去安装一个全局的asar,就可以使用它来解压这个app.asar,如图如何更改?只需要根据上面那个图,找到lic...

2020-03-10 10:09:43 477 1

原创 Jupyter notebook服务器配置

手动配置密码jupyter notebook --generate-configWriting default config to: /root/.jupyter/jupyter_notebook_config.py# ~/.jupyter[root@root ~]# python3Python 3.6.8 (default, Aug 7 2019, 17:28:10)[GCC 4...

2020-03-05 12:21:25 373

原创 Java Runtime类的重要方法

public static Runtime getRuntime() //返回Runtime类的实例。public void exit(int status) //终止当前的虚拟机。public native int availableProcessors() //当前可用处理器数量。public void addShutdownHook(Thread hook) //注册新的钩子线程...

2020-02-07 21:28:44 304

原创 OS X 使用记录

主要终端配置,其他配置、软件安装都很easy的图形界面1. brew包管理器(需要tizi)ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"2.tizi(需要tizi。。)github ss也可以直接在百度上下其他人分享的ShadowsocksX-NG3....

2020-02-02 18:56:09 213

原创 docker基础操作+创建使用mysql nginx nginx zookeeper tomcat

文章目录1. 安装Docker2. ustc镜像3. 启动停止docker4. 命令集4.1 查看已下载镜像4.2 搜索镜像4.3 拉取镜像4.4 删除镜像4.5 查看运行状态4.6 创建与启动容器4.6.1 交互式方式创建容器4.6.2 守护式创建容器4.6.3 容器重命名4.7. 停止容器4.8 启动容器4.9 拷贝4.9.1将文件拷贝到容器内4.9.2 将容器中的文件拷贝出来4.10.0 查...

2020-01-14 20:48:07 244

原创 zookeeper权限管理的6种方案的5种...

文章目录1. 权限控制ACL(Access Control List)1.2 权限类型权限相关命令setAcl2.方案选择2.1 world方案(默认)2.2 IP方案2.3 auth方案2.4 digest方案2.5 super超级用户方案2.5.1 首先要确定超级管理员的帐号密码2.5.2 然后修改启动参数就行了1. 权限控制ACL(Access Control List)##1.1 权限...

2020-01-02 22:50:08 2022

原创 Apache Curator Zookeeper客户端,馆长VS动物园管理员??

Apache CuratorCurator(馆长) VS. ZooKeeper(动物园管理员) ??????? ???? ????????起名字真好玩。???? 我猜是要管理动物园管理员?1. 优点封装ZooKeeper client与ZooKeeper server之间的连接处理。提供了一套Fluent风格的操作API。提供ZooKeeper各种应用场景(recipe, 比如共享锁服务, 集群领导选举机制)的...

2020-01-02 22:04:56 196

原创 zookeeper配置

部署+启动#解压 win linux一样,win参数可能不同,win时beta版本tar新增的(为了侵占类unix市场?逃)tar -zxf apache-zookeeper-3.5.6-bin.tar.gz# 将conf目录中的zoo_sample.cfg配置文件改为zoo.cfgmv conf/zoo_sample.cfg conf/zoo.cfgvim conf/zoo.cfg...

2020-01-02 21:54:32 246

原创 Zookeeper源语集合(3.5.6)

文章目录Source language 源语 [(3.5.6版本)](https://zookeeper.apache.org/doc/r3.5.6/zookeeperProgrammers.html)缩写create [-s] [-e] [-c] [-t ttl] path [data] [acl]ls [-s] [-w] [-R] path 查看节点、监听节点的存在性(一次性)ls2 pa...

2019-12-30 17:47:23 548

原创 Git命令大全

Git中文文档git init 初始化,将当前目录初始化为git仓库,创建.git文件夹git remote add 仓库名(随便起) 远程仓库链接,git remote -v 远程仓库名(上一条起的),git pull 远程仓库名(同上) 分支,git add filename ,添加到跟踪git commit -m 注释,将add添加跟踪的文件提交到本地仓库(建立快照)...

2019-11-24 20:42:53 180

原创 JVM指令手册

栈和局部变量操作将常量压入栈的指令aconst_null 将null对象引用压入栈iconst_m1 将int类型常量-1压入栈iconst_0 将int类型常量0压入栈iconst_1 将int类型常量1压入操作数栈iconst_2 将int类型常量2压入栈iconst_3 将int类型常量3压入栈iconst_4 将int类型常量4压入栈iconst_5 将int类型常量5压...

2019-11-18 15:23:11 136 1

原创 来自IDEA的各种骚操作

文章目录前言视图系列高效定位查找标记前言在Mac和Win下的异同点Cmd = Ctrl本文使用Win 10视图系列Alt + 1 可调出Project面板,包含资源/目录的管理,按Esc回到代码编辑页面Alt + 2 调出favorites,显示如下信息- Alt + Shift + F 收藏函数或者代码块Alt + 4 调出Run面板显示程序运行的输出信息Alt...

2019-10-14 19:22:55 1349

原创 PageHelper分页不生效解决方案

在spring配置文件里面,我的项目是applicationContext.xml。在sqlSessionFactory的bean配置里面加上官网的配置。<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <!-- PageHelper配置 --> ...

2019-09-21 11:33:19 4495 3

原创 Servlet遇到的坑: /*和/匹配

最近做ssm的rest服务学习,Tomcat启动后一直404错误,然后jsp文件在使用形如localhost:8080/index.jsp的访问形式访问都会以文本文件的形式访问,其他任意路径都是404。经过各个方面的检索,发现是由于以下匹配规则造成,/*与/的匹配优先级问题/*属于路径匹配,可以匹配所有的请求,路径匹配的优先级仅次于精确匹配,所以/*会覆盖所有的扩展名匹配,404就是这里引...

2019-09-21 09:31:01 370

各种垃圾回收的算法与实现.pdf

包括了Python,Java,Ruby,JavaScript的各种不同实现的虚拟机的垃圾回收算法。

2019-05-19

空空如也

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

TA关注的人

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