- 博客(25)
- 资源 (12)
- 问答 (1)
- 收藏
- 关注
原创 数据结构与算法面试问答
1.什么是算法?算法简单来说就是解决问题的步骤。在Java中,算法通常都是由类的方法来实现的。前面的数据结构,比如链表为啥插入、删除快,而查找慢,平衡的二叉树插入、删除、查找都快,这都是实现这些数据结构的算法所造成的。后面我们讲的各种排序实现也是算法范畴的重要领域。一、算法的五个特征①、有穷性:对于任意一组合法输入值,在执行又穷步骤之后一定能结束,即:算法中的每个步骤都能在有限时间内完成。②、确定性:在每种情况下所应执行的操作,在算法中都有确切的规定,使算法的执行者或阅读者都能明确其含义及如何执行。并且在
2022-05-18 22:31:10 389
原创 Springboot中通过@Value注解 或者@ConfigurationProperties注解 使用配置文件中的属性
通过@Value(“${属性值}”)注解实现配置文件注入引入:import org.springframework.beans.factory.annotation.Value;application.properties配置文件的属性jwt.config.key = "9685"jwt.config.ttl = 2542511在代码属性上使用@Value(“属性值")说明:使用@Value("{属性值}") 说明:使用@Value("属性值")说明:使用@Value("{属性值}”)的类
2022-05-05 22:06:35 436
原创 Zookeeper面试会问到的有哪些?
1.Zookeeper有哪些节点类型?PERSISTENT-持久节点除非手动删除,否则节点一直存在于Zookeeper上EPHEMERAL-临时节点临时节点的生命周期与客户端会话绑定,一旦客户端会话失效(客户端与zookeeper连接断开不一定会话失效),那么这个客户端创建的所有临时节点都会被移除。PERSISTENT_SEQUENTIAL-持久顺序节点基本特性同持久节点,只是增加了顺序属性,节点名后边会追加一个由父节点维护的自增整型数字。EPHEMERAL_SEQUENTIAL-临时顺序节点
2022-05-05 21:55:35 112
原创 ElasticSearch 面试 4 连问
ES 写入数据的工作原理是什么?1)客户端选择一个node(协调节点)发送请求过去。2)coordinating node(协调节点),对document(row行)进行路由,将请求转发给对应的node(主分片)3)实际的node上的primary shard(主分片)处理请求,然后将数据同步到replica node(复制节点)4)coordinating node,如果发现primary node(主分片)和所有replica node(复制节点)都搞定之后,就返回响应结果给客户端ES 查询数
2022-05-05 21:53:55 76
原创 RabbitMQ几个常用面试题
1、什么是RabbitMQ?为什么使用RabbitMQ?答:RabbitMQ是一款开源的,Erlang编写的,基于AMQP协议的,消息中间件;可以用它来:解耦、异步、削峰。2、RabbitMQ有什么优缺点?答:优点:解耦、异步、削峰;缺点:降低了系统的稳定性:本来系统运行好好的,现在你非要加入个消息队列进去,那消息队列挂了,你的系统不是呵呵了。因此,系统可用性会降低;增加了系统的复杂性:加入了消息队列,要多考虑很多方面的问题,比如:一致性问题、如何保证消息不被重复消费、如何保证消息可靠性传输等
2022-05-05 21:52:06 58
原创 SpringBoot 整合 FastDFS
2、引入依赖: org.csource fastdfs-client-java 1.29-SNAPSHOT3、在项目resources目录创建fastdfs_client.conf用来连接服务# 连接超时时间,针对socket套接字函数connect,默认为30秒connect_timeout = 20000# 网络通讯超时时间,默认是60秒network_timeout = 30000charset = UTF-8# tracker 服务器 HTTP 协议下暴露的端口http.trac
2022-04-30 23:28:15 627
原创 Java中显示try catch捕获异常信息(异常类别、行号)
在实际开发过程中有的时候,我们需要对比如:IO操作的代码块 进行try异常处理,这个时候通过catch很好的解决了返回异常信息给前端。但是会产生一个新问题:隐藏了异常的真正原因,无法从根本上解决代码异常问题,这个时候我们可以在catch里来获取代码块真正异常的行号,异常原因等。
2022-02-25 16:14:07 6533
原创 netty-websocket-spring-boot-starter基于netty的轻量级的高性能socket服务器
netty-websocket-spring-boot-starter基于netty的轻量级的高性能socket服务器
2022-02-25 15:56:12 1544
原创 springboot 整合 mongodb实现相关业务操作
MongoDB 介绍依赖引入配置操作指定的库:修 改 器MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。依赖引入 <!--mongodb 依赖--> &l
2022-02-25 15:36:08 69
原创 juc包下的并发容器 线程池及任务超时管理
JUC 并发工具包:java.util.concurrent包:定义了并发编程中很常用的实用工具类。1.ConcurrentHashMap对应的非并发容器:HashMap目标:代替Hashtable、synchronizedMap,支持复合操作原理:JDK6中采用一种更加细粒度的加锁机制Segment“分段锁”,JDK8中采用CAS无锁算法。2.CopyOnWriteArrayList对应的非并发容器:ArrayList目标:代替Vector、synchronizedList原理:利用高并
2021-09-25 21:17:18 195
原创 Java多线程
并发编程的优点:利用多核CPU的计算能力,利用好多线程机制可以大大提高系统的并发能力及性能;面对复杂的业务模型,并行程序会比串行程序更适应业务需求,而并发编程更适合这种业务拆分。缺点:内存泄漏,线程安全,死锁等并发编程的三要素:原子性:原子是不可再分割的最小单元,原子性是指一个或多个操作要么全部执行成功,要么全部执行失败。可见性:一个线程对共享变量的修改,另一个线程能看到(synchronized,volatile)有序性:程序的执行顺序按照代码的先后顺序线程安全的问题原因有:线程切换带来
2021-09-25 21:10:47 92
原创 mongodb高级命令 及 增删改查 高级操作 局部更新详解
1、启动服务:/usr/local/mongodb/bin/mongod -f /usr/local/mongodb/mongod.conf2、以默认用户进入系统: ./mongo3、以其它用户身份进入系统: ./mongo --host 127.0.0.1 --port 27017 -u admin -p 123456以其它用户身份进入系统: ./mongo -u admin -p 1234564、列出当前的数据库:show dbs5、进入数据库(或者定义新的数据库名):use admin
2021-09-25 21:03:34 218
原创 使用dockerfile制造镜像 发布springboot项目
发布springboot项目:一、将springboot打好jar包解释:把之前打过的包通通干掉。1.1 、mvn package clean -Dmaven.test.skip=true 1.1 、mvn package clean '-Dmaven.test.skip=true'解释:重新打包。1.2、mvn package -Dmaven.test.skip=true 1.2、mvn package '-Dmaven.test.skip=true' **在windo
2021-09-25 20:58:24 97
原创 一个轻量的java缓存方式ExpiringMap
一个轻量的java缓存方式ExpiringMap,可以设置map过期时间一、简单介绍应用程序中引入缓存能够降低数据库方面的压力,比如常用的Redis缓存中间件。但是在有些小场景下,使用Redis不仅增加了系统的复杂性和不确定性,还有点大材小用。而ExpiringMap适合缓存那些被频繁查询以及数据量不是很大的数据信息。它具有如下功能:可以设置存储元素的过期时间;可设置最大的数据元素存储量;设置过期协议,过期协议分有两种:ExpirationPolicy.CREATED和ExpirationPoli
2021-05-24 16:25:23 673
原创 java并发包中的线程池种类特性
1、new Thread的弊端a. 每次new Thread新建对象性能差。b. 线程缺乏统一管理,可能无限制新建线程,相互之间竞争,及可能占用过多系统资源导致死机或oom。c. 缺乏更多功能,如定时执行、定期执行、线程中断。相比new Thread,Java提供的五种线程池的好处在于:a. 重用存在的线程,减少对象创建、消亡的开销,性能佳。b. 可有效控制最大并发线程数,提高系统资源的使用率,同时避免过多资源竞争,避免堵塞。c. 提供定时执行、定期执行、单线程、并发数控制等功能。2、Jav
2021-05-24 16:23:12 131
原创 为什么要使用kafka消息队列
1.为什么要使用 kafka?为什么要使用消息队列?缓冲和削峰:上游数据时有突发流量,下游可能扛不住,或者下游没有足够多的机器来保证冗余,kafka在中间可以起到一个缓冲的作用,把消息暂存在kafka中,下游服务就可以按照自己的节奏进行慢慢处理。解耦和扩展性:项目开始的时候,并不能确定具体需求。消息队列可以作为一个接口层,解耦重要的业务流程。只需要遵守约定,针对数据编程即可获取扩展能力。冗余:可以采用一对多的方式,一个生产者发布消息,可以被多个订阅topic的服务消费到,供多个毫无关联的业务使用。健
2021-05-21 17:56:13 1952
原创 实战 2000w 数据大表的优化过程,提供三种解决方案
实战 2000w 数据大表的优化过程,提供三种解决方案方案概述方案一:优化现有mysql数据库。优点:不影响现有业务,源程序不需要修改代码。成本最低;缺点:有优化瓶颈,数据量过亿就玩完了。方案二:升级数据库类型,换一种100%兼容mysql的数据库。优点:不影响现有业务,源程序不需要修改代码。缺点:多花钱方案三:一步到位,大数据解决方案,更换newsql/nosql数据库。优点:扩展性强,成本低,没有数据容量瓶颈。缺点:需要修改源程序代码以上三种方案,按顺序使用即可,数据量在亿级别一下的没必
2021-05-21 17:29:26 250
原创 Hutool是一个小而全的Java工具类库
Hutool是一个小而全的Java工具类库Hutool是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。Hutool中的工具方法来自每个用户的精雕细琢,它涵盖了Java开发底层代码中的方方面面,它既是大型项目开发中解决小问题的利器,也是小型项目中的效率担当;Hutool是项目中“util”包友好的替代,它节省了开发人员对项目中公用类和公用工具方法的封装时间,使开发专注于业务,同时可以最大限度的避免
2021-05-21 17:14:40 93
hadoop3.3.0在centos7.7环境编译环境资源,附hadoop编译流程详细说明
2022-04-30
elasticsearch 全文搜索引擎在centOs8.x环境下 安装配置服务搭建.rar
2021-05-20
Swagger 接口文档 接入springboot 的 教程及 logback-spring.xml输出不同级别的日志信息(附件).rar
2021-05-20
hadoop3.3.0在centos7.7系统进行编译,编译过程中报错
2022-04-24
TA创建的收藏夹 TA关注的收藏夹
TA关注的人