AbstractQueuedSynchronizer简称AQS是Java大部分Lock、Semaphore、CountDownLatch等公共依赖框架,实现依赖于先进先出(FIFO)等待队列的阻塞锁。读懂它的代码原理有利我们去理解Java Lock衍生类原理,帮组我们开发自定义Lock。 主要原理由 ...
线程池ThreadPoolExecutor 了解
常用线程池类型Java通过Executors静态方法创建4种不同类型线程池。 newSingleThreadExecutor 创建单例的线程池,保证执行任务顺序,超出线程任务将会在任务中等待,所有的任务都按照FIFO队列顺序执行。 newFixedThreadPool 创建一个固定大小的线程组,指 ...
Ubuntu 安装MySQL
使用命令源方式安装首先更新软件源链接,获取最新软件 sudo apt update 安装mariadb 就是MySQL 社区版本 sudo apt install -y mariadb-server 数据库第一次设置刚刚安装MySQL并没有设置root密码,访问权限,需要运行安全脚本 mys ...
HashMap源码解析
以后面试官问你HashMap原理,不能再答数组+链表的结构了,JDK1.8 添加了红黑树结构,知识要与时俱进啊。受限于文章篇幅,我会从HashMap 初始化,put、get、remove方面解析底层原理。 内部设定常量设定/** * HashMap 默认初始化长度 */static final ...
Openresty Lua实现文件上传
有好久没有写过博客了,已经记不清上次发博客是什么时候了。去年到现在经历很多事,尝试了好多新事物,变化也挺多的。一次偶然机会了解到lua这门新语言,自己简单实现文件上传功能。 上传代码思路: 根据上传URL来命名文件,使用OpenResty resty.upload模块获取上传文件,调用lua原生 ...
Spring使用xml启动源码解析
工程准备 引入Spring最小依赖 <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <spring.version>5.1.8.RELEAS ...
npm全局安装权限不足
之前在自己学习ubuntu电脑上搭建一个hexo博客时,发现npm install -g hexo-cli居然出现 ting@whtll:~$ npm install -g hexo-clinpm WARN checkPermissions Missing write access to /opt/ ...
Linux安装Nginx正确方式
如果你和我一样,作为一个苦逼的Java后台除了实现实现一大堆项目功能,还要兼顾项目的部署,运维工作。在新的服务器上安装新Nginx,在安装之前看下网上的教程,面对五花八门的教程,各式各样的安装方法,心里总会嘀咕什么方式才是最好的,或者说什么方法才是最适合自己的?下面我们一起来分析Nginx各种安装方 ...
使用nodejs实现socks5协议
作为程序员大家都接触过ss、ssr、v2ray这些工具吧,这些工具与客户端通信基本都是用socks5协议,有必要深入了解一下 #socks5 介绍 socks5s是一种网络传输协议,主要用于客户端与外网服务器之间通讯的中间传递。当防火墙后的客户端要访问外部的服务器时,就跟SOCKS代理服务器连接 ...