V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  lolizeppelin  ›  全部回复第 17 页 / 共 49 页
回复总数  980
1 ... 13  14  15  16  17  18  19  20  21  22 ... 49  
2019-11-22 11:41:27 +08:00
回复了 kayseen 创建的主题 Python flask 使用 token 鉴权,怎么获取用户的上次登录时间?
认证归认证啊,总不能把用户信息都塞 token 里吧

查询用户信息的时候获取到上次登陆时间就是,不要做塞 token 里这种事
2019-11-20 20:29:13 +08:00
回复了 vcfghtyjc 创建的主题 Python Python 的多线程原来不是真的多线程啊
@secondwtq

相近但是不常用的词没法准确传递的
最明显的就是并行和并发, 这两词具体表达什么意思是“定义”下来而不是可直接理解推导的

今天我看了记得定义了明天就忘记了, 那些本来就不熟悉这些内容的更加记不住了

所以用词得绕着表达, 比如利用多核这种可以直接理解的
2019-11-20 16:40:32 +08:00
回复了 vcfghtyjc 创建的主题 Python Python 的多线程原来不是真的多线程啊
不要把逻辑纠结到名词上,名词是为了表意而已,代码本身脱离不了人类逻辑

34 楼说了关键,能不能并发(这个词本身就不应该纠结),需要逻辑上可行!
单关键点不是在 34 楼所说的共享,关键点在于,多个 work/thread/process/runner/loop (用哪个名词真不重要)之间的工作是否有序
你要知道一旦执行过程的逻辑是有序的, 那么最终无法一起做或者只能片段一起做(部分无序部分可以同时进行),即使你分配到了多个线程,最终顺序还是要用锁来保证,结果还是强制了顺序,即使看上去用了多个 cpu,实际都浪费到锁上


python 的线程是真线程, 但是 GIL 要求 python 代码片段被顺序执行,所以多个线程并没有同时干活,也就是没法用多核,最多跑 100%.

你的 python 代码是跑 python 虚拟机里的,GIL 就相当于 python 虚拟机里有个强制的线程顺序锁,你纯 python 代码怎么写都没法脱离他的顺序限制,自然是无法达成你需要的并发的

所以要么写 C 代码脱离 python 虚拟机的 GIL 限制,要么多进程
@cyhulk
这是上层的,应该不是楼主想知道的知识点

硬盘本身的知识点一般是做数据恢复(顺便修硬盘,卖二手硬盘)的比较熟悉
可以先看点负磁道,砍头,G 转 P,LBA 表重建之类,普通用户了解这些就差不多了
去硬盘之家

这些原理修硬盘的接触比较多, 基本都是 PC3000 用户
2019-11-15 13:33:40 +08:00
回复了 mynamewang0 创建的主题 数据库 hash join 构建 hash 表的意义是什么?
不看代码的话 知道 HashJoin 是 O1, 不是 m*n 性能屌爆就是了,缺点是 hashtable 空间不能太大

MergeJoin 也是常见的 join

各种 join 算法都不是很难实现的东西,mysql 这玩意只有一种算法是因为它没有统计数据去支持选哪种方式

没有银弹..有银弹大家还选个啥
跟不上 pg 自身更新节奏的都得死 2333

因为都会被 pg 干死....
2019-11-11 09:58:38 +08:00
回复了 xoxo419 创建的主题 PHP swoole-单机维护 20 万需要调整哪些内核参数?
还在 ulimit -n 呀
2019-11-10 13:28:41 +08:00
回复了 pompeii 创建的主题 程序员 一个同事和我说线程间不会切换
python 的线程是真线程
因为 gil 不能多核而已
python 多场线程与其他语言的多线程基本一样
是否加锁 具体粒度要看对应虚拟机源码
2019-11-07 10:43:48 +08:00
回复了 Livid 创建的主题 Python 关于 Flask 项目的代码文件组织
想看大型的就不要把关注点放在 web 框架上...

来来来 openstack 走起
2019-11-07 10:41:28 +08:00
回复了 smyle 创建的主题 Python Python 新手,怎么读 Python 源码?一个项目里的封装、库太多了
没有目的读是很难读的

...不熟悉 python 还不装 ide... 你开心就好
2019-11-05 15:16:26 +08:00
回复了 CatCode 创建的主题 NGINX 有没有办法让 Nginx location 的正则匹配具有最高优先级?
搜索 location 优先级啊

=规则优先级最高


还满足不了你的话 上 openresty 咯
2019-11-01 15:50:30 +08:00
回复了 ersic 创建的主题 程序员 搜狗输入法太恶心,一步一步挑战底线
@inoizyz
就是就是 哈哈哈哈
2019-11-01 14:43:07 +08:00
回复了 lhx2008 创建的主题 Go 编程语言 Go routines 和 Java 线程池的区别有哪些?
话说...好像这些都是从 erlang 里出来的?
2019-11-01 14:41:24 +08:00
回复了 lhx2008 创建的主题 Go 编程语言 Go routines 和 Java 线程池的区别有哪些?
@richzhu

记这个不如好好把一个协程库的代码读透,比如 python 的 eventlet
读透了搞清楚模型模型了就自然理解了....啥语言都一个样,记下来真没用....
2019-11-01 10:07:07 +08:00
回复了 lhx2008 创建的主题 Go 编程语言 Go routines 和 Java 线程池的区别有哪些?
线程
一个线程跑满,就吃饱一个 cpu
N 个线程跑满对应 N 个 cpu,只要与 cpu 数量相同多线程就能吃饱 cpu
但是实际代码里会阻塞,一阻塞会自动让出 cpu, 所以在阻塞写法里,程序的线程超过 cpu 数量能提高性能
但是过多的线程数带来的上下文切换回拖慢整体


协程
通过寄存器保存代码片段,遇到阻塞(一般是 io,或者自定义的协程锁),会切换到其他代码片段
所有代码片段的入口存放一个不停排序的队列
一个循环(相当于一个线程)不停的排序这个队列,并弹出最前面的数据获取到代码片段并执行
一般只有一个主线程,由于代码片段的切换由程序自己决定,没有系统级上下文切换,性能好,缺点是单线程


所以性能最好的方式是结合多线程与协程,但是非语言级很难用一个库来实现支持多线程的协程

目前除了 go, dart (也就是 google 的 flutter 所用语言)也有多线程协程支持


我瞎鸡巴说的...我没写过 go 哈哈哈哈哈哈
我用到 openstack 的 oovo
我想支持多个数据库(拆分日志库,业务数据库)
具体就不细说了


现在的是改造
https://github.com/openstack/neutron-lib/blob/master/neutron_lib/db/api.py
的 event.listens_for 部分

因为他的代码里不需要支持多个数据库,所以_emit_on_pending 是个单独的

因为我有多个库, 所以需要通过不同的 declarative base (不同数据库的表继承不同的 declarative base )反馈返回不同的_emit_on_pending

如果用 session 来区分,下面这种没 session 的监听就不好处理
@event.listens_for(model_base.BASEV2, "attribute_instrument", propagate=True)

所以我需要 db object 里获取到对应的 declarative base,但是不是很想通过 mro

好像用 obj.__class__.metadata is not BASEV2.metadata: 这种方式也行
我想从一个 db object 的属性里找到他的 declarative base 对象
从而分辨这个 db object 是哪个数据库连接的

应该可用 obj.__class__.__mro__[1] is DBBASE 来确定这个 db object 的 declarative base
但是我不太想用 mro.....因为不是那么熟
1 ... 13  14  15  16  17  18  19  20  21  22 ... 49  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1130 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 34ms · UTC 22:43 · PVG 06:43 · LAX 15:43 · JFK 18:43
Developed with CodeLauncher
♥ Do have faith in what you're doing.