- 博客(1022)
- 资源 (48)
- 收藏
- 关注
原创 老程序员解Bug的通用套路
程序员在很多人的印象里是一份严(ku)谨(bi)的职业,也是一个被搞怪吐槽乐此不疲的职业,程序员们面对复杂的代码敲打电脑时连眉头都不会皱一下,但是有一个词却是他们痛苦的根源,它就是Bug。 记得刚毕业入行时,我们老大派给我和另外一个新来同事的第一件事就是修Bug,要不是在学校敲过几年代码,还真不知道如何下手!和我一起进公司的另外一个同事完全就是以“看戏者”的身份,看我搞了...
2018-06-06 09:25:29 12147 25
原创 C++17新属性详解
C++17的入选特性有:(1).非类型模板参数的 auto 模板参数分为两种,一种是类型模板参数,也是我们用得最多的一种:template <typename T, typename U>auto add(T t, U u) { return t+u;} 里面的 T 和 U 都是类型模板参数。另一种是非类型模板参数,它可以让不同的字面量成为模板的参数:te...
2018-05-27 21:59:38 53935 5
转载 C++大牛的博客
1. C++大牛的博客 Bjarne Stroustrup的博客: Bjarne Stroustrup’s HomepageBjarne Stroustrup,不认识的可以去面壁了,没有他,就没有我们现在的饭碗。Bjarne Stroustrup是丹麦人,目前任教于TAMU。他的Homepage和他的书籍The C++ Programming Language一样
2018-01-21 21:37:00 5574 1
原创 C++模板详解
一.C++模板的定义: 模板是C++支持参数化多态的工具,使用模板可以使用户为类或者函数声明一种一般模式,使得类中的某些数据成员或者成员函数的参数、返回值取得任意类型。模板是一种对类型进行参数化的工具;二.使用模板的目的: 能够使得程序员编写与类型无关的代码。比如编写了一个交换两个整型int 类型的swap函数,这个函数就只能实现int 型,对double,字符这些
2017-05-31 21:19:42 2372 3
原创 Qt的5种常用布局搭建
Qt布局详解: 界面开发首先要对整个界面进行布局,使窗体上的所有的控件必须有一个合适的尺寸和位置。那么做出来的界面才看起来美观。那么如何对界面进行布局呢?Qt提供了一些类负责排列窗体上的控件,主要有:QHBoxLayout,QVBoxLayout,QGridLayout,QFormLayout,QStackLayout。(布局管理类)这些类简单易用,无论在代码中还是用Qt Design
2016-09-30 09:06:16 5384 1
原创 优秀程序设计的18大原则
优秀程序设计的18大原则1、避免重复原则(DRY - Don’t repeat yourself)编程的最基本原则是避免重复。在程序代码中总会有很多结构体,如循环、函数、类等等。一旦你重复某个语句或概念,就很容易形成一个抽象体。2、抽象原则(Abstraction Principle)与DRY原则相关。要记住,程序代码中每一个重要的功能,只能出现在源代码的一个位置。
2016-07-11 17:07:57 6205
原创 VMware安装Ubuntu(2024最新最全版)
Ubuntu是一款基于Debian的Linux操作系统,它以易用性和稳定性著称,是许多Linux爱好者的首选。本文将介绍如何在VMware虚拟机中安装Ubuntu操作系统,让读者可以在Windows或macOS系统上体验Ubuntu的魅力。
2024-03-17 21:07:27 900
原创 Visual Studio 2019安装使用教程-详细
在属性页对话框下配置属性,选择链接器-> 系统,然后选择编辑框旁边子系统属性。在显示的下拉列表菜单,选择控制台 (/SUBSYSTEM: CONSOLE)。选择确定以保存所做的更改。若要生成项目时,从生成菜单选择生成解决方案或者直接按快捷键F7。进入之后,目前是最新的2022版本,为了项目的兼容性,我们选择较早的2019版本。”,在右边的三角箭头下来列表中选择“c++17”在项目的属性页对话框中选择。3)、 点击2019下载,会弹出登录。11)、选择C++17语言标准。8)、安装完之后,点击“
2024-03-17 21:06:55 164
原创 Vmware16安装指南-详细
VMware Workstation允许用户在单台物理计算机上同时运行多个虚拟机操作系统。VMware Workstation是一款桌面虚拟化软件,支持Windows、Linux和macOS等主流操作系统。通过VMware Workstation,用户可以在一台物理计算机上创建和运行多个虚拟机,每个虚拟机都有独立的操作系统、硬件资源和网络设置。这使得用户可以在不影响主机操作系统的情况下,安全地测试和运行不同的应用程序、开发环境和操作系统。
2024-03-14 08:44:51 362
原创 Visual Studio 2017安装使用教程-详细
在属性页对话框下配置属性,选择链接器-> 系统,然后选择编辑框旁边子系统属性。在显示的下拉列表菜单,选择控制台 (/SUBSYSTEM: CONSOLE)。选择确定以保存所做的更改。若要生成项目时,从生成菜单选择生成解决方案或者直接按快捷键F7。进入之后,目前是最新的2022版本,为了项目的兼容性,我们选择较早的2017版本。”,在右边的三角箭头下来列表中选择“c++17”在项目的属性页对话框中选择。3)、 点击2017下载,会弹出登录。11)、选择C++17语言标准。8)、安装完之后,点击“
2024-03-14 08:44:28 272
原创 C++泛型详解
如果要在函数模板内部使用这样的类型,必须显示告诉编译器这个名字是一个类型,否则编译器无法得知它是一个类型还是一个值。模板形参可以是表示类型的类型形参(type parameter),也可以是表示常量表达式的非类型形参(nontype parameter)。编译器将确定用什么类型代替每个类型形参,用什么值代替每个非类型形参,然后产生并编译(称为实例化)该版本的函数。在定义的类模板中,使用模板形参作为类型或值的占位符,在使用类时再提供具体的类型或值。函数模板是一个独立于类型的函数,可以产生函数的特定类型版本。
2024-03-10 21:58:54 925 1
原创 浅谈加密技术
通过我们的了解,对称加密的实现比较简单,但是安全性不是很高,一般用在对安全要求级别不是很高的情况下,但是非对称加密比较复杂,但是安全性很高,在实际应用中需要我们综合利弊考虑.
2024-03-10 21:42:28 21
原创 蓝桥杯大赛及备战建议
通常,蓝桥杯省赛及国赛在每年的5月份举行,但是在此之前,2023年12月、2024年3月,都可以参加蓝桥STEMA考试。STEMA考试同蓝桥杯省赛、国赛同属蓝桥体系,形式、难度、范围、题型、考试系统对标蓝桥杯省赛,STEMA考试一年多次,非常适合作为蓝桥杯赛事的模拟考试使用,提前熟悉题型及操作方式。蓝桥杯是目前国内最大的信息技术竞赛,2024年15届蓝桥杯青少年组STEMA考试报名的时间已公布,STEMA赛事组别有哪些?,获得认可度高的编程比赛证书,无疑会增加从千万名考生中脱颖而出的筹码,上一届有超过。
2024-03-03 21:52:02 1356
原创 开源软件的未来发展趋势
开源软件的未来充满了挑战和机遇。随着技术的发展和社会的进步,开源软件将继续以其独特的方式塑造软件行业。企业、开发者和教育者们需要把握趋势,积极应对挑战,同时也要捕捉那些随之而来的机遇。只有这样,我们才能确保开源生态系统的繁荣、可持续,并最终推动整个软件行业向前发展。
2024-02-26 21:26:33 655
原创 GO语言学习笔记(5)
Go 语言中数组可以存储同一类型的数据,但在结构体中我们可以为不同项定义不同的数据类型。结构体是由一系列具有相同类型或不同类型的数据构成的数据集合。结构体定义需要使用 type 和 struct 语句。struct 语句定义一个新的数据类型,结构体中有一个或多个成员。type 语句设定了结构体的名称。
2024-02-25 18:25:33 323
原创 ACM竞赛及备战建议
ACM竞赛全称是“ACM国际大学生程序设计竞赛”(ACM International Collegiate Programming Contest,简称ACM ICPC或ICPC)。这是一项国际性的大学生计算机程序设计竞赛,由美国计算机协会(Association for Computing Machinery, ACM)主办。该竞赛被认为是大学生计算机编程能力的世界级竞赛,很多知名大学均派队参赛。ACM国际大学生程序设计竞赛的历史可以上溯到1970年,当时在美国德克萨斯A&M大学举办了首届比赛。
2024-02-25 18:23:11 1061 3
原创 C++项目管理
弱耦合的模块可以在不同的 git repo(svn库)里,比如 alicpp的三方库,甚至于一些二方库,它们可以有自己的 git repo,只要我们有办法找到他们的 include 和 lib就可以和它们对接编译和链接,我们也可以从容的针对它们的不同版本进行引进,非常长期的做版本升级工作。并不是让我们每天都发布,适当的控制风险是必要的,但是可以认为任何超过一个月的发布都是拖沓的和缓慢的,我们控制风险靠的是测试集群的设立,尽可能模拟线上环境的测试,灰度发布,等等手段,其中没有一个是“等待”。
2024-02-18 22:31:11 886
原创 Visual Studio 必知快捷键指南
(1).按“Ctrl+Tab”键,打开IDE导航窗口,按住Ctrl键,同时用方向键或鼠标选中一个文件或工具窗体来激活。(1).菜单:按“Ctrl+Alt+Down”显示“文件下拉菜单”,可以通过上下的方向键来选择文件打开文件。(1).在代码块的任意位置,按“Ctrl+m,Ctrl+m” ,可以折叠或展开光标所在代码块。(1).按Ctrl+Shift+U 将当前字符或选中的字符转换为大写;(1).设置或取消书签:Ctrl+K, Ctrl+K;(2).转到下一书签:Ctrl+K, Ctrl+N;
2024-02-18 22:30:33 1040
原创 常见音视频文件的编码和封装格式详解
解封装:如下图所示,就是将FLV、MKV、MP4等文件解封装为视频H.264或H.265压缩数据,音频MP3或AAC的压缩数据,下图为常用的基本操作。//获取数据包//.....解码或者存储//重置上述代码所示,通过循环调用av_read_frame()读取到pkt包,然后可以进行解码或者存储数据,如果读取的数据结束,则退出循环,开始指向结束操作。音视频编码和封装格式是数字媒体领域的基石。
2024-02-11 23:44:44 776
原创 GO语言学习笔记(4)
函数内定义的变量称为局部变量,它们的作用域只在函数体内,参数和返回值变量也是局部变量。函数外定义的变量称为全局变量,全局变量可以在整个包甚至外部包(被导出后)使用。形式参数会作为函数的局部变量来使用。不同类型的局部和全局变量的默认值为:int为0float32为0pointer为nil。
2024-02-11 21:51:41 353 1
原创 音频3A算法详解
回声消除(AEC)是指在二线传输的两个方向上同时间、同频谱地占用线路,在线路两个方向传输的信号完全混在一起,本端发信号的回波就成为了本端信号的干扰信号,利用自适滤波器可抵消回波以达到较好的接收信号质量,即为回声消除。音频数据的处理过程有个预处理过程,就是在音频数据采集完成之后的一步,音频的预处理就是用的3A处理。瞬态噪声的共同特点就是突发性极强,在时域上呈振荡衰弱的形式出现,持续时间在十几毫秒至上百毫秒不等,在频域上分布很宽,所以在频域上瞬态噪声的频谱基本上都是和正常的语音的频谱混叠在一起的很难进行抑制。
2024-02-04 23:20:33 531
原创 图像3A算法详解
AF算法的基本步骤是先判断图像的模糊程度,通过合适的模糊度评价函数求得采集的每一副图像的评价值, 然后通过搜索算法得到一系列评价值的峰值, 最后通过电机驱动将采集设备调节到峰值所在的位置, 得到最清晰的图像, 算法的关键在于达到准确度和速度的平衡, 同时算法的精度受到软件算法和硬件精度的双重影响。评价函数有很多种, 主要考虑的图像因素有图像频率(清晰的图像纹理多, 高频分布较多), 还有图像的灰度分量的分布(图像对应的灰度图的分量分布范围越大,说明图像的细节较多, 反应的图像的清晰程度)。
2024-02-04 23:20:10 445
原创 C++序列化简析
CArchive类是VisualC++程序设计中最常用的文件处理的方法,CArchive类不仅可以实现简单数据结构的读写操作,还可以通过对CObiect类的派生实现对复杂数据结构的读写操作,因此,利用CArchive类,可以轻松实现任意数据结构的序列化。在使用基于OTT的数据库结构的程序进行性能测试时,由于读入的PNR数据是XML格式的文档,所以,读入XML文件到内存,将其转为DOM树,继而将DOM树中的数据转化为OTT数据库所需要的对象结构,需要耗费大量的时间。如果估计大了,又会造成空间的浪费。
2024-01-28 13:02:44 143
原创 GO语言学习笔记(3)
Go 语言最少有个 main() 函数。你可以通过函数来划分不同功能,逻辑上每个函数执行的是指定的任务。函数定义解析:* func:函数由 func 开始声明* function_name:函数名称,参数列表和返回值类型构成了函数签名。* parameter list:参数列表,参数就像一个占位符,当函数被调用时,你可以将值传递给参数,这个值被称为实际参数。参数列表指定的是参数类型、顺序、及参数个数。参数是可选的,也就是说函数也可以不包含参数。
2024-01-28 13:02:14 925
原创 最优比率生成树算法
最优比率生成树是图论中的一个高级问题,解决该问题需要对图论和算法设计有深入的理解,通过结合二分搜索和最小生成树算法,我们能够找到一个满足最优比率条件的生成树。理解并实现最优比率生成树算法是一个不小的挑战,但它也为我们提供了一个强大的工具,以优化和解决现实世界中的复杂问题。随着技术的发展,在未来看到更多的创新方法来提高这一算法的效能和应用范围。
2024-01-20 17:52:34 1038
原创 patchelf 修改 rpath 以解决动态库问题
这其实可以通过 patchelf 来实现。运行 readelf -a lib_media搜索与 rpath 相关的内容,果然搜索到了,发现确实设定了这个变量的值,并且指向默认路径,这就是导致 LD_LIBRARY_PATH 不能生效的原因。一般情况下我们编译出来的程序lib_media一直使用的是系统默认路径中的动态库,需求是要使用自定义目录中的动态库,就可以使用patchelf来实现。运行如下命令,将 rpath 的只修改为自定义的动态库目录就解决了这个问题。
2024-01-20 16:08:32 352
原创 patchelf: not found错误解决及功能说明
patchelf是一个用来修改elf格式的动态库和可执行程序的小工具,可以修改动态链接库的库名字,以及链接库的RPATH。当没有安装patchelf时,Lite的.so预测库无法被链接所以会报错。
2024-01-20 16:07:55 384
原创 度限制最小生成树和第K最短路算法
最小生成树算法和第K最短路算法都是图论中的经典算法,它们在网络设计、路由选择等多个领域有着重要应用。这些算法在实际应用中通常需要根据具体问题的特点来选择合适的算法。MST算法着重于构造最小权重的树,而第K最短路算法侧重于寻找多条不同的路径。
2024-01-14 23:30:52 986
原创 GO语言学习笔记(1)
1). 第一行代码 package main 定义了包名。你必须在源文件中非注释的第一行指明这个文件属于哪个包,如:package main。package main表示一个可独立执行的程序,每个 Go 应用程序都包含一个名为 main 的包。2). 下一行 import "fmt" 告诉 Go 编译器这个程序需要使用 fmt 包(的函数,或其他元素),fmt 包实现了格式化 IO(输入/输出)的函数。3). 下一行 func main() 是程序开始执行的函数。
2024-01-14 23:30:44 878 1
原创 GO语言简析
Go语言,又称为Golang,是Google公司在2009年推出的一种静态强类型、编译型和并发型语言。Go语言的设计目标是提高编程效率,它的语法接近C语言,但考虑了内存安全和垃圾回收等现代语言特性,同时也非常关注编译速度和执行效率。
2024-01-07 22:10:29 769
原创 KMP算法详解
KMP算法是一个高效的字符串匹配算法,它通过预处理模式字符串来避免不必要的比较,从而实现了线性时间复杂度的匹配过程。其核心思想是,当遇到不匹配的情况时,可以利用已知的部分匹配信息,尽可能地移动模式字符串,减少比较的次数。通过C++实现,我们可以直观地在实际应用中体会到KMP算法的强大和效率。
2024-01-07 19:43:23 942
原创 并查集的应用及算法详解
在并查集的高级应用中,我们不仅限于解决动态连通性问题,还可以解决一些更加复杂的问题,比如求解最小生成树(Kruskal算法)、寻找等价类的数量、处理动态图连通性问题等。动态图连通性问题指的是在一系列顶点和边不断加入图中的过程中,动态维护图的连通性信息。树中的每一个节点都包括集合的一个成员,每棵树都表示一个集合。左边的树表示集合{b,c,e,h}其c是代表。在上述代码中,我们使用了路径压缩和按秩合并的优化方法,这可以大大提升并查集的效率。每个节点指向它的父节点,根节点指向自己,代表集合的代表元素。
2024-01-07 19:43:00 315
原创 算法复杂度代码示例
这里,给定规模 n,计算 Fib(n) 所需的时间为计算 Fib(n-1) 的时间和计算 Fib(n-2) 的时间的和。这里,n 为数组 array 的大小,则基本步骤的执行数量约为 n*(n-1)/2,所以算法复杂度为 O(n2)。阶乘(factorial),给定规模 n,算法基本步骤执行的数量为 n,所以算法复杂度为 O(n)。这里,给定规模 n,则基本步骤的执行数量约为 n*n*n ,所以算法复杂度为 O(n3)。这里,给定规模 n,则基本步骤的执行数量为 2n,所以算法复杂度为 O(2n)。
2023-12-31 21:08:25 381
原创 算法复杂度分析
改变一个对数的底只是把对数的值改变了一个常数倍,所以当不在意这些常数因子时,我们将经常采用 "lg n"记号,就像使用 O 记号一样。我们说,log2n 的增长速度要慢于 n,因为当 n = 8 时,log2n = 3。而实际中,我们一般仅考量算法在最坏情况下的运行情况,也就是对于规模为 n 的任何输入,算法的最长运行时间。比如:T(n) = 73n3 + 29n3 + 8888 的趋势就相当于 T(n) = Θ(n3)。使用 O 记号法(Big O Notation)表示最坏运行情况的上界。
2023-12-31 20:45:39 904
原创 图的割点和割边算法C++代码实现
图的割边和割点是图论中的重要概念,用于描述图中的关键节点和边。割点是指将图分割成多个连通分量的节点,而割边是指将图分割成多个连通分量的边。在C++中,可以使用图论算法库来处理图的割边和割点。一些常用的图论算法库包括Boost Graph Library和NetworkX。割点:如果去掉一个点以及与它连接的边,该点原来所在的图被分成。割边:如果去掉一条边,该边原来所在的图被分成。三、 tarjan算法的应用及代码实现。1.图的割点代码实现。2.图的割边代码实现。
2023-12-31 20:11:18 393
原创 联通三角形分组的C++算法实现
有一个三角形网格,它有不同的三角形组,例如,一组15个相连的三角形,然后是另一组(没有连接到第一个)的25个三角形。连接的三角形组的数量是任意的,组本身可以是任何大小(从1到任何大小)。需要为每个三角形顶点分配一个索引,指示它属于哪组连接的三角形。因此,在上面的示例中,将为组成15个三角形的组的顶点提供索引0,为组成25个三角形的组的顶点提供索引1(依此类推)。
2023-12-31 19:56:25 361
原创 最小费用最大流问题-C++算法实现
它结合了最大流和最短路径算法,通常使用贝尔曼-福特算法或迪杰斯特拉算法来实现。在最小费用最大流中,网络中需要考虑的不仅是流量了,还涉及到单位流量流过的费用,网络流的费用成为了每条边的流量×单位流量的费用,即C o s t ( f l o w ) = ∑ < x , y > ∈ E c o s t ( x , y ) × f l o w ( x , y ) Cost(flow)=\sum_{\in E}cost(x,y)×flow(x,y)Cost(flow)=∑。
2023-12-31 19:44:50 313
vncserver和vncviewer
2017-06-01
大数据资料集锦
2016-03-30
Hadoop技术全套图书
2016-03-21
Apache Flume Distributed Log Collection for Hadoop
2016-03-21
《Hadoop技术内幕:深入解析MapReduce架构设计i与实现原理》
2016-03-21
《Hadoop技术内幕:深入解析Hadoop Common和HDFS
2016-03-21
jQuery瀑布流经典布局源码
2016-01-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人