
Java
文章平均质量分 93
一名搬砖的小码农
用生命研发技术
代码是二进制世界的交流方式,极致的代码是我们的荣耀。
展开
-
高性能分布式缓存Redis-第一篇章
高性能分布式缓存Redis第一篇章1. 缓存发展史&缓存分类1.1 大型网站中缓存的使用1.2 常见缓存的分类1.3 分布式缓存选型方案对比2. Redis概述&安装配置2.1 概述2.3 安装&配置3. 数据类型选择&应用场景3.1、Redis的Key的设计规范string字符串类型hash类型(散列表)list列表类型set集合类型sortedset有序集合类型bitmap位图 类型geo地理位置类型概述环境要求redis GEO常用命令第一篇章缓存发展史&原创 2023-01-09 08:59:30 · 1049 阅读 · 4 评论 -
MySQL数据库调优
1.2、MySQL Server层 架构可以分为 Server层 和 Engine层两部分:Mysql作为服务器,一个客户端的Sql连接过来就需要分配一个线程进行处理,这个线程会专门负责监听请求并读取数据。这部分的线程和连接管理都是有一个连接器,专门负责跟客户端建立连接、权限认证、维持和管理连接。思考:答:连接器负责跟客户端建立连接、获取权限、维持和管理连接。连接命令一般是这么写的:在完成 经典TCP 握手后,连接器会基于用户名和密码来验证身份。验证不通过:"Access denied for us原创 2022-12-28 09:00:00 · 2591 阅读 · 0 评论 -
高性能分布式缓存Redis-第三篇章
布隆过滤器(英语:Bloom Filter)是 1970 年由Burton Howard Bloom提出的,是一种空间效率高的概率型数据结构。本质上其实就是一个很长的二进制向量和一系列随机映射函数。专门用来检测集合中是否存在特定的元素。原创 2023-01-09 09:00:49 · 514 阅读 · 0 评论 -
高性能分布式缓存Redis-第二篇章
高性能分布式缓存Redis-第二篇章1. 持久化原理1.1 持久化流程(落盘)1.2 RDB详解1.2.1 概念1.2.2 触发&原理1.2.3 实现1.2.4 RDB总结1.3 AOF详解1.3.1 概念1.3.2 AOF 持久化的实现1.3.2 开启1.3.4 命令追加1.3.5 文件写入和同步(触发)1.3.5 文件写入和同步(触发)1.3.6 AOF 数据恢复1.3.7 AOF "重写"1.3.8 AOF重写原理1.4 持久化优先级1.5 性能与实践2. 安全策略持久化原理(落盘、RDB原创 2023-01-09 09:00:34 · 1458 阅读 · 0 评论 -
记录一次生产环境清理千万级redis数据
生产环境每天通过定时任务自动清理redis数据,由于使用的是其它项目的redis集群,其它项目把生产环境上的keys *命令禁用了,导致我们清理redis数据失败。解释:不同的字符需要用换行隔开简单直观,推荐使用。2.2、文件格式转码2.3、执行批量导入2.3.1、脚本生成模拟数据保存之后给脚本执行权限2.3.2、代码模拟数据2.3.3、执行导入通过 --pipe 来启动集群模式的,解决报错细致型通过key 的哈希值 区分槽点,通过节点拿到槽点,这里不做演示。三、批量删除原创 2022-07-11 09:00:00 · 1592 阅读 · 0 评论 -
JDK源码环境搭建
JDK源码环境搭建新建Java项目导入JDK源码替换JDK关联测试代码解决找不到sun.awt.UNIXToolkit和sun.font.FontConfigManager新建Java项目新建包com.java521.source:用于存放源码com.java521.test:用于存放测试代码导入JDK源码JDK源码就在JAVA_HOME/src.zip中,解压即可用。替换JDK关联移除Sourcepath中关联的src.zip将项目中的JDK源码关联到Sourcepath原创 2022-05-28 16:06:36 · 962 阅读 · 5 评论 -
Redis经典面试题
Redis经典面试题一、redis是单线程架构还是多线程架构二、单线程的redis为什么这么快三、Redis6.x 之后为何引入了多线程?四、Redis6.x多线程的实现机制?五、 Redis6.x默认是否开启了多线程?六、缓存穿透七、缓存雪崩八、缓存击穿一、redis是单线程架构还是多线程架构redis整体来说并非只有一个线程(多线程),只是redis在处理网络请求,k/v读写操作这个过程是用一个线程来处理的,它的其他功能:持久化、异步删除、集群同步都是采用额外的线程来完成的。二、单线程的redis原创 2022-05-28 15:45:55 · 10961 阅读 · 0 评论 -
MongoDB 5.0.5
MongoDB 一、MongoDB 简介二、MongoDB安装2.1、Windows 平台安装 MongoDB2.2、Linux平台安装MongoDB三、MongoDB 概念解析四、MongoDB命令插入文档MongoDB 更新文档update() 方法save() 方法一、MongoDB 简介MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功原创 2022-01-28 08:53:06 · 836 阅读 · 0 评论 -
Apache POI导入导出Excel
Apache POI原生导出工具类public class ExportExcelUtil { public static void createHeadTittle(XSSFWorkbook wb, XSSFSheet sheet, String headString, int col) { // 创建Excel工作表的行 XSSFRow row = sheet.createRow(0); // 创建Excel工作表指定行的单元格原创 2021-12-24 09:46:07 · 997 阅读 · 0 评论 -
SpringBoot
SpringBoot一、SpringBoot 概述1.1、Spring 缺点1.2、SpringBoot 功能二、SpringBoot 配置2.1、yaml基本语法2.2、yaml语法规则2.2.1、字面值表示方式2.2.2、数组表示方式2.2.3、yaml数据读取2.3、多环境开发2.3.1、maven配置方式2.3.2、springboot配置方式2.3.2.1、yml方式2.3.2.2、properties方式2.3.2.3、多环境开发独立配置文件2.3.3、Maven与SpringBoot多环境兼容原创 2021-12-02 14:28:13 · 488 阅读 · 0 评论 -
SpringCloud
SpringCloud系统架构演变1.1. 集中式架构1.2. 垂直拆分1.3. 分布式服务1.4. 面向服务架构(SOA)1.5.分布式架构1.6. 微服务架构2. 服务调用方式原创 2021-12-01 14:27:59 · 3939 阅读 · 1 评论 -
MySQL数据库
MySQL数据库一、SQL 结构化查询语⾔1.1、SQL概述1.1.1、SQL发展1.1.2、SQL分类1.2、SQL基本语法1.3、DDL 数据定义语⾔1.3.1、DDL-数据库操作1.3.2、DDL-数据表操作1.4、MySQL数据类型1.4.1、数值类型1.4.2、字符串类型1.4.3、日期类型1.5、字段约束1.5.1、约束介绍1.5.2、非空约束1.5.3、唯⼀约束1.5.4、主键约束1.5.5、主键⾃动增⻓1.5.6、联合主键1.5.7、外键约束1.6、DML 数据操纵语⾔1.6.1、插⼊数据1原创 2021-11-12 14:19:01 · 1710 阅读 · 0 评论 -
Spring5
Spring5Spring概念Spring是一个JavaEE开源的轻量级别的框架,可以解决我们企业开发中遇到的难题,能够让编码变的更加简单,核心组件 IOC容器和Aop面向切面编程。IOC 控制反转:把整个对象创建的过程,统一交给我们SpringIOC容器来实现管理,底层使用反射+工厂模式实现。Aop面向切面编程:对我们功能(方法)前后实现增强,比如打印日志、事务原理、权限管理,底层是基于动态代理模式实现的。减少到我们的代码的冗余性问题。Spring优势方法的解耦,简化开发;Aop技原创 2021-10-25 09:06:47 · 1202 阅读 · 0 评论 -
Mybatis3
Mybatis3一、Mybatis简介1.1、原始jdbc操作的分析1.2、什么是Mybatis二、Mybatis的快速入门2.1、环境搭建一、Mybatis简介1.1、原始jdbc操作的分析原始jdbc开发存在的问题如下数据库连接创建、释放频繁造成系统资源浪费从而影响系统性能sql 语句在代码中硬编码,造成代码不易维护,实际应用 sql 变化的可能较大,sql 变动需要改变java代码。查询操作时,需要手动将结果集中的数据手动封装到实体中。插入操作时,需要手动将实体的数据设置到sql语句的占原创 2021-10-25 09:04:02 · 1181 阅读 · 0 评论 -
消息中间件RabbitMQ
消息中间件RabbitMQ1. 消息队列1.1. MQ 的相关概念1.1.1. 什么是 MQ1.1.2. 为什么要用 MQ1.1.3. MQ 的分类1.1.4. MQ 的选择1.2. RabbitMQ1.2.1. RabbitMQ 的概念1.2.2. 四大核心概念1.2.3. RabbitMQ 核心部分1.2.4. 各个名词介绍1.2.5. 安装1. 消息队列1.1. MQ 的相关概念1.1.1. 什么是 MQMQ(message queue),从字面意思上看,本质是个队列,FIFO 先入先出,只不原创 2021-11-25 16:04:11 · 5677 阅读 · 2 评论 -
IDEA2021.2安装与配置(持续更新)
IDEA2021.2安装与配置一、下载二、安装三、配置配置全局生效首次启动激活字体,字体大小配色方案注解生效自动导包移包自动补全快捷键格式化代码代码忽略大小写git配置maven配置四、插件Vue.jsTranslationlombok一、下载下载地址:https://www.jetbrains.com/zh-cn/idea/download/other.html选择相应的版本下载,这里以 2021.2 版本为例。二、安装更改安装位置创建桌面快捷方式三、配置配置全局生效不要打开项目,直原创 2021-08-03 16:45:48 · 220678 阅读 · 147 评论 -
Java调用阿里云对象存储OSS
Java调用阿里云对象存储OSS一、准备二、新建Bucket三、AccessKey 管理四、开发初始化新建OSSClient一、准备没有注册阿里云账号的去注册账号并实名没有开通对象存储OSS,开通对象存储OSS阿里云官网:https://www.aliyun.com/OSS控制台:https://oss.console.aliyun.com/新人福利会场:https://www.aliyun.com/1111/new?userCode=r85k1yor二、新建Bucket三、Access原创 2021-07-22 10:10:54 · 4169 阅读 · 4 评论 -
List实现原理
ArrayList底层实现一、ArrayList 父类和实现接口二、add方法实现三、使用反射测试初始化数组四、ArrayList 扩容机制五、使用反射测试扩容一、ArrayList 父类和实现接口二、add方法实现编写java代码List<String> list = new ArrayList<>();list.add("java");点击add(),进入查看进入实现类ArrayList的add()private int size; //ensureCa原创 2021-07-16 16:42:28 · 1005 阅读 · 0 评论 -
Java调用阿里云短信服务
Java 调用阿里云短信服务Java 调用阿里云短信服务测试Java 调用阿里云短信服务请记住申请完子用户AccessKey后不要立即关闭窗口,先将申请的AccessKeySecret进行保存,因为关闭后,再也没办法进行查看AccessKeySecret,只能查看到AccessKeyId。测试<dependency> <groupId>com.aliyun</groupId> <artifactId>dysmsapi20170525&l原创 2021-07-16 16:41:27 · 2362 阅读 · 0 评论 -
Java反射自定义注解底层设计原理
Java反射自定义注解底层设计原理一、反射机制1.1、什么是反射1.2、反射机制的优缺点1.3、反射的用途1.4、反射技术的使用二、注解2.1、什么是注解2.2、常用注解2.3、元注解2.4、常用注解2.5、注解的Target2.6、获取注解信息2.7、注解如何生效2.8、注解实现案例一、反射机制1.1、什么是反射通过反射,我们可以在运行时获得程序或程序集中每一个类型的成员和成员的信息。程序中一般的对象的类型都是在编译期就确定下来的,而 Java 反射机制可以动态地创建对象并调用其属性,这样的对象的类原创 2021-07-08 14:10:16 · 880 阅读 · 0 评论 -
Java8新特性 Lambda、Stream、Optional实现原理
Java8新特性lambda&stream&optional实现原理接口中默认方法修饰为普通方法Lambda表达式什么是Lambda表达式接口中默认方法修饰为普通方法在jdk8之前,interface之中可以定义变量和方法,变量必须是public、static、final的,方法必须是public、abstract的,由于这些修饰符都是默认的。接口定义方法:public 抽象方法 需要子类实现接口定义变量:public、static、final在JDK 1.8开始 支持使用stat原创 2021-07-06 09:40:00 · 1472 阅读 · 0 评论 -
微信公众号开发
微信公众号开发一、准备1.1、内网穿透NATAPP1.2、微信公众号测试号1.2.1、微信扫码登录1.2.2、接口配置信息1.2.3、JS接口安全域名1.2.4、网页账号二、开发2.1、配置2.1.1、添加依赖2.1.2、yml配置2.2、前端配置2.3、Java开发三、微信自定义菜单四、测试一、准备1.1、内网穿透NATAPP下载链接: https://natapp.cn/购买隧道配置隧道根据系统版本下载对应的客户端解压,在同级目录下创建config.ini文件,并添加相应的配置au原创 2021-05-29 00:22:22 · 1263 阅读 · 4 评论 -
MySQL性能优化
技术专题课-MySQL性能优化一、MySQL性能优化1.1、优化介绍1.1.1、mysql优化的结果1.1.2、mysql优化的风险1.1.3、数据库优化纬度1.2、MySQL介绍二、sql语句优化2.1、 MySQL查询流程2.2、sql语句优化(重点)2.3、索引优化(重点)2.3.1、索引的类型2.4、索引的存储结构2.4.1 BTree索引2.4.2、哈希索引2.4.3、Full-text全文索引(鸡肋)三、 存储优化3.1、InnoDB存储引擎3.2、MyISAM存储引擎四、数据库结构优化(重点)原创 2021-03-24 11:51:26 · 677 阅读 · 0 评论 -
Redis总结
技术专题课-Redis总结一、使用场景二、redis数据类型三、redis持久化方案3.1、RDB模式(默认)3.2、AOF模式四、缓存穿透怎么办4.1、问题描述4.2、问题解决方案一、使用场景一般用作分布式缓存使用, 作为数据库和项目之间的桥梁, redis主要用内存存储数据, 速度非常快, 所以经常大量查询的数据可以放入redis中, 这样可以替关系型数据库抗高并发读取操作.二、redis数据类型redis中支持五种数据类型:redis里面的数据都是键值对形式也就是key, 和value形式,原创 2021-04-07 10:45:50 · 1884 阅读 · 0 评论 -
Java面试题-2021年3月
Java面试题2021年3月总结数据库设计三大范式索引的类型日期可加索引吗什么时候需要加索引 什么时候不需要Linux操作文件和文件夹命令linux更改目录权限命令Linux更改文件 保存文件命令启动多个服务怎么操作? 使用多配置文件Redis缓存雪崩,怎么处理数据库优化考查sql使用 查询所有用户最后一次登陆记录项目使用了分布式的哪些组件Spring MVC的注解说几个后端接收参数怎么写 往前端传参怎么写 参数的类型(json)前端往后端传数组怎么处理,后端接收的时候怎么处理原创 2021-07-28 23:14:14 · 376 阅读 · 2 评论 -
ActiveMQ
MQ概述一、消息队列MQ概述1.1、为什么使用MQ1.2. 消息队列产品一、消息队列MQ概述MQ全称为Message Queue,消息队列是应用程序和应用程序之间的通信方法。作用:在消息传输过程汇总缓存消息,用于分布式系统之中进行通信。1.1、为什么使用MQ在项目中,可将一些无需即时返回且耗时的操作提取出来,进行异步处理,而这种异步处理的方式大大的节省了服务器的请求响应时间,从而提高了系统的吞吐量。开发中消息队列通常有如下优点:(1) 异步提速: 异步处理任务,将不需要同步处理且耗时长的操作交原创 2021-04-08 09:06:56 · 2477 阅读 · 0 评论 -
ZooKeeper
ZooKeeper&Dubbo一、ZooKeepe1.1、Zookeeper概述1.2、zookeeper的发展历程1.3、什么是分布式1.3.1、集中式系1.3.2、分布式系统1.4、zookeeper的应用场景1.4.1、 注册中心1.4.2、配置中心1.4.3、分布式锁1.4.4、分布式队列1.4.5、负载均衡1.5、zookeeper基本操作1.5.1、zookeeper数据结构1.5.2、节点的分类3. Apache Dubbo概述二、Dubbo简介2.1、Dubbo架构一、ZooKee原创 2022-01-13 22:35:14 · 959 阅读 · 0 评论 -
多线程
技术专题课-多线程一、进程和线程区别二、线程创建方式三、主线程, 子线程, 用户线程, 守护线程四、线程安全问题4.1、什么是线程安全问题4.2、解决线程安全方案*五、死锁5.1、什么是死锁5.2、死锁产生的影响5.3、死锁产生的原因和解决六、线程停止七、多线程编程三大特性7.1、原子性7.2、可见性7.3、有序性7.4、解决多线程三大特性问题方法一、进程和线程区别进程:是指一个内存中运行的应用程序,每个进程都有一个独立的内存空间,一个应用程序可以同时运行多个进程;进程也是程序的一次执行过程,是系统原创 2021-04-07 10:52:58 · 1374 阅读 · 3 评论 -
SpringBoot和SpringCloud配置
一、RestTemplate在Application启动类中添加@Beanpublic RestTemplate restTemplate(){ return new RestTemplate(); }然后使用的时候@Autowiredprivate RestTemplate restTemplate;二、Eureka官方推荐端口 8761yml### 应用名称spring:application:name: eureka-server### eurekae原创 2021-04-07 10:50:42 · 1824 阅读 · 2 评论 -
Spring Cloud Alibaba
Spring Cloud Alibaba一、Spring Cloud Alibaba简介1.1 什么是Spring Cloud Alibaba?1.2 主要模块1.3 模块对应组件1、阿里开源组件2、阿里商业化组件3、集成 Spring Cloud 组件1.4 与Spring版本对应关系二、注册中心+配置中心Nacos2.1 什么是Nacos?2.2 Nacos的安装启动2.2.1. 环境要求2.2.2. 下载地址2.2.3. 启动Nacos服务2.2.4. 访问Nacos服务2.2.5. Nacos关闭2原创 2021-04-07 10:43:50 · 2585 阅读 · 1 评论 -
EasyPOI批量导入
1.首先引入依赖 <!--引入easypoi依赖--> <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-base</artifactId> <version>4.1.0</version> </dependency&g原创 2020-12-21 22:08:01 · 1541 阅读 · 0 评论