董俊俊 的个人动态
  • 董俊俊 回答了问题
    4个月前

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

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

  • 董俊俊 回答了问题
    4个月前

    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

  • 董俊俊 回答了问题
    4个月前

    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;
  • 董俊俊 回答了问题
    4个月前

    为什么要进行内存对齐内存对齐?

    主要内存对齐主要是为了速度
    如果数据不是对齐的 cpu执行一些运算 要花费额外的时钟周期来处理对齐问题 再做运算

    还有一些就是平台移植

    还有就是网络编程中的数据对其 也是为了节省不必要的空间浪费 提高传输效率

  • 董俊俊 回答了问题
    4个月前

    如何防止PHP木马攻击

    以下方法也是经过众多程序员总结出来的10条经验,虽然有时候无法完全遵守,但是开发的时候还是应该尽量注重安全,能避开安全问题就尽量避开。

    (1) 打开php的安全模式

    php的安全模式是个非常重要的内嵌的安全机制,能够控制一些php中的函数,同时把很多文件操作函数进行了权限控制,也不允许对某些关键文件的文件
    但是默认的php.ini是没有打开安全模式的
    (2) 用户组安全

    当safe_mode打开时,safe_mode_gid被关闭,那么php脚本能够对文件进行访问,而且相同组的用户也能够对文件进行访问。如果不进行设置,可能我们无法对我们服务器网站目录下的文件进行操作了,比如我们需要对文件进行操作的时候。

    (3) 安全模式下执行程序主目录

    如果安全模式打开了,但是却是要执行某些程序的时候,可以指定要执行程序的主目录
    一般情况下是不需要执行什么程序的,所以推荐不要执行系统程序目录,可以指向一个目录,然后把需要执行的程序拷贝过去,但是,我更推荐不要执行任何程序,那么就可以指向我们网页目录

    (4) 安全模式下包含文件

    如果要在安全模式下包含某些公共文件,
    其实一般php脚本中包含文件都是在程序自己已经写好了,这个可以根据具体需要设置。

    (5) 控制php脚本能访问的目录

    使用open_basedir选项能够控制PHP脚本只能访问指定的目录,这样能够避免PHP脚本访问
    不应该访问的文件,一定程度上限制了phpshell的危害,我们一般可以设置为只能访问网站目录

    (6) 关闭危险函数

    如果打开了安全模式,那么函数禁止是可以不需要的,但是我们为了安全还是考虑进去。比如,我们觉得不希望执行包括system等在那的能够执行命令的php函数,或者能够查看php信息的,如果你要禁止任何文件和目录的操作,那么可以关闭很多文件操作,以上只是列了部分不叫常用的文件处理函数,你也可以把上面执行命令函数和这个函数结合,就能够抵制大部分的phpshell了。

    (7) 关闭PHP版本信息在http头中的泄漏

    我们为了防止黑客获取服务器中php版本的信息,可以关闭该信息斜路在http头中

    (8) 关闭注册全局变量

    在PHP中提交的变量,包括使用POST或者GET提交的变量,都将自动注册为全局变量,能够直接访问,这是对服务器非常不安全的,所以我们不能让它注册为全局变量,就把注册全局变量选项关闭,当然,如果这样设置了,那么获取对应变量的时候就要采用合理方式

    (9) SQL注入

    SQL注入是非常危险的问题,小则网站后台被入侵,重则整个服务器沦陷,所以一定要小心。这个默认是关闭的,如果它打开后将自动把用户提交对sql的查询进行转换,

    (10) 错误信息控制

    一般php在没有连接到数据库或者其他情况下会有提示错误,一般错误信息中会包含php脚本当前的路径信息或者查询的SQL语句等信息,这类信息提供给黑客后,是不安全的

  • 董俊俊 回答了问题
    4个月前

    如何防止PHP木马攻击

    1、防止跳出web目录

      首先修改httpd.conf,如果你只允许你的php脚本程序在web目录里操作,还可以修改httpd.conf文件限制php的操作路径。比如你的web目录是/usr/local/apache/htdocs,那么在httpd.conf里加上这么几行:

      php_admin_value open_basedir /usr/local/apache/htdocs 这样,如果脚本要读取/usr/local/apache/htdocs以外的文件将不会被允许.

      2、防止php木马执行webshell

      打开safe_mode,在php.ini中设置disable_functions= passthru,exec,shell_exec,system

      二者选一即可,也可都选

      3、防止php木马读写文件目录

      在php.ini中的disable_functions= passthru,exec,shell_exec,system后面加上php处理文件的函数主要有

      fopen,mkdir,rmdir,chmod,unlink,dir

      fopen,fread,fclose,fwrite,file_exists

      closedir,is_dir,readdir.opendir

      fileperms.copy,unlink,delfile

  • 董俊俊 发布了文章
    4个月前

    Python高阶函数 - 装饰器 decorator

    由于函数也是一个对象,而且函数对象可以被赋值给变量,所以,通过变量也能调用该函数。&gt;&gt;&gt; def now():... print('2015-3-25')...&gt;&gt
  • 董俊俊 发布了文章
    4个月前

    7年编程的心得感悟,这么是多么痛的领悟

    我的大学是个二本(吉首大学,你肯定没听说过),大学专业是电子信息工程,入学没多久,我就感觉我完全报错专业了,因为我对硬件毫无兴趣,我从大学一年级开始学习编程,我记得最初的课本是谭浩强老师的《c 语言程
  • 董俊俊 发布了文章
    4个月前

    Python函数作为返回值 - 闭包 Closure

    函数作为返回值高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。我们来实现一个可变参数的求和。通常情况下,求和的函数是这样定义的:def calc_sum(*args): ax =
  • 董俊俊 发布了文章
    4个月前

    Python高阶函数 - sorted排序

    排序算法排序也是在程序中经常用到的算法。无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小。如果是数字,我们可以直接比较,但如果是字符串或者两个 dict 呢?直接比较数学上的大小是没有意义
  • 董俊俊 回答了问题
    4个月前

    mysql统计订单表每天、每月、每年的数据

    你这么说真的很为难,不过也不是不可以,你先生成对应日期的虚拟表,然后依据这个虚拟表中的日期,进行 where 条件查询。

    嗯,就是这么简单,应该要写个存储过程吧,因为在存储过程外是不允许循环的。

    当然了,并不建议你这么做,因为很容易全表查询。

    建议,统计好对应数据再交由程序进行遍历,如果空缺,默认设置显示当天为空就好。

  • 董俊俊 提出了问题
    4个月前
  • 董俊俊 回答了问题
    4个月前

    nodejs 多页面开发 如何提高编译速度

    ...32核的CPU???你用E7编程吗?
    好吧可能是我见识少.我感觉你插个PCIE通道的SSD会好点.比如960pro
    不过.我怎么感觉都是你配置文件没写对....

最近访客
  • 小花花
    小花花 3个月前