自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(197)
  • 资源 (2)
  • 收藏
  • 关注

转载 string和[]byte转换时都是先复制

借鉴https://talkgo.org/discuss/2018-05-22-go-string-to-byte-slice/代码import "fmt"func TestString() { s:="123" ps:=&s b:=[]byte(s) pb:=&b s+="4" *ps+="5" (*pb)[1] = 0 (*pb)[2] = 4...

2020-04-11 16:43:54 346

原创 golang元转分、分转元

参考https://godoc.org/github.com/shopspring/decimal#example-NewFromFloat代码package digitalConverimport ( "fmt" "github.com/shopspring/decimal")//一分钱转一块钱,//分转元func Fen2Yuan(price uint64) strin...

2020-04-11 15:15:13 3279

原创 使用json.RawMessage处理api返回时部分字段类型不定的情况

背景当遇到请求的api返回数据结构中,部分字段的类型不能确定时,可以在定义结构体该字段时,指定其类型为json.RawMessage,这样当从api取返回数据时,json.Unmarshal后,该字段仍然是[]byte类型,而我们可以对这一个字段再做针对性的处理。/*{“type”:“File”,“data”:{“filename”:“this is a file”}}{“t...

2020-04-11 14:02:58 2470 1

原创 simpleJson处理api返回数据结构不确定的情况

SimpleJson包的简单使用代码展示借鉴代码展示下面展示一些 内联代码片。// A code blockpackage jsonPracimport ( "fmt" simplejson "github.com/bitly/go-simplejson")func Unmarshal(s string) { res, err := simplejson.NewJson...

2020-04-09 20:51:53 415

原创 01背包问题-回溯法

背景0-1背包是非常经典的算法问题,很多场景都可以抽象成这个问题模型。这个问题的经典解法是动态规划。不过还有一种简单但没有那么高效的解法,这里用的回溯算法。0-1背包问题有很多变体,我这里介绍一种比较基础的。我们有一个背包,背包总的承载重量是Wkg。现在我们有n个物品,每个物品的重量不等,并且不可分割。 我们现在期望选择几件物品,装载到背包中。在不超过背包所能装载重量的前提下,如何让背包中...

2019-07-11 19:55:48 3775

原创 八皇后问题

背景在我们的一生中,会遇到很多重要的岔路口。在岔路口上,每个选择都会影响我们今后的人生。有的人在每个岔路口都能做出最正确的选择,最后生活、事业都达到了一个很高的高度;而有的人一路选错,最后碌碌无为。如果人生可以量化,那如何才能在岔路口做出最正确的选择,让自己的人生“最优”呢?我们可以借助前面学过的贪心算法,在每次面对岔路口的时候,都做出看起来最优的选择,期望这一组选择可以使得我们的人生...

2019-07-11 16:41:08 1326

原创 字符串匹配

主串和模式串在字符串A中查找字符串B,那字符串A就是主串,字符串B就是模式串。我们把主串的长度记作n,模式串的长度记作m。因为我们是在主串中查找模式串,所以n>m。几种单模式串匹配算法BF(暴力)算法RK算法BM算法KMP算法1. BF(Brute Force)算法时间复杂度O(n*m),其中n是主串长度,m是模式串长度。缺陷:忽略了已检测过的文本信息。2. ...

2019-06-27 19:44:14 6050

原创 二分查找

一、什么是二分查找?二分查找针对的是一个有序的数据集合,每次通过跟区间中间的元素对比,将待查找的区间缩小为之前的一半,直到找到要查找的元素,或者区间缩小为0 。二、过程分析时间复杂度假设数据大小是n,每次查找后数据都会缩小为原来的一半,最坏的情况下,直到查找区间被缩小为空,才停止。所以,每次查找的数据大小变化是:当n/(2的k次幂)=1时,k的值就是总共缩小的次数,也是查找的总次...

2019-05-07 15:26:35 1143

原创 golang测试

Go 程序编写三类测试,即:功能测试(test)、基准测试(benchmark,也称性能测试),以及示例测试(example)。测试源码文件的主名称应该以被测源码文件的主名称为前导,并且必须以“_test”为后缀。对于功能测试函数来说,其名称必须以Test为前缀,并且参数列表中只应有一个*testing.T类型的参数声明。对于性能测试函数来说,其名称必须以Benchmark为前缀,并且唯...

2019-04-04 15:24:53 503

转载 Golang的Panic和Recover

原文来自:https://golangbot.com/panic-and-recover/什么是 panic?在 Go 语言中,程序中一般是使用错误来处理异常情况。对于程序中出现的大部分异常情况,错误就已经够用了。但在有些情况,当程序发生异常时,无法继续运行。在这种情况下,我们会使用 pani...

2019-03-26 11:49:17 2716 1

原创 container包

container/list链表一个很大的优点:插入快,删除快。而数组的有优点就是遍历快,索引快。故链表适合于那些频繁插入删除操作的场景。数组适合于那些多次查询的场景。golang语言的链表实现在标准库container/list中。使用案例:作为构造队列、栈的基础数据结构。list包含两个公开的程序实体,List和Element;是一个带哨兵头节点的双向链表list在内部就是一个双...

2019-03-21 16:53:31 565

原创 map-字典的底层、约束和操作

Go 语言的字典类型其实是一个哈希表(hash table)的特定实现,它能存储的不是单一值的集合,而是键-元素对的集合。在这个实现中,键和元素的最大不同在于,前者的类型是受限的,而后者却可以是任意类型的。带着问题map的底层结构是什么样的?map的键值映射过程?键不能是哪些类型?为什么?map是什么情况下扩容?for range map为什么是无序的?map基础数据结构ma...

2019-03-19 01:42:39 514

转载 golang底层数据类型实现原理

虽然golang是用C实现的,并且被称为下一代的C语言,但是golang跟C的差别还是很大的。它定义了一套很丰富的数据类型及数据结构,这些类型和结构或者是直接映射为C的数据类型,或者是用C struct来实现。了解golang的数据类型和数据结构的底层实现,将有助于我们更好的理解golang并写出质量更好的代码。基础类型源码在:$GOROOT/src/pkg/runtime/runtime.h...

2019-03-17 23:04:04 2358

原创 unsafe.sizeof()

描述// Sizeof takes an expression x of any type and returns the size in bytes// of a hypothetical variable v as if v was declared via var v = x.// The size does not include any memory possibly refere...

2019-03-17 22:24:26 4122

原创 flag包

命令源码文件如何接收参数?Go 语言标准库中有一个代码包专门用于接收和解析命令参数,即flag包。使用案例根据运行程序时给定的参数问候某人package mainimport ( "flag" "fmt")var name stringfunc init() { flag.StringVar(&name, "name",

2019-03-17 18:34:44 1221

原创 select块

select块是为channel特殊设计的语法,它和switch语法非常相近。分支上它们都可以有多个case块和做多一个default块,但是也有很多不同.特性包含默认分支和候选分支候选分支中的case表达式都会在该语句执行开始时先被求值,并且求值的顺序是依从代码编写的顺序从上到下的select 到 括号{之间不得有任何表达式fallthrough关键字不能用在select里面所有的...

2019-03-17 15:44:23 204

原创 golang概述

概述一种静态强类型、编译型、并发型,并具有垃圾回收功能的编程语言常识每个go源代码文件的开头都是一个package声明,表示该go代码所属的包;包是go语言中最基本的分发单位,也是工程管理中依赖关系的体现。要生成go可执行程序,必须建立一个名为main的package,并且在该package中包含一个叫main()的函数;Go语言的main()函数不能带参数,也不能定义返回值,传入...

2019-03-17 14:52:08 393

原创 通道(channel)

描述主要用于多个goroutine间传递数据.一个通道相当于一个先进先出(FIFO)的队列.channel用来在协程[goroutine]之前传递数据,准确的说,是用来传递数据的所有权。一个设计良好的程序应该确保同一时刻channel里面的数据只会被同一个协程拥有,这样就可以避免并发带来的数据不安全问题[data races]。官方的go编译器限制channel最多能容纳到65535个元...

2019-03-17 14:32:02 3893 1

原创 切片(slice)

slice 数据结构type slice struct { array unsafe.Pointer //指向底层数组的指针 len int //切片中元素个数 cap int //切片总容量}golang 源码基于数组或者slice生成一个slice的时候,新的slice和原来数组/slice 的底层数组是同一个基于数组或者slice生成sl...

2019-03-17 12:53:04 675

转载 sync.Map

原文地址:The new kid in town — Go’s sync.Map对Go1.9中新加入的类型sync.Map的学习和探索性分析。Go1.9出来后,我就迫不及待的开始尝试接触sync包中新加入的sync.Map容器了。首先,为什么要将它加入到标准库中?它又应该在哪里使用?不幸的是,答案是:除非...

2019-03-17 11:06:04 3949

转载 【转载】csdn文章如何转载?

转载地址:https://blog.csdn.net/Michael753951/article/details/70307704个人blog地址:http://yaoyl.cn/csdn_ru_he_zhuan_zai/本来我一直不会在csdn中转载他人的文章的,知道有一次在网上看到一篇教程(来源已经忘记,但是原理很简答)。利用Markdown可以解析html的特点,我们只要在开发者模...

2018-09-25 15:52:21 308

转载 编译型语言、解释型语言、静态类型语言、动态类型语言概念与区别

编译型语言和解释型语言1、编译型语言需通过编译器(compiler)将源代码编译成机器码,之后才能执行的语言。一般需经过编译(compile)、链接(linker)这两个步骤。编译是把源代码编译成机器码,链接是把各个模块的机器码和依赖库串连起来生成可执行文件。优点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。可以

2017-04-25 11:18:39 503

原创 python爬取静态和动态网页

python爬取静态网页1,网上关于静态网页的爬取例子有很多。自己写的一个python爬百度视频搜索网页的代码:#!/usr/bin/python#coding=utf-8import sysimport urllibimport urllib2from bs4 import BeautifulSoupreload(sys)sys.setdefaultencoding('utf-8')u

2017-01-19 17:49:53 8151

原创 python 调用优酷关键词搜索视频api

1,第一步注册账号,申请appKey就不说了,根据优酷开放平台的新手指南. 2,在优酷开放平台找到通过关键词搜索视频,查看调用该api需要的系统参数和业务参数。 其它参数都还好,我在调用时碰到的难搞参数有: a,timestamp,表示时间戳。 python中用time.time()来返回当前时间的时间戳,单位是秒,返回类型是浮点数。 根据调用示例: https://openapi.y

2017-01-19 16:08:05 2341 2

原创 linux初学使用技巧

linux初学目录基本操作文件目录使用经验积累基本操作 {###1}1 2 3 4 5 6我是谁

2017-01-05 11:06:04 509

转载 Python 之ConfigParser

一、ConfigParser简介ConfigParser 是用来读取配置文件的包。配置文件的格式如下:中括号“[ ]”内包含的为section。section 下面为类似于key-value 的配置内容。1: [db]2: db_host = 127.0.0.13: db_port = 224: db_user = root5: 

2017-01-04 21:57:05 585

转载 每天一个python模块之Requests

因为Python有用的模块太多了。那么,就从这个最长用到的Requests模块开始吧!Requests模块是一个用于网络访问的模块,其实类似的模块有很多,比如urllib,urllib2,httplib,httplib2,他们基本都提供相似的功能,那为什么Requests模块就能够脱引而出呢?可以打开它的[官网][1]看一下,是一个“人类“用的http模块。那么,它究竟怎样的人性化呢?相信如果你之

2017-01-04 21:54:53 889 1

原创 markdwon 的表格内容含有字符“|”时

比如有如下表格: name age sex interests zcm 25 male 篮球,游戏,聚餐如果我想把篮球,游戏,聚餐改成篮球|游戏|聚餐时怎么办呢? 如果直接写字符“|”,会把“|”当初表格。 解决办法: 把要写入的内容中的字符”|”替换成|,注意分号也要加。具体代码是:str.replace('|',"|")

2017-01-04 21:35:55 681

转载 python中打开含中文的文件路径出错的情况

在python中读写带中文的路径文件时,报错的解决方法:#-*- coding: utf-8 -*-a = 'D:\\中文.txt'f = open(a.decode('utf8'))windows默认是gbk的编码 所以 文件名的编译都是gbk的。 所以你无法正常获取utf-8的文件名 需要转码,先解码再编码 在你往windows中 创建文件时,也是这样,你写中文文件名会在windows中

2017-01-04 21:20:24 8381

原创 linux下输出文件夹下所有文件夹名称并重定向

linux下仅输出文件夹名称并重定向输出仅显示文件夹 比如列出文件夹/root/bin/下的所有文件夹 命令1 ls -l /root/bin/ | grep ^d仅显示文件夹名称 比如列出文件夹/root/bin/下的所有文件夹名称 命令2 ls -l /root/bin/ | grep ^d | awk ‘{print $9}’重定向输出 比如列出文件夹/root/bin/下

2017-01-04 20:59:35 6400

转载 Windows上使用gitbook制作电子书

转载地址:http://blog.csdn.net/lance__xu/article/details/382792650. 前言第一次在windows上使用gitbook制作电子书,在网上搜了好多资料,自己亲手试了下并整理如下。1. 准备工具Step1: 下载node: http://www.nodejs.org/download/, 点击

2016-12-20 10:15:35 2668

转载 c++11后stl容器

C++11 STL中的容器==================================================一、顺序容器:vector:可变大小数组;deque:双端队列;list:双向链表;forward_list:单向链表;array:固定大小数组;string:与vector相似的容器,但专门用于保存字符。==========

2016-10-06 21:15:03 592

转载 C++中的转义序列

转载地址:http://yongchunxiaofen.top/2016/05/31/Escape-character/C++中的转义序列两类字符不能直接使用:一类是不可打印字符,例如退格等。因为没有可视的图符。另一类是有特殊含义的字符(单引号,双引号,问号,反斜线)等。这些情况下会用到转义序列,转移序列均以反斜线\开始。C++规定了如下的转义字符:

2016-10-06 20:47:16 2204

转载 浅谈C/C++的浮点数在内存中的存储方式

转载地址:http://www.cnblogs.com/dolphin0520/archive/2011/10/02/2198280.html C/C++浮点数在内存中的存储方式       任何数据在内存中都是以二进制的形式存储的,例如一个short型数据1156,其二进制表示形式为00000100 10000100。则在Intel CPU架构的系统中,存放方式为  10000100

2016-10-06 20:02:21 339

转载 线程中 CloseHandle()函数的使用

CloseHandle()函数的使用??很多程序在创建线程都这样写的:............ThreadHandle = CreateThread(NULL,0,.....);CloseHandel(ThreadHandle );。。。。。这不是刚好创建又关闭了吗?线程怎么运行呢?========================================

2016-10-04 19:26:42 472

转载 c++实现多线程简单例子

C++本身并没有提供任何多线程机制,但是在windows下,我们可以调用SDK win32 api来编写多线程的程序,下面就此简单的讲一下: 创建线程的函数HANDLE CreateThread(     LPSECURITY_ATTRIBUTES lpThreadAttributes, // SD    SIZE_T dwStackSize,

2016-10-03 20:22:17 4954

转载 DLL动态链接库的工作原理

转载地址:http://blog.csdn.net/woshinia/article/details/7919281#comments"动态链接"这几字指明了DLLs是如何工作的。对于常规的函数库,链接器从中拷贝它需要的所有库函数,并把确切的函数地址传送给调用这些函数的程序。而对于DLLs,函数储存在一个独立的动态链接库文件中。在创建Windows程序时,链接过程并不把DLLs文件链接到程

2016-10-03 20:19:28 5077

转载 Socket原理与编程基础

转载地址:http://acm.tzc.edu.cn/acmhome/projectList.do?method=projectNewsDetail&nid=2一、Socket简介Socket是进程通讯的一种方式,即调用这个网络库的一些API函数实现分布在不同主机的相关进程之间的数据交换。几个定义:(1)IP地址:即依照TCP/IP协议分配给本地主机的网络地址,

2016-10-03 20:16:26 672

转载 网络编程学习笔记一:Socket编程

转载地址:http://blog.csdn.net/gneveek/article/details/8699198“一切皆Socket!”话虽些许夸张,但是事实也是,现在的网络编程几乎都是用的socket。——有感于实际编程和开源项目研究。我们深谙信息交流的价值,那网络中进程之间如何通信,如我们每天打开浏览器浏览网页时,浏览器的进程怎么与web服务器通信的?

2016-10-03 20:14:50 693

转载 哈弗曼树

转载地址:http://blog.csdn.net/shuangde800/article/details/7341289一、哈夫曼树的概念和定义 什么是哈夫曼树?让我们先举一个例子。判定树:        在很多问题的处理过程中,需要进行大量的条件判断,这些判断结构的设计直接影响着程序的执行效率。例如,编制一个程序,将百分制转换成五个等级输出。大家可能

2016-09-28 22:10:42 1176

Kruskal实现最小生成树代码

Kruskal实现最小生成树,其中用并查集判别一条边是否是在同一连通分量中!

2015-10-29

xml关键字查询求SLCA代码

是对论文Efficient Keyword Search for Smallest LCAs in XML Databases的部分实现!

2015-10-29

空空如也

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

TA关注的人

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