• MySQL 在并发场景下的问题及解决思路

    Posted by : lon.y@qq.com on 2018年5月12日

    1、背景 对于数据库系统来说在多用户并发条件下提高并发性的同时又要保证数据的一致性一直是数据库系统追求的目标,既要满足大量并发访问的需求又必须保证在此条件下数据的安全,为了满足这一目标大多数数据库通过锁和事务机制来实现,MySQL数据库也不例外。尽管如此我们仍然会在业务开发过程中遇到各种各样的疑难问题,本文将以案例的方式演示常见的并发问题并分析解决思路。 2、表锁导致的慢查询的问题 首先我们看一个简单案例,根据ID查询一条用户信息: mysql> s

    阅读全文...

  • 常用排序算法总结(1)

    Posted by : lon.y@qq.com on 2018年5月12日

    我们通常所说的排序算法往往指的是内部排序算法,即数据记录在内存中进行排序。 排序算法大体可分为两种: 一种是比较排序,时间复杂度O(nlogn) ~ O(n^2),主要有:冒泡排序,选择排序,插入排序,归并排序,堆排序,快速排序等。 另一种是非比较排序,时间复杂度可以达到O(n),主要有:计数排序,基数排序,桶排序等。 这里我们来探讨一下常用的比较排序算法,非比较排序算法将在下一篇文章中介绍。下表给出了常见比较排序算法的性能: 有一点我们很容易忽略的是排序

    阅读全文...

  • 用 Plumbum 开发 Python 命令行工具

    Posted by : lon.y@qq.com on 2018年5月11日

    摘要:本文翻译自 Python Plumbum 开源库的官方文档 Plumbum CLI 部分,主要介绍如何使用 Plumbum CLI 工具包来开发 Python 命令行应用程序,这是一个非常 Pythonic、容易使用、功能强大的工具包,非常值得广大 Python 程序员掌握并使用。 轻松执行程序的另一方面是轻松编写 CLI 程序。Python 脚本一般使用 optparse 或者最新的 argparse 及其衍生品来开发命令行工具,但是所有这些表现力

    阅读全文...

  • 使用 Web3 和 Vue.js 来创建你的第一个以太坊 dAPP(二)

    Posted by : lon.y@qq.com on 2018年5月10日

      欢迎回到这个很牛的教程系列的第2部分,在教程中我们亲手构建我们的第一个分布式应用程序。 在第二部分中,我们将介绍VueJS和Vuex的核心概念,并引入web3js以与metamask进行交互。 如果你错过了第一部分,你可以在下面找到它: 使用 Web3 和 Vue.js 来创建你的第一个以太坊 dAPP(一) 正事: VueJS VueJS是一个用于构建UI的javascript框架。乍一看,它看起来与经典的moustache模板类似,但在底层为了使V

    阅读全文...

  • 使用 Web3 和 Vue.js 来创建你的第一个以太坊 dAPP(一)

    Posted by : lon.y@qq.com on 2018年5月10日

    欢迎来到另一个教程!在本教程中,我们将讨论如何使用 Ethereum、Web3js、VueJS 和 Vuex 创建一个简单的、响应式的去中心化应用程序。您可能需要对 javascript 和 web 应用程序有一些了解才能真正享受本教程。如果您不了解 Vue,不用担心,我们将在实现应用程序时简要地介绍一下基础知识。 我们的应用将会很简单。用户可以在 1 到 10 之间下注以太币。当用户猜对时,他得到了他的奖励 x10(略低于庄家切牌)。 第一部分,我们将讨

    阅读全文...

  • 摄像头操作指南

    Posted by : lon.y@qq.com on 2018年5月9日

    大多数智能手机都有前置和后置摄像头,当你在创建视频应用时你可能想要选择或者切换前置、后置摄像头。 如果你开发的是一款聊天应用,你很可能会想调用前置摄像头,但如果你开发的是一款拍照软件,那么你会更倾向于使用后置摄像头。在这篇文章中我们将探讨如何通过 mediaDevices API 和 media constraints (媒体约束) 选择或者切换摄像头。 准备工作 要跟着本文一起动手实践你需要: 一款拥有两个可供测试的摄像头的 iOS 或 Android

    阅读全文...

  • 深入理解 ES Modules (手绘示例)

    Posted by : lon.y@qq.com on 2018年5月9日

    虽然花了近十年的标准化工作才走到这一步,ES 模块终于为 JavaScript 带来了正式的,标准化的模块系统。 漫长的等待终于要结束了,随着即将在五月发布的 Firefox 60 (目前尚处于 beta 版本中),所有的主流浏览器都即将支持 ES 模块,并且 Node 模块工作小组目前也正在为 Node.js 添加对 ES 模块的支持。同时,ES 模块对 WebAssembly 的支持也正在进行当中。 许多 JavaScript 的开发者都知道 ES 模

    阅读全文...

  • 低门槛彻底理解 JavaScript 中的深拷贝和浅拷贝

    Posted by : lon.y@qq.com on 2018年5月9日

    在说深拷贝与浅拷贝前,我们先看两个简单的案例: //案例1 var num1 = 1, num2 = num1; console.log(num1) //1 console.log(num2) //1 num2 = 2; //修改num2 console.log(num1) //1 console.log(num2) //2 //案例2 var obj1 = {x: 1, y: 2}, obj2 = obj1; console.log(obj1) //{x

    阅读全文...

  • Pet:一个简单的命令行片段管理器

    Posted by : lon.y@qq.com on 2018年5月8日

    我们不可能记住所有的命令,对吧?是的。除了经常使用的命令之外,我们几乎不可能记住一些很少使用的长命令。这就是为什么需要一些外部工具来帮助我们在需要时找到命令。在过去,我们已经点评了两个有用的工具,名为 “Bashpast” 和 “Keep”。使用 Bashpast,我们可以轻松地为 Linux 命令添加书签,以便更轻松地重复调用。而 Keep 实用程序可以用来在终端中保留一些重要且冗长的命令,以便你可以随时使用它们。今天,我们将看到该系列中的另一个工具,以

    阅读全文...

  • [原创]手把手教你写网络爬虫(5):PhantomJS实战

    Posted by : lon.y@qq.com on 2018年5月7日

    大家好!从今天开始,我要与大家一起打造一个属于我们自己的分布式爬虫平台,同时也会对涉及到的技术进行详细介绍。大家如果有什么好的想法请多留言,多提意见,一起来完善我们的爬虫平台。在正式介绍平台之前,先用一些篇幅对基础篇做一点补充。模拟滚动 这次的目标是爬一个众筹网站的所有项目,项目列表页如下:https://www.kaistart.com/project/more.html。打开后进行分析,页面显示出10个项目: 如果想看到更多项目,并不能像网易云音乐那样

    阅读全文...