首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
AI面试、笔试、校招、雇品
HR免费试用AI面试
最新面试提效必备
登录
/
注册
熬夜不加班的程序员
获赞
124
粉丝
50
关注
2
看过 TA
78
男
湖南大学
2015
Java
IP属地:湖南
Java面试面经扣我666分享
私信
关注
拉黑
举报
举报
确定要拉黑熬夜不加班的程序员吗?
发布(440)
评论
刷题
收藏
熬夜不加班的程序员
关注TA,不错过内容更新
关注
2021-05-13 01:29
已编辑
湖南大学 Java
Go 程序是怎样跑起来的?你知道吗?
一、引入 我们从一个 Hello World 的例子开始: package main import "fmt" func main() { fmt.Println("hello world") } 当我用我那价值 1800 元的 cherry 键盘潇洒地敲完上面的 hello world 代码时,保存在硬盘上的 hello.go 文件就是一个字节序列了,每个字节代表一个字符。 用 vim 打开 hello.go 文件,在命令行模式下,输入命令: :%!xxd 就能在 vim 里以十六进制查看文件内容: 最左边的一列代表地址值,中间一列代表文本对...
0
点赞
评论
收藏
分享
2021-05-13 01:28
湖南大学 Java
这几道Redis面试题都不懂,怎么拿offer?
今天来分享一下Redis几道常见的面试题: 如何解决缓存雪崩? 如何解决缓存穿透? 如何保证缓存与数据库双写时一致的问题? 一、缓存雪崩 1.1什么是缓存雪崩? 回顾一下我们为什么要用缓存(Redis): 现在有个问题,如果我们的缓存挂掉了,这意味着我们的全部请求都跑去数据库了。 在前面学习我们都知道Redis不可能把所有的数据都缓存起来(内存昂贵且有限),所以Redis需要对数据设置过期时间,并采用的是惰性删除+定期删除两种策略对过期键删除。 如果缓存数据设置的过期时间是相同的,并且Redis恰好将这部分数据全部删光了。这就会导致在这段时间内,这些缓存同时失效,全部请求到数据库中。 ...
0
点赞
评论
收藏
分享
2021-05-13 01:28
已编辑
湖南大学 Java
高并发核心技术——幂等性 与 分布式锁!!!
一、高并发核心技术之 - 幂等性 1. 什么是幂等性 幂等性就是指:一个幂等操作任其执行多次所产生的影响均与一次执行的影响相同。 用数学的概念表达是这样的: f(f(x)) = f(x). 就像 nx1 = n 一样, x1 就是一个幂等操作。无论是乘以多少次结果都一样。 2. 常见的幂等性问题 幂等性问题经常会是由网络问题引起的,还有重复操作引起的。 场景一:比如点赞功能,一个用户只能对同一片文章点赞一次,重复点赞提示已经点过赞了。 示例代码: public void like(Article article,User user) { //检查是否点过赞 ...
0
点赞
评论
收藏
分享
2021-05-13 01:27
湖南大学 Java
一篇文章带你深入解析Redis主从复制机制!
我们了解Redis有两种不同的持久化方式,Redis服务器通过持久化,把Redis内存中持久化到硬盘当中,当Redis宕机时,我们重启Redis服务器时,可以由RDB文件或AOF文件恢复内存中的数据。 不过持久化后的数据仍然只在一台机器上,因此当硬件发生故障时,比如主板或CPU坏了,这时候无法重启服务器,有什么办法来保证数据的安全性?或者可以快速恢复数据呢?,想做到这一点,我们需要再了解Redis另外一种机制:主从复制。 一、什么是主从复制? Redis的主从复制机制是指可以让从服务器(slave)能精确复制主服务器(master)的数据,如下图所示: 上面的图表示的是一台master...
0
点赞
评论
收藏
分享
2021-05-13 01:27
湖南大学 Java
高并发和海量数据下的 9 个 Redis 经典案例剖析!
01 业务背景 这次分享主要是围绕 Redis,分享在平时的日常业务开发中遇到的 9 个经典案例,希望通过此次分享可以帮助大家更好的将 Redis 的高级特性应用到日常的业务开发中来。 首先介绍一下业务背景:总用户量大概是 5亿左右,月活 5kw,日活近 2kw 。服务端有 1000 多个 Redis 实例,100+ 集群,每个实例的内存控制在 20g 以下。 02 KV 缓存 第一个是最基础也是最常用的就是KV功能,我们可以用 Redis 来缓存用户信息、会话信息、商品信息等等。 下面这段代码就是通用的缓存读取逻辑: 这个过期时间非常重要,它通常会和用户的单次会话长度成正比,保证用户在...
0
点赞
评论
收藏
分享
2021-05-13 01:27
湖南大学 Java
大厂面试,29个必须掌握的微服务面试问题(含答案解析)!
01 什么是Spring Cloud? 在微服务中,SpringCloud是一个提供与外部系统集成的系统。它是一个敏捷的框架,可以短平快构建应用程序。与有限数量的数据处理相关联,它在微服务体系结构中起着非常重要的作用。以下为 Spring Cloud 的核心特性: (1)版本化/分布式配置。 (2)服务注册和发现。 (3)服务和服务之间的调用。 (4)路由。 (5)断路器和负载平衡。 (6)分布式消息传递。 02 什么是Spring Boot? Spring boot是微服务面试问题的主要话题。 随着新功能的加入,Spring变得越来越复杂。无论何时启动新项目,都必须添加新的构建路径或Mave...
Java进阶之路
0
点赞
评论
收藏
分享
2021-05-13 01:26
湖南大学 Java
高并发核心技术—— 订单与库存(推荐收藏)
一、 问题 一件商品只有100个库存,现在有1000或者更多的用户来购买,每个用户计划同时购买1个到几个不等商品。如何保证库存在高并发的场景下是安全的? (1)不多发 (2)不少发 二、 下单的步骤 (1)下单 (2)下单同时预占库存 (3)支付 (4)支付成功真正减扣库存 (5)取消订单 (6)回退预占库存 三、 什么时候进行预占库存? (1)方案一:加入购物车的时候去预占库存 (2)方案二:下单的时候去预占库存 (3)方案三:支付的时候去预占库存 四、 分析 (1)方案一:加入购物车并不代表用户一定会购买,如果这个时候开始预占库存,会导致想购买的无法加入购物车。而不想购买的人一直占用库存...
0
点赞
评论
收藏
分享
2021-05-13 01:26
已编辑
湖南大学 Java
你确定你会写 Dockerfile?
本文使用一个基于 Maven 的 Java 项目作为示例,然后不断改进 Dockerfile 的写法,直到最后写出一个最优雅的 Dockerfile。中间的所有步骤都是为了说明某一方面的最佳实践。 一、减少构建时间 一个开发周期包括构建 Docker 镜像,更改代码,然后重新构建 Docker 镜像。在构建镜像的过程中,如果能够利用缓存,可以减少不必要的重复构建步骤。 1、构建顺序影响缓存的利用率 镜像的构建顺序很重要,当你向 Dockerfile 中添加文件,或者修改其中的某一行时,那一部分的缓存就会失效,该缓存的后续步骤都会中断,需要重新构建。所以优化缓存的最佳方法是把...
0
点赞
评论
收藏
分享
2021-05-13 01:26
已编辑
湖南大学 Java
Spring Boot 打包成的可执行 jar ,为什么不能被其他项目依赖?
前两天有小伙伴问到这样一个问题: “小哥哥,为什么我的 Spring Boot 项目打包成的 jar ,被其他项目依赖之后,总是报找不到类的错误?” 大伙有这样的疑问,就是因为还没搞清楚可执行 jar 和普通 jar 到底有什么区别?今天就和大家来聊一聊这个问题。 01 多了一个插件 Spring Boot 中默认打包成的 jar 叫做 可执行 jar,这种 jar 不同于普通的 jar,普通的 jar 不可以通过 java -jar xxx.jar 命令执行,普通的 jar 主要是被其他应用依赖,Spring Boot 打成的 jar 可以执行,但是不可以被其他的应用所依赖,即使强制依赖,...
0
点赞
评论
收藏
分享
2021-05-13 01:25
已编辑
湖南大学 Java
Java线程池「异常处理」正确姿势:有病就得治!
一、问题分析 我们来看一下java中的线程池是如何运行我们提交的任务的,详细流程比较复杂,这里我们不关注,我们只关注任务执行的部分。java中的线程池用的是ThreadPoolExecutor,真正执行代码的部分是runWorker方法:final void runWorker(Worker w) 可以看到,程序会捕获包括Error在内的所有异常,并且在程序最后,将出现过的异常和当前任务传递给afterExecute方法。 而ThreadPoolExecutor中的afterExecute方法是没有任何实现的。 protected void afterExecute(Runnable r...
0
点赞
评论
收藏
分享
2021-05-13 01:25
已编辑
湖南大学 Java
如何设计一个全局异常处理器?
01 前言 最近稍微闲了一点于是把这个半年都没更新的开源项目cicada重新捡了起来。 这项目是干啥的?先来看看官方介绍吧(其实就我自己写的) cicada: 基于 Netty4 实现的快速、轻量级 WEB 框架;没有过多的依赖,核心 jar 包仅 30KB。 02 效果 大家平时最常用的 MVC 框架当属 SpringMVC 了,而在搭建脚手架的时候相信全局异常处理是必不可少的。 (1)Spring 用法 通常我们的做法如下: 传统 Spring 版本: 实现一个 Spring 自带的接口,重写其中的方法,最后的异常处理便在此处。 将这个类配置在 Spring 的 xml ,...
0
点赞
评论
收藏
分享
2021-05-13 01:25
已编辑
湖南大学 Java
实战+ActiveMQ整合实现消息队列(生产者+消费者)!
一、ActiveMQ 1.1 ActiveMQ ActiveMQ是Apache所提供的一个开源的消息系统,完全采用Java来实现,因此,它能很好地支持J2EE提出的JMS(Java Message Service,即Java消息服务)规范。JMS是一组Java应用程序接口,它提供消息的创建、发送、读取等一系列服务。JMS提供了一组公共应用程序接口和响应的语法,类似于Java数据库的统一访问接口JDBC,它是一种与厂商无关的API,使得Java程序能够与不同厂商的消息组件很好地进行通信。 1.2 Java Message Service(JMS) JMS支持两种消息发送和接收模型。...
0
点赞
评论
收藏
分享
2021-05-13 01:24
已编辑
湖南大学 Java
Redis如何保证接口的幂等性?
有个小伙伴在最近的一次业务升级中,遇到这样一个问题,我们设计了新的账户体系,需要在用户将应用升级之后将原来账户的数据手动的同步过来,就是需要用户自己去触发同步按钮进行同步,因为有些数据是用户存在自己本地的。那么在这个过程中就存在一个问题,要是因为网络的问题,用户重复点击了这个按钮怎么办?就算我们在客户端做了一些处理,在同步的过程中,不能再次点击,但是经过我最近的爬虫实践,要是别人抓到了我们的接口那么还是不安全的。 基于这样的业务场景,我就使用Redis加锁的方式,限制了用户在请求的时候,不能发起二次请求。 我们在进入请求之后首选尝试获取锁对象,那么这个锁对象的键其实就是用户的id,如果获...
0
点赞
评论
收藏
分享
2021-05-13 01:24
湖南大学 Java
常见的错误 SQL 用法,你中招了吗?
1、LIMIT 语句 分页查询是最常用的场景之一,但也通常也是最容易出问题的地方。比如对于下面简单的语句,一般 DBA 想到的办法是在 type, name, create_time 字段上加组合索引。这样条件排序都能有效的利用到索引,性能迅速提升。 好吧,可能90%以上的 DBA 解决该问题就到此为止。但当 LIMIT 子句变成 “LIMIT 1000000,10” 时,程序员仍然会抱怨:我只取10条记录为什么还是慢? 要知道数据库也并不知道第1000000条记录从什么地方开始,即使有索引也需要从头计算一次。出现这种性能问题,多数情形下是程序员偷懒了。 在前端数据浏览翻页,或者大数据分批导...
0
点赞
评论
收藏
分享
2021-05-13 01:23
已编辑
湖南大学 Java
从零开始的高并发--- Zookeeper实现分布式锁
01 前言 我们现在拥有这么一个集群,集群里面有个缓存服务,集群中每个程序都会用到这个缓存,如果此时缓存中有一项缓存过期了,在大并发环境下,同一时刻中许许多多的服务都过来访问缓存,获取缓存中的数据,发现缓存过期,就要再去数据库取,然后更新到缓存服务中去。但是其实我们仅仅只需要一个请求过来数据库去更新缓存即可,然后这个场景,我们该怎么去做? 我们参考多线程的场景下会使用到锁的这个方法,放到现在的并发场景下,我们也是需要通过一种锁来实现。 02 使用Zookeeper来进行开发 1.锁的特点与原生zookeeper (1) 普通锁具备什么特点? ①排他(互斥)性:只有一个线程能获取到 ...
0
点赞
评论
收藏
分享
1
11
12
13
14
15
30
创作者周榜
更多
关注他的用户也关注了:
牛客网
牛客网在线编程
牛客网题解
牛客企业服务