自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 编译kafka3.0.0和2.8.0源代码

编译kafka3.0.0和2.8.0源代码这个过程历时5天期间遇到了无数的坑点,特此记录版本和环境ide: idea2021系统:windows10kafka版本:最初我想在本地运行kafka3.0.0版本,但是最终因为很多的问题,我的本地kafka版本定格在了2.8.0。下文中也会阐述kafka3.0版本在windows10版本上的buggit方式:https://github.com/apache/kafka下载地址:https://github.com/apache/kafka/t

2022-01-09 19:33:47 2340 1

原创 Redis学习(五)----Redis持久化

Redis持久化RDB:在指定的时间间隔内将内存中的数据集快照写入磁盘,它恢复时将快照文件直接读取到内存中

2020-07-30 21:14:20 246

原创 Redis学习(四)----Redis.conf详解

Redis.conf详解单位配置文件对大小写不敏感包含就好比spring中的import网络bind 127.0.0.1 # 绑定的ipprotected-mod yes # 保护模式port 6379 # 端口通用GENERALdaemonize yes # 是否以守护进程方式运行pidfile /var/run/redis_6379.pid # 如果以后台的方式运行,我们就需要指定一个pid文件# Specify the server verbos

2020-07-24 15:35:41 264

原创 Redis学习笔记(三)-----Redis事务

Redis事务重要 :Redis单条命令保证原子性,但是事务不保证原子性,也就是说原子性不是Redis事务的特性Redis事务本质: 一组命令的集合,一个事务所有的命令都会被序列化,会先将命令放入一个队列中,然后一次性按顺序执行,所有的命令在事务中并没有直接被执行,只有发起执行命令时才会被执行;一次性顺序性排他性Redis事务的基本使用multi:开启一个事务exec:执行事务discard:放弃事务如果命令发生了错误怎么办?这里会有两种错误类型,我们类比Java异常:编译

2020-07-22 20:22:34 220

原创 Redis学习笔记(二)-----五大数据类型

Redis入门Redis = Remote Dictionary Server 远程字典服务基础知识:Redis默认有16个数据库,默认使用的是第0个;Redis是单线程的:Redis是基于内存操作,Redis的瓶颈是机器的内存和网络带宽,cpu不是Redis性能瓶颈;Redis为什么是单线程还这么快?误区1:高性能的服务器一定是多线程的?误区2:多线程一定比单线程效率高?(cpu在进行上下文切换的时候很耗时间)核心:Redis是将所有的数据全部放在内存中,所以单线程操作效率就是最高

2020-07-21 20:09:45 238

原创 Redis学习(一)------NoSQL的发展历程

一、单机MySQL的年代90年代一个网站的访问量不会太大,单个数据库完全足够!更多使用静态网页HTML,服务器没有什么压力;但是会有以下瓶颈:数据量不会太大,数据量太大的话一个机器存不下数据的索引(B+tree),一个机器内存也放不下访问量(读写混合),一个服务器承受不了二、Memcached(缓存) + MySQL+垂直拆分(读写分离)后来服务架构变成了读写分离,多个服务器中存放相同的数据,一些用来写一些用来读;如图所示当有数据写入mysql2中时,mysql1和mysql3两台服务

2020-07-17 20:24:18 317

原创 springBoot缓存源码分析

一、springBoot与缓存1. JSR107Java Caching定义了5个核心接口,分别是CachingProvider, CacheManager,Cache, Entry 和 ExpiryCachingProvider定义了创建、配置、获取、管理和控制多个CacheManager,一个应用可以在运行期访问多个CachingProviderCacheManager定义了创建、配置、获取、管理和控制多个唯一命名的Cache,这些Cache存在于CacheManager的上下文中,一个Cac

2020-06-01 20:15:58 431

原创 数据库基本原理(持续更新)

一.概述1.什么是数据库数据库是数据的集合;是对现实中一个企业的建模;2.数据库管理系统用来存储和管理数据库的一种系统软件3.为什么要用数据库而不是文件文件:文件是操作系统提供的最简单的,最基本的存储数据的机制,文件是没有结构的,就是单纯的字符流;数据库可以通过DBMS直接进行很多操作,而文件的话只提供了简单的操作,文件只能用文件系统提供的几个函数,比如read,write当多个...

2020-04-04 14:11:50 4425 2

原创 为什么servlet设置了charset=utf-8还是乱码呢(沙雕小错误)

问题描述如下这里我已经用了resp.setContent()方法设置了字符集为utf-8然后我尝试启动Tomcat服务器打印出你好结果打印出??在F12查看响应头发现并没有设置字符集为utf-8解决这是一个书写顺序的问题:被创建的PrintWriter对象在设置utf-8字符集之前所以。。。。。再次启动服务器问题解决!!...

2019-12-16 16:08:04 984

原创 解决安装完mycli后mysql不用密码也能访问的问题

今天安装了mycli以后发现mysql不用密码就可以进了,而且还是root权限,这样很不安全,这就意味着任何人都可以访问我的数据库,都可以对我的数据库进行修改。解决方法解决方法分为三步:第一步:查看配置文件中有没有跳过密码输入的步骤配置文件都放在/etc目录下找到/mysql目录下的mysql.cnf看看里面有没有skip-grant-tables这句跳过输密码过程的语句,有的话删除没有就...

2019-12-15 15:41:53 640

原创 关于java一个程序执行的顺序

前言在Java的一个类中会有很多的东西,初始化块,静态初始化块,方法…那么在new一个类的对象的时候这些东西的初始化顺序一定有先后。先执行呢里的在执行哪里的都有说法。接下来我们用一个个小实验来证明初始化块 静态初始化块 类变量 类方法 构造器的执行顺序实验public class MainStart { public static void main(String[] args) ...

2019-12-11 16:47:30 277

原创 Java使用forEach遍历集合时删除倒数第二个元素

问题今天在学习集合的时候说在使用迭代器遍历集合的时候不能删除集合元素否则就会抛出异常;我无意中发现删除倒数第二个元素不会抛出异常import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;public class ForEachTest { public static void...

2019-11-27 16:50:38 1385 1

原创 java对于使用包装类交换两个数的误区

引言我们都知道在c语言或者c++中都有指针这个概念,所以我们在向函数中传递参数的时候可以选择传值或者传址,但是在Java中没有了指针的概念,我们在写一个方法交换两个数的时候怎么办;public class Main { public static void main(String[] args) { int a = 1; int b = 2; ...

2019-11-23 16:09:40 454

原创 记一个有趣的java题

引言前两天在知乎上看到一道很有意思的题,今天自己实践了一下,拿出来分享一下;题目很简单public boolean isO(int i);判断传进来的这个数是不是奇数并补全这个函数;这个题用c语言都是一道很简单的题;在这里更是非常简单;答案1:public boolean isOdd(int i) { if (i % 2 == 1) { return true; } els...

2019-11-18 20:38:04 199

原创 MySQL学习笔记(三)----修改数据表

修改表名MySQL通过alter table语句来实现表名的修改;ALTER TABLE <旧表名> RENAME <新表名>这里我们在演示之前先介绍一个sql语句DESC用来查看表的结构;这样就能看到我们这张表所有的信息了;这里我们要把t的名字改为t1;我们可以看到的是修改表名并不会改变表的成分;修改字段的数据类型ALTER TABLE &lt...

2019-10-23 16:06:49 293

原创 MySQL学习笔记(二)----约束

目录主键约束外键约束非空约束唯一性约束默认约束设置表自增主键约束主键:又叫主码,是表中一列或者多列的组合;主键约束:要求主键列数据唯一,且不为空;主键分为两种:一种叫单字段主键,另一种叫多字段主键;设置主键首先我们创建一个数据库名字叫try后面的数据库都用这个;然后我们添加一张数据表,创建单字段主键的方式有两种,一种是在定义列的同时定义主键,另一种是在定义好所有...

2019-10-22 21:59:55 267

原创 MySQL学习笔记(一)---数据类型

MySQL数据类型目录数值类型整数浮点数定点数位值布尔值时间/日期类型YEAR类型TIME类型DATE类型DATETIME类型TIMESTAMP类型字符串类型CHAR类型和VACHAR类型BINARY类型和VARBINCHAR类型BLOB类型和TEXT类型ENUM类型SET类型1....

2019-10-15 23:07:17 314

原创 fork()和vfork()对比详解

引言—神奇的vfork在说vfork()函数之前我们不得不说说fork()函数,它们两者都是用来创建子进程的函数,那么他们之间有什么不同,有什么相同的呢;fork与vfork定义#include <sys/types.h>#include <unistd.h>pid_t fork(void);这是一个罕见的有两个返回值的函数,调用一次,返回两次,调用成功后...

2019-10-11 16:51:52 381

原创 GTK+基本操作加图形化计算器实现

1.GTK+简介Linux下大多数的开发都是基于字符界面的,但是在Linux下也可以开发出美观大方的图形界面,其中较为常用的是Qt和GTK+;为什么我们要在这里说GTK+呢?因为GTK+使用C语言作为开发语言,GTK+是开放源代码而且免费的,简单易用,执行效率高,Linux的桌面环境GNOME就是建立在GTK+的基础上;2.GTK+的简单操作2.1.Deeping安装GTK+sudo ...

2019-10-09 19:15:43 1044 1

原创 基数排序和桶排序的c语言实现

头文件#ifndef _RadixSort_H#define _RadixSort_H#define MaxBucketLen 1000#define RADIX_10 10typedef int Bucket[MaxBucketLen];typedef unsigned int Size;typedef unsigned int MaxPos;// 获取最高位MaxPos...

2019-09-26 16:53:40 823 1

原创 Linux下任务管理的命令

1.前台和后台前台: 可以控制与执行命令的这个环境称为前台的任务;后台: 可以自动执行的任务,无法用ctrl+c终止,可使用bg,fg调用该任务;2.&符号这个符号可以直接将任务丢到后台执行;int main(){ while (1) { } return 0;}一个简单的while循环我们尝试将他丢入后台;会出现[1] 1315...

2019-09-23 20:37:40 309

原创 top命令和进程详解

引言在Linux系统下top命令是一个查看cpu使用率的一个重要的命令,今天我们就来说说这个重要的命令;top命令显示参数解析在Linux终端下输入top就会产生动态的cpu使用情况的图表,现在我们来一个一个解释上图中显示的是什么东西;top - 19:45:03 up 54 min, 1 user, load average: 0.79, 0.82, 3.17第一个时间19:45...

2019-09-17 19:36:30 1479 1

原创 Linux下对抗缓冲区溢出攻击

引言在csapp(深入理解计算机系统)一书中提到了对抗缓冲区溢出的方法,主要有三点:栈随机化栈破坏检测限制可执行代码区域今天我们主要来了解一下Linux系统是如何应对缓冲区溢出的;目录什么是缓冲区溢出缓冲区溢出带来的危害栈随机化栈破坏检测1.什么是缓冲区溢出相信大家对于缓冲区溢出都不陌生,比如一个int a[10]的数组,当我们想为第11个元素赋值时就会发生溢出...

2019-09-11 21:06:04 502

原创 指针法验证机器大小端

什么是大小端大端存储模式:数据的低位保存在内存的高地址中,数据的高位,保存在内存的低地址中。小端存储模式:数据的低位保存在内存的低地址中,数据的高位,保存在内存的高地址中。举个栗子:一个16进制的数0x01234567在内存中有大端存储和小端存储两种存储方式,在程序中0x01是数据的高位,0x67是数据的低位,分别如下图所示:大端法:数据的低位保存在高地址中小端法:数据的低位保存在低...

2019-09-02 20:22:55 303

原创 暑假项目聊天室(2)---项目分析

1.我的思路要做一个聊天室,我觉得就是要实现客户端与服务端之间的通信,也就是要在客户端和服务端之间建立连接;总的来说就是下面这幅图,来实现客户端服务器的交互,也就是最简单的cs模型;2.信息的存储和xx管理系统类似,我们用户的信息,用户的数据,用户的聊天记录什么的都需要存储起来,而且我们需要一个东西,作为用户的唯一标示,例如每个人的DNA是独一无二的,我们每个用户也需要一个独一无二的东西来...

2019-09-01 21:42:55 581

原创 暑假项目聊天室(1)---项目演示

聊天室项目功能需求介绍功能前不加*号的为必须完成的要求,加*号的为附加功能。基本要求:帐号管理:登录注册(防止重复登录、防止重复注册、不显示密码内容)密码加密找回密码好友管理:添加好友(必须通过好友同意)删除好友查看好友列表(显示好友状态)聊天通信:私聊(必须保证不在对方的黑名单里,实时显示)群聊查看聊天记录离线消息*屏蔽某人消息群管...

2019-09-01 12:13:30 404

原创 暑假项目聊天室(0)--源码

引言暑假留校结束了,暑假中最重要的一个项目聊天室,在最终的努力下还是完成了,下面就来分析一下我写的聊天室;文件main.c 服务端主函数main_cli.c 客户端主函数和客户端收发线程函数my_deal.h my_deal.c 服务端线程函数服务端菜单函数my_err.h my_err.c 错误处理函数my_friends.h my_friends.c 处理好友的函数my_g...

2019-08-31 23:09:30 672

原创 从汇编看pow函数直接用%d输出为什么会和预期不一样

以下代码都在linux 64位机下gcc编译1.问题起因之前在执行printf("%d\n", printf(2, 4))这个语句的时候他每次的输出的都不一样但是都不是我想要的值16;然后去网上查了一些资料说这么输出是0;因为pow函数的定义是double pow(double a, double b)所以会返回一个double型的数据用printf以%d打印只会取高位4字节所以会是0;...

2019-08-18 21:52:01 459 1

原创 C语言实现两个数交换

引言从一开始我们学习c语言就知道直接传两个变量的值到一个函数里面去,在函数里面去交换这两个数是不可以的;这样的操作就好比在一张复印品上面写写画画,最后在原稿上什么改变都没有;例如:void swap(int a, int b){ int temp; temp = a; a = b; b = temp;}int main(){ int a, b; a = 4; b =...

2019-08-18 20:00:48 843

原创 Linux C语言实现自己的shell命令

引言在暑假留校的第二周,我们的项目是学习进程并切实现自己的shell;关于什么是shell请大家自行百度,简单来说shell就是指一个面向用户的命令接口,表现形式就是一个可以由用户录入的界面,这个界面也可以反馈运行信息;不是目录的目录项目需求如何实现源代码1.项目需求关于进阶需求我们只讲述管道的实现,对与后面三个,全部都是调用readline这个库我们不做概述2.1有一个好...

2019-08-18 11:53:07 10793 3

原创 关于c语言操作mysql数据库的一些补充

上一篇博客我们讲了c语言如何连接使用mysql数据库;但是我发现有很多时候往往会事与愿违;今天我们来补充一些小知识;补充:关于连接数据库我们在这里就不多说了,因为这要照着上一篇博客的函数进行调用就好了;我们先来说一下什么时候函数调用成功了?1.函数什么时候会成功我们使用数据库无非就是增删改查那么我们根据什么来判断我们查询到了数据呢;例如:我们想在user_data这张数据表中查询...

2019-08-18 11:20:52 276 1

原创 什么是程序的原子性

程序的原子性1.定义程序的原子性是指:整个程序中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间的环节;原子性操作:原子性在一个操作是不可中断的,要么全部执行成功要么全部执行失败;2.举个栗子A想要从自己的帐户中转1000块钱到B的帐户里。那个从A开始转帐,到转帐结束的这一个过程,称之为一个事务。在这个事务里,要做如下操作:从A的帐户中减去1000块钱。如果A的帐户原来有...

2019-08-09 19:04:06 890

原创 C语言操作MYSQL数据库

C语言操作MYSQL数据库1.接口函数列表函数名函数作用mysql_affected_rows()返回被最新的UPDATE, DELETE或INSERT查询影响的行数。**

2019-08-04 13:55:44 2936 4

原创 mysql数据库的简单用法

MYSQL数据库的基本操作1.进入mysql数据库mysql -u root -p但是一般我不用这个进我用mycli这个其实和mysql数据库一样只不过多了补全,高亮等功能;mycli -u root2查看数据库刚进入数据库时是这个样子的我们可以使用以下命令来查看自己的数据库(注意分号是必不可少的)show databases;在这张图里面talk是我自己创建的数据库,...

2019-07-31 19:00:48 1189 2

原创 程序的局部性详解

程序的局部性1.什么是局部性一个编写良好的据算计程序往往具有良好的局部性,也就是他们倾向于引用邻近于其他最近引用过的数据项的数据项,或者最近引用过的数据项本身,这种倾向性被称为局部性原理;2.时间局部性和空间局部性2.1时间局部性在一个具有良好的时间局部性的程序中,被引用过一次的内存位置很可能在不远的将来再多次被引用;2.2空间局部性在一个具有良好的空间局部性的程序中,如果一个内存位...

2019-07-28 11:59:43 2795

原创 my_ls实现Linux shell命令ls

主要功能实现-l , -a , -R ;实现三种参数的组合调用;在任何目录下都可以使用自己的ls命令;自己的命令和系统的ls命令重定向输入到文件中去大小相差不能太多,1.25.倍以内;实现过程一些重要的函数lstat()/stat()/fstat()函数解析;opendir()函数;readdir()函数;-R与-Rl的递归调用链接文件的解析运行时的一些错误...

2019-07-26 01:00:20 832

原创 关于listen()的的第二个参数backlog

listen()第二个参数的意义listen()的定义客户端与服务器的连接listen的第二个参数实践演示1.listen的定义在Linux下listen()的定义是这样的#include <sys/type.h>#include <sys/socket.h>int listen(int fd , int backlog)listen()一般用在b...

2019-07-21 18:52:35 970 4

原创 Linux下自己写的程序如何在每个目录都可以执行

将可执行文件的绝对路径复制到bin目录下首先要进入root界面,然后进入bin目录cd /bin然后执行:cp /home/xzwb/yyf/my_ls /bin第二个参数是你的可执行文件的绝对路径;...

2019-07-20 16:37:14 1245

原创 Linux终端下没有ll命令解决方法

ll其实是ls-l的缩写,有些小伙伴可能会再输入ll后遇到bash: ll: 未找到命令其实这是因为ll命令被注释掉了用下面的命令打开配置文件sudo vim ~/.bashrc找到alias ll=’ls -l’将前面的’#'去掉就可以了...

2019-06-17 20:12:54 17217 4

原创 Xiyou_Linux兴趣小组面试题详解

Linux兴趣小组近三年面试题总结1.解释下面程序的运行结果,并总结static的用发int *func(void){ static int a = 1; a++; return &a;}int main(int argc , char *argv[]){ int *b; b =func(); printf("%d\n",*b); b = func(); pr...

2019-05-16 21:37:29 371 7

空空如也

空空如也

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

TA关注的人

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