细节研究
宁无竹
这个作者很懒,什么都没留下…
展开
-
通过user-agent获取用户的手机品牌,最全
获取ua对应的手机品牌1、当前市面上最全2、欢迎大家提供ua线索安装Vuenpm install pingansec-brandua其他dist/brandua.min.js 你懂的用法//非vue 省略这行import BrandUa from "pingansec-brandua";BrandUa.getBrand('Android HUAWEI');GitHubhttps://github.com/suxianbaozi/phonecheck...原创 2021-04-29 21:00:07 · 2298 阅读 · 2 评论 -
随时统计linux日志输出速度
经常要查看一些日志的输出速度,用来判断是否有速度异常等如果全部加上监控的话会很麻烦,而且可能看了一次就再也不看了,是否有一个工具可以马上看到日志的输出速度呢?我给大家写了一个代码很简单,文件名log_speed.py#!/usr/bin/env python#coding:utf8import sysimport timecount = 0time_start = time.time()while True: row = sys.stdin.readl.原创 2021-03-08 20:47:03 · 463 阅读 · 0 评论 -
自动调整字体大小适用容器宽度
自动调整字体大小适用容器宽度经常遇到标题里的内容不固定的情况,用三个点来兼容,效果还不是太完美,如果,文字太多,字符自动变小,就可以很完美的解决问题1、首先我们需要有一个方法获取字符占用的宽度,通过字符的长度来计算肯定很不准,正好canvas有这个方法measureText,需要指定字体2、然后我们需要一个循环来不断的尝试 我们能用的最大字体是多少ok 上代码export let AutoShrink ={ getMaxFontSize:function (text,containerWi原创 2020-09-01 19:21:40 · 872 阅读 · 2 评论 -
我们来做一个不可破解的验证码
我们先来分析一下市面上的验证码1、明显漏洞验证码有明显漏洞的验证码 一般是根本就不明白验证码是用来干什么的程序员设计出来,可能是产品设计上有个验证码,好,那我实现一个,或者是外包公司实现功能即可,根本不管客户死活下面是一个案例给用户一个数学运算,然后求结果, 结果这个数学运算,用字符的形式输出到页面上,而不是保存成一张图片,这种验证码,形同虚设2、数字,字母,中文验...原创 2019-12-05 12:00:28 · 758 阅读 · 0 评论 -
cgit增加代码高亮
绝对6的一逼原创 2016-03-24 11:10:51 · 891 阅读 · 1 评论 -
浅谈网上流传最多javascript继承方法的不足之处
我们知道javascript的继承方式只能通过自己来实现,网上流传了许多的版本,常见的版本如下function Parent(){ this.gogogo = {}; this.name = 'hehe';}Parent.prototype = {};function Child(){}Child.prototype = new Parent();原创 2016-04-20 15:00:15 · 437 阅读 · 0 评论 -
简单验证码识别
说到验证码识别,肯定会提到 tesseract-ocr这个玩意是google出的一款文字识别工具,但是它有一个致命的弱点,就是不能受到任何干扰所以这篇文章主要是介绍如何去除验证码干扰的一些思路准备工作 1、tesseract-ocr 安装方法 不就介绍了,很简单2、语言 python 需要扩展PIL 安装也简单 easy_in原创 2016-07-12 14:18:34 · 651 阅读 · 0 评论 -
Redis 的性能幻想与残酷现实
2011 年,当初选择 Redis 作为主要的内存数据存储,主要吸引我的是它提供多样的基础数据结构可以很方便的实现业务需求。另一方面又比较担心它的性能是否足以支撑,毕竟当时 Redis 还属于比较新的开源产品。但 Redis 官网宣称其是提供多数据结构的高性能存储,我们对其还是抱有幻想的。幻想要了解 Redis 的性能,我们先看看官方的基准性能测试数据,心里有个底。测试前提R转载 2016-10-08 17:19:25 · 482 阅读 · 0 评论 -
如何从死宅变成户外狂魔?
找一个粘人又爱出去撒欢的媳妇原创 2017-07-11 11:39:42 · 462 阅读 · 0 评论 -
完美实现javascript继承
js的继承 主要是继承两个部分一个是写在函数体内 通过 this 定义的方法和属性代码function parent(){ this.name = 1; this.fuck = function(){ }}继承这种方法需要在初始化的时候进行继承,我看许多其他的例子 是通过实例化之后 进行处理,我觉得这样写 就没有继承的样子了所原创 2016-04-12 15:16:12 · 587 阅读 · 0 评论 -
如何在手机浏览器上实现真正的0.5像素的线
我们知道,在苹果手机的浏览器上,如果你用1px来表达宽度,那么得到的实际效果是一个很宽的很丑陋的线去百度搜了搜,大家实现的方式多种,大都是用阴影来做的但是阴影这东西,一是色不准,二是这玩意很影响性能,所以不行啊下面楼主提供了一个办法用ps做一张2*2px的图片,上半部分一个像素的空白,下半部分是一个像素的黑(你目标的颜色)原创 2016-01-07 12:40:42 · 3041 阅读 · 0 评论 -
js如何判断函数或者方法中的this指向谁?四句话
1.谁作为拥有者调用它就指向谁function a() { console.log(this); }var b = {};b.hehe = a;b.hehe();//这时候this指向b//常见的就是绑定事件2.bind谁就指向谁function a() { console.log(this); }var...原创 2016-01-13 18:39:35 · 5112 阅读 · 0 评论 -
10大需要注意的web app问题
Don't generate the UI on the server 不要在服务器上处理uiLimit network access 尽量减少网络操作Don't wait for the data to display the UI 不要因为等待数据而延迟显示uiUse hardware acceleration 使用硬件加速Avoid click event's 300ms delay 不要使原创 2015-11-13 12:17:28 · 935 阅读 · 0 评论 -
android sdk里的那些东西都是用来干嘛的?
主要分成这么几部分1.build tools2.tools3.platform-tools4.platform第一是用来build项目的,里边有好几个版本,和platform里的版本相同,什么版本 build什么版本的platform第二个和第三个只保存第一个版本,就是最新版tools里包括 模拟器 ddms等platform-tools 里就是ad原创 2015-09-16 17:41:09 · 6363 阅读 · 0 评论 -
我理解的ios和android
最近着手了几个android和ios的项目,现在说下我的几个对他们的理解从设计上来讲,我认为android 它更像是个网页,一个页面跳到另外一个页面,两者之间的关联不是很大,只能传递一些简单的参数,两个activity甚至可以独立存在iphone呢,两个页面之间关系就很大了,push的,还模态的,等等,每个view都要依赖生成它的view,除非你是rootview原创 2014-07-24 11:11:52 · 979 阅读 · 0 评论 -
新浪微博私信,即时聊天接口研究
由于要写个chrome插件来进行发发私信什么的 你懂得,,,,由于是个插件,就不要去研究模拟登陆啦,cookie问题不用考虑,可以用ajax任意访问weibo的所有地址但是如果两人从来没有交流过,那么第一次发私信是要过验证码的但是有种情况不需要,那就是用新浪的im,就是右下角的即时聊天的那个玩意,研究发现,如果需要调用者个即时聊天的接口,需要如下几个步骤原创 2013-08-22 15:40:11 · 5688 阅读 · 13 评论 -
记一次redis-cluster分别重启之后发生的问题
phpfpm版本:7.0phpredis版本:3.1.2 三台redis实例分别重启之后,发生如下情形 1.php 的 fpm 数量无故增高,2.nginx 连接fpm 有超时502的情况3.某台redis一直占用85%的cpu 具体原因猜测: fpm在连接redis-cluster之后,redis服务正在loading,导致某种死循环的情形出现 ...原创 2017-06-09 15:01:22 · 1908 阅读 · 0 评论 -
一个用python写的websocket服务端
由于要在页面上调用后台的一个shell程序,但是这个shell执行时间很长,如果异步获取shell的输出?而不必漫长的等待shell执行完毕才会一下把数据全部输出?我们知道原生的http协议不可能完成这个要求,除非你把输出更新到一个文本里,然后用js伦询去取,这不扯淡吗因为是内部的程序,当然有这样要求的程序基本都是内部,或者小团体使用,所以,尝试一下websocket吧先研...原创 2012-11-28 17:30:23 · 16165 阅读 · 4 评论 -
php常见使用的服务的长链接方法(mysql,redis,memcache,mongodb)
在一个高流量的服务器,如果不使用长链接的话 会造成大量的 time_wait ,这样就会导致没有可用的tcp资源,导致系统很慢,负载很高,还经常出现无法connect的情况所以我们需要长链接来解决问题mysql: $db_string='mysql:host='.$config['host'].';port='.$config['port'].';...原创 2019-07-25 14:29:35 · 306 阅读 · 0 评论 -
macos 的chrome竟然缓存了60万个文件在同一个目录下,导致速度极慢
最近chrome越来越慢,怀疑是版本问题,操作系统升级导致,结果都不对,最后发下在新建无痕的模式下速度特别快,怀疑缓存的问题1、清楚缓存,记住,账号密码,浏览记录,还有cookie不要清,清了就凉了,只清除存文件,转了半天没反应2、找到缓存目录 ls 卡主,查看文件数量惊呆了 60万个3、直接执行rm -rf ~/Library/Caches/Google/Chrome ,删了...原创 2019-07-16 11:35:56 · 515 阅读 · 0 评论 -
python过滤引起xml报错的非utf8字符
很久以前只有ascci这个东西,他是单字节的,我们知道一个字节 是0x00-0xff,所以assci中 0x00-1f是控制符,0x20-0x7e是可显示字符 ,0x7f 是删除,至于0x7f以上的 貌似没啥用,这些字符一般都会造成乱码,而且在我们日常的网页,xml,等普通文本中,0x0-01f 一般也都是乱码,只有0x09 0x0a 0x0d 代表 \t \n \r 可以使用,...原创 2019-06-22 18:53:55 · 758 阅读 · 0 评论 -
云服务器的cpu突然不够用,可能不是你的应用出了问题噢
最近每天早上十点高峰,应用服务器突然就卡死,cpu跑满,代码撤回几天前,检查各种服务,流量都无异常,一时找不到问题,怀疑网络慢,检测之后也无问题,最后在查看磁盘io的时候撇到了cpu的几个占用率 user 代表用户的应用使用占比system代表系统其中steal占了接近一半搜了下发现这个steal竟然是因为虚拟主机的宿主机cpu不够用导致的 马上联系...原创 2018-11-01 11:06:47 · 1308 阅读 · 0 评论 -
前端移动开发屏幕自适应的最好办法
前言因为移动端屏幕尺寸大小不一,前端开发的时候,往往根据psd大估摸的进行开发,利用百分比进行兼容这样做出来的页面和psd可能非常不一样,且开发缓慢 目的1、开发者只需要量取psd的尺寸直接写到css中,无需考虑屏幕兼容2、系统根据屏幕大小自动生成相应的css尺寸,小屏自动缩放,大屏自动放大,完全和psd相同 解决方案我们在写css的时候在相关尺寸的地方换一种方...原创 2018-07-17 18:18:01 · 2240 阅读 · 0 评论 -
技术宅教你如何煎一个特别牛逼且装逼的牛排
1、不要腌制,不要腌制,不要腌制,说三遍,许多教程要用神马生抽柠檬红酒百里香腌制,都是骗人的鬼话。这些估计都是饭店里的,因为他们用的牛排特别烂2、不要用不粘锅,不粘锅煎出来的牛排其实是煮出来的,因为牛排下方油流不进去,而且不粘锅的温度不够高,改用铸铁,或者去买个条纹铸铁锅3、黑胡椒粉要现磨的,买那个一瓶带磨的就行4、海盐来一罐,也是那个能磨的5、牛排冷冻拿出来如果没时间解冻放微波炉...原创 2018-06-14 12:01:03 · 2116 阅读 · 0 评论 -
用php实现java的String的hashCode方法
function intval32($num) { $num = $num & 0xffffffff;//消掉高32位 $p = $num>>31; //取第一位 判断是正数还是负数 if($p==1) { //负数 $num = $num-1; $num = ~$num; //取反 会当成64位取反原创 2017-04-26 15:10:30 · 2227 阅读 · 0 评论 -
微信小程序在 小于 ios 8 的情况下,内置的promise包无法使用解决方案
引入外部的promise没有现成的,没办法,自己写一个喽function promise(toWait) { this.t = new Date(); this.isPromiseObject = 1; this.toWait = toWait; this.thenList = []; this.thenIndex = 0; this.res = function (da...原创 2018-05-12 10:13:47 · 1362 阅读 · 0 评论 -
两步打造一个漂亮的终端,支持git状态分支显示
先来看一下成果安装也很简单cd /etc/sudo git clone https://github.com/suxianbaozi/goodterminal.gitsudo vi /etc/bashrc 加入内容 source /etc/goodterminal/gtprofile立即生效的话,直接执行命令source /etc/goodterminal/gtprofile...原创 2018-04-08 15:34:50 · 625 阅读 · 0 评论 -
php短链接设计
设计的主要问题,如何把一个url转成一个6位的字符串,且这些字符串不允许冲突,比如不能让两个不同的url生成同一个字符串有的同学可能说直接md5然后截前6位,但是这样很容出现冲突可能有的同学说用一个index来累加,但是6位的只能表达999999个链接,明显达不到要求,怎么办呢,笔者这里给一个思路既然是6位,那么每位如果可能出现 0-9 a-z A-Z 就有 62的6次方种可能这样能表达的最大值就...原创 2018-03-22 18:06:50 · 613 阅读 · 0 评论 -
如何设计一个健壮而且厉害防爬策略
0.首先你得有一个能扛住爬虫的可以计算黑白名单的数据库,当然我们选择redis,单台 qps 达到20000+,杠杠的,然后你得在不影响业务的情况下来验证爬虫,我们可以通过异步读取nginx的access.log进行校验,前台只需要在关键的功能点判断一下ip是否在黑名单即可1. 同一个ip在某个功能点一秒两次请求算爬虫,将ip加入黑名单,防住大部分的爬虫2 .截取一段请求列表,如果某一个u...原创 2018-01-08 21:50:41 · 455 阅读 · 0 评论 -
redis-cluster 性能调优
redis-cluster#关闭RDB防止fork进程的内存溢出问题save ""appendonly=yes#防止某个节点挂掉,整个cluster挂掉的问题cluster-require-full-coverage no#设置最大内存maxmemory 114532461221145324612228991029原创 2017-06-09 15:10:10 · 5345 阅读 · 0 评论 -
屌丝也用按位与(&),按位或(|) (二)
上篇讲到了,用按位操作进行配置,下边来讲一个大神也在用的例子linux的权限系统我们知道一个文件,如果是777,那么是最高的权限,那这个七是咋构成的,我会告诉你是 4+2+1么?我会告诉你,是100+010+001么?看到没,看到没?如那个位置上是1说明就有这个权限读写执行分别对应这三位二进制的某位,如果你要只读,那就是100,也就是4,如果是读写,那就原创 2013-11-14 09:40:29 · 1022 阅读 · 0 评论 -
屌丝也用按位与(&),按位或(|)
大神,高帅富,请绕过作为一个屌丝程序员,只有在蓝翔技校上课的时候才会用到这俩操作符,有时候想着,或许只有白富美请教高帅富的时候,才能知道这两个高端的操作符的具体用处现在屌丝有福了这俩操作符大家都知道什么意思按位于,比如 3 & 4 转换成二进制 011 & 100 每位都于操作那得到 000 =>0按位或,比如 3 | 4 转换成二进制 011 & 100 每位都于原创 2013-11-12 11:57:42 · 1102 阅读 · 0 评论 -
js闭包的一个小问题
如下 两端代码function a(){ var b = 1; window.setTimeout(function(){ //用定时器来触发就不搞按钮啦 alert(b); },3000); }a();function a(){ var b = 1; window.setTimeout(function(){ //用定时器来触发就不搞按钮啦 al原创 2013-09-12 10:59:17 · 1002 阅读 · 0 评论 -
解决js绑定事件this指向发生改变的问题
可对函数进行如下扩展 Function.prototype.bind = function(obj) { var _this = this; return function() { _this.apply(obj,arguments); }}用法如下var a = function(){原创 2013-04-23 10:51:48 · 1784 阅读 · 0 评论 -
如何做好数据库缓存
1.按照主键查询2.按照条件查询,将结果,分两部分缓存,一是主键的集合,而是分主键,将每条数据都缓存掉3.修改时候,按照主键改,去更新主键的缓存,这样,行和列的缓存都被更新4.修改的时候,按照条件改,按照条件将查出主键id,更新缓存,然后按照主键id进行更新5.删除,按照主键删的,将该主键缓存清空6.删除,按照条件删的,同47.列取缓存的时候,从缓中,先取id列表,然后,用原创 2013-03-25 21:25:53 · 1699 阅读 · 4 评论 -
关于php中intval在32和64位的问题
php的int行在32位的系统上是4Byte,在64位上是8Byte,导致在超过4Byte的整数,在32和64返回的结果不同,现在写一个统一的函数,统一用32位的算法function intval32($num) { $num = $num & 0xffffffff;//消掉高32位 $p = $num>>31; //取第一位 判断是正数还是负数 if($p==1) { /原创 2013-03-25 21:18:00 · 3279 阅读 · 0 评论 -
如何做到apache不重启而切换版本呢?
apache始终指向某一个目录下的index.php,然后这个index.php负责转发请求,包含代码库原创 2013-03-25 21:16:14 · 1080 阅读 · 0 评论 -
jquery中.each的实现方法
Array.prototype.each = function(callback) { for(var i=0;i<this.length;i++) { callback(i,this[i]); }}[1,2,3,4].each(function(index,item) { alert(index); alert(item);原创 2013-03-25 21:16:47 · 1097 阅读 · 0 评论 -
图片压缩上传
1.采用flash,你不必懂flash,会js就好2.可配置3.图片可压缩4.图片不会丢失exif噢5.合理利用带宽代码在这儿:https://github.com/suxianbaozi/upload_fast原创 2013-03-25 21:15:16 · 1798 阅读 · 0 评论 -
在linux上将ape转成mp3,以及MP3 大小转换
sudo apt-get install ffmpegsudo apt-get install lamesudo apt-get install ffmpeg libavcodec-extra-53avconv -i 1.ape -ab 321k 321.mp3 ape转成mp3 耗时 16s avconv -i 321.mp3 -ab原创 2013-04-01 14:48:24 · 1416 阅读 · 0 评论