自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(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 1231

原创 AWS EC2 ubuntu新增用户(密钥登录)

  AWS上的EC2主机默认采用了更为安全的密钥连接,在保留密钥连接的情形下,如何新增用户呢?步骤1.创建一对新的密钥  进入AWS的EC2控制台,查看左边的菜单列表。选择《网络与安全》—《密钥对》—《创建密钥对》,然后选择pem文件格式,保存生成的私钥。该私钥为新用户登录使用,注意不要丢失和泄露。2.创建新用户  登录系统默认的ubuntu用户,按如下命令操作:sudo adduse...

2020-03-07 16:31:26 1534

原创 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 5931 2

原创 读源码学MYSQL系列(一)decimal类型用法及存储实现

最近在项目中用到了许多浮点数,精度要求较高,小数点后有4位甚至8位的,思考了一下,类似需求在工程计算、数值计算、股票金融、数字货币等场景都会出现。...

2019-12-30 20:51:57 3101 1

原创 linux禁止screen打开会话时改变窗口大小

问题来源  在后台运行程序时,经常需要常驻后台。现有的terminal一旦断线程序就会结束,screen提供了一个远程保持会话的机会,将程序运行在screen打开的会话中,重新登录上远程服务器后,可以恢复到原来的会话。类似的工具还有tmux。  screen在使用过程中,因为远程会话窗口具有标准大小,因而会改变terminal终端的大小,在使用过程中窗体大小突然变了,非常烦。根据博主的经验,在...

2019-10-06 16:24:41 2008 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 4410 1

原创 当跨域遇上浏览器缓存

问题描述在做一个图片相关的项目时,需要用canvas对图片进行在线绘制。图片素材放在了CDN上,因而canvas的访问带来了跨域问题。为了解决跨域问题,在CDN上配置了跨域访问头。如下所示:Access-Control-Allow-OriginAccess-Control-Allow-Methods然而配置好了跨域请求头之后,浏览器仍然提示跨域访问被拒绝。百般费解,为什么CDN已经配置...

2019-04-15 22:18:38 3503

原创 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 10728

原创 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 3447

原创 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 8357 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 837

原创 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 562

原创 mysql用户创建与授权

在多用户情形下,为了避免用户访问或者操作不属于自己的数据,需要使用用户权限将不同用户的数据隔离开来。mysql的用户授权可以精确到表、操作和某个IP地址。创建用户create user 'username'@'host' identified by 'password';用法说明username : 用户名host : ip地址,用户在哪个主机登录,如果是本机可以使用localhost,如果允许任意

2016-12-11 17:09:13 641

原创 web性能测试:apache benchmark(ab)

开发完网站或者web接口后,一个比较负责任的工作就是测试一下接口性能,也叫做压力测试。web接口的性能直接关系服务的稳定和并发量,一个数值评估通常可以给服务能力给出一个比较好的指导。本文介绍比较常用的web性能测试工具ab(apache benchmark)。安装ab命令来源于apache工具包,ubuntu可以通过下面的命令安装:sudo apt-get install apac

2016-10-23 22:01:57 5913 1

原创 apache2三种模式及参数调优

问题来源一般配置应付小规模的访问量其实没什么问题,只是最近我们设计了一些定点抢优惠的促销活动,所以在特定时间点,访问量会比较集中。峰值差不多达到了每秒1000到2000次的访问,而且还在继续增长中。我们一直判断是数据库卡死的问题,后来发现,原来了服务器挂了。进一步定位,发现是apache接收了太多了请求,起了无数进程,内存用爆,机器卡死了。如何配置apache,最大程度的发挥系统性能呢?apache

2016-10-23 20:56:31 21342 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 3253

原创 安卓apk反编译、修改、重新打包、签名全过程

首先明确,反编译别人apk是一件不厚道的事情。代码是程序员辛苦工作的成果,想通过这种手段不劳而获,是不对的。这也说明,代码混淆是非常重要的。本文抱着学习的态度,研究在一些特殊的情况下如果有需要,该怎么反编译apk。工具简介apktool,编译和反编译apk,从apk中提取图片和布局资源dex2jar,将可运行文件classes.dex反编译为jar源码文件jd-gui,查看jar源码文件反编译apk

2016-10-16 01:52:37 91163 2

原创 获取微信浏览器的真实IP地址

问题来源获取用户客户端IP地址是一个很简单的需求。用户打开网页,发送一个HTTP请求,后台从中提取出IP地址。但是,在使用微信打开网页时,发现获取到的IP地址和在浏览器打开所得到的IP地址不一样。用不同的浏览器,测试多次,都得到一个这样的结论。中间一定是出了什么问题。Solution其实这是使用了代理的问题,后台直接从HTTP头中获取到的host是最后一次经过的代理的地址。幸运的是,http包在转发

2016-10-07 16:12:03 23156 3

原创 见证微信小程序之火热

上周,微信小程序(应用号)终于在网络上炸锅了,朋友圈、QQ、技术社区等,讨论得热火朝天。甚至还有程序员在直播平台,解读微信小程序种种。这种程序员乃至全民都关注某个产品事件的盛况,还真是很少见。抱着凑热闹的态度,本人也加了几个QQ群,跟踪了事态的发展。震惊于劳动人民的伟大智慧,记得是凌晨传出来的有200个内测邀请的消息,白天就有各种流言和消息,内测人士揭秘,还有流传出来的微信开发者工具,不知道是

2016-10-07 01:31:32 1182

原创 直方图最大矩形

问题给定直方图,求直方图中最大的矩形面积。例如下图,用数组表示为[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 1878 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 487

原创 安卓开发入门篇(一):Android Studio导入ApiDemos

引言本人程序员,之前做网站比较多,nodejs/express+html/css+mysql,再之前也做过Java开发,编程上还是有丰富的经验。在持续的实战中,发现想做产品的话,前端似乎更重要,因为前端才能看到产品形态。虽然说移动端形势已经每况愈下,但考虑到VR、车载系统、Glass等各类终端系统都是基于安卓,还是觉得有必要掌握移动端开发。遂立志学习安卓,边学习,边记录心路历程,以帮助更多像我这样的

2016-08-25 23:15:35 23631 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 17762

原创 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 12217

原创 nodejs使用connect-multiparty实现文件上传(文件接收)后端

文件上传是服务器经常会用到的一项功能。

2016-08-16 20:33:09 14231

原创 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 5957 1

原创 使用base64进行移动端图片上传

之前搞微信上的图片上传,想直接通过接口上传到自己的图片服务器,发现移动端浏览器上挺多坑的,使用最简单的form-data形式好像不成。研究了一下,发现base64格式通用性较强。base64编码base64是一种使用可打印字符来描述二进制数据的方法。base64字符集共有64个字符,包括a-zA-Z0-9共62个,另外两个符号为+和/。ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef

2016-07-31 18:17:14 18511

原创 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 122705 3

原创 curl上传文件

在写上传文件的后台接口时,本来是想用postman测试的,不知道为什么,测试问题失败,上传的数据格式老是不对。后来想到,用curl来试试,好像还真成。curl -F "key=value" -F "[email protected]" http://localhost/upload如果使用了-F参数,curl会以multipart/form-data的方式发送POST请求。-F以key=va

2016-07-27 22:16:43 36628 4

原创 mysql生成不重复随机数(unique number generation)

问题来源业务中有时会遇到要生成不重复随机数的情况,例如,新生成一个商品的id、房间的id、或者其他物品的id等。不愿意采用数据库中的记录id,同时又要保证新生成的id是不重复的。这就需要考验mysql的随机数功能了。Solutionmysql的rand函数可以生成一个0到1之间的随机数,进行一定的放大即可得到一个随机数。再通过条件查询来限制新随机数没有在表中出现过。如下所示:SELECT FLOOR

2016-07-27 21:50:35 35343 4

原创 nodejs基于async waterfall/retry的出错重试流程设计

最近搞了一个线上服务,用到了async的waterfall方法,主要是因为服务的流程比较长,结果上线后非常不稳定,估计有至少1/4的访问没有成功。至此,方才明白稳定可靠服务的重要性。 我们知道,使用waterfall可以保证一序列函数执行的顺序,那么如何来保证每个步骤如果执行失败了,可以再试一次呢? 这就用到了async中的retry方法。

2016-07-14 22:34:47 4510

原创 MYSQL timestamp用法

最近在写网页时,会用到一个记录的更新时间。记得mysql是有这样的字段的,可以直接在一条记录更新时,自动更新时间。上网查了查,找到了,是timestamp类型。

2016-07-08 01:26:48 4998

原创 linux下合并文件夹

在window下,如果直接将一个文件夹拷贝到另外一个包含同名文件夹的位置,可以选择将两个文件夹合并。 那么,linux下的mv命令是否有同样的功能呢?可以将同名文件夹合并呢? 答案是否定的。 但是,有其他命令可以完成同样的功能。这个就是rsync。

2016-07-03 01:49:30 45168 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 7159

原创 nodejs读取图片像素

之前在做H5时,有这么一个关于图片的问题,就是把一张图片裁剪得左右空白部分对称,图片背景为白色。这件事情说来也简单,读取图片的像素,分别检测左右空白部分的宽度,然后裁剪到一样即可 。接下来就涉及到读取图片像素的问题了,发现了一个好用的工具get-pixels,可以读取图片像素并返回数组。安装npm install --save get-pixels目前支持PNG, JPEG和GIF三种格式的图片。用

2016-06-15 02:19:49 16796

转载 div嵌套后margin出现失效(转移)的问题

声明:本文是转载文章,原文在这里:div嵌套引起的margin-top不起作用。在一次写页面时,发现div嵌套后margin居然失效了,直接作用到了外层div上,调了好了一阵子发现css应该没有写错。于是想,会不会有什么潜在的我不知道的因素,一搜果然发现有许多人遇到了类似的问题,转载于此。现象:在一些浏览器中,有两个嵌套关系的div,如果外层div的父元素padding值为0,那么内层div的mar

2016-06-14 20:20:22 4748

原创 nodejs图片处理工具gm用法

在做H5应用中,有时候会涉及到一些图片加工处理的操作,nodejs有一个很好的后台图片处理module,就是这里说的gm。gm有官方文档,但感觉写得比较全,反而看得不太懂了。这里把一些常见的用法写下,供大家参考。

2016-06-14 01:49:34 44273 1

原创 html中的垂直居中实现

在做H5的过程中,经常会遇到文字或者图片的垂直居中问题,试了不同的办法,感觉这是一个困扰前端程序员的难题。网上也能找到许多文章,配方将我所用过的办法总结如下:文字居中使用line-height

2016-06-12 15:56:06 21223

原创 html/css排版一些简单的数学公式

最近做H5应用,遇到了一个棘手的问题,怎么在网页上排版中学题目。问题关键在于,现在的中学题目,具有太丰富的形式,在网页设计的时候,有许多情形要考虑,列几条: - 题目篇幅太长,一般还带有阅读材料,主要体现在语文和英语上 - 图文混排,格式比较杂 - 理科还有各种公式之类的 - 选项多样,单选,多选 这么看来,在线教育的题库,确实是个比较重要的问题。 在做这个的时候,发现一些小的技巧可以解

2016-06-10 18:08:58 20429 1

原创 nodejs express 允许跨域访问(Access-Control-Allow-Origin)

前世今生在WEB应用普及的今天,个人信息(账号、COOKIE等)广泛应用于网页。浏览器同源策略保证了WEB环境的安全性。同源策略是说,在a.com域名下通过ajax或者XmlHttpRequest等方式访问b.com的资源时,是不被允许的。然而在很多时候,出于业务的的需要,我们经常有类似的跨域访问 的需求。浏览器有一些支持跨域访问的标签,例如script,img等。 有这样的需求,自然就

2016-06-09 02:15:44 43579 4

Latex 简短中文手册

一份比较通用易学的Latex手册,对学习Tex挺有用的

2010-03-31

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除