自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

unwrapping的博客

码农的搬砖日常

  • 博客(53)
  • 收藏
  • 关注

原创 C语言之进制转换

在C语言中,经常使用的整数的进制有十进制、二进制、十六进制(在C语言中以0x或0X为前缀)、八进制(在C语言中以0为前缀),计算机内部使用的是二进制进行编码和存储,而其他三种进制可供程序员选择,在讲述它们之间的转换规则之前,先介绍一下这几种进制的基本概念是有必要的。对于任何一个数,我们可以用不同的进制来表示,下面所有的例子都以十进制数 57 举例,如下的程序打印出了十进制数57的不同进制的数值,可用于后续转换结果的查验。十进制转二进制、八进制、十六进制:除2取余法;

2023-12-26 23:14:52 1073

原创 3.1 C语言之控制流语句

所谓控制流语句就是用来控制程序指令执行的次序,比如,如果条件满足执行语句A,否则,执行语句B。在讲述具体的控制流语句之前,先了解一下语句和程序块是有必要的语句:在x=0、x++、printf(…)这样的表达式之后加上一个分号(;),它们就变成了语句,例如:x = 0;x++;在C语言中,分号是语句结束符。程序块:使用一对花括号{}把一组声明和语句括起来就是程序块,例如:if(a > 0) { // 程序块开始int x, y;x = 1;y = x + 2;

2023-12-23 23:44:02 1018

原创 2.5 C语言之类型转换

就需要通过一些规则把它们转换为某种共同的类型。

2023-12-23 14:59:22 912

原创 C语言之整数溢出

不难看出,当整数超过其最大值时,会重新从最小值开始计算,它就类似于我们的24小时计时制。在C语言中,如果整数超出对应类型的最大范围,会怎样呢?在我的windows操作系统中,如上程序运行结果如下。

2023-12-23 13:58:13 531

原创 2.4 C语言之运算符

中,首先计算expr1,如果其值不等于0(为真),则计算expr2的值,并以该值作为条件表达式的值,否则计算expr3的值,并以该值作为条件表达式的值。用于求a和b中的最大值,并将结果保存到z中。x >> (p + 1 - n) 将要求的n位数移到最右端,其中p+1-n就是要求的n位数的右端的没用的位数;下表总结了所有运算符的优先级与结合性,同一行中的各运算符具有相同的优先级,各行间从上往下优先级逐行降低。C语言提供了两个用于变量递增与递减的特殊运算符。~0<<n左移n位,右端的n位置0;

2023-12-14 22:41:25 173

原创 2.3 C语言之变量命名与声明

【代码】2.3 C语言之变量命名与声明。

2023-12-11 00:12:33 118

原创 2.2 C语言之常量

【代码】2.2 C语言之常量。

2023-12-10 23:14:05 95

原创 2.1 C语言之数据类型

此外,还可以在这些基本数据类型的前面加上一些限定符。char 字符型,占用一个字节。double 双精度浮点型。float 单精度浮点型。

2023-12-10 23:13:45 53

原创 1.10 C语言之外部变量与作用域

我们说,函数(不管是main函数还是其他函数)内部定义的变量,其作用范围都只在函数内部,我们把这些变量叫做自动变量或者局部变量。除了局部变量外,还可以定义位于所有函数外部的变量,也就是说,在所有函数中都可以通过变量名访问这种类型的变量。由于外部变量可以在全局范围内访问,因此,函数间可以通过外部变量交换数据,而不必使用参数表。再者,外部变量在程序执行期间一直存在,而不是像局部变量一样在函数调用完成之后消失,即使在对外部变量赋值的函数返回后,这些变量仍将保持原来的值不变。

2023-12-07 22:04:43 432

原创 1.9 C语言之字符数组

所谓字符数组,就是char类型的数组,比如 char a[],是C语言中最常用的数组类型,先看一个程序1000//最大行长度限制// 读取一行// 数组拷贝// 打印所有输入行中长度最长的行main()int len;// 当前行长度int max;// 最大长度// 保存当前输入行// 保存最长的行max = 0;max = len;return 0;// 读取一行数据到数组s中,并返回该行的长度int c, i;for (i = 0;= EOF && c!= '\n';

2023-11-26 23:13:51 90

原创 1.8 C语言之参数传递

【代码】1.8 C语言之参数传递。

2023-11-25 22:40:26 291

原创 1.7 C语言之函数概述

函数就是把一组计算操作封装起来,供程序员调用,我们只需知道其提供了什么功能,而无需关注具体实现细节(前提是其久经考验,设计没有问题,后续我们自己写的函数大概率还是要关注的)。到目前为止,我们用到的函数(printf,getchar,putchar)都是函数库中提供的函数。现在让我们自己动手编写一些函数。// 编写一个程序,求m的n次方幂main()i < 10;++i)printf("2的%d次方 = %d\n", i, power(2, i));

2023-11-25 21:50:36 248

原创 1.6 C语言之数组概述

先定义一个数组,数组总共有10个元素,用于存放0-9的出现次数,而0-9可以使用数组的下标表示。数组有下标,从0开始,可以理解为是给数组中的元素编号,便于后续寻址访问。所谓数组,就是内存中一片连续的空间,可以用来存储一组同类型的数据。我们来编写一个程序,统计所有输入中,0-9这几个数字出现的次数。

2023-11-25 21:00:17 238

原创 1.5 C语言之字符输入输出

字符文本流,是由多行字符构成的字符序列,而每行字符都由0个或多个字符组成,行末是一个换行符。标准库提供的输入输出模型,用于读取文本内容到内存中(输入),将内存中的字符写入文件中(输出)标准库提供了一次读写一个字符的功能,getchar(), putchar()main()// 从文本流中读入下一个输入字符(从键盘输入),并将其结果值返回putchar(c);// 打印变量c。

2023-11-25 16:50:04 192

原创 1.4 C语言之符号常量概述

在程序中使用像300,20等这样的等类似的“幻数”不是一个好的习惯,它们无法向阅读该程序的人提供更多有用的信息,从而使得修改程序变得困难。处理这种幻数的一种方法是赋予它们有意义的名字。#define指令可以把符号常量定义为一个特定的字符串#define 常量名 常量值300// 我们可以称UPPER为符号常量,常量名一般用大写的字母表示,便于与程序中变量区分0// 注意:#define语句的最后没有;f >= LOWER;

2023-11-23 22:31:16 204

原创 1.3 C语言之for语句概述

for语句是一种循环语句,与while语句相同for后面的括号中有三部分:第一部分 f = 0;是初始化部分,仅在进入循环前执行一次第二部分 f

2023-11-23 22:10:36 406

原创 1.2 C语言之变量与算数运算表达式概述

包含在/*与*/之间的字符序列,称之为多行注释;在//后面的字符序列,称之为单行注释;注释会被编译器忽略。在C语言中,所有变量都必须先声明后使用。声明通常放在函数起始处,在任何可执行语句之前。声明用于说明变量的属性,它由一个类型名和一个变量表组成,例如int f, c;其中int为类型名,表示整数;f,c为两个变量,放到一起就是一个变量表同上int的取值范围取决于具体的机器(这与java不同),有16位的,也有32位的,即决定给变量分配多少空间。

2023-11-23 22:10:21 321

原创 1.1 C语言之入门:使用Visual Studio Community 2022运行hello world

解决办法注意:在c语言中,一个项目可以有多个.c文件,但是只能有一个main函数至此,总算是运行成功了。

2023-11-23 22:09:21 617

原创 IntelliJ IDEA插件之Legacy Icon Pack for 2018.​2+

Legacy Icon Pack for 2018.​2+ 旧版图标包让你的IntelliJ IDEA变得花里胡哨

2020-12-11 22:09:41 503

原创 Dubbo2.7快速开始案例

项目结构规划第一步,创建根项目root用于统一管理依赖第二步,创建子模块通用api用于统一管理服务第三步,创建服务提供者provider用于提供服务实现第四步,创建服务消费者consumer用于消费服务第五步,导入依赖根pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http:

2020-11-28 17:36:32 287

原创 centos 8 Kafka 集群搭建(kafka_2.13-2.6.0)

一、准备jdk环境二、准备zookeeper集群环境三、kafka集群搭建下载解压到/opt目录$ cd /opt$ wget https://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.6.0/kafka_2.13-2.6.0.tgz$ tar -zxvf kafka_2.13-2.6.0.tgz$ cd kafka_2.13-2.6.0/config修改配置:主要修改server.properties中以下三个配置项,三台机器对应的br

2020-11-08 11:14:18 636

原创 centos 8 安装 mysql 8.0.22

第一步、去官网下载RPM软件包下载链接:https://dev.mysql.com/downloads/mysql/总共下载5个RPM包第二步、查看是否有安装过mysql[root@localhost opt]# rpm -qa |grep mysql# 如果有,就强制卸载[root@localhost opt]# rpm -e --nodeps foo.rpm 第三步、上传下载好的5个包到linux的opt目录下第四步、按照依赖次序,依次安装$ rpm -ivh mysql-com

2020-11-04 02:16:24 693 1

原创 ArrayList源码剖析(jdk1.8)

类图public class ArrayList<E> extends AbstractList<E>implements List<E>, RandomAccess, Cloneable,java.io.Serializable属性private static final long serialVersionUID = 8683452581122892189L; /** * Default initial capacity.

2020-10-31 19:28:12 134

原创 Redis实现乐观锁

一、什么是乐观锁首先看一个问题:有一个秒杀系统,库存中的商品剩余数量为countcase1:假设用户A先抢到一件,下单,那么库存count减一,没有问题,接下来用户B又抢到一件,下单,库存count继续减一,没有问题。case2:但是一般而言,秒杀时用户非常多,所以会有这样一种情况:用户A和用户B同时抢到一件商品,同时下单,同时减库存,库存只会减一次。这就是典型的并发问题。那么如何解决这草蛋的并发问题呢?同步,一般情况下我们都是通过加锁来保证同步的锁可以分为乐观锁和悲观锁所谓悲观锁,就是

2020-10-29 17:15:22 2665 1

原创 Redis中的事务

一、什么是Redis的事务Redis官网对其事务是这样描述的:事务可以一次性地执行一组命令事务是一个单独的隔离操作:事务中的所有命令都会被序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发送来的命令请求所打断。事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。二、事务相关命令MULTI 开启事务,标记一个事务块的开始。EXEC 执行事务,执行所有事务块内的命令。DISCARD 取消事务,放弃执行事务块内的所有命令。WATCH 监视一个(或多个) k

2020-10-29 14:20:02 107

原创 Redis数据类型之Bitmaps

一、什么是Bitmaps官网描述:Bitmaps are not an actual data type, but a set of bit-oriented operations defined on the String type. Since strings are binary safe blobs and their maximum length is 512 MB, they are suitable to set up to 2^32 different bits.Bitmaps不是一

2020-10-28 04:39:52 171

原创 Redis数据结构之hyperloglogs

Redis数据结构之hyperloglogs一、什么是hyperloglogs和String一样,也是Redis支持的一种数据类型或者数据结构,用来做基数统计。什么是基数?比如数据集 {1, 3, 5, 7, 5, 7, 8}, 那么这个数据集的基数集就是 {1, 3, 5 ,7, 8}, 基数(不重复元素的个数)为5。基数估计就是在误差可接受的范围内,快速计算基数。hyperloglogs的优点是,在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定 的、并且是很小的。

2020-10-28 03:23:16 339

原创 Redis数据结构之Geospatial

一、什么是Geospatial和String一样,也是Redis支持的一种数据类型或者数据结构,用来存储和管理地理位置的二、相关命令Geospatial相关的命令有6个,下面依次梳理1. geoaddGEOADD key longitude latitude member [longitude latitude member …]将指定的地理空间位置(经度、纬度、名称)添加到指定的key中限制:有效的经度从-180度到180度;有效的纬度从-85.05112878度到85.05

2020-10-28 02:52:47 386

原创 Redis自带的性能测试工具redis-benchmark

一、工具位置tips: 该工具在redis的安装目录可以找到二、命令选项[root@localhost bin]# ./redis-benchmark --helpUsage: redis-benchmark [-h <host>] [-p <port>] [-c <clients>] [-n <requests>] [-k <boolean>] -h <hostname> Server hostname (de

2020-10-28 01:30:48 736

原创 Redis中的数据类型及其应用场景

**redis中有哪些数据类型?**这个问题我被面试官问过好多次了,下面总结下这5种数据类型的特点,命令,还有应用场景redis客户端的一些通用命令:ping # 测试redis是否链接 如果已链接返回 PONG echo message # 测试redis是否链接 如果已链接返回给定的message字符串keys * # 返回所有的 key 可以加*通配 exists key # 判断key是否存在 如果存在返回1,否则返回0 expire key time(s) # 设置一个 key

2020-10-26 17:11:26 279 3

原创 centos8安装单机版redis-6.0.8

一、下载安装gcc依赖[root@localhost ~]# gcc -v # 检查gcc开发环境是否已安装[root@localhost ~]# yum -y install gcc # 安装gcc二、从官网下载redis-6.0.8.tar.gz并上传到服务器三、解压redis-6.0.8.tar.gz四、

2020-10-24 22:51:33 384

原创 求环形单链表环长和环入口(java)

本篇的两个问题由上一篇判断单链表是否有环(java)引申而出。求环长思路分析快慢指针第一次相遇表示链表有环快慢指针从第一次相遇开始到第二次相遇,期间慢指针走的步数即为环长代码实现public static int cycleLength(ListNode head) { ListNode slow = head; ListNode fast = head; int cycleLength = 0; // 标识快慢指针第一次相遇

2020-10-24 15:00:28 254

原创 判断单链表是否有环(java)

图示思路分析代码实现

2020-10-24 00:39:07 2034 2

原创 回文单链表(java)

如何判断一个单链表是回文单链表?LeetCode题目链接下面是LeetCode的题目截图:思路分析回文单链表:链表反转后和原链表一样思路一:根据回文单链表的特点很容易分析出① 反转单链表② 遍历比较原链表和反转后的链表,如果有不一样的结点,说明不是回文的,如果两链表完全一样,说明是回文的思路二:① 使用快慢指针找出链表的中间结点,其中快指针步长为2,慢指针步长为1② 根据中间结点反转后半部分链表③ 遍历比较前后两部分链表的结点是否一致反转实现由于两个思路都需要反转,这里先

2020-10-15 13:07:18 987 6

原创 java序列化和反序列化

一、什么是序列化和反序列化序列化(Serialization):将对象的状态信息转换为可以存储或传输的形式的过程。反序列化(Deserialization):从存储区中读取对象的状态并重新构建对象的过程。二、serialVersionUID的作用在Java中,类的serialVersionUID被用来区分类的版本。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID进行比较,如果相同说明类是一致的,可以进行反序列

2020-10-14 12:31:31 142

原创 java实现插值查找

什么是插值查找插值查找,有序表的一种查找方式。插值查找基于二分查找,将查找点的选择改进为自适应选择,提高查找效率。插值类似于平常查英文字典的方法,在查一个以字母C开头的英文单词时,决不会用二分查找,从字典的中间一页开始,因为知道它的大概位置是在字典的较前面的部分,因此可以从前面的某处查起,这就是插值查找的基本思想。插值查找除要求查找表是顺序存储的有序表外,还要求数据元素的关键字在查找表中均匀分布,这样,就可以按比例插值。思路分析插值查找的实现和二分查找基本一致,唯一的区别就是查找点下标的选择

2020-10-12 21:07:50 303

原创 java中>>和>>>的区别

带符号右移>>运算规则:正数右移高位补0,负数右移高位补1。比如:4>>1 = 20000 0000 0000 0000 0000 0000 0000 0100 // 4右移一位0000 0000 0000 0000 0000 0000 0000 0010 // 2-4>>1 = -21000 0000 0000 0000 0000 0000 0000 0100 // -4的原码1111 1111 1111 1111 1111 1111 1111 10

2020-10-09 00:43:58 276

原创 java实现二分查找算法

什么是二分查找二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。基本思想是:首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。图

2020-10-08 23:31:44 443

原创 java实现快速排序

什么是快速排序快速排序(Quicksort)使用分治思想对冒泡排序作了改进,效率非常高。其基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。快速排序的实现从快速排序的基本思想可以分析出其实现思路:一、选取一个枢轴元素(也叫基准元素)二、将数组分割成两部分,一部分数据都小于或等于枢轴元素,另一部分数据都大于枢轴元素三、对分割的子数

2020-10-07 15:43:18 4506 3

原创 java实现归并排序

一、什么是归并排序归并排序(Merge Sort)是建立在归并操作上的一种有效,稳定的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。什么是分治法?1)在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。2)分治法的精髓:**分解:**将原问题分解为若干个规模较小,相互独立,与原问题形式相

2020-10-02 22:05:14 174

空空如也

空空如也

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

TA关注的人

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