- 博客(66)
- 资源 (1)
- 收藏
- 关注
原创 读源码学MYSQL系列(二)decimal存储转化函数decimal2bin
问题来源 高精度计算是计算机工程实践中非常重要的内容,在涉及到精确计算的项目中,思考过数据库的设计。因而比较好奇MYSQL中是如何实现对decimal的支持的。本文通过源码阅读,分析理解decimal的存储及各种运算转化。参考源代码:https://github.com/google/mysql/blob/master/include/decimal.hhttps://github.co...
2020-06-27 18:03:02 1340
原创 AWS EC2 ubuntu新增用户(密钥登录)
AWS上的EC2主机默认采用了更为安全的密钥连接,在保留密钥连接的情形下,如何新增用户呢?步骤1.创建一对新的密钥 进入AWS的EC2控制台,查看左边的菜单列表。选择《网络与安全》—《密钥对》—《创建密钥对》,然后选择pem文件格式,保存生成的私钥。该私钥为新用户登录使用,注意不要丢失和泄露。2.创建新用户 登录系统默认的ubuntu用户,按如下命令操作:sudo adduse...
2020-03-07 16:31:26 1681
原创 MAC升级nodejs遇到的bug
前几天需要把MAC上的nodejs升级到最新的稳定版,遇到一个少见的问题,查了半天最后才解决。记录如下:升级流程第一步,查看当前版本。node -v第二步,安装n工具,专门用作nodejs版本管理的插件。sudo npm install -g n第三步,安装最新的LTS版本。sudo n lts第四步,验证。node -v问题安装完成后,敲node命令时,出现如下问题...
2020-02-19 19:26:43 6009 2
原创 读源码学MYSQL系列(一)decimal类型用法及存储实现
最近在项目中用到了许多浮点数,精度要求较高,小数点后有4位甚至8位的,思考了一下,类似需求在工程计算、数值计算、股票金融、数字货币等场景都会出现。...
2019-12-30 20:51:57 3353 1
原创 linux禁止screen打开会话时改变窗口大小
问题来源 在后台运行程序时,经常需要常驻后台。现有的terminal一旦断线程序就会结束,screen提供了一个远程保持会话的机会,将程序运行在screen打开的会话中,重新登录上远程服务器后,可以恢复到原来的会话。类似的工具还有tmux。 screen在使用过程中,因为远程会话窗口具有标准大小,因而会改变terminal终端的大小,在使用过程中窗体大小突然变了,非常烦。根据博主的经验,在...
2019-10-06 16:24:41 2149 2
原创 记一次阿里云木马排查过程
问题描述接到阿里云报警邮件,说是一台ECS有恶意进程。查看阿里云的安全详情,发现如下情况:登录到服务器上检查/bin目录,发现该文件确实不对,大小变成的1.1M,类似的还有netstat。如下图:正常ubuntu系统下的ps才96K,netstat大小为117K,上述命令文件被恶意窜改了。此外,还发现启动脚本(/etc/rc1.d, /etc/rc2.d, /etc/rc3.d, /et...
2019-08-07 17:17:31 4544 1
原创 当跨域遇上浏览器缓存
问题描述在做一个图片相关的项目时,需要用canvas对图片进行在线绘制。图片素材放在了CDN上,因而canvas的访问带来了跨域问题。为了解决跨域问题,在CDN上配置了跨域访问头。如下所示:Access-Control-Allow-OriginAccess-Control-Allow-Methods然而配置好了跨域请求头之后,浏览器仍然提示跨域访问被拒绝。百般费解,为什么CDN已经配置...
2019-04-15 22:18:38 3630
原创 curl命令测试网络请求中DNS解析、响应时间
经查遇到需要测量网络请求时间的问题,包括DNS解析、连接、传输等时间。Linux下的curl命令可以很好的测量网络请求。如下curl -o /dev/null -s -w %{time_connect}:%{time_starttransfer}:%{time_total} http://www.baidu.com 0.034:0.066:0.067-o表示输出结果到/dev/null,-s
2017-10-02 21:08:27 10977
原创 nginx日志分割(log rotation)
nginx没有内置日志分割功能,容易造成日志累积,文件越来越大。必须借助于外部命令或者工具来分割日志。本文介绍通过几条命令来分割日志。日志分割脚本将实现分割日志的脚本放在/usr/local/bin/rotate_nginx_log.sh,内容如下#!/bin/sh# Get yesterday's date as YYYY-MM-DDYESTERDAY=$(date
2016-12-27 22:29:55 3493
原创 pm2管理nodejs服务
安装npm install -g pm2基本用法启动进程pm2 start app.js --name my_service 或者,不同版本也可以这样启动pm2 start bin/www --name my_service–name参数指定启动后的进程名。查看所有进程pm2 list查看日志pm2 logs查看指定进程的日志pm2 logs my_service //通过进程名称
2016-12-11 22:49:34 8416 1
原创 mysql数据库导入导出
有时候因为服务迁移,需要迁移数据库,可以使用mysql的导入导出功能。导出数据库mysqldump -u<username> -p<password> <database> > test.sql将database数据库导出到test.sql文件中。示例mysqldump -uguest -p12345678 school > test.sql //将school数据库导出导出表mysqld
2016-12-11 21:46:20 871
原创 git基础问题汇总
用了一段时间git,发现许多用法记不住,立贴写下来吧。git简写命令修改配置文件~/.gitconfig,内容如下:[alias] co = checkout ci = commit st = status pl = pull ps = push dt = difftool l = log --stat cp = cherry-pick
2016-12-11 21:21:14 582
原创 mysql用户创建与授权
在多用户情形下,为了避免用户访问或者操作不属于自己的数据,需要使用用户权限将不同用户的数据隔离开来。mysql的用户授权可以精确到表、操作和某个IP地址。创建用户create user 'username'@'host' identified by 'password';用法说明username : 用户名host : ip地址,用户在哪个主机登录,如果是本机可以使用localhost,如果允许任意
2016-12-11 17:09:13 669
原创 web性能测试:apache benchmark(ab)
开发完网站或者web接口后,一个比较负责任的工作就是测试一下接口性能,也叫做压力测试。web接口的性能直接关系服务的稳定和并发量,一个数值评估通常可以给服务能力给出一个比较好的指导。本文介绍比较常用的web性能测试工具ab(apache benchmark)。安装ab命令来源于apache工具包,ubuntu可以通过下面的命令安装:sudo apt-get install apac
2016-10-23 22:01:57 5966 1
原创 apache2三种模式及参数调优
问题来源一般配置应付小规模的访问量其实没什么问题,只是最近我们设计了一些定点抢优惠的促销活动,所以在特定时间点,访问量会比较集中。峰值差不多达到了每秒1000到2000次的访问,而且还在继续增长中。我们一直判断是数据库卡死的问题,后来发现,原来了服务器挂了。进一步定位,发现是apache接收了太多了请求,起了无数进程,内存用爆,机器卡死了。如何配置apache,最大程度的发挥系统性能呢?apache
2016-10-23 20:56:31 21556 1
原创 apache2日志格式
ubuntu 16.04中,默认的apache2配置文件位于/etc/apache2/apache2.conf其中可以找到LogFormat语法,定义了日志格式如下:LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combinedLogFormat "%h %l %u %t \
2016-10-17 07:51:18 3308
原创 安卓apk反编译、修改、重新打包、签名全过程
首先明确,反编译别人apk是一件不厚道的事情。代码是程序员辛苦工作的成果,想通过这种手段不劳而获,是不对的。这也说明,代码混淆是非常重要的。本文抱着学习的态度,研究在一些特殊的情况下如果有需要,该怎么反编译apk。工具简介apktool,编译和反编译apk,从apk中提取图片和布局资源dex2jar,将可运行文件classes.dex反编译为jar源码文件jd-gui,查看jar源码文件反编译apk
2016-10-16 01:52:37 92095 2
原创 获取微信浏览器的真实IP地址
问题来源获取用户客户端IP地址是一个很简单的需求。用户打开网页,发送一个HTTP请求,后台从中提取出IP地址。但是,在使用微信打开网页时,发现获取到的IP地址和在浏览器打开所得到的IP地址不一样。用不同的浏览器,测试多次,都得到一个这样的结论。中间一定是出了什么问题。Solution其实这是使用了代理的问题,后台直接从HTTP头中获取到的host是最后一次经过的代理的地址。幸运的是,http包在转发
2016-10-07 16:12:03 23370 3
原创 见证微信小程序之火热
上周,微信小程序(应用号)终于在网络上炸锅了,朋友圈、QQ、技术社区等,讨论得热火朝天。甚至还有程序员在直播平台,解读微信小程序种种。这种程序员乃至全民都关注某个产品事件的盛况,还真是很少见。抱着凑热闹的态度,本人也加了几个QQ群,跟踪了事态的发展。震惊于劳动人民的伟大智慧,记得是凌晨传出来的有200个内测邀请的消息,白天就有各种流言和消息,内测人士揭秘,还有流传出来的微信开发者工具,不知道是
2016-10-07 01:31:32 1286
原创 直方图最大矩形
问题给定直方图,求直方图中最大的矩形面积。例如下图,用数组表示为[2,1,5,6,2,3]。对应的最大矩形面积为10.枚举对每个左边界,可以枚举其右边界的位置,寻找面积最大值。int h[] = [2,1,5,6,2,3];int length = 6, max = 0, s = 0;for(int i = 0; i < length; i ++) {
2016-09-10 22:04:00 1933 8
原创 最大子数组和
题目输入一个整型数组,数组里面有正数也有负数。数组中一个或连续的多个元素组成一个子数组。求所有子数组的和的最大值。例如,输入的数组为{1, -2, 3, 10, -4, 7, 2, -5},和最大的子数组为{3, 10, -4, 7, 2}。因此输出为该子数组的和 18 。思路一:枚举枚举的思路很简单,计算所有子数组的和,然后取最大值。参考代码如下:int arr[] = {1, -2, 3, 10
2016-09-06 20:39:56 506
原创 安卓开发入门篇(一):Android Studio导入ApiDemos
引言本人程序员,之前做网站比较多,nodejs/express+html/css+mysql,再之前也做过Java开发,编程上还是有丰富的经验。在持续的实战中,发现想做产品的话,前端似乎更重要,因为前端才能看到产品形态。虽然说移动端形势已经每况愈下,但考虑到VR、车载系统、Glass等各类终端系统都是基于安卓,还是觉得有必要掌握移动端开发。遂立志学习安卓,边学习,边记录心路历程,以帮助更多像我这样的
2016-08-25 23:15:35 23832 2
原创 nodejs日期时间插件moment.js
问题来源js自带的日期Date可以满足一些基本的需求,例如格式化、时间戳等。new Date().toISOString() //"2016-08-22T09:03:29.860Z"Date.now() //1471856598359但是Date不能随意格式化,功能其实特别弱。简单用用还好,但真有复杂的日期转换需求,还是处理不了。网上用的比较多的是momen
2016-08-22 18:54:23 17841
原创 nodejs gm drawText使用(中文、字体、大小及颜色)
node党悲催的发现,图片处理工具只有一个gm可以选。gm无非是调用了GraphicsMagick/ImageMagick而已,性能不敢恭维。但是有很多后台生成图片的场景,没办法,也只好硬着头皮上了。前文( nodejs图片处理工具gm用法 )总结了nodejs gm的基本操作,本篇细说给图片添加文字的接口drawText。基本用法gm("test.png").drawText(x, y, tex
2016-08-18 13:07:10 12364
原创 nodejs裁剪圆形图片(crop to circle image)
问题来源在前端开发当中,经常有展示圆形图像的需求。在H5开发当中,使用border-radius属性就可以解决,安卓或者IOS,肯定也有相应办法。 如果想在后端裁剪出圆形图片,该怎么解决呢?SolutionImageMagic(未验证)如果系统使用的是imagemagic,可以使用如下命令裁剪:convert -size 200x200 xc:none -fill walter.jpg -draw
2016-08-15 22:37:59 6025 1
原创 使用base64进行移动端图片上传
之前搞微信上的图片上传,想直接通过接口上传到自己的图片服务器,发现移动端浏览器上挺多坑的,使用最简单的form-data形式好像不成。研究了一下,发现base64格式通用性较强。base64编码base64是一种使用可打印字符来描述二进制数据的方法。base64字符集共有64个字符,包括a-zA-Z0-9共62个,另外两个符号为+和/。ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef
2016-07-31 18:17:14 18619
原创 nodejs使用request发送http请求
在nodejs的开发中,有时需要后台去调用其他服务器的接口,这个时候,就需要发送HTTP请求了。有一个简单的工具可以用,Simplified HTTP request client,可以比较方便的模拟请求。安装npm install --save request使用最简单的GET请求,用法如下:var request = require('request');request('http://www
2016-07-31 01:28:10 122953 3
原创 curl上传文件
在写上传文件的后台接口时,本来是想用postman测试的,不知道为什么,测试问题失败,上传的数据格式老是不对。后来想到,用curl来试试,好像还真成。curl -F "key=value" -F "filename=@file.tar.gz" http://localhost/upload如果使用了-F参数,curl会以multipart/form-data的方式发送POST请求。-F以key=va
2016-07-27 22:16:43 36866 4
原创 mysql生成不重复随机数(unique number generation)
问题来源业务中有时会遇到要生成不重复随机数的情况,例如,新生成一个商品的id、房间的id、或者其他物品的id等。不愿意采用数据库中的记录id,同时又要保证新生成的id是不重复的。这就需要考验mysql的随机数功能了。Solutionmysql的rand函数可以生成一个0到1之间的随机数,进行一定的放大即可得到一个随机数。再通过条件查询来限制新随机数没有在表中出现过。如下所示:SELECT FLOOR
2016-07-27 21:50:35 35560 4
原创 nodejs基于async waterfall/retry的出错重试流程设计
最近搞了一个线上服务,用到了async的waterfall方法,主要是因为服务的流程比较长,结果上线后非常不稳定,估计有至少1/4的访问没有成功。至此,方才明白稳定可靠服务的重要性。 我们知道,使用waterfall可以保证一序列函数执行的顺序,那么如何来保证每个步骤如果执行失败了,可以再试一次呢? 这就用到了async中的retry方法。
2016-07-14 22:34:47 4586
原创 MYSQL timestamp用法
最近在写网页时,会用到一个记录的更新时间。记得mysql是有这样的字段的,可以直接在一条记录更新时,自动更新时间。上网查了查,找到了,是timestamp类型。
2016-07-08 01:26:48 5063
原创 linux下合并文件夹
在window下,如果直接将一个文件夹拷贝到另外一个包含同名文件夹的位置,可以选择将两个文件夹合并。 那么,linux下的mv命令是否有同样的功能呢?可以将同名文件夹合并呢? 答案是否定的。 但是,有其他命令可以完成同样的功能。这个就是rsync。
2016-07-03 01:49:30 45702 2
原创 CentOS7 交换文件(swap file)设置
问题来源想在买的VPS上搭点博客服务,偏爱于动态博客之类的,选用了nodejs,范围一下就减小了,一开始看中了N-blog。需要安装bower,如果在安装的时候,一直提示npm版本问题:npm WARN deprecated This version of npm lacks support for important features,npm WARN deprecated such as sc
2016-06-19 03:28:40 7212
原创 nodejs读取图片像素
之前在做H5时,有这么一个关于图片的问题,就是把一张图片裁剪得左右空白部分对称,图片背景为白色。这件事情说来也简单,读取图片的像素,分别检测左右空白部分的宽度,然后裁剪到一样即可 。接下来就涉及到读取图片像素的问题了,发现了一个好用的工具get-pixels,可以读取图片像素并返回数组。安装npm install --save get-pixels目前支持PNG, JPEG和GIF三种格式的图片。用
2016-06-15 02:19:49 17121
转载 div嵌套后margin出现失效(转移)的问题
声明:本文是转载文章,原文在这里:div嵌套引起的margin-top不起作用。在一次写页面时,发现div嵌套后margin居然失效了,直接作用到了外层div上,调了好了一阵子发现css应该没有写错。于是想,会不会有什么潜在的我不知道的因素,一搜果然发现有许多人遇到了类似的问题,转载于此。现象:在一些浏览器中,有两个嵌套关系的div,如果外层div的父元素padding值为0,那么内层div的mar
2016-06-14 20:20:22 4848
原创 nodejs图片处理工具gm用法
在做H5应用中,有时候会涉及到一些图片加工处理的操作,nodejs有一个很好的后台图片处理module,就是这里说的gm。gm有官方文档,但感觉写得比较全,反而看得不太懂了。这里把一些常见的用法写下,供大家参考。
2016-06-14 01:49:34 44492 1
原创 html中的垂直居中实现
在做H5的过程中,经常会遇到文字或者图片的垂直居中问题,试了不同的办法,感觉这是一个困扰前端程序员的难题。网上也能找到许多文章,配方将我所用过的办法总结如下:文字居中使用line-height
2016-06-12 15:56:06 21480
原创 html/css排版一些简单的数学公式
最近做H5应用,遇到了一个棘手的问题,怎么在网页上排版中学题目。问题关键在于,现在的中学题目,具有太丰富的形式,在网页设计的时候,有许多情形要考虑,列几条: - 题目篇幅太长,一般还带有阅读材料,主要体现在语文和英语上 - 图文混排,格式比较杂 - 理科还有各种公式之类的 - 选项多样,单选,多选 这么看来,在线教育的题库,确实是个比较重要的问题。 在做这个的时候,发现一些小的技巧可以解
2016-06-10 18:08:58 20692 1
原创 nodejs express 允许跨域访问(Access-Control-Allow-Origin)
前世今生在WEB应用普及的今天,个人信息(账号、COOKIE等)广泛应用于网页。浏览器同源策略保证了WEB环境的安全性。同源策略是说,在a.com域名下通过ajax或者XmlHttpRequest等方式访问b.com的资源时,是不被允许的。然而在很多时候,出于业务的的需要,我们经常有类似的跨域访问 的需求。浏览器有一些支持跨域访问的标签,例如script,img等。 有这样的需求,自然就
2016-06-09 02:15:44 43764 4
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人