- 博客(116)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 链表中的倒数第K个节点、链表中环的入口节点、反转链表、合并链表(剑指offer面试重点)
目录一、链表中的倒数第k个节点二、链表中环的入口节点三、反转链表四、合并两个排序的链表一、链表中的倒数第k个节点题目:输入一个链表,输出该链表中的倒数第k个节点。解决方法:我们可以定义两个指针遍历一次链表找到倒数第k个节点。第一个指针p1从链表的头指针开始遍历向前走k-1步,第二个指针保持不动;从第k步开始,第二个指针也开始从链表的头指针开始遍历。由于两个指针的距离...
2020-03-24 22:41:35
248
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Linux网络编程:计算机网络体系结构概述详解
一、计算机网络体系结构的形成我们知道连接在网络上的两台计算机要相互传送文件,必须要有一条传送数据的通路。但这远远不够,还需要以下的工作:(1)发起通信的计算机必须将数据通信的通路激活。(2)告诉网络如何识别接收数据的计算机。(3)发起通信的计算机需要查明对方是否开机,网络是否正常。(4)发起通信的计算机程序需要知道对方是否做好接收和存储文件的准备。(5)文件格式不兼容,其中...
2020-03-05 15:15:06
2150
1
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 常见排序算法总结(冒泡排序、快速排序、插入排序、希尔排序、选择排序、堆排序、归并排序、计数排序)
排序分为内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。八大排序指内部排序。 1.冒泡排序 在要排序的一组数中,对当前还未排好序的范围...
2020-02-14 18:22:53
1015
原创 Linux中644、755、777权限详解
在linux系统中,文件或目录的权限分为3种:1.读权限 r (代表数字为4)2.写权限 w(代表数字为2)3.执行权限 x (代表数字为1)所以我们常见的文件权限有:444 r--r--r--600 rw-------644 rw-r--r--666 rw-rw-rw-700 rwx------744 rwxr--r--755 rwxr-xr-x777 rwxrwxrwx从左至右,1-3位字母代表文件所有者(User)的权限,4-6位字母代表同组用户(Group)的.
2021-02-24 11:10:44
11862
转载 抖音、吃鸡、王者荣耀:你的自律,是如何被顶级产品经理一步一步毁掉的
文章概要01你的沉迷跟这个时代有关这是个特别容易沉迷的时代。抖音、煲剧、王者荣耀、吃鸡游戏……你的时间和注意力悄悄被它们偷走,却从不说再见。或许你也纳闷,自己的自制力怎么这么差了?但我想说,这事可能不完全怪你。《欲罢不能:刷屏时代如何摆脱行为上瘾》分享到:你的沉迷跟这个时代有关。作者亚当·奥尔特,是普林斯顿大学的心理学博士。他在这本书里以大量科学研究为基础,揭示了一个细思极恐的真相:任何人都会成为瘾君子,商业公司为了让你在科技产品、网络游戏中无法自拔,布下了一个个裹在诱饵
2021-02-23 17:57:34
983
转载 蓝牙查看和分析btsnoop.log
在做BLE的过程中好多人遇到这些问题: 1)为什么远端设备发给我的消息我没收到? 2)为什么远端设备发给我的消息和我接收到的不一样? 3)为什么我的消息发布出去? 等等。想要知道为什么,除了经典的logd(万能的printf)之外,Android蓝牙中有一个很重要的debug...
2021-02-20 10:45:59
6097
原创 蓝牙HCI协议介绍
1.HCI简介HCI层为上层提供了一个统一访问hci控制器的接口,其接口为一系列的指令和事件。主机(用户软件)对蓝牙芯片的控制都是通过协议规范中定义的指令,来控制蓝牙控制器(蓝牙芯片)进入相应的工作模式,例如在蓝牙启动的时候,主机会发送复位,设置蓝牙名称、设置pincode等指令,当控制器完成相关的操作后会返回相应的事件通知主机。蓝牙核心架构抽象为三层: User Application(Host)...
2021-02-20 10:37:40
4051
2
原创 蓝牙状态机(StateMachine)
StateMachine是一个层次状态机:一个状态可以有多个子状态的状态机。状态机中的状态需继承基类State,并实现成员函数processMessage,从而对收到的Message进行处理;一个状态对应于一个<State>对象,并且状态必须实现<processMessage>方法,可选的实现方法是<enter/exit/getName>,<enter/exit>方法对应于构造和析构函数,它们被用于初始化和清理状态。StateMachine的构造函数都
2021-02-04 16:55:32
1459
原创 蓝牙的四种音频编码:Apt-X、SBC、AAC、LDAC
以下为常用的几种音频传输格式和支持厂商。按照编码的码率由低到高列举。 SBC(Sub-band coding,子带编码) 最早的格式应该是SBC,SBC是A2DP(Advanced Audio Distribution Profile,蓝牙音频传输协议)协议强制规定的编码格式。所有的蓝牙都会支持这个协议,所以所有的蓝牙音频芯片也会支持这个协议。SBC编码在传输时的码率具体参数未找到,根据sony官网宣传给出的资料,是:328Kbps,44.1KHZ。这个码率其实和高品质的MP3差不多。但因为蓝牙.
2021-01-25 17:05:08
11369
原创 JAVA基础知识(类、对象、接口)
类和对象1.概念类是一类事物的抽象概念,它不指一个具体事务,而是将一类事物所具有的特点进行抽取,形成一个范围指向的概念。对象指某一类中的具体指代,表示的是一个具体事物。类生成对象的过程叫做实例化。2.类的声明类在使用前,必须先声明,然后才可以声明变量,创建对象。声明语法如下:[标识符] class 类名{//类的属性//类的方法}[标识符]可以是public、private、protected或者完全省略这个标识符。private:私有访问...
2021-01-15 19:12:00
1489
2
原创 秋招的第一份offer(关键点一定要敢于尝试)
关键点一定要敢于尝试总有人在感慨时间,因为时间真的可以改变一切,唯一不变的,可能就是一直在变。高考这个关键点过后,日光倾城而下,大学时光摆上的印记也即将淡化,很快就又到了一个人生的关键点。毕业后的去向,这是每个大学生都必须深思的问题,对于个人而言,每个选择都是伟大的,但只有一个选择,可以更好的改变自己。以下就我本人的秋招经历及经验供大家参考。我在大二时决定了就业这个方向,一是本人成绩不是非常优秀,但还行;二是大学之后,刻苦能力相比高中也减了维度,还有伴随着成长,会占有你时间的事情也会增多;.
2020-12-27 00:25:10
255
原创 四大组件之Service
service基本概念Service(服务)是一种计算型组件,用于在后台执行一系列计算任务,主要处理一些需要在后台长期运行的任务或耗时较长的操作,无用户界面。由于Service组件工作在后台,故用户无法直接感知它的存在。Service组件和 Activity组件略有不同,Activity组件只有一种运行模式,即Activity处于启动状,但Service组件却有两种状态:启动状态和绑定状态。当Service组件处于启动状态时,这个时候Service内部可以做一些后台计算,并不需要和外界有直接交互。
2020-12-23 11:58:38
653
原创 Android Fragment简介
Fragment概述介绍Fragment是一种可以嵌入在活动中的UI片段,能够让程序更加合理和充分地利用大屏幕的空间,出现的初衷是为了适应大屏幕的平板电脑,可以将其看成一个小型Activity,又称作Activity片段。使用Fragment可以把屏幕划分成几块,然后进行分组,进行一个模块化管理。Fragment不能够单独使用,需要嵌套在Activity中使用,其生命周期也受到宿主Activity的生命周期的影响。2.特点·Fragment依赖于Activity,不能独立存在·一个Act
2020-12-17 16:10:19
419
原创 Android开发基础(四大组件及Intent)
一、Android开发的四大组件:1.Activity:(通常展现一个可视化的用户界面)(1)一个Activity通常就是一个单独的屏幕(窗口)。(2)Activity之间通过Intent进行通信。(3)Android应用中每个Activity都必须要在AndroidMainfest.xml配置文件中声明。2.Service:(用于在后台完成用户指定的操作)(1)service分为两种:a. started(启动):应用程序组件(如activity)调用startServi.
2020-11-27 19:11:17
3257
2
原创 常用adb命令
查看当前所有连接的模拟器设备:adb devices 获取管理员权限:adb root 挂在分区(可使系统分区重新可写):adb remount 查看模拟器log信息:adb logcat > +创建的文件名 (一般geany +创建的文件查看) 查看adb版本信息:adb version 进入shell模式:adb shell 重启模拟器:adb reboot 开启adb服务:adb star-server 关闭adb服务:adb kill-server 导入文件到模拟器:adb
2020-11-27 19:02:17
138
原创 蓝牙协议及Git常用命令
蓝牙相关蓝牙:支持设备短距离通信的无线技术,10米内,可实现固定设备移动设备的数据交换。车载蓝牙:车内无线免提系统,蓝牙与手机连接,可以在汽车行使中接打电话。模块功能:1.蓝牙配对 2.蓝牙电话 3.蓝牙音乐。蓝牙协议:HFP:蓝牙设备控制电话(接听、挂断、是否支持语音拨号等)。A2DP:蓝牙音频传输模型协定,采用耳机内的芯片堆栈数据,达到声音的高清晰度。AVRCP:音频/视频远程控制规范,定义如何控制流媒体特征(暂停、停止、音量控制等)。PBAP:电话号码簿访问协议。S
2020-11-26 15:28:02
278
转载 随机数函数rand()和srand()的区别
引子相信大家对于rand()函数并不陌生,我们常用它来生成伪随机数,但是为什么有时候我们生成的随机数并不符合预期呢?或者说,为什么有时候我们生成的随机数并不随机?如何有效地生成伪随机数呢?rand()rand()函数是使用线性同余法做的,它并不是真的随机数,因为其周期特别长,所以在一定范围内可以看成随机的。rand()函数不需要参数,它将会返回0到RAND_MAX之间的任意的整数。如果我们想要生成一个在区间[0, 1]之内的数,那么我们可以写出如...
2020-09-02 14:51:16
9731
2
转载 linux中各种锁机制的使用与区别详解
前言:相信需要了解这方面的知识的小伙伴,已经基本对进程间通信和线程间通信有了一定了解。例如,进程间通信的机制之一:共享内存(在这里不做详解):多个进程可同时访问同一块内存。如果不对访问这块内存的临界区进行互斥或者同步,那么进程的运行很可能出现一些不可预知的错误和结果。接下来我们了解三种常见的Linux下的互斥操作—>锁。1.互斥锁(mutex) 特点:对于读者和写者来说。只要有一方获取了锁,另一方则不能继续获取,进而执行临界区代码。创建锁: 有两种方法创建互斥锁,静态方式和动态
2020-08-20 21:41:57
687
1
原创 有1000桶酒,其中1桶有毒。小老鼠喝了,毒性会在1周后发作。现在我们用小老鼠做实验,要在1周后找出那桶毒酒,问最少需要多少老鼠?
思路就是将桶的数量用二进制表示,2^10=1024,也就是10只小鼠最多能验出1024桶酒中哪个有毒。小鼠编号1-10。酒桶也编号1-1000,然后把酒桶的编号转变为二进制数。如果第几位是1,就把这桶酒给第几个小鼠喝。最后大概每个小白鼠喝500酒桶里的混合液。下面具体解释一下。将桶数编号为二进制 第几个小白鼠喝对应位置标号为1的酒1 0000000001 第1号老鼠喝2 0000000010 第2号老鼠喝3 0000000011 第1号和第2号老鼠喝4 0000000100 第3号老鼠喝
2020-08-20 20:14:27
3104
原创 TCP传递时的粘包问题及解决
socket网络编程中,都是端到端的通信。TCP是面向连接的,收发两端都要有成对的socket,因此,发送端为了将多个发往接收端的包更有效的发到对方,使用了优化方法(Nagle算法,为了减少网络中报文段的数量),将多次间隔较小、数据量小的数据,合并成一个大的数据块,然后进行封包。这样,接收端,就难于分辨出来了,必须提供科学的拆包机制。对于非面向连接的UDP,不会使用块的合并优化算法,实际上目前认为,是由于UDP支持的是一对多的模式,所以接收端的skbuff(套接字缓冲区)采用了链式结构来记录每一个到达的
2020-08-19 21:42:24
396
转载 求两个字符串的最长公共子串
问题:有两个字符串str1和str2,求出两个字符串中最长公共子串长度。比如:str1=acbcbcef,str2=abcbced,则str1和str2的最长公共子串为bcbce,最长公共子串长度为5。算法思路:1、把两个字符串分别以行和列组成一个二维矩阵。2、比较二维矩阵中每个点对应行列字符中否相等,相等的话值设置为1,否则设置为0。3、通过查找出值为1的最长对角线就能找到最长公共子串。针对于上面的两个字符串我们可以得到的二维矩阵如下:从上图可以看到,str1和str2共有
2020-08-10 09:45:55
695
原创 C++中使用new与不使用new创建对象的区别
一、实例使用new创建对象:CTest* pTest = new CTest();delete pTest;不使用new创建对象:CTest mTest;使用new,用一个指向类对象的指针来接收;不使用new,直接定义一个类对象。二、区别使用new创建的特点:new创建类对象使用完需delete销毁。new创建类对象需要指针接收,一处初始化,多处使用。new创建对象直接使用堆空间,而局部不用new定义类对象则使用栈空间。new对象指针用途广泛,比如作为函...
2020-07-29 18:02:34
1858
原创 你真的会写内存拷贝程序吗
写一个函数,完成内存移动(拷贝),并为其写一个简单的测试用例来进行测试。够简单的吧?有的同学很快就写出了答案,详见程序清单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
266
原创 字符串与整数的相互转换(详细代码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
539
原创 利用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
2639
2
转载 一篇搞懂python文件读写操作(r/r+/rb/w/w+/wb/a/a+/ab)
关于文件操作的几种常用方式,网上已有很多解说,内容很丰富,但也因此有些杂乱复杂。今天,我就以我个人的学习经验写一篇详细又易懂的总结文章,希望大家看完之后会有所收获。 一、核心功能 ‘r’:只读。该文件必须已存在。‘r+’:可读可写。该文件必须已存在,写为追加在文件内容末尾。‘rb’:表示以二进制方式读取文件。该文件必须已存在。‘w’:只写。打开即默认创建一个新文件,如果文件已存在,.
2020-06-05 13:55:51
315
原创 UnicodeDecodeError: ‘gbk’ codec can‘t decode byte 0xaa in position 2: illegal multibyte sequence解决方法
windows文本编辑器编辑的文件,编码为gbk,python操作时设置读取时编码为gbksublime编辑器编辑的文件编码设置为utf-8,python操作时设置读取utf-8解决方法:在文件的右括号前面加上: , encoding='UTF-8'例如下列代码:文件默认以只读‘r’方式打开file_name = input("输入文件名:")f = open(file_name)print("文件内容是:")for each_line in f: print(e...
2020-06-05 13:50:47
4222
原创 数据管理技术与方法试题
1.数据分类是一个两阶段过程,包括(A)和分类阶段。 A.学习阶段 B.分析阶段 C.实验阶段 D.预测阶段2.直线回归系数假设检验,其自由度为(D)。 A. n-1 B. 2n-1 C. n D.n-23.对于(D)的分析往往需要将特殊的数据预处理方法与分析处理算法集成在一起考虑。 A.事物数据库 B.关系数据库 C.异构数据库 D.多媒体数据库4.关于正态分布,下列说法错误的是(D)。 ...
2020-06-01 21:59:08
910
原创 Python报错 SyntaxError: invalid character in identifier的解决方法
SyntaxError: invalid(无效的) character(字符) in identifier(标识符)句法错误:标识符中的存在无效字符。初学一门新的编程语言时会遇到这个问题,一般原因有:标识符中存在中文字符,如中文状态下的逗号,括弧等。仔细检查报错位置的中英文切换符号,问题就会迎刃而解。...
2020-05-24 12:59:35
12249
1
原创 Python实现汉诺塔问题,经典递归案例
汉诺塔 汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。大梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘。大梵天命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。两则传说(感兴趣的可以了解下)一 法国数学家爱德华·卢卡斯曾编写过一个印度的古老传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创...
2020-05-23 13:49:14
6428
原创 软件测试的概念及详细分类的介绍
文章来自Findyou ,https://www.cnblogs.com/findyou/p/6480411.html先直接上一幅图,有个框架概念,也方便读者直接查找阅读,下文还会出现详细介绍,例如我一开始就只是想看这张图。前言测试小伙伴在谈论软件测试分类,五花八门的分类,眼花缭乱。因为将各个维度划分的内容都整到一块了,在加上各自不同的见解与补充,各种冲突......Findyou我经过多年测试总结基本定为4类测试(最多5类,自动化或者兼容性单独提出来):功能测试、性能测试、安全测试、
2020-05-21 11:44:56
484
转载 关于Python中的lambda,这篇阅读量20万+的文章可能是你见过的最完整的讲解
lambda是Python编程语言中使用频率较高的一个关键字。那么,什么是lambda?它有哪些用法?网上的文章汗牛充栋,可是把这个讲透的文章却不多。这里,我们通过阅读各方资料,总结了关于Python中的lambda的“一个语法,三个特性,四个用法,一个争论”。欢迎阅读和沟通。一个语法在Python中,lambda的语法是唯一的。其形式如下:lambda argument_list: expression其中,lambda是Python预留的关键字,argument_list和expres.
2020-05-19 14:55:24
216
原创 C和C++编程的内存管理
7.1内存分配方式内存分配方式有三种:(1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。如全局变量,static变量。(2)在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。(3)从堆上分配,亦称动态内存分配。程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete释放内存。
2020-05-15 19:19:15
174
转载 真实可靠的Python清屏命令
Python清屏命令启动Python有两种方式,分别为Windows命令行窗口和IDLE的方式。 目录Python清屏命令一、“Windows命令行窗口”下清屏,可用下面两种方法(任选其一)二、在IDLE下清屏三、后记 一、“Windows命令行窗口”下清屏,可用下...
2020-05-08 20:52:13
722
转载 MySQL表锁和行锁机制
MySQL 表锁和行锁机制行锁变表锁,是福还是坑?如果你不清楚MySQL加锁的原理,你会被它整的很惨!不知坑在何方?没事,我来给你们标记几个坑。遇到了可别乱踩。通过本章内容,带你学习MySQL的行锁,表锁,两种锁的优缺点,行锁变表锁的原因,以及开发中需要注意的事项。还在等啥?经验等你来拿!MySQL的存储引擎是从MyISAM到InnoDB,锁从表锁到行锁。后者的出现从某种程度...
2020-05-08 14:07:47
173
原创 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
20166
3
原创 顺时针打印矩阵【剑指offer】
输入一个矩阵,按照从外向里顺时针依次打印每一个数字。 如下图矩阵: 这道题完全没有涉及复杂的数据结构或者高级的算法,看起来是一个很简单的题。但实际解决问题时,会在代码中包含多个循环,并且还需要判断多个边界条件。写代码前一定要有着清晰的思路,把复杂的问题分解成若干个简单的问题。需要依次打印,我们可以把矩阵想象成若干个圈。用一个循环来打印矩阵,每一次打...
2020-05-02 15:42:40
176
原创 C++面试宝典:设计模式
● 请问你用过哪些设计模式,介绍一下单例模式的多线程安全问题参考回答:常见的设计模式如下:单例模式:单例模式主要解决一个全局使用的类频繁的创建和销毁的问题。单例模式下可以确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。单例模式有三个要素:一是某个类只能有一个实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例。工厂模式:工厂模式主要解决接口选择的...
2020-04-12 10:10:47
364
原创 C++面试宝典:计算机网络(二)
● 请问TCP三次握手是怎样的?参考回答:1.客户端发送syn0给服务器2.服务器收到syn0,回复syn1,ack(syn0+1)3.客户端收到syn1,回复ack(syn1+1)● 请问tcp握手为什么两次不可以?为什么不用四次?参考回答:两次不可以:tcp是全双工通信,两次握手只能确定单向数据链路是可以通信的,并不能保证反向的通信正常不用四次:本来握手应该和挥...
2020-04-11 12:37:17
279
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人