- 博客(44)
- 收藏
- 关注
原创 【错误记录】hadoop启动时无法连接22端口
错误:hadoop001: ssh: connect to host hadoop001 port 22: Connection refused错因:sshd.service服务没有开启 | 监听端口不是 22 端口 | 监听地址不是 0.0.0.0解决办法:安装并开启 openssh 服务sudo yum -y install openssh-server openssh-clients检查 sshd.service 服务是否开启,没有开启则进行开启sudo systemctl st
2021-01-10 17:46:44
2650
2
原创 使用mysqldump命令进行线上数据库服务器的备份与恢复
数据库备份与恢复1. 使用 mysqldump 进行数据库导出使用 mysqldump 可以进行数据库中数据的导出,可以生成 sql 文件,在 shell 中执行以下命令。命令:mysqldump -h[xxx.xxx.xxx.xxx] -u[username] -P[port] -p[password] [databasename] --where='true limit 1000' > dump.sql【 username 】: 数据库登陆用户名【 password 】: 数据库登
2020-11-30 13:25:47
490
原创 【计算机网络学习笔记】加密与认证技术
加密与认证技术一、对称密钥加密体制1.1 凯撒加密思想:每个字母都用字母表中向左移动一个固定数字的字母替代。1.2 置换加密思想:按某一规则重新排列数据中的字符。二、非对称密钥加密体制非对称密钥加密算法有以下几个特征:仅仅掌握密码算法和加密密钥是极其困难地判断出解密密钥的对于绝大多数地公开密钥加密机制,公钥和私钥 以用于加密,另一个用于解密非对称密钥加密速度非常慢目前常用的加密算法是 RSA:选择两个大素数 p 和 q c(保密)。选择的值越大,RSA 越难于攻破,但是执行.
2020-08-26 14:40:23
666
原创 【MySQL学习笔记】初识 MySQL
MySQL 初识一、启动 MySQL 服务器程序1.1 Unix 中启动服务器程序mysqldmysqld 这个可执行文件可以直接启动一个服务器进程,但是这个命令不常用。mysqld_safemysqld_safe 是一个启动脚本,它会间接的调用 mysqld,而且还顺便启动了另外一个监控进程,这个监控进程在服务器进程挂了的时候,可以帮助它重启,另外,使用 mysqld_safe 启动服务器程序时,它会将服务器程序的出错信息和其他诊断信息重定向到某个文件中,产生出错日志,这样可以方便我们
2020-08-13 16:59:29
251
原创 【Redis学习笔记】底层数据结构之链表
链表Redis 使用链表作为列表的键底层实现。3.1 链表和链表节点的实现每个链表节点使用一个 adlist.h/listNode 结构来表示:typedef struct listNode{ // 前置节点 struct listNode *prev; // 后置节点 struct listNode *next; // 节点的值 void *value;}listNode;多个 listNode 可以通过 prev 和 next 指针组成双端链
2020-07-03 00:12:55
162
原创 【Redis学习笔记】字符串底层数据结构SDS
二、简单动态字符串2.1 SDS 的定义SDS 是【简单动态字符串】,其结构如下:free 属性值为 0,表示这个 SDS 没有分配任何未使用的空间。len 属性值为 5,表示这个 SDS 保存了一个五字节长的字符串(’\0’不包括在内)。buf 属性是一个 char 类型的数组,保存数据,最后一个字节保存了空字符 ‘\0’。2.2 SDS 与 C 字符串的区别2.2.1 常数复杂度获取字符串长度因为 C 字符串并不记录自身的长度信息,所以为了获取一个 C 字符串的长度,程序必须遍历整
2020-07-02 00:34:01
397
原创 【Java多线程学习笔记三】线程间通信
3. 线程间通信技术点:使用 wait/notify 实现线程间的通信生产者/消费者模式的实现方法 join 的使用ThreadLocal 类的使用3.1 等待/通知机制3.1.1 不使用等待/通知机制实现线程间通信通过 while(true) 不断轮询,实现线程间通信。缺点:如果轮询的时间间隔很小,更浪费 CPU 资源;如果轮询的时间间隔很大,有可能会取不到想要的数据,所以就需要有一种机制来实现减小 CPU 的资源浪费,而且还可以实现多个线程间通信,他就是【wait/notify】机
2020-06-14 23:45:16
190
原创 【leetcode-107】二叉树的层序遍历II
**给定一个二叉树,返回其节点值自底向上的层次遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历) **例如,给出二叉树:[3,9,20,null,null,15,7] 3/\ 9 20 / \ 15 7返回的层次遍历结果:[ [15, 7], [9, 20], [3],]来源:leetcode - 106知识点:队列:先进先出BFS:采用队列保存节点简要思路:不断向队列中添加节点,进队,出队,直到树中所有的节点都.
2020-06-13 21:51:22
184
1
原创 【leetcode-102】二叉树的层序遍历
**给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。 **例如,给出二叉树:[3,9,20,null,null,15,7] 3/\ 9 20 / \ 15 7返回的层次遍历结果:[ [3], [9, 20], [15, 7],]来源:leetcode - 106知识点:队列:先进先出BFS:采用队列保存节点简要思路:不断向队列中添加节点,进队,出队,直到树中所有的节点都遍历完。详细思.
2020-06-13 21:36:12
157
原创 【leetcode-106】从后序与中序遍历序列构造二叉树
根据一棵树的中序遍历与后序遍历构造二叉树例如,给出中序遍历 inorder = [9,3,15,20,7]后序遍历 postorder = [9,15,7,20,3]返回如下的二叉树: 3/\ 9 20 / \ 15 7来源:leetcode - 106知识点:后序遍历:[ [ 左子树的前序遍历结果 ],[ 右子树的前序遍历结果 ],根节点]中序遍历:[[ 左子树的遍历结果 ],根节点,[ 右子树的中序遍历结果 ]]简要思路:先根据后序遍历.
2020-06-13 15:06:35
240
原创 【leetcode-105】从前序与中序遍历序列构造二叉树
根据一棵树的前序遍历与中序遍历构造二叉树例如,给出前序遍历 preorder = [3,9,20,15,7]**中序遍历 inorder = [9,3,15,20,7] **返回如下的二叉树: 3/ 9 20 / 15 7来源:leetcode - 105知识点:前序遍历:[ 根节点,[ 左子树的前序遍历结果 ],[ 右子树的前序遍历结果 ]]中序遍历:[[ 左子树的遍历结果 ],根节点,[ 右子树的中序遍历结果 ]]简要思路:先根据前序遍.
2020-06-13 14:56:53
193
原创 【算法】二叉树前中后序遍历 - 迭代版
二叉树遍历有前、中、后序遍历三种,用递归法解决没什么意思,解题过程中会忽略很多的东西,下面我们用栈模拟这个递归的过程。前序遍历遍历流程:根 -> 左 -> 右public static List<Integer> preorderTraversal(TreeNode root){ List<Integer> res = new LinkedList<>(); if(root == null){
2020-06-11 11:58:06
191
原创 【leetcode-96】不同的二叉搜索树
给定一个整数 n,求以 1 … n 为节点组成的二叉搜索树有多少种?来源:leetcode知识点:卡特兰数:卡特兰树是满足 Cn+1=C0Cn+C1Cn−1+...+CnC0C_{n+1} = C_0C_n + C_1C_{n-1} + ... + C_{n}C_{0}Cn+1=C0Cn+C1Cn−1+...+CnC0 递推关系的数。简要思路:通过计算卡特兰数可得到答案。代码:class Solution { public int numTrees(int n) {.
2020-06-05 11:03:30
124
原创 【Java多线程学习笔记二】对象及变量的访问控制
2. 对象及变量的并发访问2.1 synchronized 同步方法【非线程安全】其实会在多个线程对同一个对象中的实例变量进行并发访问时发生,产生的后果就是【脏读】,也就是取到的数据其实是被更改过的,而【线程安全】就是以获得的实例变量的值是经过同步处理的,不会出现脏读的现象。2.1.1 方法内的变量为线程安全非线程安全问题存在于【实例变量】中,如果是方法内部的私有变量,则不存在非线程安全问题,所得结果也就是线程安全的了。方法中的变量不存在非线程安全的问题,永远都是线程安全的,这时方法内部的变量是私
2020-05-29 11:44:11
708
原创 TCP 如何保证可靠性与实现高效性传输
1. 概念tcp 是一种面向连接的、可靠的服务。2. tcp 如何实现可靠性服务2.1 检验和2.2 序列号2.3 确认应答确认应答就是回复 ack 应答。每当一个主机向另一个已建立连接的主机发送 tcp 报文时,响应主机就会回复一个 ack 应答,告诉发送 tcp 报文的主机下一个该发送的报文的序列号。2.4 超时重传主机 A 每开始给 主机 B 发送一个 tcp 报文,tcp 便为其保留一个副本,并启动一个定时器,开始计时,等待应答方回复 ack 应答,若在定时器超时前数据未能被确认,t
2020-05-19 12:19:33
605
原创 【MySQL学习笔记】MVCC多版本并发控制
MVCC 原理1. 概念MVCC 是为了解决事务并发执行过程中所遇到的问题。2. 版本链对于使用 InnoDB 存储索引的表来说,它的聚簇索引记录中都包含两个必要的隐藏列,如下trx_id:每次一个事务对某条聚簇索引记录进行改动时,都会把该事务的事务 id 赋值给 trx_id 隐藏列。roll_pointer:每次一个事务对某条聚簇索引记录进行改动时,都会把旧的版本写入 undo 日志中,然后这个隐藏列就相当于一个指针,指向 insert undo,可以通过它来找到该记录修改前的信息,即记录
2020-05-19 02:08:42
197
原创 【剑指offer】判断数组是否是二叉搜索树的后序遍历结果
输入一个非空整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。来源:剑指offer知识点:后序遍历:输出顺序为左节点 - > 右节点 -> 根节点二叉搜索树特性:左子树中节点值均小于根节点,右子树中节点值均大于根节点简要思路:取出根节点,然后遍历数组,对数组中的值进行判断详细思路:这题解法我觉得很好,判断数组是否是某二叉搜索树的后序遍历的结果,根据后序遍历的特性,给定数组的最后一个节点必定是根节点.
2020-05-18 18:33:48
172
原创 【JVM学习笔记】GC算法与垃圾收集器
3.1 概述为什么要做GC当需要排查各种内存溢出,、内存泄漏问题时,当垃圾回收成为系统达到更高并发量的瓶颈时,就需要对这些 “自动化” 的技术实施必要的监控和调节。3.2 对象已死吗在堆里面存放着 Java世界中几乎所有的对象实例,垃圾收集器在对堆进行回收前,第一件事就是确定这些对象之中哪些还【存活】着,哪些已经【死去】。3.2.1 引用计数算法概述:给对象添加一个引用计数器,每当有一个地方引用它时,计数器的值就加 1;当引用失效时,计数器的值就减一;任何时刻计数器为 0 的对象就是不可能再被使
2020-05-18 12:13:09
182
原创 【JVM学习笔记】运行时数据区域
Java 虚拟机在执行Java程序的过程会把它所管理的内存划分为若干个不同的数据区域,这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则依赖着用户线程的启动和结束而建立和销毁。Java 虚拟机数据区域:方法区、堆、虚拟机栈、本地方法栈、程序计数器程序计数器程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。字节码解释器就是通过改变程序计数器的值来选取下一条需要执行的字节码指令,类似于cpu里面的程序计数器。为了线程切换后能恢复
2020-05-15 23:38:00
104
原创 【JVM学习笔记】JDK各种版本新功能
Java 1.0: Java虚拟机、Applet、AWT、Java 1. 1: JAR文件格式、JDBC、JavaBeans、RMI、内部类、反射。Java 1.2: 将Java体系拆分为3个方向,分别是面向桌面应用开发的 J2SE、面向企业开发的 J2EE、面向收集等移动终端开发的 J2ME。Java 1.3: 提供了一些类库(例如数学运算和Timer API等)。Java 1.4: 正则表达式、异常链、NIO、日志类、XML解析器、XSLT转换器等。Java 1.5: 主要在语法上面进行了改进
2020-05-14 22:53:47
113
原创 【错误记录】MyBatis无法连接数据库
错误:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)at sun.reflect.NativeConstructorAccessorImpl.newInstance(Nati
2020-05-14 09:15:38
468
原创 操作系统中的一些页面置换算法
在进程运行过程中,若其所要访问的页面不在内存,需要把它们调入内存,但内存已无空间时,就需要考虑将从内存中调出一页程序或数据送到磁盘的对换区中,这个过程需要一点的算法来确定,下面就是一些常见的页面调度算法。1. 最佳置换算法从名字我们就可以看出来,这种算法通常来说是一种理想化的算法,不可能知道被调出的页在以后的时间内都不会被访问。最佳置换算法:其所选择的被淘汰页面将是以后永不使用的,或许是在最长(未来)时间内不再被访问的页面,采用这种算法可以保证最低的缺页率,但这种算法是不实际的,因为我们无法知道一个进
2020-05-11 12:06:11
392
原创 【MySQL学习笔记】高效数据查找结构之B+树索引
数据库我们使用频率最高的,就是数据的查找了,怎么看一个查找的效果好不好呢?那当然是查找速率了,以及空间的使用。即时间和空间两个的复杂度都要低,那才称得上是一个好的数据库。谈到查找,我们最普通的想法就是遍历,一个一个找下去,把所有的数据都找完了,不就找到了吗,可是这很不 amazing,速度太慢了,数据库中记录一多,查找效率就很慢,那么MySQL是如何解决这个问题的呢?MySQL中InnoDB数...
2020-05-06 01:19:50
542
原创 网络编程之基本TCP套接口函数解析
在介绍 tcp 套接口相关函数之前,我们先看一下客户端-服务端 tcp 连接全过程。以上的过程有助于我们理解下面的函数,以下的函数均对应上述过程中的操作socket 函数int socket(int family, int type, int protocol);函数功能:指定期望的通信协议类型,产生一个监听套接字。参数:family:指明协议族,取值可以为AF_INET(IP...
2020-05-04 02:20:22
1194
原创 leetcode数据库刷题思路题解
leetcode 175:组合两个表本题考点是表连接操作,表连接操作包括左连接、右连接、内连接三种。图片来源于leetcode yyq代码如下:select FirstName, LastName, City, State from Person left join Address on Person.PersonId = Address.PersonId;leetc...
2020-05-03 02:20:07
223
原创 【MySQL学习笔记】InnoDB表空间深度探究
页面类型InnoDB是以页为单位管理存储空间的,聚簇索引和其他的二级索引都是以B+树的形式存放到表空间的,B+树的数据项就是数据页。页面数据结构任何类型的页都包含以下两个部分:File Header:占用38个字节,记录页面的一些通用信息File Trailer:占用8个字节,校验页是否完整,保证从内存到磁盘刷新时内容的一致性biao表空间中的每一个页都对应着一个页号,也就是FIL...
2020-05-03 01:42:19
195
1
原创 Python数据结构之dict底层细究
作为一个易用好使的数据结构 — 字典,与 Java 中 HashMap 一样,充满着设计的哲学。下面我们就来详细讲述一下 dict 数据结构的底层原理一、dict 构造约束dict是由 key 和 value 组成的。其中 key 规定不能重复。如果字典键重复赋值的话,默认会取最后的赋值。键必须是可哈希的。大多数Python对象可以作为键,但它们必须是可哈希的对象。像列表和字典这样的可...
2020-05-02 02:19:11
1666
原创 【MySQL学习笔记】深入理解 redo 日志
一、什么是redo日志redo日志,也被称为重做日志,对数据库中表的操作进行记录,可以用于系统崩溃时的数据恢复。例如,某个事务将系统表空间中的第100号页面中偏移量为1000处的那个字节的值1改为了2,我们只需要记录将第0号表空间的100号⻚⾯的偏移量为1000处的值更新为2,这样我们在事务提交时,把上述内容刷新到磁盘中,即使之后系统崩溃了,重启之后只要按照上述内容记录的步骤重新更新一下数据页...
2020-04-30 22:31:13
1210
原创 Spring学习之AOP代理创建
一、AOP简介AOP(Aspect Oriented Programming),即面向切片编程。AOP采用横向抽取机制,取代了传统纵向继承体系重复性代码,主要体现在事务处理、日志管理、权限控制、异常处理等方面,使开发人员可以专注于核心业务,提高了代码的可维护性。AOP的专业术语包括Jointpoint、Pointcut、Advice、Target、Weaving、Proxy和AspectJ...
2020-02-18 19:51:31
255
原创 使用IDEA创建Spring项目HelloWorld
一、创建环境首先,创建一个Spring Project选择Spring,根据图中步骤运行,最后点击Create,选择 spring项目 所需要的jar包选择你的jar包,然后点击next常用jar包输入项目名,选择项目路径,点击Finish生成的目录结构,在src文件夹中新建cn.test.ioc包二、代码书写在cn.test.ioc包中建立UserDao接口,和其实现类Use...
2020-02-16 18:21:06
562
原创 JSTL基本操作
JSTL操作前指引使用前,需要下载jstl.jar和standard.jar包。JSTL引入<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>JSTL赋值、取值、删值<!-- var属性是变量名 value属性是值 scope是域 --><c:set var="name" va...
2020-02-11 00:32:17
314
原创 JSP实现文件的上传与下载
为了实现文件上传,我们先下载jar包。从网上下载commons-fileupload包,但这个包对另一个jar包有依赖,所以同时还得下载commons-io包。这里,推荐采用maven下载。下载完,导包,写代码。Jsp代码enctype属性设置为multipart/form-data可使表单同时上传文件和普通字段<%@ page language="java" contentTy...
2020-02-09 23:41:56
509
原创 正方验证码智能识别及教务系统模拟登录
正方验证码智能识别及教务系统模拟登录之前写了一个正方教务系统登录的程序,当时验证码使用的是手动输入,觉得太煞笔了,这种用途的脚本怎么可以让这种小小验证码拦住呢!︿( ̄︶ ̄)︿,我们要的可是完全不要人工的爬虫啊!你可知道!┑( ̄Д  ̄)┍有想法很好,我们就开始做吧!验证码数据集获取这里我从github上下载了数据集,大概五百张图片,非常感谢其提供者。数据集我放在我的源码里面了,需要的话...
2019-10-01 00:33:12
1812
3
原创 简单验证码的转灰度、二值化、切割
灰度化:在RGB模型中,如果R=G=B时,则彩色表示一种灰度颜色,其中R=G=B的值叫做灰度值,因此,灰度图像每个像素值只需一个字节存放灰度值(又称强度值、亮度值),灰度范围为0-255。二值化:二值化可以把灰度图片转换成二值图像,把大于某个临界灰度值的像素灰度设置为灰度极大值,把小于这个值的像素灰度设为灰度极小值,从而实现二值化。原始图灰度图二值化后的图我们可以看到对于这张验...
2019-09-27 15:22:33
1007
原创 Leetcode刷题笔记
1. 两数之和class Solution: def twoSum(self, nums, target): new_nums = sorted(nums) end = 0 for num in new_nums: if num == target/2 and new_nums[end+1] == target/2...
2019-09-13 16:07:56
110
原创 微信小程序云开发中的那些事
微信小程序中的那些坑儿一、权限控制微信小程序云开发数据库提供四种权限,如下所示:我们可以看到,其最大提供的权限也就是所有用户可读,仅创建者可写。当我们需要非创建者对数据库进行写操作时,就显得很无力,会出现无法修改数据库内容的情况。这时,我们可以通过云函数对数据库进行操作,云函数默认管理员权限执行,权限最高。二、新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的...
2019-08-20 16:58:06
267
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人