lpp`s blog


  • 首页

  • 归档

  • 分类

  • 关于

  • 搜索

设计模式之装饰者模式

发表于 2016-10-29   |   分类于 软件设计

前言

装饰着模式(Decorator Pattern),是在不改变原类文件的情况下,动态扩展一个对象的功能。它是通过创建一个包装对象,也就是用来包裹真实的对象。由装饰对象接受所有来自客户端的请求,并把这些请求转发给真实的对象,并且装饰对象可以在转发这些请求之前或之后增加一些附加功能。从而达到不用修改给定对象的结构就可以在外部增加附加功能的效果。在jdk中经典的使用案例就是io操作相关类,BufferedInputStream,FileInputStream等。

阅读全文 »

设计模式之模板方法模式

发表于 2016-10-29   |   分类于 软件设计

前言

模板方法模式(Template Method Pattern),定义一个操作中的算法骨架,而将一些实现步骤延迟到子类当中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤,是代码复用的一项基本的技术。

阅读全文 »

java hashCode与equals函数

发表于 2016-10-26   |   分类于 java

前言

  • equals 与 == 的区别

  • hashCode与equals之间的联系

  • 什么情况下需要重写hashCode与equals函数

阅读全文 »

MESI 缓存一致性协议

发表于 2016-09-23   |   分类于 计算机体系结构

前言

现代处理器为了提高访问数据的效率,在每个CPU核心上都会有多级容量小,速度快的缓存(分别称之为L1 cache,L2 cache,多核心共享L3 cache等),用于缓存常用的数据。由于内存的速度要比CPU慢将近100倍,数据被修改时也只是先更新cache,并不是直接写回到主存中(CPU是不能直接跟内存进行通信的,CPU只对接cache,然后由cache对接主存),这样一来就造成了缓存中的数据与内存不一致。如果系统是单核处理器,所有线程看到的都是缓存中的最新数据,当然没有问题。但如果系统是多核处理器,同一份主存数据可能会被缓存到多个核心 cache中,在运行中只要其中一个核心修改了缓存中的值,如果其他CPU核心没有得到及时的通知,就会造成缓存不一致的情况,影响系统的运行结果。MESI协议的出现,就是为了解决多核处理器时代,缓存不一致的问题的。

阅读全文 »

linux 软连接和硬连接

发表于 2016-08-31   |   分类于 linux

前言

linux ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化。ln的链接又分软链接和硬链接两种,软链接就是ln –s 源文件 目标文件,它只会在你选定的位置上生成一个文件的镜像,不会占用磁盘空间,硬链接 ln 源文件 目标文件,没有参数-s, 它会在你选定的位置上生成一个和源文件大小相同的文件,无论是软链接还是硬链接,文件都保持同步变化。

阅读全文 »

mysql 函数

发表于 2016-08-29   |   分类于 mysql

前言

mysql语法支持函数的调用,例如:获取当前时间的内置函数now();这样我们可以很方便的在sql语句中直接获取系统当前的时间,concat(str1, str2, str3)拼接字符串函数,如果mysql没有提供这些内置的函数,对于获取当前时间,字符串的拼接等功能,我们就只能在应用层做处理了,除此之外,mysql还支持自定义函数,用于完成某些特定的功能;但是,我们并不建议,自定义函数中处理的逻辑过于复杂,这样会影响mysql服务器处理请求的效率,毕竟对于一个系统来说,数据存储层往往都是整个系统的瓶颈所在,处理的逻辑越简单越好。

阅读全文 »

java 数值包装类原理剖析

发表于 2016-08-28   |   分类于 java

前言

在JDK1.5以上版本中,提供了基本数据类型的自动装箱及拆箱功能(装箱:将基本数据类型自动转为包装类对象;拆箱:将包装类对象自动转为基本数据类型)。

阅读全文 »

java Copy-On-Write并发容器

发表于 2016-08-28   |   分类于 java

前言

在JDK1.5以上版本中,提供了CopyOnWriteArrayList,CopyOnWriteArraySet两种并发容器。采用读写分离的思想(读操作在元数据中操作,写操作则在副本中操作),降低锁冲突,提高并发性。

阅读全文 »

java ThreadLocal原理及应用场景

发表于 2016-08-28   |   分类于 java

前言

在日常的开发中,我们经常会遇到在当前运行线程中保存一些信息,并且各线程之间是隔离的,不会相互影响,不存在并发问题,通过这样的方式来实现请求调用链中方法之间参数传递的解耦,提升代码结构的稳定性等。java ThreadLocal就是用于实现这一目标的。

阅读全文 »

client伪造来源ip欺骗

发表于 2016-08-28   |   分类于 网络安全

前言

一般对于访问比较频繁的接口,服务端都会根据IP做接口访问频率限制;例如,对于给定的IP,1分钟只能调用接口100次,频率过快服务端可以针对该IP进行特殊处理,比如接口直接调用失败或加入IP黑名单列表等操作。那么,对于服务端来说,能够获取客户端真实的IP信息,是至关重要的。

阅读全文 »
1…12131415
lipanpan

lipanpan

142 日志
26 分类
GitHub
友情链接
  • 阿里中间件博客
  • 并发编程网
  • InfoQ
  • Java-api-examples
  • ITFLY8架构师之家
© 2018 lipanpan
由 Hexo 强力驱动
主题 - NexT.Mist