- 博客(88)
- 资源 (1)
- 收藏
- 关注
原创 Hadoop入门学习
Hadoop入门学习1. Hadoop基础知识1.1 基础概念1.2 Hadoop特性优点1.3 Hadoop集群整体概述1.4 集群简介1.5 hadoop集群搭建(在linux上搭建)2. 参考视频1. Hadoop基础知识1.1 基础概念1.2 Hadoop特性优点1.3 Hadoop集群整体概述1.4 集群简介1.5 hadoop集群搭建(在linux上搭建)hadoop安装目录结构配置文件概述2. 参考视频链接: Hadoop学习视频链接: Hbase博客教
2022-06-10 14:53:58
221
原创 RPC框架之Thrift架构及源码解读
Thrift就是通过接口文件,来生成各语言的代码,接口文件以”*.thrift”命名。代码生成完,被调用方要编写服务端代码c/s端—Thrift传输协议一致链接: Thrift-参考实践
2022-06-09 17:58:45
407
原创 常见的Java对象序列化与反序列化详解
2. 几种序列化的优缺点?2.1 利用Java的序列化功能序列成字节(字节流)也就是接下来要讲的。一般是需要加密传输时才用。2.2 将对象包装成JSON字符串(字符流)2.2.1 JackSonMap、List的转换可能会出现问题。转复杂类型的Bean时,转换的Json格式不是标准的Json格式。适合处理 大文本Json。速度最快。将复杂类型的Bean转换成Json可能会有问题:引用类型如果没有引用被出错。适合对性能有要求的场景。功能最全,可以将复杂的Bean和Json字符串进行互转。性能上面
2022-06-08 15:28:09
422
原创 Netty入门学习
Netty网络编程0.Netty 入门代码1.NIO基础(三个组件)2. Netty入门学习2.1 服务端代码2.2 客户端代码2.3 netty流程2.4 形象比喻3. Netty 组件之一:EventLoopGroup3.1 处理普通任务与定时任务3.2 处理io事件任务3.3 EventLoop与channel进行绑定3.4 EventLoopGr
2022-05-31 14:59:00
84
原创 手撕死锁代码
手撕死锁代码1.死锁1.死锁public class DeadLock { public static void main(String[] args) { dataSource da = new dataSource(); //开启线程A,先获取A锁,在获取B锁 new Thread(() -> { try { da.getLockA(); } catch
2022-05-06 10:56:47
190
原创 手撕几种常见单例模式
手撕几种常见单例模式1.单例模式特点2. 静态内部类单例模式3. 其余单例参考下述超详细的链接1.单例模式特点定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。常见的使用场景:线程池,数据库连接池、网站计数器、Spring容器默认Bean构建方式:饿汉式,懒汉式,内部类(重点)2. 静态内部类单例模式优点:该方法集成的饿汉式和懒汉式的优点,既延时加载又线程安全,还不需要synchronized 锁。外部类加载时不需要加载静态内部类,不被加载则不占用内存(延迟加载),当外部类调用getI
2022-04-18 11:15:31
663
原创 leetcode刷题分类笔记
leetcode刷题分类笔记202204131. 链表二级标题2. 树二级标题3. 动态规划二级标题4. 深度遍历与回溯二级标题5. 排序算法二级标题1. 链表二级标题2. 树二级标题3. 动态规划二级标题4. 深度遍历与回溯二级标题5. 排序算法二级标题.........
2022-04-13 16:42:21
179
原创 消息队列kafka
消息队列kafka1.概念2.Kafka组成部分与架构2.1 partition2.2 broker 数据存储机制2.3 安全机制 ack3. 各种消息队列的优缺点4. 消息队列八大问题(优缺点、顺序性、幂等性、可靠性、重复消费、消息堆积等)5. 其他博客1.概念Kafka天生就是一个分布式的消息队列,它可以由多个broker组成,每个broker是一个节点;你创建一个topic,这个topic可以划分为多个partition,每个partition可以存在于不同的broker上,每个partition
2022-03-11 17:17:42
1785
原创 垃圾回收器CMS与G1的区别
垃圾回收器CMS与G1的区别1. CMS1.0 概念1. 1 步骤如下:1.2 CMS的优点:1.3 CMS的缺点:1.4 使用场景2. G12.0 概念2.1 步骤如下:2.2 G1的特点2.3 使用场景1. CMS1.0 概念CMS(Concurrent Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器,基于并发“标记清理”实现,在标记清理过程中不会导致用户线程无法定位引用对象。仅作用于老年代收集。1. 1 步骤如下:初始标记(CMS initial mark):独占C
2022-03-03 19:57:31
3931
原创 JMM及volatile深入理解
JMM及volatile底层深入理解1. JMM- - - Java内存模型2. volatile 如何保证可见性(底层原理)3. volatile 如何保证指令重排的(底层原理)1. JMM- - - Java内存模型在 JDK1.2 之前,Java 的内存模型实现总是从主存(即共享内存)读取变量,是不需要进⾏特别的注意的。⽽在当前的 Java 内存模型下,线程可以把变量保存本地内存(⽐如机器的寄存器)中,⽽不是直接在主存中进⾏读写。这就可能造成⼀个线程在主存中修改了⼀个变量的值,⽽另外⼀个线程
2022-03-03 15:26:09
449
原创 Mysql索引及优化
Mysql及优化1.整体语句顺序2. 分页查询2.1 语法2.2 举例12.3 举例 23.分组查询3.1 where 与 having区别3.2 案例4. 单表综合练习sql5. 多表综合练习sql5.1 内连接5.2 外连接5.3 自连接5.4 子查询6. 索引6.1 为什么InnoDB存储引擎使用B+Tree索引结构6.2 索引分类6.3 索引语法6.4 索引-查看执行频次6.5 索引-性能分析6.6 profile 详情6.7 explain执行计划6.8 索引使用6.9 索引设计原则1.整体语
2022-02-27 18:48:46
1029
原创 JVM:如何实现一个自定义类加载器?
JVM:如何实现一个自定义类加载器?1. 为什么要自定义加载器2. 如何实现自定义加载器3. 能不能自己写一个java.lang.String1. 为什么要自定义加载器原因:1、存放在自定义路径上的类,需要通过自定义类加载器去加载。【注意:AppClassLoader加载classpath下的类】2、类不一定从文件中加载,也可能从网络中的流中加载,这就需要自定义加载器去实现加密解密。2. 如何实现自定义加载器实现自定义类加载有以下两步:1、继承ClassLoader2、重写findClass
2022-02-22 21:39:01
1311
6
原创 多线程打印
两个线程交替打印1到1001 两个线程交替打印1到1001 两个线程交替打印1到100static volatile int falg = 0; @Test public void test001(){ Thread threadA = new Thread(new Runnable() { @Override public void run() { int i = -1;
2022-02-14 11:55:48
461
原创 网络协议-计算机网络
各种网络协议1 从发送一个请求到响应页面经历了哪些过程?2 http协议2.1 http响应状态码2.2 http组成成分2.3 https加密过程1 从发送一个请求到响应页面经历了哪些过程?链接: 发送一个url请求到页面渲染完成经历的流程.2 http协议2.1 http响应状态码2.2 http组成成分链接: HTTP协议由哪些部分组成?.2.3 https加密过程...
2022-02-11 15:08:09
1281
原创 高并发框架之消息队列
高并发框架之消息队列1 为什么使用消息队列?2 如何保证消息队列的高可用?3 如何保证消息不被重复消费4 .1 为什么使用消息队列?为什么使用消息队列? 消息队列有什么优缺点?kafka、activemq 都有什么区别以及合适哪些场景?链接: Activemq入门教程.耦合场景:看这么个场景。A 系统发送数据到 BCD 三个系统,通过接口调用发送。如果 E 系统也要这个数据呢?那如果 C 系统现在不需要了呢?A 系统负责人几乎崩溃…异步场景:再来看一个场景,A 系统接收一个请求,需要在自己本地
2022-02-10 17:43:21
398
原创 2022-Java常问面试题总结3(Spring框架)
@TOC1. Spring 事务——事务的传播机制在Spring中对于事务的传播行为定义了七种类型分别是:REQUIRED、SUPPORTS、MANDATORY、REQUIRES_NEW、NOT_SUPPORTED、NEVER、NESTED。链接: 七种事务传播行为详解与示例.
2022-02-09 11:57:57
317
原创 Java中双链表的插入(含单链表反转)
Java中双链表的查找、插入、删除1. Java中双链表1. Java中双链表 private void addAfter(Node newNode,Node node){//在某个节点后面添加 newNode.next = node.next; newNode.previous = node; newNode.previous.next = newNode; newNode.next.previous = newNode; ++size; }package cn.xiao
2022-02-08 17:42:26
290
原创 2022-Java常问面试题总结2(基础篇)
2022-Java常问面试题总结21. 进程间的通信方式2. 线程程间的通信方式1. 进程间的通信方式进程间的通信方式三种分别是消息队列通信、信号量通信和共享内存通信。1、消息队列是在两个不相关的进程之间传递数据的一种简单高效的方式,独立于发送进程和接受进程而存在。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。2、信号量是一种提供不同进程或者一个给定的不同线程之间同步的手段。它常作为一种锁机制,防止进程访问共享资源时,其他的进程也访问该资源。主要作为进程之间以及同
2022-02-07 17:14:03
907
原创 经典的海量数据处理面试题
海量数据处理总结1. 如何从大量的 URL 中找出相同的 URL?1.1 题目描述1.2 解答思路1.3 方法总结2. 如何从大量数据中找出高频词?2.1 题目描述2.2 解答思路2.3 方法总结3. 如何找出某一天访问百度网站最多的 IP?3.1 题目描述3.2 解答思路3.3 方法总结4. 如何在大量的数据中找出不重复的整数?4.1 题目描述4.2 解答思路4.2.1 方法一:分治法4.2.2 方法二:位图法4.3 方法总结5. 如何在大量的数据中判断一个数是否存在?1. 如何从大量的 URL 中找出
2022-01-26 16:50:47
888
原创 牛客网刷题(Hw题库)
刷题笔记 ACM形式1. 将16进制的数转为10进制的数2 回溯法模板 (leetcode 79 单词搜索)1. 将16进制的数转为10进制的数import java.util.*;public class Main { private final static int BASE = 16; private static Map<Character, Integer> map = new HashMap<Character, Integer>() {{
2022-01-26 10:27:22
544
原创 final和static使用场景
final和static使用场景1. final 和 static 总结2. final (修饰符)2.1 final修饰类2.2 final修饰方法2.3 final修饰变量3. static (关键字)3.1 static修饰的方法,3.2 static变量3.3 static代码块1. final 和 static 总结我们在程序中经常出现 final和static,那什么时候什么场景下使用?通常在项目很多地方需要使用的常量 需要用 static finalpublic static f
2022-01-25 16:45:42
467
原创 锁机制(自旋锁-乐观锁-悲观锁)
各种锁机制(主要介绍自旋锁)1. 自旋锁2. 悲观锁---Synchornized2.1 偏向锁2.1.1 为什么要引入偏向锁?2.1.2 偏向锁原理和升级过程2.2 轻量级锁2.2.1 为什么要引入轻量级锁?2.2.2 轻量级锁原理和升级过程2.3 几种锁的优缺点1. 自旋锁自旋锁(spinlock):是指当一个线程在获取锁的时候,如果锁已经被其它线程获取,那么该线程将循环等待,然后不断的判断锁是否能够被成功获取,直到获取到锁才会退出循环。获取锁的线程一直处于活跃状态,但是并没有执行任何有效的任务
2022-01-23 19:44:00
1669
1
原创 Java实际场景应用案例
1. 把一个类对象赋给另一个所有属性相同的类对象工具类:BeanUtil.copyProperties(period,newPeriod);谨记:BeanUtils.copyProperties只对bean属性进行复制,这里的复制属于浅复制把javabean复制到另一个javabean 使用BeanUtils.copyProperties(a,b) 复制。该方法对于两种不同的jar包有两种不同的意义 ,a,b通常是两个结构相似的javabean,注意:a,b里的定义类型名称必须一致才能复制。引用的是
2022-01-20 18:01:11
928
2
原创 2022最新超详细Spring全家桶面试题(待更新ing)
2022最新超详细Spring全家桶面试题完整版0. 参考视频1. 谈谈对Spring的理解77.SpringBoot的自动配置原理81. Springboot 启动原理 (启动过程)86. Springboot默认的日志实现框架,如何切换其他日志框架?101.@Component 和@ComponentScan的联系102. @SpringBootApplication和@ComponentScan,扫描包的区别:103 @GetMapping和@RequestMapping的区别1.JDK JRE JV
2022-01-18 15:02:05
4472
1
原创 Redis
Redis1.Redis简介1.1 NoSQL非关系数据库1.2 Redis应用场景1.2.1 配合关系型数据库做高速缓存1.2.2 多样的数据结构存储持久化数据1.3 Redis介绍相关知识1.4 Redis常用的5大数据类型1.3.1. 符串String1.3.2. 哈希Hash1.3.3. 列表List1.3.4. 集合Set1.3.5. 有序集合 Sorted set1.5 Redis 键(key )命令1.6 redis 配置文件介绍1.6.1 bind1.6.2 protected-mode1
2022-01-18 15:00:46
796
原创 Java基础部分(Java异常与Java IO/NIO)
Java基础部分1.异常1.1 什么是异常1.2异常体系结构1.3java异常处理机制,如何处理异常1.4怎么自定义异常2. 接口与抽象类的区别1.异常1.1 什么是异常1.2异常体系结构1.3java异常处理机制,如何处理异常1.4怎么自定义异常链接: 参考链接.链接: java入门学习路径.2. 接口与抽象类的区别链接: 接口与抽象类....
2022-01-12 15:08:41
144
原创 Mysql---CURD(实习笔记)
金助理实习1. Mybaitis-Plus+模糊查询2.多表查询+返回单表属性3 . 多表查询+返回部分多表属性(比如查询3个表,返回2个表对象)4. mysql思维导图1. Mybaitis-Plus+模糊查询String where=" where schedule.isDel="+UserConstant.DELETED_STATE_NO+" and schedule.startdate='"+DateUtils.dateToString(new Date(),DateUtils.DATE_FOR
2022-01-03 14:18:28
604
1
原创 Java中基本的设计模式
基本的设计模式 待更新ing1. 设计模式的七大原则2. 单例模式2.1 饿汉式2.2 懒汉式单例2.3 优化懒汉式---双检索DCL2.4 内部类懒汉式2.5 了解jdk中有哪些地方体现了单例模式3. 代理模式4. 工厂方法模式5. 抽象模式6. 模板方法模式7. 责任链模式1. 设计模式的七大原则开闭原则单一职责原则里氏代换原则依赖倒转原则接口隔离原则合成/聚合复用原则迪米特原则2. 单例模式JVM中控制一个类只有一个实例—单例模式。链接: 参考黑马程序员基础篇的单例设计模式.链
2021-12-25 17:26:00
557
原创 Mybatis-Plus
Mybatis-Plus 入门基础0. 中文官方文档及参考视频1. 条件查询 map2. 分页查询3. 批量删除4. map--删除5. 逻辑删除 @TableLogic注解6. 性能分析插件7. 条件构造器7.1 多条件查询7.2 查询一个 userMapper.selectOne()7.3 SelectCount (between and查询)7.4 模糊查询7.5 在子查询中查出来7.6 降序查询8.代码生成器0. 中文官方文档及参考视频链接: 官方文档.链接: 参考视频.1. 条件查询 ma
2021-12-25 17:22:42
288
原创 Java---JUC并发篇(多线程详细版)
这里写目录标题1. 并发基础(线程篇)1.1 java线程状态及线程状态之间的转化1.2 操作系统层面有5种状态2. 线程池的核心参数(7个核心参数)2.1 线程池参数介绍2.2 代码实现2.3 handler 4种拒绝策略3. sleep与wait方法对比3.1 异同点3.2 代码展示4. lock锁与synchronized锁区别4.1 异同点4.2 代码实现5. volatile 能否保证线程安全5.1 什么是线程安全5.2 代码展示5.2.1 原子性5.2.2 可见性5.2.3 有序性6. Java
2021-12-09 22:05:32
457
3
原创 Leetcode之深度遍历递归与回溯法汇总
分类刷题之深度遍历递归与回溯法2021.12.061. leetcode695 岛屿的最大面积1.1 描述1.2 代码2. leetcode547 省份数量(朋友圈的个数)1.1 描述1.2 代码3. leetcode417 太平洋大西洋水流问题1.1 描述1.2 代码4. leetcode46 全排列1.1 描述1.2 代码5. leetcode77 组合1.1 描述1.2 代码6. 剑指 Offer 13 机器人的运动范围1.1 描述1.2 代码学习资料参考于:剑桥offer 和 C++ PDF刷题分
2021-12-07 22:24:46
648
原创 Git使用教程
代码版本控制1. 版本控制分类1.1 集中版本控制 SVN1.2 分布式版本控制 Git2. Git配置2.1 设置用户名与邮箱(用户标识,必要)2.2 设置免密码登录2.3 Git基本理论2.4 Git项目搭建2.5 gitee账户密码3. IDEA中集成Git3.1 参考资料3.2 GIT分支1. 版本控制分类1.1 集中版本控制 SVN所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改。所有的版本数据都存在服务器上,用户的本地只有自己以前所同步的版本,如果不连
2021-12-07 21:27:54
446
原创 JVM(解读Java 虚拟机)
JVM学习笔记1. JVM整体结构1.1. 字节码文件1.2. 类加载器1.2.1 加载 Loading1.2.2 链接 Linking1.2.3 初始化 Initialization1.3. 运行时数据区 Runtime Data Area1.3.1 程序计数器1.3.2 虚拟机栈1.3.3 本地方法栈1.3.4 堆1.3.5 方法区(Method Area)1.4. 执行引擎1.4.1 解释器1.4.2 即时编译器1.4.3 垃圾回收器2. 类加载器子系统2.1类加载器子系统的作用1. JVM整体结
2021-11-29 22:56:19
499
1
原创 SpringMVC(深入细节)
转发与重定向、数据处理、乱码及Json交互处理1. 结果跳转方式:转发与重定向1.1 通过SpringMVC来实现转发和重定向 - 无需视图解析器1.2 通过SpringMVC来实现转发和重定向 - 有视图解析器2. 数据处理2.1 提交的域名称和处理方法的参数名一致2.2 提交的域名称和处理方法的参数名不一致2.3 提交的是一个对象3. 数据显示到前端(3种方式)3.1 通过ModelAndView3.2 通过ModelMap3.3 通过Model3.4 三者对比4. 乱码问题4.1 测试步骤4.2 解
2021-11-18 22:57:18
803
原创 RestFul
RestFul 风格1. 概念2. 用法3. 注解 及 RestFul小结4. 个人理解1. 概念Restful就是一个资源定位及资源操作的风格。不是标准也不是协议,只是一种风格。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。2. 用法在Spring MVC中可以使用 @PathVariable 注解,让方法参数的值对应绑定到一个URI模板变量上@Controllerpublic class RestFulController { //映射访问路径 @Reque
2021-11-17 11:29:50
52
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人