自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

笨狐狸

好奇心是驱使我看世界的第一要素

  • 博客(113)
  • 资源 (4)
  • 收藏
  • 关注

原创 如何排查系统故障-道

很早以前,程序员只需要写好自己那部分代码,并确保熟悉代码逻辑,以及代码中关联的部分外部系统如数据库就行了。到了近几年,随着分布式系统如雨后春笋层出不穷,一个应用系统的依赖可谓相当多。比如一个典型的风控系统,背后可能会依赖kafka, hbase, hive, zookeeper, elasticsearch,mysql, flink等等。这些系统往往无法如设计之初所想的那样健壮,从概率的角度来讲,即便某个系统的故障率是0.5%,10个系统在一起其可用性也会降到95%。而保障每一个系统可用也成为了应用对外

2022-03-25 11:35:00 909

原创 聊聊hash

最近对hash有了更多深入的理解。这里也写篇文章专门来聊聊hash。Hash是一种常见的数据结构或者说计算方法,以其O(1)的时间算法复杂度闻名于世。曾有人说,如果世界上只有一种数据结构,那么我选择hash,足见hash的地位及牛逼之处,而代码编写中hash也屡见不鲜,因为他实在是太常见太好用了。但是实际使用过程中,基本的hash是远远不够的,按照用途,对hash其实还有如下需求:1....

2020-04-08 21:00:23 905

原创 zookeeper入门系列-理论基础-paxos协议

上一章讨论了一种强一致性的情况,即需要分布式事务来解决,本章我们来讨论一种最终一致的算法,paxos算法。为了引入该算法,首先提出一种场景,即两将军问题:有两支军队,它们分别有一位将军领导,现在准备攻击一座修筑了防御工事的城市。这两支军队都驻扎在那座城市的附近,分占一座山头。一道山谷把两座山分隔开来,并且两位将军唯一的通信方式就是派各自的信使来往于山谷两边。不幸的是,这个山谷已经被那座城市

2020-04-08 14:07:50 5786 1

原创 公司禁端口环境下上网

经常会遇到公司封禁端口,上网需要通过http代理才能出去的情况。而这个http代理如果不能支持科学上网,那我们就悲剧了。这种情况一般有好几个办法。最常见的也最简单的,自己在外外面找台服务器,搭一个ss的服务端,并且将服务端的端口制定为公司不封禁的端口,再在本机通过ss客户端连接就能出去了。而我自己有购买的ss账号,不想浪费这个账号,另一方面,在外网有台可以自己控制的VPS,

2020-04-08 14:05:44 8330

原创 ClassLoader中getSystemResource与getResource的区别

在开发过程中碰到某些环境无论如何都加载不到资源,而某些环境下却总能加载到资源。事出蹊跷,为了搞清楚这个问题,来到代码中查看原因,发现代码如下:URL url = ClassLoader.getSystemResource(folder);断点后folder=templates,无论如何都加载不到资源导致url总是null。尝试修改代码为,于是一切皆好。URL url = Templ...

2019-11-26 17:34:48 4509

原创 pig中group时数据倾斜问题

在使用pig时遇到了数据倾斜问题。某些数据能够正常计算,但是对于另一些数据reducejob运行至某个地方会报错GC overhead limit exceeded,实际上就是OOM了。首先分析问题是什么,观察到计算错误的数据并没有被计算完,且每次日志是停在固定位置的,从日志内容可以看出,GCoverhead发生在reducejob前准备reduce的参数Tuple时,推断某些key过大...

2019-07-26 15:06:00 1131

原创 本地ip能够访问,但是公网ip不能访问的一般解决方法

由于需要写了个程序,分客户端和服务器端,结果上实际环境一测试,发现通过127.0.0.1能够访问,但是通过公网ip却不能访问。遇到这种问题,一般的解决办法如下:1. 检查防火墙是否有禁端口。在测试阶段可以先关闭防火墙,等到解决问题之后再设置规则。2. 检查IP是否绑定到所有ip可访问,这个跟程序有关系,如果服务器端程序在绑定ip的时候是指定了本机ip,比如127.0.0.1,那么客户端...

2019-01-06 11:17:54 42711

原创 如何做出重要决定

  事情的起因是最近换工作,拿了两个offer,由于两个offer的机会都非常好,以至于我纠结了整整一周去考虑究竟去哪。  最初画了SWOT图,各种分析好坏优劣,包括期间hr,猎头的轮番洗脑,让我对两个有差异的offer产生了纠结的状态,一会觉得A好,一会觉得B好,长期的纠结状态,的确会损伤人的精神,让人处于萎靡状态。这期间,我翻查了很多如何做决策的资料。最终做出让我迅速做决定的,是获得了更多额外...

2018-03-07 16:40:21 5408

原创 磁盘变raw,双击提示需要格式化的解决办法

我有约40g的文件在d盘,其中不乏重要文件。在双系统切换过后发现win10下的d盘格式变为raw,双击提示需要格式化。这时候内心是崩溃的。尝试了约10种备份恢复软件。首当其冲的是diskgenius,最新版本非常容易的就看到了整个盘的文件,并且按照原来的格式组织,非常贴心。结果备份时候发现,所有大于10多M的文件统统不能备份。需要收费,貌似要200多大洋。于是换了各种软件,包括迷你兔,

2017-12-28 13:43:40 16835 1

原创 disruptor源码解读

disruptor经过几年的发展,似乎已经成为性能优化的大杀器,几乎每个想优化性能的项目宣称自己用上了disruptor,性能都会呈现质的跃进。毕竟,最好的例子就是LMAX自己的架构设计,支撑了600w/s的吞吐。  本文试图从代码层面将关键问题做些解答。  基本概念  Disruptor: 实际上就是整个基于ringBuffer实现的生产者消费者模式的容器。  RingBuf

2017-12-19 14:19:40 5145

原创 高并发风控技术解密(下)

如何灵活高效的接入?平台化  •搭建平台而不是搭建项目——做一个“淘宝”而不是做只针对某几项业务的网站  •从业务中抽象及通用——如果一种业务有可能在今后重复出现,那就将其模块化,系统化(如批处理系统),发展成为平台能力动态化  •流程动态化——不同的业务类型对应的流程可以随意调整,无须调整代码  •代码动态化——采用groovy脚本动态调整线上代码,无须发版;规则配置除了使用各种灵活预配置外,还

2017-12-14 14:28:58 6604 1

原创 高并发风控技术解密(上)

风控在任何一个公司都是比较神秘的存在,不仅线上很少分享,从安全角度讲也很少对外披露它的架构及设计。本人将就参与的风控建设谈谈风控的技术。(本文来源于内部分享PPT,限于篇幅,一些细节没能交待完整)  风控架构演进  经过1年多风控系统的建设,已经将公司内部风控系统从业务代码为主的风控架构改造为了平台化为主的2代架构,进而改造为了基于平台化的动态化及离线数据模型化的2.5代架构,正在向深

2017-12-13 21:57:51 14602 4

原创 使用u盘装系统解决unable to copy your files. Please check your USB device

使用windows7 USB download tool安装系统启动盘,发现报错We were unable to copy your files. Please check your USB device and the selected ISO file and try again.多番查阅,发现是u盘导致的问题,只要按照如下步骤操作即可解决,亲测有效。用管理员权限打开命令行并输入

2017-11-07 20:19:37 6174

原创 hbase的架构及设计

hbase是强一致性的海量数据库,无论是读写性能,或是数据容量,还是一致性方面,hbase都有非常优秀的表现。本文从架构方面探讨hbase的主要设计,从而在需要hbase的场合能够更好的设计和判断。

2017-09-25 16:07:20 4050

原创 从怎样解题到怎样解决问题

波利亚的《怎样解题》是本很好的解题思路和方法的启蒙书。全书围绕着遇到类似数学题目时如何去解题来教导。并给出一系列的步骤和方法:  1. 理解题目   2. 找出已知数据和未知量之间的联系,如果找不到直接联系,考虑辅助题目,最终得到一个解题方案   3. 执行方案   4. 检查解答   咋一看,这些步骤只对解数学题目有用。可稍微一想,其实物理,化学等等题目不都可以如此解决吗。更

2017-08-12 00:23:36 3705

原创 如何学习TCP协议

TCP协议目前是事实上的网络基础。许多更高层的应用协议HTTP,FTP都基于TCP。TCP协议的学习可以说枯燥无比,尤其是学生阶段,根本不知道用在什么地方,根本不知道重要性是什么。事实上是,基于目前的网络发展和分布式发展,TCP简直就是基础中的基础。许多网络的问题,配置,入侵,防御乃至架构,都涉及到TCP的具体应用及机制。以下是我总结的TCP学习过程,1. 了解学习TCP协议的重要性和

2017-07-15 20:00:44 5080 3

原创 kafka的模型诠释

kafka是目前市场上比较流行的消息框架。本篇文章尽力去诠释kafka模型背后的设计原理,从而更加深刻的理解kafka,在使用过程中尽可能少的入坑。三个角色:producer:生产者。负责发送消息到kafka集群broker:kafka集群。负责保存消息consumer:消费者。负责消费kafka集群的消息模型:topic:一个topic即一个逻辑上的主

2017-07-15 08:27:32 3215

原创 如何做性能测试

性能优化的常见概念吞吐量(TPS, QPS):简单来说就是每秒钟完成的事务数或者查询数。通常吞吐量大表明系统单位时间能处理的请求数越多,所以通常希望TPS越高越好响应时间:即从请求发出去到收到系统返回的时间。响应时间一般不取平均值,而是要去掉不稳定的值之后再取均值,比如常用的90%响应时间,指的就是去掉了10%不稳定的响应时间之后,剩下90%的稳定的响应时间的均值。从聚类的观点看,其实就是...

2017-06-08 22:40:30 33374 3

原创 zookeeper入门系列-理论基础-zab协议

上一章讨论了paxos算法,把paxos推到一个很高的位置。但是,paxos有没有什么问题呢?实际上,paxos还是有其自身的缺点的:1. 活锁问题。在base-paxos算法中,不存在leader这样的角色,于是存在这样一种情况,即P1提交了一个proposal n1并且通过了prepare阶段;此时P2提交了一个proposal n2(n2>n1)并且也通过了prepare阶段;P1在co

2017-04-14 11:49:43 6783

原创 zookeeper入门系列-理论基础-分布式事务

上一章我们了解了zookeeper到底是什么,这一章重点来看zookeeper当初到底面临什么问题?而zookeeper又是如何解决这些问题的?实际上zookeeper主要就是解决分布式环境下的一致性问题。那么解决这个问题到底有哪些难点呢?我们一步一步来阐述和推理这个过程。分布式事务2PC我们首先考虑一致性的特殊情况,即分布式事务的情况。这里我们用到一个经典的例子:bob给smit

2017-04-05 13:55:36 20380 1

原创 zookeeper入门系列-概述

zookeeper可谓是目前使用最广泛的分布式组件了。其功能和职责单一,但却非常重要。在现今这个年代,介绍zookeeper的书和文章可谓多如牛毛,本人不才,试图通过自己的理解来介绍zookeeper,希望通过一个初学者的视角来学习zookeeper,以期让人更加深入和平稳的理解zookeeper。其中参考了不少教程和书,相关书目列在文末,也感谢这些作者。学习新的框架,先让我们搞清楚他是什...

2017-04-01 10:44:59 27353 4

原创 我读程序员的思维修炼

程序员的思维修炼是本很好的小册子,200多页,但强调的重点却挺有意思。   一开始的比喻就非常有趣:如果把人比作是计算机,那么我们的所有感官就是I/O设备,整个脊柱就是I/O总线;大脑是双核的,即左半脑和右半脑,分别工作在L模式和R模式,左右大脑之间的连接就是胼胝体,胼胝体是左右大脑的高速连接通道,可以看做是内存或者系统总线(关于胼胝体,还有很多有意思的研究,比如脑裂人的工作方式)。

2017-03-17 16:02:46 2771

原创 如何解决无法定位程序输入点ucrtbase.terminate于动态链接库api-ms-win-crt-runtime-|1-1-0.dll

简单描述下同该问题奋战一天的成果。多个程序报这个错无法定位程序输入点ucrtbase.terminate于动态链接库api-ms-win-crt-runtime-|1-1-0.dll,查到说需要安装Visual C++ 2015 Redistributable。见https://www.zhihu.com/question/36384168。 噩梦开始了,去微软官网下载了vc_redi

2016-11-06 16:56:46 164803 24

原创 dns及cdn原理

DNS及CDN原理

2016-08-14 15:39:28 3497

原创 手动做UTF-8编码的转换

看到一个题目:不使用 String.getBytes() 等其他工具类/函数完成下面功能 public static void main(String[] args) throws IOException { String str = "Hello, 我们是中国人。"; byte[] utf8Bytes = toUTF8Bytes(str); FileOutputStr

2016-07-02 09:02:50 3032

原创 spring mail发送TLS邮件

使用spring mail发送邮件相当简单,归结起来是一段代码+一段配置 @Autowired protected JavaMailSender mailSender; public SendResult send(List targets, String title, String content) { Send

2016-04-30 15:47:05 3193

原创 spring data JPA

最近使用了spring data jpa来完成数据访问层的实现。感觉比较强大,也比较复杂,中间还有不少限制。话说数据库sql的应用有点像打怪升级,一点一点不断增加难度。文章从4个层次讨论了jpa的用法,层层递进,希望能够帮到使用中的人

2016-04-30 15:16:00 21660 1

原创 HTTPS和证书原理

安全的原理其实非常多,基础的诸如数字签名,加密解密等等,这边不会细讲,会略微提一下。主要讲讲常见的web相关的安全原理,比如HTTPS,证书,双向证书等。  关于对称加密和非对称加密:对称加密算法比非对称加密要快,但是对称加密要求密钥对等,这会带来几个问题:一是密钥传输过程中容易被截获,从而导致加密的无效;二是在一个n节点的传输网络中,某节点需要保存n-1个密钥,非常繁琐。非对称加密则不存在这

2014-10-15 15:46:57 13752 6

原创 webbrowser获取跨域的sessionStorage的值和cookie的值

这是个很麻烦的问题。  我需要yo

2014-06-15 10:04:46 8247 1

原创 C#项目中的一些问题

http://blog.51cto.com/zt/584

2014-04-21 10:09:33 2586

原创 topK问题

关于海量topk问题,已经有无数文章讨论过,比如这里的程序员编程艺术:第三章续、Top K算法问题的实现或者算法探讨——Top K算法详细解析。  其问题本身比较容易,就是在一组海量数据中求得出现次数最多的k个数据。  对于这个问题,我们的思路应该如何较好呢?  简化问题,将k首先设置为1,如果要求最大的1个数据,该如何做?  首先,我们得使用一个数据结构保存每个数据出现的次数

2014-03-27 17:19:57 3518

原创 终极生产者消费者问题

www.infoq.com/cn/articles/High-Performance-Java-Inter-Thread-Communications?utm_source=infoq&utm_medium=popular_links_homepage

2014-03-14 08:20:24 1930

原创 spring的@ResponseBody乱码问题

参考:http://blog.csdn.net/jpr1990/article/details/7710110

2014-03-11 13:25:49 1580

原创 创世纪:spring之初(第三日)

johnson将spring的主框架与运行流程创造完毕之后,发觉spring中提供了许多灵活扩展的地方。于是johnson准备在第三日将这些灵活扩展的用法公布出来。  1. BeanPostProcessor。BeanPostProcessor提供了bean创建完成后的扩展接口,当你需要在bean创建完后对其做一定处理,则BeanPostProcessor是首选的方式。  2. Aware

2014-01-17 10:46:56 2416 4

原创 创世纪:spring之初(第二日)

头一日,johnson完成了一个spring的整体框架。  第二日,johnson准备实际去处理前面遗留的问题。比如spring的容器初始化过程refresh。如图,johnson将这个过程分为很多子过程,这些子过程都在围绕着如何将bean载入这一宏伟的目标而努力。代码如下,johnson将refresh的过程分为很多子过程,并且这些子过程在同一个抽象层级上,这种写法是为了给后人一

2014-01-17 10:46:30 1788

原创 创世纪:spring之初(第一日)

第一日,上帝创造了光与暗;   第二日,上帝创造了水和空气;   第三日,上帝创造了植物;   第四日,上帝创造了日月星辰;   第五日,上帝创造了鱼和鸟;   第六日,上帝创造了飞虫走兽和人;   第七日,上帝休息。   从上帝造人可以看出来,上帝非常聪明,他没有在第一天先造人……上帝造人尚且需要七天,我们学习spring的骨架也得至少7天吧。   第一天:

2014-01-17 10:46:01 2037

原创 java基础中一些值得聊的话题(加载篇)

在开始java的类加载旅程之前,先普及一下c的链接方式。   我们假设最初的程序10w行代码都写在一个文件里,那么,我们完全可以不需要链接的过程。但是,从可维护性来讲,上面的假设完全不可接受。因此,需要诞生链接器帮我们将不同的文件组合到一块。

2014-01-12 20:45:50 2352

原创 java基础中一些值得聊的话题(并发篇)

java的并发体系也是非常庞大,而且注意点非常多。这里可能不会面面俱到(否则就是写书了)。  之前写过一篇关于java并发方式的文章。  这里以一个从重到轻的方式来详细聊聊java的并发。  Synchronized和ReentrantLock  最常见的同步方式是synchronized,之所以叫synchronized是因为synchronized会将锁作用于整个对象或者类,而

2014-01-06 20:03:34 1745

原创 又一枚神器:nginx

一直听说过nginx的大名,也自己装过,但是未直接使用其各种牛X的功能。   今天试用了一下,只能用两字感叹:牛逼!比如它提供的配置检查功能,真是贴心极了,又比如我想要的静态内容浏览器端缓存功能,动态内容转发功能,都极其简单,不得不感叹啊。   我们先来看看nginx的各种能力,然后列出一些收集的nginx各项能力的配置以及一些调优的文章,供日后备用。   nginx我就不介绍了,大家

2014-01-05 11:42:44 2376

原创 linux下一些常见的配置和命令

vsftpd安装配置: vsftpd安装配置本来不难,但是我遇到了一些问题,顺便记录下来。 1. 安装 #apt-get install vsftpd 2. 添加账号#useradd -d /wwwroot -s /sbin/nologin pwftpwwwroot -s /sbin/nologin pwftp 修改密码 #passwd pwftp ...

2014-01-03 18:55:23 1652

最接近点对问题LPP

算法:最接近点对问题的算法解答,有图形界面及分析

2009-05-11

java实现的红黑树

java实现的红黑树,希望对初学者提供帮助

2009-05-11

三种排序算法java实现

三种排序算法比较,快速排序,桶排序,还有……排序

2009-05-11

java写的贪食蛇游戏

JAVA写的小游戏,运行在J2ME上,非常简单

2009-05-11

空空如也

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

TA关注的人

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