V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  MoYi123  ›  全部回复第 8 页 / 共 17 页
回复总数  329
1  2  3  4  5  6  7  8  9  10 ... 17  
2022-07-05 16:55:51 +08:00
回复了 Soar360 创建的主题 数据库 强大的多列 IN 查询语句,及数据库支持情况。
把大伙叫出来就这点事啊.
2022-07-01 16:37:58 +08:00
回复了 lix7 创建的主题 Go 编程语言 请教大家几个 Go 写业务的工程实践的上的问题
1. 比如 xorm 有个 setlogger 的功能, 需要把你的 logger 按他的 interface 封装一下, 就可以接入统一的日志了, grpc 和 echo 同理. 一般都会有这个功能, 但是不排除某些第三方库不支持.

2. 一般都是 context 传

3. 多数情况就是 if err != nil,或者用 recover 也行吧.
@wdc63


看下这个库吧, from sortedcontainers import SortedList
把注释删掉大约 600 行

但是中间插入不好搞. 必须定期重新构建整个数据结构.

from sortedcontainers import SortedList

a = [0]


def incr():
a[0] += 1
return a[0]


s = SortedList()
invert = {}
# 向尾部插入单个
idx = incr()
s.add([idx, 'A'])
invert['A'] = idx

idx = incr()
s.add([idx, 'B'])
invert['B'] = idx

# 用下标获取
print(s[0]) # [1, 'A']
print(s[1]) # [2, 'B']

# 用下标删除
s.pop(0)
print(s)

# 用对象本身删除
idx = invert['B']
idx = s.bisect_left([idx, 'B'])
s.pop(idx)

print(s)

# 中间插入(先插入 2 个值)
idx = incr()
s.add([idx, 'A'])
invert['A'] = idx

idx = incr()
s.add([idx, 'B'])
invert['B'] = idx

# 中间插入,在 A,B 间加一个 C
# 这里比较尴尬, float 精度有限, 需要定期用 O(n)重新构建整个表
left = s[0][0]
right = s[1][0]
s.add([(left + right) / 2, 'C'])
print(s)
@wdc63 有点问题, 这个不是很合适.
#include <ext/pb_ds/assoc_container.hpp>

只能 O(logn),而且常数不小.
2022-06-24 16:47:32 +08:00
回复了 monkeyWie 创建的主题 程序员 最近负责 Java 面试,吐槽下
@rabbbit list 是[-1,-2]的时候错了.
@microxiaoxiao 那到底是第一种情况还是第二种呢?
第一种情况设置一个虚拟终点, 除了起点外的点到虚拟终点的权重都是无限大, 用起点到虚拟终点跑一次最大流即可
第二种不会.
2022-06-07 09:31:16 +08:00
回复了 simonlu9 创建的主题 程序员 未读消息数据库设计问题
@simonlu9 这样写性能也会差吗? 试试直接在(userId,type,read_status) 上建索引呢?
log4j2 里用的队列的 go 实现, 代码量不多,可以学到很多高性能的写法. https://github.com/smarty-prototypes/go-disruptor
2022-06-01 09:53:05 +08:00
回复了 cocong 创建的主题 Go 编程语言 诡异的执行结果,有哪位 Go 大神来给瞧瞧?
其实你的代码除了性能比较差, 没什么大毛病吧.
自旋的时候如果失败了, 调一下 runtime.Gosched() ,不然会长时间在死循环里.

package main

import (
"fmt"
"runtime"
"sync"
)

func main() {
var wg = sync.WaitGroup{}
wg.Add(1)
var i = 0

go func() {
for i < 6 {
// 自旋锁
for i%3 != 0 {
runtime.Gosched()
}
fmt.Print("A", i)
i = i + 1
}
}()
go func() {
for i < 6 {
// 自旋锁
for i%3 != 1 {
runtime.Gosched()
}
fmt.Print("B", i)
i = i + 1
}
}()
go func() {
for i < 6 {
// 自旋锁
for i%3 != 2 {
runtime.Gosched()
}
fmt.Print("C", i)
i++
}
wg.Done()
}()
wg.Wait()
}
2022-05-31 15:17:32 +08:00
回复了 coderflying 创建的主题 程序员 这是需求是不是蠢到妈都不认识了?
我们公司还有要填身份证号鉴权,然后去查自己身份证号的接口呢.
2022-05-27 11:40:21 +08:00
回复了 lbllol365 创建的主题 Redis 问下前辈们尝试二开 Redis 报错怎么排查啊
用 clion 把 redis 用 debug 模式跑起来
印象中我当时看的是这篇文章 https://www.modb.pro/db/73281

会用 gdb 就直接 gdb 吧
2022-05-27 09:46:11 +08:00
回复了 microxiaoxiao 创建的主题 程序员 talk is cheap,来观摩一下简单代码
有没有可能你需要 memset 一下 res.
2022-05-26 18:03:25 +08:00
回复了 brader 创建的主题 程序员 如何低成本解决模糊搜索问题
换 pg,用 gin 索引
2022-05-26 16:31:01 +08:00
回复了 minuo0day 创建的主题 PHP 关于 PHP 高并发,请教各位
larave 再差也是世界知名的框架, 并发量也不是很高, 一般情况都是先怀疑自己的代码的问题吧.

遇到性能问题上来就什么 GC 调优, 换框架, 加缓存, 加消息队列的感觉会把问题复杂化.
2022-05-26 10:51:38 +08:00
回复了 olddogs 创建的主题 Go 编程语言 go 语言,如何实现这样的嵌套循环?
能给个输入+对应的输出吗?
给了 2 个例子, 一个没输入, 一个没期望输出.

要操作树, 你肯定要会 bfs 和 dfs, 这 2 个不理解, 代码肯定不会写.
2022-05-18 13:22:20 +08:00
回复了 Askiz 创建的主题 Go 编程语言 请问 go 怎么在主程简单对函数进行超时控制
没办法, 如果是进程 /线程可以通过定时器+kill/tgkill 实现, go 这种自己实现的协程就没有特别好的办法了.
2022-05-18 11:44:05 +08:00
回复了 wym7223645 创建的主题 程序员 多表联查 Group by 优化
贴一下 explain
2022-05-12 15:53:20 +08:00
回复了 brader 创建的主题 程序员 关于遇到的 redis 的 string 和 hash 问题
用 string 不能快速 count
用 hash 不能单独设过期时间

不需要考虑 一大堆 key 头晕的问题
看你的需求来
1  2  3  4  5  6  7  8  9  10 ... 17  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2214 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 33ms · UTC 05:27 · PVG 13:27 · LAX 22:27 · JFK 01:27
Developed with CodeLauncher
♥ Do have faith in what you're doing.