1
0
mirror of https://github.com/duke-git/lancet.git synced 2026-03-01 00:35:28 +08:00

Compare commits

...

3 Commits

Author SHA1 Message Date
dudaodong 58a37b7e8d Merge branch 'rc' into v2 2024-11-27 15:09:35 +08:00
dudaodong 6bd61460d3 fix: MaxInt was added only in 1.17 use instead 2024-11-27 15:08:54 +08:00
Yurun 05b85a2131 Pre-allocate memory to reduce the number of allocations (#272) 2024-11-27 14:58:02 +08:00
15 changed files with 77 additions and 74 deletions
+1 -1
View File
@@ -74,7 +74,7 @@ func ToBytes(value any) ([]byte, error) {
// ToChar convert string to char slice. // ToChar convert string to char slice.
// Play: https://go.dev/play/p/JJ1SvbFkVdM // Play: https://go.dev/play/p/JJ1SvbFkVdM
func ToChar(s string) []string { func ToChar(s string) []string {
c := make([]string, 0) c := make([]string, 0, len(s))
if len(s) == 0 { if len(s) == 0 {
c = append(c, "") c = append(c, "")
} }
+49 -49
View File
@@ -1,51 +1,51 @@
-----BEGIN rsa private key----- -----BEGIN rsa private key-----
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
-----END rsa private key----- -----END rsa private key-----
+12 -12
View File
@@ -1,14 +1,14 @@
-----BEGIN rsa public key----- -----BEGIN rsa public key-----
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAymvyNgI0T1P/DnFA2Fom MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAndYMNkKkKpiljieXZEVn
Mrx4SzBf9p4VJ70AyYmbdeGhtzh+u6zNoDQ2UMmDzcCbtv9JW7PX80O8xy/O006g izdndsLOD11062JZMEU3g0KZzJovygXnGoadrRxnukaMpDD1AzJdK4vT/jawJ/5f
eNPfW74T5ryH2GEj3Y+eOtIzYI6gQy74JXqiqEztE6BkvesYHC+Yo8IIrawBBYHg c7ErTIDrm0eWGMgR9ggU3kas70JJKry6KmtvGAWxyL9DRV0JFXfOwtvwVJ2JN4Zd
GvluAudTZPqnkcqnUd8ngfhahCQrMi+sKqiqOWC/D0FVSclfugWw5/EBxJJSBSPY UQtrzJza0T5uVsM9fs0RmTi5Ga883mZ/w2Ed4LoZ089ZhF/+AqYBrb9qocxkIEyy
umLJelbk3PqXtVm46mvGnlQlfHGppYQ5Nj6zKilCgoJoAHURp4dAaOwAhVOtc31M 2oeZVG9y2lO5tIlN98ytAanrq6qsuHHW4MAG3mL7ocx5mikANNdWkiTFxxY6D1Pk
0WPre/9th4TodZu1GeqFt5HqmMeP5+p2GDNDSxDNP3lgCgSqwRzy4pYaE5e70azn OWk57RRns7CT43BwoUj3n8ThHN4c9thS/SB7A++RJ2sHQWfpPxzp4vNKw7SAOpcS
Os5iaclAAlrLN3aSK6lDT+BGQbQrQgM47x3flMfszqNeuaBwdiNyzEodhT8eiYl8 PhOrN1m1vl/JstQcksdbG+lpl/vqtnOB2QDCpS3jdKjgkpUlylb1Udx7qdQQtY5J
m08B1sVI811q7pG8WUVZjIYs2BzVjK/VDnvbEyayX+RGCAXr5M/bfDM1YRfVS9TW b9/fiMlCbVT//3hGfJGb5gpz2jjw7SJOkih461eyz7xgS+on6FHXiIvbb0jdy2pj
xspQNB3pyxgLX//LJIATbutUVKcrjxjoS7GdEocSruTOm/J+ZMTm0EqhsbRHVm+7 PAI2bVc4+53lCWlOKQ/zXvi1WOYjp9cuhccTy85M4cBU5MBH8kiW/RLJDSNmRuh8
GcsSLaiSACEq+ONQJsN1x1o2GGVEi3pEZnDITSsokdcyrBj1A9a5Hx4tSiMbg88g dOyr/J+Q34878waVUAel/bhmh40BzxQ+2h8CJ/AjAPIQvOVXQi2eKFGiRk3cLwca
S4MPOALzBTmEVneQC+U5HTG/erUpZk6/AhT9Flk3HQTNIdzz8a2Clfeh4GU1JoKB NE5DAv0csxeP8Yt5IuS+ms7qHTGRUzL9MgX767K4hd+9DJUO4XkNLietVDpyWFl4
4u++XPt4M5h75OWnd5r9HYUCAwEAAQ== 8DoqAzp0hvh7Fxt/SN17WCUCAwEAAQ==
-----END rsa public key----- -----END rsa public key-----
+1 -1
View File
@@ -209,7 +209,7 @@ func (dl *DoublyLink[T]) Size() int {
// Values return slice of all doubly linklist node value // Values return slice of all doubly linklist node value
func (dl *DoublyLink[T]) Values() []T { func (dl *DoublyLink[T]) Values() []T {
result := []T{} result := make([]T, 0, dl.length)
current := dl.Head current := dl.Head
for current != nil { for current != nil {
result = append(result, current.Value) result = append(result, current.Value)
+1 -1
View File
@@ -212,7 +212,7 @@ func (sl *SinglyLink[T]) Size() int {
// Values return slice of all singly linklist node value // Values return slice of all singly linklist node value
func (sl *SinglyLink[T]) Values() []T { func (sl *SinglyLink[T]) Values() []T {
result := []T{} result := make([]T, 0, sl.length)
current := sl.Head current := sl.Head
for current != nil { for current != nil {
result = append(result, current.Value) result = append(result, current.Value)
+1 -1
View File
@@ -31,7 +31,7 @@ func NewArrayQueue[T any](capacity int) *ArrayQueue[T] {
// Data return slice of queue data // Data return slice of queue data
func (q *ArrayQueue[T]) Data() []T { func (q *ArrayQueue[T]) Data() []T {
items := []T{} items := make([]T, 0, q.tail-q.head)
for i := q.head; i < q.tail; i++ { for i := q.head; i < q.tail; i++ {
items = append(items, q.data[i]) items = append(items, q.data[i])
} }
+1 -1
View File
@@ -27,7 +27,7 @@ func NewLinkedQueue[T any]() *LinkedQueue[T] {
// Data return slice of queue data // Data return slice of queue data
func (q *LinkedQueue[T]) Data() []T { func (q *LinkedQueue[T]) Data() []T {
res := []T{} res := make([]T, 0, q.length)
current := q.head current := q.head
for current != nil { for current != nil {
+1 -1
View File
@@ -24,7 +24,7 @@ func NewLinkedStack[T any]() *LinkedStack[T] {
// Data return stack data // Data return stack data
func (s *LinkedStack[T]) Data() []T { func (s *LinkedStack[T]) Data() []T {
res := []T{} res := make([]T, 0, s.length)
current := s.top current := s.top
for current != nil { for current != nil {
+1 -1
View File
@@ -147,7 +147,7 @@ func printTreeNodes[T any](nodes []*datastructure.TreeNode[T], level, maxLevel i
printSpaces(firstSpaces) printSpaces(firstSpaces)
newNodes := []*datastructure.TreeNode[T]{} newNodes := make([]*datastructure.TreeNode[T], 0, len(nodes)*2)
for _, node := range nodes { for _, node := range nodes {
if node != nil { if node != nil {
fmt.Printf("%v", node.Value) fmt.Printf("%v", node.Value)
+4 -2
View File
@@ -14,7 +14,6 @@ import (
"encoding/csv" "encoding/csv"
"errors" "errors"
"fmt" "fmt"
"github.com/duke-git/lancet/v2/validator"
"io" "io"
"io/fs" "io/fs"
"net/http" "net/http"
@@ -24,6 +23,8 @@ import (
"sort" "sort"
"strings" "strings"
"sync" "sync"
"github.com/duke-git/lancet/v2/validator"
) )
// FileReader is a reader supporting offset seeking and reading one // FileReader is a reader supporting offset seeking and reading one
@@ -819,6 +820,7 @@ func WriteMapsToCsv(filepath string, records []map[string]any, appendToExistingF
if len(headers) > 0 { if len(headers) > 0 {
columnHeaders = headers[0] columnHeaders = headers[0]
} else { } else {
columnHeaders = make([]string, 0, len(records[0]))
for key := range records[0] { for key := range records[0] {
columnHeaders = append(columnHeaders, key) columnHeaders = append(columnHeaders, key)
} }
@@ -832,7 +834,7 @@ func WriteMapsToCsv(filepath string, records []map[string]any, appendToExistingF
} }
for _, record := range records { for _, record := range records {
var row []string row := make([]string, 0, len(columnHeaders))
for _, h := range columnHeaders { for _, h := range columnHeaders {
row = append(row, fmt.Sprintf("%v", record[h])) row = append(row, fmt.Sprintf("%v", record[h]))
} }
+1 -1
View File
@@ -71,7 +71,7 @@ func ConvertMapToQueryString(param map[string]any) string {
if param == nil { if param == nil {
return "" return ""
} }
var keys []string keys := make([]string, 0, len(param))
for key := range param { for key := range param {
keys = append(keys, key) keys = append(keys, key)
} }
+1 -1
View File
@@ -18,7 +18,7 @@ import (
) )
const ( const (
MaximumCapacity = math.MaxInt>>1 + 1 MaximumCapacity = math.MaxInt32>>1 + 1
Numeral = "0123456789" Numeral = "0123456789"
LowwerLetters = "abcdefghijklmnopqrstuvwxyz" LowwerLetters = "abcdefghijklmnopqrstuvwxyz"
UpperLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" UpperLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+1
View File
@@ -202,6 +202,7 @@ func (s Stream[T]) Skip(n int) Stream[T] {
return FromSlice(source) return FromSlice(source)
} }
source = make([]T, 0, l-n)
for i := n; i < l; i++ { for i := n; i < l; i++ {
source = append(source, s.source[i]) source = append(source, s.source[i])
} }
+1 -1
View File
@@ -88,8 +88,8 @@ func (s *Struct) ToMap() (map[string]any, error) {
// Fields returns all the struct fields within a slice // Fields returns all the struct fields within a slice
func (s *Struct) Fields() []*Field { func (s *Struct) Fields() []*Field {
var fields []*Field
fieldNum := s.rvalue.NumField() fieldNum := s.rvalue.NumField()
fields := make([]*Field, 0, fieldNum)
for i := 0; i < fieldNum; i++ { for i := 0; i < fieldNum; i++ {
v := s.rvalue.Field(i) v := s.rvalue.Field(i)
sf := s.rtype.Field(i) sf := s.rtype.Field(i)
+1 -1
View File
@@ -34,7 +34,7 @@ func Wrap(cause error, message ...any) *XError {
err := newXError() err := newXError()
if len(message) > 0 { if len(message) > 0 {
var newMsgs []string newMsgs := make([]string, 0, len(message))
for _, m := range message { for _, m := range message {
newMsgs = append(newMsgs, fmt.Sprintf("%v", m)) newMsgs = append(newMsgs, fmt.Sprintf("%v", m))
} }