• 学习:人工智能-机器学习-深度学习概念的区别

    一图胜千言

    Read More »

  • 使用numba的姿势不正确反而导致性能下降

    numba能够极大的提高python在计算方面的性能。是不是所有的python代码上,都可以加上numba.jit装饰器?答案是否定的。

    Read More »

  • numba加速python学习与尝试

    简介

    探索python性能优化工具,发现了numba. 只需要给函数加上装饰器就可以。比cython和pypy方便多了。

    • numba是什么

    numba是为了提高numpy速度而开发的,使用llvm将python代码翻译为bitcode,并在bitcode外面做了一层包装,让python可以调用

    通过numba翻译的代码由于经过llvm优化并可在机器上直接执行,效率将有所提高,对海量数据处理非常有帮助

    Read More »

  • 用最简单方法解决api接口安全问题,几乎无法破解

    场景描述

    项目需要为第三方提供api服务接口。接口涉及到核心功能,如何保证接口安全。防止伪造身份、篡改数据?

    思路

    保障数据安全最好的方法,当然是加密了。无法解析内容,自然无法伪造,篡改。
    
    可是使用https证书需要收费的。有其它方法么?
    
    有的。
    
    消息哈希认证(hmac)。
    

    算法描述

    • 访问者
    1. 当访问接口时, 将参数按key值排序,组成key1=value1&key2=value2&....&secret_key=...
    2. 然后对上面结果做md5,生成签名sign
    3. 将sign放到加入请求的参数
    
    • 被访问者
    密钥是被访问者提供了,它也有访问者的secret_key.
    1.根据app_id查到secret_key
    2.处理请求参数,按规则组成key1=value1&key2=value2....&secret_key=...
    3.对上一步结果做md5,生成sign。比较两个sign,相等则身份验证通过
    

    Read More »

  • 没有契合的数据库迁移工具,用pymysql实现一个

    版本迭代少不了数据迁移,python有自己的数据库迁移工具migrate。如果有的是其它开发语言,或者没有契合的迁移工具。

    怎么自己做一个?

    环境说明

    项目开发语言:java
    数据库: mysql
    迁移脚本: python
    python工具包: pymysql
    

    实现思路

    目标是将老版本的数据转为新版本的数据。

    1. show tables 查询所有的表  ---得到所有表名
    2. 注意trancate table_name 保证新表干净  -- 清环境
    3. python在执行sql后可以在游标的属性cursor.description中看到表的字段信息  -- 得到所有字段名、类型
    4. 查询数据生成insert语句。版本之间有变化的做特殊处理  --数据映射
    5. 每生成500条commit一次到新库   -- 批量commit
    6. mysqldump一份数据,在开发环境做好测试,没问题就可以用了。
    

    Read More »

  • nginx运行php的终极方法,可避免许多不必要的坑

    说明

    php有许多开源项目比较好像,在自己的机器上用docker搭建了很多。

    每个docker都是跑了个apache,每个docker里面都有apache。

    这样好像有点浪费资源,而平时都是用nginx,所以研究了用nginx运行php

    中间竟然碰到许多坑,而回过头来看,其实都很简单。

    nginx运行php的原理

    nginx不能解析php,要和php-fpm配置使用。nginx负责将php的请求转给php-fpm解析处理,然后返回响应结果

    nginx运行php会遇到哪些坑

    错误的提示有很多,最基本有"File not found"、"403"、"404"、"nginx no input file specified"等等

    总之能试出许多错误。而归结到底,只有一个根本原因“权限”

    而最好的方法是,直接把nginx和php-fpm设置为root用户运行

    Read More »

  • frp内网穿透基本用法

    思考评价

    由于路由器推荐使用frp进行内网穿透,所以我稍微了解了下。

    平时我更新喜欢用ssh进行内网穿透。似乎并没有必要使用frp。

    更方便的方法是,直接用vpn将两台机器连载一起,也比端口穿透好多了。

    一般说来它比较适合普通人,使用比较简单。

    不打算深入研究,下面比较水

    Read More »

  • rclone报错NewFs: couldn't initialise SFTP: EOF

    rclone将路由器挂载到vps,出现下面错误。

    原因是路由的ssh不支持sftp。

    [root@izwzxxxxxxxqre9xrhvz ~]# rclone lsd homedata:
    2018/12/24 13:57:24 Failed to create file system for "homedata:": NewFs: couldn't initialise SFTP: EOF
    
    
  • entware嵌入到移动硬盘,在路由器重启后不生效

    环境说明

    在路由器r6400上挂载了一个移动硬盘,然后在移动硬盘中安装了entware。

    如果重启了路由器,entware会失效。如何让它在重启时生效呢?

    梅林r6400开机启动原理

    路由器中的操作系统比较特殊

    1. /etc/profile: 系统做了限制不能修改,所以不可以加脚本

    2. /jffs/scripts目录: 里面的脚本名固定不可以随便修改,但是可以加自己的内容。

    脚本名 作用
    post-mount 在挂载磁盘后调用
    nat-start 在nat配置后调用
    services-start 在系统服务启动后调用
    services-stop 在系统服务器停止前调用
    wan-start 在wan网卡启动后调用

    Read More »

  • 让梅林R6400支持sftp协议

    说明

    通常linux中ssh默认支持sftp,梅林路由器中的ssh是精简版,不支持sftp协议。

    自带的配置不支持,是否有有办法呢?我们可以先装entware-setup.sh,然后用opkg安装sftp。

    有了ssh和sftp,我们可以做很多事。

    Read More »