# README
TOOL
English | 简体中文
Overview
- Build HTTP and GRPC services
- Quickly build SQL conditional statements
- The LRU cache、local cache
- Filters include Bloom and Cuckoo
- The unique ID can be GUID, NanoID, Snowflake, or UUID
- The Websocket、socket
- Parameter validator
- Type conversion
- Verify the characters、AES、DES、RSA
- Prometheus monitoring and link tracing
- A distributed lock
- The log level
- Current limiter
SQL Where
- conditional statements are built quickly
import (
"github.com/wjoj/tool"
)
type Account struct{
Name `json:"name" gorm:"column:name" ifs:"="`
}
whs := NewWhereStructureFuncIfs(&Account{
Name: "wjoj",
} , "gorm column", func(key string) string {
if key == "name" {
return "="
}
return "="
})
wh := new(tool.Where)
wh.AndIf("phone","like", "%28%")
wh.AndWhereStructure(whs, "or")
Socket
type Message struct {
Lng uint32
I uint16
Msg string
}
Server
SocketListen(899, func(s *SocketConn) error {
readMsg := new(Message)
err := s.ReadBody().Numerical(&readMsg.Lng)
if err != nil {
t.Errorf("\nReadBody error lng:%+v err:%v", readMsg.Lng, err)
return err
}
err = s.ReadBody().Numerical(&readMsg.I)
if err != nil {
t.Errorf("\nReadBody error ri:%v err:%v", readMsg.I, err)
return err
}
body, err := s.ReadBody().Body(int64(readMsg.Lng))
if err != nil {
t.Errorf("\nBody error ri:%v err:%v", len(body), err)
return err
}
readMsg.Msg = string(body)
t.Logf("\nread body succ msg:%+v", readMsg)
msgb := fmt.Sprintf("server:%+v kkkkkkk", readMsg.I)
writeMsg := &Message{
Msg: msgb,
Lng: uint32(len(msgb)),
I: readMsg.I,
}
msg := NewBodyWrite()
msg.Numerical(&writeMsg.Lng)
msg.Numerical(&writeMsg.I)
msg.Write([]byte(writeMsg.Msg))
_, err = s.WriteBody(msg)
if err != nil {
t.Errorf("\nWriteBody error i:%+v err:%v", writeMsg.I, err)
return err
}
t.Logf("\nwrite body succ:%+v", writeMsg.I)
// time.Sleep(time.Second * 2)
return nil
})
Client
for i := uint16(0); i < uint16(t.N); i++ {
// fmt.Printf("\ni:%+v", i)
j := i
SocketClient("127.0.0.1:899", func(s *SocketConn) error {
msgb := fmt.Sprintf("client:%+v", i)
writeMsg := &Message{
Msg: msgb,
Lng: uint32(len(msgb)),
I: j,
}
msg := NewBodyWrite()
err := msg.Numerical(writeMsg.Lng)
if err != nil {
// t.Fatalf("WriteBody error lng i:%+v err:%v", j, err)
return err
}
err = msg.Numerical(&writeMsg.I)
if err != nil {
// t.Fatalf("\nWriteBody error i i:%+v err:%v", j, err)
return err
}
_, err = msg.Write([]byte(writeMsg.Msg))
if err != nil {
// t.Fatalf("\nWriteBody error body i:%+v err:%v", j, err)
return err
}
_, err = s.WriteBody(msg)
if err != nil {
// t.Fatalf("\nWriteBody error i:%+v err:%v", j, err)
return err
}
// t.Logf("\nWriteBody succ i:%+v ", j)
readMsg := new(Message)
err = s.ReadBody().Numerical(&readMsg.Lng)
if err != nil {
// t.Fatalf("\nReadBody error i:%v lng:%+v err:%v", j, readMsg.Lng, err)
return err
}
err = s.ReadBody().Numerical(&readMsg.I)
if err != nil {
// t.Fatalf("\nReadBody error i:%+v ri:%v err:%v", j, readMsg.I, err)
return err
}
body, err := s.ReadBody().Body(int64(readMsg.Lng))
if err != nil {
// t.Fatalf("\nBody error i:%+v ri:%v err:%v", j, len(body), err)
return err
}
readMsg.Msg = string(body)
// t.Logf("\nread body i:%v msg:%+v", j, readMsg)
time.Sleep(time.Second * 2)
return nil
})
}
# Packages
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
Package grpcpool provides a pool of grpc clients.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
# Functions
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
NewWhereStructurem is the structuretag example:`gorm:"column:name"` at this time tag="gorm column" or `gorm:"name"` at this time tag="gorm"tagIfs `ifs:"="` at this time where is name=value.
NewWhereStructureFuncIfsm is the structuretag example:`gorm:"column:name"` at this time tag="gorm column" or `gorm:"name"` at this time tag="gorm"funcIfs returns the tag value.
No description provided by the author
No description provided by the author
No description provided by the author
# Constants
EnvironmentType 环境.
EnvironmentType 环境.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
# Structs
No description provided by the author
No description provided by the author
Where Where.
No description provided by the author
# Type aliases
No description provided by the author
No description provided by the author