Syzq

A blog that you won't read.


  • 首页

  • 分类

  • 归档

  • 标签

  • 关于

  • 搜索

Beego 高级查询

发表于 2019-03-31
基本用法ORM 以 QuerySeter 来组织查询,每个返回 QuerySeter 的方法都会获得一个新的 QuerySeter 对象。 基本使用方法: 12345678o := orm.NewOrm()// 获取 QuerySeter 对象,user 为表名qs := o.QueryTable("user")// 也可以直接使用对象作为表名user := new(User)qs = o.QueryTable(user) // 返回 QuerySeter exprQuerySeter 中用于描述字段和 sql 操作符,使用简单的 expr 查询方法 字段组合的前后顺序依照表的关系,比如 User 表拥有 Profile 的外键,那么对 User 表查询对应的 Profile.Age 为条件,则使用 Profile__Age 注意,字段的分隔符号使用双下划线 __,除了描述字段,expr ...
阅读全文 »

Grid 布局

发表于 2019-03-28 | 分类于 HTML(5)和CSS(3)
容器属性display 属性display: grid指定一个容器采用网格布局。 123div { display: grid;} 默认情况下,容器元素都是块级元素,但也可以设成行内元素。 123div { display: inline-grid;} 注意,设为网格布局以后,容器的float、display: inline-block、display: table-cell、vertical-align和column-*等设置都将失效。 grid-template-columns,grid-template-rows 属性容器指定了网格布局以后,接着就要划分行和列。 grid-template-columns属性定义每一列的列宽。 grid-template-rows属性定义每一行的行高。 12345.container { dis ...
阅读全文 »

Gin 基础

发表于 2019-01-04 | 分类于 hello world 系列
Hello World12# 安装$ go get github.com/gin-gonic/gin 123456789101112131415161718192021222324package mainimport ( "github.com/gin-gonic/gin" "net/http")func main() { // 初始化引擎 engine := gin.Default() // 注册一个路由和处理函数 engine.Any("/", WebRoot) // 绑定端口,然后启动应用 engine.Run(":9205")}/*** 根请求处理函数* 所有本次请求相关的方法都在 context 中,完美* 输出响应 hello, world*/func WebRoot(context *gin.Context) { context.String(h ...
阅读全文 »

Shell 基础

发表于 2019-01-02 | 分类于 零碎笔记
开始第一行1#! /bin/bash 它代表的意思是,该文件使用的是bash语法。 默认我们用vim编辑的文档是不带有执行权限的,所以需要加一个执行权限chmod1chmod +x test.sh 使用sh命令去执行一个shell脚本的时候是可以加-x选项来查看这个脚本执行过程:sh -x test.sh shell 脚本中的变量123456d=`date "+%Y-%m-%d %H:%M:%S"`echo "this script begin at $d"echo "we will sleep 2 seconds."sleep 2d1=`date "+%Y-%m-%d %H:%M:%S"`echo "the script end at $d1" 上述脚本中d 和d1作为变量出现,格式为:变量名=变量的值。使用变量时需要加上 “$” 符号。 执行结果: 123this script beg ...
阅读全文 »

【转】向恐龙解释现代JavaScript

发表于 2018-10-24 | 分类于 前端杂烩
本文的目的是提供JavaScript工具是如何一步步发展到今天(2017年)的一个历史背景。我们将从零开始,构建一个不借助任何工具,只需要简单的HTML和JavaScript的示例网站。接着我们将依次引入不同的工具,并解释它解决了什么样的问题。有了这种历史背景,你将能更好地学习和适应未来不断变化的JavaScript格局。让我们开始吧! JavaScript的”老派”使用方式让我们从一个只使用HTML和JavaScript的“老派(old-school)”网站开始,它需要我们手动地下载和链接文件。这里是一个简单的’index.html 文件,并链接了一个 JavaScript 文件: 123456789101112<!-- index.html --><!DOCTYPE html><html lang="en"><head> <me ...
阅读全文 »

The Way to Go(十)

发表于 2018-09-27 | 分类于 The Way to Go
注意事项误用字符串当需要对一个字符串进行频繁的操作时,谨记在 go 语言中字符串是不可变的(类似 java 和 c#)。使用诸如 a += b 形式连接字符串效率低下,尤其在一个循环内部使用这种形式。这会导致大量的内存开销和拷贝。应该使用一个字符数组代替字符串,将字符串内容写入一个缓存中。 例如以下的代码示例: 123456var b bytes.Buffer...for condition { b.WriteString(str) // 将字符串str写入缓存buffer} return b.String() 注意:由于编译优化和依赖于使用缓存操作的字符串大小,当循环次数大于15时,效率才会更佳。 发生错误时使用defer关闭一个文件如果你在一个 for 循环内部处理一系列文件,你需要使用 defer 确保文件在处理完毕后被关闭,例如: 123456789 ...
阅读全文 »

The Way to Go(九)

发表于 2018-09-15 | 分类于 The Way to Go
web 应用tcp 服务器一个(web)服务器应用需要响应众多客户端的并发请求:go 会为每一个客户端产生一个协程用来处理请求。我们需要使用 net 包中网络通信的功能。它包含了用于 TCP/IP 以及 UDP 协议、域名解析等方法。 服务器代码,单独的一个文件:123456789101112131415161718192021222324252627282930313233343536373839// server.gopackage mainimport ( "fmt" "net")func main() { fmt.Println("Starting the server ...") // 创建 listener listener, err := net.Listen("tcp", "localhost:50000") if err != ...
阅读全文 »

The Way to Go(八)

发表于 2018-09-10 | 分类于 The Way to Go
协程(goroutine)与通道(channel)什么是协程一个应用程序是运行在机器上的一个进程;进程是一个运行在自己内存地址空间里的独立执行体。一个进程由一个或多个操作系统线程组成,这些线程其实是共享同一个内存地址空间的一起工作的执行体。几乎所有’正式’的程序都是多线程的,以便让用户或计算机不必等待,或者能够同时服务多个请求(如 Web 服务器),或增加性能和吞吐量。一个并发程序可以在一个处理器或者内核上使用多个线程来执行任务,但是只有同一个程序在某个时间点同时运行在多核或者多处理器上才是真正的并行。 并行是一种通过使用多处理器以提高速度的能力。所以并发程序可以是并行的,也可以不是。 公认的,使用多线程的应用难以做到准确,最主要的问题是内存中的数据共享,它们会被多线程以无法预知的方式进行操作,导致一些无法重现或者随机的结果(称作 竞态)。 不要使用全局变量或者共享内存,它们会给你的代码在 ...
阅读全文 »

The Way to Go(七)

发表于 2018-06-15 | 分类于 The Way to Go
错误处理与测试Go 没有像 Java 和 .NET 那样的 try/catch 异常机制:不能执行抛异常操作。但是有一套 defer-panic-and-recover 机制。 Go 的设计者觉得 try/catch 机制的使用太泛滥了,而且从底层向更高的层级抛异常太耗费资源。他们给 Go 设计的机制也可以 “捕捉” 异常,但是更轻量,并且只应该作为(处理错误的)最后的手段。 Go 检查和报告错误条件的惯有方式: 产生错误的函数会返回两个变量,一个值和一个错误码;如果后者是 nil 就是成功,非 nil就是发生了错误。 为了防止发生错误时正在执行的函数(如果有必要的话甚至会是整个程序)被中止,在调用函数后必须检查错误。 错误处理Go 有一个预先定义的 error 接口类型 123type error interface { Error() string} ...
阅读全文 »

The Way to Go(六)

发表于 2018-06-04 | 分类于 The Way to Go
读写数据读取用户的输入从键盘和标准输入 os.Stdin 读取输入,最简单的办法是使用fmt 包提供的Scan 和Sscan 开头的函数。请看以下程序: 123456789101112131415161718192021// 从控制台读取输入:package mainimport "fmt"var ( firstName, lastName, s string i int f float32 input = "56.12 / 5212 / Go" format = "%f / %d / %s")func main() { fmt.Println("Please enter your full name: ") fmt.Scanln(&firstName, &lastName) // fmt.Scanf("%s %s", &f ...
阅读全文 »
12…8
思齐

思齐

思与之齐

76 日志
13 分类
40 标签
GitHub 微博 S F 知乎
© 2016 - 2019 思齐
0%