
培训
文章平均质量分 76
培训
PJJ彭彭彭
这个作者很懒,什么都没留下…
展开
-
golang创建动态二维数组
搜了一圈也没看到我想要的,下面附上代码:package mainimport ( "fmt")func main() { n := 2 m := 3 //动态创建二维数组 grid := make([][]int, n) for i := 0; i < n; i++ { grid[i] = make([]int, m) } /* 000 000 */ for i := 0; i < n; i++ { for j := 0; j < m;原创 2020-07-17 13:01:35 · 7990 阅读 · 2 评论 -
npm发布nodejs包
具体操作可以看这个链接:https://blog.youkuaiyun.com/qq_27053493/article/details/96472809接下来说几个可能会发生的错误1.npm ERR! 403 403 Forbidden - PUT http://registry.npmjs.org/my_module_for_test - You do not have permission to publish "my_module_for_test".说明package.json中登记的name已近被原创 2020-07-12 14:07:37 · 417 阅读 · 0 评论 -
Ubuntu使用git安装nvm
转载:https://blog.youkuaiyun.com/geol200709/article/details/82117103转载 2020-07-06 11:31:15 · 622 阅读 · 0 评论 -
protobuf官方中文文档
https://www.jianshu.com/p/4443c28d4bf7转载 2020-06-27 00:03:32 · 6502 阅读 · 0 评论 -
Linux中使用twirp搭建rpc框架
1.安装protobuf-compiler执行apt-get update命令时因为使用的是官方源,速度会慢,而且有的包会下载不全,建议先把源换成国内的源,我用的是网易的,体验很不错换源操作:https://www.cnblogs.com/webnote/p/5767853.html然后使用以下两条命令sudo apt-get updatesudo apt install protobuf-compiler2.安装go环境...原创 2020-06-12 16:12:15 · 502 阅读 · 0 评论 -
go get -u github.com/速度太慢,没反应的问题解决了
先执行以下命令换代理go env -w GO111MODULE=ongo env -w GOPROXY=https://goproxy.io,direct再执行go get -u github.com/golang/protobuf/protoc-gen-go成功下载转载于:https://blog.youkuaiyun.com/qq_35941092/article/details/104986253?utm_medium=distribute.pc_relevant.none-task.原创 2020-06-11 15:20:22 · 2991 阅读 · 0 评论 -
gqlgen学习总结
1.要有go.mod和go.sum这两个文件才能去执行go run github.com/99designs/gqlgen去更新generated.go和models_gen.go,在没有这两个文件的时候去执行该命令,会把generated.go文件删除2.要执行了go mod init github.com/[username]/[project]才能生成go.mod3.要执行了go get github.com/99designs/gqlgen才能生成go.sum4.在generated.g原创 2020-06-10 23:26:08 · 1867 阅读 · 0 评论 -
40个flutter入门实例详解(七)
35.监听滚动事件class ScrollControllerTestRoute extends StatefulWidget { @override ScrollControllerTestRouteState createState() { return new ScrollControllerTestRouteState(); }}class ScrollControllerTestRouteState extends State<ScrollController原创 2020-06-07 14:23:32 · 561 阅读 · 0 评论 -
40个flutter入门实例详解(六)
29.旋转import 'dart:math' as math;DecoratedBox( decoration:BoxDecoration(color: Colors.red), child: Transform.rotate( //顺时针旋转90度 angle: math.pi/2, child: Text("Hello world"), ), )效果:30.缩放原创 2020-06-06 16:20:17 · 451 阅读 · 0 评论 -
40个flutter入门实例详解(五)
21.流式布局Wrap( spacing: 8.0, // 主轴(水平)方向间距 runSpacing: 4.0, // 纵轴(垂直)方向间距 alignment: WrapAlignment.center, //沿主轴方向居中 children: <Widget>[ new Chip( //avatar: new CircleAvatar(backgroundColor: Colo原创 2020-06-06 14:12:00 · 379 阅读 · 0 评论 -
40个flutter入门实例详解(四)
17.表单class FormTestRoute extends StatefulWidget { @override _FormTestRouteState createState() => new _FormTestRouteState();}class _FormTestRouteState extends State<FormTestRoute> { //文本框的控制器,通过它可以设置/获取编辑框的内容、选择编辑内容、监听编辑文本改变事件 TextEdi原创 2020-06-06 11:44:14 · 431 阅读 · 0 评论 -
40个flutter入门实例详解(三)
8.父Widget管理子Widget的状态class ParentWidget extends StatefulWidget { @override _ParentWidgetState createState() => new _ParentWidgetState();}class _ParentWidgetState extends State<ParentWidget> { //state的数据 bool _active = false; void原创 2020-06-05 20:17:02 · 305 阅读 · 0 评论 -
40个flutter入门实例详解(二)
3.页面的切换跳转class RouterTestRoute extends StatelessWidget { @override Widget build(BuildContext context) { return Center( child: RaisedButton( onPressed: () async { // 异步执行转为同步执行,必须等待结果返回后才往下执行 var result = await N原创 2020-06-05 16:08:32 · 342 阅读 · 0 评论 -
40个flutter入门实例详解(一)
1.计数器实例//导入Material UI组件库import 'package:flutter/material.dart';//import 'package:english_words/english_words.dart';//应用程序的入口runApp方法,启动flutter项目,runApp接收一个Widget参数void main() { runApp(MyApp());}//根组件,继承了StatelessWidget类class MyApp extends Stat原创 2020-06-05 14:12:14 · 1295 阅读 · 0 评论 -
react hook学习总结
1.使用useState来代替react中的this.state和this.setStateconst [count, setCount] = useState(0);把0赋值给count变量,可以用{count}调用变量,可以用setCount改变count变量的值2.useEffect用来等代替原来的生命周期:componentDidMount(第一次渲染后调用)、componentDidUpdate(第二次以后渲染后调用)、componentWillUnmount(组件卸载后调用)原创 2020-06-03 16:28:14 · 345 阅读 · 0 评论 -
react学习总结
1.如果通过CDN方式引入React,建议设置crossorigin属性,可以有更好的错误处理体验<script crossorigin src="..."></script>2.JSX可以防注入攻击3.JSX就是用<></>或</>来代表元素,底层其实也是调用了createElement4.大多数 React 应用只会调用一次 ReactDOM.render()5.组件有两种形式:函数组件和class组件functio原创 2020-06-02 22:17:36 · 310 阅读 · 0 评论 -
typescript学习总结
1.typescript文件后缀是.ts,需要执行tsc命令编译为.js文件,再使用node命令执行.js文件2.tsc命令的安装可以使用yarn global add tsc,再将yarn依赖安装的全局路径写入环境变量,就可以使用了3.typescript的变量声明:var/const 变量名:类型=值4.typescript的类型:string字符串、number整数或浮点数、any任何类型、boolean布尔类型、any[]数组、[number,string]元组、void无返回值、nev原创 2020-06-02 14:38:54 · 429 阅读 · 0 评论 -
nodejs学习总结
1.yarn全局安装依赖(可以直接在命令行使用)yarn global add 依赖名//将会安装到全局路径2.yarn本地安装依赖yarn add 依赖名//会在node_modules文件夹下加入依赖3.yarn初始化一个项目,生成package.jsonyarn init4.yarn安装项目全部依赖yarn或yarn install5.yarn 安装包依赖时候的 `devDependencies` 和 `dependencies` 的区别是什么devDep原创 2020-05-31 01:39:21 · 487 阅读 · 0 评论 -
vscode搭建环境创建flutter项目
1.下载vscode(自行下载)2.在vscode的应用商店中安装flutter插件和dart插件(在应用商店搜索框搜索即可)3.下载android studio4.下载flutter sdk下载地址: https://flutter.dev/docs/development/tools/sdk/releases ,拼接到用户变量Path的后面(记得加分号;)就可以使用flutter命令了,比如我的是:D:\flutter\flutter\bin运行 flutter doctor命原创 2020-05-29 22:21:22 · 1797 阅读 · 0 评论 -
HTTP Headers在twirp框架中的使用
1.可以在客户端设置发送带有HTTP Headers的requestfunc main() { client := haberdasher.NewHaberdasherProtobufClient("http://localhost:8080", &http.Client{}) header := make(http.Header) header.Set("Twitch-Authorization", "uDRlDxQYbFVXarBvmTncBoWKcZKqrZTY") header原创 2020-05-28 16:07:20 · 306 阅读 · 0 评论 -
Windows中使用twirp搭建rpc框架
1.安装protobuf complier链接:https://pan.baidu.com/s/1HcCTttxZHJYopu-YwUl6PQ 提取码:3rub把下载好的protoc.exe文件放到你的$GOPATH/bin下,并且保证你的$GOPATH/bin目录已经导入到环境变量中2.安装protoc-gen-go到https://github.com/golang/protobuf 把库文件克隆下来,再执行下面的命令生成protoc-gen-go.exe到$GOPATH/bin中原创 2020-05-28 12:33:00 · 664 阅读 · 0 评论 -
gorm学习总结(四)
58.一对一type User struct { gorm.Model Profile Profile ProfileID int}type Profile struct { gorm.Model Name string}db.Model(&user).Related(&profile)// SELECT * FROM profiles WHERE id = 111; // 111是user的外键ProfileID61.一对多// .原创 2020-05-27 15:37:02 · 313 阅读 · 0 评论 -
gorm学习总结(三)
42.Scopes的使用(将当前数据库连接传递到func(*DB) *DB,可以用于动态添加条件)func AmountGreaterThan1000(db *gorm.DB) *gorm.DB { return db.Where("amount > ?", 1000)}func PaidWithCreditCard(db *gorm.DB) *gorm.DB { return db.Where("pay_mode_sign = ?", "C")}db.Scopes(A原创 2020-05-27 14:02:37 · 1017 阅读 · 1 评论 -
gorm学习总结(二)
19.获取第一条记录,按主键排序var user Userdb.First(&user)fmt.Println(user)20.获取最后一条记录,按主键排序db.Last(&user)21.获取所有记录var users []Userdb.Find(&users)fmt.Println(users)22.使用主键获取记录(id=10)db.First(&user, 10)23.获取第一个匹配记录db.Where("name原创 2020-05-27 02:49:16 · 953 阅读 · 0 评论 -
gorm学习总结(一)
1.安装go get -u github.com/jinzhu/gorm2.连接数据库(以Mysql为例)import ( "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/mysql")func main() { db, err := gorm.Open("mysql", "user:password@/dbname?charset=utf8&parseTime=True&loc原创 2020-05-27 02:07:07 · 996 阅读 · 0 评论 -
使用gqlgen搭建GraphQL服务器
1.创建项目创建gqlgen-todos目录切换到gqlgen-todos目录执行以下命令:go mod init github.com/[username]/gqlgen-todosgo get github.com/99designs/gqlgen2.搭建服务器创建项目骨架,执行以下命令:go run github.com/99designs/gqlgen init命令执行完后,项目骨架结构如下:├── go.mod├── go.sum├── gqlgen.ym原创 2020-05-26 00:29:31 · 721 阅读 · 0 评论 -
GraphQL基础教程
1.字段的使用query Hero{ hero { name }}分析:name是hero字段的字段,由于GraphQL的查询与其结果是一致的,所以可以通过改变字段来改变想查询的结果2.参数的使用query Human{ human(id: "1000") { name height }}分析:通过传入参数进行条件查询3.别名的使用query Hero{ empireHero: hero(id: "1") { name原创 2020-05-25 14:32:06 · 664 阅读 · 0 评论 -
golang中os包常用的api
1.func Getwd() (pwd string, err error)//返回命令执行的当前目录dir, _ := os.Getwd()fmt.Println(dir)//C:\Users\Administrator\go\src\testgo\test\test2.func Exit(code int)//中断函数fmt.Println("这个是匿名函数")os.Exit(1) //exit status 13.func Hostname() (name string,原创 2020-05-25 01:05:39 · 426 阅读 · 0 评论 -
golang中strconv包常用的api
1.func Atoi(s string) (i int, err error)//string->intnum, _ := strconv.Atoi("123")fmt.Println(num)//1232.func Itoa(i int) string//int->stringstr := strconv.Itoa(123)fmt.Println(str)//"123"3.func ParseFloat(s string, bitSize int) (f floa原创 2020-05-25 00:39:46 · 253 阅读 · 0 评论 -
golang中的math包常用的api
1.funcAbs(xfloat64)float64//求绝对值fmt.Println(math.Abs(-1.11))//1.112.funcPow(x,yfloat64)float64//求x的n次方fmt.Println(math.Pow(2, 16))//655363.funcSqrt(xfloat64)float64//取x的开平方fmt.Println(math.Sqrt(64))//84.funcCbrt(xfloat64)floa...原创 2020-05-25 00:19:13 · 395 阅读 · 0 评论 -
golang中bufio包常用的api
1.func Peek(n int)([]byte,Error){}//返回一个Reader对象s := strings.NewReader("hello world")//对Reader对象进行封装,返回一个带bufio缓冲的Reader对象br := bufio.NewReader(s)//返回前5个元素的字节的切片b, _ := br.Peek(5)b[0] = 'a'b, _ = br.Peek(5)fmt.Println(b)//[97 101 108 108 111]2原创 2020-05-24 23:22:07 · 648 阅读 · 0 评论 -
golang中strings包常用的api
1.strings.HasPrefix(s string, prefix string) bool:判断字符串s是否以prefix开头str := "Hello World"fmt.Println(strings.HasPrefix(str, "He")) //true2.strings.HasSuffix(s string, suffix string) bool:判断字符串s是否以suffix结尾str := "Hello World"fmt.Println(strings.HasS原创 2020-05-24 17:28:34 · 463 阅读 · 0 评论 -
golang练手项目之聊天室
client.gopackage mainimport ( "bufio" "fmt" "net" "os")//让用户能后续输入数据func scandata(conn net.Conn) { //for{}死循环保证用户不止能输入一次数据 for { //使用bufio包结合缓冲区获取输入,可以使输入不受空格的影响 inputReader := bufio.NewReader(os.Stdin) buf, _, _ := inputReader.ReadLine原创 2020-05-24 16:11:19 · 512 阅读 · 0 评论 -
golang入门实例分析(五)
28.并发的简单使用import ( "fmt" "time")func say(str string){ for i:=0;i<5;i++{ time.Sleep(1000*time.Millisecond) fmt.Println(str) }}func main() { go say("f1") say("f2")}29.不带缓冲的通道func sum(s []int, c chan int) { sum := 0 for _, v := ran原创 2020-05-22 23:07:32 · 525 阅读 · 0 评论 -
golang入门实例分析(四)
20.截断数组时,slice切片中的len()、cap()的变化func main() { var arr = [5]int{1, 2, 3, 4, 5} s1 := arr[:] s2 := arr[1:] s3 := arr[:3] s4 := arr[1:3] s5 := make([]int, 3, 5) printSlice(s1) //5 5 [1 2 3 4 5] printSlice(s2) //4 4 [2 3 4 5] printSlice(s3) //3 5 [原创 2020-05-22 22:04:07 · 258 阅读 · 0 评论 -
golang入门实例分析(三)
13.数组的使用func main() { var arr = [5]int{1, 2, 3, 4, 5} for i := 0; i < 5; i++ { fmt.Println(arr[i]) }}14.多维数组的使用func main() { var arr = [2][2]int{{1, 2}, {3, 4}} for i := 0; i < 2; i++ { for j := 0; j < 2; j++ { fmt.Print(arr[i原创 2020-05-22 16:49:27 · 232 阅读 · 0 评论 -
golang入门实例分析(二)
7.{}的使用//正确用法if(){}//错误用法if(){}8.输入数据函数fmt.Scan(&s)9.golang没有while10.switch的两种用法func main() { var grade string = "B" var mark int = 90 switch mark { case 90: grade = "A" fallthrough case 80, 91: grade = "B" case 70:原创 2020-05-22 15:36:09 · 288 阅读 · 0 评论 -
golang入门实例分析(一)
1.导入不同文件夹下的函数--文件结构test--test.gomath--math1.go//test.gopackage mainimport ( "fmt" mathClass "testgo/math")func main() { fmt.Println("Hello World") fmt.Println(mathClass.Add(1, 2))}//math1.gopackage mathClassfunc Add(x,y int) int {原创 2020-05-22 14:31:49 · 375 阅读 · 0 评论 -
vscode+golang环境搭建
1.下载vscode,不需要做什么配置,一路next即可2.打开vscode,点击左侧的[扩展],即从上到下的第五个图标3.在搜索框中输入go,下载go插件4.下载完成后,使用快捷键ctrl+shift+p,在搜索框中输入go:install/Update Tools,选中全部选项5.慢慢等待全部Tools下载完成即可6.下载完成后,可以自己创建一个test.go,通过命令go run test.go去测试是否成功安装...原创 2020-05-22 12:31:22 · 493 阅读 · 0 评论 -
Git常用命令讲解
1.如何用命令行创建一个新的 git 项目?git init分析:该命令是在本地创建一个master分支的git项目2.如何将一个远程仓库拉到本地?git clone git@github.com:PJJ1997/testgit.git分析:PJJ1997是该仓库创建者的用户名,testgit是仓库名3.如何创建一个新的分支?如何切换到一个分支?git branch devgit checkout dev分析:创建dev分支,切换到dev分支4.git statu原创 2020-05-22 02:00:27 · 197 阅读 · 0 评论