自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 收藏
  • 关注

原创 用原来的字母后面的第4位字母代替原来的字母(考研试题)

用原来的字母后面的第4位字母代替原来的字母。考研试题遇到的问题

2024-06-16 11:58:09 195

原创 LVS-NET模式负载均衡集群

基于CentOS 8 下的操作需求: 有10台一下的服务器,需要做负载均衡。LVS Linux Virtual System.其大致可以理解为,一家电脑组装商铺,你是个黑心老板(DS),手下有几个组装工(RS),当然他们几个的技术相当(real-server 是一致的)。因为你是个黑心老板,所以你把组装工(RS)关到小黑屋,只能工作,他们除了和老板沟通,不能与外界联系。而老板负责订单的签订和装好机器的交付。真实拓扑图:在此解释下,因为鄙人设备有限,只能开3台虚拟设备。一台作为LVS 调度服务

2022-05-13 17:45:18 445

原创 C语言基础-指针

指针指针是什么?指针(Pointer)是编程语言的一个对象,利用地址,他的值直接指向(points to)存在电脑存储器中另一个地方的值。由于通过地址能够找到所需的变量单元,可以说,地址指向该变量单元。因此,将地址形象化的称为“指针”,意思是通过它就能找到以它为地址的内存单元。指针类型指针类型决定了指针进行解引用操作的时候,能够访问空间的大小。指针类型决定了指针的步长指针的大小与系统的操作位数有关,32位/64位 4byte/8byte野指针概念:指针指向的位置是不可知的(

2022-05-02 11:23:01 741

原创 C语言基础-利用回调函数机制写万能排序函数

利用回调函数机制写万能排序函数手写万能排序的思路:假设自定义万能排序的函数名为:MyQSort使用冒泡排序;确定形参:1)因为不知道传入到MyQSort中的是那种类型的数组,所以使用void* 无类型指针类型用于接收数组的首地址。2)因为接收的是数组首地址,也不知道数组元素的数据类型,所需需要“数组的大小”和“数组元素的大小”3)需传入一个比较器。能做到万能排序的原因,这是关键点。一种数据类型对应着一个比较器,用于比较两数组元素的大小,用于排序。因为接收是数组的首元素地址,而且不知道数据类

2022-05-02 11:21:19 297

原创 C语言基础-数据的存储

数据的存储数据类型意义:①:数据类型决定了系统为其开辟内存空间的大小②:决定了系统如何解析内存中的值数据在内存中的存储方式大端字节序数据的低位保存在内存的高地址中,数据的高位保存在内存的低地址中。小端字节序数据的低位保存在内存的低地址中,数据的高位保存在内存的高地址中整型在内存中的存储char 符号类型可以存储的范围是:-128-127其中,char类型下 127+1 的结果是-128char类型下 -128 -1 的结果是 127

2022-04-29 20:08:20 1182

原创 C语言基础-隐式类型转换(整形提升)

隐式类型转换隐式类型转换C的整型算数运算总是至少以缺省类型的精度来进行的整型提升为了获得这精度,表达式中的字符和短整型操作数在使用之前被转换为普通类型,这种转换被称为整型提升。如何提升先转换成其补码,然后按照数据类型的符号来提升的(除值外,其他值补符号位值)-1 1000 0001 原码1111 1110 反码1111 1111 补码1111 1111 1111 1111 1111 1111 1111 1111 整形提升(补码)何时需要整型提升在进行short/

2022-04-29 19:28:09 1226

原创 C语言基础-运算符优先级

运算符优先级初等运算符() 函数调用操作符[] 下标引用操作符-> 结构体指针变量名->成员名. 结构体取结构体内的参数单目运算符++ 变量自增- - 变量自减& 取变量在内存中的地址sizeof() 计算变量占内存的大小! 逻辑取反(Boolean)~ 按位取反* 解引用操作符(类型) 强制转换变量类型移位运算符>> 右移操作符<< 左移操作符关系运算符> 大于< 小鱼&gt

2022-04-20 11:52:11 1244

原创 C语言基础-三子棋

game.h#ifndef _GAME_H#define _GAME_H#include<stdio.h>#include<stdlib.h>#include<windows.h>#include<time.h>#endifvoid Menu();int Input();int Game();void prints();//int* NndexInput();//int Robot_Game();game.c#d

2022-04-19 19:03:27 2469 3

原创 C语言基础-语句类型

5中语句类型表达式语句运算符表达式语句赋值语句函数调用语句复合语句流程控制语句非结构化语句限定转向语句continue;在循环体内使用表示跳过continue后的代码从循环表达式开始执行。break;在循环体中使用表示结束本次循环。return;非限定转向语句goto语句结构化语句循环语句当型for(;😉;for(表达式1;表达式2;表达式3)//表达式1只执行一次{语句;}表达式的含义:

2022-04-15 15:18:56 916

原创 C语言基础-操作符

操作符算术操作符+-*/% 浮点型运算不支持取模运算移位操作符整数在内存中以补码的方式存在正数的补码是源码负数的补码是源码的反码+1>>算术右移右边丢弃,左边补原符号位无符号类型右移右移都是“逻辑移位”有符号类型右移为“逻辑移位”右移为“算术移位”逻辑右移右边丢弃,左边补0<<左移左边丢弃(符号位不变),右边补0位操作符&位与运算(按位与)整型二进制位相同(1和

2022-04-14 22:45:09 864

原创 C语言基础-常量

字面常量 直接写出的常量:1,12.3const 修饰的常变量 const 修饰的参变量其值不能被修改语法: const 变量类型 变量名 = 值; **为什么叫常变量:** 因为const修饰的是变量,修饰后的变量其值不能被修改,但还有变量的属性。例:const int num = 20;//num = 1; //该语句会报 “语法错误”。printf("%d\n", num ); **注意:** C++和C中区别: C中,const 是

2022-04-10 12:18:14 1068 2

原创 基于centos7学习总结 -- shell脚本

shell 脚本必须要以"#!/bin.bash"开头。脚本建议内容:脚本的功能脚本的版本信息脚本的作者与联系方式脚本的版权声明方式脚本的History脚本内特殊的命令,使用【绝对路径】的方式来执行脚本运行时需要的环境变量预先声明预设置示例:#!/bin/bash# Program:# This program shows "create 2 day age,1 day age and today filename"##Creat:# 2021/1

2021-11-13 22:11:26 3203

原创 基于centos7学习总结 -- 正则表达式

正则表达式是什么?是处理字符串的方法,它以行为单位来进行字符串的处理操作,正则表达式通过一些特殊符号的辅助,可以让用户轻易地完成【查找、删除、替换】某特定字符串的处理过程。简单的来说,就是通过指定格式筛选出符合要求的内容,然后进行删除或替换。正则表达式的特殊符号之前有记录过 grep 命令的参数,现在有新增-A和-B两个选项grep [-nviauAB] [filename or stdin] -n 显示行号 -v 取反 -i 忽略大小写 -a 在二进制文件中以纯文本的形式匹配 -u

2021-11-13 21:33:28 1558

原创 基于centos7学习总结 -- shell 相关琐碎知识点

什么是shell?shell 将我们输入的命令与内核进行沟通,好让内核可以控制硬件来正确无误地工作。type [-tpa] name 查看命令是否是内置命令type [-atp] name -a 将PATH变量定义的路径中,所有包含name的命令都会列出,包括alias -t file 表示外部命令 alias 表示该命令为别名所设置的名称 builtin 表示bash内置命令 -p 如果是外部命令,打印出完整的文件名命令行快速编辑按钮变量【y=ax+b】等号左边的(y

2021-11-13 20:27:07 629

原创 基于centos7学习总结 -- vi与vim

vi与vimvi 和 vim 基本上可以分为3种模式:一般模式、编辑模式 和 命令行模式一般模式:vi 打开一个文件就直接进入一般模式了,可以使用上、下、左、右按键(k、j、h、l)移动光标,也可以进行字符或行的删除、复制、粘贴操作来处理文件内容。命令行模式:在一般模式中输入":“或”/“或”?“就可以将光标移动到最下面一行,可以使用!command来使用shell命令或直接输入vim内部命令(例如:”:set nu")编辑模式:在一般命令中使用 i、I、a、A、o、O可进入文件内容编辑模式。命令

2021-11-13 17:23:33 1111

原创 基于centos7学习总结 -- 压缩、备份

个人学习总结,多有不足之处,还望大佬多多指点。一、压缩文件什么是压缩文件?压缩文件是通过压缩技术之后,可以将他的磁盘使用量降低,从而达到降低文件容量的效果。原理:计算机存储数据时,是按照字节bety的单位大小存储,而计算机底层这用bit来存储,例如存储数字1,底层存储需要一个字节,也就是8位来存储,“00000001” 即除了有效数位1外其余7位 0 存储位则浪费掉了。压缩技术则是将这些浪费的存储位重新利用起来。gzipgzip 文件名 -c 将压缩的数据输出到屏幕上,如需要压缩文件,则需重定

2021-10-29 17:33:10 1070

原创 基于centos7学习总结 -- 文件系统相关内容

一、文件系统1.1磁盘的组成与分区:磁盘的组成:磁盘是由磁头、机械手臂、圆形碟片和主轴马达组成。扇区:是最小的存储单位,依据磁盘的设计不同,目前主要有512b与4K两种格式。柱面:将扇区组成一个圆,就是柱面。磁盘分区主要有两种格式:一种是MBR分区表,一种是GPT分区表。MBR分区表限制较多,MBR第一个扇区为boot sector,内存储的有主引导记录MBR和分区表,其中MBR占用446b,分区表仅占用64b。GPT分区表有较多的分区,支持的硬盘容量可以超过2TB。1.2文件系统1.2.

2021-10-29 16:07:58 1813

原创 对链表进行插入排序(C语言)

现有一无序链表:要求在空间复杂度为O(1)上给该链表排序。思路:借助初学链表时的头插和前插来解决。如果值为1的结点比5的节点小,则需要移动值为1的结点(插入到5的前面)因为5是头结点,所以可以头插。这样做每次都需要从头结点遍历一遍(包括自身)然后再排序,就很麻烦。所以:可以将链表分成两个链表,链表A、链表B,将头结点分割给链表A,将剩下的结点分给链表B。将链表B中的结点,依次遍历,每次遍历在链表A中插入一个结点。步骤一:拿取链表splitedList中的首元结点与链表sortedLis

2021-06-15 15:31:16 2054

原创 基于C语言,合并两个有序链表(无头结点单链表)

前两天看看视频学会了这道题的解法,但今天做又给忘了!好痛苦~~~希望看到这篇文章的小伙伴也能通过这篇文章回忆到点什么!好了,废话不多说,进入正题。合并两个链表:------ 链表a:3 -> 4 -> 5-------链表b:1 -> 1 -> 2 -> 3今天不加思考的思路:----想着为了节省内存空间,将合并的内容全都放到链表a中。先定义一个头结点,然后将头结点指向首元结点,再比较a1和b1(链表a的第一个元素简称“a1”,链表b也是,下文不做解释),如果b1

2021-06-09 19:10:03 1451

原创 复制带随机指针的链表

解题思路:为什么不能直接复制一个新链表:因为结点的指针域中不仅有直接后继,还有一个随机指针。直接的挨个复制一个新链表会导致新链表的结点中的随机指针指向原链表中的元素。如何将对应关系一并复制:在每个结点的后方克隆一个结点,然后将克隆的所有结点从新组链接成链表。随机指针通过原链表的随机指针的值指向其下一个元素即可表达。图示:值为1的结点中随机指针指向值为4的结点。 相应克隆的结点a中随机指针也应该指向d的结点。如此就可以通过在指针后克隆一个结点,通过原链表的对应关系来获得新链表之

2021-06-03 23:48:21 430 3

原创 找出数组中只出现一次、两次的数

一:找出数组中出现一次的数。思路:利用双目运算中的“按位异或”,求出数组中出现一次的数。为什么“异或”可以求出数组中出现一次的数?相信第一次听到这个方法的小伙伴和我一样惊讶?卧槽,还有这操作?让我们先了解下异或的性质:两个一位数相异或,两数不同返回1,相同返回0,也就是 0^1 = 1;1 ^ 1 = 0; 0 ^ 0 = 0;所有有下面的交换律:A ^ B = C;C ^ A = B;C ^ B = A;画图举个例子:也就是说,5 和 5 异或一下,得出的结果为0;由此就可以

2021-05-24 16:31:08 1024

原创 mysql正则表达式(基础使用)

mysql正则表达式(基础使用)正则表达式的作用是匹配文本,将一个模式(正则表达式)与一个文本串进行比较正则表达式的基础语法:select * from products where prod_name REGEXP '1000';查询结果。+---------+---------+--------------+------------+---------------------------------------+| prod_id | vend_id | prod_name | pr

2020-12-14 17:05:46 193 1

原创 SQL求众数、中值(Having)

众数众数:顾名思义就是一组数据中出现次数最多的数。现有Graduates表:Graduates表| name | income |+--------+--------+| 桑普森 | 400000 || 迈克 | 30000 || 怀特 | 20000 || 阿诺德 | 20000 || 史密斯 | 20000 || 劳伦斯 | 15000 || 哈德逊 | 15000 || 肯特 | 10000 || 贝克 | 10000 || 斯科特 |

2020-11-30 14:00:31 6813 1

原创 SQL三值逻辑和NULL

三值逻辑:真、假和“不确定值”三值逻辑和布尔型类型的区别:普通布尔类型只有true和false两个值,这种逻辑体系被称为二值逻辑。在SQL语言中还有第三个值:unknown。这种逻辑体系被称为三值逻辑数据库为什么引入三值逻辑:问题在于NULL。关系型数据库里引入了NULL,所以不得不同时引入第三个值。...

2020-11-27 14:51:43 860

原创 算术运算符和比较运算符

算术运算符mysql> SELECT product_name, sale_price, sale_price * 2 as 'sale_price_x2' from product -> ;+--------------+------------+---------------+| product_name | sale_price | sale_price_x2 |+--------------+------------+---------------+| T恤衫

2020-11-16 20:01:45 887

原创 基础查询

SELECT语句基础基本语法:SELECT <列名>,... FROM <表名>select 选取了所需要的字段名称。from 指定了选取数据的表。别名可以使用中文,使用中文时需要用双引号(")括起来 A。请注意不是单引号(’)。SELECT product_id AS "商品编号", product_name AS "商品名称", purchase_price AS "进货单价" FROM Product;常量查询:SELECT 子句中不仅可以书写列名,

2020-11-16 16:34:44 158

原创 mysql数据库和SQL

mysql基本书写规则1、每条SQL语句以“;”结尾;2、关键字不区分大小写;3、单词之间需要使用半角空格或者换行符进行分隔SQL语句中的字符串需要用“’”单引号括起来,数字则可以直接编写。表的创建创建语法:CREATE TABLE <表名>(<列名1> <数据类型> <该列所需约束>,<列名2> <数据类型> <该列所需约束>......);表的约束可以在定义列的时候定义,也可以在创建表的最后定义。

2020-11-16 14:35:22 181

原创 匿名内部类

匿名内部类的定义格式:接口名称 对象名 = new 接口名(){ //覆盖所有抽象方法;}/** 1、new代表创建对象的动作* 接口名称就是匿名内部类需要实现的哪个接口* {...}这才是匿名内部类的内容*/注意:1、匿名内部类在【创建对象】的时候,只能使用唯一的一次;如果希望多次创建对象,而且类的内容一样的话,那么就必须使用单独定义的实现类了。匿名对象,在【调用方法...

2020-03-20 21:39:53 140

原创 Interface新特性

JDK版本java7:在接口中可以定义1、常量 2、抽象方法 java8中接口中可以定义1、java7中的所有2、默认方法3、静态方法**注意**:默认方法和静态方法都是定义在接口中,且都有方法体。 默认方法可以被实现类继承,重写。 静态方法不能被继承,且只能由接口名.静态方法名调用!默认方法:主要用于接口升级,实现类会自动继承该方法静态方法调用语法格式:...

2020-03-20 18:10:29 121

原创 String常量池

常见的字符串创建方式:new String();new String(char [] arr);new String(byte [] arr);特点:字符串在效果上于一个char数组相当,但底层是一个byte数组;字符串是一个常量,创建后不可改变,但可以共享;...

2020-03-20 17:42:46 296

原创 计算机基础

命令作用cls清屏dir显示当前目录下所有的文件夹cd 绝对/相对路径切换文件夹md 文件名当前目录下名为“文件夹”的文件夹rd 文件夹删除当前目录下名为“文件夹”的文件夹(只能删除空白文件夹)ren 原文件夹名 目标文件夹名更改文件夹名称echo > a.txt创建名为“ a.txt ”的txt文档copy 路径\...

2019-12-27 19:40:37 234

原创 Zookeeper的配置及安装使用

zookeeper保证高可靠、高可用的协同服务。集中式服务,用于配置信息、名称服务,分布式同步处理。组件1、clinet向server周期性发送信息,表明自己还活着,server向client回应确认信息。client没有收到响应则自动重定向消息到其他server。2、server一个zk节点,向client提供所有服务,通知client server是alive的3、ense...

2019-06-05 14:58:58 408

原创 hadoop hbase的安装及Java api的使用

运行环境 hadoop-2.7.3.tar.gz,hbase-1.2.6-bin.tar.gz,zookeeper-3.4.8.tar.gz解压安装包tar -zxvf hbase-1.2.6-bin.tar.gz -C /root/apps/解压后在/conf下配置hbase-site.xml文件、hbase-env.sh文件和regionservers文件配置hbase-env.sh...

2019-06-02 20:29:38 278

原创 基于HA 下的hdfs java客户端编写

将linux中的core-site.xml和hdfs-site.xml放到src目录下即可package com.cjp.hdf;import java.net.URI;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop....

2019-05-27 17:56:03 131

原创 Hadoop HA测试及动态添加节点和副本数

测试1、将活跃的hadoop01进程杀死后,发现hadoop02状态被切换到avtive状态,集群正常工作;测试2、将hadoop01断电,hadoop02向hadoop01发送ssh kill -9 namenode进程,三十秒内无ssh相应,则执行shell脚本,其中无namenode工作。三十秒后集群正常工作;测试3进程中hadoop02为active,在namenode01上上传...

2019-05-27 17:35:39 411

原创 HDFS冗余数据块的自动删除

HDFS冗余数据块的自动删除在日常维护hadoop集群的过程中发现这样一种情况:某个节点由于网络故障或者DataNode进程死亡,被NameNode判定为死亡HDFS马上自动开始数据块的容错拷贝;当该节点重新添加到集群中时,由于该节点上的数据其实并没有损坏,所以造成了HDFS上某些block的备份数超过了设定的备份数通过观察发现,这些多余的数据块经过很长的一段时间才 会被完全刪除掉,那么...

2019-05-27 17:30:28 241

原创 Hadoop HA节点超时时间设置

hadoop datanode 节点超时时间设置datanode进程死亡或者网络故障造成datanode无法与namenode通信,namenode不会立即把该节点判定为死亡,要经过一段时间,这段时间暂称作超时时长。HDFS默认的超时时长为10分钟+30秒。如果定义超时时间为timeout,则超时时长的计算公式为:timeout = 2 * heartbeat.recheck.interv...

2019-05-27 17:28:23 1113

原创 实现HadooopHA中的问题:

/19/05/27 08:08:39 INFO namenode.NameNode: registered UNIX signal handlers for [TERM, HUP, INT]19/05/27 08:08:39 INFO namenode.NameNode: createNameNode [-bootstrapStandby]19/05/27 08:08:42 INFO ip...

2019-05-27 11:42:12 333

转载 基于ZooKeeper 下的 hadoop HA实现

本文内容来源于于https://blog.csdn.net/everl_1/article/details/52303011,侵权必删非HA弊端HDFS集群的分布式存储是靠namenode节点(namenode负责响应客户端请求)来实现。在非HA集群中一旦namenode宕机,虽然元数据不会丢失,但整个集群将无法对外提供服务,导致HDFS服务的可靠性不高,这在实际应用场景中显然是不可行的。H...

2019-05-27 11:40:38 534

原创 hadoop mapreduce 自定义分组实现

hadoop mapreduce 自定义分组实现任务要求:对流量日志进行流量统计,将不同省份的用户统计结果输出到不同的文件;需要自定义改造两个机制:1、改造分区的逻辑,自定义一个Partitioner类2、自定义reducer task的并发任务数;具体代码java:mapreduce 以及 主类代码:package com.cjp.areaPartitioner;impor...

2019-05-20 18:21:14 590

空空如也

空空如也

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

TA关注的人

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