java
文章平均质量分 82
流星007
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
LocalDateTime常用方法总结,总有你会用到的
LocalDateTime转时间戳、获取当前时间、格式化时间、获取当天时间的0点、获取当前是星期几、获取年份、获取月份、获取天、获取上周周一、周日、获取本月第一天、获取当年第一天、获取下个月第一天原创 2022-09-25 13:50:40 · 3397 阅读 · 1 评论 -
java这些基础面试题你都掌握了吗? -- -持续更新
java基础面试题原创 2021-10-24 14:00:13 · 1484 阅读 · 0 评论 -
【设计模式】适配器模式:如何巧妙地过滤游戏中的敏感词
讲解什么是适配器模式,并利用敏感词过滤demo充分讲解了适配器模式的好处原创 2021-04-28 13:48:34 · 1693 阅读 · 3 评论 -
springcloud整合gateway引入nacos报Parameter 0 of method loadBalancerWebClientBuilderBeanPostProcessor in o
Consider defining a bean of type 'org.springframework.cloud.client.loadbalancer.reactive.DeferringLoadBalancerExchangeFilterFunction' in your configuration.原创 2021-04-21 13:43:27 · 6614 阅读 · 6 评论 -
java实现一个简单的会回调函数
其实你找不到错误不代表错误不存在,同样你看不到技术比你牛的人并不代表世界上没有技术比你牛的人。什么是回调函数?回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。回调方法 是 任何一个 被 以该回调方法为其第一个参数 的 其它方法 调用 的方法。很多时候,回调是一个当某些事件发生时被调用.原创 2020-10-24 16:34:27 · 908 阅读 · 4 评论 -
【设计模式】代理模式:神奇的代理模式,节省了我80%开发时间
什么是代理模式?代理模式(英语:Proxy Pattern)是程序设计中的一种设计模式。所谓的代理者是指一个类别可以作为其它东西的接口。代理者可以作任何东西的接口:网上连接、存储器中的大对象、文件或其它昂贵或无法复制的资源。简单点来说,就是在不改变原类的情况下新增新的功能,比如日志、流量监控、请求耗时等等操作都可以通过代理模式来解决。概念说的比较抽象,举个例子大家可能就会明白了,spring的aop肯定都使用过吧,他是处理日志记录的好手,它就是通过代理模式实现的。需求生产环境中发现请求总是很慢原创 2020-08-30 14:00:45 · 1680 阅读 · 2 评论 -
【设计模式】职责链模式:如果第三方短信平台挂了怎么办?
任何傻瓜都能写出计算机可以理解的代码。好的程序员能写出人能读懂的代码”—— Martin Fowler原创 2020-07-13 22:27:55 · 2028 阅读 · 5 评论 -
天真,居然还有人认为java的参数传递方式是引用传递
代码写的越急,程序跑得越慢。—— Roy Carlson原创 2020-07-05 17:19:16 · 9556 阅读 · 117 评论 -
【设计模式】门面模式:接口就像门面,一眼就能看出你的代码水平
什么是门面模式?门面模式,是指提供一个统一的接口去访问多个子系统的多个不同的接口,它为子系统中的一组接口提供一个统一的高层接口。使得子系统更容易使用。、举个栗子:现实生活中,我们去政府办事情的时候是不是需要很多的流程,比如:先去村委开证明,再去乡里办手续,最后再去城里办理业务?是不是一个人要跑三个地方,既费力又费时?难道就不能只去一个地方就能把这件事给办好?虽然政府现在还做不到,但是程序比较争气,它做到了!我们一起看看正常的接口请求这是一个非常正常的接口请求吧,你们觉得这样的设计有问题吗?应该是没原创 2020-06-20 20:58:58 · 777 阅读 · 4 评论 -
听说月入30k的大佬都在使用这些故障检查工具
面试三连面试官:了解JVM吗?小明:知道一点....面试官:那你说一下什么是JVM?小明:JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。面试官:那如果现在服务器出现cpu飙升的情况,你该如何追踪问题呢?小明:查看日志。面试官:那如果日志没有展示呢?比如死锁、死循环等等这些只要不是内存溢出,日志是不会抛出异常的,你怎么追踪到是死锁或者死循环导致原创 2020-06-14 17:17:04 · 583 阅读 · 1 评论 -
【设计模式】观察者模式:一个注册功能也能使用到设计模式?
人生在世如身处荆棘之中,心不动,人不妄动,不动则不伤,如心动则人妄动,伤其身,痛其骨,于是体会到世间诸般痛苦由于受到疫情的影响,现在周末街上都没有以前那么热闹,虽然相比前几个月已经好了很多,但我还是喜欢宅在家里,第一是因为安全,第二是因为穷,一不小心又把心里话说出来了,既然是周末,像我这种屌丝肯定是看着动漫、玩着游戏、惬意的不行,人生得意需尽欢,那为什么我又会来写博客呢?那是因为我的同事小明今天加班,问了我一个既简单又不简单的问题,我觉得工作的你也可能会遇到,所以在这里就记录一下,showtime。..原创 2020-06-07 14:04:39 · 2150 阅读 · 0 评论 -
【设计模式】策略模式:我是一个有谋略的类
写代码的时候经常遇到一堆的if/else、switch,不知道怎么解决?让一个有谋略的军事帮你轻松搞定,让你再也不用为了判断而苦恼!原创 2020-05-23 23:46:24 · 1543 阅读 · 0 评论 -
原来二叉树还可以讲的这么简单,不看看吗?
面试经常被问到的二叉树,这篇文章给你安排的明明白白,上万字讲解,肯定不会让你白看。原创 2020-04-30 11:28:26 · 3638 阅读 · 58 评论 -
带你搞明白什么是缓存穿透、缓存击穿、缓存雪崩
对缓存穿透和缓存击穿总是模棱两可?不明白什么是缓存雪崩?没关系,这篇文章将让你一次性搞明白什么是缓存穿透、什么是缓存击穿、什么是缓存雪崩,上万字总结,建议收藏。原创 2020-04-19 18:58:23 · 2781 阅读 · 49 评论 -
单机服务到分布式架构的演变,有了它,面试再也不慌了!
都2020年了,还搞不明白分布式架构?还不快进来看看这篇超详细的分布式架构,搞懂他,加薪升职什么的都不是问题,确定不进来看看吗?原创 2020-04-13 08:55:41 · 4511 阅读 · 32 评论 -
【源码之下无秘密】ArrayList:在内存只有10M的空间中申请一块5M的数组空间,会导致OOM吗?
面试的时候经常被问到List访问速度快,添加、删除、修改速度慢,你知道为什么?如果不知道,这篇文章会让你看的明明白白,应付面试官绝对不是问题!原创 2020-04-05 16:00:21 · 2459 阅读 · 28 评论 -
【设计模式】原型模式:如何快速的克隆出一个对象?
当面试官问你:对象创建过程过于复杂的时候你会怎么办?你就把这篇文章扔给面试官就对了,绝对加分!原创 2020-04-03 17:20:45 · 1502 阅读 · 15 评论 -
【并发编程】ThreadLocal:如何优雅的解决SimpleDateFormat多线程安全问题
还在为SimpleDateFormat在多线程中存在的安全问题吗?这篇文章将会以最优雅的方式解决SimpleDateFormat在多线程中的问题,那就是:ThreadLocal(本地线程存储)原创 2020-03-31 18:06:19 · 3188 阅读 · 29 评论 -
【并发编程】面试官:有没有比读写锁更快的锁?
当面试官问你有没有比读写锁更快的锁,你就这样回答他,保证加分项原创 2020-03-30 09:12:57 · 5742 阅读 · 25 评论 -
docker部署springboot项目(详细教程)
目录docker介绍安装dockerUbuntu安装dockerCentOS安装docker通过脚本安装创建springboot项目docker介绍Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。docker的核心思想是...原创 2020-03-26 21:34:00 · 29748 阅读 · 19 评论 -
idea中tomcat乱码问题
解决方法1.进入tomcat的config目录,编辑:server.xml <Connector port="8080" protocol="HTTP/1.1" URIEncoding="UTF-8" connectionTimeout="20000" redirectPort="8443" />在Connect...原创 2020-03-22 13:37:57 · 815 阅读 · 3 评论 -
springboot实现国际化居然可以这么简单
springboot实现国际化(多语言)国际化(internationalization)是设计和制造容易适应不同区域要求的产品的一种方式。它要求从产品中抽离所有地域语言,国家/地区和文化相关的元素。换言之,应用程序的功能和代码设计考虑在不同地区运行的需要,其代码简化了不同本地版本的生产。开发这样的程序的过程,就称为国际化。不知道...原创 2020-03-15 13:54:09 · 7105 阅读 · 27 评论 -
springboot整合mybatis-plus看这篇文章就足够了
什么是mybatis-plusMyBatis-Plus(简称 MP)是一个MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。特点无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作 强大的 CRUD 操作:内置通用 Mapper、通用 Serv...原创 2020-03-11 11:05:55 · 1997 阅读 · 3 评论 -
【设计模式】工厂模式:你还在使用一堆的if/else创建对象吗?
java实现工厂模式,我们常见的工厂模式大致分为三种:简单工厂、工厂方法和抽象工厂,我们比较常用的是简单工厂与工厂方法,抽象工厂顾名思义,他比较抽象,在项目中使用场景也比较有限,他是为了解决简单工厂与工厂方法解决不了的更复杂的对象创建原创 2020-03-07 16:41:57 · 1062 阅读 · 12 评论 -
springboot全局异常捕获
异常?什么是异常?程序在启动或者运行时没有按照预期的执行,在执行途中发生某种未知的错误,导致程序非正常停止或者报错。在我们的程序中,肯定会伴随着很多的异常,...原创 2020-03-02 14:04:05 · 1853 阅读 · 2 评论 -
【设计模式】单例模式
目录什么是单例模式为什么要使用单例模式如何实现一个单例模式第一种:饿汉式第二种:懒汉式第三种:双重检测第四种:静态内部类什么是单例模式单例模式,属于创建类型的一种常用的软件设计模式。通过单例模式的方法创建的类在当前进程中只有一个实例(根据需要,也有可能一个线程中属于单例,如:仅线程上下文内使用同一个实例)。简单点来说:一个类只能被创建一个实例对象,这样...原创 2020-02-16 15:08:20 · 505 阅读 · 0 评论 -
@SpringbootApplication注释是什么意思?
什么是springboot?Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。我们以前编写项目用到的框...原创 2020-02-06 18:18:35 · 1950 阅读 · 1 评论 -
【数据结构与算法】二分:如何判断某个元素是否存在一个有序的数组中?
需求有一个数组,大小1000w,数据由小到大,现在用户随便输入一个数字,如何快速的判断此元素是否在数组中存在?看到上面的需求你可能马上就想到怎么做了,循环这个数组,如果用户输入的数据等于当前循环的数据,表示存在,数组循环结束还没有找到,代表数据不存在数组中,这种方法最简单,循环一次数组就能得到结果,空间复杂度:O(1),时间复杂度:O(n),注意这里的O(n)仅仅表示数组大小是变动的,如果...原创 2020-01-14 16:33:40 · 1444 阅读 · 1 评论 -
【并发编程】java并发编程:CAS(Compare and Swap)
目录概念需求:实现1.正常累加(既不加锁,也不使用原子类)。2.使用synchronized原子类为什么原子类比互斥锁的效率低?CAS的ABA问题概念compare and swap,解决多线程并行情况下使用锁造成性能损耗的一种机制,CAS操作包含三个操作数——内存位置(V)、预期原值(A)和新值(B)。如果内存位置的值与预期原值相匹配,那么处理器会自...原创 2020-01-13 09:17:50 · 738 阅读 · 2 评论 -
【数据库】mysql:悲观锁与乐观锁
为什么会使用到数据库级别的锁?你可能会有这么一个疑问:现在的程序已经提供了很完善的锁机制来保证多线程的安全问题,还需要用到数据库级别的锁吗?我觉得还是需要的,为什么呢?理由很简单,我们再编程中使用的大部分锁都是单机,尤其是现在分布式集群的流行,这种单机的锁机制就保证不了线程安全了,这个时候,你可能又会想到使用redis的setNX分布式锁或者zookeeper的强一致性来保证线程安全,但是这里...原创 2020-01-10 11:20:21 · 587 阅读 · 1 评论 -
【数据结构与算法】将5个文件中的一千万年龄合并到一个新文件中
需求现在有5个文件,文件里面分别存储着1千万个用户年龄,并且每个文件中的年龄都是有序的(从小到大),现在需要将这5个文件整合到一个文件中,新文件的内容依然要保持有序(从小到大)。初始化数据1.数据生成1千万数据(无序)。2.将无序的数据进行排序。3.将排好序的数据写入到文件中。全局变量类package com.ymy.file;import java.util.c...原创 2019-12-24 08:59:47 · 525 阅读 · 0 评论 -
【数据结构与算法】常见的三种排序(冒泡排序、插入排序、选择排序)
冒泡排序什么是冒泡排序?百度百科解释:它重复地走访过要排序的元素列,依次比较两个相邻的元素,如果顺序(如从大到小、首字母从从Z到A)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡...原创 2019-12-17 15:05:50 · 2146 阅读 · 2 评论 -
【数据结构与算法】使用数组与有序集合LinkedHashMap(双向链表)实现一个简单的LRU算法(最近最少使用策略 LRU(Least Recently Used))
什么是LRU算法?redis大家都玩过吧,你们好奇redis内存数据存满之后会发生什么吗?抛出异常?禁止使用?还是删除数据?其实redis设计了一种内润淘汰机制。noeviction(默认策略):屏蔽写操作,返回错误(特殊的写操作除外),但是支持删除操作volatile-lru:使用LRU算法对设置了过期时间的key进行删除。allkeys-lru:使用LRU算法对所有key进行删...原创 2019-12-13 14:42:11 · 508 阅读 · 1 评论 -
springcloud(五)远程调用Feign(含源码跟踪)
feignfeign是一个声明式的Web服务客户端。这使得Web服务客户端的写入更加方便 要使用Feign创建一个界面并对其进行注释。它具有可插入注释支持,包括Feign注释和JAX-RS注释。Feign还支持可插拔编码器和解码器。Spring Cloud增加了对Spring MVC注释的支持,并使用Spring Web中默认使用的HttpMessageConverters。Spring Cl...原创 2019-11-29 10:54:21 · 2695 阅读 · 8 评论 -
springcloud(四)消息总线Bus
BUS介绍Spring Cloud Bus将分布式系统的节点与轻量级消息代理链接。这可以用于广播状态更改(例如配置更改)或其他管理指令。一个关键的想法是,Bus就像一个扩展的Spring Boot应用程序的分布式执行器,但也可以用作应用程序之间的通信渠道。当前唯一的实现是使用AMQP代理作为传输,但是相同的基本功能集(还有一些取决于传输)在其他传输的路线图上。简单点来说,就是动态刷新配置...原创 2019-11-28 14:44:53 · 655 阅读 · 0 评论 -
【并发编程】java并发编程之死锁
目录死锁是什么?产生死锁的条件用代码重现死锁如何避免死锁总结死锁是什么?官方定义:死锁是指两个或两个以上的进程(线程)在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程(线程)称为死锁进程(线程)。介绍的是不是很抽象?那到底什么是死锁呢?我们来看...原创 2019-11-07 14:43:46 · 462 阅读 · 0 评论 -
springboot整合rabbitMq
下载rabbitmq下载地址:https://www.rabbitmq.com/install-windows.html如果需要看到图形管理界面,还需要进行如下操作:打开doc窗口,切换到rabbitmq的bin目录,执行:rabbitmq-plugins enable rabbitmq_management即可。springboot整合rabbitmq1.新建一个maven工...原创 2019-11-14 14:26:11 · 325 阅读 · 0 评论 -
【并发编程】java并发编程之线程同步(CountDownLatch、CyclicBarrier)
多线程线程:类似执行一个命令,多线程:并发执行多条命令。多线程的优点:1.充分利用cpu的性能。2.提高系统性能。3.同一时刻处理可以处理不同的命令线程同步即当有一个线程在对内存进行操作时,其他线程都不可以对这个内存地址进行操作,直到该线程完成操作,为什么需要它呢?1.多线程会出现线程安全问题,线程同步可以有效的保证线程安全。 2.当主线程依赖两个子线程结...原创 2019-11-07 12:23:37 · 350 阅读 · 1 评论 -
【并发编程】java并发编程之synchronized
锁是什么?什么要使用它? 相信接触过并发的人都知道synchronized是一种锁,那什么是锁呢?显示生活中的解释:一把锁管控这某一个空间,只有人们拿钥匙打开锁才能进入。编程世界中的锁,和现实世界很相似,它的目的很明确:加锁的方法或者代码块,只有拿到钥匙才能访问。 那什么时候需要用到它呢?这个就要看业务场景,如果程序没有牵扯到并发或者共享变量不存在竞争,这种情况下一般不需...原创 2019-11-06 15:38:20 · 635 阅读 · 0 评论 -
【并发编程】java并发编程之ReentrantReadWriteLock读写锁
synchronized 这个关键字,是锁的意思,而且还是一种可重入锁,使用它可以保证线程的互斥性,保证被synchronized修饰的代码块或者方法在同一时刻只能被一个线程访问,所以在并发编程中可以保证数据的准确性,由于他是锁住了整个代码块或者方法,这样就会大大的降低程序的性能,在并发很高的时候会导致很卡。 那有没有比synchronized更快的锁呢?ja...原创 2019-10-26 10:48:13 · 964 阅读 · 9 评论
分享