当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化:单表优化除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的表在千万级以下,字符串为主的表在五百万以下是没有太大问题的。而事实上很多时候MySQL单表的性能依然有不少优化空间,甚至能正常支撑千万级以上的数据量:字段1、尽量使用TINYINT、SMALLINT、MEDIUM_INT作为整数类型而非INT,如果非负则加上UNSIGNED2、VARCHAR的长度只分配真正需要的空间3、使用枚举或整数代替字符串类型4、尽量使用TIMESTAMP而非DATETIME,5、单表不要有太多字段,建议在20以内6、避免使用NULL字段,很难查询优化且占用额外索引空间7、用整型来存IP索引1、索引并不是越多越好,要根据查询有针对性的创建,考虑在WHERE和ORDER BY命令上涉及的列建立索引,可根据EXPLAIN来查看是否用了索引还是全表扫描2、应尽量避免在WH
Docker是什么Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似 iPhone 的 app),更重要的是容器性能开销极低从这个解释我们不知道大家有没有想到一个优点类似的东西,没错就是 Vagrant :  vagrant打造跨平台可移动的开发环境    ,那么这两个东西有什么区别咧?Docker 与 Vagrant的区别从字面意思上来讲,这两个东西都可以实现虚拟化。Vagrant 是基于Virtualbox等虚拟机软件的实现的(Vagrant 本身并不提供虚拟技术,只是调用Virtualbox等提供的接口,进行虚拟机的管理),而Docker是基于LXC轻量级容器虚拟技术。一般我们用Vagrant来部署开发环境,Do
操作环境操作系统:CentOS7.2 内存:1GB CPU:2核Docker服务常用命令docker服务操作命令如下service docker start #启动服务 service docker stop  #停止服务 service docker restart #重启服务 service docker status   #查看服务状态启动Docker服务docker是一个CS模型,需要先启动服务端,直接执行 sudo service docker start 启动docker服务。sudo service dokcer start service docker status # 检查服务状态HelloWorld 初体验直接运行 sudo
  缘由由于个人经常在ubuntu和centos 系统中切换,习惯了以前的 ubuntu中 通过 /etc/init.d/xxx 进行软件服务控制。后来发现centos7中换了服务的控制方式:serviceservice关键字service httpd start 其实是启动了存放在/etc/init.d目录下的脚本。但是centos7的服务管理改规则了。CentOS 7继承了RHEL 7的新的特性,例如强大的systemctl,而systemctl的使用也使得以往系统服务的/etc/init.d的启动脚本的方式就此改变,也大幅提高了系统服务的运行效率。但服务的配置和以往也发生了极大的不同,说实在的,变的简单而易用了许多。CentOS 7的服务systemctl脚本存放在:/usr/lib/systemd/,有系统(system)和用户(user)之分,像需要开机不登陆就能运行的程序,还是存在系统服务里吧,即:/usr/lib/systemd/system目录下每一个服务以.service结
问题今天我在启动虚拟机过程 遇到莫名其妙的问题,启动不了。如下图。提示某个文件系统错误了。例如我的就是 /dev/mapper/vagrant--vg-root 。上面问题 可把我急坏了,以为虚拟机坏了。最后找到了解决方法,分享出来。解决方法在 如上截图的命令行 直接输入命令: fsck  /dev/mapper/vagrant--vg-root  。奇迹就发生了,居然好了。哈哈
问题最近把mac的操作系统升级到了最新版本发现了一个问题,通过共享文件夹的方式 修改的文件,无法立即同步到虚拟机中,大概需要30秒才能同步到共享文件夹。操作环境如下虚拟机:Virtualbox虚拟机操作系统:Ubuntu16.04虚拟机管理工具:Vagrant物理机:Mac  High Sierra  10.13.4现象截图正常截图修改文件之后的截图可以发现,当修改之后 通过终端查看文件发现 直接提示 error了并且文件的权限也不对了都变成?了 (如上图)苦恼每次修改一个文件都要等一会才能看到效果,非常急人,不是我们互联网人的追求效率的做法。那我们就要想办法解决。我知道肯定是升级系统造成的,但是不知道如何解决,就Googole了很久,终于找到了解决方法解决方法设置vagrant 目录同步的 :mount_options => ['actimeo=2'] 。修改完成如下config.vm.synced_folder "
  我想很多程序员应该记得 GitHub 上有一个 Awesome - XXX 系列的资源整理。awesome-python 是 vinta 发起维护的 Python 资源列表,内容包括:Web 框架、网络爬虫、网络内容提取、模板引擎、数据库、数据可视化、图片处理、文本处理、自然语言处理、机器学习、日志、代码分析等。由伯乐在线持续更新。Awesome 系列虽然挺全,但基本只对收录的资源做了极为简要的介绍,如果有更详细的中文介绍,对相应开发者的帮助会更大。这也是我们发起这个开源项目的初衷。环境管理管理 Python 版本和环境的工具p:非常简单的交互式 python 版本管理工具。官网pyenv:简单的 Python 版本管理工具。官网Vex:可以在虚拟环境中执行命令。官网virtualenv:创建独立 Python 环境的工具。官网virtualenvwrapper:virtualenv 的一组扩展。官网包管理管理包和依赖的工具。pip:Python 包和依赖关系管理工具。官网pi
开场白一转眼工作将近7个年头,时间过得好快哇。年少不懂事,上天惩罚我,婚也结了。不要暗恋哥,哥已是传说。恍恍惚惚过了这么多年,想整理下个人技能树,也提醒下自己我的技能树经常看到各种技能树,那我也来一发,我认为作为一个研发人员,不应该只会自己领域内的东西,不要让自己的路越走越窄。熟话说:技多不压身,有精力就多学点了。如下图(点击打开大图:我要看大图)个人实战过得系统工作这么多年,做过了不少东西,想到就列出来,其他零星小的就不说了个人博客地址:http://www.54php.cn 虚拟化Vagrant :http://www.54php.cn/default/26.html RBAC:http://www.54php.cn/default/42.htmlYii2打造后台+微信全栈图书商城: http://book.54php.cn/ Python3 + Flask构建微信小程序订餐系统:https://food.54php.cn/ 快速上手Linux 玩转典型
在企业内部一般都会有自己的DNS服务,主要为了企业方便管理,例如访问一些内部系统,控制一些网站不让访问,今天我们就说说如何打造私有的DNS服务系统基础配置Ubuntu14.04  内存:354M (使用vagrant 创建的虚拟机,快速打造自己开发环境 vagrant + virtualbox)    安装DNS服务sudo apt-get install bind9 bind9utils修改配置上篮三步简单设置  用 dr.local.com 为测试域名1.配置forward  编辑/etc/bind/named.conf.optionsforwarders {     114.114.114.114;     8.8.8.8; };2.配置需要解析的域名 编辑/etc/bind/named.con
需求如果你想在树莓上拍照或者录影,你可以安装树莓派的摄像头(有点贵)。如果你不想要为摄像头模块花费额外的金钱,那有另外一个方法,就是你常见的USB 摄像头。你可能已经在PC上安装过了。我买的如图的这款本篇文章讲解的就是 在树莓派上使用USB摄像头检测摄像头$ ll /dev/video* crw-rw----+ 1 root video 81, 0 May 20 23:57 /dev/video0 $ lsusb Bus 001 Device 005: ID 248a:8367 Bus 001 Device 004: ID 1415:2000 Nam Tai E&E Products Ltd. or&
  需求希望每天早上上班之前可以自动语言报告下今天的天气情况准备树莓派3音响(前面已经配置了音响)环境python3获取天气信息本次我们使用的是墨迹天气,我住在浦东,就获取浦东的天气,浦东墨迹天气。源代码地址:https://github.com/apanly/pi3Robot/blob/master/jobs/tasks/weather/index.py文字转语音(TTS)我选择了一个快速可以实现,拿起来就可以用的一个Http Api。我从百度语音演示页面通过开发者工具发现这个api的,拱大家使用。http://tts.baidu.com/text2audio?idx=1&tex=你好,我是编程浪子&cuid=baidu_speech_demo&cod=2&lan=zh&ctp=1&pdt=1&spd=4&per=4&vol=5&pit=5然后根据mplayer 直接播放这个网址就可以啦定时任务使用linux的
在工作中需要对手机号码进行归属地查询,就在网上找了下解决方案,发现通过号段非常好判断。我将数据库文件放到了百度网盘,请有需要的朋友去下载。链接: https://pan.baidu.com/s/1ZEnymCpaCF7uG9z5uSbfdA 密码: 6w7f演示地址:http://m.54php.cn/demo/mobile
需求个人正在用Python写一个控制系统,技术选型是python3 + Flask + Mysql + Bootstrap。需要将这套系统直接部署到树莓派中.代码地址:https://github.com/apanly/pi3Robot 目录结构准备sudo mkdir -p /data/www sudo chown -R pi:pi /data/www mkdir -p /data/www/logs     .     |-- logs     |-- pi3Robot 代码存放位置     `-- pythonenv 虚拟环境python虚拟环境python 源$ mk
需求在树莓派上 安装Mysql 服务,并开启远程访问步骤安装 mysql server$ sudo apt-get install mysql-server我以为中间会让我提示输入 数据库root的密码,没想到一帆风顺,直接完成,我要疯了,密码到底是什么了。通过搜索发现,可以使用如下命令,空密码登录$ sudo mysql -u root设置root密码use mysql; update user set plugin='mysql_native_password' where user='root'; UPDATE user SET password=PASSWORD('你自己的密码') WHERE user='root'; flush
播放音乐说明使用树莓派3来播放音乐,将音响连接到树莓派的AV输出接口即可听到音乐介绍如何更改树莓派音频输出接口以及调节音量。准备条件树莓派33.5mm耳机或者音响一个步骤安装MPlayer, MPlayer 是一款开源的多媒体播放器,树莓派上安装mplayer即可播放音乐或者其他音频信息$ sudo apt-get update $ sudo apt-get install mplayer2如果遇到如下报错,请按照以下步骤处理The following packages have unmet dependencies:  mplayer2 : Depends: libdvdnav4 (>= 4.2.0+20120524) but it is not goi
树莓派是什么玩意Raspberry Pi(中文名为“树莓派”,简写为RPi,(或者RasPi / RPI)   是为学习计算机编程教育而设计,只有信用卡大小的微型电脑,其系统基于Linux。  随着Windows 10 IoT的发布,我们也将可以用上运行Windows的树莓派。 自问世以来,受众多计算机发烧友和创客的追捧,曾经一“派”难求。别看其外表“娇小”,内“心”却很强大,视频、音频等功能通通皆有,可谓是“麻雀虽小,五脏俱全”。是不是非常心动,那就一起来摇滚吧入坑准备工作树莓派3代B型E14 树莓派散热片配件自带粘贴胶纯铜树莓派通用亚克力透明外壳树莓派读卡器 5V2A 电源适配器(家里有多余的手机充电线和充电头就不用买了)TF卡 建议至少32G,本人在JD购买的64G的如下,入坑基本费用 400 大元左右下载操作系统树莓派官方 Raspbian 系统下载:http://www.raspberrypi.org/download
根据 2017 年的 DevOps 发展报告,高效能组织和低效能组织在软件交付的效率上有数量级上的差异。技术组织的软件交付能力是一种综合能力,涉及众多环节,其中发布是尤为重要的环节。 作为技术人员,大家可能听说过“滚动发布”和“蓝绿发布”等术语,但是很多人并不清楚这些术语背后的原理。本文试图总结当前主流的发布策略,每个的优劣,适用性,让开发人员特别是架构师对现代发布技术有一个更为清晰全面的认识,让大家能够根据自己的企业上下文,对发布策略做出正确的选型和实践。 一、单服务器组发布 先解释下单服务器组的概念,早先我们机器资源比较紧张,不像现在云计算和虚拟化(包括容器技术)这么发达,所以应用机器基本是预先静态分配好的(一般由运维负责分配),原来应用 A 住在这 n 台机器上,那么下次升级发布的应用 A 也住在这 n 台机器上,所以称为单服务器组发布方式。
下面是详细步骤:1. 首先确定进程的 ID ,可以使用 jps -v 或者 top 命令直接查看2. 查看该进程中哪个线程占用大量 CPU,执行 top -H -p [PID] 结果如下:可以发现编号为 350xx 的共有 9 个线程占用了 100% 的 CPU,好,接下来咱们随便取一个线程 ID ,假设我们想看编号为 35053 这个线程。首先将 35053 转成 16 进制是 88ED (可以用开源中国在线工具转换)3. 接下来我们将进程中的所有线程输出到一个文件中,执行:jstack [PID] > jstack.txt4. 在进程中查找对应的线程 ID,执行:cat jstack.txt | grep -i 88ED结果是:"HTTP Request From : /xxxx/blog/323432(120.27.143.239)" #266 daemon prio=5 os_prio=0 tid=0x00007fcda4146800 nid=0x88e
我们在做业务项目,客户端的输入总是无法控制,有各种各样的特殊字符,这些特殊字符就要借助ASCII码表才能判断,所以我做了一张图,方便查看为什么要搞个表出来,下面的字符串中,你看看你能否看的出来是什么特殊字符嘛(中间空白地方)20160807  1看不出来吧,让我们看看16进制是什么$ hexdump -C tmp.md 0000000 32 30 31 36 30 38 30 37 20 c2 a0 31 000000c三个特殊字符是 20,c2,a0 这只能对应ascii码表找了
有一次去图书馆看书,遇到一个刚毕业不久,在图书馆学习php,我就和他聊天,他期间问到一个问题“如何开发一个大型网站”,这个问题吓不倒我呀,我了解一些了,当时就和他连说带比划了一次,回家了我仔细又想了想,觉得还是写篇文章记录下任何网站都是从一个小网站 演变成 一个复杂的网站的(后面我们用成熟的网站表示大型网站)才开始一个网站不可能非常成熟的,都是随着用户量的增长,业务功能的不断扩展逐渐完善的第一:最初的网站架构 这个时候应该是最简单的架构了,应用程序,文件,数据库,web软件 都放在一台服务器上了,如下图(这就是我现在的基本架构了,嗯哼,就是小网站了)第二:应用程序,文件,数据库分离随着业务的发展,一台服务器已经满足不了性能要求了,所以这个时候将 应用程序,文件,数据库分别放在单独的服务器上第三:可以适当使用缓存改善网站性能提升硬件的配置同时,我们也可以使用软件做性能优化的,这里我们重点说的是数据库缓存,目前可以使用memcache/redis等软件第四:使用集群改善应用服务器性
缘由我们公司最近手机端H5 经常受到商户和用户的投诉,说有广告并且导致不能正常进行操作,我们商户自己当然不会加广告了,但是商户和用户可不管这些了,就认为是我们的问题探索发现根本目前我们用的很多浏览器,都提供插件功能,在Chrome浏览器体系下有个 广告终结者插件:可以用来屏蔽网页中的广告部分。受到这个插件的影响,我先探索下 广告劫持是怎么做的?我就想到通过获取网页html代码过来分析,如下JS代码setTimeout(function(){     $.ajax({         url:"/error/ad_log",         type:'post',        &nbs
前言在博文中 解读大型网站的演变过程  浅谈 举家搬迁静态文件到CDN 博文中都有涉及CDN,这次我们来详细讲解下CDN的架构简介CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN的关键技术主要有内容存储和分发技术。CDN的基本原理是广泛采用各种缓存服务器,将这些缓存服务器分布到用户访问相对集中的地区或网络中,在用户访问网站时,利用全局负载技术将用户的访问指向距离最近的工作正常的缓存服务器上,由缓存服务器直接响应用户请求好处提升访问资源速度,为用户提供更好的用户体验,例如访问某个图片,原来如果从源站获取可能需要30s,但是使用cdn之后可能只需要 1 ~ 5 s,因为cdn是从离用户最近的服务器获取图片资源的适用对象静态资源,例如js,css,图片资源,视频,音乐资源,软件资源等等CDN架构实例:某个用户访问图
缘由本周技术群有一个同学说我们该怎么实现 由近到远的基于地理位置的搜索,我创业做电商的系统做过类似这样的服务,我把我们以前的操作给大家分享下什么是LBSLBS 全称是 Location  Based Service ,基于位置的服务。我们可以使用到这种服务,真是由于我国移动设备的大量增加,让我们加速进入了 移动互联网的时代。由近到远的基于地理位置的搜索  其实就是 通过当前使用用户的经纬度,然后从我们自己的数据库中查出指定范围内(例如5km)的数据,按照由近到远的顺序 进行展示。这句话中有四个条件用户的经纬度,我们定义 用户维度为:$lat 、经度:$lng指定范围,定义范围:distince数据库中商家的经纬度字段,定义 维度为:lat,经度:lng计算 用户经纬度 与 数据库中商家的经纬度 距离,由远及近进行排序接下来,我们一起来用两种方案实现实现方案一:这种方案会比较挫,理想模型计算阀值点计算某个经纬度的周围某段距离的正方形的四个点为什么这么计算,我给大家举个例
  查看软件xxx安装内容:dpkg -L xxx 查找软件库中的软件:apt-cache search 正则表达式 查找软件库中的软件:aptitude search 软件包 查找文件属于哪个包:dpkg -S filename 查找文件属于哪个包:apt-file search filename 查询软件xxx依赖哪些包:apt-cache depends xxx 查询软件xxx被哪些包依赖:apt-cache rdepends xxx 增加一个光盘源:sudo apt-cdrom add 系统升级:sudo apt-get update;sudo apt-get dist-upgrade 清除已删除包的残馀配置文件:dpkg -l |grep ^rc|awk&
  最近应该说比较忙,今天休息了一天,算是对自己身体健康的一个缓冲。今天抽出一小会时间 说说 为什么我会去云平台录制课程始于想挣点外快哎呀,咋和我们梦想中的高大上的话术有点不一样。是不是觉得我应该说点比较激励的鸡汤哇。哈哈当时云平台的人找到我,让我录制课程,我是思考过要不要去作为讲师的。当时由于在创业过程中,出现了一些问题,比较清闲。然后基于自己对自己能力的风骚自信,我就给自己了一次尝试的机会。通过把自己会的东西以视频的方式分享出来而赚取一部分费用,我觉得没有什么不好意思说的。所以基于自己对自己的风骚自信 和 赚点外快的想法,我踏入了网络讲师这个行业源于责任以前我上大学那会,觉得老师好像挺辛苦的,一个课程要重复反复讲N次。直到我自己做一个无证的网络讲师,我发现老师的真的不容易。给大家我说说我在录制课程中的体会,我目录已经录制了3个课程(RBAC打造通用web管理权限,Vagrant打造跨平台可移动的开发环境,Yii 2.0 微信服务号开发带后台的图书商城)。在这三个课程过程中,给大家呈现的2
最近突发奇想想做个在线音乐小网页。需求很简单,如下搜索歌曲 或 歌手在线播放音乐借用qq 或者 百度的 音乐接口需求明确那就直接动手了我首先尝试的百度音乐,但是不能在线播放(提示forbidden),虽然不能在线播放,但是下载是可以的百度音乐具体Api如下1:搜索接口$url = "http://musicmini.baidu.com/app/search/searchList.php?qword=%s&ie=utf-8&page=1";//qword就是要搜索的歌曲或者歌手 $url = sprintf( $url,urlencode($kw) );这个其实不能算是接口了,是百度的一个页面,直接可以访问2: 根据搜索结果得到的html字符串,然后取出song_id,使用正则表达式    3:根据song_id 获取 歌曲信息,接口如下$url 
缘由我们程序员难免要和数据库打交道,经过这几年的锻炼,感觉手写SQL语句已经忘记的差不错了,促使我一定要这篇文章的原因是,有一次晚上我更新某个系统的数据库的表(由于目前公司比较严格,数据库都只能通过命令行访问,无法通过GUI工具操作),然后由于where 条件写错了,然后数据更新错了不少。痛定思痛:用好的工具来避免这种情况,那就是phpMyadminphpMyadminphpMyAdmin是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具,让管理者可用Web接口管理MySQL数据库。借由此Web接口可以成为一个简易方式输入繁杂SQL语法的较佳途径,尤其要处理大量资料的汇入及汇出更为方便。其中一个更大的优势在于由于phpMyAdmin跟其他PHP程式一样在网页服务器上执行,但是您可以在任何地方使用这些程式产生的HTML页面,也就是于远端管理MySQL数据库,方便的建立、修改、删除数据库及资料表。也可借由phpMyAdmin建立常用的php语法,方便编写
  • 微信公众号 微信小程序
  • 微信机器人
  • 群1:1046090432
  • 群2:585567981