Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
rym-util
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
zhengqiuyun
rym-util
Commits
9482dd4e
Commit
9482dd4e
authored
Oct 25, 2022
by
zhengqiuyun86
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
数组差集算法
parent
1dfe2ff0
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
243 additions
and
25 deletions
+243
-25
go.mod
go.mod
+1
-0
go.sum
go.sum
+2
-0
main.go
main.go
+51
-21
AddrUtil.go
util/AddrUtil.go
+3
-0
ArrayUtil.go
util/ArrayUtil.go
+99
-1
ArrayUtil_test.go
util/ArrayUtil_test.go
+21
-3
HttpUtil.go
util/HttpUtil.go
+62
-0
StringUtil.go
util/StringUtil.go
+4
-0
No files found.
go.mod
View file @
9482dd4e
...
@@ -17,4 +17,5 @@ require (
...
@@ -17,4 +17,5 @@ require (
github.com/onsi/gomega v1.20.0 // indirect
github.com/onsi/gomega v1.20.0 // indirect
github.com/swaggo/files v0.0.0-20220728132757-551d4a08d97a
github.com/swaggo/files v0.0.0-20220728132757-551d4a08d97a
github.com/swaggo/gin-swagger v1.5.2
github.com/swaggo/gin-swagger v1.5.2
gopkg.in/fatih/set.v0 v0.2.1
)
)
go.sum
View file @
9482dd4e
...
@@ -317,6 +317,8 @@ gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8
...
@@ -317,6 +317,8 @@ gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
gopkg.in/fatih/set.v0 v0.2.1 h1:Xvyyp7LXu34P0ROhCyfXkmQCAoOUKb1E2JS9I7SE5CY=
gopkg.in/fatih/set.v0 v0.2.1/go.mod h1:5eLWEndGL4zGGemXWrKuts+wTJR0y+w+auqUJZbmyBg=
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
...
...
main.go
View file @
9482dd4e
//package main
//
//import (
// "git.168cad.top/zhengqiuyun/rym-util/conf"
// "git.168cad.top/zhengqiuyun/rym-util/es"
// "git.168cad.top/zhengqiuyun/rym-util/log"
// "git.168cad.top/zhengqiuyun/rym-util/mysqlrym"
// "git.168cad.top/zhengqiuyun/rym-util/redis"
// "git.168cad.top/zhengqiuyun/rym-util/router"
//)
//
//func main() {
// log.Debug("测试")
// log.Info("测试")
// log.Warn("测试")
// log.Error("测试")
// conf.BaseConfig(conf.Config{
// ServerName: "rym-framework",
// Env: "dev",
// HttpPort: 1024,
// LogColorful: true,
// })
// mysqlrym.TestLog()
// es.TestLog()
// redis.TestLog()
// c := router.InitGinEngine(true)
// router.Run(c)
//}
package
main
package
main
import
(
import
(
"git.168cad.top/zhengqiuyun/rym-util/conf"
"fmt"
"git.168cad.top/zhengqiuyun/rym-util/es"
"gopkg.in/fatih/set.v0"
"git.168cad.top/zhengqiuyun/rym-util/log"
"git.168cad.top/zhengqiuyun/rym-util/mysqlrym"
"git.168cad.top/zhengqiuyun/rym-util/redis"
"git.168cad.top/zhengqiuyun/rym-util/router"
)
)
/*set并集 交集 差集计算示例*/
func
main
()
{
func
main
()
{
log
.
Debug
(
"测试"
)
a
:=
set
.
New
(
set
.
ThreadSafe
)
log
.
Info
(
"测试"
)
a
.
Add
(
1
)
log
.
Warn
(
"测试"
)
a
.
Add
(
2
)
log
.
Error
(
"测试"
)
a
.
Add
(
3
)
conf
.
BaseConfig
(
conf
.
Config
{
b
:=
set
.
New
(
set
.
ThreadSafe
)
ServerName
:
"rym-framework"
,
b
.
Add
(
2
)
Env
:
"dev"
,
b
.
Add
(
3
)
HttpPort
:
1024
,
b
.
Add
(
4
)
LogColorful
:
true
,
//并集
})
unionSet
:=
set
.
Union
(
a
,
b
)
mysqlrym
.
TestLog
()
fmt
.
Printf
(
"并集:%v
\n
"
,
unionSet
)
es
.
TestLog
()
//交集
redis
.
TestLog
()
intersectionSet
:=
set
.
Intersection
(
a
,
b
)
c
:=
router
.
InitGinEngine
(
true
)
fmt
.
Printf
(
"交集:%v
\n
"
,
intersectionSet
)
router
.
Run
(
c
)
//差集
diffS1S2
:=
set
.
Difference
(
a
,
b
)
fmt
.
Printf
(
"差集(属a不属b):%v
\n
"
,
diffS1S2
)
diffS2S1
:=
set
.
Difference
(
b
,
a
)
fmt
.
Printf
(
"差集(属b不属a):%v
\n
"
,
diffS2S1
)
}
}
util/AddrUtil.go
View file @
9482dd4e
...
@@ -29,6 +29,9 @@ func Int16s(p int16) *int16 {
...
@@ -29,6 +29,9 @@ func Int16s(p int16) *int16 {
func
Int8s
(
p
int8
)
*
int8
{
func
Int8s
(
p
int8
)
*
int8
{
return
&
p
return
&
p
}
}
func
Ints
(
p
int
)
*
int
{
return
&
p
}
func
Float64s
(
p
float64
)
*
float64
{
func
Float64s
(
p
float64
)
*
float64
{
return
&
p
return
&
p
}
}
...
...
util/ArrayUtil.go
View file @
9482dd4e
package
util
package
util
import
"time"
import
(
"time"
)
func
ArrayContains
(
array
[]
string
,
e
string
)
bool
{
func
ArrayContains
(
array
[]
string
,
e
string
)
bool
{
for
_
,
v
:=
range
array
{
for
_
,
v
:=
range
array
{
...
@@ -74,6 +76,14 @@ func ArrayContainsInt8(array []int8, e int8) bool {
...
@@ -74,6 +76,14 @@ func ArrayContainsInt8(array []int8, e int8) bool {
}
}
return
false
return
false
}
}
func
ArrayContainsInt
(
array
[]
int
,
e
int
)
bool
{
for
_
,
v
:=
range
array
{
if
v
==
e
{
return
true
}
}
return
false
}
func
ArrayContainsFloat64
(
array
[]
float64
,
e
float64
)
bool
{
func
ArrayContainsFloat64
(
array
[]
float64
,
e
float64
)
bool
{
for
_
,
v
:=
range
array
{
for
_
,
v
:=
range
array
{
if
v
==
e
{
if
v
==
e
{
...
@@ -106,3 +116,91 @@ func ArrayContainsTime(array []time.Time, e time.Time) bool {
...
@@ -106,3 +116,91 @@ func ArrayContainsTime(array []time.Time, e time.Time) bool {
}
}
return
false
return
false
}
}
func
DifferenceSetInt64
(
a1
,
a2
[]
int64
)
(
d1
,
d2
[]
int64
)
{
var
vMap
=
map
[
int64
]
*
int
{}
for
_
,
v1
:=
range
a1
{
vMap
[
v1
]
=
Ints
(
1
)
}
for
_
,
v2
:=
range
a2
{
if
vMap
[
v2
]
==
nil
{
vMap
[
v2
]
=
Ints
(
2
)
}
else
{
vMap
[
v2
]
=
Ints
(
0
)
}
}
for
k
,
v
:=
range
vMap
{
if
*
v
==
1
{
d1
=
append
(
d1
,
k
)
}
else
if
*
v
==
2
{
d2
=
append
(
d2
,
k
)
}
}
return
d1
,
d2
}
func
DifferenceSetInt32
(
a1
,
a2
[]
int32
)
(
d1
,
d2
[]
int32
)
{
var
vMap
=
map
[
int32
]
*
int
{}
for
_
,
v1
:=
range
a1
{
vMap
[
v1
]
=
Ints
(
1
)
}
for
_
,
v2
:=
range
a2
{
if
vMap
[
v2
]
==
nil
{
vMap
[
v2
]
=
Ints
(
2
)
}
else
{
vMap
[
v2
]
=
Ints
(
0
)
}
}
for
k
,
v
:=
range
vMap
{
if
*
v
==
1
{
d1
=
append
(
d1
,
k
)
}
else
if
*
v
==
2
{
d2
=
append
(
d2
,
k
)
}
}
return
d1
,
d2
}
func
DifferenceSetInt
(
a1
,
a2
[]
int
)
(
d1
,
d2
[]
int
)
{
var
vMap
=
map
[
int
]
*
int
{}
for
_
,
v1
:=
range
a1
{
vMap
[
v1
]
=
Ints
(
1
)
}
for
_
,
v2
:=
range
a2
{
if
vMap
[
v2
]
==
nil
{
vMap
[
v2
]
=
Ints
(
2
)
}
else
{
vMap
[
v2
]
=
Ints
(
0
)
}
}
for
k
,
v
:=
range
vMap
{
if
*
v
==
1
{
d1
=
append
(
d1
,
k
)
}
else
if
*
v
==
2
{
d2
=
append
(
d2
,
k
)
}
}
return
d1
,
d2
}
func
DifferenceSet
(
a1
,
a2
[]
string
)
(
d1
,
d2
[]
string
)
{
var
vMap
=
map
[
string
]
*
int
{}
for
_
,
v1
:=
range
a1
{
vMap
[
v1
]
=
Ints
(
1
)
}
for
_
,
v2
:=
range
a2
{
if
vMap
[
v2
]
==
nil
{
vMap
[
v2
]
=
Ints
(
2
)
}
else
{
vMap
[
v2
]
=
Ints
(
0
)
}
}
for
k
,
v
:=
range
vMap
{
if
*
v
==
1
{
d1
=
append
(
d1
,
k
)
}
else
if
*
v
==
2
{
d2
=
append
(
d2
,
k
)
}
}
return
d1
,
d2
}
util/ArrayUtil_test.go
View file @
9482dd4e
...
@@ -2,14 +2,32 @@ package util
...
@@ -2,14 +2,32 @@ package util
import
(
import
(
"fmt"
"fmt"
"net/http"
"testing"
"testing"
"time"
"time"
)
)
func
TestArrayContainsInterface
(
t
*
testing
.
T
)
{
func
TestArrayContainsInterface
(
t
*
testing
.
T
)
{
var
areaIds
[]
time
.
Time
var
areaIds
[]
time
.
Time
//
areaIds = append(areaIds, PareDateTime("2022-02-09 22:09:12"))
areaIds
=
append
(
areaIds
,
PareDateTime
(
"2022-02-09 22:09:12"
))
//
areaIds = append(areaIds, PareDateTime("2022-03-09 22:09:12"))
areaIds
=
append
(
areaIds
,
PareDateTime
(
"2022-03-09 22:09:12"
))
//
areaIds = append(areaIds, PareDateTime("2022-12-09 22:09:12"))
areaIds
=
append
(
areaIds
,
PareDateTime
(
"2022-12-09 22:09:12"
))
fmt
.
Println
(
ArrayContainsTime
(
areaIds
,
PareDateTime
(
"2022-02-10 22:09:12"
)))
fmt
.
Println
(
ArrayContainsTime
(
areaIds
,
PareDateTime
(
"2022-02-10 22:09:12"
)))
}
}
func
TestDifference
(
t
*
testing
.
T
)
{
a1
:=
[]
int64
{
1
,
5
,
2
,
3
}
a2
:=
[]
int64
{
2
,
1
,
34
,
3
,
3
,
4
}
d1
,
d2
:=
DifferenceSetInt64
(
a1
,
a2
)
fmt
.
Println
(
"a1与a2的差集分别是:"
,
d1
,
d2
)
}
func
TestPostJSONStr
(
t
*
testing
.
T
)
{
responseData
,
err
:=
PostFormStr
(
"http://ex-test-dcxy-base-manage.168cad.top/v3/operate/balance/recharge/success"
,
"{
\"
orderNo
\"
:
\"
BRO165119944230021
\"
}"
,
nil
,
http
.
Client
{
Timeout
:
10
*
time
.
Second
,
})
if
err
!=
nil
{
fmt
.
Printf
(
"错误:%s
\n
"
,
err
.
Error
())
}
fmt
.
Printf
(
"请求结果:%s
\n
"
,
string
(
responseData
))
}
util/HttpUtil.go
View file @
9482dd4e
package
util
package
util
import
(
import
(
"bytes"
"fmt"
"fmt"
"git.168cad.top/zhengqiuyun/rym-util/exception"
"git.168cad.top/zhengqiuyun/rym-util/exception"
"github.com/gin-gonic/gin"
"github.com/gin-gonic/gin"
"io/ioutil"
"net/http"
"strconv"
"strconv"
"strings"
)
)
func
ParamInt64
(
c
*
gin
.
Context
,
key
string
)
int64
{
func
ParamInt64
(
c
*
gin
.
Context
,
key
string
)
int64
{
...
@@ -95,3 +99,61 @@ func ParamB(c *gin.Context, key string) string {
...
@@ -95,3 +99,61 @@ func ParamB(c *gin.Context, key string) string {
v
:=
c
.
Query
(
key
)
v
:=
c
.
Query
(
key
)
return
v
return
v
}
}
const
(
ApplicationJSON
=
"application/json"
XmlForm
=
"application/x-www-form-urlencoded;charset=utf-8"
)
func
PostFormStr
(
url
string
,
params
string
,
header
map
[
string
]
string
,
client
http
.
Client
)
([]
byte
,
error
)
{
p
:=
StrToUrlValue
(
params
)
requestStr
:=
p
.
Encode
()
buf
:=
strings
.
NewReader
(
requestStr
)
request
,
err
:=
http
.
NewRequest
(
http
.
MethodPost
,
url
,
buf
)
if
err
!=
nil
{
return
nil
,
err
}
request
.
Header
.
Add
(
"Content-Type"
,
XmlForm
)
if
header
!=
nil
{
for
k
,
v
:=
range
header
{
request
.
Header
.
Add
(
k
,
v
)
}
}
response
,
err
:=
client
.
Do
(
request
)
if
err
!=
nil
{
return
nil
,
err
}
defer
response
.
Body
.
Close
()
data
,
err
:=
ioutil
.
ReadAll
(
response
.
Body
)
if
err
!=
nil
{
return
nil
,
err
}
return
data
,
err
}
func
PostJSONStr
(
url
string
,
params
string
,
header
map
[
string
]
string
,
client
http
.
Client
)
([]
byte
,
error
)
{
request
,
err
:=
http
.
NewRequest
(
http
.
MethodPost
,
url
,
bytes
.
NewBufferString
(
params
))
if
err
!=
nil
{
return
nil
,
err
}
request
.
Header
.
Add
(
"Content-Type"
,
ApplicationJSON
)
if
header
!=
nil
{
for
k
,
v
:=
range
header
{
request
.
Header
.
Add
(
k
,
v
)
}
}
response
,
err
:=
client
.
Do
(
request
)
if
err
!=
nil
{
return
nil
,
err
}
defer
response
.
Body
.
Close
()
data
,
err
:=
ioutil
.
ReadAll
(
response
.
Body
)
if
err
!=
nil
{
return
nil
,
err
}
return
data
,
err
}
util/StringUtil.go
View file @
9482dd4e
...
@@ -43,3 +43,7 @@ func containsForSplit(list, item, character string) bool {
...
@@ -43,3 +43,7 @@ func containsForSplit(list, item, character string) bool {
}
}
return
false
return
false
}
}
func
SubStr
(
str
string
,
begin
,
end
int
)
{
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment