自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 资源 (2)
  • 收藏
  • 关注

原创 【RPC】RPC进阶(一)架构设计

文章目录1.1 架构设计1.1.1 RPC 架构1.1.2 可扩展的架构1.1 架构设计1.1.1 RPC 架构​ 架构设计按照我的理解就是从顶层出发,梳理出系统中的各个模块,并清晰他们之间数据交互的流程,形成我们最终的设计方案,让人一看就能对系统整体有一个宏观认识,并且好的架构设计同时还要兼具灵活的拓展性。​ RPC 中我们发起一次调用在最底层上首先是要进行网络的连接,考虑到调用的可靠性,我们一般采用TCP协议进行数据传输,同时为了屏蔽网络传输的复杂性,我们设计一个单独的模块来收发二进制数据,这个

2021-08-23 12:55:35 226

原创 【Mybatis】Mybatis学习笔记

目录文章目录目录Mybatis学习笔记1. JDBC实现过程1.1 步骤1.2 代码2. JDBC问题2.1 连接建立和释放2.2 SQL统一存取2.3 传入的参数映射和动态sql2.4 结果映射和结果缓存2.5 重复sql3. JDBC演变为Mybatis4. Mybatis的使用4.1 建立Mybatis配置文件4.2 编写mapper(dao)层接口4.3 编写mapper对应xml文件4.4 service层调用获取结果Maybatis中SQL相关操作delete 删除update 修改selec

2021-08-18 11:59:46 424

原创 【RPC】RPC基础(六)RPC实战:gRPC使用和原理初探

文章目录RPC核心原理1. RPC基础1.6 RPC实战:gRPC使用IDEA中使用Protocol BuffergRPC的发送与接收发送原理接受原理RPC核心原理1. RPC基础1.6 RPC实战:gRPC使用IDEA中使用Protocol Buffer打开IDEA插件市场,搜索protocol buffers,安装后重启,就可以识别.proto文件了编译代码生成参考grpc-java的 GitHub 在pom.xml 文件中添加信息如下<dependency> <g

2021-08-18 11:42:28 587

原创 【RPC】RPC基础(五)动态代理

1.5 动态代理什么是动态代理​ 动态代理就是在程序运行期间,创建目标对象的代理对象,在不改变其代码的情况下,对目标对象的方法进行功能性增强。比如Spring AOP中我们在项目使用的统一拦截功能,如权限认证、性能统计等都是动态代理的体现。​ RPC中,客户方在使用服务提供方所提供的功能时,只是通过Maven等方式导入提供的接口,其中并不包含真正的业务逻辑,但我们又是怎样调用到确实发挥作用的方法,其中的核心技术就是动态代理,其调用流程如下。​ JDK 动态代理使用示例/** * 要代理的接口

2021-08-18 11:37:41 470

原创 【RPC】RPC基础(四)网络通信

文章目录RPC核心原理1. RPC基础1.4 网络通信常见的网络 IO 模型BIONIOIO多路复用AIORPC框架中IO模型的选择零拷贝Netty 中的零拷贝RPC核心原理1. RPC基础1.4 网络通信常见的网络 IO 模型同步阻塞 IO (BIO)同步非阻塞 IO (NIO)IO多路复用异步非阻塞 IO (AIO)BIOBIO 是最常见和简单的模型,Linux 中默认所有 Socket 都是阻塞的。一个线程处理一个 IO流程:应用进程发起 IO,应用进程阻塞,系统内核等待数据

2021-08-18 11:31:48 377

原创 【RPC】RPC基础(三)序列化

文章目录RPC核心原理1. RPC基础1.3 序列化常用的序列化JDK原生序列化JSONHessianProtobufRPC框架中序列化的选择RPC框架构造的注意事项RPC核心原理1. RPC基础1.3 序列化常用的序列化JDK原生序列化public void test(String filePath) { FileOutputStream fos = new FileOutputStream(filePath); Student student = new Student(); stud

2021-08-18 11:29:19 524

原创 【RPC】RPC基础(二)RPC协议

文章目录RPC核心原理1. RPC基础1.2 RPC协议为什么设计RPC协议如何设计RPC协议可扩展协议的设计思考RPC核心原理1. RPC基础1.2 RPC协议RPC协议和HTTP协议一样都属于应用层协议协议的作用:​ 协议就像是文章中的标点符号、段落格式等规定,有了这些我们能明白一句话和一个段落到那里结束。RPC调用中,请求信息转换为二进制写入本地Socket,再通过网卡发往网络设备。二进制码有可能被划分为多个不同数据块进行发送,发送过程中还可能与其他数据块进行合并,协议的作用就是标定接收方

2021-08-18 11:25:05 874

原创 【RPC】RPC基础(一)什么是RPC

文章目录RPC核心原理为什么要学习RPC1. RPC基础1.1 什么是RPCRPC通信流程RPC在架构中的位置RPC核心原理​ 第一次想正式了解RPC是在旁听了同学的模拟面以后,百度的面试官推荐说简历中如果缺少项目, 自己搞一个RPC框架比秒杀商城什么的更能算是加分项,后面和同学交流中了解到虽然RPC算是一个不错的项目,但如果只是为了做项目而不去了解其中的原理核心,不管是面试还是对自身能力的提升,它的价值都要大打折扣,所以还是要系统全面的去学习RPC​ 本文是我学习何小峰老师的 RPC实战与核心原理课

2021-08-18 11:22:00 406

原创 【Java】多线程(五)高级知识

文章目录5. 多线程高级知识5.1 多线程的七种状态5.2 守护线程与用户线程5.3 多线程优先级5.4 如何安全的停止线程5.4.1 stop方法5.4.2 interrupt方法打断正在阻塞的线程打断正在运行的线程5.4.3 标志位法5.5 Lock锁的基本使用ReentrantLock使用condition实现等待通知机制5. 多线程高级知识5.1 多线程的七种状态初始化状态就绪状态运行状态死亡状态阻塞状态超时等待等待状态start():调用start()方法会使得该线程开始执行,

2021-08-18 11:17:47 355

原创 【Java】多线程(四)多线程通讯

文章目录4. 多线程线程之间的通讯4.1 wait/notify机制4.1.1 wait/notify/notifyall基本使用4.1.2 多线程通讯实现生产者消费者模型4.2 join机制4.2.1 join/Wait/sleep之间的区别4.2.2 join基本使用4.2.3 join的底层原理4. 多线程线程之间的通讯4.1 wait/notify机制等待/通知的相关方法是任意Java对象都具备的,因为这些方法被定义在所有对象的超类java.lang.Object上,方法如下:notif

2021-08-17 22:18:06 102

原创 【Java】多线程(三)线程安全

文章目录3. 线程安全问题3.1 什么是线程安全问题3.2 如何解决线程安全问题3.3 synchronized锁的基本使用3.3.1 修饰代码块3.3.2 修饰实例方法3.3.3 修饰静态方法3.3.4 死锁问题3.3.5 springmvc接口中使用3.3.6 线程安全问题的产生原因3.4 字节码角度分析线程安全问题3. 线程安全问题3.1 什么是线程安全问题多个线程共享同一资源时, 同时对资源进行写操作就会产生线程安全问题3.2 如何解决线程安全问题核心思想:当多个线程共享同一个全局变量

2021-08-17 22:15:13 123

原创 【Java】多线程(二)多线程基础

文章目录2. 多线程基础2.1 继承Thread类创建线程2.2 实现Runnable接口创建线程2.3 使用Callable和Future创建线程2.3.1 基本使用2.3.2 手写 Callable和FutureTask模式2.4 使用线程池类似Executor框架2.5 spring @Async异步注解 结合线程池2.5.1 基本使用2.5.2 手写 @Async异步注解2. 多线程基础​ 多线程的创建方式继承Thread类创建线程实现Runnable接口创建线程使用Callable和F

2021-08-17 22:10:41 292

原创 【Java】多线程(一)基本概念

文章目录1. 多线程的基本概念1.1 什么是CPU1.1.1 CPU密集型/IO密集型1.1.2 CPU调度算法原理1.1.3 CPU调度时间片1.1.4 程序计数器1.1.5 上下文切换1.2 什么是线程/进程1.3 为什么需要使用多线程1.4 多线程的使用场景1. 多线程的基本概念1.1 什么是CPUCPU即中央处理器,负责进行逻辑运算。 主要由运算器,控制器和寄存器三部分组成。运算器负责运算,控制器负责发出CPU指令所需要的信息,寄存器保存运算结果或指令的临时文件来提高运算速度。线程运行在CP

2021-08-17 22:09:07 133

原创 【Java】反射与注解(二)注解

文章目录2. 注解2.1 什么是注解2.1.1 常用注解2.1.2 元注解2.1.3 注解的Target2.2 获取注解信息2.3 注解的使用2.3.1 自定义注解2.3.2 定义aop2. 注解2.1 什么是注解注解用来给类声明附加额外信息,可以标注在类、字段、方法等上面,编译器、JVM以及开发人员等都可以通过反射拿到注解信息,进而做一些相关处理SpringBoot 全部都是采用注解化2.1.1 常用注解@Override 只能标注在子类覆盖父类的方法上面,有提示的作用@Deprecat

2021-08-17 22:04:54 186

原创 【Java】反射与注解(一)反射

文章目录1. 反射机制1.1 什么是反射1.2 反射机制的优缺点1.3 反射的用途1.4 反射技术的使用1.4.1 反射常用的Api1.4.2 反射执行构造函数1.4.3 反射执行给属性赋值1.4.4 反射执行调用方法1. 反射机制1.1 什么是反射Reflection enables Java code to discover information about the fields, methods and constructors of loaded classes, and to use re

2021-08-17 22:03:46 140

原创 【Java】JDK8新特性(四)Optional容器

文章目录4. Optional4.1 什么是Optional4.2 判断参数是否为空4.3 参数为空可以设定默认值4.4 参数实现过滤4.5 与Lambda表达式结合使用,优化代码4.5.1 优化方案14.5.2 优化方案24.5.3 优化方案34. Optional4.1 什么是OptionalOptional 是个容器:它可以保存类型T的值,或者仅仅保存null。Optional提供很多有用的方法,这样我们就不用显式进行空值检测。Optional 类是一个可以为null的容器对象。如果值存在则i

2021-08-17 21:51:33 136

原创 【Java】JDK8新特性(三)stream流

文章目录3. stream流3.1 什么是stream流3.2 创建方式3.3 基本操作3.3.1 将List转换为Set3.3.1 将List转换为Map3.3.2 Stream将Reduce 求和3.3.3 Max和Min3.3.4 limit和skip3.3.5 并行流与串行流区别3. stream流3.1 什么是stream流Stream 是JDK1.8 中处理集合的关键抽象概念,Lambda 和 Stream 是JDK1.8新增的函数式编程最有亮点的特性了,它可以指定你希望对集合进行的操作,

2021-08-17 21:49:48 221

原创 【Java】JDK8新特性(二)Lambda表达式

文章目录2. Lambda表达式2.1 什么是Lambda表达式2.2 为什么要使用Lambda表达式2.3 Lambda表达式的规范2.3.1 函数接口定义2.3.2 Java系统内置那些函数接口2.4 Lambda基础语法2.4.1 无参方法调用2.4.2 带参数和返回值2.4.3 精简语法2.5 方法引入2.5.1 方法引入规则2.5.2 静态方法引入2.5.3 对象方法引入2.5.4 实例方法引入2.5.5 构造方法引入2. Lambda表达式2.1 什么是Lambda表达式Lambda 表达

2021-08-17 21:45:38 165

原创 【Java】JDK8新特性(一)接口

1. 接口接口中默认方法修饰为普通方法在jdk8之前,interface之中可以定义变量和方法,变量必须是public、static、final的,方法必须是public、abstract的,这些修饰符都是默认的。接口定义方法:public abstract 需要子类实现接口定义变量:public static final在JDK 1.8开始 在以上使用不变的基础上 支持使用static和default 修饰 可以写方法体,不需要子类重写。public interface JDK8Inter

2021-08-17 21:41:46 233

原创 【Java】实现五子棋游戏

文章目录前言一、界面设计二、具体实现1.棋盘部分2.程序入口与控制设置部分总结前言对于初学者,使用java开发五子棋游戏可以很好的帮助我们巩固相关基础知识。主要概括为两部分:1、java GUI中学会容器间的排版布局,跳转交互,容器中图像(棋盘、棋子)的绘制。2、简单数据结构与算法抽象,学会将五子棋进行抽象用已有或自定的数据结构进行表示,悔棋功能使用的栈,设计ai算法,逻辑判断。一、界面设计考虑将界面分为两个部分,一是悔棋、认输、模式选择等按钮的控制设置部分。二是显示棋盘棋子,玩家进行点击下棋的

2021-02-22 13:44:53 1384 2

原创 【Java】手写ArrayList

ArrayList作为java中常用的数据结构,很有自己重现一遍的必要,这里只是针对于ArrayList的源码进行了分析,提取了其中动态分配,添加,删除等核心功能,并加入了合并及去重合并的功能。希望在以后能够搭建动态数组模型对于具体问题具体解决。接口部分:定义通用方法public interface MyList<E> { public void add(E element); public void add(int index,E element); public E

2021-01-23 12:30:13 527

原创 【Java】图像处理基础(一):马赛克,二值化,边缘检测,融合,旋转,缩放

Java图像处理基础基本原理显示原图马赛克效果二值化边缘检测融合旋转缩放基本原理电脑中的图片,都是由像素点构成的,我们可以将图片理解为由像素组成的矩阵或二维数组,每个像素在矩阵中的位置,则表示了像素的位置信息。通常来说,一个像素点所包含A(透明度),R(红),G(绿),B(蓝)四个通道信息,在计算机中,R、G、B的取值范围为0~255,是1个Byte的大小,而int整型为4个Byte,正好可以储存一个像素点的四个通道信息,因此我们可以用1个int代表1个像素点。1个int中0-8位存B、8-16位存G、

2021-01-23 11:32:26 1048

Java带有人机对战功能的五子棋.zip

实现人机对战和人人对战功能的简单五子棋游戏

2021-02-22

Java图像处理(一)基础源码.zip

马赛克,二值化,边缘检测,融合,旋转,缩放, 简单卷积应用

2021-01-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除