- 博客(37)
- 收藏
- 关注
原创 docker容器接入canbus
如果在容器内部获取宿主机硬件设备环境:ubuntu主机 can卡目的:容器内获取到canbus发送的值并返回镜像环境:FROM ubuntu:18.04# ADD c++编写的获取本机can信号的程序 在次不做赘述 测试之前现在容器外做下测试 看能不能收到can信号方法一 privilegeddocker run 命令加入 --privilegedprivileged 可以让容器获取宿主机root权限 这样做虽然可以实现 接收到can信号 但是容器程序没有控制好 可能对外部环
2022-03-18 16:01:31
1801
原创 Go语言:爬虫并写入excel
点击 爬取页面整体代码package mainimport ( "fmt" "github.com/axgle/mahonia" "github.com/xuri/excelize/v2" "io/ioutil" "net/http" "strconv" "strings")//爬笑话 录入Excelvar path = "detail60/59124.html"func main() { NewExcel() runThis() if err := file.Sav
2021-10-20 15:49:25
371
原创 GO语言:全局的错误捕捉
避免程序不打印错误日志挂掉defer func() { err := recover() //内置函数,可以捕捉到函数异常 if err != nil { //这里是打印错误,还可以进行报警处理,例如微信,邮箱通知 logger.Log.Errorf("err:", err) //panic(err)//退出程序 } }()...
2021-10-17 15:54:47
949
原创 GO语言:线程安全map sync.map
前言前一段项目启动一段后爆了个map崩溃的异常原因是多协程操作了一个map 太过频繁有几率会导致map崩溃一开始的解决方法是加读写锁后来发现效果不是太好于是使用了sync.mapvar m sync.Map //线程安全map //数据存入 m.Store("index1",1000.00) //数据取出 t ,bool := m.Load("index1") if bool{ fmt.Println(t) } //类型转换 tmp,bool := t.(float64)
2021-10-17 15:49:21
311
原创 GO语言:excel导入导出
引用包github.com/xuri/excelize/v2 导出func main() { f := excelize.NewFile() // 创建一个工作表 index := f.NewSheet("Sheet2") // 设置单元格的值 f.SetCellValue("Sheet1", "B2", 100) f.SetCellValue("Sheet2", "A2", "Hello world.") // 设置工作簿的默认工作表 打开默认在哪个sheet f.SetActi
2021-10-17 15:33:16
1926
原创 GO语言:zorm基本使用
测试环境DB:mysql8.0一、连接数据库package mainimport ( "context" "fmt" "gitee.com/chunanyong/zorm" _ "github.com/go-sql-driver/mysql")var db *zorm.DBDaovar ctx context.Contextfunc main() {}func init(){ var err error dbConfig := zorm.DataSourceConfig
2021-10-10 19:13:44
1844
原创 GO语言:zorm介绍
介绍go(golang)轻量级ORM,零依赖,零侵入分布式事务,支持达梦(dm),金仓(kingbase),神通(shentong),南大通用(gbase),mysql,postgresql,oracle,mssql,sqlite,clickhouse数据库.源码地址:https://gitee.com/chunanyong/zorm作者博客:https://www.jiagou.com交流QQ群:727723736 添加进入社区群聊,问题交流,技术探讨 社区微信: LAUV927 go get
2021-10-07 15:41:39
831
原创 GO语言:判断变量是否是指针类型
t := make([]*test, 0) pv1 := reflect.ValueOf(&t) fmt.Println(pv1.Kind()==reflect.Ptr)
2021-10-07 13:15:53
3494
原创 Go语言:判断key是否存在map
//存在if _, ok := map[key]; ok {}//不存在if _, ok := map[key]; !ok {}
2021-06-19 16:00:11
451
原创 GO语言:bleve整合gojieba测试demo
1.引用包import ( "fmt" "github.com/yanyiwu/gojieba" "os" "strconv" "strings" "testing" "time" "github.com/blevesearch/bleve/v2" "github.com/blevesearch/bleve/v2/analysis/analyzer/keyword")2.初始化blevevar indexName string = "userIndex"//创建索引fu
2021-05-03 15:56:44
1137
原创 GO语言:工厂模式(Factory Method)
GO简单工厂由于 Go 中缺少类和继承等 OOP(面向对象) 特性, 所以无法使用 Go 来实现经典的工厂方法模式。 不过, 我们仍然能实现的基础版本.场景一个制作玩具的工厂。代码结构为了方便展示 放到了不同的文件中Toy.go定义个玩具的接口 声明共有的方法package codeInHere//定义玩具产品接口type toy interface { SetName( name string) //需要个名字 GetName() string SetUnitPrice(
2021-04-10 15:28:28
582
原创 Go语言:获取随机数
r := rand.New(rand.NewSource(time.Now().UnixNano))//使用当前时间戳 生成真正的随机数字 r.Intn(2) //取二以下的正数 0,1
2021-04-10 14:22:32
1045
1
原创 GO语言:gin框架实列
Gin框架问题1.初始化/hellor := gin.Default()//初始化路由r.GET("/hello",sayhello)r.Run() //默认8080端口 ":9090" 自定义端口//sayhello方法实现func sayhello(c *gin.Context){ //以下是返回json形式 c.JSON(200,gin.H{ "message":"map数组而已", "message2":"blunt", })}2.匹配模式//
2021-04-07 08:00:48
525
原创 GO语言:玩下适配器(Adapter)
什么是Adapter举例:国内的电源供应是220V 然后我有一个设备是需要110V的这时候就需要一个适配器把220V转为110V 供我使用。优点1.可以让任何两个没有关联的类一起运行2、提高了类的复用3、增加了类的透明度4、有一定灵活性缺点过多地使用适配器,会让系统非常零乱,不易整体进行把握场景创造一个适配器 将电流适配成 220V 或者110V目录结构Ele (适配者)ELe在这里代表的是电流 在适配器里盘演被适配者 (Adaptee)package codeInHer
2021-03-28 17:31:54
438
原创 Go语言:玩玩迭代器
Iterator Pattern(迭代模式)这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。迭代器模式属于行为型模式参考来源与 《图解设计模式》代码结构场景建立一个书架 放入书籍使用书架迭代器遍历书籍代码Iterator建立迭代接口package codeInHere//建立迭代接口type Iterator interface { HasNext() bool // Next() interface{}}aggregate建立一个用于遍历集合
2021-03-20 18:32:39
348
原创 Go语言:万物皆接口
接口在Go语言中接口是一种类型,只要实现了这个接口方法的就属于这个类型在JAVA中定义一个鸭子接口那什么是鸭子?鸭子是会嘎嘎嘎叫的鸭子可以在水里游等等。。。那反过来如果不能嘎嘎嘎叫,不能在水里游就不是鸭子在go语言中没有那么多要求只要你长得鸭子那就你可以实现我这个接口不管这个鸭子会不会叫或者是玩具鸭子只要实现了我这个接口方法就是个鸭子定义一个接口...
2020-03-28 14:21:03
470
原创 Go语言:聊聊结构体
GO结构体go语言中是没有类的但是go语言中可以使用结构体来定义类似与java类的结构并借此来实现面向对象结构体的定义go语言中定义结构体是使用 type 和 structtype person struct { name string age int}person 就是一个结构体 有着name和age两个属性结构体的声明 var p = person{}...
2020-03-28 11:07:48
474
原创 Go语言学习:聊聊Go语言中的defer
Defergo语言中 defer 会将跟随在它后面的语句延迟处理一般用来关闭链接 关闭流单个defer fmt.Println("A") defer fmt.Println("B") fmt.Println("C") //输出 A C B因为defer的关系 ,本来应该输出B的 ,被延迟到了最后多个defer fmt.Println("A") defer fmt...
2020-03-24 09:12:39
392
2
原创 Go语言学习:函数
函数定义go语言中通过关键字 func 来定义函数func 函数名(参数)返回指{函数体}无参无返回值func f1(){ fmt.Println("hello go")}有参无返回值func f2(x int){ fmt.Println("hello go")}多个同类型参数可以省略上一个或者多个func f3( x, y int,z bool){ f...
2020-03-23 15:45:15
157
原创 Go语言学习: new和make
new 和 make 都是用来分配内存的 var a int fmt.Println(a) var b string b = "927" fmt.Println(b) //输出 //0 //927使用基本类型系统会默认分配内存 基本类型在创建的时候就有了默认值 var a *string *a = "927" fmt.Println(a) var m ma...
2020-03-23 11:40:43
159
原创 GO语言学习:指针
指针go语言中的指针还是比较好理解的操作符号是 : & *& 是取地址*指针类型取地址: var str = "hello" p := &str fmt.Println(p) //输出 //0xc0000881e0实现的操作就是 把变量str的内存地址 放入到p变量中指针取值 var str = "hello" p := &...
2020-03-23 11:14:48
191
原创 GO语言学习:MAP
MAP的定义map是一个无序的 key-vlaue 的集合map的定义为: map[key类型]value类型map类型的变量需要使用make()函数来分配内存使用make创建: make(map[key]value,cap(初始容量) )map的长度也是可变的 var n map[string]int n = make(map[string]int ,20) var m ...
2020-03-23 10:36:42
166
原创 GO语言学习:切片
切片(slice)因为数组的长度是不可变的 应用起来不够灵活 所以衍生出来切片切片的长度是可变的切片声明 var s = []int{} 创建一个长度为0的切片 var s = []int{1,2,3} 创建一个 长度为3的切片 var s = make([]int,10) 使用make创建一个长度为10的切片 var s ...
2020-03-21 16:57:36
221
原创 GO语言学习: 数组
定义一个数组 var 数组变量名 [元素数量]元素类型 var a [3]int 定义一个int数组 长度为 3 fmt.Println(a) 输出结果为 [0 0 0] 在声明数组时,如果没有对数组进行赋值 则会为该类型的默认值 int 类型为 0 string类型为 "" 在定义的时候赋值 var a = [3]int{1,2,3} //长度...
2020-03-21 15:38:38
216
原创 GO学习:GO语言的关键字
GO语言的关键字: break default func interface select case defer go map struct chan else goto package switch...
2020-03-21 14:30:34
860
原创 JAVA类加载机制(简单版)
什么是类加载编译器将java文件转为.class文件,class文件保存着虚拟机要执行的指令(业务逻辑代码),当需要某个类的时候,JAVA虚拟机会加载CLASS文件,并创建class对象,将clss文件加载到虚拟机内存。类加载的过程:1.加载 (通过ClassLoader创建class对象 ClassLoader:它是用来加载 Class 的。它负责将 Class 的字节码形式转换成内存...
2020-02-06 12:06:17
180
原创 Spring MVC的执行流程
1.一个请求匹配到前端控制器 DispatcherServlet的请求映射路径(web.xml),WEB容器将该请求转交给DispatcherServlet处理2.Dispatcherservlet接收到请求后,将根据请求信息交给处理器映射器(HandkerMapping)3.HandlerMapping 根据用户的URL请求 查询到对应的Handler,并返回一个执行链4.DIspache...
2020-02-05 12:39:22
238
原创 寻找最长不含有重复字符串的长度
寻找最长不含有重复字符串的长度(Go语言实现)例: “abcabcabc” 最大长度为3 abc,解题思路: 首先我们需要一个start来记录当前最长不包含字串的开始坐标,假设当从左往右遍历到X的位置时, 0,1,2,3,4,5,6,7此时我们要保证从start的坐标到X的坐标包不包含X,也就是 从start 到 X-1的坐标内有没有包含X,所以我们需要一个MAP来在我们遍历的时候...
2019-03-02 16:08:21
442
原创 Python入门 猜数字游戏
Python 入门猜数字游戏首先需要有一个清楚的逻辑思路,设计这个猜数字游戏,也就是我们这些代码需要实现什么需求,功能。 1:随机一个在一定范围的数字,如一到十: 代码如下: import random #导入random函数 setNum = random.randint(1,10) 2:设定规则,可以猜几次数字 代码: for guessB...
2018-11-13 22:18:18
828
原创 TOMCAT Failed to start component 无法启动问题
前几天升级了一个项目 从webSphere 上迁到 tomcat7 jdk从 1.5升到了1.7启动tomcat时遇到了:严重: ContainerBase.addChild: start:org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardH...
2018-11-11 12:23:03
1403
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人