自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

QQ845264718

大家可以加我qq探讨问题

  • 博客(116)
  • 资源 (5)
  • 问答 (4)
  • 收藏
  • 关注

原创 GoLand快捷键

编辑CTRL+X 删除当前光标所在行CTRL+D 复制当前光标所在行CTRL+Z 撤回CTRL+SHIFT+Z 向前撤回ctrl+鼠标左键 可以看到当前方法的声明CTRL+Backspace 按单词进行删除SHIFT+ENTER 可以向下插入新行,即使光标在当前行的中间CTRL+SHIFT+U 可以将选中内容进行大小写转化查找CTRL+F 查找文本CT

2021-10-24 20:30:40 506 1

原创 git的一些常用指令

本地没有仓库的情况下git clone -b master [email protected]:LjtGentle/NewPocker.git 指定克隆master分支初次提交的命令git initgit add README.mdgit commit -m “first commit”git remote add origin [email protected]:xxxx.gitgit push -u origin mastergit commit -am “…” 加到本地并且注释查看分支 git

2021-09-27 22:13:13 186 1

原创 go 微服务中的token的生成和验证

你看到这篇文章,应该清楚知道token的作用,直接来生成token,和验证token的代码package mainimport ( "fmt" jwtmiddleware "github.com/auth0/go-jwt-middleware" "github.com/form3tech-oss/jwt-go" "io" "log" "net/http" "time")// 私钥const ( appKey = "[email protected]")func main()

2021-09-27 22:11:01 1371

原创 德州扑克比较大小的go语言暴力实现

德州扑克的规则项目实现了什么5张牌的比较7张牌的比较7张牌+赖子的比较(最多只有一张赖子的情况)项目的运行速度5张牌,不算读取文件,压力测试下的速度go test -bench=".*" -benchmem7张牌的速度7张加赖子的速度我的项目结构5张牌的实现方式package fireimport ( "encoding/json" "fmt" "io/ioutil" "time")// Poker 存放 文件中比较数据的结构体type poker s

2021-08-24 21:06:59 1355 2

原创 Golang主线程让子线程退出的三种方式

在golang中,主go程告知子go程退出有三种方式,建议用后面两种方式一:全局变量方式package mainimport ( "fmt" "sync" "time")var wg sync.WaitGroupvar exit bool //零值为false//方式1全局变量func mode1() { fmt.Println("come in mode1()") defer fmt.Println("out of mode1") defer wg.Done() //计数器

2021-08-08 20:59:20 3175 2

原创 买卖一次股票的问题----go语言实现

问题有一个数组[7,0,2,8,5,4],买卖股票,数组的下标对应着日期你可以操作一次买入与卖出 如:在0买入,在8卖出,赚了8-0 ,在2买入5卖出,就赚3元不能 在0买入,7卖出(意思说,卖出要在买入后)如果数组[7,5,4,3,2,1] 不买入卖出,赚0求怎么买卖赚最多,最多只能买卖一次思路分析1.卖出的下标,在买入的下标后面2.遍历找到每一下标买卖的最大值1)选择一个下标,然后遍历这个下标后面的所有数据的最大值,相减就是当前下标的最大利润2)把这个利润放入到一个数组中3)继续

2021-08-08 19:48:46 287

原创 基础数据结构----不带头结点的循环双链表go语言的实现

/*不带头结点的循环双链表*/package mainimport ( "errors" "fmt")//链表的结构体type Node struct { key int value string pre *Node next *Node}//创建一个链表func newList(key int, value string) (list *Node) { list = & Node{ key:key, value: value, } list.p

2021-08-08 17:36:02 199

原创 单循环链表,不带头结点的go语言实现

package main/*不带头结点的单向循环链表*/import ( "errors" "fmt")type Node struct { key int value string next *Node}//创建一个新结点func newNode(key int, value string)(newNode *Node) { newNode = &Node{ key :key, value: value, //next: newNode, 这样做

2021-08-07 21:05:54 178

原创 基础数据结构---双链表go语言的代码实现

本文件:带头结点双链表的各种操作1.创建双链表2.头插3.尾插4.显示双链表5.按位查询6.按位插入7.按位删除8.按值插入package main/*本文件:带头结点双链表的各种操作1.创建双链表2.头插3.尾插4.显示双链表5.按位查询6.按位插入7.按位删除8.按值插入*/import ( "errors" "fmt")type Node struct { key int value string pre *Node next *No.

2021-08-07 11:52:09 109

原创 单链表的创建、插入、删除、遍历的Go实现

package mainimport ( "errors" "fmt")/*带头结点的单链表*/type Node struct { key int value string next * Node}//创建一个链表func newList()(head *Node) { head = &Node { next: nil, } return}//头插法func addHeadList(head, newNode *Node) { if hea

2021-08-06 21:45:53 203

原创 加入go行列的一个敲门砖吗----小玩意cs多人即时聊天,没有用数据库的,没有用框架的

这个项目实现的内容有如下:1.公聊2.私聊3.修改用户名4.超时强踢这个项目的缺点:1.用的tcp协议,但没有考虑到网络传输中丢包的问题2.没有用json格式传输数据3.没有用数据库,只是实时的传输信息,甚至没有登录校验这个项目的分层结构1.客户端 client.go2.服务端 server.go main.go user.go源代码如下main.gopackage mainfunc main() { server := NewServer("0.0.0.0", 8888

2021-07-17 11:53:55 125 1

原创 MFC打开控制台输入信息和关闭控制台

在OnInitDialog函数中加入 AllocConsole();//打开控制台 freopen("CON", "r", stdin); freopen("CON", "w", stdout); freopen("CON", "w", stderr);如果出现4996错误,在文件开头加入#pragma warning(disable:4996) 然后在类向导添加:然后在刚刚添加的函数,里面加上void CFirstDlg::OnDestroy(){ CDialogEx::OnD

2021-06-10 10:34:46 488 5

原创 C++源文件中互相引用对方的头文件没问题的

小白来了个疑问:有没有A.cpp include B.h B.cpp include A.h的 ?这样做可行吗?大佬:可以,我给你举个栗子大佬:你的意思是cpp文件互相用到了对方h文件里的内容 吗?是的//////////////////////////a.hclass B;class A{ A(B* pb); B* pb_;};///////////////////////////a.cpp#include "b.h"#include "a.h"A::A(B* pb)

2021-06-10 10:16:10 299 5

原创 Windows获取系统当前时间的方式

C++的做法SYSTEMTIME stime{};//定义一个存放系统时间的结构体CString strDate{};GetLocalTime(&stime);//获取系统时间//格式化输出时间如,[2021-06-02 08:23:01:800]strDate.Format("[%04d-%02d-%02d] %02d:%02d:%02d:%03d", stime.wYear, stime.wMonth, stime.wDay, stime.wHour, stime.wMinute,

2021-06-02 08:24:08 771 7

原创 根据进程的名称强制关闭该进程Windows的实现方式 MFC

我先给一个代码,你可以直接用,什么不用管了static void kill_process_by_name(char *name){ PROCESSENTRY32 pe32 = {0};//声明一个结构体,用来存放快照进程信息的一个结构体 HANDLE hsnap = NULL; pe32.dwSize = sizeof(pe32);//指定结构体的大小 hsnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCE

2021-06-01 17:59:41 965 2

原创 MFC中的SendMessage和PostMessage

SendMessage的函数声明声明:WINUSERAPIBOOLWINAPIPostMessageA( _In_opt_ HWND hWnd, _In_ UINT Msg, _In_ WPARAM wParam, _In_ LPARAM lParam);WINUSERAPIBOOLWINAPIPostMessageW( _In_opt_ HWND hWnd, _In_ UINT Msg, _In_ WPARAM wParam,

2021-05-30 17:01:37 463

原创 MFC中用UpdateData来刷新数据

updateData函数声明// 位于afxwin.h文件中 // Dialog Data support public: BOOL UpdateData(BOOL bSaveAndValidate = TRUE); // data wnd must be same type as this函数用途UpdateData() 是MFC的窗口函数,用来刷新数据的。总的来说:操作系统会调用这个函数来初始化对话框中的数据,

2021-05-30 16:50:19 2342 1

原创 获取当前程序路径的方法C++和C#的做法

C#方法一: string exePath = System.AppDomain.CurrentDomain.BaseDirectory; Console.WriteLine(string.Format("exePath:{0}", exePath));运行的结果为exePath:E:\dingdingDownload\DR2800_Print_TSN\DR2800_Print_TSN\bin\Debug\方法二:string path = System.IO.Directory.GetCu

2021-05-29 15:56:28 1212 8

原创 C++11新关键字noexcept、override、final把我们的心意告诉编译器

noexcept告诉编译器不抛异常异常时一定要处理的,如果一个函数出现异常,它内部不对该异常做处理,异常会一直往上传递,给函数的调用者。到最后一直没有被处理,程序就会终止,调用std::terminate(),它默认调用std::abort()。void foo()noexcept;void foo()noexcept(true);//和上面等价,告诉编译器这个函数不要抛出异常当然了你可以指定函数不抛出异常的条件,例如void swap(Type& x, Type& y)noex

2021-05-27 22:51:38 1574 2

原创 C++11新特性从using化名模板到模板模板参数

新特性化名模板template <typename T>using Vec = std::vector<T,MyAlloc<T>>; //其中MyAlloc是自定义的迭代器。//然后以后声明变量就这样写Vec<int> coll;//下面的写法等价于上一面的std::vector<int,MyAlloc<int>> coll;平时我们声明一个vector是这样的vector<int> vec;//没有特意

2021-05-27 22:13:59 259

原创 C++11新特性 =default 与 =delete,看完你就会懂,会用了

简述 =default和=deleteC++11加入了=default与=delete两个关键字,它们只作用于big five(默认构造、拷贝构造、赋值构造、析构函数和带&&的赋值与拷贝构造)不带&&的前面一些叫big three。单纯从英文翻译为中文来说,default是默认的意思,delete是删除的意思。在这里也是大概这样的意思。=default是保留默认的big five,=delete是删除默认的big five。写空的类不是空的什么时候空的类不再是空的呢,当

2021-05-25 23:43:22 2369 10

原创 C++11for循环的一种特殊写法

C++1.0的for循环写法是这样的:#include <iostream>using namespace std;int main(){ int n[10]{1,2,3,4,6,8,9,0}; //后面几位会用0补充 for(int i = 0; i < 10; i++) { cout<<n[i]<<endl; }}C++2.0(C++11)新版的for循环是这样的:#include <i

2021-05-24 22:49:02 388 2

原创 c++11对构造函数多过一个参数用explicit

explicit这个关键字在C++1.0(C++11之前)就已经有了。但C++11提出, explicit for actors taking more than one argument。例子1:(这个例子不太符合explicit)#include <iostream>using namespace std;class P{public: P(int a, int b) { cout << "P(int a, int b)" &lt

2021-05-24 22:05:17 593 1

原创 C++11新特性统一初始化

为什么提出统一初始化?在C++11之前,程序员,尤其是新手,很容易被如何初始化变量或对象的问题弄糊涂。初始化可以使用圆括号、大括号和赋值操作符(=)。因此,C++11引入了统一初始化的概念,这意味着对于任何初始化,你都可以使用一种通用语法。这个语法使用了大括号。举一些统一初始化的例子#include <iostream>#include <vector>#include <string>#include <complex>using names

2021-05-23 21:27:56 408 12

原创 C++11新特性nullptr与std::nullptr_t

C++11允许使用nullptr代替0或NULL来指定指针不指向任何指(这与拥有未定义的值不同)。这个新特性特别有助于避免将空指针解释为整数值发生的错误。例如:void f(int);void f(void*);f(0); //calls f(int)f(NULL); //calls f(int) if NULL is 0 容易产生歧义int *p = NULL; //NULL本质上就为0f(p);//calls f(void)f(nullptr); //calls f(void

2021-05-23 15:39:21 1507 1

原创 C++11新特性数量不定的模板参数

什么叫数量不定的模板参数呢?请看下面的例子#include <iostream>using namespace std;void print()//递归的出口{ //空实现}template<typename T, typename... Types>void print(const T& firstArg, const Types&... args){ cout << firstArg << endl; prin

2021-05-23 14:26:24 1303

原创 可能编译器默认不使用C++11的特性,VS设置使用C++11的特性的方法

检查自己的IDE是否支持C++11 cout << __cplusplus << endl;支持C++11是输入结果是>=201103L这个是在Microsoft截的图VisualStudio2017下配置支持C++11特性的做法右键项目属性,选择C++11后的版本就行了,我这里选择了17。然后在这里加入一句话/Zc:__cplusplus再输出__cplusplus=201703L到此为止,编译器就支持了C++11的新特性了,其他IED也需要类似的配置

2021-05-23 13:13:44 4099

原创 C++11返回值类型后置

为什么需要C++11的新特性,返回值类型后置呢?返回值类型后置语法,是为了解决函数返回值类型依赖于参数而导致难以确定返回值类型的问题。有了这种语法以后,对返回值类型的推导就可以用清晰的方式(直接通过参数做运算)描述出来,而不需要像 C++98/03 那样使用晦涩难懂的写法。在泛型编程中,我们可能会遇到,通过参数运算得到的返回值如下面的例子。在此之前,我当你了解了auto与decltype,不了解可以看看我以前的博客。例子如下:#include <iostream>#include &

2021-05-22 22:46:47 463

原创 不会用配置文件(ini)去设置代码中的变量?我教你啊!

为什么要用配置文件用配置文件去设置变量可以提高程序的复用性,也很方便。改功能或是参数值,只需要在配置文件中修改就行了,不用修改代码。这样没有源代码,也可以轻松配置程序去实现自己想要的功能。配置文件在Windows下格式[Section1]KeyWord1 = Value1KeyWord2 = Value2…[Section2]KeyWord3 = Value3KeyWord4 = Value4C#中配置文件内容获取或修改的函数如下 [DllImport("kernel32

2021-05-21 17:00:30 669

原创 C++11类型推导的关键字auto和decltype

他们的语法格式:auto varname = value; decltype(exp) varname [= value]; 稍微解释一下,看不懂没关系,耐心往下看你就会明白了:varname 表示变量名,value 表示赋给变量的值,exp 表示一个表达式,方括号[ ]表示可有可无。auto 和 decltype 都会自动推导出变量 varname 的类型,但是他们都推导方式有些区别:auto 根据=右边的初始值 value 推导出变量的类型;所以auto要求变量必须初始化,也就是在

2021-05-21 16:25:50 454 13

原创 WinForm修改程序图标的做法

图标分两种,一种是exe图标、一种是运行时的图标exe图标这个就是exe图标修改方式:右键点击项目属性,出来下图程序运行时的图标修改的方式:点击窗体Form右键属性,出来下图

2021-05-20 09:35:37 751

原创 C#Winform窗体的基本显示操作

模态与非模态窗体模态运行窗体就是,打开窗体,这个窗体不关闭的话,是操作不了其他窗体,非模态就是可以随意操作任意窗体。using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using Syst

2021-05-17 22:44:26 1737 1

原创 C#开发中请多使用foreach

什么是foreachforech就是传说中的增强for循环或者称作foreach循环forech对遍历字典或集合具备天然优势,效率高过for循环foreach 操作数组 public void TestFor1() { int[] ints = { 1, 2, 3 }; foreach (int item in ints) { Console.WriteL

2021-05-14 12:41:03 227

原创 C#Dictionary字典

Dictionary字典在声明 Dictionary字典时,需要同时为其声明 Dictionary字典内键与值的类型键与值可以是任何类型,但是键必须在设置时是唯一的,而值可以不唯一例子: Dictionary<int, string> dic = new Dictionary<int, string>(); dic.Add(1, "100分"); dic.Add(2, "95分"); dic.Ad

2021-05-13 21:44:58 437 2

原创 C#集合ArrayList与List的使用说明书

在C#中ArrayList与List是常用的集合,List是微软后面开发出来的ArrayListArrayList的优点:ArrayList大小是按照其中存储的数据来动态扩充与收缩的ArrayList 在声明对象时并不需要指定它的长度ArrayList可以很方便地进行数据的添加插入删除 ArrayList aList = new ArrayList(); //插入 aList.Add(123);

2021-05-13 21:24:39 260

原创 掌握这些C#的字符串运用技巧就很省事了

using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;using System.Runtime.InteropServices;nam

2021-05-13 17:10:18 158

原创 咋们不是个成熟的程序员那不得学会打印日志和捕抓出错?

杂谈刚刚入行不久,想得太简单,出错了也知道哪里的问题,思维不够严密。加班熬夜少不了,写代码两小时,调试两整天。怀疑别人写的代码有问题,怀疑别人写的借口有问题,甚至于怀疑编译器。因为没有打印日志而选择弹框报错,报错信息不详尽,哪里出问题都不知道;没有catch错误,挨批了。我还以为catch C#才有的。如何打印日志在接口调用位置打日志在关键函数位置打日志在线程进程位置打日志在句柄位置打日志在关键信息的位置打日志在数据库调用的位置打日志在你怀疑的地方打日志 总之我们的程序运行情况也全都依

2021-04-18 17:33:18 131 2

原创 给大忙人们整理的一份结构体内存说明书

你是不是一直这样觉得结构体的内存大小,就是每个不同类型变量的大小之和?你在刚刚接触链表的时候,是不是觉得很奇怪?为什么定义了一个节点的指针,却不能直接用呢?为什么要nodenewnode=(node)malloc(sizeof(node))这样声明一个节点指针呢?或是说你是否听说过结构体内存对齐呢? 你是否见过一些代码将一个char*类型强制转换为结构体类型的代码呢,而认为别人写错了。先说结构体内存对齐的概念为什么要内存对齐?1.其实结构体内存对齐是拿空间换取时间的做法。提高效率CPU把内.

2021-04-16 10:27:20 85

原创 MFC中设置定时器SetTimer与OnTimer以及KillTimer

SetTimer函数作用:用于创建一个计时器,KillTimer函数用于销毁一个计时器。计时器属于系统资源,使用完应及时销毁。函数原型:_AFXWIN_INLINE UINT_PTR CWnd::SetTimer(UINT_PTR nIDEvent, UINT nElapse, void (CALLBACK* lpfnTimer)(HWND, UINT, UINT_PTR, DWORD))参数:参数nIDEvent指定一个非零的定时器ID。参数nElapse指定间隔时间,单位为毫秒。

2021-04-15 14:46:49 2118 1

原创 MFC中MultiByteToWideChar和WideCharToMultiByte

MultiByteToWideChar作用:可以映射一个字符串到一个宽字节(Unicode) 的字符串 .由该函数映射的字符串没必要是多字节字符组。函数原型:intWINAPIMultiByteToWideChar( _In_ UINT CodePage, _In_ DWORD dwFlags, _In_NLS_string_(cbMultiByte) LPCCH lpMultiByteStr, _In_ int cbMultiByte, _Out_wri

2021-04-14 19:37:42 503

DogChatV0.2.tar.gz

go语言项目,适合刚刚上手的,数据库用redis,即时聊天系统,c/s模式。实现了注册登录、上下线广播、公聊私聊等功能

2021-08-05

整理好的数据库语句,真好玩

SQL数据库的常用语句大全

2021-04-16

TESTDLLALL.zip

C++调用C++与C#DLL的具体实现代码

2021-04-07

开发常见的单词,我个人所遇见

程序开放常见单词

2021-03-30

gec6818手势识别智能家居系统设计

项目功能: 1-电子相册功能-可以触屏控制相册的浏览也可以手势控制相册的浏览、滑屏控制(拓展(触屏):顺序播放和随机播放相片) rand()%10={0---9} 2-MP3播放器功能-可以触屏控制音乐的播放、暂停、播放上一首、播放下一首;滑屏控制播放上一首、播放下一首;同时可以手势控制 3-视频播放器功能-①触屏控制视频的播放、暂停、快进、快退、 调节音量+- 、静音;②滑屏控制快进、快退;③同时使用手势控制 (拓展(触屏):播放下一个上一个视频,可以顺序播放和随机播放) 4-视频监控功能:触屏控制监控和停止监控

2021-01-14

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

TA关注的人

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