自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Go 程序编译成 DLL 供 C# 调用。

阅读目录一、1. 实现方式与语法形式 1.1.1 Go代码 2.1.2 C# 代码 二、2. Windows 下编译依赖的环境 三、3. 操作系统 64 位与 32 的编译 四、4. c# 中操作系统 64 位与 32 的适配 五、5. 其它一些问题 1.5.1 字符串转换 2.5.2 调试 六、6. 相关参考阅读目录C# 结合 Golang 开发Go 程序编译成 DLL 供 C# 调用。回到目录C# 结合 Golang 开发...

2021-05-08 14:27:56 2498 1

原创 Linux Core文件

设置core文件大小ulimit -c 结果为0则不能生成ps:ulimit -a 用来显示当前的各种用户进程限制临时设置(如下设置2G,单位为kbyte):如果生成的信息超过此大小,将会被裁剪,最终生成一个不完整的core文件。在调试此core文 件的时候,gdb会提示错误。# ulimit -c 4194304永久设置:# echo" * soft core 4194304">> /etc/securi...

2021-03-31 19:35:43 263 1

原创 c++11 之 async

promise和promise基本原理:线程1初始化一个promise对象和一个future对象然后把promise传递给线程2线程2于是对线程1有了一个promisefuture相当于一个接受一个promise,用来获取未来线程2传递的值线程2获取到promise后,需要对这个promise传递有关的数据,之后线程1的future就可以获取数据了。线程1阻塞等待线程2的数据到达使用方法:https://blog.csdn.net/hyl999/article/d..

2021-02-15 16:06:28 1092

原创 Golang 之 中间件

golang 中间件的实现本质:写一个func,接受handler并且返回handler把私货写在func里面,从而实现把你要写的操作执行了之后,再把原有的流程进行下去一个好的中间件有一个责任就是可插拔并且自足。例子:package mainimport ( "fmt" "github.com/devfeel/dotweb")func main() { app := dotweb.New() // App注册中间件 app.Use(NewSessio...

2020-12-01 16:45:52 1518 1

原创 error LNK2019: unresolved external symbol __imp__inet_pton@12 referenced in function XXX

出现这个测错误得原因是忘了在link的input里面加入Ws2_32.lib

2020-10-24 14:22:14 544

原创 Golang 之 文件硬连接 与 软连接

Golang support for native Windows hard links was added in Go 1.4. Specifically,this commitmakes the following snippet work:err := os.Link("original.txt", "link.txt")Beware that not all Windows file systems support hard links. CurrentlyNTFS and UDF...

2020-10-21 19:38:36 5337

原创 golang 之 flag 的使用例子

package mainimport ( "flag" "fmt")func main() { //定义一些变量用于接收命令行输入的参数值 var user string var pwd string var host string var port int //&user 就是用来接收命令行中输入的 -u 后面的参数值 // "u" 就是命令行中 -u 指定参数 // "",默认值 //"用户名.

2020-10-21 16:16:22 1123

原创 golang 之 cannot find package “***“ in any of

build的时候遇到:cannot find package "***" in any of:path1,path2首先根据GO111MODULE的值和是否有go.mod决定查找package的位置在哪里查找如果查找的位置没有可以:方法1:通过设置GOPATH加入package所在位置设置方法(Linux):export GOPATH=XXX或者export GOPATH=$GOPATH:XXX (这是加一个新的路径)方法2:如果是mod模式查...

2020-10-21 11:58:54 2452

原创 fatal error C1010: unexpected end of file while looking for precompiled head

在编译VS时候,出现fatal error C1010: unexpected end of file while looking for precompiled head。问题详细解释:致命错误C1010,在寻找预编译指示头文件时,文件未预期结束。就是没有找到预编译指示信息的问文件。顾名思义就是预编译因为缺少了预编译文件而失败。解决方法显然可以取消预编译,或者帮助编译器找到预编译文件。故解法:1.右键单击项目工程中的cpp文件,在菜单Project->Settings->.

2020-10-20 15:46:49 288

原创 一个基本的 go httpserver

packet main负责调用main()只负责启动和关闭server用到的是:packet app是真正的服务器应用包使用了4个packet:"github.com/devfeel/dotweb""github.com/track/blogserver/pkg/config""github.com/track/blogserver/pkg/controllers""github.com/track/blogserver/pkg/rou...

2020-09-23 17:08:54 583

原创 Golang 之 简单的例子

1 main.go 启动apppackage mainimport ( "log" "github.com/track/blogserver/pkg/app")func main() { // 初始化app app := app.NewApp() defer app.Destory() // 启动 log.Fatal(app.Launch())}2 app 类

2020-09-10 22:06:31 633

原创 Golang 之 基本环境与编译

环境搭建go下载地址 https://golang.org/dl/go安装参考文档 https://go-zh.org/doc/installhttps://www.jianshu.com/p/33cf4f41cae9windows下载安装(windows msi)以后需要配置一下环境变量安装好以后以及设置好下面的环境变量以后,使用命令:go versiongo env查看是否正确安装设置成功。下面的$是shell中引用变量的,如果是windowscmd就用 %%..

2020-09-09 17:36:06 571

原创 linux下同步与互斥

锁主要有两个用途:1 解决互斥访问资源2 解决一个任务对另一个任务的依赖关于linux内核:linux内核只提供了轻量进程的支持,未实现线程模型。Linux是一种“多进程单线程”的操作系统。Linux本身只有进程的概念,而其所谓的“线程”本质上在内核里仍然是进程。1、互斥锁1.1 普通互斥锁这里普通互斥锁指的是非递归互斥锁。为了保护共享资源,使我们线程可以单独使用某个共享资源,使用之前先上锁,当其他进程要使用的时候,就需要等待到这个线程用完之后,再开锁...

2020-08-10 12:31:45 835

转载 可靠的UDP (RUDP)

最近和很多实时音视频领域的朋友交流中都有谈论到 RUDP(Reliable UDP),这其实是个老生常谈的问题,RUDP 在很多著名的项目上都有使用,例如 Google 的 QUIC 和 webRTC。在 UDP 之上做一层可靠,很多朋友认为这是很不靠谱的事情,也有朋友认为这是一个大杀器,可以解决实时领域里大部分问题。作为教育公司,学霸君在很多实时场景下确实使用 RUDP 技术来解决我们的问题,不同场景我们采用的 RUDP 方式也不一样。先来看看学霸君哪些场景使用了 RUDP:全局 250 毫秒延迟

2020-07-13 16:48:01 7050

原创 UltraEdit删除空行 & UltraEdit Syntax

首先使用UltraEdit打开文件,选择“搜索”菜单的“替换”命令。在替换对话框中,选中“正则表达式”复选框,并在“查找什么”中输入:%[ ^t]++^p,注意^t之前有空格。  然后正则表达式引擎记得选UltraEdit引擎正则表达式 (UltraEdit Syntax):% 匹配行首 - 表明要搜索的字符串一定在行首.$ 匹配行尾 - 表明要搜索的字符串一定在行尾? 匹配除换行符外的任一单个字符.* 匹配任意个数的字符出现任意次数(不包括换行符)...

2020-05-14 13:03:56 337

原创 DOS下使用 tail -f

安装下面这个程序:http://www.microsoft.com/downloads/details.aspx?familyid=9d467a69-57ff-4ae7-96ee-b18c4790cffd&displaylang=enC:\Program Files (x86)\Windows Resource Kits\Tools>tail -f test.txtJS: ...

2020-04-26 13:43:46 464

转载 STL中map用法详解

Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识...

2020-04-13 17:44:16 354

转载 error LNK2005: 已经在*.obj中定义

为什么会出现这个错误??“error LNK2005: 已经在*.obj中定义”  编程中经常能遇到LNK2005错误——重复定义错误,其实LNK2005错误并不是一个很难解决的错误,弄清楚它形成的原因,就可以轻松解决它了。造成LNK2005错误主要有以下几种情况:1.重复定义全局变量。可能存在两种情况:A、对于一些初学编程的程序员,有时候会以为需要使用全局变量的地方就可...

2020-04-10 23:28:18 8075 1

转载 c++ 之 纯虚函数调用 pure virtual function call 错误

基类中定了纯虚拟函数,派生类中将其实现,但在某些情况下会出现 r6025 runtime error, pure virtual function call 这样的错误。在基类某个函数中调用该纯虚函数,本意是为了使用多态,1.在基类的构造函数中调用该函数,此时派生类派生类还未构造成功;2.或是在基类的析构函数中调用该函数,此时派生类以被销毁;以上两...

2020-04-06 17:45:06 2104

转载 c++ 之 在VS中添加lib的4种方法

1、lib的理解lib是一个二进制文件,与dll类似,供其他程序调用。lib与dll的区别是:dll是运行时需要的,lib是编译时需要的2、加载lib分两种方法,第一种适用于当前项目。第二种适用于所有项目,设置好后即使重建新项目也不需重新设置。(1)第一步:Project->Test Property Pages->C/C++->General->Add...

2020-03-28 10:11:39 5661

转载 Golang 之 切片

切片go语言的切片与Python的切片看起来是一样的,但是却截然不同,Python的切片操作是一种深拷贝行为,切出来就是切出来了,go语言的切片操作是一种引用行为。为什么会有切片go语言中的数组是定长序列,查询快但是不易操作,例如我们不能对他进行追加元素。所以就有了切片,相比于数组,切片是一个不定长序列,同时他是基于数组的封装,也就是说他有了数组的操作速度的同时更加的灵活。我们上面...

2020-03-25 20:19:59 383

转载 一个有限状态机的C++实现

先放一个用C++11实现的FSM的代码: kuafu 咱们先来看一下什么是有限状态机(Finite-state machine, FSM), 先给一个 百度百科的解释 简单说就是作一件事可能会经过多个不同状态的转换, 转换依赖于在不同时间发生的不同事件来触发, 举个例子,比如 TCP的状态转换图, 在实现上就可以用FSM. tcp.jpeg 传统的实现方案if......

2020-03-24 21:23:21 1386

原创 MySQL 之 mysqldump

用MySQL mysqldump对MySQL数据库进行数据备份与恢复备份tm这个数据库:Shell>mysqldump -uroot –p123456 tm > tm_050519.sql这时可以利用gzip压缩数据,命令如下:Shell>mysqldump -uroot -p123456 tm | gzip > tm_050519.sql.gz恢复数据...

2020-03-23 17:18:39 474

转载 golang 中 strings 包的 Replace 用法介绍

函数声明为:func Replace(s, old, new string, n int) string1官方描述为:返回将s中前n个不重叠old子串都替换为new的新字符串,如果n<0会替换所有old子串。1示例代码为,每行的结果见每行上面的注释部分:func main() { // non-overlapping: "123" repeat 6 times ...

2020-03-22 14:32:31 10557 1

转载 Golang简单写文件操作的四种方法

package main import ( "bufio" //缓存IO "fmt" "io" "io/ioutil" //io 工具包 "os") func check(e error) { if e != nil { panic(e) }} /** * 判断文件是否存在 存在返回 true 不存在返回...

2020-03-20 14:04:30 682

原创 golang 之 类型转换

string与int的转化string转成int:int, err := strconv.Atoi(string)string转成int64:int64, err := strconv.ParseInt(string, 10, 64)int转成string:string := strconv.Itoa(int)int64转成string:string := strconv.Fo...

2020-03-20 10:20:19 408

原创 golang 之 合并字符串 strings.Join

stringTotal := []string{"FILEVERSION=", aData.FILEVERSION, aData.U1, aData.U2, aData.U3, aData.U4, "NEXTALLOWEDLOGIN=", aData.NEXTALLOWEDLOGIN, "CANCELLED="}stringt = strings.Join(stringTotal, "")...

2020-03-19 20:54:37 2869

转载 go语言-将结构体数据转换为字符串函数

通过go语言自身的gob库将区块链内部数据转换为字节数组package mainimport ( "bytes" "encoding/gob" "fmt" "log")//将结构体数据转换为字节数组func main() { b := map[int]string{ 2: "lili", } //创建一个...

2020-03-19 17:11:38 2014

转载 golang 指针类型* ,以及 &取变量内存地址

1.golang中,指针是一种类型,指向变量所在的内存单元(不是内存地址)。申明: 在变量名前加上星号字符,比如 *age ,指向变量age所在的内存单元2.& :获取变量在计算机内存中的地址, &age,取出变量age所在内存地址,一般地址是十六进制。3: 申明指针*age, 打印指针内存单元的值 **age.如下面 x *int , *x就是指针所对应的值。...

2020-03-18 17:33:46 7116

原创 windows 封装 c++ 代码为dll

DLL是什么?ddl是windows OS下的动态链接库,大多由c/c++编写linux下就是so:.so(shared object)Linux中的.so文件 是动态链接的产物 ,也就对应着Windows下的dll。也大多是c/c++编写的.网上的例子:最近在进行OSG开发,想将里面模型导入部分重复使用的代码封装成DLL,这样后续不需要重复编写这部分...

2020-03-18 14:21:49 739

转载 C++预编译头

解释vs2017以前的 #include “stdafx.h”和新版本的vs2017的 #include "pch.h"下面以vs2017的 #include "pch.h"初步感觉这个文件没有用,但是去掉之后真是报错!预编译头:https://blog.csdn.net/u012135461/article/details/78430236也许请教了别的高手之后,他们...

2020-03-17 15:06:06 271

转载 SDL检查

SDL检查在用 Visual Studio 编译比较早的代码时,经常会遇到错误:错误 C4996 'wcscpy': This function or variable may be unsafe. Consider using wcscpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online...

2020-03-17 14:30:02 6656 1

原创 golang 之 string 常用操作

1.comparea := "gopher"b := "hello world"fmt.Println(strings.Compare(a, b))fmt.Println(strings.Compare(a, a))fmt.Println(strings.Compare(b, a))fmt.Println(strings.EqualFold("GO", "go"))fmt.P...

2020-03-16 17:02:10 864

原创 golang 之 遍历文件夹 并读取文件 按行输出

package mainimport ( "bufio" "fmt" "io" "io/ioutil" "log" "os")//文件目录树形结构节点type dirTreeNode struct { name string child []dirTreeNode}var iCount int = 0//递归遍历文件目录func getDirTree(p...

2020-03-13 12:12:15 1944

原创 golang 之 Println call has possible formatting directive

比如这么写:fmt.Println("Hello, playground %d",i)那么会出现warning:Println call has possible formatting directive %d Go vet exited.fmt.Printlndoesn't do formatting things like%d. Instead, it uses the...

2020-03-13 11:30:02 12002

原创 网络 之 nameserver Windows 和 Linux 设置 DNS服务器

DNS(Domain NameSystem)是域名解析服务器的意思,它在互联网的作用是把域名转换成为网络可以识别的IP地址。ISP的DNS不靠谱,经常做坏事(DNS劫持),所以可以考虑用google的DNS查看方法以及修改方法:google为他们的DNS服务器选择了两个非常简单易记的IP地址:“8.8.8.8”和“8.8.4.4”。echonameserver8.8.8.8...

2020-03-11 18:22:16 2454

转载 linux 之 shell中$0,$?,$!等

linux shell下的特殊用法及参数的说明:变量说明:$$Shell本身的PID(ProcessID)$!Shell最后运行的后台Process的PID$?最后运行的命令的结束代码(返回值)$-使用Set命令设定的Flag一览$*所有参数列表。如"$*"用「"」括起来的情况、以"$1 $2 … $n"的形式输出所有参数。$@所有参数列表。如"$@"用「"」括起来的...

2020-03-11 14:07:15 125

原创 linux 之 echo -e 和 echo -n

echo命令用于在shell中打印shell变量的值,或者直接输出指定的字符串。-e:激活转义字符•\a 发出警告声;•\b 删除前一个字符;•\c 最后不加上换行符号;•\f 换行但光标仍旧停留在原来的位置;•\n 换行且光标移至行首;•\r 光标移至行首,但不换行;•\t 插入tab;•\v 与\f相同;•\\ 插入\字符;•\nnn 插入nnn(八进制)所代表...

2020-03-11 11:23:06 724

原创 TCP 之 SYN_SENT状态

SYN_SENT是TCP连接的发起方第一次发给接受放的时候设置成的状态。可以通过netstat -ano查看其中 在"state" 中可能会有 SYN_SENT如果在"state"中出现大量的"SYN_SENT ",那么你很有可能中了蠕虫病毒.这类病毒为了感染别的计算机,它就要扫描别的计算机,在扫描的过程中对每个要扫描的计算机都要发出了同步请求,这也是出现许多SYN_S...

2020-03-08 18:11:23 51177

原创 windows 之 互斥锁 Mutex

线程间的互斥:eg://共享资源static int num = 0;//互斥锁HANDLE g_Mutex = CreateMutex(NULL, FALSE, NULL); //子线程函数 unsigned int __stdcall ChildThreadFunc(LPVOID pM){ while (true) { Sleep(500); Wa...

2020-03-08 13:53:20 3610

空空如也

空空如也

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

TA关注的人

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