自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 收藏
  • 关注

原创 Spring定义Bean对象笔记(二)

定义Bean对象的注解有4个,分别是@Component,@Service,@Repository,@Controller,这四个注解的功能都是一样的,唯一的区别就是名字不从。这几个注解一般按照这种方式使用用于实体类的Bean对象定义用于接口实现类的Bean对象定义用于读取数据库的DAO Bean对象定义用于控制层的Bean对象定义此外,对于不同的分层使用不同的注解,一方面可以使得层级更加分明,另一方面后续Spring可以依据注解的名称进行灵活操作。定义Bean&注入。

2024-04-03 22:52:14 1158

原创 Spring定义Bean对象笔记

前言:面向对象语言最基本的元素就是对象,在Spring中把对象都封装为一个个的Bean,即通过Bean容器来管理对象;那么接下来我们看下在Spring中如何创建所需要的Bean。

2024-03-31 21:12:35 928

原创 JAVA代码优雅实现之Stream流(二)

对于这个方法,可能有朋友会稍微有点晕,下面画图演示一下。

2023-12-24 22:21:59 501

原创 JAVA代码优雅实现之Stream流(一)

本文主要是通过代码实现了Stream流的大部分方法,主要是通过代码来看最后的执行结果,并辅以简单的文字介绍,对于一些关键点作出了简要解释,如有疑问可在评论中指出。

2023-12-21 15:27:58 1293 1

原创 JAVA主流日志框架梳理学习及使用

较为全面的图文解析目前市面上主流的日志框架,傻瓜式记录,相信能够快速入门目前市面上主流的JAVA日志框架。

2023-12-18 22:52:36 1700

原创 MyBatis官方文档学习笔记(一)

通过学习MyBatis的官方文档学习MyBatis的使用

2023-05-07 16:01:34 731 1

原创 简单工厂模式-C++

介绍了设计原则,即简单工厂的优缺点,并附以简单工厂C++源码。

2022-10-05 20:58:44 233

原创 自定义map的key类型---C++

从源码的角度剖析map的底层key的实现,并分别分析了基础类型key,复合类型key的使用方式。最后,分析了自定义key类型的实现,并且给出了两种实现自定义key类型的方法。

2022-09-29 17:30:31 3239

原创 unordered_map自定义key类型-C++

深入理解unordered_map自定义key类型,从源码的角度分析实现自定义key

2022-09-27 22:06:43 2409

原创 单例模式详解

单例模式详解:懒汉式+饿汉式,双重检测锁+内存屏障防止指令重排+模板类

2022-09-27 19:18:38 359

原创 C++输入输出流解析

C++的输入输出流详解,一步步分析get,getlien方法,掌握输入输出方法。

2022-08-27 13:15:33 338

原创 线程池设计---管理者线程-消费者线程

线程池简单设计:包括消费者线程,管理者线程和任务队列。任务队列采用function对象来适配不同的处理任务。

2022-08-12 19:27:50 249

原创 操作系统——进程调度笔记

进程调度算法,通俗易懂

2022-07-27 22:39:36 265

原创 webserver流程图——搞懂webserver各模块间调用关系

webserver流程图,更直观的展现webserver各模块间的关系,相信你通过看webserver流程图能够轻易的读懂的webserver项目~

2022-06-26 16:18:24 1623 3

原创 循序渐进了解操作系统之——虚拟内存(一)

虚拟内存无疑是操作系统中最重要同时也是非常复杂的一块内容,也是面试中面试官最喜欢问的内容,要想了解操作系统,那么虚拟内存必须得了解。该篇文章是虚拟内存的入门知识,带你了解一下虚拟内存~...

2022-06-11 17:30:16 327 6

原创 循序渐进了解操作系统之——进程

面试必问:操作系统——进程

2022-05-02 16:56:38 485 6

原创 python----正则表达式

快速掌握python正则表达式,提升工作效率!

2022-03-27 00:41:12 932

原创 C++标准模板库之——sort函数

C++ sort函数,小白请进,有帮助的哦~

2022-01-12 23:11:45 969

原创 音乐播放器开发------Day2

3 播放功能开发3.1 导入相关工具及头文件#include<QMediaPlayer>//widget.h中添加该头文件(该头文件是QMediaPlayer使用)上面头文件导入后还是不能识别,需要在.pro项目里添加工具包,内容如下:QT += core guiQT += multimedia在Widget类里添加使用到的成员变量,如下QString m_currentMusicName;//记录当前的音乐名QString m_musicName[MAXMUSICSIZE

2021-11-02 22:13:54 266

原创 音乐播放器开发-------Day1

前言:为了实时的记录自己音乐播放器的开发过程,特此专门开个专栏来实时记录音乐播放器的开发过程,从零到一实现项目的开发。如果有兴趣相投的小伙伴,欢迎大家一起交流学习~~~本播放器目前整体思路为分为客户端和服务器,即C/S架构,客户端搭建在Windows平台,服务器搭建在Linux平台。播放器主要想实现的功能包括:播放/暂停,上一曲,下一曲,歌词显示,双击播放,注册,登录等…下面我们开始第一天的工作,仿照网易云播放器对自己开发的音乐播放器UI界面的整体结构布局。第一天任务很轻松,只是简单的操作了几个空间

2021-10-31 08:58:56 440

原创 剑指offer-----正则表达式匹配

参考资料题目: 请实现一个函数用来匹配包括’.‘和’*‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’*'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"ab*ac*a"匹配,但是与"aa.a"和"ab*a"均不匹配.数据范围:字符串长度 0≤∣str∣≤10000 \le |str| \le 10000≤∣str∣≤1000。要求:空间复杂度 O(1)O(1)O(1),时间复杂度 O(n)O(n)O(n)

2021-10-14 13:33:07 244 2

原创 全网最细MySQL事务!!!(万字长文详细分析四个隔离级别)这还能不懂?(强烈建议收藏)

前言:mysql事务是mysql中非常重要的一部分,那么什么是mysql事务?为什么要用mysql事务?mysql事务有什么特点? 下面,我们就一起来深入了解mysql事务!!!mysql事务(Transaction):事务处理可以用来维护数据库的完整性,它保证成批的Mysql操作要么完全执行,要么不执行。存储引擎:不是所有的存储的引擎都支持事务处理,Mysql支持好几种存储引擎,而最常使用的就是InnoDB和MyISAM。其中,仅有InnoDB明确的支持事务处理管理。事务的四个特性:事务管理具有四个

2021-10-01 20:58:13 764 24

原创 字符串匹配算法-----Sunday

字符串匹配算法有很多种,今天我们就来讲一下其中一个匹配算法Sunday。Sunday算法较为容易理解,比KMP算法容易理解的多!!!而且,Sunday算法的匹配速度非常快,大家一定要掌握!!!首先,我们先准备两个用于匹配的字符串,一个是主字符串,用于在这里面匹配匹配字符串,一个是匹配字符串。主:“csapadgsdgdfegapgladgcsdnnsdcaqgeqtdf”匹:“csdnnsdcaq”算法过程首先将匹配字符串与主字符串的开头对其,进行一个一个的比较字符串是否相等,如果相等则同时

2021-09-19 09:10:38 941 22

原创 Kettle连接不上数据库及中文乱码问题解决

Kettle 连接数据库问题分析及解决一、问题一:测试连接数据库出问题1 将如下驱动包导入data-integration目录下的Lib目录mysql-connector-java-5.1.40.jarmysql-connector-java-8.0.17.jarmysql-connector-java-5.1.40.jar提取码dny8mysql-connector-java-8.0.17.jar提取码qqxh2 重新测试连接数据库如果连接成功,则结束,如果连接成功但是再进行数据转换时出

2021-09-18 12:26:02 4470 2

原创 还在感觉为红黑树所困扰?相信我你就点进来看!!!★★★

红黑树删除,点击这里!!!红黑树 :红黑树是一种特殊的二插查找数,不过为了防止二插查找树在最差情况下蜕变成链表,因此红黑树利用了结点的颜色来调节树的平衡,这使得红黑树的任意一条路径长度都不可能超过其他路径的两倍,因此红黑树是一种自调节的高度平衡的二叉查找树。性质:性质1:结点要么是红要么是黑性质2:根结点必须是黑色性质3:每个叶子结点(NIL)是黑色性质4:每个红色结点的两个子结点一定都是黑色。,不能有两个红色结点相连性质5:从根结点开始,到这条路径上的空结点,各条路径上的黑色结点个数相同

2021-09-12 09:55:25 270 27

原创 ★★★哈希查找算法(查找字符串中特定字符位置)----简单但是一定要掌握!!!

哈希查找(hash):哈希查找算法始终非常高效的查找算法,其时间复杂度在最好的情况下可以达到O(1),即使是比较坏的情况,时间复杂度也非常低,查找数据非常快。事物都有两面性,有优即有劣。虽然哈希查找非常高效,但是他的高效是以时间换空间的代价来实现的。在如今,空间问题我们很容易解决,比如加内存等。可是时间复杂度的提高就非常难,因此,在允许的情况下,如果可以选择空间换时间,那么我们就一般会选择牺牲空间换取时间上的高效。在这里,我通过查找一个字符串中字符出现的位置来描述一下哈希查找的基本思想。源字符串: “w

2021-09-06 10:55:57 1765 20

原创 你还不懂红黑树删除?看这篇就够了!!!硬淦红黑树---彻底拿下它!!!

红黑树:红黑树是一种特殊的二插查找数,不过为了防止二插查找树在最差情况下蜕变成链表,因此红黑树利用了结点的颜色来调节树的平衡,这使得红黑树的任意一条路径长度都不可能超过其他路径的两倍,因此红黑树是一种自调节的高度平衡的二叉查找树。性质性质1:结点要么是红要么是黑性质2:根节点必须是黑色性质3:每个叶子节点(NIL)是黑色性质4:每个红色节点的两个子节点一定都是黑色。,不能有两个红色节点相连性质5:从根节点开始,到这条路径上的空节点,各条路径上的黑色结点个数相同推论:根据以上五个性质,我们可

2021-09-04 12:24:16 620 24

原创 干!一文彻底搞懂C++重载、隐藏和覆盖(重写)!!!

前言之所以写这篇文章,一方面是想自己总结,彻底搞懂重载、隐藏和重写三者之间的关系,另一方面就是想帮助大家更清楚的认识这三者之间的关系。我在写这篇文章之前也大概搜索了一些关于这三者的博客,但是总感觉那些文章写的并不是我想要的,也并没有表达清楚这三者之间的关系,因此决定写下这篇博客。我相信在看这篇文章之前肯定有很多小伙伴和我一样对这三者关系不是很清楚,总感觉是似懂非懂,总是差那么一点火候!有时候觉得自己懂了,可是换个时间,又感觉迷迷糊糊的,那么我相信你看了这篇文章后,这种感觉将不复存在!你将对重载、隐藏和重

2021-08-27 14:39:38 2039 9

原创 2.4.30动态中位数查找----优先队列

算法第四版2.4.30题目,插入和删除O(lgn),查找O(1)//动态查找中位数//常数时间内找到中位数,O(logn)时间内插入和删除中位数//解题思路//1、创建两个堆,一个大顶堆,一个小顶堆//2、大顶堆的堆顶放中位数,//3、保证插入的元素均匀分布在两个堆中/*注:1.大顶堆的元素一定小于等于小顶堆的元素2.要弹出堆的元素数量一定不小于插入堆的元素数量3.如果是大堆插入,小堆弹出,则中位数为中间(正好是奇数时)或者N/2+1;4.如果是小堆插入,大堆弹出,则中位数为中间

2021-08-22 16:28:58 285 1

原创 2.5.8标准输入读取字符按频率排序输出(自定义结构体排序)

解题思路由于是要从标准输入中读取,并按照单词出现的频率排序,因此我们可以按照如下方式去做。将读入的单词放到一个数组中对这个数组进行排序计算每个单词出现的次数定义一个结构体,来存储单词和单词出现的次数按照自定义结构体进行排序输出为什么要定义一个结构体?很简单,之所以定义结构体来存储单词和出现的频率是因为仿照MAP容器,每一个单词对应一个单词出现的频率,因此我们能够精确的确定单词和频率之间测对应关系;对自定义结构体进行排序利用STL算法库中的sort()函数,sort()函数的前两个参

2021-08-22 16:24:03 139

原创 多线程拷贝文件

多线程实现普通文件程序特点*默认创建5个线程main函数传参个数等于3(./app src_file des_file [ThreadNum])*线程传参封装到CopyInfo信息结构体中,包括线程id,源文件名,目标文件名主要功能实现程序主要包括三个部分,主函数,线程函数和函数条函数。主函数主函数的工作为:*创建线程,并每个线程的id申请活动活动id的空间*为每个线程的信息结构体申请空间*回收线程函数*调用赏条功能线程函数*对文件进行实际的拷贝工作在线程函数中,每个线程都

2021-08-04 20:59:47 363

原创 多进程拷贝文件

拷贝文件进程#include <stdio.h>#include <unistd.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include <stdlib.h>#include <string.h>//错误码enum ecode_err{ argument_list_err, src_open_err, des_o

2021-08-04 20:52:50 598

原创 矩阵的局部最小元素1.4.19

题目:给定一个含有 N^2 个不同整数的NxN数组a[]。设计一个运行时间和N成正比的算法来找出一个局部最小元素。满足a[i][j] < a[i+1][j]、a[i][j] < a[i-1][j]、a[i][j] < a[i][j-1]、a[i][j] < a[i][j+1]。代码实现/*------------------------矩阵的局部最小元素--------------------*///解题思路//仿照数据的局部最小元素:每次查找的方向总是小于上一次查找的值(

2021-08-04 20:34:52 466

原创 数组的局部最小元素1.4.18

题目:编写一个程序,给定一个含有N个不同整数的数组,找到一个局部最小元素:满足a[i] < a[i-1],且a[i] < a[i+1]的索引i。代码如下/*----------局部最小值---------------*///如果a[x] < a[x-1],a[y]<a[y+1],则a[x...y]的子数组中一定存在局部最小元素,即极小值//默认数组的开头元素的前一个,和结尾元素的后一个为无穷大#include <vector>using namespac

2021-08-04 20:27:10 326

原创 父子进程交替报数----进程通信

实现:父子进程实现交替报数父进程给子进程发送限号SIGUSR2子进程给父进程发送信号SIGUSR1由于父子进程通信,因此需要定义父进程和子进程各自的捕捉函数//信号实现父子进程间通信/*Parent send SIGUSR2*//*Child Send SIGUSR1*//*SIGUSR1,SIGUSR2 默认状态为杀死进程*/#include <stdio.h>#include <unistd.h>#include <signal.h>#i

2021-07-26 14:57:20 596

原创 Linux GDB常用调试命令

GDB调试器计算机行业中,无论软件或硬件领域,所有的逻辑问题或异常统称为BUG, 排除故障或处置方案称为DEBUG常见的DEBUG调试工具主要分为两类, GUI (可视化调试工具,有图形界面) , GDB(命令调试工具)DEBUG调试工看工具可以让开发者在程序运行时干预, 随心所欲的让程序在任意位置暂停或继续, 暂停时可以设置程序数据或观察程序逻辑, 可以非常方便的查找异常位置,定位错误原因!两种调试工具的优劣:GUI(可视化图形调试器)* 上手较快,使用方便(高度IDE)* GUI调试工具

2021-07-06 21:04:49 132

原创 基数排序-------C语言实现

基数排序核心思想:根据数字的位(个位、十位、百位…)来进行的排序算法,有点类似于哈希表,基数排序首先应该找到数字中最大的数,然后算出这个数有几位,其次依次根据个位、十位、百位、千位、…、最大位来进行排序平均时间复杂度:O( n*k)k:为最大的位数空间复杂度:O(m+n)空间复杂度我们也可以看出来,主要就是取决于链表的数量以及序列元素的数量,所以空间复杂度为O(n+k)稳定性:稳定适用场合:数组量大且较无序排序名称最好时间复杂度平均时间复杂度最坏时间复杂度空间复杂度稳定性适用

2021-06-29 11:39:53 1632

原创 堆排序---C语言实现

堆排序核心思想:利用了完全二叉树的思想(一个有n个结点的完全二叉树,其父结点 i 的范围为:0~n2\frac{n}{2}2n​ - 1 左孩子:2*i+1 右孩子:2*i+2),即有大堆:所有的父节点的值均大于孩子的值,最终建堆后堆顶则为最大值小堆:所有的父节点的值均小于孩子的值,最终建堆后堆顶则为最小值此例中基于大堆实现实现过程:我们将来的数组视为一颗完全二叉树,如下图所示:根据大堆的特点,我们首先应该建堆,而建堆的顺序则是由下往上,因此,我们先从最底层开始,由于父节点的范围是 0~n2\f

2021-06-22 11:06:17 189

原创 归并排序算法详解---C语言实现

归并排序前备知识:如果数组中只有一个数,那么这个数组一定是有序的!核心思想:将两个有序的数组合并为一个有序的数组(运用了分组的思想:递归)实现过程:对于如下数组进行归并排序,过程如下:如上所示,由于归并排序是将两个有序的数组合并为一个有序的数组,因此我们首先是对上述数组进行拆分,数组长度为nLen = 9,因此将数组均分为nLen/2 = 4,拆分后如下图所示:如上图所示,经过一次折半将数组拆分为了两个数组,由于归并排序的思想是将两个有序的数组进行合并,因此我们需要继续对数组进行拆分,拆分后如下

2021-06-21 21:47:09 1192

原创 插入排序与希尔排序---C语言实现

插入排序核心思想:设置一个变量来记录当前插入位置的值,如果前一个位置大于该值则将前一个位置的值移入该位置,然后继续与前面元素的值比较,直至该值大于前一个值或者移动到最开头位置,插入该值。实现方式例:对如上数组arr进行由小到大排序(注:一个元素肯定有序,插入元素之前一定是一个有序序列)注:这里橙色箭头仅表示此时要插入的位置,蓝色箭头表示与插入的值比较的位置首先,我们应该定义一个变量来标记一下即将要插入的值:nValue = arr[1];然后,数组从下标为1的位置开始与前面的元素进行比较,如果此

2021-06-20 20:21:08 294

空空如也

空空如也

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

TA关注的人

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