alpha 的博客

何晓东 的博客 | alpha blog

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        ...

Redis 布隆过滤器的使用及注意事项

Redis 布隆过滤器的使用及注意事项

应用场景:新闻推荐中的去重,垃圾邮件地址的过滤,危险域名的过滤,URL爬虫去重等 在这些情况下,一般会想到解决方案:服务器记录了用户看过的所有历史纪录,推荐系统每次都从用户的历史纪录内筛选已经看过的记录,但用户量很大并且每个用户看过的新闻又很多时,推荐系统的去重功能在性能上不一定能跟的上。并且如果历史记录保存在关系数据库中,去重就要频繁的对数据库进行exists查询,当并发量上来时,数据库...

Redis 持久化选项,原理及运维

Redis 持久化选项,原理及运维

Redis提供了两种持久化选项,分别是RDB和AOF。 默认情况下60秒刷新到 disk 一次[save 60 10000 当有1w条keys数据被改变时],Redis 的数据集保存在叫 dump.rdb 一个二进制文件,这种策略被称为快照。 也可以手动调用Save或BGSAVE命令的: /usr/local/bin/redis-cli-h 127.0.0.1 -p 6379 -a pw...