zpf124 最近的时间轴更新
zpf124

zpf124

懒~~~
V2EX 第 164342 号会员,加入于 2016-03-22 09:03:34 +08:00
zpf124 最近回复了
30 天前
回复了 RedBeanIce 创建的主题 Java [mysql 字段] not null 还是 null default
最后,所有支持 存在 null 才是符合大多数 程序员逻辑的想法, 除非你入门编程语言恰好是非 C 系那几个排斥引用类型有 null 值的语言。

因为数据不存在 null 和 数据存在值为 0 ,含义是不一致的。
让他们表达相同的含义就和前端页面父子组件样式有问题导致挤压错位,然后用绝对定位或者 margin 负数移动回来一样。
在外在表现上看起来是没问题了,但实际上从根本逻辑上讲他就不应该这么处理。
30 天前
回复了 RedBeanIce 创建的主题 Java [mysql 字段] not null 还是 null default
另外,这么多人聊了这么多 居然只有 @kiwi95 提到这个问题的重点,mysql 的 null 索引有性能问题,会慢非常多!

要求 not null + default 的规则制定者中能说明白的大拿都会和你明确的说,mysql 非 null 查询性能会差一个数量级。

这是 mysql 的问题,不知道 8.0 有没有解决,最起码 5.5 5.6 这些规则书写成那个年代的版本是真实存在的性能问题。
而且这只是 mysql 的问题,mysql 小毛病一大堆,所以你网上看到的许多数据库优化的点实际上并不通用,就是针对 mysql 的。

上学时候 学 sql server 还在天天教数据库三范式的年代,哪听说过这种要求。
30 天前
回复了 RedBeanIce 创建的主题 Java [mysql 字段] not null 还是 null default
@GTim 你说了半天我还是没懂,bigint 是如何存储时区信息的? 转 UTC 时间的 timestamp ?

那么用 datetime 还是用 bigint 有差别吗? 为了防止人肉眼看的时候能直接看出来这个是什么时间吗?

bigint 和 timestamp 最大的差距仅仅是 2038 的长度问题, 除此之外他们在存储本质上没区别,只是后一个 mysql 可以自动处理给你显示成人类可读的时间。
30 天前
回复了 RedBeanIce 创建的主题 Java [mysql 字段] not null 还是 null default
@GTim 可以存入数据库的时间都使用 UTC 时间,程序读取和写入的时候做转换。
@stroh
另外,我不确定其他回复的人里主要争吵的点是什么。

我回复的内容里,前两个大概在分析这个错误发生的原由,后面 5 、6 条其实都在针对一句话 “我也做过 xxx”。

做事的时候最讨厌这种不干这事的人出来放这种轻巧屁——贬低别人水平、职责别人忽悠蒙人。
被说中人都会被激怒何况是还没这歪心思的人呢。

之前有个产品给我们提需求就老是“这个很简单啊?怎么需要这么长时间?”,“我也学过 SQL 啊?不就是写个查询吗?”。
他特么一个需求要改 5 、6 个不同的接口,展示的那个属性的查询条件,在有的地方需要通过登录用户信息关联,有的需要物品信息关联,还有的需要通过关联关系找到多条数据再查。
他一句“不就写个 SQL 吗用得了这么久吗?”气得我们组长说“用不了那么久那你来写”。

一个多结构嵌套的页面,赶进度的时候让快点催得急,我们后端就自己写,我们从其他页面挪了一些类似的组件过来改吧改吧,上线后发现有个块整体歪了 1px , 他去找我们我们说不会,得前端看看。
他找前端也是 “不就歪了 1px 吗?你移一下不就好了?”,前端也憋着没说话,后来找了半天找到上面有个空的元素外面看 hight:0 ,但内部有个不可见元素有体积给挤到下面了,导致后面好几块都乱了。

换你是我们这个前端, 听到产品说“我也懂前端,不就调一下 margin 吗” 你什么感觉?
@stroh 你我对于 http 访问链路的基本知识都不在一个水平
(我觉得前端现在都不需要了解什么是 httpserver 什么是反代真的是要求太低了...),
加上屁股不一致,我和你无法达成共识的。

对于我而言,和你们那个后端一样,一看到访问的 url 起始前缀都不是我们后端项目地址,一瞬间就知道与后端无关了。
然后自然就可以推导出两种结论,要么网关路由有问题,要么你们前端打包有问题,包括丢页、包括 URL 拼接变量 bug 。

接下来就是屁股问题,既然我是个后端,找我看问题,那我确认问题不是我这那就是完事了,我对前端和运维一知半解难道还要我去一路 debug 吗?

至于说积怨已久这个只能说非常常见,避免不了,工作有接触自然会有摩擦,所以你有怨气,我带入你们后端视角更有怨气。
@xinple 说前端的错误是说,他沟通阴阳怪气,而且自以为是把不是别人的问题按到人头上 “我写过后端 500 就是后端错误”。

换个生活中的例子。

假如你是卖电脑的, 客户发现上不了网了,给小区的联通的服务商打电话,然后这个搞网的是个二把刀,一看客户网线灯能亮,“不是我的问题,灯亮了说明线好好的,应该是你电脑问题,你找卖电脑的吧”。
然后把你叫过去你一看这和我有 p 关系啊? 然后打电话给百度把他骂了一顿,说肯定就是他们的问题,水平真菜。
虽然这事和人家也没关系,但人家大概一看是什么 dns 无法解析,就大概知道是网的问题,和你说让你找修网的,结果你张嘴就是 我也做过软件,这肯定就是你们的毛病,还最大的中文搜索引擎呢。
然后网上发帖,“百度原来就这水平啊? 挣钱好容易啊”。

这件事技术上的本质是什么? 负责网络链路的货是个二把刀,自己瞎逼甩锅。

但这个帖子的问题是什么? 自己一知半解却以为自己最他么懂,别人告诉你正确结论了你还以为自己是对的,说话阴阳怪气不为解决问题就是为了甩锅和发泄不满。

---------------------------

你告诉我这个前端没错? 运维甩锅给他他有火气,那他瞎甩锅给后端没火气?他一路阴阳怪气 人家还好好在告诉他是谁的问题。

这还是个后端领导,要我绝对把对话甩给他们前端领导,让他们前端领导看看这个“说话的艺术”,然后自己查问题去。

即便我是大头兵那也会直接说,“来,这回我带着你挨个把这条链路都厘清楚,让你看看到底谁的问题,如果是我的问题,从此以后,你找我什么问题我都给你解决不论是谁的,如果不是我问题,以后找我看问题请自己带上前端日志,还有网关 access 记录,最好后端日志你也找出来,我可以去找领导给你开日志查看权限。”
@wonderfulcxm
那是因为 php 和 nginx 的结合方式是用 cgi-bin, 原理上和 允许 lua 类似,属于于 nginx + 插件这种方式,nginx 和你的脚本绑定到一块了,属于 nginx 作为执行者去调用了某个函数然后访问了你的脚本,属于同一个进程内的方法调用,然后函数去返回某个结果,调用出错 nginx 作为调用方是会接收到异常退出信息的。

然而这种题主的截图对话里告诉你了人家后端是 java 开发,java 不玩 cgi-bin 。


实际上 cgi-bin 的优点是非常简单方便,但缺点限制更明显,以前的脚本语言支持这种协议的多一些,php, py, perl 。

但其他大多数语言不论是 java ,go ,.net 还是 nodejs ,甚至你们 php 的许多框架也都直接选择了用自己实现的 http-server 来执行对应的代码,这样可以支持更多的特性更灵活的业务处理。
在这种时候 nginx 只是一个单纯的 反代服务器, 他只有一个作用,反代,完全不会参与代码执行,,这时候就不是进程内的方法调用了, 而是网络传输,nginx 去代用户发起了一个 http 请求到后端服务器上,这种情况 nginx 不会接收到异常调用栈的,这时候他实际上是不会涉及 500 错误的。 只会发生 502 ,504 ,这种 nginx 访问后端超时的错误。

如果这种反代的情况下还触发了 500 ,那只能说明 nginx 除了反代还做了其他功能,比如 lua 脚本或者其他插件进行限流等操作时候发生了 bug 。
总结一下问题。

运营发现访问不了,喊运维,
运维粗查监控没有宕机,甩锅前端,
前端一看 500 错误,就觉得这是后端的错,甩锅后端。
后端一看返回的是 nginx 的页面,而且访问的还是前端的路径(聊天里说的),和我有 p 关系?

最后前端出来发帖:"现在后端都这么好干吗》"

----------------------------

期待后续楼主出来解答一下到底谁的问题, 看看谁是真的在甩锅。

我唯一能想到的 前端项目路径报 500 还会是后端引起的情况就是 —— 你们是 SPA 应用做了首屏服务端渲染,然后服务端渲染时调用后端 api 报错。
有人知道其他可能性的话麻烦也给我讲讲。

我初步猜测,最有可能的情况是 500 的访问链接是代码拼接生成的,但拼接了特殊符号或者什么其他内容,导致反代解析出问题;
除此外要么是 WAF 相关设置有毛病,要么反代服务器配置有问题或者写了 Lua 脚本但出 bug 了。
@wonderfulcxm
如果后端报 500 错,会由后端的服务器程序以自己的格式返回错误信息,对于 java 的后端而言是 tomcat 或者其他程序,而不是 openresty 的标准 500 页面。
不信的话你自己用 node 起一个服务让他访问就 500 ,然后你用 openresty/nginx 反代套一层,自己访问看一下会不会出现 openresty 的 500 页面。
关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2126 人在线   最高记录 5497   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 28ms · UTC 08:31 · PVG 16:31 · LAX 01:31 · JFK 04:31
Developed with CodeLauncher
♥ Do have faith in what you're doing.