最佳实践
学习笔记666
这个作者很懒,什么都没留下…
展开
-
编写高质量Objective-C代码
点标记语法属性和幂等方法(多次调用和一次调用返回的结果相同)使用点标记语法访问,其他的情况使用方括号标记语法。#良好的风格view.backgroundColor = [UIColor orangeColor]; [UIApplication sharedApplication].delegate; #不好的风格[view setBackgroundColor:[UIColor o转载 2015-09-01 11:53:49 · 364 阅读 · 0 评论 -
RBAC打造通用web管理权限01 - RBAC介绍
RBAC架构RBAC功能模块权限控制流程原创 2017-02-26 10:41:52 · 1103 阅读 · 0 评论 -
RBAC打造通用web管理权限02 - 数据库设计
CREATE TABLE `user` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(20) NOT NULL DEFAULT '' COMMENT '姓名', `email` varchar(30) NOT NULL DEFAULT '' COMMENT '邮箱', `is_admin` tinyi原创 2017-02-26 10:49:40 · 1244 阅读 · 0 评论 -
ElasticSearch速学 - 全文检索、分词器、过滤器
今天我们要来学习ElasticSearch的搜索方面的api,在开始之前,为了便于演示,我们先要创建一些索引数据。 Search APIs官方文档: https://www.elastic.co/guide/en/elasticsearch/reference/5.3/search.html1、按name搜索,搜索jackGET blog/users/_search?q=name:jack结果如原创 2017-04-19 15:45:50 · 10438 阅读 · 2 评论 -
ElasticSearch速学 - 自定义分析器、备份和恢复索引数据
我们前面对ElasticSearch搜索api里的分析器、分词、分词过滤器、字符过滤器有了一个简单的学习,实际上在我们正式使用当中肯定要自定义分析器,系统自带的分析器可能是不能满足我们的业务需求。我们还可能使用一些第三方的分词器,比如我们的中文分词怎么分。自定义分析器官方文档: https://www.elastic.co/guide/en/elasticsearch/reference/5.3/原创 2017-04-20 11:44:24 · 2157 阅读 · 1 评论 -
ElasticSearch速学 - IK中文分词器 、elasticdump数据导出导入、字段分词
我们前面简单的学习了分析器,包含了分词器、过滤器、字符过滤器等等。 这些内置的分析器很多时候并不能满足我们的需求,比如处理中文的时候。比较流行的中文分析器组件https://github.com/medcl/elasticsearch-analysis-ik安装maven1、maven官网http://maven.apache.org/download.cgi2、下载地址wget http://m原创 2017-04-29 15:18:55 · 3843 阅读 · 1 评论 -
ElasticSearch速学 - IK中文分词器远程字典设置
前面已经对”IK中文分词器“有了简单的了解: 但是可以发现不是对所有的词都能很好的区分,比如: 逼格这个词就没有分出来。词库实际上IK分词器也是根据一些词库来进行分词的,我们可以丰富这个词库。 IK分词器(IK Analysis for Elasticsearch)给了我们一个基本的配置: https://github.com/medcl/elasticsearch-analysis-i原创 2017-05-02 15:34:49 · 9684 阅读 · 1 评论 -
ElasticSearch速学 - 安装ElasticSearch的方法和要点
Elasticsearch:第三方开源搜索引擎。 ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。官网地址: http原创 2017-04-18 15:08:57 · 1055 阅读 · 0 评论 -
ElasticSearch速学 - 快速领悟:创建索引、api初步探索、查询数据
上节课我们完成了ElasticSearch的安装, 接下来我们应该这么学习?我们应该打看官方文档学习: https://www.elastic.co/guide/en/elasticsearch/reference/5.3/docs.html 1、我们来创建一个索引https://www.elastic.co/guide/en/elasticsearch/reference/5.3/docs-原创 2017-04-18 17:15:51 · 1490 阅读 · 0 评论 -
ElasticSearch速学 - 简单集群、初步配置和使用
今天我们来实现一台机器启动多个es实例 正式生产环境中,肯定都是分不同的服务器部署的,我们这里学习演示才是在一台机器上我这里有个文件夹上elasticsearch-5.3.0,需要复制一份:cp -R elasticsearch-5.3.0 elasticsearch-5.3.0-v2这样就有了2份elasticsearch了。接下来为了防止数据冲突,我们需要把elasticsearch-5.原创 2017-04-19 13:25:59 · 1564 阅读 · 0 评论 -
ElasticSearch速学 - 分析与可视化工具Kibana初识
Kibana是啥? Kibana是一个开源的分析和可视化工具,和ElasticSearch一起使用可以搜索、查看、交互存放在ElasticSearch索引里的数据,使用各种不同的图表、表格、地图等,Kibana能够轻易地展示高级数据分析和可视化资源官网: https://www.elastic.co/cn/downloads/kibana (注意要下对应的版本,我这里ElasticSear原创 2017-04-19 14:26:57 · 10271 阅读 · 1 评论 -
2个div,hover处理,需要判断鼠标是否在一个div内
var timer=null; $(".saveMore").mouseover(function(){ clearTimeout(timer); $('#save_more_layer').show(); }).mouseout(function(){ t转载 2017-07-11 17:16:05 · 3500 阅读 · 2 评论 -
分布式缓存:memcached(写操作缓存)
数据库的前端缓存区文件系统内核缓冲区,位于物理内存的内核地址空间,所有对磁盘文件的读写操作都要经过它,也可以把它看作是磁盘的前端设备。 这块内核缓冲区实际上包括2个部分:读缓存区、写缓存区。读缓存区中保存着最近系统从磁盘上读取的数据,一旦下次需要读取这些数据的时候,内核将直接从这里获得,而不需访问磁盘。 写缓存区的目的主要是为了减少磁盘的物理写操作,内核缓区可以将多次写操作指令累计起来,通过一次转载 2018-01-20 12:36:56 · 1450 阅读 · 0 评论 -
分布式缓存:memcached(监控状态、缓存扩展)
监控状态<?php$mem = memcache_connect("192.168.88.88",11211);$stats = $mem->getStats();var_dump($stats);我们可以很容易滴的通过php扩展来获取memcached的状态。 打印上面数组,我们可以从中获取很多信息,这里就不意义列举。 对于这些状态信息,我们可以简单地从三个方面来看: 空间使用率:持续转载 2018-01-20 13:21:33 · 891 阅读 · 0 评论 -
反向代理负载均衡 注意点
反向代理负载均衡反向代理的核心工作便是转发HTTP请求,因此它工作在HTTP层面,也就是TCP七层的应用层,所以基于反向代理的负载均衡也称为七层负载均衡。作为负载均衡调度器的反向代理完全扮演用户和实际服务器的中间人,这意味着: 1、任何对于实际服务器的HTTP的请求都必须经过调度器。 2、调度器等待实际服务器的HTTP响应,并将它反馈给用户。按权重分配任务在这种全新的调度模转载 2018-01-20 14:33:37 · 361 阅读 · 0 评论 -
操作系统:内存分层体系
什么是操作系统用户角度,操作系统是一个控制软件管理应用程序(为应用程序提供服务、杀死应用程序)资源管理(管理外设、分配资源)站在计算机内部,操作系统把CPU、磁盘、内存这三部分物理资源抽象成进程、文件、地址空间,来给我们的应用程序使用。操作系统层次结构:硬件之上,应用程序之下。Kernel (操作系统内部组件),包括:CPU调度器物理内存管理虚拟内存管理文件系统...原创 2018-02-08 16:34:28 · 1762 阅读 · 0 评论 -
Memcache 内存分配策略
memcached默认采用了名为Slab Allocator的机制分配和管理内存。在该机制出现以前,内存的分配是通过对所有记录简单的进行malloc和free来进行了。但是这种方式会导致内存碎片化严重,加重操作系统内存管理器的负担。Slab Allocator就是位了解决该问题而诞生的。Slab Allocator的基本原理是:按照预先规定的大小,将分配的内存以page为单位,默认情况下一个p...转载 2018-09-26 19:53:22 · 207 阅读 · 0 评论 -
session一致性架构设计实践
什么是session一致性问题?当只有一台web服务器提供服务时,每次http短连接请求,都能够正确路由到存储session对应的web服务上(因为只有一台)。但如果我们使用多台web服务器来做高可用时,每次http短连接请求就不一定能路由到正确的session了。会导致用户需要重新登录。session同步法思路:多个web服务器之间相互同步session,这样每个web服务器之间都包含了...转载 2018-09-26 20:56:52 · 206 阅读 · 0 评论 -
vagrant打造跨平台可移动的开发环境六 - vagrant打包分发环境
#关闭虚拟机vagrant halt#执行打包命令vagrant package --output lnmp.box执行完打包命令,就会生成一个box,然后我们就可以把这个lnmp.box交给小伙伴使用啦。 当小伙伴拿到这个box,他们就可以用vagrant启动这个box(这是一个装好了lnmp环境的box)。问题:升级了box,如何保证小伙伴的box和我的同步? 此时,对于老用户,可以通原创 2017-02-24 10:19:34 · 2434 阅读 · 0 评论 -
vagrant打造跨平台可移动的开发环境五 - vagrant虚拟机优化
1、虚拟机名字 编辑虚拟机配置文件Vagrantfile : config.vm.provider "virtualbox" do |vb| # # Display the VirtualBox GUI when booting the machine # vb.gui = true # # # Customize the amount of memory on原创 2017-02-24 09:45:14 · 699 阅读 · 0 评论 -
Mac电脑使用MAMP PRO作为php集成环境,在连接mysql的注意点
当我们在Mac上使用MAMP的时候,连接mysql设置数据库主机地址,可能"127.0.0.1"连接不上。解决方案是使用:localhost还可能多配置一项:unix_socket下面距离,在ThinkPHP 3.2.3中的数据库配置://数据库配置信息 'DB_TYPE' => 'mysql', // 数据库类型 'DB_HOST' => 'localhost原创 2016-02-22 12:01:26 · 8611 阅读 · 0 评论 -
Git分布式版本控制系统 基本介绍
在服务器上安装gityum -y install git创建一个叫git的用户 useradd git设置密码passwd git使用git用户登录服务器 su - git创建空的仓库 cd ~ git init --bare project1 windows上安装git客户端 下载地址:https://git-scm.com/download/win 需要注意的步骤原创 2016-08-31 20:42:33 · 530 阅读 · 0 评论 -
Mac电脑上MAMP开发环境安装memcache
一、先给Mac安装memcached服务器端 我这里是利用Homebrew来安装的,主要2个命令:brew install memcached 和 brew install libmemcached 相关可以查看这篇文章:http://blog.sina.com.cn/s/blog_6145ed810102vqu6.html二、下面重点来看一下MAMP这个软件如何安装memcache扩展 先原创 2016-07-04 10:56:29 · 2738 阅读 · 0 评论 -
Mac下PHP用的MAMP环境,开启OAuth扩展
1.php.ini里开启 2.如果没有,就需要我们自己安装该扩展了(1).利用Homebrew来安装(关于Homebrew自行百度)brew install php56-oauth #我当前用的php版本是5.6.10(2)或者pecl安装pecl install oauth这2种安装方式,我还没有测试,因为我这里只需要开启extension=oauth.so原创 2016-09-13 15:33:03 · 655 阅读 · 0 评论 -
SVN 代码版本管理软件
SVN代码版本管理软件一个人开发也要用版本管理工具?多人协作开发?异地开发?工作流程安装服务器软件Setup-Subversion-1.6.5.msi全部默认即可创建仓库运行 cmdsvnadmin create c:\svn_data说明c:\svn_data是服务器的仓库目录,不是写代码原创 2016-09-06 08:54:50 · 871 阅读 · 0 评论 -
Mac系统升级造成svn报错的问题
svn: E155036: Please see the 'svn upgrade' commandsvn: E155036: The working copy at '..../htdocs/xxxx'is too old (format 29) to work with client version '1.9.4 (r1740329)' (expects format 31). You ne转载 2016-09-23 16:30:58 · 2578 阅读 · 0 评论 -
svn 命令行下常用的几个命令
1、将文件checkout到本地目录 svn checkout path(path是服务器上的目录) 例如:svn checkout svn://192.168.1.1/pro/domain 简写:svn co 2、往版本库中添加新的文件 svn add file 例如:svn add test.php(添加test.php) svn add *.php(添加当前转载 2016-09-21 13:18:13 · 323 阅读 · 0 评论 -
svn: E155015: 提交失败(细节如下) 解决办法
svn 出现冲突是经常发生的事,最近改用命令操作svn,用界面电脑有些反应慢出现冲突使用svn 命令肯定也是可以解决的:查看警告信息提示冲突的文件,执行svn resolved <文件名>如果没有报错,就证明冲突已解决,再次提交就可以解决问题转载 2016-09-22 11:47:15 · 49475 阅读 · 5 评论 -
支付宝即时到账接口开发 - DEMO讲解
支付宝即时到帐接口环境要求PHP5.0以上,且需要开启curl、openssl。 文档地址: https://doc.open.alipay.com/doc2/detail?treeId=62&articleId=103566&docType=1 支付宝网页即时到账功能,可让用户在线向开发者的支付宝账号支付资金,交易资金即时到账,帮助开发者快速回笼资金。 交易步骤少,简单、方便。原创 2017-02-19 12:55:08 · 17212 阅读 · 0 评论 -
支付宝即时到账接口开发 - 支付宝即时到账接口和TP框架的结合
第一步:将核心方法和加密方法放到项目里,Application/Home/common/function.php中即可。方便调用。把alipay_core.function.php和alipay_md5.function.php2个文件中的函数,拷贝到function.php中。第二步:把alipay_notify.class.php和alipay_submit.class.php拷贝到TP框架源码原创 2017-02-19 19:29:09 · 4304 阅读 · 0 评论 -
OAuth2.0协议 - 介绍
OAuth协议简介OAuth的全称是「Open Authorization」。 OAuth协议为用户资源的授权提供了一个安全的、开放而有简易的标准。与以往的授权方式不同之处是OAuth授权不会使第三方触及到用户的帐号信息(如用户名和密码),即第三方无需使用用户的用户名和密码就可以申请获得该用户的资源的授权,因此OAuth是安全的。OAuth工作原理图解原创 2017-02-20 20:25:29 · 585 阅读 · 0 评论 -
OAuth2.0协议 - OAuth授权流程详解
三个重要步骤 1、慕课网向腾讯QQ OAuth请求OAuth登录页 2、用户在这个页面中输入QQ号和密码 3、最后腾讯QQ OAuth把登录结果返回给慕课网步骤一:请求OAuth登陆页Request Token URL:为授权的令牌请求服务地址 结合我们的例子就是:慕课网请求QQ登录页面时使用的带有『特定参数的URL』。https://graph.qq.com/oauth/show?whic原创 2017-02-20 21:10:18 · 16128 阅读 · 2 评论 -
ThinkPHP3.2.3完整版中对Auth.class.php的使用
一,先创建数据表1、think_auth_rule,规则表id:主键,name:规则唯一标识, title:规则中文名称 status 状态:为1正常,为0禁用,condition:规则表达式,为空表示存在就验证,不为空表示按照条件验证DROP TABLE IF EXISTS `think_auth_rule`;CREATE TABLE `think_auth_rule`原创 2015-12-11 15:40:26 · 6999 阅读 · 4 评论 -
vagrant打造跨平台可移动的开发环境四 - ThinkPHP5运行环境配置
1、准备框架源码我们在本机/Users/yongkaidong/vagrant/code 下,新建一个名为tp5的目录。 然后在把ThinkPHP5的源码放进去。映射到虚拟机中,就是/home/www/tp5 的目录下: 2、修改nginx默认配置文件 /etc/nginx/sites-enabled/default#把网站根目录指向我们的tp5的目录root /home/www/tp5/p原创 2017-02-23 21:21:26 · 1070 阅读 · 0 评论 -
vagrant打造跨平台可移动的开发环境二 - 安装lnmp环境
lnmp环境配置准备工作1、进入虚拟机vagrant ssh2、替换源(便于后面我们安装软件)#备份sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak#修改源sudo vim /etc/apt/sources.list将sources.list文件内容替换成以下:deb http://mirrors.aliyun.com/ubuntu/原创 2017-02-23 09:36:23 · 407 阅读 · 0 评论 -
vagrant打造跨平台可移动的开发环境三 - vagrant高级知识
端口转发:将本机具体的端口转发到指定的虚拟机端口 共享目录:讲本机具体目录和虚拟机共享 网络配置:三种网络配置方式1、端口转发 我们前面在VirtualBox中,手动配置了本机8888端口,转发到虚拟机中的80端口。 但重启vagrant后,就没有了。vagrant reload因为vagrant重启之后,就会重新读取它的配置文件Vagrantfile。编辑此文件,配置端口转发:原创 2017-02-23 13:36:28 · 546 阅读 · 0 评论 -
vagrant打造跨平台可移动的开发环境一 - vagrant介绍
Vagrant是什么?了解vagrant之前,我们先来讲一讲『虚拟机』。 我们用过虚拟机软件大概有以下2个:VirtualBox、vmware。 这2个软件都是通过镜像文件,去创建独立的环境。Vagrant是构建在虚拟化技术之上的虚拟机运行环境管理工具: 建立和删除虚拟机 配置虚拟机运行参数 管理虚拟机运行状态 自动化配置和安装开发环境 打包和分发虚拟机运行环境Va原创 2017-02-22 21:24:35 · 797 阅读 · 0 评论 -
秒杀系统架构优化思路
秒杀业务为什么难做读写冲突,锁非常严重,这是秒杀业务难的地方。优化方向1、将请求尽量拦截在系统上游(不要让锁冲突落到数据库上去)2、充分利用缓存常见秒杀架构a浏览器 -> b站点 -> c服务 -> d数据a浏览器端:最上层,会执行到一些JS代码;b站点层:这一层会访问后端数据,拼html页面返回给浏览器;c服务层:向上游屏蔽底层数据细节,提供数据访问;d数...转载 2018-09-23 09:49:03 · 309 阅读 · 0 评论