程序
文章平均质量分 85
内外皆秀
从小到大,不停奔跑
人生是一场难得的修行,不要轻易的交白卷
展开
-
蓝牙状态机(StateMachine)
StateMachine是一个层次状态机:一个状态可以有多个子状态的状态机。状态机中的状态需继承基类State,并实现成员函数processMessage,从而对收到的Message进行处理;一个状态对应于一个<State>对象,并且状态必须实现<processMessage>方法,可选的实现方法是<enter/exit/getName>,<enter/exit>方法对应于构造和析构函数,它们被用于初始化和清理状态。StateMachine的构造函数都原创 2021-02-04 16:55:32 · 1431 阅读 · 0 评论 -
JAVA基础知识(类、对象、接口)
类和对象1.概念类是一类事物的抽象概念,它不指一个具体事务,而是将一类事物所具有的特点进行抽取,形成一个范围指向的概念。对象指某一类中的具体指代,表示的是一个具体事物。类生成对象的过程叫做实例化。2.类的声明类在使用前,必须先声明,然后才可以声明变量,创建对象。声明语法如下:[标识符] class 类名{//类的属性//类的方法}[标识符]可以是public、private、protected或者完全省略这个标识符。private:私有访问...原创 2021-01-15 19:12:00 · 1474 阅读 · 2 评论 -
求两个字符串的最长公共子串
问题:有两个字符串str1和str2,求出两个字符串中最长公共子串长度。比如:str1=acbcbcef,str2=abcbced,则str1和str2的最长公共子串为bcbce,最长公共子串长度为5。算法思路:1、把两个字符串分别以行和列组成一个二维矩阵。2、比较二维矩阵中每个点对应行列字符中否相等,相等的话值设置为1,否则设置为0。3、通过查找出值为1的最长对角线就能找到最长公共子串。针对于上面的两个字符串我们可以得到的二维矩阵如下:从上图可以看到,str1和str2共有转载 2020-08-10 09:45:55 · 689 阅读 · 0 评论 -
你真的会写内存拷贝程序吗
写一个函数,完成内存移动(拷贝),并为其写一个简单的测试用例来进行测试。够简单的吧?有的同学很快就写出了答案,详见程序清单1与程序清单2。程序清单 1 V0.1版程序void MyMemMove(char *dst,char *src,int count){ while(count--) { *dst++ = *src++; }} 程序清单 2 测试用例void Test(){ char p1...原创 2020-07-13 14:56:52 · 250 阅读 · 0 评论 -
字符串与整数的相互转换(详细代码atoi和itoa)
编程实现将字符串转换为整型数;int my_atoi(const char *str);1.遇到非数字字母,停止转换;示例: str = "234.324" ; 返回值是234;2.首先出现空格的字符串可以转换,转换开始后,遇到空格停止转换;示例: str =" 342 456"; 返回值是342;3.可以处理正负号;示例: str = " +234.bad" ; 返回值是 234; str = " -342ab.234" ; 返回值是:-342;4.可以处...原创 2020-07-06 12:24:33 · 529 阅读 · 0 评论 -
利用js制作一个简单的QQ农场小游戏
html文件代码<!DOCTYPE html><html> <head> <meta charset="utf-8" /> <title>QQ农场</title> <link rel="stylesheet" type="text/css" href="css/style.css"/> </head> <body> <div class="main"> .原创 2020-06-29 09:12:03 · 2619 阅读 · 2 评论 -
一篇搞懂python文件读写操作(r/r+/rb/w/w+/wb/a/a+/ab)
关于文件操作的几种常用方式,网上已有很多解说,内容很丰富,但也因此有些杂乱复杂。今天,我就以我个人的学习经验写一篇详细又易懂的总结文章,希望大家看完之后会有所收获。 一、核心功能 ‘r’:只读。该文件必须已存在。‘r+’:可读可写。该文件必须已存在,写为追加在文件内容末尾。‘rb’:表示以二进制方式读取文件。该文件必须已存在。‘w’:只写。打开即默认创建一个新文件,如果文件已存在,.转载 2020-06-05 13:55:51 · 299 阅读 · 0 评论 -
Python实现汉诺塔问题,经典递归案例
汉诺塔 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。两则传说(感兴趣的可以了解下)一 法国数学家爱德华·卢卡斯曾编写过一个印度的古老传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创...原创 2020-05-23 13:49:14 · 6405 阅读 · 0 评论 -
Python实现1~100猜数字小游戏
电脑随机生成1~100之间的整数让用户来猜,猜错提示大了还是小了,直到用户猜对游戏结束。import random 表示随机模块random.randint(1,100)用于生成指定范围内的整数。参数1是下限,100是上限,生成的随机数1<= key <= 100。import randomkey = random.randint(1,100) print('----...原创 2020-05-06 20:33:53 · 20117 阅读 · 3 评论 -
顺时针打印矩阵【剑指offer】
输入一个矩阵,按照从外向里顺时针依次打印每一个数字。 如下图矩阵: 这道题完全没有涉及复杂的数据结构或者高级的算法,看起来是一个很简单的题。但实际解决问题时,会在代码中包含多个循环,并且还需要判断多个边界条件。写代码前一定要有着清晰的思路,把复杂的问题分解成若干个简单的问题。需要依次打印,我们可以把矩阵想象成若干个圈。用一个循环来打印矩阵,每一次打...原创 2020-05-02 15:42:40 · 170 阅读 · 0 评论 -
快速排序的优化(三种基准的选择以及四种优化方式)
快排思想快排基准的选择 固定基准 随机基准&nb...转载 2020-04-18 14:23:31 · 1986 阅读 · 0 评论 -
C++面试宝典:设计模式
● 请问你用过哪些设计模式,介绍一下单例模式的多线程安全问题参考回答:常见的设计模式如下:单例模式:单例模式主要解决一个全局使用的类频繁的创建和销毁的问题。单例模式下可以确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。单例模式有三个要素:一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。工厂模式:工厂模式主要解决接口选择的...原创 2020-04-12 10:10:47 · 353 阅读 · 0 评论 -
C++面试宝典:操作系统(三)
● 请你来说一说协程参考回答:1、概念:协程,又称微线程,纤程,英文名Coroutine。协程看上去也是子程序,但执行过程中,在子程序内部可中断,然后转而执行别的子程序,在适当的时候再返回来接着执行。例如:def A() :print '1'print '2'print '3'def B() :print 'x'print 'y'print 'z'由协程运行...原创 2020-04-11 12:33:51 · 291 阅读 · 0 评论 -
C++面试宝典:容器和算法
● 请你来说一下map和set有什么区别,分别又是怎么实现的?参考回答:map和set都是C++的关联容器,其底层实现都是红黑树(RB-Tree)。由于 map 和set所开放的各种操作接口,RB-tree 也都提供了,所以几乎所有的 map 和set的操作行为,都只是转调 RB-tree 的操作行为。map和set区别在于:(1)map中的元素是key-value(关键字—值)对...原创 2020-04-11 12:17:12 · 156 阅读 · 0 评论 -
C++面试宝典:基本语言(二)
● 请你来说一下C++中的智能指针参考回答:C++里面的四个智能指针: auto_ptr, shared_ptr, weak_ptr, unique_ptr 其中后三个是c++11支持,并且第一个已经被11弃用。为什么要使用智能指针:智能指针的作用是管理一个指针,因为存在以下这种情况:申请的空间在函数结束时忘记释放,造成内存泄漏。使用智能指针可以很大程度上的避免这个问题,因为智能指...原创 2020-04-11 12:11:52 · 222 阅读 · 0 评论 -
C++面试宝典:基本语言(一)
● 说一下static关键字的作用参考回答:1. 全局静态变量在全局变量前加上关键字static,全局变量就定义成一个全局静态变量.静态存储区,在整个程序运行期间一直存在。初始化:未经初始化的全局静态变量会被自动初始化为0(自动对象的值是任意的,除非他被显式初始化);作用域:全局静态变量在声明他的文件之外是不可见的,准确地说是从定义之处开始,到文件结尾。2. 局部静态...原创 2020-04-11 12:06:16 · 173 阅读 · 0 评论 -
关于数组的面试题(代码)
转载请标明出处,原文地址:http://blog.csdn.net/hackbuteer1/article/details/80352611、快速找出一个数组中的最大数、第二大数。 思路:如果当前元素大于最大数 max,则让第二大...转载 2020-04-09 14:32:13 · 462 阅读 · 0 评论 -
找到第K小的元素(分治)
先做一个简单好理解的,找到第一小和第二小的数#include<iostream>using namespace std;void select(int *ar,int n){ if(ar == NULL && n < 2) return ; int min1 = ar[0] < ar[1] ? ar[0]:ar[1]; int min...原创 2020-04-09 14:06:47 · 305 阅读 · 0 评论 -
腾讯C++后台开发面试笔试知识点
gdb调试命令step和next的区别?当前line有函数调用的时候,next会直接执行到下一句 ,step会进入函数.查看内存(gdb)p &a //打印变量地址(gdb)x 0xbffff543 //查看内存单元内变量0xbffff543: 0x12345678(gdb) x /4xb 0xbffff543 //单字节查看4个内存单元变量的值0xbfff...原创 2020-04-08 11:25:46 · 725 阅读 · 0 评论 -
C++ 标准模板库(STL)
C++ 标准模板库(STL)作者:AceTan,转载请标明出处!0x00 何为STL##STL(Standard Template Library) 即标准模板库。它是一个具有工业强度,...转载 2020-04-07 16:37:52 · 152 阅读 · 0 评论 -
C++:标准模板库简介(STL)
库(library)是一系列程序组件的集合,它们可以在不同的程序中重复使用。库函数设计的第一位的要求就是通用性,模板(template)为通用性带来了不可估量的前景。标准模板库(Standard Template Library)是ANSI/ISO C++最有特色,最实用的部分之一。STL包含:容器类(container)迭代子(iterator)算法(algorithm) 泛型算法(...原创 2020-04-07 16:06:54 · 264 阅读 · 0 评论 -
C++:纯虚函数与抽象类
纯虚函数(pure virtual function)是指被标明为不具体实现的虚拟成员函数。它用于这样的情况:定义一个基类时,会遇到无法定义基类中虚函数的具体实现,其实现依赖于不同的派生类。定义纯虚函数的一般格式为:virtual 返回类型 函数名 (参数表) = 0;含有纯虚函数的基类是不能用来定义对象的。纯虚函数没有实现部分,不能产生对象,所以含有纯虚函数的类是抽象类。纯虚函...原创 2020-04-04 14:44:59 · 389 阅读 · 0 评论 -
C++:必须把析构函数定义为虚函数的情况
析构函数可定义为虚函数,构造函数不能定义为虚函数,因为在调用构造函数时对象还没有完成实例化。在基类中及其派生类中动态分配空间时,必须把析构函数定义为虚函数,实现撤销对象的多态性。必须是类中有存在虚函数时,我们才能把析构函数定义为虚函数。如下代码:#include<iostream>using namespace std;class Object{ int val...原创 2020-04-04 13:11:18 · 331 阅读 · 0 评论 -
C++:虚函数与多态
虚函数虚函数是一个类的成员函数,定义格式:virtual 返回类型 函数名 (参数表);关键字virtual指明该成员函数为虚函数。virtual仅用于类定义中,如虚函数在类外定义,不可加virtual;当某一个类的一个类成员函数被定义为虚函数,则由该类派生出来的所有派生类中,该函数始终保持虚函数的特征。当在派生类中重新定义虚函数(overriding a virtual fun...原创 2020-04-03 16:30:46 · 147 阅读 · 0 评论 -
二叉树的面试题目
版权所有,转载请注明出处,谢谢!http://blog.csdn.net/walkinginthewind/article/details/7518888树是一种比较重要的数据结构,尤其是二叉树。二叉树是一种特殊的树,在二叉树中每个节点最多有两个子节点,一般称为左子节点和右子节...转载 2020-03-31 15:40:08 · 85 阅读 · 0 评论 -
设计模式:单例模式
本文继续介绍23种设计模式系列之单例模式。概念: java中单例模式是一种常见的设计模式,单例模式的写法有好几种,这里主要介绍三种:懒汉式单例、饿汉式单例、登记式单例。 单例模式有以...转载 2020-03-30 18:45:29 · 99 阅读 · 0 评论 -
全排列与子集算法
全排列算法是一种经典的递归算法。例如集合{1,2,3}的全排列为{(1,2,3)、(1,3,2)、(2,1,3)、(2,3,1)、(3,2,1)、(3,1,2)}共3!种。递归法求解的思路是先固定第一个元素,求剩下的全排列,求剩下的全拍列时,固定剩余元素中的第一个元素,再求剩下元素的全排列,直到就剩一个元素停止。例如求集合{1,2,3,4}的全排列。 1、固定元素1求{2,3,4}元...原创 2020-03-25 15:51:09 · 346 阅读 · 0 评论 -
链表中的倒数第K个节点、链表中环的入口节点、反转链表、合并链表(剑指offer面试重点)
目录一、链表中的倒数第k个节点二、链表中环的入口节点三、反转链表四、合并两个排序的链表一、链表中的倒数第k个节点题目:输入一个链表,输出该链表中的倒数第k个节点。解决方法:我们可以定义两个指针遍历一次链表找到倒数第k个节点。第一个指针p1从链表的头指针开始遍历向前走k-1步,第二个指针保持不动;从第k步开始,第二个指针也开始从链表的头指针开始遍历。由于两个指针的距离...原创 2020-03-24 22:41:35 · 245 阅读 · 0 评论 -
二分查找(循环和递归实现)
二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。它充分利用了元素间的次序关系,采用分治策略,可在最坏的情况下用O(log n)完成搜索任务。它的基本思想是:(这里假设数组元素呈升序排列)将n个元素分成个数大致相同的两半,取a[n/2]与欲查找的val作比较,如果x=a[n/2]则找到...原创 2020-03-22 22:21:36 · 319 阅读 · 0 评论 -
二叉树的创建:根据前序中序、中序后序递归创建二叉树
根据如图创建二叉树: 先序遍历为: "A B C D E F G H" 中序遍历为: "C B E D F A G H" 后序遍历为: "C E F D B H G A"代码如 下:#include<stdio.h>#include<stdlib.h>#include<string.h> // memset;#includ...原创 2020-03-21 16:39:34 · 1079 阅读 · 0 评论 -
丑数:求第n个丑数
我们把只包含因子2、3和5的数称作丑数(Ugly Number)。例如,6、8都是丑数,但14不是,因为它包含因子7。习惯上我们把1当作第一个丑数。求按从小到大顺序的第1500个丑数?方法一:根据丑数的定义,我们想到如果一个数能被2整除,就连续除于2;如果能被3整除,就连续除于3;如果能被5整除,就连续除于5。如果最后得到的是1,那么这个数就是丑数;否则不是。所以我们可以写出下面的...原创 2020-03-20 19:03:51 · 1514 阅读 · 0 评论 -
【动态规划】01背包问题(通俗易懂,超基础讲解)
问题描述有n个物品,它们有各自的体积和价值,现有给定容量的背包,如何让背包里装入的物品具有最大的价值总和?为方便讲解和理解,下面讲述的例子均先用具体的数字代入,即:eg:number=4,...转载 2020-03-19 20:52:54 · 4884 阅读 · 7 评论 -
Linux详解及面试题
文章目录Linux 概述什么是LinuxUnix和...转载 2020-03-19 12:31:46 · 231 阅读 · 1 评论 -
合并两个递增排序的链表,合并后仍递增有序。
这是面试中经常被提到的问题。下图表示链表1和链表2合并成链表3:1.用递归算法更加简单好理解,即链表1的头结点值小于链表2头结点的值,我们就将链表1作为合并后链表的头结点,在剩余结点中,链表2的头结点值小于链表1头结点的值,我们将链表二的头结点作为合并链表的后续结点,且剩余结点依然是有序的,合并的步骤和之前一样,如下图:递归代码如下:ListNode* Merge(ListN...原创 2020-03-18 12:27:59 · 1190 阅读 · 0 评论 -
设定关系(A=1,B=2,C=3,···,Z=26,AA=27,AB=28,···,AAA=XXX,···),写一个转换函数,根据上面规则把一个字符串转换为数字。
这是一道进制转换问题,将10进制转换为26进制。#include<iostream>#include<string>using namespace std;int StringToInt(const string& str){ int length = str.length(); int sum = 0;//如果输入的字符为空字符,输出为0....原创 2020-03-17 12:21:13 · 1935 阅读 · 0 评论 -
进程间通信:共享内存(Shared Memory)
&...转载 2020-03-13 16:55:20 · 488 阅读 · 0 评论 -
堆和栈的区别
1)x86 32 位 linux 系统虚拟地址空间上堆和栈的描述。虚拟地址空间上,堆和栈的划分是完全两块不同的内存,不能混为一谈的。2)栈内存是由系统分配,系统释放的;以函数为单位进行栈内存分配,函数栈帧,局部变量,形参变量等都存放在栈内存上。堆内存是由用户自己分配的,C 语言用 malloc/free进行分配释放,C++用 new/delete 进行分配释放,由于堆需要用...原创 2020-03-13 13:17:35 · 751 阅读 · 0 评论 -
C++STL容器总结 特别详细!!!
各大容器的特点:1.可以用下标访问的容器有(既可以插入也可以赋值):vector、deque、map;特别要注意一下,vector和deque如果没有预先指定大小,是不能用下标法插入元素的!2. 序列式容器才可以在容器初始化的时候制定大小,关联式容器不行;3.注意,关联容器的迭代器不支持it+n操作,仅支持it++操作。 ...转载 2020-03-12 11:43:05 · 429 阅读 · 0 评论 -
Linux下netstat命令详解
一、介绍Netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。二、输出信息描述执行netstat后输出如下:[root@sy-suz-srv51 ~]# netstatAct...转载 2020-03-11 21:15:36 · 91 阅读 · 0 评论 -
统计二进制数中有几个1
int GetBits1(unsigned char ch)//0010 1011->4;1000 0000->1{ int count = 0; while(ch != 0) { if((ch&1) != 0) { count++; } ch >>= 1; } return count;}int GetBits2...原创 2019-03-24 19:14:41 · 1079 阅读 · 1 评论