首页
学习
活动
专区
工具
TVP
发布

阿杜的世界

专栏作者
197
文章
172624
阅读量
34
订阅数
KMP算法详解
BF算法的问题是:模式串已经匹配到最后一位了发现不一样,需要将文本串和模式串的指针都往后退,导致有很多的重复匹配,效率很低。
阿杜
2023-03-01
3410
使用Optional摆脱NPE的折磨
architectural-architectural-design-architecture
阿杜
2019-07-15
5050
函数式编程让你忘记设计模式
有点标题党,但是这确实是我最近使用Lambda表达式的感受。设计模式是过去的一些好的经验和套路的总结,但是好的语言特性可以让开发者不去考虑这些设计模式。面向对象常见的设计模式有策略模式、模板方法、观察者模式、责任链模式以及工厂模式,使用Lambda表达式(函数式编程思维)有助于避免面向对象开发中的那些固定代码。下面我们挑选了策略模式和职责链模式两个案例进行分析。
阿杜
2019-07-08
9510
vavr:让你像写Scala一样写Java
Hystrix是Netflix开源的限流、熔断降级组件,去年发现Hystrix已经不再更新了,而在github主页上将我引导到了另一个替代项目——resilience4j,这个项目是基于Java 8开发的,并且只使用了vavr库,也就是我们今天要介绍的主角。
阿杜
2019-07-01
8690
025:为什么需要将Logger对象声明为private static final类型的
有时候我会使用protected而不是private,只有一种情况下我会这么用:当我的设计中有继承体系,并且我希望继承体系里的对象都使用同一个日志对象时,就会在基类里定义一个protected的日志对象。
阿杜
2019-06-16
1.4K0
022:如果要将对象用作Map中的key,需要注意什么
如果将对象作为Map中的key,需要是实现该对象的equals方法和hashCode方法;现在一般通过lombok可以简单得实现,并且可以选择具体需要哪些字段参与equals和hashCode方法的计算。
阿杜
2019-05-15
1.4K0
软件调试的技巧
这篇文章是《调试九法:软硬件错误的排查之道》的阅读笔记。这本书的主旨,是介绍如何修复bug:找出bug发生的原因、并给出修复方案。
阿杜
2019-05-14
8050
019:使用String的conact()方法和“+”做字符串拼接有什么不同
可以通过查看字节码和JDK源码来比较二者的不同,将上面的代码使用javac StringContactExample2.java编译,然后使用javap -c StringContactExample2,可以看到对应的字节码内容。
阿杜
2019-03-15
1.9K0
017:为什么不建议在循环中使用“+”拼接字符串
由于字符串对象是不可变的,所以每次循环都会对操作符左右两边的字符串进行拷贝,并生成一个新的字符串对象。如果循环n次,则这个过程需要n的平方级的时间;并且在这个过程中还创建了很多短命的中间对象。
阿杜
2019-03-12
1.2K0
018:String、StringBuilder和StringBuffer的区别
Java中的String对象是不可变对象,针对字符串对象的操作(例如subString、contact、replace)都会生成一个新的String对象,如果应用中有大量这样的操作,就会产生大量的临时String对象,会影响Java应用运行的性能。
阿杜
2019-03-12
5180
003-005:Java平台相关的面试题
字节码之于Java,类似于汇编语言之于C/C++。对于C/C++语言来说,不同的平台需要不同的编译器,以应对不同的操作系统和机器指令集;对于Java来说,只需要一个编译器(javac),编译形成的字节码是一种通用的代码,可以运行在任何安装了JVM的机器上,也就实现了所谓的“一次编写、到处运行”。
阿杜
2019-03-12
3450
016:字符串对象在JVM中是如何存放的
String提供了一个API——java.lang.String.intern(),这个API可以手动将一个字符串对象的值转移到字符串常量池中。
阿杜
2019-03-12
2.1K0
015:为什么Java中的字符串对象是不可变的
所谓不可变对象,是指一个对象在创建后,它的内部状态不会被改变的对象。这意味着当我们将一个不可变对象的引用赋值给某个变量后,我们就不能改变该对象的内部状态。 James Gosling也说过——Java开发者应该尽量使用不可变对象。
阿杜
2019-03-12
6040
经典面试题之链表
《程序员面试金典》p49,2.6, 求单链表环路的入口结点。 相关题目:给定两个单链表,求他们的共同交点。 解法: (1)利用栈,空间复杂度高 (2)先对两个链表分别作就地反转,然后再一次判断 (3)先分别遍历两个链表,如果能遍历到相同的尾结点,则两个链表相交,同时记录下两条链表的长度longlength和shortlength,然后用两个指针fast和slow;fast先走(longlength-shortlength)步,然后他们再同时走,到相同时就是第一个相交结点 (4)将两个链表首尾相连,
阿杜
2018-08-06
3450
分布式系统学习资料(ing)一、理论知识二、数据库三、分布式服务调用四、消息系统
一、理论知识 从ACID到CAP到BASE 2PC到3PC到Paxos到Raft到ISR 复制、分片和路由 副本更新策略 负载均衡算法及手段 二、数据库 笔者带你剖析淘宝TDDL——Matrix层的分库分表配置与实现 纠正文章关于分库分表规则的一点错误:<property name="dbRuleArray" value="(#id#.longValue() % 4096).intdiv(16)"/>这个规则,表示分4096张表,每个库16张表。因此,tableIndex = id % 4096、dbI
阿杜
2018-08-06
4720
应用GC长时间停顿分析
早上被报警叫醒,使用gceasy.io分析了服务器的gc日志,报告见:2017-05-28 gc.log报告
阿杜
2018-08-06
8650
Java并发编程:概念和原理关键概念Java并发的底层机制参考资料
Java并发编程在实际的工作中应用广泛,有时候需要通过多线程去异步做一些事情,有时候需要通过多线程提升一个任务执行的效率。最近又在回顾一些Java编程的基本概念和原理,就顺手记录在这里。
阿杜
2018-08-06
3060
Java虚拟机规范阅读笔记—第2章
在发生一个方法调用的时候会创建一个栈帧,在方法执行结束(无论是正常结束还是抛出异常)的时候栈帧会被销毁。栈帧在JVM的栈上分配,栈属于某个线程。每个栈帧都有自己的本地变量数组、运算元栈、指向运行时常量池的引用和指向当前方法所属类的引用。
阿杜
2018-08-06
3670
没有更多了
社区活动
腾讯技术创作狂欢月
“码”上创作 21 天,分 10000 元奖品池!
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档