自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一步一步滴往上爬

技术脚踏实地

  • 博客(68)
  • 资源 (2)
  • 收藏
  • 关注

原创 Golang:redis lua lib

golang redis lua封装库,封装了String/Hash结构的检查扣减和Hash结构的批量扣减脚本

2021-12-26 19:20:51 743

原创 Golang: 生成序列全排列

什么是全排列 从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。 (来自百度百科) 排列公式 全排列公式: 含有重复元素全排列数量: 生成全排列的方法 以集合{1,2,3}为例 1.递归(穷举的思路) 获取一组数据的全排列,即为n个元素放在n个位置,有多少种不同的放置方式 只有1个元素,那么只有1中放置方式 我们首先固定n个位置,先思考第一个位置可以放置哪些元素 从集合中取出1个元素放在第一个位置后,将

2021-12-07 00:08:55 1521

原创 Golang: unsafe包的使用

1. golang各类型占空间字节数 package main import ( "fmt" "unsafe" ) var tByte byte var tRune rune var tInt32 int32 var tInt int var tInt64 int64 var tFloat32 float32 var tFloat64 float64 var tComplex64 complex64 var tComplex128 complex128 var tEmptyStruct struct

2021-06-27 20:06:57 769 1

原创 Linux: 配置ssh密钥登陆

11111

2021-06-27 15:28:00 1025

原创 Golang: 获取mp3歌曲文件时长

// 音乐时长 = (文件大小(byte) - 128(ID3信息)) * 8(to bit) / 码率(kbps b:bit) / 1000(to byte)

2021-06-23 00:03:37 3288 1

原创 golang: Google Play退款订单数据查询

Google Play Developer API https://developers.google.com/android-publisher 查询退款数据 链接中开发者文档中Voided Purchases API已经给出了查询退款订单的步骤,本文给出了文档中没有提到的access_token的获取方式,并给出一个简单的demo 查询链接 GET https://www.googleapis.com/androidpublisher/v3/applications/${yourPkgName}/p

2021-04-28 23:21:44 5322 3

原创 golang:goredis库pipeline使用方式

goredis库连接客户端 package client import ( "github.com/go-redis/redis" "github.com/sirupsen/logrus" ) var MainRDS *redis.Client func init() { ConnectRedis() } func ConnectRedis() { MainRDS = redis.NewClient(&redis.Options{Addr: "127.0.0.1:6379", Passwo

2021-04-24 23:46:40 9421

原创 protobuf:protoc生成golang文件

protoc版本:libprotoc 3.15.6 protoc-gen-go版本: proto 文件 syntax = "proto3"; package proto; message ReqHead { int32 command_id = 1; } message ReqBody { string body = 1; } message BaseReq { ReqHead req_head = 1; ReqBody req_body = 2; } message BaseRes

2021-04-24 23:24:03 11061 3

原创 Golang: Gob反序列化到已赋值的结构

结论         对于值类型的非零值,直接向目标结构赋值,否则跳过不处理;         对于引用类型的非空值,对于slice而言,若原数据len(slice)>0,使用原数据覆盖目标数据;对于map而言,若原数据len(map)>0,遍历原数据为目标数据赋值 反序列化到已赋值的map中的坑    &

2020-12-20 00:44:08 490 1

原创 golang 避免程序出现死循环

package main import ( "fmt" "time" ) func main() { // 业务逻辑 // 假设当前的业务需要循环对array进行赋值 var array []int startParam := 0 doneChan := make(chan struct{}, 1) // channel通知任务完成 NoCircleRange(doneChan, time.Second*5, func() { // 安全的循环 /*****业务逻辑 (循环体)**

2020-12-01 12:13:39 1145

原创 Golang Gin框架使用JWT实现简单身份验证

小白文小白文小白文

2020-05-13 10:55:00 2264 1

原创 Golang Gin框架实现文件下载功能

layui 上传文件 Gin框架获取前端上传的文件 PS:小白文,只是提供了一个亲测有效的处理方式,如有错误或更好的方法,欢迎指正

2020-05-10 23:05:28 21580 3

原创 Go语言中的数组、切片和字符串

Go语言数组的定义方式: var 数组名称 [数组长度]数组类型 数组名称 := [数组长度]数组类型{赋值} 切片即可变长度的数组,与数组不同的是不需要指定数组长度: var 数组名称 []数组类型 数组名称:=[]数组类型{赋值} --------------------------------------------------------------------------------...

2019-05-12 15:43:27 1430

原创 Go语言实现控制台输入的方式

使用bufio和os包实现:类似Java控制台输入 bufio建立缓冲区,os.Stdin确定输入位置 func getInput() string { //使用os.Stdin开启输入流 //函数原型 func NewReader(rd io.Reader) *Reader //NewReader创建一个具有默认大小缓冲、从r读取的*Reader 结构见官方文档 in := bufio....

2019-05-11 11:48:44 9299 1

原创 windows下vscode开发Go程序GoPath相关

vscode配置Go语言开发环境网上的教程有很多,不再叙述,推荐 https://www.cnblogs.com/zsy/p/5223957.html vscode搭建Go开发环境中的步骤中 配置vscode的setting.json文件时,需要设置: 此处配置的GoPath起作用的范围为插件的作用范围,所使用的插件必须在GoPath下的bin目录中,否则vscode会找不到插件,由此引发的...

2019-05-10 10:06:48 8905 2

原创 Go项目中的包名和文件名

首先明确两个环境变量:GOROOT和GOPATH GOROOT是Go语言环境的安装路径,在安装开发环境时已经确定 GOPATH是当前项目工程的开发路径,GOPATH可以有多个,每个GOPATH下的一般有三个包,pkg、src和bin,src用于存放项目工程的源代码文件,pkg文件夹下的文件在编译时自动生成,bin目录下生成*.exe的可执行文件。 PS:每一个GOPATH下都可以有pkg、src、...

2019-05-06 11:38:47 4165

原创 Spring踩坑日记(一):Spring Ioc容器

1.为什么使用ApplicationContext的对象无法调用registerShutdownHook()方法? registerShutdownHook()方法用于在非Web容器中销毁对象,而它是AbstractApplicationContext中的一个钩子方法,只能通过AbstractApplicationFactory类对象调用。ApplicationContext是一个接口,Abstr...

2019-03-23 22:46:14 344

原创 运输层协议:TCP和UDP协议的特点

内容来自计算机网络(第六版) 谢希仁编著 电子工业出版社 TCP协议(Transmission Control Protocol):传输控制协议。 UDP协议(User Datagram Protocol):用户数据报协议。 按照OSI的术语,两个对等运输实体在通信时传送的数据单位叫做运输协议数据单元TPDU(Transport Protocol Data Unit)。但在TCP/IP体系中,则...

2019-03-22 13:30:37 6340

原创 MyBatis学习(六):注解

使用注解的方式相对于使用XML的方式开发方便了许多,其基本原理并无多大变化。 使用XML的开发方式中,我们需要实体类和相对应的XML的映射文件; 使用注解的开发方式中,我们只是把XML映射文件修改成了JAVA接口类,通过创建一个接口,在接口里面定义一系列的操作方法,并在方法之前加上注解。除此之外,和XML配置方式有以下几个不同: 在mybatis-config.xml总配置文件中:映射方式不同,前...

2019-03-18 22:30:05 354

原创 MyBatis学习(五):动态SQL

关于动态SQL使用时的传参方式,一般情况下不写参数,即省略parameterType项, if标签 用于无条件查询或者单条件查询 where标签 用于无条件查询或者单条件查询 ...

2019-03-15 23:22:05 339 1

原创 MyBatis学习(四):一对多、多对一、多对多

在JAVA实体类中,类与类的一对多、多对一、多对多关系通过组合的形式实现; 在数据库中,表之间的一对多、多对一、多对多的关系通过外键来实现; 其中多对多的关系都需要通过一个中间类/表来实现,比如产品和订单之间,一个订单中可以有多个产品,一个产品也可以存在与多个订单之中,这种情况就称为多对多的关系,要建立两者之间的连接,需要建立一个中间类/表(订单项),一个订单项实例包含自身属性和产品属性、订单属性...

2019-03-12 21:50:49 1242

原创 堆排序的实现

/********************* * 堆排序 * 堆排序本质是将数组视为完全二叉树进行操作 * 如果是进行升序排序,那么需要将堆初始化为大根堆(所有的节点的值均大于左右孩子节点的值) * 反之,初始化为小根堆 * 堆排序主要分为两个过程:将数组初始化为大根堆和排序的过程,时间复杂度主要在大根堆的调整上 * 如果数组开始下标为0,那么左右孩子的下标分别为2*i...

2019-03-11 20:15:39 235

原创 MyBatis学习(三):多条件查询

/*---------------------------模糊查询需要注意接收结果方式----------------------*/ //当有多个结果时 如果使用selectOne查询 使用单个变量接收 会报TooManyResultException /*Category cs=session.selectOne("selectByName","手动设置"); System.out...

2019-03-10 20:30:04 781

原创 leetcode:单链表的排序

//链表结构 class ListNode { int val; ListNode next; ListNode(int x) { val = x; next = null; } //插入排序 //链表的插入排序 public ListNode insertionSortList(ListNode head) { //非空判...

2019-03-10 20:01:31 871

原创 leetcode:统计在同一条直线上的点的数量

Given n points on a 2D plane, find the maximum number of points that lie on the same straight line. /** * Definition for a point. * class Point { * int x; * int y; * Point() { x = 0; ...

2019-03-10 15:40:25 800

原创 Mybatis学习(二):增删查改

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace=&q

2019-03-08 22:55:49 157

原创 MyBatis 编写XML文件没有提示(eclipse)

一个查了很多资料没有解决的问题。。。 在有网络的环境下,按住ctrl点击开头处的网址,IDE即会自动后台下载(如下)。 <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> 在没有网络的环境下,可以手动...

2019-03-08 12:40:52 655

原创 MyBatis学习(一)

MyBatis可以简化JDBC操作,实现数据的持久化 ORM:Object Relation Mapping.实体关系映射,是程序实体类对象和数据库表之间的映射。 ORM是一个概念,MyBaties是ORM的一个映射,相似的还有Hibernate、JPA ORM可以使得开发人员像操作对象一样操作数据库表。 ...

2019-03-08 12:22:35 224

转载 堆棋子

小易将n个棋子摆放在一张无限大的棋盘上。第i个棋子放在第x[i]行y[i]列。同一个格子允许放置多个棋子。每一次操作小易可以把一个棋子拿起并将其移动到原格子的上、下、左、右的任意一个格子中。小易想知道要让棋盘上出现有一个格子中至少有i(1 ≤ i ≤ n)个棋子所需要的最少操作次数. input: 输入包括三行,第一行一个整数n(1 ≤ n ≤ 50),表示棋子的个数 第二行为n个棋子的横坐标x[...

2019-03-07 20:02:53 323

原创 MySQL索引学习

正确的创建合适的索引是提升数据库查询性能的基础 索引是什么 索引是为了加速对表中数据行的检索而创建的一种分散存储的 数据结构 。 数据结构包括索引列和地址列 ,索引列为建立表中建立索引的列, MySQL索引数据结构探秘 首先,了解几种数据结构 二叉查找树: 平衡二叉树: 多路平衡查找树: 平衡二叉查找树: 为什么不使用平衡二叉查找树 搜索效率不足:一般来说,在树结构中数据所处的深度决定着它的搜...

2019-03-03 20:24:54 348

原创 数据结构:图的常用操作(邻接表表示)

邻接矩阵常用操作 https://blog.csdn.net/weixin_43823363/article/details/88075805 首先来看一下用邻接表表示的图结构(图片资源来自大话数据结构) 邻接表表示由表头和叶子节点两部分组成,实现其数据结构如下: //邻接表 用于处理拓扑排序 class AdjTable { AdjTableHead[] table;//邻接表表头 i...

2019-03-03 15:42:28 1420

原创 数据结构:图的常用操作(邻接矩阵表示)

啥都不说了 都在代码里

2019-03-02 17:46:32 1182

原创 全排列算法学习

写个标题 force me complete it tomorrow.

2019-03-01 23:09:22 531

原创 剑指offer:数组中只出现一次的数字

一个整型数组里除了两个数字之外,其他的数字都出现了偶数次。请写程序找出这两个只出现一次的数字。 常规思路 我们定义一个链表,然后循环遍历数组,发现链表中有当前遍历的值,就移除;没有就添加,在保证有两个不同数字的情况下,最后链表中肯定会剩下两个数字,就是结果了。实现很简单。 public void FindNumsAppearOnce(int [] array,int num1[] , in...

2019-03-01 11:10:35 188

转载 剑指offer:数组中的逆序对

           在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。     &

2019-02-28 20:19:17 383

转载 求解二叉树的高度(递归、非递归)

递归方式 非递归方式

2019-02-28 13:33:59 5522

原创 KMP算法学习

判断一个字符串是否是另一个字符串的子字符串 暴力法 KMP算法

2019-02-27 17:56:28 428 2

原创 二叉树的遍历(先序、中序、后序、层次)

假设二叉树的节点定义如下: class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; } } 递归方式遍历二叉树 先序遍历 /*****************...

2019-02-26 21:16:15 678

原创 使用JAVA GUI实现细胞生命游戏

https://download.csdn.net/download/weixin_43823363/10964618 问题描述:生命游戏是英国数学家约翰·何顿·康威在年发明的细胞自动机,它包括一个二维矩形世界,这个世界中的每个方格居住着一个活着的或死亡的细胞。一个细胞在下一个时刻生死取决于相邻八个方格中活着的或死了的细胞的数量。如果相邻方格活着的细胞数量过多,这个细胞会因为资源匮乏而在下一个...

2019-02-25 22:06:52 1020

原创 进程、线程和程序

从概念上理解进程、线程和程序 进程:一个具有独立功能的程序在某个数据集合上的执行过程。进程具有动态性、并发性、独立性、制约性等特点。 线程:有时被称为轻量进程(Lightweight Process,LWP),是程序执行流的最小单元。一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成。 程序:计算机程序是一组计算机能识别和执行的指令,运行于电子计算机上,满足人们某种需求的信息化工...

2019-02-25 21:54:39 1204

使用JAVA GUI实现细胞生命游戏

使用JAVA GUI实现细胞生命游戏,并做出一些改进,可以设置地图的大小,细胞繁殖速度,并可以手动初始化细胞位置等等...

2019-02-19

WIN32连连看小游戏

资源包括连连看项目源代码、项目实验报告和项目开发过程中使用到的资料;游戏实现了普通和休闲两种模式、添加了元素图片设置、背景设置和音效设置、添加了排行榜的功能,细节处理比较完善

2019-02-22

空空如也

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

TA关注的人

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