Tomcat架构设计图形化梳理
一、概述
概述
Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器
核心功能
Tomcat 实现 2 个核心功能:
处理 Socket 连接,负责网络字节流与 Request 和 Response 对象的转化。(连接器(Connector))
加载和管理 Servlet,以及具体处理 Request 请求。(容器(Container))
因此 Tomcat 设计了两个核心组件连接器(Connector)和容器(Container)来分别做这两件事情。连接器负责对外交流,容器负责内部处理。
二、Tomcat目录结构
2.1、一级目录详解
12345678- Tomcat - bin: 用于存放 Tomcat的启动、停止等批处理脚本和Shell脚本 - conf: 用于存放 Tomcat的相关配置文件 - lib: Tomcat服务器依赖库目录,包含 Tomcat服务器运行环境依赖lar包 - logs: Tomcat默认的日志存放路径 - temp: 存放tomcat在运行过程中产生的临时文件 - we ...
手把手教你使用hexo搭建个人博客
第一部分、搭建个人博客一、概述
不需要服务器,使用Hexo框架 + Butterfly主题 + Github,零成本搭建个人博客。
二、安装NodeJs
Hexo框架基于NodeJs开发,因此需要下载NodeJs
https://nodejs.org/en/
下载后直接一路操作即可
12345node -v # 查看版本npm -v # node自带安装了npm,查看npm版本sudo su # 切换root用户否则没有权限报错,后续一切操作,均要在root用户下操作npm install -g cnpm --registry=https://registry.npm.taobao.org # 下载cnpmcnpm -v
三、安装hexo123456mkdir blog # 新建一个目录,用于存放该项目内容cd blog # 一切操作在该目录下进行cnpm install -g hexo-cli # 安装hexo -vsudo hexo init # 初始化hexo s # 启动
四、使用hexo123456hexo n 'title.md' # ...
git与github日常使用
一、概述1.1、git
Git 是一个开源的分布式 版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。
1.2、github
GitHub是一个面向开源及私有软件项目的托管平台,因为只支持Git作为唯一的版本库格式进行托管,故名GitHub。
二、git2.1、git各个区域及工作常用命令
2.2、git常用命令2.2.1、创建123git clone https://github.com/xxx.git # 克隆远程仓库git init # 初始化本地 git 仓库(新建仓库)rm -rf .git # 已经初始化了,重新初始化,需要删掉.git文件
2.2.2、本地修改1234567git status # 查看当前版本状态(是否修改)git diff # 显示所有未添加至 index 的变更文件及内容详情git diff HEAD # 查看未commit的改动git add <path> # 将该文件添加到indexgit commit -m '描述' # 将index提交到仓库区git commit --amend -m ...
面试官:说出100个常用的Linux命令!
前几天发了面试官:说出10个常用的Linux命令!,朋友评论说让我再发10个,OK,我去特意复习总结了一下,再来“100“个!
在日常开发过程中,Linux命令是必不可少的,但是很多像我这样的新手,面对那么多的命令,很难一下记住,然后每次不知道该用啥命令,就去搜索,有时候会搜很久,很浪费时间,所以,参考和搜索了很多教程,分类总结汇总了如下常用命令,方便查询使用!
一、Linux目录结构
二、Linux常用操作
1、文件&目录操作
2、权限管理
3、查找
4、压缩包管理
5、进程管理
6、网络管理
7、用户管理
8、其他
三、Vim常用命令
一、Linux目录结构
二、Linux常用操作
1、文件&目录操作
2、权限管理
3、查找
4、压缩包管理
5、进程管理
6、网络管理
7、用户管理
8、其他
三、Vim常用命令 ...
Java招聘岗位分析
一、代码简单展示
数据获取、数据清洗、数据计算,整个流程使用python进行实现。
部分代码如下:
二、学历要求
在招聘要求中,大多要求本科及以上学历,但是也有30%的招聘要求达到专科即可。
三、薪资分布
Java开发的薪资主要分布在10-20k, 也有38%的Java开发工资在5-10k,这部分应该主要是应届或初级java岗位,随着工作经验积累,普遍能达到10-20k,较为优秀的大佬也能达到40k以上。
四、工作年限需求分布
3-10年的Java开发是职场黄金期,此时一般都具有较为丰富的开发经验,比较受招聘公司的青睐。
ps: 有人会问了,那十年以上的呢?去送外卖了吗?个人推测,现实也没有那么悲观,大多应该是10年经验转架构或者管理了,所以10年以上的纯java开发可能就会比较少了。
Mysql索引为什么采用B+树?索引为什么要自增?
1、索引作用是什么?使用什么数据结构存储?
【作用】:加快数据检索
【数据结构】:B+树
2、为什么使用B+树存储索引?B+树减少了IO操作且底层节点是所有数据的有序排列,便于范围查找,排序查找,分组查找以及去重查找
首先,索引存储是k-v格式的,即索引-行数据,那么常见可以选择的数据结构有:hash表、二叉树、B树、B+树。
【hash表】
需要很优良的hash算法避免数据散列带来的浪费空间和查询快慢不均匀,并且hash表是无序的,相当于全表扫描,但是由于hash是在内存中进行的,所以即使如此依旧很快,但是核心问题就是在内存中太消耗内存。
【二叉树】
每个节点只有2个子树,如果数据量很大的时候,那树的层级就很深,查找次数会很大,影响查询速率。
【B树】
B树相当于二叉树来说,每个节点可以有多个子树,这样就保证了层级较浅,查询效率提高,但是,由于索引数据存在磁盘,查询需要IO操作,IO操作相对内存来说是非常慢的,因此需要尽量减少IO操作次数,因此读取数据是按照磁盘块(文件系统读写数据的最小单位)读取,而Innodb中页(内存的最小存储单位。页的大小通常为磁盘块大小的 2^n 倍 ...
Python日志库logging的使用
一、创建日志配置类1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556# encoding=utf-8import loggingimport timeimport os# 创建存储日志的路径log_path = os.getcwd()class Log(object): def __init__(self): # 文件的命名 self.logname = os.path.join(log_path, '%s.log' % time.strftime('%Y_%m_%d')) # 创建日志对象 self.logger = logging.getLogger(__name__) self.logger.setLevel(logging.DEBUG) # 日志输出格式 ...
图解:https加密方式
一、概述1.1、密码学要解决的三大问题
加密、防止被窃听
验证通信人的身份
内容没有被篡改
1.2、Http的缺点
http传输信息是不加密的,因此密码学要解决的三大问题它都存在
1.3、常见加密方式
在学习HTTPS加密方式之前,有必要了解几种常见的加密方式,如:
对称加密
非对称加密
二、常见加密方式2.1、对称加密2.1.1、对称加密精要
通信双方使用同一个秘钥,进行加密解密数据
2.1.2、图解具体实现
2.1.3、优缺点
【优势】
计算量小、加密速度快、加密效率高
【弊端】
用户拿到秘钥即可随意获取和修改传输内容(不安全)
2.2、非对称加密2.2.1、非对称加密精要
传输双方均有自己的一对密钥(也就是双方每方均有:公、私密钥各一把,双方加起来共4把),使用公钥加密的只能用私钥解密,使用私钥加密的数据只能用公钥解密。
因为加密和解密使用的是两个不同的密钥,所以这种算法叫作非对称加密算法。
2.2.2、图解具体实现
2.2.3、优缺点
【优势】
比对称加密安全性高
【弊端】
传输公钥时,公钥被替换,则可以随意获取和修改传输内容
三、证 ...