- 博客(37)
- 收藏
- 关注

原创 一文看懂JSONP原理和应用
什么是JSONP首先提一下JSON这个概念,JSON是一种轻量级的数据传输格式,被广泛应用于当前Web应用中。JSON格式数据的编码和解析基本在所有主流语言中都被实现,所以现在大部分前后端分离的架构都以JSON格式进行数据的传输。那么JSONP是什么呢? 首先抛出浏览器同源策略这个概念,为了保证用户访问的安全,现代浏览器使用了同源策略,即不允许访问非同源的页面,详细的概念大家可以自行百度。这里大家
2016-09-27 14:54:44
90501
28
原创 一个帮助你升职加薪的重要方法
原创公众号 二鱼先生,求支持今年有一个词不论是在政治环境中还是在商业环境中出现得都特别多,它就是不确定性。疫情的突然到来使得很多公司经营面临极大的挑战,很多公司倒下了,也有很多公司为了不倒下只能选择裁员的方式缩小规模,降低成本。因此对我们在职场中的大多数人,所面临的不确定性也大大增加,今天想聊聊如何在这种不确定性中找到更多的确定性。在股市投资中,有一类股票被称为成长股,这类股票现在的估值可能不高,但是它们的业绩保持高速增长,这样的股票往往会受到长期投资者的青睐。在职场中也是这样,一个.
2020-12-21 16:16:38
418
4
原创 Gin添加基于logrus的日志组件
概述在Web应用中,日志是非常重要的一部分数据,通过日志我们可以把控每天的请求情况和应用运行情况,还能够大大方便我们定位和追踪问题,所以非常有必要在开发时为Gin框架加入日志组件设计logrus是Go语言一款非常流行的日志库,其中封装了非常多方便易用的方法,所以我们也基于这个库来进行实现。需要实现的功能有:作为Gin的中间件记录每一次请求的信息,包括请求时间,运行时间,请求的Uri等封装一个记录日志的方法,可在其他模块中调用,用于记录业务相关的日志实现直接上代码第一步:封装logger
2020-11-26 16:26:11
2437
4
原创 使用py-spy解决scrapy卡死的问题
背景在使用scrapy爬取东西的时候,使用crontab定时的启动爬虫,但是发现机器上经常产生很多卡死的scrapy进程,一段时间不管的话,会导致有10几个进程都卡死在那,并且会导致数据产出延迟。问题定位使用py-spy这个非常好用的python性能分析工具来进行排查,py-spy可以查看一个python进程函数调用用时,类似unix下的top命令。所以我们用这个工具看看是什么函数一直在执行。首先安装这个工具pip install py-spy用py-spy看看scrapy哪个函数执行时间长
2020-07-30 16:11:39
1976
1
原创 解决go build报错cannot find main module; see 'go help modules'
描述:在学习golang的过程中,在$GOPATH/src/github.com/xxx/hello目录下执行go build和go test都会报下面的错误go: cannot find main module; see ‘go help modules’原因:之前为了提高依赖包的下载速度,使用了goproxy然后开启的时候使用了以下命令$ go env -w GO111MODULE...
2020-04-25 22:09:57
30444
4
原创 坑爹的URL编码-PHP正确处理URL中的加号(+)
问题背景接收客户端传入参数,base64解码失败,经过排查发现原因是参数上传前字符串中有+,但是PHP接收后,发现+变成了空格,导致base64解码失败。测试验证访问一个测试的接口 /internal/testcurl 'http://127.0.0.1/internal/test?a=abc+def'验证1:简单输出$_GETpublic function test() { ...
2020-03-24 12:17:59
2578
原创 PHP基于字典树算法实现搜索联想功能
搜索联想功能是各大搜索引擎具备的基础功能,如下图所示,这个功能简化了用户的输入行为,并且能够给用户推荐热门的搜索词,下面我们来讲一下如何用php实现搜索联想的功能。实现原理搜索联想功能拆解一下由两部分组成给定一个查询词,找出以他为前缀的其他目标查询词对目标查询词进行排序,选出权重高的若干个查询词本篇中重点讲解一下第一部分的实现,这里使用Trie树,也叫字典树,这个数据结构来解决这个...
2019-11-04 17:22:44
1567
原创 解决PHP连接Redis报read error on connection错误
背景项目由于并发很高,所以将之前连接redis使用短连接改成了长连接,结果导致出现了抛出了read error on connection出现原因php有一个配置项default_socket_timeout表示一个socket连接的超时时间,默认是60s,而phpredis这个扩展的底层连接redis是使用的socket,所以当一个连接在60秒内没有被使用的时候,下次连接就会抛出这个异常。...
2019-07-09 18:58:52
6791
原创 解决Keras报错AttributeError: 'NoneType' object has no attribute 'inbound_nodes'
背景在用Keras的时候遇到了这个报错AttributeError: 'NoneType' object has no attribute 'inbound_nodes'原因原来是对Tensor操作的方法用错了,做了一个扩展操作,将一个2D的张量扩展成一个3D的张量使用了K.repeat()的方法,这个方法返回的是一个Tensor,而不是一个Layer,当然没有入节点inbound_n...
2018-11-01 14:38:41
23260
原创 Spark简单读写Hive
Spark版本:1.6.0 语言:Python 2.7使用Spark写入Hive表# --coding=utf-8--from pyspark import SparkContextfrom pyspark import SparkConffrom pyspark.sql import HiveContextconf = SparkConf().setAppName('t...
2018-06-08 17:58:59
4535
原创 个性化阅读中的推荐系统(一)
最近要为一个资讯类的项目加入个性化推荐的逻辑,以给用户展示更加符合其阅读偏好的文章,提高点击率。之前研究过相关理论,这次在工程中应用上,也属于一边摸索一边实践的过程。概述推荐系统中常用的推荐算法有: - 基于内容的推荐content-based - 协同过滤collaborative filtering - 基于模型的推荐,隐语义模型(LFM, latent factor
2018-01-23 15:17:01
2531
原创 一文学会sklearn计算余弦相似度
余弦相似度在计算文本相似度等问题中有着广泛的应用,scikit-learn中提供了方便的调用方法 第一种,使用cosine_similarity,传入一个变量a时,返回数组的第i行第j列表示a[i]与a[j]的余弦相似度>>> from sklearn.metrics.pairwise import cosine_similarity>>> a=[[1,3,2],[2,2,1]]>>>
2018-01-17 11:18:13
21468
1
原创 Ueditor自定义图片上传接口-PHP版
百度的开源前端富文本编辑器Ueditor各种有着强大的功能,但是在实际项目中,往往不会把图片直接上传到后端服务器上,而是上传到图床或者CDN上,本篇文章介绍了如何在实际项目中使用 Ueditor将图片上传到图床或者CDN
2017-09-12 14:54:57
12687
3
原创 Nginx proxy_set_header中$proxy_host,$host,$http_host的区别
在使用Nginx做反向代理的时候,proxy_set_header功能可以设置反向代理后的http header中的host, 那么常用的几个设置中$proxy_host, $host,$http_host又都表示什么意思呢? Nginx的官网文档中说下面这两条是做反代时默认的,所以$proxy_host 自然是 proxy_pass后面跟着的host了 proxy_set_header Hos
2017-05-18 18:55:37
27373
原创 基于角色的权限管理系统设计思路
概述权限管理功能是项目中重要的部分,通过权限系统可以控制系统中各用户所拥有的权限,比如能否打开一个页面,能否进行某项操作,合理的权限控制可以规避误操作的风险,提高系统的可用性。 权限管理的思路一般为基于角色和基于资源两种,基于角色即对为用户赋予某些角色的权限,基于资源则为对用户赋予某些资源的权限。两种既可以单独实现,也可结合起来使用。设计思路系统中抽象出操作、角色、用户三个概念,其中操作由项目中抽
2017-05-18 18:05:11
10215
1
原创 PHP获取指定日期之间各月第一天和最后一天
主要用到了PHP强悍的strtotime和date函数。1.获取指定日期所在月的第一天function getMonthFirstDay($date) { return date('Y-m-01',strtotime($date));}2.获取指定日期所在月的最后一天function getMonthEndDay($date) { $firstDay = getMonthFirst
2017-05-08 18:35:20
1830
原创 Python Logging模块-配置文件说明
首先直接来看一个配置文件[loggers]keys=root,simpleExample[handlers]keys=consoleHandler,fileHandler[formatters]keys=simpleFormatter[logger_root]level=DEBUGhandlers=fileHandler[logger_simpleExample]
2016-04-26 16:02:40
2778
1
原创 Python Logging模块-介绍与使用
概述Logging模块是python自带的日志模块,提供了强大的API和配置系统,用于在项目中打印各级别的日志。日志级别Logging模块提供了5种日志的级别,如下表所示: 级别 说明 DEBUG 详细的信息,在进行诊断问题时使用 INFO 正常运行的信息 WARNING 警示发生了一些意外的情况,或者警示将会出现问题,比如磁盘空间不足。程序仍正常运行。 ERR
2016-04-25 17:21:48
729
原创 mac配置nginx+php
nginx1.mac下使用brew即可 brew install nginx2.使用sudo nginx 启动 访问localhost:8080 即可看到nginx的欢迎页面 3.使用#重新加载配置|重启|停止|退出 nginxnginx -s reload|reopen|stop|quit#测试配置是否有语法错误nginx -t4.设置开机启动ln -sfv /usr/local/opt/n
2016-04-14 17:00:06
813
转载 【转】分布式异步任务队列 Celery + rabbitmq (or redis )
最近的项目要使用异步的任务队列,初步选用了Celery,比较轻量级,但是对Task,Broker,Worker等概念有些理解的不透彻,找到以下文章,甚是透彻。 当我们需要处理一些比较耗时的任务时,我们就需要考虑启用“异步”这个概念。 比如以下两种情况:一,频繁读写 比如说,现在你一条“微博”,如果是使用 push 的机制,那则需要将这条“微博”告知所有关注你的人。 (这里是假设。实际的微博是
2016-03-29 10:53:23
3001
原创 centos 下redis安装与使用与配置
redis的安装redis可以用源码和yum安装,我这里用了yum安装,快捷方便 。 1.安装epel仓库 yum install epel-release 2.安装redis yum install redisredis的使用1.启动redis服务端 redis-server 2.启动redis客户端 redis-cli 3.测试下,在服务端执行
2016-03-24 10:54:31
781
转载 【消息队列MQ】各类MQ比较
最近项目用到消息队列,做了一些调研,转载下别人的文章:RabbitMQ是使用Erlang编写的一个开源的消息队列,本身支持很多的协议:AMQP,XMPP, SMTP, STOMP,也正是如此,使的它变的非常重量级,更适合于企业级的开发。同时实现了一个经纪人(Broker)构架,这意味着消息在发送给客户端时先在中心队列排队。对路由(Routing),负载均衡(Load bal
2016-03-18 16:25:51
879
原创 PHP 二维数组排序——array_multisort()
有时候我们要对一个多维数组进行排序,如对以下数组: $a = array( array( 'age' => 10, 'name' => 'John', ), array( 'age' => 11, 'name' ...
2016-03-18 10:23:43
698
转载 Centos 6.x 安装mysql
一、mysql简介说到数据库,我们大多想到的是关系型数据库,比如mysql、oracle、sqlserver等等,这些数据库软件在windows上安装都非常的方便,在Linux上如果要安装数据库,咱不得不首先推荐的是mysql数据库了,而且Mysql数据库的第一个版本就是发行在Linux系统上的。MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Orac
2015-12-23 15:46:35
600
原创 Centos6.3 Minimal 虚拟机安装与配置
Centos6.3 Minimal 虚拟机安装与配置安装下载ISO镜像,从网上一搜很多,Centos6.x的版本安装方法类似打开Vmware,选择新建虚拟机选择典型即可,安装过程第二步注意选择稍后安装操作系统 然后选择linux-centos,一直下一步一直到配置界面 新CD/DVD(IDE)选择使用ISO映像文件,然后选择下载的Centos镜像 网络连接选择桥接,关闭,
2015-10-19 23:45:26
700
原创 Python3使用mysql.connector操作mysql数据库
下载mysql.connector:到http://dev.mysql.com/downloads/connector/python/下载并安装
2014-11-04 21:08:56
2949
原创 win7,win8 64位php加载curl失败解决方法
首先要将PHP目录中的libeay32.dll 和 ssleay32.dll 两个文件到 system32 目录
2014-05-15 20:10:36
1068
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人