5 呼延十

尚未进行身份认证

呼延

等级
TA的排名 6w+

[设计模式]-模板方法模式

前言在上一篇文章责任链模式中提到了模板方法模式,因此这里简单介绍一下.模板方法模式比较简单,或者说比较常用.在开发过程中,许多人在不知不觉的情况下就会使用,只要他具有良好的面对对象思维.比如当你写了Dog和Cat两个类,发现很多相同的代码,你自然就会将相同模块提取抽象成父类,然后将一些公共的方法放到父类中,这样子就基本实现了模板方式模式.介绍(摘自《HeadFIrst设计模式》)在一...

2019-03-20 00:33:47

[设计模式]-责任链模式

1.介绍使多个对象都有机会处理请求,从而避免请求的发送者与接受者之间的耦合关系.将多个接受者连成一条链,沿着该链处理请求,知道请求被处理为止.类图角色抽象处理者:定义了处理请求的接口或者抽象类,提供了处理请求的的方法和设置下一个处理者的方法。具体处理者:实现或者继承抽象这角色,具体的实现处理逻辑.实例与代码责任链模式有纯的和不纯的.纯的:当前接收者要么处理,要么传递给下一个...

2019-03-19 20:57:02

二分法查找及有重复值的二分法

前言最近也在进行一些面试嘛,也见识到了很多各种各样的题目,其中就有一些和二分查找相关的.二分查找,在有序的数组中快速找到目标值.这个算法在上学的时候学过,之后就没有看过了,因为比较"简单"嘛~.然而在面试过程中,我在二分查找及类似题目上栽了三次…所以今天做一个总结.注意:下文的代码中没有进行参数校验,实际使用时需要进行参数校验普通写一个二分查找classSolution:...

2019-03-18 00:15:36

Java中Executors中提供的4种线程池

前言了解一下线程池的源码实现.ThreadPoolExecutorjdk中关于线程池一个比较核心的类是ThreadPoolExecutor,先来看一下他的实现.构造方法publicThreadPoolExecutor(intcorePoolSize,intmaximumPoolSize,...

2019-03-08 00:11:34

阿里开源的Java动态追踪工具Arthas使用

本文仅测试及学习Arthas命令的使用方式,对原理不做探讨,有兴趣的胖友可以戳下方美团博客的链接,讲解的十分不错.相关链接arthas中文官方网站美团博客关于java动态追踪的一篇文章,讲解了部分原理,推荐阅读官方的命令参考手册介绍arthas是什么?能做什么?这里copy官方文档的一段话来告诉大家.Arthas是Alibaba开源的Java诊断工具,深受开发者喜爱。当你遇到以...

2019-03-07 11:30:06

OOM,StackOverFlow以及死锁的测试

这篇文章主要是记录自己做的一些小的测试.主要包括内存溢出,栈溢出,以及死锁问题.PS:文章中使用了Arthas工具,用来动态监控JVM的一些资源,非常好用,强烈安利一下.OOMOutOfMemory,内存不够用了,一般是什么原因呢?给应用程序分配的内存太小,只能通过增大内存来解决.内存泄漏.有一部分内存"无用"了,但是因为编码问题导致的没有被垃圾回收掉,产生了泄漏,最终导致了内...

2019-03-07 00:12:17

[随缘一题]实现交易计算盈利

来源:根据先进先出原则实现交易.例如:buy100share(s)at$20eachbuy20share(s)at$24eachbuy200share(s)at$36eachsell150share(s)at$30each得出计算结果940.优先卖掉持有时间最长的.解题思路直接使用Arraylist保存,卖出时从第一个开始即可.当然...

2019-02-24 16:52:54

[随缘一题]后缀表达式(逆波兰表达式)转换

来源:维基百科-后缀表达式目标将中缀表达式转换为后缀表达式,比如((5+2)*(8-3))/4转换为52+83-*4/.解题思路将表达式的字符逐一处理,如果是数字(变量)则直接输出,如果是字符入栈,并按以下规则进行处理.+/-:低优先级,所以将栈中的所有运算符出栈,之后将自己入栈.*or/:高优先级,将栈中的其他乘除运算符出栈,之后将自己入栈.(:左括号则...

2019-02-24 16:50:20

[随缘一题]回溯法解决N皇后问题

来源:维基百科-N皇后问题解题思路采用回溯法,即逐一位置放置,然后放置下一行,如果下一行没有合法位置,则回溯到上一行,调整位置,直到得到所有值.实现代码/***solvetheN-Queenproblem*/publicclassNQueen{//thenumberofchessboard,example8privatestaticfi...

2019-02-24 16:46:22

单例模式的N种写法

1.前言写完这个题目,我感觉自己好像"孔乙己"啊,回字的四种写法要不要学啊~我们经常会用到单例模式,但是我对他一直没有一个统一的的认识,比如我清楚好多种单例的写法,但是每一种是怎么演化来的?具体解决了什么问题?这块就没有那么清晰了,因此此文对单例模式进行一个总结,同时手撸一下代码加深理解.2.介绍单例模式,即某一个类在整个系统中有且仅有一个实例.经常用来读取配置,获取连接等等.3.实现...

2019-01-31 14:22:30

Java的序列化与反序列化

前言Java的序列化与反序列化是Java中比较重要的一个知识,本文将总结一下,怎么使用序列化功能以及经常遇到的一些问题的解答.什么是Java的序列化JDK提供给我们的,可以将某一个对象转化为二进制字节流保存,并从字节流恢复对象的一种技术.我们可以再网络传输对象,或者持久化对象时使用这项技术.怎么进行序列化与反序列化Java中通过继承Serializable接口来获得序列化与反序列化的能...

2019-01-29 21:16:30

Java类加载的执行顺序

前言那一年,呼延十又回想起被加载顺序支配的恐惧,笔试题上,好几个类,几个方法,几个输出语句,让你按照顺序写出输出.我真的是有一句…但是呢,我们还是有了解一下的必要的,在编码过程中有许多的应用.正文经常用来比较顺序的,无非就是静态代码块,普通代码块,静态方法和普通方法.这里直接说一下结论:先静态后普通最后构造方法,先父类后子类.看一下实际的例子:packagedaily;/**...

2019-01-29 00:34:39

入驻云栖社区

我的博客即将入驻“云栖社区”,诚邀技术同仁一同入驻。

2019-01-23 16:40:14

使用自定义注解实现接口参数校验

1.前言在接口的开发中,我们有时会想让某个接口只可以被特定的人(来源)请求,那么就需要在服务端对请求参数做校验.这种情况我们可以使用interceptor来统一进行参数校验,但是如果很多个接口,有不同的的设定值,我们总不能写很多个interceptor,然后按照patn逐一添加吧?面对这种情况,我们可以选择自定义一个注解,由注解来告诉我们,这个接口允许的访问者是谁.注:在本文的示例中,仅实...

2019-01-21 00:10:59

[随缘一题]-实现栈

来源:lintcode-495.实现栈描述实现一个栈,可以使用除了栈之外的数据结构解题思路这个题真的是…皮.用ArrayList试试.importjava.util.ArrayList;/***createdbyhuyanshion2019/1/17*/publicclassStack{privateArrayList<Integer&...

2019-01-18 00:10:28

TOP-K问题

前言TOP-K问题是面试中的常见题型,具体表现为:海量数据求最大(最小)的K个值.比如:给定1亿个乱序的整数,求其中最大的1000个今天一步一步来分析这种题目的解决办法,以及用到的算法思想.依赖此文中会依赖到快速排序,堆排序等排序算法,以及数据结构堆.如果你对上述两者的原理有所了解,可以继续往下看.如果不了解,可以点击链接先看一下基础~.好,进入正题.(以给定1亿个乱序的整数...

2019-01-16 23:25:49

数据结构-堆

介绍堆(英语:heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质:堆中某个节点的值总是不大于或不小于其父节点的值;堆总是一棵完全二叉树。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。常见的堆有二叉堆、斐波那契堆等。定义堆的定义如下:n个元素的序列{k1,k2,ki,…,kn}当且仅当满足下关系时,称...

2019-01-16 01:49:44

面试常用排序算法总结

layout:postcategory:[算法,排序,面试]tags:算法面试排序前言面试的死亡高发区是什么?手写快排.其他的排序算法也经常会问到,虽然在工作中,我们很少有需要自己手写排序算法的机会,但是这种入门级的算法却是证明我们能力的一种简单方法.因此要熟悉掌握.这篇文章,详细记录常用的一些排序算法,留以备忘.本文所有代码可在github上下载查看.传送门为了...

2019-01-14 15:49:06

linux进价命令(sort,comm,unip等)

1.sedsed是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(patternspace),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。func...

2019-01-12 21:23:14

[Vim]部分常用快捷键记录

删除当前行dd跳转至最后一行G移动到行末$移动到单词末尾e撤回上一次操作u复制粘贴yp保存离开ZZ查找某个内容/content之后使用n下一个,N上一个完。ChangeLog2019-01-11完成以上皆为个人所思所得,如有错误欢迎评论区指正。欢迎转载,烦请署名并保留原文链接。联系邮箱:huyanshi2580@gmail.com更多...

2019-01-12 20:07:40

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取