go

C语言系统化精讲 重塑你的编程思想 打造坚实的开发基础

泪湿孤枕 提交于 2021-02-13 04:18:23
download: C语言系统化精讲 重塑你的编程思想 打造坚实的开发基础 修炼内功最强语言,训练编程思想最有效语言,圣经般存在的语言,2020 TIOBE排行冠军语言——这些说的,都是C语言。每个优秀开发者都应该精通C语言,这门课程就是为所有没学过、没学好C语言的你专属打造,多种编程语言技术专家bennyhuo独家分享,带你系统、高效、轻松啃透C语言这个硬骨头! 适合人群 希望获得更深层次进阶语言的开发者 希望夯实语言基础的开发者 希望精雕细琢掌握多门语言的开发者 有面试/跳槽/晋升需求的开发者和在校生 技术储备要求 零门槛,有计算机基础、操作系统、编程基础和经验更佳 挑选法找素数是个不错的办法,2、3、4、5、6、7、8、9、10 ... 这些数中,第一个数 2 是素数,取出来,然后将 2 的倍数全部去掉;剩下的第一个数 3 还是素数,再去掉一切 3 的倍数,不断停止下去,就能找到很多素数。本例子也就是用的这个办法。 详细逻辑是:第一个管道记载从2开端的自然数,取第一自然数/质数 2;然后第二个管道记载从第一个管道中过滤后的一切自然数,再取一个质数 3;第三个管道取第二个管道中过滤后的数,又得一个质数;一切的管道都是无限长的,只需程序嚒有终止,这些挑选/过滤便不断在停止着。 c add1 ( x * Number ) * Number { e := new ( Number )

手撸golang 行为型设计模式 访问者模式

冷暖自知 提交于 2021-02-13 04:18:01
手撸golang 行为型设计模式 访问者模式 缘起 最近复习设计模式 拜读谭勇德的<<设计模式就该这样学>> 本系列笔记拟采用golang练习之 访问者模式 访问者模式(Visitor Pattern)是一种将数据结构与数据操作分离的设计模式, 指封装一些作用于某种数据结构中的各元素的操作, 可以在不改变数据结构的前提下定义作用于这些元素的新的操作, 属于行为型设计模式。 访问者模式主要适用于以下应用场景: (1)数据结构稳定,作用于数据结构的操作经常变化的场景。 (2)需要数据结构与数据操作分离的场景。 (3)需要对不同数据类型(元素)进行操作,而不使用分支判断具体类型的场景。 (摘自 谭勇德 <<设计模式就该这样学>>) 场景 某订单管理系统, 需要按不同维度统计分析销售订单 区域销售报表: 需按销售区域, 统计销售情况 品类销售报表: 需根据不同产品, 统计销售情况 根据 访问者模式 , 可将不同的报表, 设计为销售订单的访问者 设计 SaleOrder: 销售订单实体类 ISaleOrderService: 销售订单服务接口 ISaleOrderVisitor: 销售订单访问者 tMockSaleOrderService: 虚拟的销售订单服务, 实现ISaleOrderService接口 CityVisitor: 区域销售报表, 按城市汇总销售情况,

beego的安装以及bee的安装和使用

坚强是说给别人听的谎言 提交于 2021-02-12 19:29:13
beego的安装以及bee的安装和使用 一、beego的安装 1.beego是什么 beego 是一个快速开发 Go 应用的 HTTP 框架,他可以用来快速开发 API、Web 及后端服务等各种应用,是一个 RESTful 的框架,主要设计灵感来源于 tornado、sinatra 和 flask 这三个框架,但是结合了 Go 本身的一些特性(interface、struct 嵌入等)而设计的一个框架。 2.beego的安装 beego 的安装是典型的 Go 安装包的形式: go get github.com/astaxie/beego 3.beego的升级 Go 升级,通过该方式用户可以升级 beego 框架,强烈推荐该方式: go get -u github.com/astaxie/beego 源码下载升级,用户访问 https://github.com/astaxie/beego ,下载源码,然后覆盖到 $GOPATH/src/github.com/astaxie/beego 目录,然后通过本地执行安装就可以升级了: go install github.com/astaxie/beego 二、bee工具的安装和使用 1.bee是什么 bee 工具是一个为了协助快速开发 beego 项目而创建的项目,通过 bee 您可以很容易的进行 beego 项目的创建、热编译、开发、测试

golang grpc keepalive

只谈情不闲聊 提交于 2021-02-12 09:18:51
最近遇到 grpc 客户端报错 rpc error: code = Unavailable desc = transport is closing ,原因是连接长时间没有使用,被服务端断开,这种情况通过简单粗暴的重试策略可以解决,更加优雅的解决方案是增加保持连接策略 服务端 var kaep = keepalive.EnforcementPolicy{ MinTime: 5 * time.Second, // If a client pings more than once every 5 seconds, terminate the connection PermitWithoutStream: true, // Allow pings even when there are no active streams } var kasp = keepalive.ServerParameters{ MaxConnectionIdle: 15 * time.Second, // If a client is idle for 15 seconds, send a GOAWAY MaxConnectionAge: 30 * time.Second, // If any connection is alive for more than 30 seconds, send a GOAWAY

通配符

和自甴很熟 提交于 2021-02-12 08:55:48
通配符 1. * 任意长度的任意字符(0,1,n) 2. ? 一位长度的任意字符 例子:删除/home下所有文件名第三个字符是a,第五个字符是c的文件 # rm -rf /home/??a?c* 3. 连接多个命令 ; 将连接的多个命令依次执行(前命令无论成功还是失败,后面的命令都正常执行) 例子:# cd /home/; cd /tmp/; pwd && 只有前面的命令正确执行,后面的命令才会执行(如果前面的执行失败,后面的就不执行了) 例子:# cd /home/ && cd /tmp/ && pwd || 只有前面的命令执行失败,后面的命令才会执行(如果前面的执行成功,后面的就不执行了) 条件1 && 条件2 真 && 真 = 真 真 && 假 = 假 4. # 注释行(描述信息,不会执行) 5. | 传递命令的执行结果 例子:统计echo输出结果中有几个字符 # echo "ls /etc" | wc -c 例子:将echo的结果传递给bash解释器 # echo "ls /etc" | bash 6. ~ 表示当前用户家目录 7. - 表示上次所在的目录 8. / 路径分隔符 /etc/sysconfig/network 9. $ 引用变量的值 例子: name="zx" <<< 定义变量 echo "$name" <<< 用$来获取变量中的值 10. > 和>>

golang grpc keepalive

折月煮酒 提交于 2021-02-12 05:43:52
最近遇到 grpc 客户端报错 rpc error: code = Unavailable desc = transport is closing ,原因是连接长时间没有使用,被服务端断开,这种情况通过简单粗暴的重试策略可以解决,更加优雅的解决方案是增加保持连接策略 服务端 var kaep = keepalive.EnforcementPolicy{ MinTime: 5 * time.Second, // If a client pings more than once every 5 seconds, terminate the connection PermitWithoutStream: true, // Allow pings even when there are no active streams } var kasp = keepalive.ServerParameters{ MaxConnectionIdle: 15 * time.Second, // If a client is idle for 15 seconds, send a GOAWAY MaxConnectionAge: 30 * time.Second, // If any connection is alive for more than 30 seconds, send a GOAWAY

django之contenttype

|▌冷眼眸甩不掉的悲伤 提交于 2021-02-12 05:37:27
1、contenttype:在django中将models.py文件的表结构写好后,通过makemigrations和migrate两条命令进行数据库迁移后,在数据库中会自动生成一个django_content_type表。 2、contenttype表的字段: id:id; app_label:新的model所对应的app应用名称; model:model的名称 即app应用中的model.py所对应的新增的表结构(类名)。 3、contenttype表的作用:每当我们创建了一个新的model并执行数据库迁移后,ContentType表中就会自动新增一条记录。比如我在应用api的models.py中创建表class Course(models.Model): pass。从数据库查看ContentType表会相应的增加一条数据 id:--, app_label:api, model:course。 4、应用场景:当出现一张表的数据要与多张表的数据关联的时候使用,   示例:现有两种课程(按不同标准收费的课程),每种课程对应多种收费方式,首先想到的是创建一张课程表,然后创建一张收费标准表让他们相关联,这种方法可行但存在缺陷; 表单创建: from django.db import models # 课程种类 轻课和学位课 class Course(models.Model): id

《操作系统真象还原》MBR

邮差的信 提交于 2021-02-12 05:21:53
  以下是读本书第三章的收获。   如何知道一个源程序的各符号(指令和变量)地址?简单来说,地址就是该符号偏移文件开头的距离,符号的地址是按顺序编排的,所以两个相邻的符号,其地址也是相邻的。对于指令来说,指令的地址=上一个指令的地址+上一个指令的大小,最初的符号地址为0,可以根据此公式推算出所有符号的地址。 section称为节,它是提供给程序员编排程序用的,我们可以将一段读取字符串的代码放在section A下,将读取硬盘的代码放进section B下,可以给A,B换成一个更具体的名字,来提高可读性。 例如,下图这段代码,将整个程序分成section code和section data两节,顾名思义,就是存放代码和数据的两个section,这样我们就很清楚地知道每部分代码是做什么用的。另一个值得注意的细节是section并不会对符号的编址用什么影响,去掉section和不去掉其实符号的地址都是一样的。 vstart用于告诉编译器,之后的符号都以某个地址为初始地址来编址。如下图,像$$的地址替换成以0x7c00为初始地址的地址,符号var1和var2的地址被替换成以0x900的地址。 当然,我们还可以通过section.节名称.start来获得在文件中真正的地址。如section.code.start值为0x0,即section code偏移文件的距离为0

Docker Alpine Linux 运行 Go 时区转换小坑

本秂侑毒 提交于 2021-02-12 04:02:48
好久不见 拖更王更新了,尴尬而不失礼貌的微笑 :) 感谢那些没有取关的朋友们!你们的坚持是对的! 正文 出于各种原因,总会有需要编写时区转换代码的时候,好巧不巧的,最近我刚好在做一个需求的时候就需要做时区转换。 呵,真巧(不踩坑,哪来这篇文章...)。 准备工作 下面通过简单的十来行代码给大家做个演示,如果你把代码拷贝到你本地运行,我相信都能够正常运行的。 // main.go package main import ( "fmt" "time" ) func main () { now := time.Now() fmt.Printf( "Time: %v, Location: %v\n" , now, now.Location()) shanghai, err := time.LoadLocation( "Asia/Shanghai" ) if err != nil { panic (err) } shanghaiNow := now.In(shanghai) fmt.Printf( "Time: %v, Location: %v\n" , shanghaiNow, shanghaiNow) } 正常运行的话,你大概能看见如下输出: Time: 2020-10-26 18:32:34.63303 +0800 CST m=+0.000066515, Location: Local

2021-02-11:如何求出两个字符串的最大公共子序列长度?

社会主义新天地 提交于 2021-02-12 00:16:21
福哥答案2021-02-11: 举例:"moonfudadayx"和"mfyudadxxax",最大公共子序列是"mfudadax",长度是8。 自然智慧即可。 1.递归。有代码。 三种情况。右移 右移;右移 不移;不移 右移。 2.动态规划。有代码。 dp[i][j]依赖左边,上边,左上边。 ①.如果str1[i]==str2[j],dp[i][j]=【左上边】+1。 ②.如果str1[i]!=str2[j],dp[i][j]=max(【左边】,【上边】)。 代码用golang编写,代码如下: package main import "fmt" func main() { str1 := "moonfudadayx" str2 := "mfyudadxxax" ret := longestCommonSubsequence1(str1, str2) fmt.Println("递归:", ret) ret = longestCommonSubsequence2(str1, str2) fmt.Println("动态规划:", ret) } //递归 func longestCommonSubsequence1(s1 string, s2 string) int { if len(s1) == 0 || len(s2) == 0 { return 0 } return