WHH

MY BLOG

MYSQL插入或更新

问题:在数据库操作时,如果需要先判断数据是否存在,做插入或者更新操作。在并发情况下,容易出现异常。

解决办法:使用INSERT INTO TABLE(A, B, C) VALUES('a', 'b', 'c') ON DUPLICATE KEY UPDATE B = 'b', C='c',此处A为唯一约束,在插入时,如果已经存在数据为a,则做更新操作。

并发修改数量

在并发扣除库存时,库存数量不能扣到小于0。

使用UPDATE TABLE SET A = A - a WHERE A >= a AND ID = 'xx',通过SQL返回值是否大于0,判断是否操作成功。

阅读全文 »

docker安装

使用系统Ubuntu 15.04 vivid,该版本无法安装最新版docker,需要升级ubuntu到最新版本。
安装最新版docker需要添加docker源,参考Docker Community Edition for Ubuntu

docker配置阿里云

参考阿里云加速器进行配置。

初步使用docker时出现问题

在使用docker build时强行停止后,在使用docker image出现如下错误

1
<none>              <none>              1c4475fbe64f        5 minutes ago       194 MB

使用docker rmi 1c4475fbe64f命令删除该无用image出现如下错误

1
Error response from daemon: conflict: unable to delete 1c4475fbe64f (must be forced) - image is being used by stopped container a4f0c195cff5

但是使用docker ps未显示任何数据
解决办法先docker rm a4f0c195cff5 之后docker rmi 1c4475fbe64f

阅读全文 »

需求

有一部分数据设置了超时时间,当到达该超时时间改数据还未处理时,推送数据给监控人员。由监控处理相关事情。

技术方案

1、维护一个有序链表,在生成改数据后,把该数据加入该有序链表中,保证链表头为最小的超时时间。
2、通过线程自旋,获取头部数据是否超时,超时取出数据,查询DB该数据是否已经被处理,未处理超时推送给监控,已经处理丢掉改数据。

考虑问题

  • 因为是部署集群,没有调度器,在迭代更新时,重启服务器会导致服务器中数据丢失。
    解决方案:在启动服务器时使用redis中incs命令(过期时间30s),当返回值为1时,该服务器从数据库中获取所有需要监控的数据,加入链表。其他服务器因为值不为1,不做处理。
  • 在服务器运行过程中,其中一台服务器宕机,重启服务器后,当前服务器数据数据丢失,其他服务器正常,重启从数据中获取的数据保护其他服务器中数据。
    解决方案:在处理超时数据的时候,同样适用redis的incs命令(过期时间30s),返回值为1的服务器处理数据,另外非1的是丢弃数据。
    阅读全文 »

RESTfull简介

REST全称是(Representational State Transfer),简单来说指的是一种设计风格,一种规范。在设计时,可以把服务器看做一种资源文件服务器,每条URL代表对应的静态资源,而请求的method,表示最资源的操作,如:GET(获取资源)、PUT(添加资源)、DELETE(删除资源)等操作。
简单来说URL—>资源,method—>操作。

阅读全文 »

命令 解释 备注
git init 初始化一个Git仓库
git add 添加 反复多次使用,添加多个文件
git commit 提交
git status 工作区的状态
git diff 查看修改内容
git reset –hard commit_id 返回到某版本 HEAD指向的版本就是当前版本
git log 查看提交历史 以便确定要回退到哪个版本
git reflog 查看命令历史 以便确定要回到未来的哪个版本
git checkout – file 直接丢弃工作区的修改 未add
git reset HEAD file 去掉暂存区,之后还要进行上面步骤 已经add,未commit
阅读全文 »

端口修改

在jetty9中修改$JETTY_HOME/start.d/http.ini中修改

1
2
jetty.port=9999
http.timeout=30000

jetty9中原来jar

因为在部署项目时,为了避免war包过大,使用在生成war包的时候,不吧依赖jar添加进去,在jetty使用中,一般是一个jetty使用一个项目,所以需要把依赖jar包放入jetty目录 $JETTY_HOME/lib/ext

阅读全文 »

使用hexo-htemo-kael后出现样式不对

一般在部署到whhxz.github.io上不会出现问题,如果部署在whhxz.github.io/myblog上,会出现本地静态文件如js、css等出错

解决办法:修改hexo-htemo-kael中head.ejs,添加

1
2
3
4
var reg = /myblog\/$/;
if(reg.exec(config.root) == null){
config.root = config.root + "myblog/";
}

设置config.root后面添加博客地址,在生成html后,就会自动添加上去,而且为了避免多次添加,所以使用正则表达式判断是否已经存在

阅读全文 »
0%