- 博客(109)
- 收藏
- 关注
原创 web工程师必备知识(所有文章总目录个人总结持续更新)
一、java那些事String s1 = "abc"; String s2 = "abc";创建了几个对象?以及字符串常量池设计模式(单例模式)线程的6种状态(NEW,RUNNABLE,BLOCKED,WAITING,TINED_WATING,TEMINATE)常见的数据结构(栈、队列、数组、链表和红黑树)java中静态方法为什么不可以调用非静态方法将一个数组中所有的奇数...
2019-01-11 12:52:13
515
原创 高频面试题:说一下线程池吧?(线程池原理,核心参数,创建方式,应用场景都要说到才能让面试官心服口服)
本文全面解析Java线程池面试要点,重点介绍了线程池的创建方式、核心参数及执行流程。推荐使用ThreadPoolExecutor构造函数创建线程池,详细讲解了七大核心参数的作用及配置建议,包括核心线程数、任务队列和拒绝策略等。文章还提供了线程池底层工作原理图解、监控方法和优雅关闭方案,并给出生产环境最佳实践:使用有界队列、合理设置线程数、自定义线程工厂等。最后强调要根据业务场景压测调优,建议通过配置中心动态管理线程池配置。全文内容详实,适合Java开发者面试准备和实际应用参考。
2025-08-26 23:14:01
861
原创 场景题:(下)redis挂了怎么办?(这次必须挂了,然后说一下解决方案)上一篇是如何保证redis不挂,这一篇是真的挂了如何处理
Redis高可用方案:从故障处理到架构设计 摘要:Redis作为关键组件,宕机会直接影响系统可用性。本文系统介绍了Redis故障的应急处理方案:检查进程状态、分析日志、降级策略。同时深入剖析了常见故障原因(内存不足、持久化阻塞、大Key等)及排查方法。重点提出了高可用架构设计建议,包括部署Redis集群、合理配置持久化、资源限制和监控告警。针对Java应用,提供了异常捕获、熔断降级、多级缓存等容灾设计方案。最后总结了Redis故障管理的全流程原则:事前预防、事中应急、事后恢复,强调监控和演练的重要性。
2025-08-25 10:25:01
1546
原创 场景题:Redis是单线程的,为啥那么快呢?(这个问题必须要 吊打一下面试官,记不住背下来!)
Redis以单线程实现高性能的关键在于:1)纯内存操作,2)高效数据结构,3)单线程避免锁竞争,4)I/O多路复用技术。其核心命令处理保持单线程,仅网络I/O使用多线程提升吞吐。Redis6.0后引入多线程仅处理网络读写,命令执行仍单线程串行。通过精巧设计,Redis在简单可控的单线程模型下实现极致性能,为高并发系统设计提供了重要启示。
2025-08-24 16:11:40
633
原创 场景题:内存溢出 和 内存泄漏 有啥区别?
内存溢出是指程序在申请内存时,没有足够的内存空间供其使用,JVM 无法再分配所需内存,从而抛出错误。内存泄漏是指程序中已经不再使用的对象,由于某些原因无法被垃圾回收器(GC)回收,导致这些对象一直占用内存,随着时间推移,内存占用越来越高,最终可能引发内存溢出。🔍关键点:对象“无用但可达” → GC 无法回收。术语关键理解开发建议内存泄漏无用对象未被回收→ 内存被“悄悄吃掉”写代码时注意引用生命周期,避免长期持有内存溢出内存不够用→ JVM崩溃合理设置堆大小,监控内存使用,及时排查泄漏💡。
2025-08-22 18:40:22
1234
原创 406 Not Acceptable问题解决
最近在学习全栈的时候,写好的后端接口,用apifox调用,返回406,感觉很奇怪,下面是解决思路和方案思路:先调查406是什么原因?说人话:就是客户端请求的数据格式和服务端响应的数据格式不一致。仅此而已。
2025-08-22 10:24:20
1269
原创 记录一下公司真实的RabbitMQ 消费者消息挤压问题
摘要:开发团队在发版后遭遇线上OOM故障,新功能线程未关闭导致内存溢出。应急处理快速回滚版本恢复业务,通过日志定位到异常代码位置。原因在于多线程未妥善处理异常情况,解决方案是在finally块中确保线程关闭。事故警示:要敬畏生产环境,充分自测、代码审查,避免小问题引发大故障。新手开发者更应谨慎,必要时借助AI检查代码。回复888可领取最新面试题。(149字)
2025-07-31 16:13:18
448
原创 rabbitMq创建队列和交换机不成功的问题(解决方案和排查问题思路)
1.Springboot+Rabbitmq项目启动后不能自动创建交换机和队列2.消费者和生产者是在2个不同微服务中3.先启动生产者的模块, 启动成功, 但是交换机和队列没有创建, 然后启动消费者一直启动失败4.生产者的微服务配置了交换机队列和绑定key的声明, 消费者直接监听了队列,没有填写配置信息开发阶段为啥没发现这个问题:1. 本地idea链接开发的Rabbitmq服务器, 然后运行启动和debug启动, Rabbitmq可以创建交换机和队列;
2025-02-21 09:27:46
1446
原创 深入解析 TCP、UDP、HTTP 与 HTTPS 网络协议(后面附面试话术)
面试官: 给我说一下tcp和udp的区别? 以及http和https的区别吧?
2025-02-15 11:47:24
1360
原创 通过idea创建一个springboot 并执行案例
使用阿里云的地址, 可以选择低版本的spring boot版本。1服务url选择阿里云,国内地址速度会更快。然后选择自己对应的maven安装位置和相关配置。artifact的名称通常是项目名称。出现这个就是项目创建成功了。
2025-01-07 16:34:12
491
原创 Error creating bean with name ‘org.springframework.security.filterChainProxy‘ 异常处理
严重: Exception sending context initialized event to listener instance of class org.springframework.web.context.ContextLoaderListener。九月 26, 2024 5:55:40 下午 org.apache.catalina.core.StandardContext listenerStart。这个标签不能简写,要写完整;
2024-09-26 18:09:24
844
原创 配置tomcat报错Warning the selected directory is not a valid tomcat home汇总网络其他方法,和自己解决方案
网上找了半天,其他方案,比如修改文件权限(我是windos系统啊,本来就是所有权限啊)1.进入tomcat官网,https://tomcat.apache.org/2.选择对应的版本,然后下载,我又试了试,可以了,就是包的问题。3.去官网下载最新的tomcat包(我用这个解决了)2.优先选择tomcat home路径。1.修改tomcat权限。如何下载tomcat。
2024-09-14 10:10:58
1172
原创 3.spring源码:refresh()第一个方法prepareRefresh()
prepareRefresh()方法作用?1.主要目的,是为了容器刷新前,做一些准备工作,具体准备工作如下.2.设置容器启动时间(每次项目启动成功后,日志会打印启动时间,就是这里开始计时的)3.设置活跃状态true(表示容器正在工作,是活跃状态)4.设置关闭状态为false5.获取Environment对象,并加载当前系统的属性值到Environment对象中6.准备监听器和事件的集合对象,默认是空的。
2024-05-31 17:11:54
320
原创 2.spring源码:之了解setConfigLocations方法
setConfigLocations(configLocations)方法作用?1.解析xml文件的名字,如果名称中存在占位符号,需要进行替换工作2.设置配置信息,标准环境创建等。
2024-05-30 18:01:04
285
原创 0.spring源码:概述图以及整体学习路线目录(后续更新)
加载文件->读取文件->bean定义信息->前置处理器(扩展增强)->实例化->初始化->设置属性->设置aware接口->后置处理器:before->后置处理器:after->完整对象。
2024-05-30 14:37:09
219
原创 spring源码环境搭建问题解决
安装后需要配置国内下载镜像(否则下载超级慢,我下载了一个上午没下载好,修改国内镜像后,几分钟好了)解决build.gradle->搜configurations.all 添加。
2024-03-13 16:30:26
283
原创 java项目启动脚本shell脚本
6. 为了防止java程序被启动多次,这里增加反复检查进程,反复杀死的处理(递归调用stop)。#5. 如果步骤4的结果能够确认程序的pid,则打印[OK],否则打印[Failed]#2. 如果程序已经启动($psid不等于0),则开始执行停止,否则,提示程序未运行。#5. 如果步骤4的结果$?#2. 如果程序已经启动($psid不等于0),则提示正在运行并表示出pid。#2. 如果程序已经启动($psid不等于0),则提示程序已启动。#1. 首先调用checkpid函数,刷新$psid全局变量。
2023-12-26 11:32:53
246
原创 nexus 私服 拉不了 jar 包,报 Not authorized
如果你排查了所有情况,并且确定账号密码都没问题,路径也正确,并且setting.xml都配置正确了。可以看下是不是这个原因。
2023-09-21 16:53:32
490
原创 工厂方法模式【Factory Method Pattern】
实例化对象,用工厂方法代替new操作(重点)工厂模式包括工厂方法模式和抽象工厂模式抽象工厂模式是工厂方法模式的扩展。
2023-08-16 13:51:36
359
原创 代理模式【Proxy Pattern】
什么是代理模式呢?我很忙,忙的没空理你,那你要找我呢就先找我的代理人吧,那代理人总要知道被代理人能做哪些事情不能做哪些事情吧,那就是两个人具备同一个接口,代理人虽然不能干活,但是被代理的人能干活呀。
2023-08-14 15:34:51
1058
原创 策略模式【Strategy Pattern】
里,俗称就是锦囊妙计嘛,那赵云就是一个干活的人,从锦囊中取出妙计,执行,然后获胜,用 JAVA 程序。嘿,还别说,真是解决了大问题,搞到最后是周瑜陪了夫人又折兵呀,那咱们先看看这个场景是什么样子。刘备要到江东娶老婆了,走之前诸葛亮给赵云(伴郎)三个锦囊妙计,说是按天机拆开解决棘手问题,妙计是小亮同志给的,妙计是放置在锦囊。
2023-08-09 17:52:32
900
原创 Mysql on duplicate key update用法,注意三点就能上手
Mysql on duplicate key update用法,注意三点就能上手
2022-08-23 16:00:54
619
原创 根据变量名例用反射获取实体对应的值
/** * 根据变量名字,来获取实体对应字段的值 * @param element * @param o * @return */ public static Map<String, Object> getMapByEntityElement(String[] element, Object o){ try { Class aClass = o.getClass(); ..
2021-10-29 17:48:54
343
原创 idea快速修改git地址
方法一:直接修改文件找到项目所在目录文件->.git->config->把如图对应的地址改成新地址,然后重启idea方法二:用idea界面修改
2021-06-12 09:53:12
1566
1
原创 nginx
1 整体结构2常用配置#user nobody;#工作进程数(一般配置一个就足够了)worker_processes 1;events { #最大链接数 worker_connections 1024;}http { #资源类型 include mime.types; default_type application/octet-stream; #用于开启文件高效传输模式 sendfile on; .
2021-02-03 14:46:42
167
原创 微信支付对接记录,和遇到的坑,总结!并附带微信支付工具类,只需要替换几个参数就可以直接使用!
第一个坑,签名获取,微信是两次签名加密,要按照微信官方文档一步步查看参数是否正确.第二个坑,md5加密,我用到网上的md5加密方法,当小程序调起微信支付的时候一直报签名失败,最后发现是签名的md5加密的问题.第三个坑,两次签名加密如果用到时间戳和随机字符串,一定要保持一致,用同一个,否则也会报出签名异常.第四个坑,微信支付不能重复提交不一样的订单,比如:用户待付款,商家修改价格,然后提交就会出现订单重复问题.解决方案:就是业务订单号和支付订单号分开处理,每次支付都生成支付单号就也可以解决..
2020-12-26 17:06:29
633
原创 如果有人问你什么是多线程,你这样说,面试管肯定对你另眼相看!
什么是线程安全?我相信不少做了几年开发的人,面试都会遇到这个问题.不理解的人一般会说,线程安全就是指,线程的安全啊,这回答了等于没说!线程安全其实指的是内存的安全,为什么这么说呢?这还是和操作系统有关系!操作系统一般都是多任务的,就是多个进程同时进行(准确来说是cpu切换的速度太快了),所以每个进程之间访问的数据要保证安全,所以每个进程都只能访问自己的内存,不能访问别的进程,这个操作系统已经处理过了.但是每个进程除了自己私有的一个内存空间外,还有一个公共的区域,"堆"内存;进程中的所有线程都
2020-07-29 14:42:37
385
原创 记录一下郑州互联网公司的一次奇葩面试经历
关注公众号:码农脱贫(回复0728可以获取到大厂面试题)2020.6.30面试总结郑州**公司一面:一个人事面的,不懂技术,爱问一些乱七八糟的东西,就是为了判断你是否工作经验造假(培训班的估计不好进).感觉这个公司很奇葩,小公司,公司主要就是承接小活,没有自己的项目,适合作为跳板公司.很锻炼自己的能力.人事:你好,先自我介绍一下吧我:*******人事:你第一份工作是在南方,你为啥要去那么远啊?我:一个表哥在那里做主管,毕竟让毕业,内部推荐好进去,没费劲就工作了,拿的实习薪.
2020-07-28 13:56:11
639
原创 RedisTemplate的五种基本用法(nosql数据库)
/** * StringRedisTemplate继承了RedisTemplate但两者的数据并不互通 * 一共五种数据结构 * 1.redisTemplate.opsForValue() 字符串 * 2.redisTemplate.opsForHash() hash * 3.redisTemplate.opsForList() list * 4.redisTemplate.opsForSet() 无序set * 5.redisTemplate.opsForZSet() ..
2020-07-20 10:14:56
537
原创 idea如何设置忽略文件不上传
如果没有找到.gitignore的文件设置就点击右边的绿色加号添加一个,并把下面的复制上去即可;*.classpath;*.hprof;*.idea;*.iml;*.myumldata;*.project;*.pyc;*.pyo;*.rbc;*.settings;*.yarb;*~;.DS_Store;.git;.hg;.myeclipse;.mymetadata;.svn;...
2020-04-11 21:30:31
1800
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅