vimac

vimac 查看完整档案

杭州编辑  |  填写毕业院校有赞  |  业务架构师 编辑 vifix.cn 编辑
编辑
_ | |__ _ _ __ _ | '_ \| | | |/ _` | | |_) | |_| | (_| | |_.__/ \__,_|\__, | |___/ 个人简介什么都没有

个人动态

vimac 赞了文章 · 2020-09-22

Vant 3.0 Beta 版本发布 🔥

Vant 是有赞前端团队开源的移动端组件库,于 2016 年开源,已持续维护 4 年时间。Vant 对内承载了有赞所有核心业务,对外服务十多万开发者,是业界主流的移动端组件库之一。

前言

目前 Vant 已完成了对 Vue 3.0 的适配工作,并发布了 Vant 3.0 Beta 版本,欢迎大家在新项目中尝试 Vue 3.0 + Vant 3.0。

背景知识

在使用 Vant 3.0 前,请先了解一下 Vue 3.0 的变更内容:Vue 3.0 官方文档

迭代计划

我们计划在十月底或十一月发布 Vant 3.0 正式版,目前正在进行的工作有:

  • 使用 Composition API 重构所有组件(已完成 80%)
  • 对外提供 Vant 内部使用的 Composition API 模块,并封装为 @vant/use
  • 使用 TypeScript 重构所有组件
  • 完善单元测试并修复发现的问题
  • 增加新组件和更多 Feature

安装 Vant 3.0

#npm
npm i vant@next -S

# yarn
yarn add vant@next

安装完成后,请参考 Vant 3.0 的文档进行食用:

注意事项

  1. Lazyload、Sku 组件还未完成 Vue 3 适配,因此在 Vant 3.0 beta 版本中暂时不可用
  2. beta 版本迭代过程中可能会引入少量的不兼容改动,在升级时请仔细阅读更新日志

视觉规范升级

近期我们还发布了 Vant 视觉规范 3.0,详见:Vant 设计规范 3.0 发布

问题反馈

使用 Vant 3.0 过程中遇到问题时,欢迎通过 issue 的形式进行反馈,也可以加入微信交流群和大家一起交流:

查看原文

赞 10 收藏 0 评论 1

vimac 回答了问题 · 2020-09-07

解决误删centos系统中的python2,导致yum无法使用,如何解决?

如果 rpm 还能用的话
手动把你的 centos 对应的 python 2 的 rpm 下载下来 (包括它的关联包)
然后 rpm -i 进行安装
不过由于你是手动删除的, 理论上 rpm 数据库中还在(python的安装状态), 估计需要加上 --force 参数

关注 4 回答 3

vimac 回答了问题 · 2020-08-25

解决el-tabs 为每个选项添加一个对应的svg图标

官方有例子的, 用名为 label 的 slot

见文档, 自定义标签页
https://element.eleme.cn/#/zh-CN/component/tabs#zi-ding-yi-biao-qian-ye

关注 4 回答 3

vimac 回答了问题 · 2020-08-13

解决ob_flush在PHP7中实时打印foreach里的echo不能用?

ob_flush 的确是输出缓冲区没错

但 NGINX 和 php-fpm 之间还有一层缓冲区, 不是 php 的 output buffer 函数可以控制的.

有几个地方需要调整, 你可以自己试试(取其一即可):

  1. PHP 输出一个 header('X-Accel-Buffering: no'); 的 HTTP Response Header, 仅影响当前请求
  2. 全局层面关闭 nginx 的 fastcgi 的缓冲, 配置为: fastcgi_buffering, 文档: http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_buffering

或者干脆考虑换方案, 例如 websocket

关注 2 回答 1

vimac 回答了问题 · 2020-08-12

关于表设计问题

如果在业务中这些状态变化至关重要, 那么最简单的方法就是加个对应的状态改变的日志表, 把你每次变化都单独记录一条即可.

高级一点使用 Event Sourcing 事件溯源的设计思想来设计你的程序
(整体在用这种方法在业务中实践的群体不多, 做好要自己摸索踩坑填坑的准备)

关注 3 回答 2

vimac 回答了问题 · 2020-08-10

解决Leader 要求将现有 MySQL 中的一个表以很细的维度大量分库分表,这会带来什么问题?

评论里聊了这么多, 我也重新编辑一下答案吧. 关于你提出的两个点:

第 1 点的问题是不存在的, 因为 information_schema 下面的表都是内存表, 所以实际上并不存在什么查询效率上的问题. 1000条和10000条其实是没有什么显著的差异的.
第 2 点的问题有一定的合理性, 文件描述符越多意味着越多的 I/O 和内存占用, 当然这就并不仅仅是文件描述符本身的占用, 还包括 MySQL 的 InnoDB 的 Buffer Pool 这类的, 但是这个你得在动态的层面来看, 假设加服务器加内存和迁移到 SSD 就能解决的问题何必要堆工程师非在软件层面去解决, 立竿见影, 成本还低.

当然没错, 的确 10000 个分表或者后面可能有 50000 个分表听上去第一感觉的确可能有问题. 但就问题的本身的信息而言做不出这个判断(因为这里不知道你们的业务细节), 但可以考虑是否有可能向这几种方案改造有助于数据更加均匀分布的同时并且对你们现有的系统改造代价最小:

  1. 按照某个 ID 进行取模进行分表, 分析一下当下的数据, 看看除哪个数字可以让数据尽可能均匀, 所有的表的数据量趋于相对一致而不是都分散在一个表下面. 大多数 SaaS 系统中由于大多数用户都只能访问他自身的数据, 所以这种分法是很常见且合理的.
  2. 按照冷热数据进行分表是否可行. 几百万的数据肯定不会是实时都要访问的, 那是否可以把一年前的一些数据放到冷表里, 热表仅保留近期半年或者一年的数据 ---- 具体时间多少取决于你们的业务 (你可以看到京东的订单也是类似于这么设计的, 你在 PC 上打开京东的订单页, 可以选择订单的时间范围, 实际上就是在选择冷数据)

关于数据量, 冲着单表 20000 条左右数据的这个目标的确是不合理的, 在合理的硬件配置, 合理的软件设置, 合理的表结构设计, 合理的索引设计, 合理的 SQL 语句的作用下, MySQL 是可以做到千万级别的查询并没有什么明显的延迟的. 如果你们团队中没有能在这个层面进行相关把关的人, 并且业务也能够支撑(换句话说, 在赚钱), 那么是时候招聘一个 DBA 了.

以下为原答案


和你想象的不同, 实际上分库分表是切实可行的性能优化方案, 用空间换时间, 在单表确实碰到了性能问题后, 分表是可行的.

分表方案本身也很多, 除了你上面说的按照实际业务情况来分的以外

非常常见的一种, 用上一个MySQL的中间件, 根据 ID 取模切割, 除10取余数那就是分成10个, 除1000那就是分成1000个, 中间件配置好规则后会自动帮你把数据插入对应的服务器中对应的表. 当然这些需要提前规划好数据量.

当然确实分表会带来一些问题, 只不过你所说的多一步查找database和table压根算不上什么问题, 至于文件描述符的也不算什么问题(影响十分有限), 特别考虑到如果引入中间件之后还可以实现跨多服务器, 性能层面由于中间件都有连接池的所以其实并没有什么太大降低, 我随便列出几个问题(当然并不全面):

  1. 这些表的主键将失去唯一性, 如果这个表的 ID 对你们来说至关重要 (例如: 用户ID或者店铺ID这类在业务中非常重要的ID), 解决方案是要引入一个三方的发号器
  2. 跨表跨服务器的事务会很麻烦或者干脆不可用, 数据一致性需要付出较大精力来保证.
  3. 连表很容易遭遇问题, 建议不再用连表 (不过即使是单表, 也不建议采用连表, 不成熟的连表语句很容易踩坑)
  4. 运维成本急剧增加, 例如修改表结构会非常麻烦, 需要批量依次执行, 并且还要确保都执行正确.

虽然多少有一些问题, 但由于互联网公司内大量还是使用社区版本的 MySQL(也就是免费的), 所以分表几乎是数据量大了之后的并不多的可行的选项之一.

关注 2 回答 1

vimac 回答了问题 · 2020-08-10

解决antd日期选择器怎么拿到值

用 call 或者 apply, 以下 ...arguments 用来展开原始事件收到的参数

<template slot="dateedit"  slot-scope="text, record, index" >
  <a-date-picker  @change="dateChange.call(this, ...arguments, 自定义参数1, 自定义参数2)" />
</template>

// or 

<template slot="dateedit"  slot-scope="text, record, index" >
  <a-date-picker  @change="dateChange.apply(this, [...arguments, 自定义参数1, 自定义参数2])" />
</template>

对应的事件代码:

dateChange(date, dateString, 自定义参数1, 自定义参数2) {
  // ...
}

关注 2 回答 1

vimac 回答了问题 · 2020-08-10

查看网页源代码,中间div只有一个div id="app"标签,但是页面有不少内容,这是怎么弄得?

看到页面上有一条 css 是 '.iuv-alert-info', 这是对 iview 的一条 css 的定义

所以这个页面肯定是是 vue + iview 开发的.

你可以先去了解 vue.

(当然 react, angular 类等现代前端框架开发的应用都可以达到类似的效果)

关注 4 回答 3

vimac 回答了问题 · 2020-08-10

解决救救我的centos7

看你的截图, 一大堆服务挂掉, 应该不是 Gnome 单独的问题, 有做过磁盘扫描吗, 在 root 根目录下放一个 forcefsck 的空文件先强制下次启动磁盘扫描看看

# touch /forcefsck

然后你既然可以进入急救模式, 那么总之先在急救模式下试一下

# systemctl set-default multi-user.target

取消掉当下默认的 GUI 登录

关注 3 回答 2

认证与成就

  • SegmentFault 讲师
  • 获得 516 次点赞
  • 获得 26 枚徽章 获得 1 枚金徽章, 获得 13 枚银徽章, 获得 12 枚铜徽章

擅长技能
编辑

开源项目 & 著作
编辑

注册于 2014-09-02
个人主页被 7.3k 人浏览