- 博客(18)
- 收藏
- 关注
原创 LeetCode试题--将罗马数字转换成整数
题目描述如下: 通过分析题目逻辑,罗马数字使用Map存储,调用String的CharAt方法提取字符串中的特定位置字符。map.get(Object key):获取给定key对应的值;char CharAt(int index):取字符串中存放在index位置的字符;代码实现如下: public static int romanToInt(String s){ ...
2018-11-13 19:17:56
184
原创 shell脚本实现进度条
shell脚本下实现进度条,与C语言实现进度条类似,我们主要需要清楚换行和回车的概念。 代码如下:i=0str=""arr=('|' '/' '-' '\\')while [ $i -le 100 ]do printf "[%-100s][%d%%][%s]\r" "$str" "$i" "${arr[$index]}" let index++ let index
2017-07-03 15:22:07
911
原创 网络通信中端口的分类及作用
熟悉并了解TCP和UDP协议的报文段格式的同学,对于端口这个词一定不陌生。在这些报文段格式中我们总能看到源端口和目的端口这些字段,那关于端口今天这篇文章我们便来了解一下。我们知道两个进程要想在计算机内部尽享通信,可以有管道、共享内存、信号量、消息队列等方法。两个进程如果需要进行通信最基本的前提是能够唯一的表示一个进程,在本地进程通信中我们可以使用【PID(进程标识符)】来唯一标识一个进程。但PID只
2017-06-27 22:03:08
4021
原创 浅析TCP三次握手和四次挥手
对于TCP三次握手四次挥手的原理,可以参见通俗大白话来理解TCP三次握手四次挥手和TCP的那些事这几篇文章。在这几篇文章中对于TCP三次握手和四次挥手的过程都有详细的讲解。先放一张图大家理解一下TCP三次握手和四次挥手。 为什么握手三次?大家可以先通过下面一段话来认识一下:谢希仁在《计算机网络》这本书中也写道: 所以三次握手是为了防止服务端一直等待而浪费资源。为什么挥手四次?TCP协议是一种面向
2017-06-27 21:18:04
325
原创 关于倒引号` `和$()以及eval
“和$()“和$()都是用来做命令替换的,将他们中包含的命令的执行结果替换命令所在的地方。echo lsecho `ls`echo $(ls)运行结果从上述的例子中便可以看出两者的作用,就是进行命令替换。 两者的差异进行多层次的命令替换时,“需要进行转义操作$()跨平台性并不好,并不是所有平台都支持,倒引号都支持倒引号容易和单引号搞混,编写时需注意认识evaleval:首先扫描命令行进
2017-06-27 16:57:20
506
原创 CRC校验
CRC校验(循环冗余校验码)在链路层传输数据时 ,为了保证数据传输的可靠性,必须采用各种差错检测措施,目前在数据链路层广泛使用循环冗余检验CRC的检错技术。循环冗余检验的原理在发送端,先把数据换分为组,假定每组有k个比特。现假定待传送的数据M=101001(K=6)。CRC运算就是在数据M的后面添加供差错的检验用的n位冗余码,然后构成一个帧发送出去,一共发送(k+n)位。冗余码的计算方法用二进制的模
2017-06-21 16:05:41
1062
原创 find命令的使用
关于find命令,我认为是Linux命令中很强大的命令,提供相当多的查找条件。通过与不同选项的组合实现许多不同的功能。 命令选项: -name:按照文件名查找文件 find -name file:在当前目录下查找file的文件 find ~ -name “*.c”:在home目录查找后缀名为”.c”的文件 find . -name “*.txt”:在当前目录下查找后缀名为”.txt”的文件
2017-03-30 18:13:38
403
原创 剑指offer--替换字符
若输入”we are happy”,则输出”we%2dare%2dhappy”; 先通过下面的替换原理图梳理一下思路: 通过上图可以看到new_end = end + 2 × count;得到这个思路后,我们在采用从后往前复制,且注意循环的条件(end = new_end),就可得到替换后的字符串。完整源代码:#define _CRT_SECURE_NO_WARNINGS 1#includ
2017-03-25 16:52:19
363
原创 浅析Linux下文件和目录权限
经过几节课的学习,通过查阅资料自己简单的总结了一下文件权限和目录权限的异同点。可能总结的不是很全面和正确,但是都是基于自己的理解。在Linux学习中,”Linux下一切皆文件“,在Windows下对于目录、文件等的区分非常清楚,那在Linux下文件和目录以及关于二者的权限又是如何划分的? 先来谈一谈几个关于文件和目录的命令:cd:切换目录pwd:显示当前目录mkdir:新建一个新的目录rm
2017-03-23 21:28:11
338
原创 浅析并实现栈(stack)和对列(queue)
栈和队列都是我们在数据结构阶段学习的典型数据结构。栈的处理数据时的特点:后进先出,对列的特点:先进先出。 栈除了处理数据,还有函数栈帧以及用来分析递归问题,关于这点,我将在后面的文章中给出自己的总结。 栈和队列的实现函数是参考源代码的实现代码,有些库中未实现的,我在这里面也忽略了。 因为栈是顺序存储的,所以栈的实现采用数组的结构,这样可以更好的体会到栈在操作时的特点,实现过程也比较明了。 栈
2017-03-10 17:24:38
343
原创 菱形继承和虚继承
1.菱形继承菱形继承概念图: 菱形继承对象模型: 参照菱形继承对象模型,不难发现若调用DD类时,里面包含两个相同的AA类的所有成员,在调用过程中会出现二义性和数据冗余的问题,为了解决上述问题,我们提出了虚继承。接下来通过简单实例代码讲解虚函数及底层实现。 代码样例:#include <iostream>using namespace std;class AA{public:
2017-02-15 21:43:40
410
原创 写一个宏将一个数字的奇数位和偶数位交换
交换一个数的奇数和偶数位在C语言是很常见的问题。#include <stdio.h>#define CHANGE(x)\ ((x&(0x55555555)) << 1) | ((x&(0xAAAAAAAAA))>>1) //奇数位左移,偶数位右移int main(){ int x=5; printf("%d\n", CHANGE(x)); system(
2016-10-17 22:50:43
453
原创 简单扫雷游戏的实现
三字棋游戏的实现我采用多个源文件的编写方法,实现代码的分模块化编写,这样不仅代码清晰,且加强代码的理解性。 建议读者在实现代码时,不可心急求成,一次就要完成代码的所有函数逻辑部分,而是先编写大体代码框架,一步步思考代码的实现所需要的函数实现,进一步完善代码的函数主体。代码头文件部分:game.h#ifndef __GAME_H__#define __GAME_H__#define ROWS 3
2016-10-17 16:57:47
546
原创 预处理基础知识与示例代码实现
预处理阶段完成的事情: 1、取消注释, 2、宏替换, 3、头文件展开, 4.、条件编译。 先来熟悉几个常见预处理标识符,直接通过示例代码实现:#include <stdio.h>int main(){ printf("file:%s line:%d date:%s time:%s\n", __FILE__, __LINE__, __DATE__, __TIM
2016-10-17 16:39:05
549
原创 字符串替换空格:请实现一个函数,把字符数组中的每个空格替换成“%20”
例如输入“we are happy”,则输出“we%20are%20happy” 想要实现这个目的,先观察下面的函数实现原理图。 先通过遍历字符数组,找出其中的空格数,计算出应该移动到的位置,接着就是移动指针,并在遇到空格时插入%20,函数便可实现。 具体实现代码如下:#include <stdio.h>char replace(char* src){ int count = 0;
2016-10-17 15:40:31
676
原创 有一个字符数组的内容为:"student a am i",请你将数组的内容改为"i am a student".
若要完成这个题目,可以先逆序整个字符数组,逆序后为:i ma a tneduts;接下来对于每个单词进行逆序便可达到目的,结果为:i ma a student。#include <stdio.h>#include <string.h>#include <assert.h>void reverse_arr(char* left,char* right){ assert(left);
2016-10-16 11:44:44
606
原创 利用位操作符实现两个整数的交换
位操作符包括:&(按位与),|(按位或),^(按位异或),位操作符针对每个数的二进制位进行操作。利用位操作符实现两个整数的交换,先来举例说明:int a=5;int b=8;低四位二进制表示 a 0 1 0 1 b 1 0 0 0
2016-09-25 15:13:27
787
1
原创 冒泡排序的简单实现
#define _CRT_SECURE_NO_WARNINGS 1//冒泡排序#include void BubbleSort(int arr[], int sz){int i = 0;int j = 0;int tmp = 0;for (i = 0; i {for (j = 0; j {if (arr[j]>arr[j + 1]){
2016-09-18 17:09:55
261
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人