自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JAVA三大变量

静态变量是属于类的,而不是属于类的某个特定实例。在类加载时创建,被所有实例共享。实例变量是属于类的特定实例的,在对象创建时被初始化,存在于对象的整个生命周期内。局部变量定义在方法、构造函数或代码块内部,只在定义它的作用域内有效。实例变量的访问通常通过对象实例来进行,如 person.name。局部变量的生命周期仅限于所在方法、构造函数或代码块的执行期间。局部变量只能在其作用域内访问,无法被其他方法或对象访问。实例变量可以被不同的实例访问,每个实例有自己的一份。它在类的整个生命周期内存在,直到类被卸载。

2023-12-19 18:51:26 501

原创 手写share_ptr

代码】手写share_ptr。

2022-07-19 20:13:01 458 1

原创 双指针法(快慢指针

来自代码随想录暴力解法就是两层for循环,一个for循环遍历数组元素 ,第二个for循环更新数组。双指针法双指针法(快慢指针法): 通过一个快指针和慢指针在一个for循环下完成两个for循环的工作。定义快慢指针快指针:寻找新数组的元素 ,新数组就是不含有目标元素的数组慢指针:指向更新 新数组下标的位置很多同学这道题目做的很懵,就是不理解 快慢指针究竟都是什么含义,所以一定要明确含义,后面的思路就更容易理解了。力扣相关题目移除元素删除有序数组中的重复项比较含退格的字符串(逆序遍历)有序数

2022-06-13 22:19:16 423

原创 二分法搜索法

二分搜索法区间2.左闭右开while (left < right),这里使用 < ,因为left == right在区间[left, right)是没有意义的if (nums[middle] > target) right 更新为 middle,因为当前nums[middle]不等于target,去左区间继续寻找,而寻找区间是左闭右开区间,所以right更新为middle,即:下一个查询区间不会去比较nums[middle]力扣经典二分法......

2022-06-13 15:21:09 207

原创 unityC# 调用python深度学习实现图片分类

最近面临一个问题,需要在unity3D中将手绘的指令识别出来,目前就很简单的三个指令,顺时针旋转,逆时针旋转,和箭头。我就想到了使用深度学习来给这三个指令分类,这其中要用到python的pytorch。在两个程序如何通信的问题上,有个朋友告诉我可以用socket使两个程序通信,好就用socket最后的效果就是这样的unity C#脚本代码如下(写的很粗糙,主要是实现功能(~ ̄(OO) ̄)ブusing System.Collections;using System.Collections.Ge

2022-05-27 15:51:48 2921 3

原创 每日一题944. 删列造序

好久没刷题了,先来一道简单题造一下给你由 n 个小写字母字符串组成的数组 strs,其中每个字符串长度相等。这些字符串可以每个一行,排成一个网格。例如,strs = [“abc”, “bce”, “cae”] 可以排列为:abcbcecae你需要找出并删除 不是按字典序升序排列的 列。在上面的例子(下标从 0 开始)中,列 0(‘a’, ‘b’, ‘c’)和列 2(‘c’, ‘e’, ‘e’)都是按升序排列的,而列 1(‘b’, ‘c’, ‘a’)不是,所以要删除列 1 。返回你需要删除的列数

2022-05-12 16:36:41 131

原创 unity 配置MRTK

Windows10 unity2021.3.0f1c1 MixedRealityFeatureTool来源MRTK官方教程文档下载MixedRealityFeatureTool在路径中选择unity项目的文件夹(问价夹中必须包含Assets,Packages,ProjectSettings文件夹)选择Mixed Reality Toolkit Foundation(后面选择版本)选择Mixed Reality OpenXR Plugin点击Get Features点击vali

2022-04-20 15:22:08 4107 1

原创 CMake 简述

cmake_minimum_required(VERSION 2.8)project(main)#配置编译选项 -p可调式set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} -g)#配置头文件搜索路径#include_directories()#配置库文件搜索路径#ink_directories()#设置需要编译的源文件列表set(SRC_LIST main.cpp)add_executable(server ${SRC_LIST})#目标程序需要链接的库文件

2022-04-15 11:37:19 312

原创 muduo网络库,初学

环境,centos7虚拟机,visual studio2019远程开发muduo网络库提供了两个主要的类TcpServer:用于编写服务器TcpClient:用于编写客户端epoll + 线程池模型,把网络I/O代码和业务代码分开(用户的连接和断开,用户的可读写时间是我们需要关心的。)TcpServer构造函数TcpServer(EventLoop* loop, //事件循环 const InetAddress& listenAddr, //封装好的类,绑定IP地

2022-04-14 17:01:28 462

原创 json 序列化json for modern c++

使用的是json三方库json for modern c++先使用json定义一个对象,可以想象成STL容器,中间储存的一个个的键值对#include <cstdio>#include<iostream>#include"json/json.h"#include"json.hpp"#include<vector>#include<map>using json = nlohmann::json;using namespace std;void

2022-04-14 13:16:52 1337

原创 C++数据库连接线程池

前面已经写了一个与mysql数据库相连接的类,连接数据库现在写一个线程池来增加连接的效率。这是我自己的学习记录,所以很多函数记录得很详细首先是.h文件中连接池的声明#pragma once#include<string>#include<queue>#include<mutex>#include<atomic>#include<thread>#include<condition_variable>#include&

2022-04-13 14:28:37 453

原创 C++ 访问数据库

环境:根据mysql的安装位数,选择visual studio的平台,现在一般都是X64的。工程->属性->C/C++常规->附加包含目录中粘贴上mysql包的路径工程->属性->链接器->常规->附加库目录中也粘贴上mysql链接库的路径工程->属性->链接器->输入->附加依赖项末尾添上libmysql.lib,记得用;隔开最后将libmysql.dll文件粘贴到工程目录文件夹下...

2022-04-13 11:17:19 4288

原创 C++ future的其他成员

future.status枚举类型,enum class future_status { // names for timed wait function returns ready, timeout, deferred};using namespace std;int mythread() { cout << "thread id = " << this_thread::get_id() << endl; chr

2022-04-12 10:40:49 414

原创 C++ std::async std::future

std::async std::future创建后台任务std::async函数模板,用来启动一个异步任务返回一个std::future对象,future是个类模板异步任务,自动创建一个线程并执行线程入口函数,返回的future对象里就含有入口函数返回的结果头文件include<future>#include<thread>#include <iostream>#include<future>using namespace std;

2022-04-11 21:59:29 639

原创 C++多线程通信

条件变量condition_variablewait()是condition_variable的成员函数void wait (unique_lock& lck)会无条件的阻塞当前线程然后等待通知,前提是此时对象lck已经成功获取了锁。等待时会调用lck.unlock()释放锁,使其它线程可以获取锁。一旦得到通知(由其他线程显式地通知),函数就会释放阻塞并调用lck.lock(),使lck保持与调用函数时相同的状态。然后函数返回,注意,最后一次lck.lock()的调用可能会在返回前再次阻塞线

2022-04-11 21:18:01 3076 1

原创 单例设计模式

在整个项目中,某个特殊的类,只能创建一个对象,多的创建不了。私有化构造函数,不能直接生成类对象了class Single {private: static Single* single;private: Single(){} //私有化构造函数public: static Single* GetInstance() { if (single == NULL) { single = new Single(); } return single; }};Single

2022-04-11 16:23:07 572

原创 C++多线程安全

1.互斥量(mutex)用代码把共享数据锁住,其他尝试操作共享数据的线程必须等待 锁定->操作->解锁头文件#include<mutex>lock() unlock()是mutex的成员函数,成对使用,有lock必然要有unlockusing namespace std;class A {public: //收到数据,塞进容器中 void inMsgRecList() { for (int i = 0;i < 100000;i++) { ..

2022-04-08 17:00:28 2199

原创 C++多线程

1.包含头文件#include<thread>2.调用thread类创建一个对象void print() { cout << "子线程运行。。。。" << endl;}int main() { thread test1(print); cout << "主线程。。。。" << endl; return 0;}线程不做处理会调用abort函数终止线程3.join函数,加入汇合线程,阻塞主线程,等...

2022-04-07 18:36:54 917

原创 C++函数指针

函数指针:指向函数首地址的指针变量定义函数指针: 用(*标识符)替换函数名,剩下照抄如 int sum(int a,int b) ---> int (*pr)(int a,int b) //形参可以不写 int (pr*)(int,int)通过函数指针调用函数给函数指针赋值,通常使用的是函数名pr = sum;1.直接替换函数名调用 pr(1,2);2.取*运算调用 (*pr)(1,2);函数指针的作用:充当回调函数(以函数指针为参数的函数)int max(int

2022-04-07 14:16:41 1917

原创 C++ char* 和string

string的内存管理是由系统处理,除非系统内存池用完,不然不会出现这种内存问题。char *的内存管理由用户自己处理,很容易出现内存不足的问题。当我们要存一个串,但是不知道其他需要多少内存时, 用string来处理就最好不过了。当你知道了存储的内存的时候,可以用char *,但是不如用string的好,用指针总会有隐患。用string还可以使用各种成员函数来处理串的每一个字符,方便处理。用char *处理串,就不如string的方便了,没有相应的函数来直接调用,而是要自己编写函数来完成串

2022-04-06 19:55:39 1185

原创 C++连接mysqlAPI

1. mysql_real_connect()1) 函数原型MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned int client_flag)2) 参数及说明• 第一个参数应该是一个现存MYSQL结构的地址。在调用.

2022-04-06 19:54:20 374

原创 手写数据库连接池

背景功能节省掉客户端连接mysql时TCP的三次握手四次挥手以及账号密码验证的时间初始链接量最大连接量最大空闲时间连接超时时间基本功能

2022-04-06 17:21:44 758

原创 C# 基本类学习

Input类,命名空间UnityEngine, Input.GetAxis("Horizontal")获取水平操作按键Input.GetAxis("Vertical") 获取垂直操作按键返回的是一个float,正方向是1.0,负方向是-1.0 。Vector2 position = transform.position 声明一个Vector2类型的变量,赋值为当前游戏对象的transform的position,说明transform.position也是一个Vector2Vector2的成员

2022-04-01 18:18:50 3512

原创 JZ36 二叉搜索树与双向链表

输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。如下图所示数据范围:输入二叉树的节点数0 \le n \le 10000≤n≤1000,二叉树中每个节点的值0\le val \le 10000≤val≤1000要求:空间复杂度O(1)O(1)(即在原树上操作),时间复杂度O(n)O(n)方法一:中序递归,二叉搜索树的中序遍历正是从大到校排列的顺序,先while循环root->找到要返回的头节点,在全局变量一空节点指针,进行中序遍历,每次将root->left ...

2022-04-01 15:04:05 329

原创 JZ35 复杂链表的复制

请实现 copyRandomList 函数,复制一个复杂链表。在复杂链表中,每个节点除了有一个 next 指针指向下一个节点,还有一个 random 指针指向链表中的任意节点或者 null。方法一:递归,用一个散哈希表将拷贝的链表与原链表一一对应,递归时用哈希表判断当前节点的拷贝是否已经创建,如果没有创建则创建,如果已经创建,则返回拷贝链表的指针classSolution{public:unordered_map<Node*,Node*>map1;Node*c...

2022-04-01 12:17:27 837

原创 C#笔记,类的特性

可以将特性附加到几乎任何声明中,尽管特定特性可能会限制可有效附加到的声明的类型。 在 C# 中,通过用方括号 ([]) 将特性名称括起来,并置于应用该特性的实体的声明上方以指定特性。1.[Serializable] 可以在unity的inspector中直接对自定义类的对象赋值To be continue。。。。...

2022-03-31 19:27:00 3686

原创 JZ34 二叉树中和为某一值的路径(二)

输入一颗二叉树的根节点root和一个整数expectNumber,找出二叉树中结点值的和为expectNumber的所有路径。1.该题路径定义为从树的根结点开始往下一直到叶子结点所经过的结点2.叶子节点是指没有子节点的节点3.路径只能从父节点到子节点,不能从子节点到父节点4.总节点数目为n方法一:递归遍历,从根节点遍历到叶子节点class Solution { vector<vector<int>> ans; vector<int>...

2022-03-31 17:58:52 76

原创 JZ33 二叉搜索树的后序遍历序列

输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则返回 true ,否则返回 false 。假设输入的数组的任意两个数字都互不相同。数据范围: 节点数量 0 \le n \le 10000≤n≤1000 ,节点上的值满足 1 \le val \le 10^{5}1≤val≤105 ,保证节点上的值各不相同方法一:递归,分治,class Solution {public: bool VerifySquenceOfBST(vector<int> seque..

2022-03-31 14:18:33 1159

原创 JZ32 从上往下打印二叉树

不分行从上往下打印出二叉树的每个节点,同层节点从左至右打印。例如输入{8,6,10,#,#,2,1},如以下图中的示例二叉树,则依次打印8,6,10,2,1(空节点不打印,跳过),请你将打印的结果存放到一个数组里面,返回方法一:层序遍历二叉树,以前也写过,用一个队列queue来辅助存储节点class Solution {public: vector<int> PrintFromTopToBottom(TreeNode* root) { if(!root){ ...

2022-03-30 16:32:55 567

原创 JZ31 栈的压入、弹出序列

输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。1. 0<=pushV.length == popV.length <=10002. -1000<=pushV[i]<=10003. pushV 的所有数字均不相同方法一:使用一个辅助栈,根据入栈的顺序入

2022-03-30 16:13:25 860

原创 JZ30 包含min函数的栈

定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的 min 函数,输入操作时保证 pop、top 和 min 函数操作时,栈中一定有元素。此栈包含的方法有:push(value):将value压入栈中pop():弹出栈顶元素top():获取栈顶元素min():获取栈中最小元素方法一:要求找到栈中最小元素的时间复杂度是1,但是遍历一遍的时间复杂度是n,所以需要用空间换时间,再构造一个辅助栈,当新加入的val小于辅助栈栈顶元素时辅助栈push(val),当新加入元素大于辅助

2022-03-30 13:47:52 133

原创 顺时针打印矩阵

输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。方法一:以左上点和右下点确定一个矩阵,一圈一圈的打印class Solution {public: vector<int> printMatrix(vector<vector<int> > matrix) { if(matrix.size() ==0 || matrix[0].size()==0){ return {}; } ...

2022-03-29 16:36:43 313

原创 JZ28 对称的二叉树

给定一棵二叉树,判断其是否是自身的镜像(即:是否对称)方法一:递归class Solution {public: bool isduicheng (TreeNode* root1,TreeNode* root2){ if(!root1 && !root2) return true; if(!root1 || !root2) return false; return (root1->val == root2->val)...

2022-03-29 15:54:13 799

原创 JZ27 二叉树的镜像

操作给定的二叉树,将其变换为源二叉树的镜像。数据范围:二叉树的节点数0 \le n \le 10000≤n≤1000, 二叉树每个节点的值0\le val \le 10000≤val≤1000要求:空间复杂度O(n)O(n)。本题也有原地操作,即空间复杂度O(1)O(1)的解法,时间复杂度O(n)O(n)方法一:递归,换就完事了class Solution {public: void transfer(TreeNode* pRoot){ TreeN...

2022-03-28 15:51:25 550

原创 JZ25 合并两个排序的链表

输入两个递增的链表,单个链表的长度为n,合并这两个链表并使新链表中的节点仍然是递增排序的。数据范围:0 \le n \le 10000≤n≤1000,-1000 \le 节点值 \le 1000−1000≤节点值≤1000要求:空间复杂度O(1)O(1),时间复杂度O(n)O(n)方法一:新建一个哑节点,逐个比较两条链表值的大小还是比较简单的class Solution {public: ListNode* Merge(ListNode* pHead1, ListNode* p...

2022-03-28 14:04:25 1059

原创 JZ24 反转链表

给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。数据范围: 0\leq n\leq10000≤n≤1000要求:空间复杂度 O(1)O(1) ,时间复杂度 O(n)O(n) 。如当输入链表{1,2,3}时,经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。以上转换过程如下图所示:方法一:使用stack容器储存每一个节点,最后再反转逐个提取即可。class Soluti...

2022-03-24 19:54:17 712

原创 链表中环的入口结点

给一个长度为n链表,若其中包含环,请找出该链表的环的入口结点,否则,返回null。数据范围: n\le10000n≤10000,1<=结点值<=100001<=结点值<=10000要求:空间复杂度 O(1)O(1),时间复杂度 O(n)O(n)例如,输入{1,2},{3,4,5}时,对应的环形链表如下图所示:可以看到环的入口结点的结点值为3,所以返回结点值为3的结点。输入描述:输入分为2段,第一段是入环前的链表部分,第二段是链表环的部分,后台会根据

2022-03-24 19:21:57 1159

原创 JZ22 链表中倒数最后k个结点

输入一个长度为 n 整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前面部分,所有的偶数位于数组的后面部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。数据范围:0 \le n \le 50000≤n≤5000,数组中每个数的值 0 \le val \le 100000≤val≤10000要求:时间复杂度 O(n)O(n),空间复杂度 O(n)O(n)进阶:时间复杂度 O(n^2)O(n2),空间复杂度 O(1)O(1)方法一:快慢指针,不难,考虑一下特殊情况

2022-03-24 18:54:26 63

原创 调整数组顺序使奇数位于偶数前面(一)

输入一个长度为 n 整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前面部分,所有的偶数位于数组的后面部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。数据范围:0 \le n \le 50000≤n≤5000,数组中每个数的值 0 \le val \le 100000≤val≤10000要求:时间复杂度 O(n)O(n),空间复杂度 O(n)O(n)进阶:时间复杂度 O(n^2)O(n2),空间复杂度 O(1)O(1)方法一:使用两个数组一个储存奇数,一个储存偶

2022-03-24 18:20:47 508

原创 图片平滑器

图像平滑器 是大小为3 x 3 的过滤器,用于对图像的每个单元格平滑处理,平滑处理后单元格的值为该单元格的平均灰度。每个单元格的平均灰度 定义为:该单元格自身及其周围的 8 个单元格的平均值,结果需向下取整。(即,需要计算蓝色平滑器中 9 个单元格的平均值)。如果一个单元格周围存在单元格缺失的情况,则计算平均灰度时不考虑缺失的单元格(即,需要计算红色平滑器中 4 个单元格的平均值)。方法一:没什么好说的,classSolution{public:vector<...

2022-03-24 16:42:37 134

空空如也

空空如也

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

TA关注的人

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