- 博客(44)
- 收藏
- 关注
原创 使用C++刷算法题的简明教程
C++及STL库快速入门:1.名称空间using namespace std的解释;2.cin和cout输入输出;3.关于c++的头文件;4.C++的变量声明;5.C++特有的bool变量;6.C++特有的const定义常量;7.C++里超好用的string类;8.C++的结构体struct和C语言结构体的区别;9.C++STL之动态数组vector的使用;10.C++STL之集合set的使用;11.C++STL之映射map的使用;12.C++STL之stack的使用...
2022-01-24 21:05:49 4369
原创 KVM虚拟机
假设要虚拟网卡pci设备地址为0001:01:00.0,使用如下命令生成一个虚拟网卡。编辑虚拟机配置文件,配置pci网卡设备地址。启动虚拟机后在虚拟机内就可以看到透访的网卡。virsh edit :透访后物理机中无法继续使用该网卡。查看要使用网卡的pci设备地址。查看要透访的网卡pci设备地址。
2024-04-12 14:02:45 370
原创 SpringBoot项目部署到Linux系统的常见问题
Spring部署到Linux常见问题:1. Linux防火墙端口未开放,此时navicat无法连接到linux数据库,主机无法访问页面解决方法: 使用Linux命令开放3306以及80端口# firewall-cmd --permanent --add-port=3306/tcp# firewall-cmd --permanent --add-port=80/tcp要使命令生效需要重载防火墙# firewall-cmd --reload此时主机就可以访问虚拟机的这两个端口了,通过cmd窗口
2022-05-22 16:41:33 1700
原创 操作链表时加入头结点
头结点作为哨兵有两点作用:(1)由于开始结点的位置被存放在头结点的指针域中,所以在链表的第一个位置上的操作就和在表的其它位置上操作一致,无须进行特殊处理;(2)无论链表是否为空,其头指针是指向头结点的非空指针(空表中头结点的指针域为空),因此空表和非空表的处理也就统一了。...
2022-05-03 16:02:18 980
原创 JDBC:实现数据库连接与增删改查
1. 数据库连接:手写链接;Druid数据库连接池;2.对数据的增删改查:使用preparedStatment;使用QueryRunner
2022-02-25 19:23:11 817
原创 Android 实验二 火星探测车拍摄照片展示应用实现
一、实验目的掌握持久化技术掌握HTTP和后台任务掌握Looper、Handler与HandlerThread二、实验开发环境和工具可以在Linux或者Windows操作系统上搭建开发环境,所使用的开发工具为Android Studio,使用Java语言,工具包使用JDK1.7或1.8。三、实验内容仿效教材第24章例子,开发展示NASA的火星探测器所拍摄照片的app利用持久化保存技术对网络下载的图片进行缓存,对已缓存的图片直接从本地读取,减少重复的网络请求参考WEB API...
2022-02-05 22:45:27 9971 8
原创 Android 实验一 Activity的生命周期及Intent
一、实验目的 掌握activity组件生命周期函数的用法掌握使用intent实现activity之间的跳转掌握在manifest文中定义多个activity,并指定Launcher Activity掌握Activity的启动模式,和启动模式所对应的Activity和task的关系二、实验开发环境和工具可以在Linux或者Windows操作系统上搭建开发环境,所使用的开发工具为AndroidStudio,使用Java语言三、实验内容1、设计如下界面,包括四个按钮,两个文本框。单击对应按钮可
2022-02-02 23:19:16 3252 4
原创 memset的使用
memsetmemset是内存初始化函数最简单的调用是将一个数组清零const int maxn = 1024;int a[maxn];memset(a, 0, sizeof(a)); // a[0]=a[1]=a[...]=0;sizeof(a) = maxn * 4 = 4096;表示的是将数组首地址a开始往后的4096个字节都设置为0。memset常见误区memset实现原理是根据字节来设置的比如对于字节数组char a[100],将所有字节都设置为5,就可以调用:
2022-02-02 13:18:33 2491
原创 while(~scanf(“%d“, &n))
while(~scanf("%d", &n))和while(scanf("%d", &n) !=EOF)首先介绍scanf()函数:int scanf(char *format[,argument,...]); //scanf("<格式化字符串>",<地址表>);返回类型为int,成功时返回输入值个数,出错则返回EOF,scanf读入到EOF时返回-1。~ 是按位取反,-1取反结果是0,while(~scanf("%d", &n))当没有输入的时候退
2022-01-30 14:43:39 1022
原创 头文件cstring、string、string.h的区别
头文件cstring、string、string.h的区别<string>是C++标准库头文件,使用stirng类型必须首先包含string头文件,用于字符串操作,string类型可以进行+、 =、 +=、 >等运算。std::string 类实际上是 STL 模板类 std::basic_string 的具体化。#include<string>using namespace std;string s;<cstring>是C标准库头文件<strin
2022-01-30 14:36:04 7475
原创 C++常用头文件
标准C++头文件; #include<algorithm>算法类函数;#include<iostream>数据流输入输出; #include<cstdio> 头文件cstdio/stdio.h是C/C++使用最频繁的文件;#include<cmath>数学函数; #include<cctype>字符处理; #include<string>字符串处理;#include<bitset> STL位集容器;#include<list>STL线性表容器;#include<vector>STL动态数组容器
2022-01-30 11:42:04 5639
原创 字符与数字转换问题
字符与数字转换问题字符减‘0’就可以得到相应的数字,数字加‘0’即可得到相应的字符。计算机中的字符包括数值、英文字母、标点符号、制表符号及其他符号,每一个字符都用一个特定的二进制代码来表示,这就是字符的编码。目前,字符编码采用的是美国信息交换标准代码,即ASCII 码 。它是用一个字节的低七位来表示一个字符的编码, 27 =128 ,最高位是 0 ,所以,用 ASCII 码可表示 128 个字符。只要我们自己在程序中输入一个字符(例如:‘a’),计算机就会在编译过程中自动将它转换成它对应的二进制码(9
2022-01-29 23:18:29 2051
原创 算法学习笔记25:动态规划
初识动态规划:如何巧妙解决“双十一”购物时的凑单问题;动态规划学习路线;0-1 背包问题;0-1 背包问题升级版;动态规划理论:一篇文章带你彻底搞懂最优子结构、无后效性和重复子问题;“一个模型三个特征”理论讲解及实例剖析;两种动态规划解题思路总结;贪心、分治、回溯、动态规划四种算法思想比较分析;动态规划实战:如何实现搜索引擎中的拼写纠错功能;如何量化两个字符串的相似度;如何编程计算莱文斯坦距离;如何编程计算最长公共子串长度
2022-01-29 19:24:29 903
原创 算法学习笔记24:回溯算法
笼统地讲,回溯算法很多时候都应用在“搜索”这类问题上。不过这里说的搜索,并不是狭义的指我们前面讲过的图的搜索算法,而是在一组可能的解中,搜索满足期望的解。
2022-01-29 15:47:29 399
原创 算法学习笔记23:分治算法
分治算法:谈一谈大规模计算框架MapReduce中的分治思想;如何理解分治算法;分治算法应用举例分析;分治思想在海量数据处理中的应用;
2022-01-29 06:00:00 748
原创 算法学习笔记22:贪心算法
贪心算法:如何用贪心算法实现Huffman压缩编码?如何理解“贪心算法”;贪心算法实战分析:1.分糖果;2. 钱币找零;3. 区间覆盖
2022-01-28 17:55:11 277
原创 算法学习笔记20:Trie树
Trie树:如何实现搜索引擎的搜索关键词提示功能?Trie 树,也叫“字典树”。顾名思义,它是一个树形结构。它是一种专门处理字符串匹配的数据结构,用来解决在一组字符串集合中快速查找某个字符串的问题。
2022-01-27 22:51:41 308
原创 算法学习笔记19:字符串匹配基础
字符串匹配基础(上):如何借助哈希算法实现高效字符串匹配?BF 算法;RK 算法;字符串匹配基础(中):如何实现文本编辑器中的查找功能?BM 算法的核心思想;BM 算法原理分析:1. 坏字符规则,2. 好后缀规则;BM 算法代码实现;BM 算法的性能分析及优化;字符串匹配基础(下):如何借助BM算法轻松理解KMP算法?KMP 算法基本原理;失效函数计算方法;KMP 算法复杂度分析;
2022-01-27 22:49:58 303
原创 算法学习笔记18:图
图的表示:如何存储微博、微信等社交网络中的好友关系;如何理解“图”;邻接矩阵存储方法;邻接表存储方法;深度和广度优先搜索;什么是“搜索”算法;广度优先搜索(BFS);深度优先搜索(DFS)
2022-01-27 22:45:36 173
原创 算法学习笔记17:堆、堆排序
为什么说堆排序没有快速排序快?如何理解“堆”?如何实现一个堆?堆中插入一个元素; 删除堆顶元素;如何基于堆实现排序?堆的应用一:优先级队列;堆的应用二:利用堆求 Top K;堆的应用三:利用堆求中位数;一篇博客带你深入理解堆(Heap)
2022-01-27 22:42:20 362
原创 算法学习笔记16:递归树
深入浅出讲解借助递归树来分析递归算法的时间复杂度的方法,实例分析快排的时间复杂度,面对任何代码的时间复杂度分析,做到游刃有余、毫不畏惧。
2022-01-27 15:01:05 13030 4
原创 算法学习笔记14:二叉树基础
二叉树基础(上):什么样的二叉树适合用数组来存储?二叉树的遍历;二叉树基础(下):有了如此高效的散列表,为什么还需要二叉树?二叉查找树(Binary Search Tree);1. 二叉查找树的查找操作;2. 二叉查找树的插入操作;3. 二叉查找树的删除操作;4. 二叉查找树的其他操作;支持重复数据的二叉查找树;二叉查找树的时间复杂度分析。
2022-01-25 17:25:33 276
原创 算法学习笔记13:哈希算法
什么是哈希算法? 应用一:安全加密; 应用二:唯一标识 ; 应用三:数据校验; 应用四:散列函数; 哈希算法在分布式系统中有哪些应用? 应用五:负载均衡; 应用六:数据分片; 应用七:分布式存储
2022-01-24 17:36:56 598
原创 算法学习笔记12:散列表
散列表(上):Word文档中的单词拼写检查功能是如何实现的 ?散列思想; 散列函数; 散列冲突 ;散列表(中):如何打造一个工业级水平的散列表? 如何设计散列函数? 装载因子过大了怎么办? 如何避免低效的扩容? 如何选择冲突解决方法? 工业级散列表举例分析——HashMap; 散列表(下):为什么散列表和链表经常会一起使用? LRU 缓存淘汰算法 ; Redis 有序集合; Java LinkedHashMap
2022-01-24 10:08:28 1203
原创 算法学习笔记11:跳表
跳表这种数据结构对你来说,可能会比较陌生,但是它确实是一种各方面性能都比较优秀的动态数据结构,可以支持快速地插入、删除、查找操作,写起来也不复杂,甚至可以替代红黑树。Redis 中的有序集合(Sorted Set)就是用跳表来实现的。如果你有一定基础,应该知道红黑树也可以实现快速地插入、删除和查找操作。那 Redis 为什么会选择用跳表来实现有序集合呢? 为什么不用红黑树呢?学完今天的内容,你就知道答案了。
2022-01-23 15:56:31 293
原创 VS Code的使用
VS Code 用得熟不熟,首先就看你是否会用快捷键。以下列出的内容,都是常用快捷键,使用频率则非常高。任何工具,掌握 20%的技能,足矣应对 80% 的工作。掌握下面这些高频核心快捷键,你和你的工具,足矣露出锋芒。
2022-01-22 23:16:14 1228
原创 IDEA常用快捷键
熟练使用IEDA快捷键可以提高使用IDEA进行编程开发的效率,以下列出的内容,都是常用快捷键,使用频率非常高,希望本篇博客的总结对大家的开发工作有所帮助。
2022-01-22 22:23:12 292
原创 算法学习笔记10:二分查找
二分查找(上):如何用最省内存的方式实现快速查找功能?无处不在的二分思想;O(logn) 惊人的查找速度;二分查找的递归与非递归实现;二分查找应用场景的局限性;二分查找(下):如何快速定位IP对应的省份地址?变体一:查找第一个值等于给定值的元素;变体二:查找最后一个值等于给定值的元素;变体三:查找第一个大于等于给定值的元素;变体四:查找最后一个小于等于给定值的元素
2022-01-22 21:34:34 1116
原创 算法学习笔记9:排序优化
如何实现一个通用的、高性能的排序函数?如何选择合适的排序算法?优化快速排序:1. 三数取中法;2.随机法;举例分析排序函数;几乎所有的编程语言都会提供排序函数,比如 C 语言中 qsort(),C++ STL 中的 sort()、stable_sort(),还有 Java 语言中的 Collections.sort()。在平时的开发中,我们也都是直接使用这些现成的函数来实现业务逻辑中的排序功能。那你知道这些排序函数是如何实现的吗?底层都利用了哪种排序算法?
2022-01-21 01:00:00 164
原创 算法学习笔记8:线性排序
线性排序:如何根据年龄给100万用户数据排序?桶排序(Bucket sort);计数排序(Counting sort);基数排序(Radix sort)。今天,要讲三种时间复杂度是 O(n) 的排序算法:桶排序、计数排序、基数排序。因为这些排序算法的时间复杂度是线性的,所以我们把这类排序算法叫作线性排序(Linear sort)。之所以能做到线性的时间复杂度,主要原因是,这三个算法是非基于比较的排序算法,都不涉及元素之间的比较操作。
2022-01-21 00:45:00 338
原创 算法学习笔记7:排序
排序(上):为什么插入排序比冒泡排序更受欢迎?如何分析一个“排序算法”?冒泡排序(Bubble Sort);插入排序(Insertion Sort);选择排序(Selection Sort);排序(下):如何用快排思想在O(n)内查找第K大元素?归并排序的原理;归并排序的性能分析;快速排序的原理;快速排序的性能分析。排序对于任何一个程序员来说,可能都不会陌生。你学的第一个算法,可能就是排序。大部分编程语言中,也都提供了排序函数。在平常的项目中,我们也经常会用到排序。排序非常重要,我来详细讲一讲经典的排序算法
2022-01-21 00:30:00 1130
原创 算法学习笔记6:递归
递归如何理解?“递归”递归需要满足的三个条件:1. 一个问题的解可以分解为几个子问题的解;2. 这个问题与分解之后的子问题,除了数据规模不同,求解思路完全一样;3. 存在递归终止条件;如何编写递归代码递归代码?要警惕堆栈溢出;递归代码要警惕重复计算;怎么将递归代码改写为非递归代码?递归是一种应用非常广泛的算法(或者编程技巧)。之后的很多数据结构和算法的编码实现都要用到递归,比如 DFS 深度优先搜索、前中后序二叉树遍历等等。
2022-01-20 10:54:22 277
原创 算法学习笔记5:队列
队列:队列在线程池等有限资源池中的应用;如何理解“队列”?顺序队列和链式队列;循环队列;阻塞队列和并发队列;CPU 资源是有限的,任务的处理速度与线程个数并不是线性正相关。相反,过多的线程反而会导致 CPU 频繁切换,处理性能下降。所以,线程池的大小一般都是综合考虑要处理任务的特点和硬件环境,来事先设置的。当我们向固定大小的线程池中请求一个线程时,如果线程池中没有空闲资源了,这个时候线程池如何处理这个请求?是拒绝请求还是排队请求?各种处理策略又是怎么实现的呢?这些问题并不复杂,其底层数据结构就是队列。
2022-01-19 12:36:47 149 1
原创 2022 Linux详细安装教程:以VMware15.5安装CentOS 7为例
安装步骤:1.安装vmware15.51.1下载vmware15.5官方地址:https://www.vmware.com/cn.html选择Workstation Pro,进入新的页面选择版本,然后根据自己的操作系统选择相应选项。进行安装:点击下载好的安装包按照指引完成安装2.VMWare下安装CentOS7.62.1下载CentOS镜像文件CentOS-7-x86_64-DVD-1708.iso下载地址:http://mirror.163.com/centos/7.6.181
2022-01-18 22:16:47 684 1
原创 算法学习笔记4:栈
栈如何理解“栈”?如何实现一个“栈”?支持动态扩容的顺序栈;栈在函数调用中的应用;栈在表达式求值中的应用;栈在括号匹配中的应用;栈的数组实现;栈的链表实现;后进者先出,先进者后出,这就是典型的“栈”结构。从栈的操作特性上来看,栈是一种“操作受限”的线性表,只允许在一端插入和删除数据。
2022-01-18 21:19:37 151
原创 算法学习笔记3:链表
链表链表(上):如何实现LRU缓存淘汰算法?五花八门的链表结构;链表 VS 数组性能大比拼;链表(下):如何轻松写出正确的链表代码?技巧一:理解指针或引用的含义;技巧二:警惕指针丢失和内存泄漏;技巧三:利用哨兵简化实现难度;技巧四:重点留意边界条件处理;技巧五:举例画图,辅助思考;技巧六:多写多练,没有捷径
2022-01-16 23:40:46 647
原创 算法学习笔记1:复杂度分析
复杂度分析(上):如何分析、统计算法的执行效率和资源消耗?为什么需要复杂度分析?大O复杂度表示法;时间复杂度分析;几种常见时间复杂度空间复杂度分析;复杂度分析(下):浅析最好、最坏、平均、均摊时间复杂度。只要讲到数据结构和算法,就一定离不开时间、空间复杂度分析。复杂度分析是整个算法学习的精髓,只要掌握了它,数据结构和算法得内容基本上就掌握了一半。
2022-01-15 21:57:53 501
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人