从Gitlab误删除数据库想到的
昨天,Gitlab.com发生了一个大事,某同学误删了数据库,这个事看似是个低级错误,不过,因为Gitlab把整个过程的细节都全部暴露出来了,所以,可以看到很多东西,而对于类似这样的事情,我自己以前也干过,而在最近的两公司中我也见过(Amazon中见过一次,阿里中见过至少四次),正好通过这个事来说说一下自己的一些感想和观点吧。...
View ArticleLinux下正确删除海量文件的姿势
这里说的“海量”并不是指体积大,而是指数量,比如一个目录下有数百万个小文件。最近在优化服务器时发现postfix下的maildrop目录和clientmqueue目录下发现有大量的文件,进入这些目录里使用ls命令是愚蠢的做法,而直接执行 rm *,没有任何反应,文件数量也没有减少,也就是说,在海量文件目录里直接使用rm命令进行删除是无效的。那么正确的方法是什么呢?有两种方法可选: 第一种:find...
View Article一个轻量级分布式 RPC 框架 — NettyRpc
1、背景最近在搜索Netty和Zookeeper方面的文章时,看到了这篇文章《 轻量级分布式 RPC 框架》,作者用Zookeeper、Netty和Spring写了一个轻量级的分布式RPC框架。花了一些时间看了下他的代码,写的干净简单,写的RPC框架可以算是一个简易版的...
View Article自建一个电话呼叫中心要多少钱?
我十分看不惯任何行业的潜规则行为。自建一个电话呼叫中心的报价是多少钱?没有人敢公开报价。我明说吧,自建一个电话呼叫中心,只需要3万元左右,而且还能更省钱。这个报价是针对小型企业的,也就是广大人民群众。至于大型企业,它们自己去定制,钱不是问题。3万元建一个电话呼叫中心,包括什么?包括硬件设备,软件。软件是硬件设备上免费赠送的,不要钱!有了这个呼叫中心,你可以有语音导航功能(也就是按0转人工客服),还有...
View Article谈一下我们是如何开展code review的
众所周知,代码审查是软件开发过程中十分重要的环节,楼主结合自己的实际工作经验,和大家分享一下在实际工作中代码审查是如何开展的。笔者水平有限,若有错误和纰漏,还请大家指正。代码审查的阻力我想不通公司不同部门对代码审查这项工作的重视程度还是不一样的,对于代码审查的阻力总结了以下几点:国内的整体环境,国内的公司,尤其是互联网公司,讲究速度致上,软件开发的迭代周期周期短,速度快,因为竞争太大,开发的产品要求...
View Article实现前后端分离的心得
实现前后端分离的心得对目前的web来说,前后端分离已经变得越来越流行了,越来越多的企业/网站都开始往这个方向靠拢。那么,为什么要选择前后端分离呢?前后端分离对实际开发有什么好处呢?为什么选择前后端分离在以前传统的网站开发中,前端一般扮演的只是切图的工作,只是简单地将UI设计师提供的原型图实现成静态的HTML页面,而具体的页面交互逻辑,比如与后台的数据交互工作等,可能都是由后台的开发人员来实现的,或者...
View Article欢迎来到后 ASO 时代
6 月 WWDC 上所宣布的「App Store 将迎来大改版」的消息,给 ASO 界砸下了一枚重磅炸弹。虽说 iOS11 要到今年秋季才会正式推送,且正式版面世到大面积使用还需要一定时间,到底会不会迎来一个新的 ASO 时代,目前尚不可知。为了做好迎接新时代的准备,咱们先来看看苹果砸下的到底是一枚什么样的「炸弹」。搜索改动还算小「搜索」入口所带来的可观流量,是我们「做关键词」的立足点。ASOer...
View Article如何理解并正确使用 MySQL 索引
1、概述索引是存储引擎用于快速查找记录的一种数据结构,通过合理的使用数据库索引可以大大提高系统的访问性能,接下来主要介绍在MySql数据库中索引类型,以及如何创建出更加合理且高效的索引技巧。注:这里主要针对的是InnoDB存储引擎的B+Tree索引数据结构2、索引的优点1、大大减轻了服务器需要扫描的数据量,从而提高了数据的检索速度2、帮助服务器避免排序和临时表3、可以将随机I/O变为顺序I/O3、索...
View Article数据库压缩技术探索
作者:雷鹏,Terark核心技术发明人。曾就职奇虎360,负责搜索引擎核心研发;曾就职Yahoo!北研所负责搜索广告、广告交易(AdExchange)等项目。在数据库、高性能计算、分布式、系统架构上都深有造诣。...
View Article用神经网络训练一个文本分类器
理解聊天机器人的工作原理是非常重要的。聊天机器人内部一个非常重要的组件就是文本分类器。我们看一下文本分类器的神经网络(ANN)的内部工作原理。多层神经网络我们将会使用2层网络(1个隐层)和一个“词包”的方法来组织我们的训练数据。文本分类有3个特点:模式匹配、算法、神经网络。虽然使用多项朴素贝叶斯算法的方法非常有效,但是它有3个致命的缺陷:这个算法输出一个分数而不是一个概率。我们可以使用概率来忽略特定...
View Article如何正确实现 Java 中的 HashCode
相等 和 Hash Code从一般角度来看,Equality 是不错的,但是 hash code 更则具技巧性。如果我们在 hash code上多下点功夫,我们就能了解到 hash code 就是用在细微处去提升性能的。大部分的数据结构使用equals去检查是否他们包含一个元素。例如:List<String> list = Arrays.asList("a", "b", "c");...
View Article区块链原理最清晰最直观的解释
(A minimal blockchain command-line interface.)维基百科上对区块链的描述:维护不断增长的记录(称作区块)的分布式数据库。听上去很简单,但到底是怎么回事呢?我们用一款开源命令行界面 Blockchain CLI来详细说明区块链。我也做了一个 浏览器可以访问的在线版。安装命令行界面首先请确保安装 Node.js然后在终端里运行下面命令:npm install...
View Article详解 Tomcat 的连接数与线程池
前言在使用tomcat时,经常会遇到连接数、线程数之类的配置问题,要真正理解这些概念,必须先了解Tomcat的连接器(Connector)。在前面的文章 详解Tomcat配置文件server.xml...
View Article如何开始数据分析
有了数据。我需要一些思路。应该从哪开始?这是个常见的问题。菜鸟数据科学家、分析师,以及刚刚接触数据科学的管理人员,通常有这样的疑问。他们的老板都在承受着压力,得证明花在系统上去收集、存储及组织资料的钱(更不用说还有那些花在数据科学家身上的钱)是有回报的。他们偶尔很幸运——待解决的问题可能非常明确,而且被深入研究过(例如,预测哪个客户可能会取消手机合约)。在这种情况下,有很多种方法来进行数据分析,这是...
View Article聊聊 TCP 中的 KeepAlive 机制
服务端的系统设置中经常会和底层协议打交道,我们有必要重温一下曾经那些“听过”却不熟悉的名词。 今天聊的话题是 KeepAlive,在实际应用中又是怎么使用的?为什么有Keepalive?大家都做过电梯吧,假设电梯来了你先进去,你朋友还没进来,过一段时间电梯门就会自动关闭,...
View Article缓存穿透、缓存并发、热点缓存之最佳招式
一、前言我们在用缓存的时候,不管是Redis或者Memcached,基本上会通用遇到以下三个问题:缓存穿透缓存并发缓存失效缓存穿透注:上面三个图会有什么问题呢?我们在项目中使用缓存通常都是先检查缓存中是否存在,如果存在直接返回缓存内容,如果不存在就直接查询数据库然后再缓存查询结果返回。这个时候如果我们查询的某一个数据在缓存中一直不存在,就会造成每一次请求都查询DB,这样缓存就失去了意义,在流量大时,...
View ArticleString 常量池和 String#intern()
String是Java基础的重要考点。可问的点多,而且很多点可以横向切到其他考点,或纵向深入JVM。本文略过了String的基本内容,重点在于String#intern()。String常量池String常量可能会在两种时机进入常量池:编译期:通过双引号声明的常量(包括 显示声明、...
View Article移动 APP 网络优化概述
一般开发一个 APP,会直接调用系统提供的网络请求接口去服务端请求数据,再针对返回的数据进行一些处理,或者使用AFNetworking/OKHttp这样的网络库,管理好请求线程和队列,再自动做一些数据解析,就结束了。但对于一些大型...
View Article