Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick StartCreate a new post1$ hexo new "My New Post"
More info: Writing
Run server1$ hexo server
More info: Server
Generate static files1$ hexo generate
More info: Generating
Deploy to remote sites1$ hexo deploy
More info: Deployment
JVM架构图
JVM 架构图如下:
类加载器双亲委派机制
当类加载器收到加载请求
将这个类加载请求委托给父类加载器去完成,一直向上委托,直到根加载器(启动类加载器)
启动类加载器检查是否能加载这个类,能加载就结束,使用当前的类加载器,否则抛出异常(Class not found),通知子类加载器加载
重复步骤3
native使用 native 关键字修饰的 java 方法,表示已超出 java 的作用域范围,会调用 C 语言库。
进入本地方法栈
调用本地方法接口 JNI
JNI 的作用是扩展 Java 的使用,融合不同的编程语言为 Java 所用
方法区方法区被所有线程共享,所有字段和方法字节码,以及一些特殊方法,如构造函数,接口也在此定义,简单说,所有定义的方法的信息都保存在该区域,此区域属于共享区间。
参考资料:
狂神说,双亲委派机制:https://www.bilibili.com/video/BV1iJ411d7jS?p=3&spm_id_from=pageDriver
数据库三大范式
函数依赖设R(U)是属性集U上的关系式,X,Y是U的子集。
若对于 R(U) 的任意一个可能的关系 r,r中不可能存在两个元组在 X 上的属性值相等,而在 Y 的属性值上不等。
则称 X 函数确定 Y , 或 Y 函数依赖于 X ,记作 :
$$X \rightarrow Y$$
平凡函数依赖$$X \rightarrow Y , Y \subseteq X$$
即Y函数依赖于X,并且Y含于X。
非平凡函数依赖$$X \rightarrow Y , Y \not\subseteq X$$
即Y函数依赖于X,但是Y不含于X。
完全函数依赖在R(U)中,如果$$X \rightarrow Y ,且对于X的任何一个真子集X’,都有X’ \not\rightarrow Y$$则称Y对于X完全函数依赖,记作:$$X \xrightarrow F Y$$
部分函数依赖在R(U)中,如果$$X \rightarrow Y ,但是Y不完全函数依赖于X$$则称Y对X的部分函数依赖。
码候选码设K为R<U,F>中的属性或属性组合,U完全函数依赖于K,即$$K \xrightarrow F U$ ...
nginx+fdfs无work进程
问题描述:nginx 按装fastdfs-nginx-module模块后,启动nginx,然后发现有两个master进程,没有work进程。
搜索了一圈,也没发现有价值的信息。重装了几次nginx且为安装fdfs模块,这个问题依旧存在。。
查看nginx的错误日志发现,work进程因为某种原因异常退出了。
123456782021/04/02 22:20:33 [alert] 34290#0: worker process 44752 exited on signal 11 (core dumped)ngx_http_fastdfs_process_init pid=447722021/04/02 22:20:36 [alert] 34290#0: worker process 44772 exited on signal 11 (core dumped)ngx_http_fastdfs_process_init pid=447992021/04/02 22:20:40 [alert] 34290#0: worker process 44799 exited on signal 11 ...
安装FastDFS
在虚拟机上配置FastDFS下载文件在用户目录leyou下创建fdfs目录,并传到该目录以下四个文件
FastDFS_v5.08.tar.gz
fastdfs-nginx-module_v1.16.tar.gz
libevent-2.0.22-stable.tar.gz
libfastcommon-master.zip
安装以下内容安装gcc依赖
1$ yum -y install gcc
安装unzip工具,用于对压缩包进行解压
1$ yum install -y unzip zip
安装libevent
1$ yum -y install libevent
安装Nginx所需依赖
1$ yum -y install pcre pcre-devel zlib zlib-devel openssl openssl-devel
安装libfastcommon-master解压
1$ unzip libfastcommon-master.zip
在libfastcommon-master目录下使用make命令安装
1$ ./make.sh && ./make. ...
ubuntu20.04安装nginx
一、前提条件 在继续之前,保证以 sudo 用户身份登录,并且你不能运行 Apache 或者 其他处理进程在80端口和443端口。
二、安装nginx Nginx 在默认的 Ubuntu 源仓库中可用。想要安装它,运行下面的命令:
12sudo apt updatesudo apt install nginx
一旦安装完成,Nginx 将会自动被启动。你可以运行下面的命令来验证它:
1sudo systemctl status nginx
三、配置防火墙 现在你已经在你的服务器上安装和运行了 Nginx,你需要确保你的防火墙被配置好,允许流量通过 HTTP(80)和 HTTPS(443)端口。假设你正在使用UFW,你可以做的是启用 ‘Nginx Full’ profile,它包含了这两个端口:
1sudo ufw allow 'Nginx Full'
想要验证状态,输入:
1sudo ufw status
四、安装测试 想要测试你的新 Nginx 安装,在你的浏览器中打开http://YOUR_IP,你应该可以看到默认的 Nginx 加载页面。 ...
A Docker Guide for Java
参考资料:https://www.baeldung.com/docker-java-api
1.概述在这篇文章中,我们看一下另一个建立已久的平台的具体的API—-Java API Client for Docker
通过这篇文章,我们理解如何连接一个正在运行的Docker守护进程的方式,还有这个API为Java开发人员提供了什么样的重要智能。
2.Maven Dependency首先,我们需要添加一个主要的依赖到我们的pom.xml文件中:
12345<dependency> <groupId>com.github.docker-java</groupId> <artifactId>docker-java</artifactId> <version>3.0.14</version></dependency>
写这文章的时候,这个API的最新版本是3.0.14。每个发行版可以从the github release page或者 the maven repository浏览。 ...
将镜像发布到DockerHub
步骤1:在DockerHub上注册帐号。
步骤2:本地登录DockerHub帐号
docker login
步骤3:使用docker tag命令将镜像重新命令并设置版本号
docker tag命令使用方式:
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
如果要发布镜像到DockerHub,则TARGET_IMAGE的格式为 namespace/imagename。
namespace就是DockerHub的用户名
步骤4:使用命令提交镜像
docker push TARGET_IMAGE[:TAG]
Docker容器之间同步数据
首先启动一个名为docker01的容器。
然后运行下面这个命令,新建一个名为docker02的容器。
1$ docker run -it --name docker02 --volumes-from docker01 lize/centos:1.0
–volumes-from 就表示将docker01容器的数据卷同步到新建的这个容器中。
若在docker01容器内对数据卷中的内容进行修改,那么这些修改就会同步到docker02容器的数据卷内。
反过来,若在docker02容器内对数据卷中的内容进行修改,那么这些修改也会同步到docker01容器的数据卷内。
即使将docker01容器彻底删除,docker02容器内的数据卷也会依旧存在。
这个数据卷的同步机制是通过双向拷贝数据实现的,所以即使删除“父容器”后,“子容器”内的数据卷不会受影响。
等到同步数据卷的容器全部停止后,这个同步的数据卷则被删除(本地持久化后的数据不会被删除)。
Docker匿名挂载和具名挂载
总结:
-v 容器内路径 #匿名挂载
-v 卷名:容器内路径 #具名挂载
-v /宿主机路径:容器内路径 #指定路径挂载
使用数据卷挂载时通常要指定主机目录和容器内目录。
而匿名挂载是不指定主机目录,让Docker在主机生成一个目录用来完成主机目录和容器目录之间的挂载。
匿名挂载示例:-v 后面只用写容器内的目录
1$ docker run -d -P --name nginx01 -v /etc/nginx nginx
查看已挂载的卷:123456$ docker volume lsDRIVER VOLUME NAMElocal b3b5c49a7b70d051d7e6016315802e0e76e2fcf51c6f063154e6003ea4bacc64local c2e4e840333c3822a97c72237aa193a5c86117814d3d650b784a4ebde775dafclocal cout-test-vol
具名挂载示例:-v后面的 ...