- 博客(130)
- 收藏
- 关注
原创 ViSual studio如何安装 并使用GeographicLib
在C++的 Boost.Geometry、GDAL/OGR 和 GeographicLib。这些库都可以用于计算两个经纬度点之间的地面距离。
2024-10-30 16:28:52 661
原创 如何在visual studio中 生成 并 使用dll和lib文件
因为工作需求,要写lib和dll给别人使用。使用visual studio2022以函数为例子首先点击打开 visual studio 文件->新建->项目选择windows桌面向导选择应用程序类型为动态链接库.dll分别创建MyDLL.h和MyDLL.cpp文件,点击添加 新建项依葫芦画瓢,在源文件里创建MyDLL.cppMydll.h的代码如下MyDll.cpp的代码如下点击生成解决方案如果一切正常的话,会显示生成正常,并且显示出生成的dll和lib所在文件夹。
2024-10-30 11:08:05 337
原创 在visual Studio中引入Google Test进行单元测试
静态链接:如果希望避免运行时依赖,确保所有必要的库都在一个可执行文件中,可以选择静态链接。名为“Test Project Configuration”,用于配置Google Test和C++运行时库的使用方式。:如果希望节省内存使用,并且允许更新单个库文件而不需要重新编译整个项目,可以选择动态库。确定visual Studio安装了Google Test测试适配器,如果没有,安装。:初始化Google Test框架,解析命令行参数,配置Google Test。:运行所有定义的测试用例,返回测试结果。
2024-10-28 17:17:48 399
原创 ide快捷键以及js的小知识
事件委托的核心思想是利用事件冒泡,每个子节点的事件都会冒泡泡到父节点中,因此可以给父节点注册事件,通过一次注册dom,就能完成。this在函数定义时是不能确定指向的,通常在函数运行时会指定函数的调用者,而且vue里的箭头函数,回调函数也有这种该问题;在全局函数或者普通函数中,this指向widows,在构造函数中指向实例,在回调函数和被调用函数中,指向调用者。节点可以增加也可以删除,可以参考列表的操作方法,设置某个节点为父节点或者子节点、网页上的所有内容都是节点(node),包括标签,属性,文本,注释。..
2022-08-25 18:03:21 396 1
原创 学习方法
我之前学习的方式都是面向百度编程。但是一则百度的知识都是碎片化的,二则试错的时间成本太大。百度的答案不客气的说百分之99都是由网络爬虫爬出来的,简直就是智障。而且即使有幸找到了原始的答案也很难配合上。在做一个需求之前应该先用脑子或者纸笔写出来自己认为的流程,再分析这个流程自己有什么问题,或者说不确定的地方,有针对性的查找资料。...
2022-05-07 20:07:54 165
原创 记一个错误,原来vue项目需要后端项目打开才能运行
搞了半天了。原本一直好好的,但是昨天vue项目报错。查看配置文件export const BASEREQUESTURL = 'http://localhost:8081/'是8081,当时陷入了误区认为这是该项目的端口号再打开谷歌浏览器的调试台 按F12发现错误信息没有改代码,那就是外部环境的错。第一个想到的就是端口号查看了vue前端的端口号。不是8081,我尝试了把81改成8081,提示无法访。换一种方法,export const BASERE.
2022-04-26 09:57:58 813
原创 记录运行springboot下的一个hello world所踩的坑
使用java的springboot框架写hello world,并解决了一个问题
2022-04-13 16:25:40 200
转载 sping的注解注入
@Component放到类上面标注,可以使POJO类(普通的java类)转换为容器管理的beanSpring还提供了三个等效注解@Controller:对Controller实现类进行注解。@Service:用于对Service进行类注解@Responsitory:用于对DAO进行类注解扫描注解定义的bean在实现类上添加注解之后,还需要在配置文件中设置扫描类包才能让Spring容器识别到<?xml version="1.0" encoding="UTF-8" ?>
2022-04-11 10:36:50 89
原创 学习Java引起对系统分配内存的思考
学习Java时了解了它的内存分配情况,Java将内存分为堆区,栈区和静态区。这引起我的思考,我在学习C++时学到C++分别将内存分为了堆、栈、自由存储区、全局/静态存储区和常量存储区。那么不同的内存分区会根据内存的不同而发吗?为什么要那么分?如果分了以后,为什么堆区 栈区 静态区的效率不同?针对第一个问题,不是,内存在物理层面上是相同的,无所谓分区,第二个问题,我的回答是,它就是那么分的,就像为什么男人和女人有两种性别一样,或许有答案。第三个问题,从硬件的角度来看,内存都是一样的但是
2022-04-01 11:11:20 701
原创 Java泛型基本操作
import java.lang.reflect.Array;import java.util.*;interface trytry<T>{ public void Try();}class father<T> { father(){ System.out.println("就是个非静态构造函数"); System.out.println("father end"); } publ.
2022-03-31 19:12:34 220
原创 Java的main函数里的参数研究
今天学习Java犯了个低级错误,main函数的参数Stirng忘记加[],导致在idea平台无法编译运行。这是源码。import java.lang.reflect.Array;import java.util.*;public class test { public static void main(String args){ Class c1 = new ArrayList<String>().getClass(); Class c
2022-03-31 16:53:33 504
原创 java的向上向下类型转换
class dog extends anmale{ int dog; void eat(){ System.out.println("dog eat"); }}class cat extends anmale{ int cat; void eat(){ System.out.println("cat eat"); }}public class anmale { public static void main.
2022-03-30 10:44:42 1478
原创 JAVA学习笔记0
从0开始学习JAVA。所用教材为《thinking in JAVA》JAVA是一种面向对象oop的语言,和C++类似,我个人认为它是一门C++-的语言,有以下区别1.废除了C++中独立存在的变量和函数,必须使用类。2.取消了指针的使用,JAVA 中的传入到方法的对象是其引用,而C++传入到方法的形参可以是指针,引用或者是调用拷贝构造出的新的对象。3.JAVA中程序员使用new在堆上分配空间调用构造函数来实例化变量,C++中也用new来分配内存,但是需要自己delete掉内存否则会内存泄漏
2022-03-28 18:55:54 733
原创 根据先序和中序求二叉树
举个例子EBADCFHGIKJ 先序(根左右)ABCDEFGHIJK中序 (左根右)我将其求二叉树的过程称为 求根方法在先序上的每个节点都是其子树的根节点(听起来是废话)先通过先序找到根节点E,在中序中可以看出,ABCD E FGHIJK,E的左边就是左子树的节点ABCD,E的右边是右子树的节点FGHIJK。再通过先序找到第二个节点B,在中序中可以看出,B的左边就是左子树的节点A,B的右边是右子树的节点CD依次类推不断的在先序中找到节点作为根节点,再从中序遍历中看到该节点的左右孩子所属
2020-09-25 19:49:45 7823 2
原创 C++new运算符
new运算符虽然用的很久,但是我实际上对它的了解仅仅局限于表面知道和malloc一样可以在堆内存中申请内存,可能会调用对象的构造函数。但是具体的实现和什么时候调用构造函数完全不了解,因此今天在这里进行梳理。1. new的常见用法int *a =new int[5];int *b =new A();在实际操作中,我们发现A的申请的空间的储存的值为随机值,new仅仅申请了一块随机空间,但是B的申请的空间的值已经初始化了,new调用了A的构造函数。new A()的功能如下在堆上申请空间在分配的空
2020-09-25 19:14:09 635
原创 填充每个节点的下一个右侧节点指针 II
给定一个二叉树struct Node {int val;Node *left;Node *right;Node *next;}填充它的每个 next 指针,让这个指针指向其下一个右侧节点。如果找不到下一个右侧节点,则将 next 指针设置为 NULL。初始状态下,所有 next 指针都被设置为 NULL。思路:通常而言,这种题目和层序遍历有分不开的关系,使用队列辅助实现,空间复杂度为O(N),完成代码如下class Solution {public: Node* connect
2020-09-24 11:17:36 222
原创 每日一题回溯算法
今天要写的题目是剑指 Offer 38. 字符串的排列输入一个字符串,打印出该字符串中字符的所有排列。你可以以任意顺序返回这个字符串数组,但里面不能有重复元素。示例:输入:s = “abc”输出:[“abc”,“acb”,“bac”,“bca”,“cab”,“cba”]万物皆可暴力,但是时间复杂度太高了,因此我们可以考虑dfs和回溯算法需要注意的是如果给出了的字符串有重复字符,则需要剪枝操作。下面为回溯的代码class Solution {public:vector<stri
2020-09-24 07:58:26 153
原创 滑动窗口的最大值
每天学一点,今天解决的是剑指offer的剑指 Offer 59 - I. 滑动窗口的最大值。输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3输出: [3,3,5,5,6,7]滑动窗口的位置 最大值[1 3 -1] -3 5 3 6 7 31 [3 -1 -3] 5 3 6 7 31 3 [-1 -3 5] 3 6 7 51 3 -1 [-3 5 3] 6
2020-09-23 23:57:20 189
原创 每日一题47. 全排列 II
给定一个可包含重复数字的序列,返回所有不重复的全排列。示例:输入: [1,1,2]输出:[[1,1,2],[1,2,1],[2,1,1]]这题看完后是头痛的,还是用dfs算法比较好解,首先把这道题理解成给你一些数字,让你用这些数字进行填空,最后把所有填得的数列存起来返回。难点:这些数字是具有重复性质的因此,需要一个数组来纪录某个数字及其重复数字是否填入,如果填入就跳过,否则继续。vector<int> vis;vis.resize(nums.size());if(vis
2020-09-18 18:38:00 162
原创 面试题 05.07. 配对交换
配对交换。编写程序,交换某个整数的奇数位和偶数位,尽量使用较少的指令(也就是说,位0与位1交换,位2与位3交换,以此类推)。示例1:输入:num = 2(或者0b10)输出 1 (或者 0b01)示例2:输入:num = 3输出:3这题开始没搞懂,以为是十进制的奇数偶数交换,然后发现是2进制的奇数偶数交换,开始使用stl容器进行纪录每一个数位的数字,再进行交换class Solution {public: int exchangeBits(int num) { ve
2020-09-13 12:04:18 175
原创 面试题 08.01. 三步问题
三步问题。有个小孩正在上楼梯,楼梯有n阶台阶,小孩一次可以上1阶、2阶或3阶。实现一种方法,计算小孩有多少种上楼梯的方式。结果可能很大,你需要对结果模1000000007。示例1:输入:n = 3输出:4说明: 有四种走法示例2:输入:n = 5输出:13有一说一,这就是青蛙跳台阶问题,我开始写的代码如下class Solution {public: int waysToStep(int n) { int sum = 0; dfs(n,sum);
2020-09-13 11:38:41 144
原创 每日一题单词搜索
给定一个二维网格和一个单词,找出该单词是否存在于网格中。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例:board =[[‘A’,‘B’,‘C’,‘E’],[‘S’,‘F’,‘C’,‘S’],[‘A’,‘D’,‘E’,‘E’]]给定 word = “ABCCED”, 返回 true给定 word = “SEE”, 返回 true给定 word = “ABCB”, 返回 false应该使
2020-09-13 11:16:34 142
原创 每日一题总结二叉树的层平均值
给定一个非空二叉树, 返回一个由每层节点平均值组成的数组。示例 1:输入:3/ 9 20/ 15 7输出:[3, 14.5, 11]解释:第 0 层的平均值是 3 , 第1层是 14.5 , 第2层是 11 。因此返回 [3, 14.5, 11] 。这道题的实质是考察层序遍历,深度优先搜索和广度优先搜索对深度优先而言,需要维护两个序列,一个用来保存节点数,一个用来保存节点之和,最后除。对于深度优先而言DSF函数需要四个参数,根节点,当前层数,节点数队列,节点队列DFS
2020-09-12 11:03:14 176
原创 面试总结(1)
首先自我介绍,大概讲了自己在大学的经历,不小心给自己挖了个坑,说自己对于知识比较渴望,然后就出不来了。第二点在自己的知识介绍里着重强调了avl树,红黑树,智能指针的掌握情况比较好但是情况和实际情况不同第三点在介绍stl中的vector和stl中的差别例如插入等操作没有介绍清楚第四点在代码中有三个合并链表,堆排序没写出来。(30%太紧张+70%知识储备不足)...
2020-08-20 11:05:50 157
原创 Come back
新佛曰:夷般隸缽我莊修如彌如咒須菩空南莊降兜念囉咒摩耨慧叻劫諦修闍色闍修南修波降空摩叻彌咒闍菩修降咒須色慧僧隸空婆般斯阿宣南塞心嚴斯寂般波摩亦迦是喃嚩修嚴愍隸哆諸哆訶色夷吽彌宣劫即斯尊咤薩莊南願斯羅寂念喃即心諦僧南婆陀囉隸莊塞迦陀心缽薩囉吶咤南須僧聞訶塞色所聞修空我隸祗莊兜兜咤宣咒念眾諸南訶斯我修迦愍宣訶慧阿嚤祗喼陀聞空南訶婆嘚喃念哆蜜摩須波蜜祗慧南菩劫聞迦色須迦斯南聞愍嚴伏婆缽迦須如諸空劫南喃嚤祗陀喃如亦囑囑...
2020-07-09 23:28:26 3425
原创 每日一题:动态规划
你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号...
2019-11-24 20:49:27 147
原创 每日一题
给定 n 个非负整数 a1,a2,…,an,每个数代表坐标中的一个点 (i, ai) 。在坐标内画 n 条垂直线,垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0)。找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器,且 n 的值至少为 2。class Solution {public: int maxArea(vector<i...
2019-11-24 14:01:34 188
原创 笔试题
当时没想通,现在想想这道题根本不是编程题而是一道数学题在地下室里放着n种颜色的手套,手套分左右手,但是每种颜色的左右手手套个数不一定相同。A先生现在要出门,所以他要去地下室选手套。但是昏暗的灯光让他无法分辨手套的颜色,只能分辨出左右手。所以他会多拿一些手套,然后选出一双颜色相同的左右手手套。现在的问题是,他至少要拿多少只手套(左手加右手),才能保证一定能选出一双颜色相同的手套。给定颜色种数...
2019-11-23 22:04:56 351
原创 C++复习:类型转换
C++类型转换C++类型转换分为两类隐式转换显示转换隐式转换原则基本数据类型的转换以取值范围的作为转换基础隐式转换发生在从小到大的转换中,比如,从char到int,从int到long中。自定义子类对象可以隐式转换到父类对象中。隐式转换发生条件混合类型的算术运算中int a=3;double b = 4.5;a+b;不同类型的赋值操作int a=true...
2019-11-06 20:55:16 187
原创 [面试]——菱形继承和虚继承
这个博客用来记录,我面试时当时没有想出来的题。你知道菱形继承吗?讲一下菱形继承,顾名思义是一种继承方式,假设有两个派生类分别继承了基类,则它们都会有基类的公有成员,当第三个派生类继承了前两个派生类后,就有了菱形继承,第三个派生类会有两套基类的成员,画图表示如下。虚继承可以解决这个问题。讲一下虚继承虚继承是一种机制,让继承该虚基类的派生类共享其成员,无论派生多少次,都只实现一次虚...
2019-11-04 12:34:41 230
原创 linux(7)进程间通讯
进程运行时时具有独立性的,让它本身通信是困难的,所以进程通信的前提条件是让进程看到同一份资源(通常指的是某一块内存)**进程间通信的目的**...
2019-11-03 16:05:57 135
原创 [网络]——UDP协议分析
写完了TCP,运输层的UDP协议最好也总结一下,本篇博客资料来自谢希仁《计算机网络》,真的很推荐看一遍。1.UDP协议UDP协议是运输层协议,有以下的特点。UDP是无连接的UDP尽最大努力交付,但不保证可靠性UDP是面向报文UDP没有拥塞控制UDP支持一对一,一对多和多对多的交互通信。UDP的首部较短只有8个字节UDP是无连接发送数据前不需要建立连接,发送完后同样不需要...
2019-11-03 11:07:29 668 1
原创 [网络]——TCP协议分析
TCP有关的资料和书籍,网上搜索恐怕汗牛充栋,我写这篇博客也是为了学习巩固,参考了《计算机网络》和goole的很多博客,毕竟站在巨人的肩膀上才能看的更高走的更远。1.TCP协议TCP协议属于TCP/IP协议中的传输层协议,有以下几个特点。TCP是面向连接的运输层协议。每一条TCP连接只能点对点TCP提供可靠交付的服务TCP提供全双工通讯面向字节流。TCP是面向连接的传输层协...
2019-11-02 20:22:30 1848
原创 [网络]——编程套接字和BSD相关API
终于完成了linux的几种设计模式来到了网络的章节,在这里我们可以尝试实现TCP,UDP的c/s服务器,不过在这之前,首先了解网络编程的一些基础概念。套接字套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。网络套接字是IP地址与端口的组合。 ...
2019-11-01 12:05:34 483
原创 [linux]-------线程池
上一篇博客我们实现了读者写者模型,在这篇博客中更进一步的完成线程池。线程池概念开辟一块内存空间,里面存在大量的(未死亡的)线程,池中的线程调度由池管理器来处理,当有线程任务时,从池中选一个线程运行,当运行完毕后,该线程又返回池中,这样就避免了反复创建线程所带来的性能开销,节省了系统资源。如果对线程概念不清晰的话,不妨先看看我是一个线程这篇文章线程池的应用场景需要大量的线程来完成任务...
2019-10-30 20:23:13 150
原创 [Linux]--------读者写者模型
在之前的博客中我们说明了生产者消费者模型,在这篇博客中我们讨论类似的模型读者写者模型。概念读者写者模型是操作系统的一种同步与互斥机制,与生产者消费者模型相似,区别在于多个读者可以共享缓冲区,但是对于写者而言相互是竞争关系,一次只能有一个写者,写入缓冲区。读者写者模型具有的条件写者排他性:有多个写者的情况下,只有一个写者能够占用缓冲区。读者的并行机制:可以有多个读者同时使用缓冲区。如...
2019-10-30 14:16:56 368
原创 [Linux]——基于信号量的生产者消费者模型
生产者消费者模型在上一篇博客[Linux]------基于阻塞队列的生产者消费者模型中,我们实现了单生产者消费者模型,在本篇博客中,我们的生产者消费者模型会有两个改变不是用一般队列作为缓冲区,而是用环形队列作为缓冲区不使用pthread_mutex,而使用信号量来实现生产者消费者的同步。POSIX信号量使用的是POSIX信号量而不是之前的system_v,因为这两个信号量作用相同,都...
2019-10-29 22:00:30 324
空空如也
在win10平台下MySQL Connector/C++的使用错误
2024-05-29
TA创建的收藏夹 TA关注的收藏夹
TA关注的人