自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 学校学生心理测评系统

这款系统,是和北大合作开发,并真实用于线上测评场景,该项目有完整后台,以及学生管理等模块。请联系我们 silver_spider@163.com项目从心理测评任务作答到结果查看这一实际场景出发,根据不同类型试题之间的作答操作差异展开功能设计,如:单选类试题作答、多选类试题作答、开放题类试题作答等。同时针对整个作答流程设计了一整套的功能模块,如:查看历史任务结果、查看当前任务结果等。技术栈方面,项目整体采用搭建,路由采用的Hash模式开发。项目兼容移动端展示和操作。

2023-03-11 10:25:49 569 1

原创 Golang 版轻量类 GraphQL 组件

Golang 版轻量 GraphQL为什么使用GraphQL?在实际工作中往往会有这种情景出现:比如说我需要展示一个游戏名的列表,可接口却会把游戏的详细玩法,更新时间,创建者等各种各样的 (无用的) 信息都一同返回。特别是业务类微服务直接交互使用更为方便。为什么选择 amoeba非常轻量、简单、性能好。无需冗余大量配置,无复杂规则,但满足业务需求。原理对接口输入输出的 JSON 依赖规则,进行,该规则利用了JSON Schema特性。规则可以依赖各种配置。本机转发,原接口保持不变,无需修改代码

2020-10-13 14:48:46 422

原创 Golang 规则引擎

Golang 规则引擎,适用于大多数需要逻辑表达式场景,简小有效。支持类型: int string支持操作符: > < >= <= && ||支持两个内嵌函数: in_array(1, []int{1,2,3,4}), ver_compare(x, “>”, “10.1.1”)使用简单:engine, err := NewEngine(v.expr)if err != nil {t.Error(err)}result, err := engin

2020-06-09 11:44:02 2242

原创 模块独立进行测试或验证

是否可以独立模块进行测试如播放器和RN交互的具体功能,独立出来,生产DEMO进行验证。

2019-08-20 14:17:48 538

原创 Git 操作

回滚 Mergegit revert cae5381 -m 1https://juejin.im/post/5acf4db8f265da239148822d撤销提交git reset --soft HEAD^https://www.cnblogs.com/lfxiao/p/9378763.html

2019-07-19 16:12:43 100

原创 技术踩坑历史

踩坑历史记录

2019-07-16 16:04:16 97

原创 后端业务架构

服务中台化服务边界与职责RPC调用

2019-07-09 22:51:55 741

原创 SHELL便利贴

将schedule.txt每行后面插入计划时间,本计划是每周执行四行知识点:shell 数字对比需要用[ -eq ] 且注意[]和左右数字一定要有空格${x} 来进行划定范围,不要使用()declare -i 来显性声明类型while read line 也可以使用awk来替代(()) 来进行计算。输出转义字符原意时,要用 echo -e#/bin/bashdeclare -...

2019-05-05 09:41:39 630

翻译 Golang 内存泄漏场景

虽然Golang 的runtime 会回收内存,但是本文列举的场景仍然会造成内存泄漏。substrings 使用不当造成内存泄漏TODO 此处需要了解下golang 的底层 memory block 分配知识var s0 string // 包级别变量// A demo purpose function.func f(s1 string) { s0 = s1[:50] //s0 和...

2019-05-01 23:41:27 5749

原创 golang channel 要点

本文的代码基于 golang 1.8.3channel 的日常生活为了把channel解释的更易懂,我们虚拟一个家庭,家里有爸爸、妈妈和三个孩子,他们喜欢吃苹果,也喜欢睡觉。爸爸削苹果给孩子们吃:同步模型:爸爸削完,双手被占着,什么也干不了,只能停下来什么等孩子把苹果拿走,他一停下来,就是去睡觉了。异步模型:爸爸削完苹果,放盘子里,然后去干其他工作了,孩子从盘子里拿着吃。但是如果盘子被放...

2019-03-26 15:45:22 296

原创 业务安全问题及应对

以下都是亲身经历过的安全场景:CDN 被盗用,直接使用CDN上OSS来进行播放音频用户账号被撞库导致大量用户账号丢失

2019-03-21 10:13:52 643

原创 算法之哨兵和表驱动

看到他人有如下代码片段,可以使用哨兵和表驱动进行优化 uint32_t PbInt64Size(int64_t value) { if ((value &amp; (0xffffffffffffffffL &lt;&lt; 7)) == 0) { return 1; } else if ((value &amp; (0xfffffff...

2019-02-25 14:20:42 280

翻译 Pointer 和 Non-Poiner 方法 区别

在Go里,receiver是定义在某个结构体上的,定义后,可以像方法一样调用它。例如,下面代码中的 func(d Dog)package mainimport &amp;amp;quot;fmt&amp;amp;quot;type Dog struct {}func (d Dog) Say() { fmt.Println(&amp;amp;quot;Woof!&amp;amp;quot;)}func main() { d := &

2019-01-26 21:49:15 946 1

翻译 Golang Receiver 和 函数参数的区别

我们来比较下面两种方式https://grisha.org/blog/2016/09/22/golang-receiver-vs-function/func (d *duck) quack() { // receiver // do something}func quack(d *duck) { // funciton argument // do something...

2019-01-25 08:50:31 2248

翻译 Golang 接口 & 指针

如 http.Handler 接口,有个困惑,为什么 第一个参数是value类型,第二个参数是指针类型呢?type Handler interface { ServeHTTP(ResponseWriter, *Request)}Go里一切传递,都是传值,即便是指针。其实指针是一种特殊的类型包含了地址的值。更进一步的发现,ResponseWriter 是接口类型。type...

2019-01-24 00:19:20 2910 1

原创 Golang map 顺序问题?

举例 map 如下,由于golang map内部存储机制是以key为hash的结构来实现,所以顺序是混乱的。fruits := map[string] int { "oranges": 100, "apples": 200, "banans": 300,}如果希望是有顺序的,可以把 key 转移至 slice,将slice 进行排序,然后输出:// Put th...

2019-01-22 22:57:06 5150 2

原创 如何使用Go实现一个Stack和Queue?

可以使用 slice 实现如下:type Stack [] intfunc (s Stack) Empty() bool{return len(s) == 0}func (s *Stack) Push(v int) { *s = append(*s, v)}func (s *Stack)Pop() int { v := (*s)[len(*s) - 1] *s = (*s)[:...

2019-01-21 23:27:02 247

原创 Golang 代码找错

下面的代码是哪里有问题?type Orange struct { Quantity int}func (o *Orange) Increase(n int) { o.Quantity += n}func (o *Orange) Decrease(n int) { o.Quantity -= n}func (o *Orange) String() string { ret...

2019-01-20 23:25:01 137

原创 如何对比两个structs,或者两个interfaces?

我们可以使用 == 对比结构体,但是一定要确保结构体里没有包含slices,maps,或者functions,这些情况下是不会被比较的。type Foo struct { A int B string C interface{}}a := Foo{A: 1, B: "one", C: "two"}b := Foo{A: 1, B: "one", C: "t...

2019-01-19 09:24:06 852

原创 如何复制slice,map,interface

在Golang 里,可以使用内嵌的copy函数:a := []int{1,2}b := []int{3,4}check := acopy(a, b)fmt.println(a, b, check)// Output: [3 4] [3 4] [3 4]下面的例子,和上面的例子刚好可以作为一个对比。其中等号并不复制切片的内容,只是复制了切片的引用。a := [] int{1, 2}...

2019-01-18 08:36:53 445

原创 Golang 值交换

Golang 有内嵌的值交换操作两个值可以方便的如下交换:a, b = b, a三个值同样可以如下交换a, b, c = b, c, aGolang 里两个值交换的操作是依赖于等号表达式的副作用,原理是将要被赋值的值,会被存储在临时变量里,所以下例子赋值顺序对结果是无影响的,其结果仍然是 a = 2, b = 1。 a := 1; b := 2; a, b, a = b, a, b...

2019-01-17 08:52:36 2993 1

原创 Golang空结构体struct{}用途,你知晓么?

golang 空结构体 struct{} 可以用来节省内存a := struct{}{}println(unsafe.Sizeof(a))// Output: 0理由如下:如果使用的是map,而且map又很长,通常会节省不少资源空struct{}也在向别人表明,这里并不需要一个值本例说明在map里节省资源的用途:set := make(map[string]struct{})...

2019-01-16 09:08:34 15648

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除