alpha 的博客

何晓东 的博客 | alpha blog

PHP浮点数及switch case的注意点

PHP浮点数及switch case的注意点

浮点数的注意点 浮点数基本是各个语言的老生常谈了,尤其 PHP 这种弱类型的语言,最常见的坑是电商活动的时候,偶尔设置价格是 19.9 元,调用微信支付,转换为分,就是 intval(19.90 * 100) 是 1989 分,对账的时候很容易踩坑,生成价格或者腾讯传回来的,和本地的 decimal 类型数据 * 100 就不一致了,可以使用 bcmul 函数避免错误,bcmul(19.9...

Python 抓取页面的请求重试方法

Python 抓取页面的请求重试方法

Python 在请求某个链接的页面时,偶尔会遇到频次限制,或者返回其他乱七八糟的错误,从而被中断了循环抓取,加一个重试机制就好了。 第一种方案:请求上进行 try catch 操作,失败在次请求就行,以下的 get 只是举例 def get(url): # import requests try: return requests.get(url, h...

Python 合并多个TXT文件并统计词频

Python 合并多个TXT文件并统计词频

需求是:针对三篇英文文章进行分析,计算出现次数最多的 10 个单词 逻辑很清晰简单,不算难,使用 python 读取多个 txt 文件,将文件的内容写入新的 txt 中,然后对新 txt 文件进行词频统计,得到最终结果。 代码如下:(在Windows 10,Python 3.7.4环境下运行通过) # coding=utf-8 import re import os # 获取...

Python 爬虫与反爬的几个方案

Python 爬虫与反爬的几个方案

没有绝对的反爬虫措施,只能提高爬虫爬取的成本。 爬虫措施: 不设防的网站,直接爬取,不做任何伪装 基础防备的网站,爬取过程中增加 time.sleep(n) 进行休眠一下,降级爬取频次,防止被限制。再可以每次爬取切换 header 头信息,伪装成多个终端发起的请求 需要登录的情况下,需要多个用户账户,爬取过程中切换 cookie 信息,模拟不同用户在请求。 使用 ...

Laravel 项目性能提升方案

Laravel 项目性能提升方案

一般使用 Laravel 的项目,最开始是享受快速开发,后期数据越来越多,关联关系涉及到的大表之间的 join 操作,路由层面映射关系消耗的时间,会带来很多问题。 着手点主要是: 改写 route 缓存及解析方案 composer 生成的映射文件存放到 apcu 缓存中 Laravel-stone 或者 Laravel-s 加速,借助 swoole 进行加速   ...

分布式系统中用户和服务器关系方案

分布式系统中用户和服务器关系方案

文章内容主要是群友 大叮当 提的一个问题,然后 大佬李 的回答整理的。 问题:分布式聊天服务器, 当 a 服务器的用户要给 b 服务器的用户发消息时, a服务器需要根据用户 id 找到目标用户在哪台服务器, 然后让那台服务器去发消息,这种用户和服务器的对应关系, 怎样处理最好,也是最高效的? 基础方案: 将用户ID hash一下,分布到各个服务器,用 Redis set 结构存储...

真实的世界与算法

真实的世界与算法

没有什么精妙的算法能够模拟真实世界。   当我们生活的世界充满了各种聪明的互联网应用,为我们无时无刻推送着令人着迷的内容,然而越停留的时间越长,就越离真实世界越远。互联网应用的背后是不断升级的推荐算法,是层出不穷的滤镜美化算法,把真实的东西美化成作者喜欢的,然后智能推荐给有同样喜好的受众,而受众会因为得到虚伪而廉价的愉悦,成为大数据中卑微的一部分数据,向算法和资方,贡献价值。渐渐的...

数据结构中数组和链表的区别

数据结构中数组和链表的区别

数组 和 链表 之间的主要区别在于它们的结构。数组是基于索引的数据结构,其中每个元素与索引相关联。另一方面,链表 依赖于引用,其中每个节点由数据和对前一个和下一个元素的引用组成。 数组是数据结构,包含类似类型数据元素的集合,而链表被视为非基元数据结构,包含称为节点的无序链接元素的集合。 在数组中元素属于索引,即,如果要进入第四个元素,则必须在方括号内写入变量名称及其索引或位置。但...

利用 GEO 实现查看附近功能的几个方案

利用 GEO 实现查看附近功能的几个方案

查看附近:此功能需要注意的是,经纬度坐标的密度不一样 (地球是一个椭圆),勾股定律计算平方差时之后再求和时,需要按一定的系数比加权求和,如果不求精确的话,也可以不必加权。 MySQL 直接存储经纬度 适合场景:数据较少,例如查看全国的xx奢侈品店,这些数据加起来也不一定会有十万条,所以可以忽略考虑性能。直接使用数据库存储经度,纬度,然后sql查询就可以的,为了满足高性能的矩形区域算...

Redis info的信息解释及注意点

Redis info的信息解释及注意点

这里展示效果好 Info是获取单机信息的命令,主要是9 块的信息,也可以单独使用 info server 这样的命令来获取部分信息,一下为 info (all) 的结果: Server(服务器信息) redis_version:3.0.0                             #redis服务器版本 redis_git_sha1:00000000        ...