自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C++使用for(:)遇到的BUG

使用for(:)会报segment fault的错误,原因是访问到了未定义的地址,即t访问到了负数,f[t]越界访问。但是使用注释中的索引访问会正常运行,即死循环访问f[1]是vector的foreach循环使用首尾迭代器(指针)实现,vector使用push_back扩容时回收了地址,导致原有的指针指向错误数据,而索引寻址不会出现指针问题。后续有时间阅读书籍查询c++的for(:)实现。经过vscode和devc++编译器测试,

2024-03-16 18:13:43 643

原创 关于构建springboot2.x出现报错镜像找不到springboot包的问题

同时注意maven的镜像配置文件settings.xml,如果配置有问题会导致超时,爆一堆奇奇怪怪的错误。最后通过将pom.xml文件中的2.7.17.RELEASE改为2.7.17后问题解决。

2023-10-31 19:45:29 833 2

原创 写了一个用YOLO的txt文件画框的函数

最近让人标了些图片,想看一下他标的是不是符合我的要求,但txt文件毕竟还是不好看,所以写了一个画框的函数, 不过我的目标检测只有一个类,不能区分类别。

2023-01-08 18:49:57 209

原创 关于深度学习高维矩阵的形象化理解

对于初次接触深度学习的小白来说,高维张量总是很难理解,在我理解高维张量的本质后,也理解了之前阻拦我理解的问题点,所以写下这篇博客,用常用的三个对张量操作的函数进行解释,希望对后面学习的人有所帮助。

2022-11-05 11:14:35 998

原创 线程池的介绍和代码实现

在线程池之前我们应该已经接触了一些"池",如字符串常量池等等,这些“池”的原理其实都差不多,都是为了提高效率提前开辟一块空间存储所需要的东西,需要用直接拿取即可,不需要另外创建,线程池也是一个道理。相比于进程的创建和销毁,线程的创建和销毁已经很快了,但是如果大量线程频繁创建和销毁,这样的开销依旧是很大的,所以我们可以提前创建好一个空间来提前创建好线程,我们直接给这些创建好的线程分配任务即可。但是为什么直接取线程就一定比创建线程来的快呢?

2022-09-23 16:41:14 225

原创 多线程定时器的原理与使用,带你从0到1写一个自己的定时器

在实现一个定时器之前我们得先构造出框架,首先我们需要一个MyTimer类作为定时器,在创建一个MyTask类作为任务类。在阻塞队列没有任务时我们必须一直循环,保证第一时间拿到任务,但是当阻塞队列有任务时,我们只要等待最早任务需要的时间即可,在这段时间内可以把CPU资源让出来,能实现这个操作的有wait和sleep。但是如果我们使用了sleep,如果在等待的时间内又有线程传递任务过来,我们就无法接收了,如果用wait其它线程可以用notify操作提前唤醒定时器,这才是我们需要的。

2022-09-23 15:26:57 205

原创 Java阻塞队列的原理和使用, 自己写一个阻塞队列

生产者消费者模型就是通过一个容器来解决生产者和消费者之间的耦合问题,通过阻塞队列,生产者和消费不再需要直接进行通信,而是借由阻塞队列完成信息传递。当生产者生产出数据时不必等待消费者相应,直接扔给阻塞队列即可,同时消费者需要获取数据时直接通过阻塞队列获取。阻塞队列是一种特殊的队列,它与普通队列一样遵循“先进先出”的原则。阻塞队列主要的应用场景实在“生产者消费者模型”中。不同的类对应着不同的实现阻塞队列的容器。

2022-09-22 17:33:24 232

原创 线程安全问题你了解多少?java中线程安全的基础防范

如上面所说,JVM为了优化速度,每个线程都有一个”工作内存“,t1线程开始时从主内存中获取数据存储在工作内存中,然后在工作内存上操作数据,这就导致了当我们在main线程修改数据后t1线程读取的数据仍然是工作内存中没有修改的数据,所以循环永远不会停止。可见两个操作过后num只加了一次,想要解决这个问题也只要让该操作是原子即可,表现为a在进行increase时b就在一边等着,使得操作变为线性操作,这样就解决了该问题,但与此同时就浪费了大量的时间,在工程中我们需要对锁操作进行平衡,以具体需求为准。

2022-09-20 15:47:19 199 2

原创 Java单例模式的完整实现,从0到1带你一步步优化

饿汉模式的缺陷是instance这个实例对象在类加载阶段就会创立,也就是说程序开始运行时就会创建这个实例对象,这样的模式少了还好,但是如果不加管控就会导致因为需要大量加载数据程序刚开始运行时速度极其缓慢,所以就有了懒汉模式。在很多时候我们创建一个类并不需要很多的实例,只需要一个实例就够了,例如如果我们把太阳作为对象,实现它发光发热的功能,由于太阳只有一个,我们创建一个太阳类后只需要一个对象。设计模式是前人在经验之后总结出来的代码逻辑,或者说是框架,用于更好更快的实现业务需求。

2022-09-20 15:36:34 198

原创 Thread常用方法和线程状态

但是注意:interrupt方法对正在运行中的线程和阻塞(sleep)的线程作用效果是不同的,如果是正在运行,则标志位会立马置为false,如果在阻塞状态,线程会抛出InterruptedException,处理方法由异常处理决定。**注意:**虽然创建Thread继承的对象调用start()方法和run()方法都能执行run()方法内部的函数块,但是如果只调用run方法无法创建一个新线程,只会在main线程中运行,运行完毕才会往下走。当我们需要线程走完以后再走下一步时,我们就需要使用join()方法。

2022-09-07 11:51:30 113

原创 线程基本概念和创建

线程产生的问题难以修复。线程的调度是由操作系统决定的,因此线程执行的顺序是不可预料的,这就给多线程程序的执行带来了太多的变数。所以如果代码产生了问题,由于顺序的不确定性,可能每次运行会产生不同的结果,甚至有可能有的时候运行结果是对的,有的时候会错,这就为调试增加了难度。我们知道多个线程公用同一份资源,同时运行,这就不可避免导致了多个线程同时操作同一份资源的情况,产生一系列如脏读、幻读、不可重复读等问题,为了解决这些问题就必须以效率为代价对线程的权限加以限制,即为线程“上锁“,具体方法会在下篇博客中阐述。

2022-09-06 12:00:00 104

原创 acwing241. 楼兰图腾 树状数组

这题的思路比较容易想到,想要知道某个点为底产生的正(倒)三角形有多少,只要知道该点左右两边比他大(小)的数的数量即可。如果某个点左边比他大的数有a个,右边比他大的有b个,则该点为底的倒三角就有a * b个。第一次从左到右遍历到每个点时我们把计数器上该点的数字+1,如果该点上的数字为k,我们统计目前[k+1,n]上所有的数字出现次数即可知道该点左边比它大的数的数量,[1.k-1]即小的数量。第二次反过来遍历,就得到了右边数的情况,左右两边相乘加到返回结果即可。所以在这里我们可以引用树状数组。

2022-09-06 10:13:44 134

原创 计算机怎样同时运行多个程序的?进程相关概念介绍

内存指针描述进程持有的内存资源。进程的记账信息是用来辅助进程进行调度的,虽然各进程之间有优先级,但是我们还是需要保证优先度较低的进程的运行的,如果一个进程运行时间太短就会给它再分配一些时间(注意,进程运行的时间并不是实际的时间,不是以秒等时间为单位,而是执行指令的条数)。PCB是进程控制块(process control block),一个进程内部需要包含很多信息,包括/进程的唯一标识 —— pid,进程关联的程序信息(例如哪个程序,加载到内存中的区域等),分配给该资源使用的各个资源,进度调度信息。...

2022-08-14 21:29:45 3222

原创 基本的计算机结构知识----基础向

CPU是计算机的核心设备, 它的作用是完成算数计算和逻辑判断, CPU的很多时候好坏决定了程序的运行效率。主频是CPU的一个重要概念,CPU主频为1.9GHZ的概念就指CPU一秒钟能够计算19亿次,其中G为10^9,而HZ指1秒钟的次数。CPU内部有寄存器作为存储设备,它能够少量存储数据以备CPU操作,其传输数据的速度相比于计算机的内存与外存要快得多,但因为其造价较高,所以存储的数据量比较少。...

2022-08-14 21:27:45 915

原创 JDBC操作基础

在实际工程中我们往往需要使用类似命令行中scanner的办法获取用户数据, 然后进行sql的操作, 最简单的办法就是直接读取数据, 然后以拼接字符串的方式进行操作, 但是这种做法不仅让代码可读性降低, 而且危险性很大, 我们无法确保用户输入的数据是什么样的。这样输入虽然并不能真的删除student, 我只是拿来举个例子, 但是懂得如何输入的"用户"自然会成功, 这也就是所谓的sql注入。为了防止这一情况的放生, 我们使用库内的方法进行sql操作, 这样不仅增加了代码可读性, 也增加了代码的安全性。...

2022-08-11 18:33:24 219

原创 mySQL事务及其特性分析

还是A和B,A在读数据时,B又想添数据,不过B这时想修改或添加的是另一个文件,并不会影响A正在读的数据。A和B两人同时处理一个账户,如果A看到账户有100,之后B又给账户中冲了100,这时就发生了脏读问题,即A读到了错误的数据。同样是A和B,如果A正在读数据,此时B突然修改了数据,这就会导致A读完后想再读一遍时发现数据出现了变化,造成了不可重复 度问题。这两件事必须要么全部失败,要么全部完成,是不可分割的,如果转账成功后服务器突然有问题使得B并没有收到100元,这就会造成很大的问题。....

2022-08-10 09:05:35 414

原创 数据库的索引和其底层数据结构

只是简单介绍B树的优势,不会具体深究插入删除的方式,节点内数据存储方式B树是一个n叉树,且每个节点有多个数据,先上一个完整图:以父节点中的30和40为例,34、36、38属于30和40之间的数,因此就使用30和40范围的节点存储它们,一个节点有a个数,则它就有a+1个子节点。这就是B树内数据的存储方式介绍完了B树让我们来了解一下B+树的存储方式,并且分析为什么B+树如此受到数据库的青睐B+树一个节点有a个数,则其子节点有a个。......

2022-08-10 09:04:26 312

原创 mySQL增删改查进阶

但在时间积累下数据会越来越多,浪费空间,但即使这样我们也只要在没空间时加几个硬盘就行了,因为硬件的成本很低(1000左右就能买一个1T的SSD优质硬盘),而程序员工资往往一个月就1~2w,相比来说这种方法是最有效的办法。还有union all的方法,即把合并的数据直接放在一起,不会去重,即union的数据只有‘张三’ 男 16一个数据,而union all会有两个’张三’内联接与外联接在连接的两表数据是一一对应时是一样的,一一对应即在A表中的数据,在B表中都能找到数据与之对应,反过来也一样。...

2022-08-09 17:21:23 227

原创 MySQL增删改查基础

DOUBLE之类的浮点数使用的都是IEEE标准,因此计算会有误差,python,c++等都是用的IEEE标准。DECIMAL也是表示小数,但用的是类似字符串的变长存储,误差较小,但是效率降低并且需要更多的存储空间。数值类型可以指定为无符号(unsigned),表示不取负数。select * 是一个比较危险的操作。注意where先于select执行。彻底更改字符集方法;......

2022-08-04 08:50:26 94

原创 哈希表的原理及哈希冲突的解决方法

理想的搜索方法可以不经过任何比较,一次直接从表中得到要搜索的元素。如果构造一种存储结构,通过某种函数(hashFunc)使元素的存储位置与它的关键码之间能够建立一一映射的关系,那么在查找时通过该函数可以很快找到该元素。插入元素根据待插入元素的关键码,以此函数计算出该元素的存储位置并按此位置进行存放搜索元素对元素的关键码进行同样的计算,把求得的函数值当做元素的存储位置,在结构中按此位置取元素比较,若关键码相等,则搜索成功。......

2022-07-24 20:15:16 360

原创 Java中Map的使用和原理分析

由于TreeMap是有序存储的,这就意味着存入TreeMap的数据必须要进行比较,因此在使用TreeMap存储引用类型时,我们需要放入一个比较器。从中可以发现Set只不过是存储了一个Map成员,并把map的value设置为了Object对象,之后在Map的基础上进行操作的。Map类是接口,不能直接实例化,必须通过实现Map接口的HashMap和TreeMap进行实例化。TreeMap底层是红黑树,操作效率为O(logn),不过TreeMap存储的数据是有序的。...

2022-07-24 16:40:27 331

原创 所有常用排序的代码实现和介绍

排序方法最好平均最坏空间复杂度稳定性冒泡排序O(n)O(n^2)O(n^2)O(1)稳定插入排序O(n)O(n^2)O(n^2)O(1)稳定选择排序O(n^2)O(n^2)O(n^2)O(1)不稳定希尔排序O(n)O(n^1.3)O(n^2)O(1)不稳定堆排序O(1)不稳定快速排序O(n^2)不稳定归并排序O(n)稳定。.........

2022-07-21 13:40:46 160

原创 acwing每日一题 正方形数组的数目

由于是从前往后检查,在第一次排列中第一个数一定是红色的2,第二个一定是蓝色的2,第三次一定是黄色的2,该次排列结束后回溯,第二个2到了黄色的2位置,此时发现前面蓝色的2没有位置用,说明该数字已经不是第一次用了,直接结束,回溯到第一个2,第一个·2要遍历到蓝色的。2,此时发现前面2没有位置取,说明也不是第一次取这个数了,直接结束。y总的方法是保证每次取得的数是第一次在这个区间取的,由于每个数字的排列取值是从数组从前往后遍历检查,对于下面的图片。y总查重方法介绍,不保证能说明白,当作自己的笔记了。...

2022-07-21 10:30:08 102

原创 哈夫曼树的求法,代码实现及证明,图文解释

如上图的树的带权路径长度为7*3 + 2*2 + 5*1 = 30我们知道给定任意叶节点,用不同方式构造出的二叉树,其带权路径长度往往不同,而哈夫曼树就是这些节点构造出的二叉树带权路径长度最小的情况哈夫曼树的构造采取的是一种贪心策略解法图示:构造出这个树以后,如果要求最短树的带权路径长度,不仅可以直接用之前的方法,还可以直接求合并节点的权值和,即上面红色数字的和,即4+8+13=25。原理大家想一下应该就能明白,我就不多说了。这个计算方法不仅是代码的关键,也是之后证明的关键。传送门:acwing 哈夫曼

2022-07-14 16:35:44 1839

原创 力扣 236. 二叉树的最近公共祖先

传送门 236. 二叉树的最近公共祖先当我们从根节点往下遍历时,对于遍历到的节点来说祖先节点只有两种情况:

2022-07-13 19:05:54 143

原创 力扣 110. 平衡二叉树

平衡二叉树,线性复杂度

2022-07-12 20:24:11 1880

原创 力扣160. 相交链表

传送门:相交链表由于两链表相交必然为y形,所以两个相交链表的后面重合部分一定是长度相等的,长度差别就在两链表前面的不相交部分,因此我们可以提前判断两链表的长度差值,让长链表先走差值的步数,之后双指针同时遍历判断是否重合即可...

2022-07-06 11:52:28 91

原创 链表回文判断

思路:如果是竞赛,把链表题直接转为数组做即可,方便快捷。作为面试题,有了面试官的限制就不行了。由于这是一个单向链表,没办法遍历到最后一个点在再从后往前遍历,所以我们必须先遍历到中间节点,然后把从中间节点到最后一个节点之间的链表翻转过来...

2022-07-06 11:34:08 69

原创 力扣每日一题 剑指 Offer II 091. 粉刷房子

剑指 Offer II 091. 粉刷房子

2022-06-25 16:37:37 157

原创 main函数未初始化数组的默认值问题(刷算法题遇到的没脑子BUG)

​在C语言中的全局变量和静态变量都是会自动初始化为0,而堆和栈中的局部变量不会初始化而拥有不可预测的值。​

2022-06-24 15:09:43 606

原创 1半自动爬虫

半自动字面意思就是不能全自动,需要手动把需要爬取的页面源码复制到txt文件中利用文件操作完成爬取文件读取和写入使用Python读/写CSV文件需要import csv写入csv文件正则表达式’*‘替换所有字符‘.’替换一个字符'?'问号表示它前面的子表达式0次或者1次\d占位一个数字 \d*无限数字'()'用于提取数局,括号内放如需要读入的关键数据,括号外则是不需要读入的关键数据匹配数据内有单引号则用双引号包含,有双引号则用单引号包含在用正则表达式匹配小括号()时,应将括号用

2022-06-23 22:52:18 273

原创 Leetcode每日一题30. 串联所有单词的子串

移动窗口,花了很久,AC以后,高歌一首= =

2022-06-23 16:38:10 56

原创 力扣每日一题leetcode 513. 找树左下角的值

思路 简单的深度遍历,结合了二叉树后序遍历的思想。先不断向下遍历,向下遍历时先向左遍历(保证得到的最深的值是在最左边),如果发现遍历的深度大于已有的深度就把最大深度改为当前深度,值也修改。...

2022-06-22 11:39:10 112

原创 SQL初识

文件仓库管理仓库(增删改查)如MySQL数据库语言SQL不区分大小写!!!数据库最基本的单元:表(table)行(row):数据、记录列(column):字段每一个字段包含:字段名、数据类型、约束等属性DDL:数据查询语言​ select…DML:​ 数据操作语言​ insert delete update(数据的增删改)DDL:​ 数据定义语言​ creat drop alter(表结构的增删改)TCL:​ 事物控制语言​ 事务提交(commit) 事物回滚(rollback)DCL:​ 数据控制语

2022-06-19 17:33:44 104

原创 力扣每日一题(链表模拟)

力扣每日一题2022/6/18

2022-06-18 11:19:02 1618

原创 性感素数(Acwing每日一题)

Acwing每日一题

2022-06-10 11:37:21 169

原创 非重叠矩形中的随机点(力扣每日一题)

力扣每日一题

2022-06-10 11:16:28 84

原创 Java中Object比较方法equals使用和重写深度刨析

本博客详细解释了equals使用和一些规范,希望对你有所帮助

2022-05-27 20:34:51 996

原创 Java继承与多态详解,你想了解的这里都有

这篇博客是我经过网课和《Java核心技术-卷一》的阅读总结而来,基本总结了所有有关继承和多态的基础和相关注意点,还有一个Object类我会写另一篇博客来描述重写Object类方法的需要注意的点。这篇博客应该是目前为止我花时间最久的一篇博客,如果发现有让你学习的地方还请不吝惜点赞,十分感谢!

2022-05-19 12:19:56 251 2

原创 Java内部类

在Java中,当一个事物的内部需要一个结构,而这个结构又只为这个事物服务的时候,我们就可以使用内部类(例如链表中的节点)。在Java中,可以将一个类定义在一个类或者方法的内部,这种用法我们称之为内部类。

2022-05-14 14:15:44 100

空空如也

空空如也

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

TA关注的人

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