SQL 转义问题是指执行的 SQL 语句中包含了某些特定的字符,如单引号 '
、反斜杠 \
等,导致 SQL 语句不能正常执行。所以,我们应该在拼接 SQL 语句的过程中对特别的传入参数进行转义。
环境信息:
- MySQL 8.0.28;
- Go 1.16.9 windows/amd64
SQL 转义问题是指执行的 SQL 语句中包含了某些特定的字符,如单引号 '
、反斜杠 \
等,导致 SQL 语句不能正常执行。所以,我们应该在拼接 SQL 语句的过程中对特别的传入参数进行转义。
环境信息:
在回忆管道方向的语法上时不时地会出错,所以搜罗一些资料以加强自身的记忆。
当发送给数据库的语句过大时,会报如下错误:
panic: Error 1105: Parameter of prepared statement which is set through mysql_send_long_data() is longer than 'max_allowed_packet' bytes
从报错中可知,需要修改 max_allowed_packet
选项的值。
Go 中 map 是键值对的关联容器(Associative Container),可以存储不同类型的键值对,其中键的类型需要满足可比较(==)特性。
面试的时候问到了一个关于 go Slice 的问题,即为什么在 a[i:]
中 i
的取值可以是 a
的长度。平时开发中也是这么用的,但没太深入的了解,所以在这篇文章中对其进行一些探讨。
在 Windows 下,Go 的 os
标准库提供的 Rename
方法不能跨磁盘移动文件。下面通过问题重现,提供两种解决方案。
从网络上下载文件是开发过程中常用的需求,常规流程是:(1)发送请求;(2)接收响应并读取响应体内容;(3)保存到本地文件。本文包含的两个例子分别来自于参考 [1] 和参考 [2],在此基础上做了少量的修改。
在 Web 开发中,常常需要对请求信息进行记录,形成日志以便于后期评估应用的性能。请求信息通常包含客户端地址、请求的 URL、请求时间及请求执行时间。在程序中,可以以同步或异步的方式完成这一需求。同步方式是指请求信息写入日志文件后才返回数据给客户端,异步方式则是在返回数据之前以新线程或进程完成对请求信息的记录。开源的日志包有:
5 个日志包的详细介绍可以看《5 种结构化 Go 日志包对比分析》这篇文章。
首先贴上 Go 开发团队对 reflect 包的描述:
Package reflect implements run-time reflection, allowing a program to manipulate objects with arbitrary types. The typical use is to take a value with static type interface{} and extract its dynamic type information by calling TypeOf, which returns a Type.
A call to ValueOf returns a Value representing the run-time data. Zero takes a Type and returns a Value representing a zero value for that type.
从描述中,我们得到以下几点:
有幸搞了个 CSIG 的线上面试,感觉是“没什么感觉”,一般般吧,没过。
前面介绍什么就不说了,我这边没突出什么工作亮点,然后就直接共享桌面写代码了。题目是编程实现一个由字符串数组表示的大数的除以 9 的计算,后面又追问了小数点后值如何保存,所以索性在线下实现也写了写。