10 KeepSayingNo

尚未进行身份认证

我要认证

分享改变世界

等级
TA的排名 1w+

浓浓棕情之自产自消

今天是端午节,祝大家端午节快乐。今年的疫情让很多人放弃了出行的计划,宅在家里,我也是无聊,想到写点什么东西和大家分享下,希望有感兴趣的看看,如果有什么想法欢迎交流。生产者和消费者是软件世界里很寻常的场景,然而大多数程序员平时写代码不会用到,因为很多系统都是用来查询数据展示数据,写写CRUD就好了。随着MQ的横空出世,让大家都醉心于这种好用的中间件,配置一个Topic,发送消息就调用客户端的发送接口,接收消息继承一个接口,写一个Listener,整个从生产到消费全流程就这种友好的解决了,性能和完整性更不用

2020-06-25 21:38:41

CountDownLatch多任务处理利器

CountDownLatch 是由java并发包提供的一个同步计数器,从字面意义上去理解可以分成两部分CountDown 和 Latch,CountDown就是计数的意思,Latch是门闩,这个同步工具就是通过保证多线程环境下,通过门闩限制主线程执行,子线程执行后计数减1,直到减为0,门闩打开,主线程执行。场景一:...

2020-04-25 21:34:36

切绳子算乘积

题目:给你一段绳子,这段绳子的长度是正整数(绳子长度大于0),你可以选择切或者不切,如果切,分成两段,保证两段的长度都是整数,如果可以继续切,你可以选择继续,最后要求每一段绳子的长度的乘积最大。思考一:如果每次从中间切似乎得到的乘积会很大,那么当绳子长度为偶数,就直接从中间切,如果是奇数,那么奇数加1或者减1后再二分的位置切。static int clacLen(int n) {...

2020-03-01 21:20:04

工厂模式及在Spring中的应用

工厂模式是最基本的也是最重要的模式,因为它方便我们能写出高质量、高效率的代码。只有掌握了工厂模式,我们才不会重复造轮子。今天将从最简单的工厂模式开始一步步深入讲解,告诉大家自己写是怎么用的,框架又是如何实现,我们能从框架实现获得怎么样的灵感。首先看看工厂模式的类图:工厂模式由一个接口类加一个对应的工厂类实现的,接口类提供所有要创建出来的实体所需要的方法,工厂类只负责一件事:创建实现类的...

2019-12-22 13:17:35

编程题阶乘迷局

大厂笔试面试题,给定一个整数,求该整数的阶乘,例如输入5,结果是5*4*3*2*1=120。拿到题目心中狂喜,迅速三下五除二就写出来:public int fun1(int i) { int k = 1; for(int j=2; j<=i; j++) { k = k * j; } retur...

2019-11-15 17:41:03

Spring MVC 拦截器原理解析

Spring MVC支持配置多个拦截器,http请求将被配置的拦截器处理,处理后报错信息抛异常,异常将被DispatcherServlet捕获处理,每个拦截器对应的handler处理异常,包装成ModelAndView返回。web.xml 配置<servlet> <servlet-name>myservlet</servlet-name> <...

2019-11-10 11:21:21

多线程处理返回值

好久没写博客,看了下上一篇发表的时间发现已是一年多前,看到消息处的小红点,点了下发现仍然有很多新朋友关注了我,给我留言,给我的博文点赞,让我发现技术分享的重要性,不仅仅是影响一个人,而是影响一群人。软件开发是一份很潮的工作,会随着历史的潮头不断奔流不息,只有屹立潮头的人才不会被淘汰。逆水行舟,不进则退,多少比你差的人比你还几倍的努力。如果你总是止步不前,拒绝新的技术,你还期望公司给你加薪,你还指望...

2019-09-08 14:43:08

ZooKeeper实现分布式锁(一)

ZooKeeper可以在其目录下建立节点,这些节点都是以路径和值为映射关系存在的,下面通过一个例子说明如何创建节点和删除节点。public class TestLock { public static void main(String[] args) { ZkClient zkClient1 = new ZkClient(new ZkConnection("127.0.0.1:2181")...

2018-05-29 16:55:22

自己实现缓存

    有的时候我们需要频繁用到一些数据,我们不需要频繁去查数据库,这样不仅浪费数据库的IO,也浪费单次业务的时间,如果我们要用到的数据就是数据库中的某一张表的固定数据,那么我们就可以在项目启动的时候将该表的数据加载到缓存中。设计思路:1. 一个加载缓存数据的服务Bean2. 一个存储缓存数据的类实现加载缓存数据的服务Bean采用了实现Spring提供的InitializingBeanpublic...

2018-02-15 11:04:32

理解线程的join方法

在多线程环境下很难保证结果的一致性,多线程带来的好处就是并行处理提升效率,弊端就是出现了问题很难定位,可以看个例子就明白了,请将下面的代码拷到本地去执行,就会发现每次执行的结果不一样。     代码1public class JoinDemo { public static void main(String[] args) { Thread thread1 = new Thread(

2018-01-29 23:14:01

Java小数截断

本文对Java小数截断的几种方式进行了总结。

2017-11-21 15:37:07

Spring Bean三种注入方式

Spring Bean三种注入方式分别是Field注入、构造器注入和Setter方法注入。

2017-11-07 21:11:38

Redis安装和配置

本文主要介绍如何在Linux环境下搭建Redis

2017-10-05 16:54:53

Json解析方法大全

JSON是一种轻量级的数据交换格式,和XML一样广泛应用于前端和后台的交互。如何高效和安全的解析JSON是摆在广大程序员面前的难题,如果有工具包能帮我们做这些事情就好了,目前有Google公司的Gson,阿里巴巴公司的fastJson,以及Jackson,今天我就讲解下如何通过这3个工具去解析JSON字符串,以及如何将Java对象转换成JSON字符串。

2017-06-17 23:53:35

Java反射

Java反射为开发者提供了更灵活的方式编程,可以在运行时操纵类的构造方法、属性和方法。本文介绍了反射如何去使用类的构造方法、属性和类的方法。

2017-05-07 20:42:11

ThreadLocal类维持线程封闭性

在《多线程采用锁并发控制》一文中采用锁保证了多线程下类的成员变量的同步。如果需要保证线程内部对变量的访问是隔离的,线程内部对变量的操作不会影响其他的线程,这又该如何操作了。ThreadLocal对象通常用于防止对可变的单实例变量或全局变量进行共享。

2017-03-26 12:56:31

第一个Spring Boot程序

正如官网说的Spring Boot给我们带来的是单机的,产品级的基于spring的应用。运用Spring Boot无需tomcat就可以将应用作为Web Server对外提供访问,非常便捷。

2017-03-11 13:27:07

2016--在技术的浪潮中自我实现

今天恰好是2016年的圣诞节,窗外正飘着小雨,一盏孤灯,淡黄色的光投射到电脑屏幕上,显得比较温馨。每过一年都会感觉自己大了一岁,而这一年又新增了无数的新技术,自己就仿佛乘坐一叶孤舟,迎接一个个风浪,当风浪过后,便是晴天。世界唯一不变的就是变化,只有拥抱变化,你才能成为技术浪潮中的领航者。人总是应该有所追求,不因为年华老去,而变得迟钝;不因为衣食住行,而让自己变得畏缩;不因为青年才俊的横空出世,而感叹自己年华易老。日子不是用来蹉跎的,自己应该时刻提醒自己还有很多事情要做,价值的实现要通过自我实现。

2016-12-25 12:49:26

WeakHashMap的使用

WeakHashMap的实现及其应用。

2016-12-04 12:33:49

线程池可以吞掉异常

本文由线程池吞掉异常出发,讲解了程序开发过程中应该怎么去捕获异常,打印堆栈信息,并且进一步阐述了线程池内部的接口和类的关系。

2016-12-03 21:05:04

查看更多

勋章 我的勋章
  • 签到达人
    签到达人
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 技术圈认证
    技术圈认证
    用户完成年度认证,即可获得
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 阅读者勋章Lv1
    阅读者勋章Lv1
    授予在CSDN APP累计阅读博文达到3天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 原力新人
    原力新人
    在《原力计划【第二季】》打卡挑战活动中,成功参与本活动并发布一篇原创文章的博主,即可获得此勋章。