Go
Go
Starzkg
你已经是一个成熟的程序猿了,要学会自己DEBUG了。
展开
-
gRPC——简介与Hello World
gRPC简介gRPC 是一个高性能、开源、通用的RPC框架,由Google推出,基于HTTP2协议标准设计开发,默认采用Protocol Buffers数据序列化协议,支持多种开发语言。gRPC提供了一种简单的方法来精确的定义服务,并且为客户端和服务端自动生成可靠的功能库。在gRPC客户端可以直接调用不同服务器上的远程程序,使用姿势看起来就像调用本地程序一样,很容易去构建分布式应用和服务。和很多RPC系统一样,服务端负责实现定义好的接口并处理客户端的请求,客户端根据接口描述直接调用需要的服务。客户端和服原创 2021-10-08 21:48:54 · 535 阅读 · 0 评论 -
Go——goquery简单Demo
package mainimport ( "fmt" "github.com/PuerkitoBio/goquery" "os")func main() { f, _ := os.Open("test.xml") doc, err := goquery.NewDocumentFromReader(f) if err != nil { return } selection := doc.Find("dependency") node := selection.Get(0) a原创 2021-09-12 10:50:34 · 305 阅读 · 0 评论 -
牛客题霸 NC30 数组中未出现的最小正整数
解决方案Go版本一func minNumberdisappered(arr []int) int { // write code here n := len(arr) for i := 0; i < n; i++ { for arr[i] > 0 && arr[i] <= n && arr[arr[i]-1] != arr[i] { arr[arr[i]-1], arr[i] = arr[i], arr[arr[i]-1] } }原创 2021-09-12 10:46:31 · 182 阅读 · 0 评论 -
牛客题霸 NC29 二维数组中的查找
https://www.nowcoder.com/practice/abc3fe2ce8e146608e868a70efebf62e解决方案Go版本一func Find(target int, array [][]int) bool { // write code here rlen := len(array) if rlen == 0 { return false } clen := len(array[0]) if clen == 0 { return false } r原创 2021-09-12 10:44:32 · 186 阅读 · 0 评论 -
牛客题霸 NC28 最小覆盖子串
https://www.nowcoder.com/practice/c466d480d20c4c7c9d322d12ca7955ac解决方案Go版本一func minWindow(S string, T string) string { // write code here left, right := 0, 0 //表示窗口左右位置的指针 start := 0 //start 表示最后结果字符串开始位置 var minLen原创 2021-09-12 10:43:04 · 282 阅读 · 0 评论 -
牛客题霸 NC27 集合的所有子集
https://www.nowcoder.com/practice/c333d551eb6243e0b4d92e37a06fbfc9解决方案Go版本一func subsets(A []int) [][]int { // write code here n := len(A) if n == 0 { return [][]int{{}} } res := subsets(A[:n-1]) ln := len(res) for i := 0; i < ln; i++ {原创 2021-09-12 10:39:47 · 167 阅读 · 0 评论 -
牛客题霸 NC26 括号生成
解决方案Go版本一func generateParenthesis(n int) []string { // write code here dfs(0, 0, []byte{}, n) return rs}var rs []stringfunc dfs(left, right int, path []byte, n int) { if left == right && left == n { rs = append(rs, string(path)) ret原创 2021-09-12 10:38:10 · 166 阅读 · 0 评论 -
牛客题霸 NC25 删除有序链表中重复的元素-I
https://www.nowcoder.com/practice/c087914fae584da886a0091e877f2c79解决方案Go版本一func deleteDuplicates(head *ListNode) *ListNode { // write code here node, last := head, head for node != nil { for node != nil && node.Val == last.Val { node =原创 2021-08-19 22:26:24 · 207 阅读 · 0 评论 -
牛客题霸 NC24 删除有序链表中重复的元素-II
https://www.nowcoder.com/practice/71cef9f8b5564579bf7ed93fbe0b2024解决方案Gofunc deleteDuplicates(head *ListNode) *ListNode { // write code here pummy := new(ListNode) pummy.Next = head slow, fast, last := head, head, pummy for slow != nil { for fast原创 2021-08-19 22:24:51 · 216 阅读 · 0 评论 -
牛客题霸 NC23 划分链表
https://www.nowcoder.com/practice/1dc1036be38f45f19000e48abe00b12f解决方案Gofunc partition(head *ListNode, x int) *ListNode { // write code here return solve(head, nil, nil, x)}func solve(head *ListNode, pre *ListNode, h *ListNode, x int) *ListNode {原创 2021-08-19 22:23:37 · 167 阅读 · 0 评论 -
牛客题霸 NC22 合并两个有序的数组
https://www.nowcoder.com/practice/89865d4375634fc484f3a24b7fe65665解决方案Gofunc merge(A []int, m int, B []int, n int) { // write code here i, j, index := m-1, n-1, m+n-1 for i >= 0 && j >= 0 { if A[i] > B[j] { A[index] = A[i] i-原创 2021-08-16 23:00:13 · 169 阅读 · 0 评论 -
牛客题霸 NC21 链表内指定区间反转
https://www.nowcoder.com/practice/b58434e200a648c589ca2063f1faf58c解决方案Gofunc reverseBetween(head *ListNode, m int, n int) *ListNode { // write code here return solve(head, m, n, 1, nil, head)}func solve(head *ListNode, m int, n int, index int, pre原创 2021-08-16 22:59:08 · 275 阅读 · 0 评论 -
牛客题霸 NC20 数字字符串转化成IP地址
https://www.nowcoder.com/practice/ce73540d47374dbe85b3125f57727e1e解决方案Gofunc restoreIpAddresses(s string) []string { res = []string{} segSlice = make([]string, SEG_COUNT) dfs(s, 0) return res}const SEG_COUNT = 4var ( res []string segSli原创 2021-08-16 22:57:57 · 217 阅读 · 0 评论 -
牛客题霸 NC19 子数组的最大累加和问题
https://www.nowcoder.com/practice/554aa508dd5d4fefbf0f86e5fe953abd解决方案Gofunc maxsumofSubarray(arr []int) int { // write code here cur, Max := 0, 0 for _, a := range arr { cur = max(cur+a, a) Max = max(cur, Max) } return Max}func max(a, b int原创 2021-08-16 22:56:41 · 145 阅读 · 0 评论 -
Go——从文件路径解析解析GAVC坐标解决方案
源代码:https://gitee.com/shentuzhigang/mini-project/tree/master/go-gavc解决方案正则表达式来自:Artifactory Maven仓库初始配置package go_gavcimport ( "github.com/dlclark/regexp2" "strings")type GAVC struct { GroupId string ArtifactId string Veriosn string Cla原创 2021-08-11 21:23:40 · 384 阅读 · 0 评论 -
牛客题霸 NC18 顺时针旋转矩阵
https://www.nowcoder.com/practice/2e95333fbdd4451395066957e24909cc解决方案Gofunc rotateMatrix(mat [][]int, n int) [][]int { // write code here m := make([][]int, n) for i := range m { m[i] = make([]int, n) } for i := 0; i < n; i++ { for j := 0;原创 2021-08-07 16:13:30 · 252 阅读 · 0 评论 -
牛客题霸 NC17 最长回文子串
https://www.nowcoder.com/practice/8a19cbe657394eeaac2f6ea9b0f6fcf6解决方案GoManacher(马拉车)算法func getLongestPalindromeManacher(A string, n int) int { // write code here if n <= 1 { return n } ss := "$#" for i := 0; i < n; i++ { ss = ss + A[i:i原创 2021-08-07 16:02:36 · 214 阅读 · 0 评论 -
牛客题霸 NC16 判断二叉树是否对称
https://www.nowcoder.com/practice/1b0b7f371eae4204bc4a7570c84c2de1解决方案Gofunc isSymmetric(root *TreeNode) bool { // write code here if root == nil { return true } return symmetric(root.Left, root.Right)}func symmetric(a, b *TreeNode) bool { if a原创 2021-08-07 15:58:50 · 172 阅读 · 0 评论 -
牛客题霸 NC15 求二叉树的层序遍历
https://www.nowcoder.com/practice/04a5560e43e24e9db4595865dc9c63a3解决方案Gofunc levelOrder(root *TreeNode) [][]int { // write code here NC15dfs(root, 0) return NC15ans}var NC15ans = make([][]int, 0)func NC15dfs(pRoot *TreeNode, num int) { if pRoot原创 2021-08-07 15:57:00 · 174 阅读 · 0 评论 -
牛客题霸 NC14 按之字形顺序打印二叉树
https://www.nowcoder.com/practice/91b69814117f4e8097390d107d2efbe0解决方案Gofunc Print(pRoot *TreeNode) [][]int { NC14dfs(pRoot, 0) return NC14ans}var NC14ans = make([][]int, 0)func NC14dfs(pRoot *TreeNode, num int) { if pRoot == nil { return }原创 2021-08-07 15:55:43 · 258 阅读 · 0 评论 -
牛客题霸 NC13 二叉树的最大深度
https://www.nowcoder.com/practice/8a2b2bf6c19b4f23a9bdb9b233eefa73解决方案Gofunc maxDepth(root *TreeNode) int { // write code here if root == nil { return 0 } return max(maxDepth(root.Left), maxDepth(root.Right)) + 1}func max(a, b int) int { if a原创 2021-08-07 15:54:08 · 154 阅读 · 0 评论 -
牛客题霸 NC12 重建二叉树
https://www.nowcoder.com/practice/8a19cbe657394eeaac2f6ea9b0f6fcf6解决方案Gofunc reConstructBinaryTree(pre []int, vin []int) *TreeNode { // write code here if len(pre) == 0 { return nil } pos := 0 for ; pre[0] != vin[pos]; pos++ { } root := &Tr原创 2021-08-07 15:49:47 · 170 阅读 · 0 评论 -
牛客题霸 NC11 将升序数组转化为平衡二叉搜索树
https://www.nowcoder.com/practice/7e5b00f94b254da599a9472fe5ab283d解决方案Gofunc sortedArrayToBST(num []int) *TreeNode { // write code here return preOrder(num, 0, len(num)-1)}func preOrder(num []int, left, right int) *TreeNode { if left > right {原创 2021-08-07 15:48:36 · 253 阅读 · 0 评论 -
牛客题霸 NC10 大数乘法
https://www.nowcoder.com/practice/c4c488d4d40d4c4e9824c3650f7d5571解决方案JAVA public String solve (String s, String t) { // write code here BigInteger bi1 = new BigInteger(s) ; // 声明BigInteger对象 BigInteger bi2 = new BigInteger(t) ; //原创 2021-08-07 15:07:36 · 238 阅读 · 0 评论 -
牛客题霸 NC9 二叉树中是否存在节点和为指定值的路径
https://www.nowcoder.com/practice/508378c0823c423baa723ce448cbfd0c解决方案Gofunc hasPathSum(root *TreeNode, sum int) bool { // write code here return dfs(root, sum)}func dfs(root *TreeNode, sum int) bool { if root == nil { return false } sum = sum原创 2021-08-07 14:19:34 · 180 阅读 · 0 评论 -
牛客题霸 NC8 二叉树根节点到叶子节点和为指定值的路径
https://www.nowcoder.com/practice/840dd2dc4fbd4b2199cd48f2dadf930a解决方案Govar ans [][]int = make([][]int, 0)func pathSum(root *TreeNode, sum int) [][]int { // write code here dfs(root, sum) return ans}var a []int = make([]int, 0)func dfs(root *T原创 2021-08-06 21:00:27 · 184 阅读 · 0 评论 -
牛客题霸 NC7 买卖股票的最好时机
https://www.nowcoder.com/practice/64b4262d4e6d4f6181cd45446a5821ec解决方案Gofunc maxProfit(prices []int) int { // write code here var min int = 1e9 max := 0 for _, price := range prices { if max < price-min { max = price - min } if min >原创 2021-08-06 20:58:56 · 165 阅读 · 0 评论 -
牛客题霸 NC6 二叉树的最大路径和
https://www.nowcoder.com/practice/da785ea0f64b442488c125b441a4ba4a解决方案Govar res int = -1e10func maxPathSum(root *TreeNode) int { // write code here getMaxPathSum(root) return res}func getMaxPathSum(root *TreeNode) int { if root == nil { retur原创 2021-08-06 20:57:18 · 194 阅读 · 0 评论 -
牛客题霸 NC5 二叉树根节点到叶子节点的所有路径和
https://www.nowcoder.com/practice/185a87cd29eb42049132aed873273e83解决方案Gofunc sumNumbers(root *TreeNode) int { // write code here return sum(0, root)}func sum(pre int, root *TreeNode) int { if root == nil { return 0 } res := pre*10 + root.Val原创 2021-08-06 20:55:53 · 185 阅读 · 0 评论 -
牛客题霸 NC4 判断链表中是否有环
https://www.nowcoder.com/practice/650474f313294468a4ded3ce0f7898b9解决方案Gofunc hasCycle(head *ListNode) bool { // write code here ptr1, ptr2 := head, head for { if ptr2 == nil || ptr2.Next == nil { return false } ptr2 = ptr2.Next.Next ptr1 =原创 2021-08-06 20:54:19 · 188 阅读 · 0 评论 -
牛客题霸 NC3 链表中环的入口结点
https://www.nowcoder.com/practice/253d2c59ec3e4bc68da16833f79a38e4解决方案Gofunc EntryNodeOfLoop(pHead *ListNode) *ListNode { ptr1, ptr2 := pHead, pHead for { if ptr2 == nil || ptr2.Next == nil { return nil } ptr2 = ptr2.Next.Next ptr1 = ptr1.N原创 2021-08-06 20:52:58 · 150 阅读 · 0 评论 -
牛客题霸 NC2 重排链表
https://www.nowcoder.com/practice/3d281dc0b3704347846a110bf561ef6b解决方案Gofunc reorderList(head *ListNode) { // write code here solve(0, head)}func solve(i int, head *ListNode) (rj int, rtail *ListNode) { if head == nil { return -1, nil } j, ta原创 2021-08-06 20:51:09 · 209 阅读 · 0 评论 -
LeetCode 279 完全平方数
https://leetcode-cn.com/problems/perfect-squares/解决方案JAVA 版本class Solution { public int numSquares(int n) { int[] b = new int[10000]; b[0]=0; for(int i=1;i<=n;i++){ b[i]= b[i-1]+1; for(int j=2;j*j&原创 2021-08-06 20:43:28 · 94 阅读 · 0 评论 -
LeetCode 4 寻找两个正序数组的中位数
https://leetcode-cn.com/problems/median-of-two-sorted-arra解决方案Go 版本func findMedianSortedArrays(nums1 []int, nums2 []int) float64 { len1,len2:=len(nums1) , len(nums2) len := len1+len2 if len1>len2 { return findMedianSortedArrays(n原创 2021-07-28 22:36:47 · 160 阅读 · 0 评论 -
Iris——整合Gorm持久化的Casbin的Example
源代码:https://gitee.com/shentuzhigang/mini-project/tree/master/iris_demo/casbin_demoGo Modulego get github.com/kataras/iris/v12go get github.com/casbin/casbin/v2go get gorm.io/gormgo get gorm.io/driver/mysqlgo get github.com/casbin/gorm-adapter/v3Exa原创 2021-07-19 20:54:22 · 521 阅读 · 0 评论 -
Go——cron定时任务Demo
源代码:https://gitee.com/shentuzhigang/mini-project/blob/master/cron_demo官方文档https://pkg.go.dev/github.com/robfig/cronDemopackage cron_demoimport ( "fmt" "github.com/robfig/cron/v3" "testing" "time")func TestCron(t *testing.T) { c := cron.New()原创 2021-07-14 22:19:13 · 261 阅读 · 0 评论 -
Go——Artifactory的AQL查询以及json解析解决方案
源代码:https://gitee.com/shentuzhigang/mini-project/blob/master/jfrog-client-demo/artifactory/官方SDK:http://github.com/jfrog/jfrog-client-goAQL:https://www.jfrog.com/confluence/display/JFROG/Artifactory+Query+Language解决方案package artifactoryimport ( "f原创 2021-07-06 23:58:08 · 545 阅读 · 0 评论 -
Go——连接 JFrog Artifactory 简单测试
源代码:https://gitee.com/shentuzhigang/mini-project/blob/master/jfrog-client-demo/artifactory/artifactory_test.go官方SDK:http://github.com/jfrog/jfrog-client-go解决方案package artifactoryimport ( "fmt" "github.com/jfrog/jfrog-client-go/artifactory" "githu原创 2021-07-05 21:45:49 · 822 阅读 · 0 评论 -
LeetCode 3 无重复字符的最长子串
https://leetcode-cn.com/problems/longest-substring-without-repeating-characters/解决方案func lengthOfLongestSubstring(s string) int { // 哈希集合,记录每个字符是否出现过 var m [128]int n := len(s) rk, ans := -1, 0 for i := 0; i < n; i++ { if原创 2021-07-04 22:42:37 · 112 阅读 · 0 评论 -
Iris——整合go-playground/validator参数校验Demo
源代码:https://gitee.com/shentuzhigang/mini-project/blob/master/iris_validator解决方案go.modrequire ( github.com/Joker/hpp v1.0.0 // indirect github.com/go-playground/validator/v10 v10.6.1 github.com/k0kubun/colorstring v0.0.0-20150214042306-9440f1994b88 //原创 2021-06-30 21:52:24 · 814 阅读 · 2 评论