董俊俊 的个人动态
  • 董俊俊 回答了问题
    2周前

    python中怎么对json数组按json的某个字段进行排序

    还有种更优雅直观的方法,一行就可以搞定:

    json_array = [{"time":20150312,"value":"c"}, {"time":20150301,"value":"a"}, {"time":20150305,"value":"b"}]
    
    json_array.sort(key = lambda x:x["time"])

    运行结果:

    print(json_array)
    [{'value': 'a', 'time': 20150301}, {'value': 'b', 'time': 20150305}, {'value': 'c', 'time': 20150312}]
  • 董俊俊 回答了问题
    2周前

    python循环获取json数组中某个值?

    get方法更安全:

    import json
    data = json.load(file)
    result = [(item.get('name', 'NA'), item.get('short', 'NA')) for item in data['items']]
  • 董俊俊 回答了问题
    2周前

    Go net/http Client 某些参数并不是并发安全的?

    重用 Client 的主要目的是重用/缓存 TCP 连接(cached TCP connections),但对于你的需求

    有 10000 个请求需要并发,每个请求需要设置不同的特定 Proxy 代理

    来说,缓存 TCP 连接没用,因此不重用 Client 也无妨。

    至于共享 Cookie,你只需要共享 Client.CookieJAR 便可。

  • 董俊俊 回答了问题
    2周前

    vue如何实现让audio自动播放?

    最好在监听canplay事件在触发play

    audio.addEventListener('canplay', () => {
        audio.play()
    })
    Chrome好像会自动关闭自动播放功能,你可能需要手动配置一下。
  • 董俊俊 回答了问题
    2周前

    vue 在keeplive的作用下 二级路由跳转一级路由滚动条没有保存上次的位置

    scrollBehavior 这个api无法使用

    window.addEventListener('scroll', this.onScroll) 记录好当前滚动距离 scrllNum存在data的变量里

    然后利用activated缓存钩子 再次返回的时候 直接让滚动条回到记录的位置

    this.$nextTick(() => {

    window.scrollTo(0,this.scrllNum)

    });

  • 董俊俊 回答了问题
    2周前

    docker-run启动shadowsocks后面跟的参数是什么意思?docker为什么没有报格式错误

    docker image 有一个 Entrypoint ,负责解释执行 CMD ,也就是后面的命令,或者参数。

    oddrationale/docker-shadowsocks 的 Entrypoint 是 /usr/local/bin/ssserver

    ENTRYPOINT ["/usr/local/bin/ssserver"]
  • 董俊俊 回答了问题
    2周前

    JavaScript合并两个数组报错,为何呢?

    let arrA = [1,2,3]
    let arrB = [3,4,5,6]
    let result = []; // 这里加个分号
    
    [...arrA,...arrB].forEach(item => {
      if(arrA.includes(item)&&!arrB.includes(item)) result.push(item)
    })
    console.log(result)

    具体原因,解释器的问题 有点小复杂 总之加分号没毛病

  • 董俊俊 回答了问题
    3周前
  • 董俊俊 回答了问题
    3周前

    求助filter过滤器

    filter 实现
      const data = [
        { code: "110000", name: "北京市" },
        { code: "110100", name: "北京市" },
        { code: "110101", name: "东城区" }
      ];
      let obj = {};
      const result = data.filter(item =>
        obj[item.name] ? false : (obj[item.name] = true && true)
      );
      obj = null; //释放内存
      console.log(result);

    除了filter可以实现,还有mapreduce或者for循环也能实现,需要的话再进行补充

  • 董俊俊 回答了问题
    3周前

    微信小程序前端token问题,如何判断token过期

    举例说,跟后端定义接口时,约定当响应头的状态码是401时,表示token过期;那你每次待着token去请求后,遇到 401 的状态码,就知道过期了。

  • 董俊俊 回答了问题
    3周前

    vscode如何打开加密后的文件?

    我以前公司也有加密, 需要管理员配置好哪些软件打开哪些后缀的文件自动解密, 所以找管理员吧

  • 董俊俊 回答了问题
    3周前

    python 中的 *args 原理?

    *的语义在不同的场景下会有一些理解上的差别,对于题中出现的几种
    1.为什么a,b,c = *args不可以 a,*b,c = args可以?
    因为args不一定要平均分割 如果*放在被操作数上 会导致 a,*b = *args 这样的冗余语法 所以这时候放在左边是最简单的

    2.a = *args,
    args并不是解包赋值给a,而是args解包后和后面元素组成一个tuple再赋值给a

    3.为什么test_args_kwargs(*args)可以?
    函数的局部变量表就是一个tuple,对于test(a,b,c)需要先把栈中的a b c 组成一个tuple,而test(*args) 则会直接使用args这个tuple,如果args不是tuple 那还是需要先创建tuple

  • 董俊俊 回答了问题
    3周前

    PHP 多进程的困惑

    你提问里说对了一半。
    时间有两个指标,一个叫墙上钟时间,也就是现实中流逝的时间,另一个叫 CPU 时间,是 CPU 花费在执行程序的时间片的总和。
    使用多线程和多进程,会减少 Wall clock 时间,但会增加 CPU clock 时间。
    对于 CPU 密集型任务来说,单进程单线程效率更高。
    对于经常需要 CPU 等待的任务来说,多进程多线程可以增加 CPU 利用率,减少现实流逝时间。

    更好的选择是事件回调模型,既可以并发多任务,又不需要多线程支持,结合了两者的优点,效率最高。

  • 董俊俊 回答了问题
    4周前

    Laravel中服务提供者的register和boot分别是干什么

    register方法用于绑定接口和实现,初始化配置等,在这个函数中不能保证其它服务已经完全加载完毕,因此只能用于注册相关的工作,不能调用其它服务,而boot调用的时候,所有的服务都已经注册完毕,可以放心的使用Laravel中注册的对象,可以调用其它服务。

  • 董俊俊 回答了问题
    4周前

    symfony与 laravel的区别是什么

    Symfony是企业级的框架,有很多成熟的插件和解决方案,学习起来也更复杂;Laravel的话更简单,速度也快些。
    你个人用的话还是建议用Laravel,做中小型项目比较适合。

  • 董俊俊 回答了问题
    4周前

    Laravel provider 中 register 到底是用来干嘛的?

    • ServiceProvider 中的 register 到底是做什么用的

    简短一点:就是文档中提到的用于「注册服务」。

    详细一点:

    1. 什么是服务:就是我们在项目中需要使用到的功能(组件或者说模块)
    2. 服务如何注册:这里解释 $this->app->singleton 用途, 通过服务容器($this->app)的 singleton 方法 ($this->app->singleton ('your_service', closure)) 将服务 (your_service) 绑定到容器,后续可以通过 $this->app->make('your_service') 解析出具体服务实例。
    3. register 里面能干什么:在 register 里仅能够完成绑定(包括 bind, singleton)操作;为什么仅能支持绑定操作呢?因为项目错综复杂,一个服务(功能或模块)可能依赖于其它服务,如果在 register 方法内执行其它操作(这里具体指解析服务( make(your_service))), 那么可能在 服务容器执行依赖注入解析(实例化服务)时所依赖的服务可能还没有完成注册即绑定操作(这时就无法解析出( make) 这个依赖服务实例)从而导致出错。
  • 董俊俊 回答了问题
    4周前

    mysql 大数据分表问题

    主要还是看你的使用数据结构,增删改查的业务场景,是否有活跃数据和非活跃数据之分。
    拆表有几个大方向:
    有序拆分和无序拆分。
    应用层面去控制,还是数据库底层去控制。

  • 董俊俊 回答了问题
    4周前

    mysql 大数据表删除 - JPA

    1、truncate table

    2、分段删除

    3、如果你的表引擎是Myisam或者是innode(独立表空间类型),那么可以把这个表结构导出来备份,然后把这个表文件直接删除了,然后再根据导出来的表文件重新建一个一样的表就好了。

    4、也是把表结构导出来,然后drop table,最后重新建这个表

  • 董俊俊 回答了问题
    4周前

    mysql 大数据 全文检索 思路

    全文搜索这中的最好使用sphinx,这是很良好的建议。。

  • 董俊俊 回答了问题
    4周前

    mysql主从不一致解决方案(260G数据)

    大概的步骤是这样
    1、配置好slave;
    2、备份master;
    3、记录该备份相应的binlog位置(产生master当前状态的最后一个事件所在的位置);
    4、在slave上恢复备份;
    5、配置slave从这个binlog的位置开始复制;

    备份master的流程如下,使用Mysqldump,还有其他的备份方式
    考虑到master可能在线,所以需要刷新(flush)所有表并且锁定数据库,防止在检查binlog位置之前数据库发生改变

      

    //清空表缓存并且锁住表
    mysql>flush tables with read lock;
    //查看binlog并记录下来
    mysql>show master status\G;
    file+position就是slave复制的起点
    //备份数据库
    $mysqldump --all-databases --host=master>backup.sql
    //解除数据库锁定
    mysql>unlock tables;
    //slave恢复备份
    mysql --host=slave < backup.sql
    //启动slave
    mysql>change master to master_host='master',master_port=3306,master_user='***',master_password='***',master_log_file='file',master_log_pos='position'
    mysql>start slave;
最近访客
  • 小花花
    小花花 12小时前