1. Blog性质
  • 本BLOG由个人维护,文章内容来自于个人原创,主要目的为记录、整理学习过程中遇到的问题和笔记,不涉及商业用途
  1. 关于转载、版权
  • 欢迎非商业性用途转载,转载请注明出处
  • 本BLOG文章除特别声明以外,均为作者原创,未经作者本人允许不得擅自用于商业用途及传统媒体

本站文章采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

目录

基础题

典型题

常用算法

进阶算法

数据结构设计

SQL典型题

解题通用思路

基础题

1.传递信息

给定总玩家数n,以及按[玩家编号,对应可传递玩家编号]关系组成的二维数组 relation。返回信息从编号0玩家经过k轮传递到编号为n-1玩家处的方案数;若不能到达,返回0

示例:输入:n = 5, relation = [[0,2],[2,1],[3,4],[2,3],[1,4],[2,0],[0,4]], k = 3
输出:3
解释:信息从小 A 编号 0 处开始,经 3 轮传递,到达编号 4。共有 3 种方案,分别是 0->2->0->4, 0->2->1->4, 0->2->3->4。

解法:模拟法

  • 从第一轮开始模拟
  • 每一轮中遍历relation数组根据发送者-接受者的关系,用上一轮能到达发送者的方案数去更新该轮能到达接受者的方案数
  • 模拟到最后一轮后返回满足题目要求的方案数
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # k是轮数,n是总人数
    vector<vector<int>> dp(k+1, vector<int> (n));
    dp[0][0] = 1;
    for(int i = 1; i < k+1; i++){
    for(auto& t:relation){
    int send_id = t[0];
    int accept_id = t[1];
    dp[i][accept_id] += dp[i-1][send_id];
    }
    }
    return dp[k][n-1];

    # dp[i][j]表示在第i轮能到达编号j的方案数
阅读全文 »

目录

一、安装和基本概念

二、示例

三、测试

四、xorm库操作mysql

五、后端开发思路

六、常用工具

七、踩坑

一、安装和基本概念

1.在Goland控制台上输入以下语句安装gin

1
2
go get -u github.com/gin-gonic/gin
//加-u的区别是,如果本地的包版本太低会顺便更新,不加-u的话只要本地有包就会不采取任何措施

如果出现网络错误,就分别执行下述语句后再重新安装

1
2
3
4
# 设置goproxy.io代理
go env -w GOPROXY="https://goproxy.io"
# 设置GO111MOUDLE
go env -w GO111MODULE="on"

2.几个内置的中间件

  • gin.Logger(),用于日志
  • gin.Recovery(),用于恢复恐慌panic()保持程序运行,然后返回500

3.gin.Default()定义的默认使用了Recovery和Logger中间件

  • 而用gin.New()定义的则是不使用任何中间件
  • 中间件的使用语法如下
    1
    router.Use(gin.Logger())
阅读全文 »

目录

一、理解网络编程和套接字

二、套接字类型与协议设置

三、基于TCP的服务器端/客户端

一、理解网络编程和套接字

1.网络编程中接受链接请求的套接字创建过程:

  • 第一步:调用socket函数创建套接字
  • 第二步:调用bind函数分配IP地址和端口号
  • 第三步:listen函数转为可接受请求状态
  • 第四步:调用accept函数受理接受请求

2.网络编程中发出链接请求的套接字创建过程:

  • 第一步:调用socket函数创建套接字
  • 第二步:调用connect函数匹配IP地址和端口号并发送链接请求
阅读全文 »