- 博客(69)
- 资源 (1)
- 收藏
- 关注
原创 mmdetection调整检测框和文字大小
打开/usr/local/lib/python3.7/dist-packages/mmdet-2.18.0-py3.7.egg/mmdet/models/detectors/base.py设置thickness和font_size。打开/usr/local/lib/python3.7/dist-packages/mmdet-2.18.0-py3.7.egg/mmdet/apis/inference.py设置检测框和文字颜色。
2022-07-18 12:42:27 1431 1
原创 MatConvNet1.0bate25+win10+vs2015+matlab2017a GPU编译踩坑
MatConvNet1.0bate25+win10+vs2015+matlab2017a GPU编译踩坑开头按照下边这个搞,不出意外的话直接成功。(但一般会出意外----狗头表情)matconvnet安装、编译、配置 - 知乎 (zhihu.com)完了之后编译GPU的时候报这个错:(编译的过程会有大量warning这个不用管)error: …\Windows Kits\8.1\Include\um\combaseapi.h “IUnknown” is undefined解决办法:在Windows
2022-05-11 16:12:41 275
原创 pip一条指令设置阿里云镜像
pip config set global.index-url https://mirrors.aliyun.com/pypi/simple
2022-04-28 14:21:24 1231
原创 如何实现在WPF中播放流视频
最近有一个需求是获取视频的url后,使用url在WPF中播放视频,试了好多方法都很复杂或者很难实现。经过百般查找,终于找到了一个好方法。就是使用cefsharp将chrome浏览器内嵌到WPF中,然后使用loadhtml函数加载HTML字符串,在HTML字符串中设置video标签即可!步骤1.安装nuget包,搜索CefSharp.Wpf点击安装(其余三个包会自动安装)注意:一定要选择79.1.360版本,因为cefsharp本身不支持H.264视频播放,所以后边我们需要对一个动态库做替换。2.
2022-04-23 13:41:21 3417
原创 Anaconda一切都按照网上的教程安装为什么还是用不了
Anaconda一切都按照网上的教程安装为什么还是用不了???最近一位非科班朋友向我求救,Anaconda一切都按照网上的教程安装为什么还是用不了???经过一系列询问,我也没有找到确切的原因,于是我打算亲自上阵。最终,终于找到了问题!!!!!!!!!!!!!Anaconda不支持中文安装路径,是因为我的朋友在电脑添加管理员时使用的是中文名,所以C盘User那里生成的用户文件夹的文件名也是中文,Anaconda在安装使用的时候,一部分配置文件会在用户文件夹中自动生成,但是此时遇到中文路径就GG了。所以
2022-04-21 11:53:11 1773 1
原创 WPF使用ListView的SelectionChanged选中后刷新ListView时如何避免再次触发SelectionChanged
问题描述WPF实现分页后,使用ListView显示图片列表,利用SelectionChanged实现单机事件选中列表中的某个图片,并显示到Image控件,如图所示。但是当我通过单机事件选中某一项后,切换下一页或其他页面对ListView列表进行刷新时,程序会再次触发SeletionChanged(因为选中项发生了改变)。找了好多方法无法解决,最终,通过自己的调试找到了一个极其简单且好用的方法,即添加一个判断。if(imageList.SelectedItem == null){ retur
2022-04-21 11:42:06 2183
原创 WPF获取服务器端验证码图片并显示到Image控件
WPF(C#)中获取远端服务器验证码图片,并显示到Image控件上。无需将图片存储到本地,可以支持验证码无限次更新,不会出现不出图的情况。
2022-04-15 17:01:27 779
原创 WPF实现点击刷新远端验证码功能
WPF通过api显示远端验证码并可点击刷新效果图:前端:<Image Name="ImgValidate" Cursor="Hand" MouseLeftButtonDown="Image_MouseLeftButtonDown" Source="https://...(你使用的验证码api)" Height="40" Width="100" Stretch="Fill"/>后端:private void Image_MouseLeftButtonDown(object sende
2021-11-12 14:45:35 258
原创 php简易xml文件上传下载工具
php简易xml文件上传下载工具使用apache服务器,以下文件放置在Apache配置文件中书写的对应的根目录即可。index.html<html> <head> <title>ftp上传下载工具</title> </head> <body> <meta http-equiv="Content-Type" content="text/html; charset=utf-
2021-10-29 10:48:56 204
原创 本地sql文件导入远程数据库
本地sql文件导入远程数据库(解决乱码问题)$ mysql -u user -h ip -P port -D dbname -pEnter password:MySQL [dbname]> set names utf8;(或其他需要的编码,防止乱码)MySQL [dbname]> source xxx.sql
2021-09-22 10:36:21 402
转载 grafana数据迁移到mysql,超级简单!亲测可用!!!
grafana数据迁移到mysql,超级简单!亲测可用!!!背景grafana 默认采用的是sqlite3,当我们要以集群形式部署的时使用mysql较为方便,试了很多sqlite转mysql的方法要么收费,要么有很多瑕疵。操作从sqlite3切换数据库到mysql准备工作mysql 安装好create database grafana步骤1.停服Linuxsystemctl stop grafana-server Windows直接关闭 grafana-server2.导出数据
2021-09-15 17:39:00 1602
原创 vim使用技巧-如何暂时返回终端
vim使用技巧-如何暂时返回终端再便捷的返回vim?1.暂时切换到shell模式:! <command>如::! ls2.暂停正在运行的vimCtrl + Z将暂停vim进程并返回到您的shell然后输入以下命令将返回到刚刚的vimfg3.start a new shell 开启一个新的shell使用以下命令启动子shell::sh然后在终端输入Ctrl + D或exit或者:!bash然后在终端输入Ctrl + D或exit参考:https://blo
2021-09-02 16:24:17 3984
原创 解决“Address already in use“,关闭TCP连接
我们在后端开发的过程中往往会在没有正常关闭某个正在执行的脚本或者程序而是直接关闭了Terminal(终端)或是通过其他方式的异常关闭导致了之前的端口实际上仍未被释放,这时候倘若我门想要再使用这个端口,就会抛出 “error:[Errno 98] Address already in use” 这样的异常。这时候我们只需要找到正在利用这个端口的进程,并得到这个进程的PID,杀死这个PID对应的这个进程,就能够有效释放被占用的端口,后续再使用的时候就不会再抛出端口已经被占用的异常信息。1.获取改端口号的进程
2021-08-10 17:06:21 1454
原创 是谁说的Python3用不了MySQLdb???!!!
接下在就是见证奇迹的时刻pip install mysqlclient安装过程中如果遇到坑可以试试这篇文章(从这个地方开始yum install libmysqlclient-dev)
2021-07-29 09:37:57 108
原创 超好用!vim的缩进设置
超好用!vim的缩进设置redhat请进入:cd /etc/ubuntu请进入:cd /etc/vim/以下操作相同:vim vimrc打开vimrc后在底部插入以下内容即可:set sw=4set ts=4 filetype indent onautocmd FileType python setlocal et sta sw=4 sts=4前面两行将shiftwidth和tabstop都设为4。第三行开启自动的缩进检测。最后一行则根据Python语言的建议(将tab展成
2021-07-26 15:08:14 2747
原创 Linux python2安装mysql-python遇到的坑
Linux python2安装MySQLdb遇到的坑首先pip install MySQL-python遇到报错 提示:EnvironmentError: mysql_config not found网上搜索资料提示这是因为本机需要安装llibmysqlclient-dev执行yum install llibmysqlclient-dev但是我的即使通过官网下载rpm文件,添加了mysql comunity的源之后依然找不到该文件。所以我直接在本机安装了mysql:yum instal
2021-07-26 10:37:43 382
原创 Grafana在Windows下的安装配置
Grafana在Windows下的安装配置1.下载grafana压缩包官方下载地址:https://grafana.com/grafana/download?pg=get&plcmt=selfmanaged-box1-cta1&platform=windows选择自己想要下载的版本并选择”zip file“安装方式。2.解压压缩包到指定文件夹3.更改配置文件进入conf目录并将配置文件sample复制为custom,编辑custom配置文件,Grafana的默认端口为300
2021-06-15 11:24:15 4167 1
原创 在不使用Anaconda、virtualenv等工具的情况下实现多个Python环境共存
在不使用Anaconda、virtualenv等工具的情况下实现多个Python环境共存假如你的电脑已经安装了一个Python环境或者已经安装了Anaconda等工具,但是由于某些需求,你需要再次安装一个特定版本的Python环境,但是当你在CMD终端输入Python或者pip时调用的却是之前已安装好的Python环境,此时你可以使用以下方法来解决这个问题,使他们共存。1.下载好需要版本的Python安装包2.安装到指定目录,将本次安装的Python添加到系统环境变量。(注意Python的安装路径不要
2021-05-07 21:30:38 303
原创 使用WPF将Python代码打包成Windows应用
使用WPF将Pytorch深度学习代码打包成windows应用个人的思路:方法一:1.使用pyinstaller将python代码进行打包,可参考网上的pyinstaller使用方法,建议使用spec文件进行打包。2.WPF中使用Process类新开一个进程直接调用打包好的Python可执行文件(网上有Process的使用方法)。优点:软件制作完成后可使用vIsual stdio的windowsinstaller(可自行安装该插件)将所有程序打包到一个setup文件,安装的过程中不需要在客户机重新
2021-05-07 21:11:20 1040
原创 快速排序简便写法,一次遍历找到pivot
“快速排序”简便写法,一次遍历找到pivotint Partition(vector<int>& arr, int l, int r){ int i = l, pivot = arr[r]; for(int j = l; j < r; ++j) { if(arr[j] < pivot) { swap(arr[i++], arr[j]); } } swap(arr
2021-04-02 15:41:15 197
原创 eventfd原理通俗解析
eventfd原理通俗解析职能分离:IO线程专门处理数据的收发,计算线程专门处理业务逻辑。问题:当计算线程接收到要发送给客户端的数据时,不能直接发送,必须由IO线程发送怎么办?计算线程要通知IO线程发送数据,涉及到线程之间的通信,子线程通知子线程。eventfd可以完成线程间通信(它的功能可以类比于timerfd)eventfd中的write()函数和read()函数通过同一个文件描述符进行读写,在一个线程中调用write()可以使内核计数器增加8字节整数,另一个线程中调用read()函数,它可以
2021-03-28 17:27:25 448
原创 ASCII码中10和13的含义
ASCII码中10和13的含义今天在看代码的时候遇到了这样一行代码if(top.size() == 1 && (static_cast<unsigned int>(top[0]) == 10 || static_cast<unsigned int>(top[0]) == 13)){ continue; } //top的类型为string首先中文的string一个字的size()为2 所以top.size() == 1表示这个字不是中文,那后面的10
2021-03-26 16:50:54 5195 2
原创 c++linux中make使用方法
目标文件:依赖 命令例:main.exe:hello.cc g++ hello.cc -o main.exe #g++ *.cc -o main.exe #编译所有.cc文件删除文件clean: rm -rf main.exe.o文件可以自动依赖于.cc文件如果有两个makefile文件我们可以通过以下命令来选择执行哪个makefile文件。make -f makefile2make只会执行第一个,想要所有语句都执行可以使用allall:hello.exe
2021-01-15 18:04:43 239
原创 c++ socket 实现客户端与服务端聊天功能
将发消息和接收消息交给两个不同的线程处理,通过while循环实现无限首发,输入”q“退出。server端void *recvMsg(void *arg){ pthread_mutex_lock(&mutex1); while(!flag) { pthread_cond_wait(&cond1, &mutex1); } int new_fd = *(int*)arg; char buff[1024] = {0}; cout << "waiting
2020-12-28 11:03:05 490
原创 c++智能指针
智能指针unique_ptr当unique_ptr被销毁时,会执行delete操作。不可以复制或赋值但是可以进行转移(内部具有移动语义的实现)shared_ptr复制时引用计数加1weak_ptr和shared_ptr联合使用时可以解决循环引用的问题。weak_ptr没有重载 *(解引用)和->所以无法直接访问资源如果要访问资源,只能使用lock()方法来提升为shared_ptr在类内部希望获取到本对像智能指针必须要继承自辅助类enable_shared_from_this不要将
2020-12-28 10:39:52 87
原创 linux多线程pthread使用
linux多线程pthread使用头文件pthread.hpthread_t pthid;pthread_create(&pthid, null, func, null)创建线程。pthread_join(pthid, NULL)等待该线程执行完毕后再退出,阻塞(线程挂起,不再占用CPU)。pthread_self()可获得本线程的id。%ld线程互斥锁pthread_mutex_t mutex1pthread_mutex_init(&mutex1, null)初始化互斥锁
2020-12-28 10:38:03 236
原创 socket网络编程
socket网络编程处理并发的方式1.多线程创建一个子线程将任务分配给子线程处理2.IO多路复用单线程处理多个客户端的请求select 多路选择poll 轮询epoll 基于事件的轮询解决阻塞问题acceptrecv/send 默认情况下都是阻塞的可以通过以下方式设置成非阻塞int listenfd = socket(AF_INET, SOCK_STREAM | SOCK_NONBLOCK, 0)fcntl();ioctl();select函数最后一个值没有设置
2020-12-28 10:37:29 87
原创 线程池原理
有少量请求创建线程 处理 回收线程交给一个线程处理,处理完毕后,得到一个结果,发送给客户端有大量请求例如一秒中发来3000个请求假设有8个线程生产者消费者模型(将3000个请求放到一个队列中,8个线程从队列中取任务并完成它)对于32为系统,1个进程最多能创建多少个线程?32位的操作系统,能够被用户态程序使用的虚拟地址空间大约只有3G每个线程都有自己的栈空间,通过栈空间的大小就可以推导出1个进程最多能开启的线程个数大约为3G/栈空间大小线程开的越多越好吗?
2020-12-28 10:36:54 75
原创 c++ static关键字
static定义静态成员首先它位于静态区静态成员函数不带this指针类内部的静态成员变量要在类之外进行初始化static_cast(expression)类型转换,把expression转换为typeid
2020-12-28 10:36:18 73
原创 c++linux中make使用方法
目标文件:依赖 命令例:main.exe:hello.cc g++ hello.cc -o main.exe #g++ *.cc -o main.exe #编译所有.cc文件删除文件clean: rm -rf main.exe.o文件可以自动依赖于.cc文件如果有两个makefile文件我们可以通过以下命令来选择执行哪个makefile文件。make -f makefile2make只会执行第一个,想要所有语句都执行可以使用allall:hello.exe
2020-12-28 10:34:36 455
原创 c++移动语义
移动语义为什么需要移动语义?答:节约资源哪里浪费资源了?我们要节约什么资源?答:以String类的构造函数为例class String{public: String(const String &rhs) :_data(new char[strlen(rhs._data) + 1]()) { strcpy(_data, rhs._data); cout << "String(const S
2020-12-17 21:17:16 317
原创 C、C++类型重定义
将char *类型重定义为iterator,即给它重新起了个名字,iterator就是 char *using char * = iterator//C++我们常用using来引入命名空间(using namespace std;),实际上它也可以用来“改名”typdef char * iterator //C语言用法...
2020-12-15 17:59:22 718 2
原创 c++模板template范式编程
可以使用它来简化代码,分为函数模板和类模板函数模板如:我们想要实现一个可以返回两个数之和的函数。我们需要把所有的类型通通重载一遍。int add(int x, int y) //定义两个int类型相加的函数{ return x + y;}double add(double x, double y) //重载double类型{ return x + y;}//long,long long, float...int main(){ add(x, y);//我们想写进任意类型的
2020-12-15 17:49:50 238
原创 c++虚函数的用法
虚函数机制如何被激活?基类定义虚函数,派生类重定义虚函数(即所谓的覆盖)创建派生类对象基类的指针指向派生类对象基类指针调用虚函数。构造函数和析构函数内访问虚函数即使是使用”this->虚函数名“的形式来调用,编译器仍将其解释为静态联编的"本类名::虚函数名",即它们所调用的虚函数是自己类中定义的,如果自己类中没有实现该函数,则调用基类中的虚函数,但一定不会调用任何派生类中重定义的虚函数。纯虚函数在基类中不给出具体实现,把它声明为纯虚函数,留给它的派生类去实现。这就是纯虚函数的作用。
2020-12-10 19:45:35 581 1
原创 c++explicit作用
首先我们要知道explicit作用是是表明该构造函数是显式的,类的构造函数默认情况下是隐式(implicit)的。显式声明和隐式声明的区别://不加explicit(隐式)class num{public: num(int n) { cout << n << endl; }};int main(){ num n1 = 10; //ok 这里发生了隐式转换 num n2(10); //ok return 0;}num n1 =
2020-12-10 19:41:36 189 4
原创 c++operator的两种用法
c++operator的两种用法第一种用法相信大家都很熟悉,即它是用来进行运算符重载第二种用法是用来进行隐式转换,如:class String{public: String(string s) :_s(s) {} operator string() { return _s; } private: string _s;};int main(){ String s("abcd"); string s1 =
2020-11-30 14:47:14 1536
原创 SFML+vs2019安装
SFML+vs2019安装1.创建一个c++空项目2.打开属性管理器3.添加新项目属性表在×64下单击鼠标右键添加成功后回到属性表×64找到刚刚添加的属性表单击鼠标右键–>属性单击找到SFML安装目录的include,复制路径粘贴到C/C+±->常规–>附加包含目录找到SFML安装目录的lib,复制路径粘贴到链接器–>常规–>附加库目录找到链接器–>输入–>附加依赖项添加lib文件夹中的库文件,添加以下五个即可:sfml-audio
2020-11-14 15:41:22 3579 4
原创 c++单例模式的自动释放问题
c++单例模式的自动释放问题1.嵌套类+静态对象#include <iostream>using std::cout;using std::endl;class Singleton{public: static Singleton * getInstance() { //使用懒汉模式时,在多线程环境下是非线程安全的 //可以通过加锁来实现线程安全 if(nullptr == _pInstance) { _pInstance = new Singleton()
2020-11-01 16:13:04 365
原创 将windows中内容复制粘贴到xshell的vim编辑页面
将windows中内容复制粘贴到xshell的vim编辑页面在windows中复制内容进入vim界面–>按键shift+insert–>gg=G(自动对齐)
2020-11-01 14:01:35 2759
原创 c++设计模式之Pimpl
设计模式之Pimpl当两个公司进行合作的时候,A公司不想让B公司看到自己的核心代码是如何实现的,就可以用到此方法。Pimpl可以对类内部实现数据进行隐藏。有如下优点:提高编译速度;实现信息隐藏;减小编译依赖,可以用最小的代价平滑的升级库文件;接口与实现进行解耦;移动语义友好。代码示例: /// @file pimpl.h#include <iostream>using std::cout;using std::endl;class Po
2020-11-01 14:01:03 245
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人