自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(117)
  • 资源 (4)
  • 收藏
  • 关注

原创 springboot(五)员工管理系统springboot+mybatis+mysql+thymeleaf

springboot(五) 实例 CRUD 增删改查得实现 springboot+mybatis+mysql+thymeleaf 前端后台交互以及基础功能得实现,BootStrap idea maven废话不多说了,直接上代码,先给项目。1.前景回顾:入门简介springboot配置(yml)两种创建方式thymeleaf引入与国际化2.pom:<?xml version...

2020-04-08 10:48:16 1179 5

原创 Mysql学习笔记(基础)基础sql语句详细记录

数据库学习(基础)// 个人网课学习记录,如果有违规等问题,请联系我删除~需求分析:使用cmd命令来创建一个数据库,并对数据库中得一张分类表进行增删改查得工作常见数据库mysql:开源免费得使用中小型企业得免费数据库oracle:甲骨文公司db2:IBM公司,银行系统大多采用db2(稳定)sqlserver : windows里面,政府网站asp.netnosq...

2020-03-03 21:02:05 5870

原创 Netty 10.3 Log4j 整合到Netty

Netty 10.3 Log4j 整合到Netty在Maven 中添加对Log4j的依赖 在 pom.xml配置 Log4j , 在 resources/log4j.properties<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17<

2020-07-27 16:33:57 320

原创 Netty学习笔记 10.2 解码器-ReplayingDecoder(实例)

Netty学习笔记 10.2 解码器-ReplayingDecoderpublic abstract class ReplayingDecoder extends ByteToMessageDecoderReplayingDecoder扩展了ByteToMessageDecoder类,使用这个类,我们不必调用readableBytes()方法。参数S指定了用户状态管理的类型,其中Void代表不需要状态管理应用实例:使用ReplayingDecoder 编写解码器,对前面的案例进行简化 [案例演示]R

2020-07-27 15:50:02 510

原创 Netty学习笔记 10.2 Netty的handler链的调用机制

Netty学习笔记 10.2 Netty的handler链的调用机制实例要求:使用自定义的编码器和解码器来说明Netty的handler 调用机制 客户端发送long -> 服务器 服务端发送long -> 客户端案例演示结论不论解码器handler 还是 编码器handler 即接收的消息类型必须与待处理的消息类型一致,否则该handler不会被执行在解码器 进行数据解码时,需要判断 缓存区(ByteBuf)的数据是否足够 ,否则接收到的结果会期望结果可能不一致MyBy

2020-07-27 15:47:36 412

原创 Netty学习笔记 10 Netty编解码器和handler的调用机制

Netty学习笔记 10 Netty编解码器和handler的调用机制基本说明netty的组件设计:Netty的主要组件有Channel、EventLoop、ChannelFuture、ChannelHandler、ChannelPipe等ChannelHandler充当了处理入站和出站数据的应用程序逻辑的容器。例如,实现ChannelInboundHandler接口(或ChannelInboundHandlerAdapter),你就可以接收入站事件和数据,这些数据会被业务逻辑处理。当要给客户端发送响

2020-07-27 15:40:22 252

原创 Netty学习笔记 9.3 Protobuf快速入门实例2

Protobuf快速入门实例2编写程序,使用Protobuf完成如下功能客户端可以随机发送Student PoJo/ Worker PoJo 对象到服务器 (通过 Protobuf 编码)服务端能接收Student PoJo/ Worker PoJo 对象(需要判断是哪种类型),并显示信息(通过 Protobuf 解码)syntax = "proto3";option optimize_for = SPEED; // 加快解析option java_package="com.atguigu.n

2020-07-27 15:21:24 165 1

原创 Netty学习笔记 9.2 Protobuf快速入门实例1

Netty学习笔记 9.2 Protobuf快速入门实例编写程序,使用Protobuf完成如下功能客户端可以发送一个Student PoJo 对象到服务器 (通过 Protobuf 编码)服务端能接收Student PoJo 对象,并显示信息(通过 Protobuf 解码)代码具体信息请查看注释配置protosyntax = "proto3"; //版本option java_outer_classname = "StudentPOJO";//生成的外部类名,同时也是文件名//prot

2020-07-27 12:33:27 197

原创 Netty学习笔记 9.1 goole protobuf理论介绍

Netty学习笔记 9 goole protobuf编码和解码的基本介绍编写网络应用程序时,因为数据在网络中传输的都是二进制字节码数据,在发送数据时就需要编码,接收数据时就需要解码 [示意图]codec(编解码器) 的组成部分有两个:decoder(解码器)和 encoder(编码器)。encoder 负责把业务数据转换成字节码数据,decoder 负责把字节码数据转换成业务数据Netty 本身的编码解码的机制和问题分析Netty 自身提供了一些 codec(编解码器)Netty 提供的编码器

2020-07-27 12:27:45 128

原创 Netty学习笔记 8 Netty 通过WebSocket编程实现服务器和客户端长连接

通过WebSocket编程实现服务器和客户端长连接MyServerpackage com.my.netty.websocket;import com.atguigu.netty.heartbeat.MyServerHandler;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.ChannelFuture;import io.netty.channel.ChannelInitializer;import

2020-07-27 11:42:11 138

原创 Netty学习笔记 7 Netty心跳检测机制案例

实例要求:编写一个 Netty心跳检测机制案例, 当服务器超过3秒没有读时,就提示读空闲当服务器超过5秒没有写操作时,就提示写空闲实现当服务器超过7秒没有读或者写操作时,就提示读写空闲MyServerpackage com.my.netty.heartbeat;import io.netty.bootstrap.ServerBootstrap;import io.netty.channel.ChannelFuture;import io.netty.channel.ChannelIniti

2020-07-27 11:14:32 134

原创 Netty学习笔记 6 Netty应用实例-群聊系统

Netty应用实例-群聊系统实例要求:编写一个 Netty 群聊系统,实现服务器端和客户端之间的数据简单通讯(非阻塞)实现多人群聊服务器端:可以监测用户上线,离线,并实现消息转发功能客户端:通过channel 可以无阻塞发送消息给其它所有用户,同时可以接受其它用户发送的消息(有服务器转发得到)目的:进一步理解Netty非阻塞网络编程机制 GroupChatServerpackage com.my.netty.groupchat;import io.netty.bootstrap.

2020-07-27 10:41:01 202

原创 Netty 学习笔记 5核心模块组件三 (Unpooled 类)、案例一、二

UnpooledNetty 提供一个专门用来操作缓冲区(即Netty的数据容器)的工具类常用方法如下所示举例说明Unpooled 获取 Netty的数据容器ByteBuf 的基本使用 【案例演示】package com.my.netty.buf;import io.netty.buffer.ByteBuf;import io.netty.buffer.Unpooled;public class NettyByteBuf01 { public static void main(S

2020-07-27 10:17:15 361

原创 Netty学习笔记 5核心模块二 (Pipeline 和 ChannelPipeline、ChannelHandlerContext、ChannelOption、EventLoopGroup及实现类)

Pipeline 和 ChannelPipelineChannelPipeline 是一个重点:ChannelPipeline 是一个 Handler 的集合,它负责处理和拦截 inbound 或者 outbound 的事件和操作,相当于一个贯穿 Netty 的链。(也可以这样理解:ChannelPipeline 是 保存 ChannelHandler 的 List,用于处理或拦截 Channel 的入站事件和出站操作)ChannelPipeline 实现了一种高级形式的拦截过滤器模式,使用户可以完全

2020-07-27 10:12:28 292

原创 Netty学习笔记 5 核心模块组件一(Bootstrap、ServerBootstrap、Future、ChannelFuture、Channel、Selector、ChannelHandler)

Netty学习笔记 Bootstrap、ServerBootstrapBootstrap 意思是引导,一个 Netty 应用通常由一个 Bootstrap 开始,主要作用是配置整个 Netty 程序,串联各个组件,Netty 中 Bootstrap 类是客户端程序的启动引导类,ServerBootstrap 是服务端启动引导类常见的方法有public ServerBootstrap group(EventLoopGroup parentGroup, EventLoopGroup childGroup

2020-07-27 10:07:37 274

原创 Netty学习笔记 4.5 快速入门实例-HTTP服务

Netty学习笔记 4.5 快速入门实例-HTTP服务实例要求:使用IDEA 创建Netty项目Netty 服务器在 6668 端口监听,浏览器发出请求 "http://localhost:6668/ "服务器可以回复消息给客户端 "Hello! 我是服务器 5 " , 并对特定请求资源进行过滤.目的:Netty 可以做Http服务开发,并且理解Handler实例和客户端及其请求的关系.TestServerpackage com.my.netty.http;import io.nett

2020-07-27 09:55:23 175

原创 Netty学习笔记 4.4 异步模型

Netty学习笔记 4.4 异步模型基本介绍异步的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的组件在完成后,通过状态、通知和回调来通知调用者。Netty 中的 I/O 操作是异步的,包括 Bind、Write、Connect 等操作会简单的返回一个 ChannelFuture。调用者并不能立刻获得结果,而是通过 Future-Listener 机制,用户可以方便的主动获取或者通过通知机制获得 IO 操作结果Netty 的异步模型是建立在 future 和 c

2020-07-27 09:44:29 106

原创 Netty学习笔记 4.3 Netty快速入门实例-TCP服务

Netty学习笔记 4.3 Netty快速入门实例-TCP服务实例要求:使用IDEA 创建Netty项目Netty 服务器在 6668 端口监听,客户端能发送消息给服务器 “hello, 服务器~”服务器可以回复消息给客户端 “hello, 客户端~”目的:对Netty 线程模型 有一个初步认识, 便于理解Netty 模型理论NettyServerpackage com.my.netty.simple;import io.netty.bootstrap.ServerBootstrap;im

2020-07-27 09:41:13 174

原创 Netty学习笔记 4.2 Netty高性能架构设计

Netty学习笔记 4.2 Netty高性能架构设计线程模型基本介绍不同的线程模式,对程序的性能有很大影响,为了搞清Netty 线程模式,我们来系统的讲解下 各个线程模式, 最后看看Netty 线程模型有什么优越性.目前存在的线程模型有: 传统阻塞 I/O 服务模型 Reactor 模式根据 Reactor 的数量和处理资源池线程的数量不同,有 3 种典型的实现 单 Reactor 单线程;单 Reactor 多线程;主从 Reactor 多线程Netty 线程模式(Netty 主要基于主

2020-07-27 09:21:47 184

原创 Netty学习笔记 4.1 Netty概述

Netty学习笔记 4.1 Netty概述原生NIO存在的问题NIO 的类库和 API 繁杂,使用麻烦:需要熟练掌握 Selector、ServerSocketChannel、SocketChannel、ByteBuffer 等。需要具备其他的额外技能:要熟悉 Java 多线程编程,因为 NIO 编程涉及到 Reactor 模式,你必须对多线程和网络编程非常熟悉,才能编写出高质量的 NIO 程序。开发工作量和难度都非常大:例如客户端面临断连重连、网络闪断、半包读写、失败缓存、网络拥塞和异常流的处理等

2020-07-27 09:13:52 205

原创 Netty学习笔记 3.12 Java AIO 基本介绍

Netty学习笔记 3.12 Java AIO 基本介绍JDK 7 引入了 Asynchronous I/O,即 AIO。在进行 I/O 编程中,常用到两种模式:Reactor和 Proactor。Java 的 NIO 就是 Reactor,当有事件触发时,服务器端得到通知,进行相应的处理AIO 即 NIO2.0,叫做异步不阻塞的 IO。AIO 引入异步通道的概念,采用了 Proactor 模式,简化了程序编写,有效的请求才启动线程,它的特点是先由操作系统完成后才通知服务端程序启动线程去处理,一般适用

2020-07-26 21:07:17 122

原创 Netty学习笔记 3.11 NIO与零拷贝

Netty学习笔记 3.11 NIO与零拷贝零拷贝基本介绍零拷贝是网络编程的关键,很多性能优化都离不开。在 Java 程序中,常用的零拷贝有 mmap(内存映射) 和 sendFile。那么,他们在 OS 里,到底是怎么样的一个的设计?我们分析 mmap 和 sendFile 这两个零拷贝另外我们看下NIO 中如何使用零拷贝传统IO数据读写Java 传统 IO 和 网络编程的一段代码//定义一个File类型的file为test.txtFile file = new File("test.

2020-07-26 21:03:51 144

原创 Netty学习笔记 3.10 NIO 网络编程应用实例-群聊系统

Netty学习笔记 3.10 NIO 网络编程应用实例-群聊系统实例要求:编写一个 NIO 群聊系统,实现服务器端和客户端之间的数据简单通讯(非阻塞)实现多人群聊服务器端:可以监测用户上线,离线,并实现消息转发功能客户端:通过channel 可以无阻塞发送消息给其它所有用户,同时可以接受其它用户发送的消息(有服务器转发得到)目的:进一步理解NIO非阻塞网络编程机制 Server 端服务器接收到消息 时间: [2019-09-29 12:02:35] -> 服务器 ok…1

2020-07-26 20:54:04 2116

原创 Netty学习笔记 3.9 NIO 非阻塞 网络编程原理分析图快速入门

Netty学习笔记 3.9 NIO 非阻塞 网络编程原理分析图NIO 非阻塞 网络编程相关的(Selector、SelectionKey、ServerScoketChannel和SocketChannel) 关系梳理图对右图的说明:当客户端连接时,会通过ServerSocketChannel 得到 SocketChannelSelector 进行监听 select 方法, 返回有事件发生的通道的个数.将socketChannel注册到Selector上, register(Selector s

2020-07-26 19:56:26 399 2

原创 Netty学习笔记 3.8 选择器

Netty学习笔记 3.8 选择器Selector(选择器)基本介绍Java 的 NIO,用非阻塞的 IO 方式。可以用一个线程,处理多个的客户端连接,就会使用到Selector(选择器)Selector 能够检测多个注册的通道上是否有事件发生(注意:多个Channel以事件的方式可以注册到同一个Selector),如果有事件发生,便获取事件然后针对每个事件进行相应的处理。这样就可以只用一个单线程去管理多个通道,也就是管理多个连接和请求。【示意图】只有在 连接/通道 真正有读写事件发生时,才会进行

2020-07-26 14:05:29 283

原创 Netty学习笔记 3.7 关于Buffer 和 Channel的注意事项和细节

Netty学习笔记 3.7 关于Buffer 和 Channel的注意事项和细节ByteBuffer 支持类型化的put 和 get, put 放入的是什么数据类型,get就应该使用相应的数据类型来取出,否则可能有 BufferUnderflowException 异常。[举例说明]package com.my.nio;import java.nio.ByteBuffer;public class NIOByteBufferPutGet { public static void main

2020-07-26 14:02:13 168

原创 Netty学习笔记 3.6 应用实例4-拷贝文件transferFrom 方法

应用实例4-拷贝文件transferFrom 方法实例要求:使用 FileChannel(通道) 和 方法 transferFrom ,完成文件的拷贝拷贝一张图片代码演示为方便自我查看及分类具体代码注释及上文请查看我得上一篇博客Netty学习笔记 3.5 应用实例3-使用一个Buffer完成文件读取package com.my.nio;import java.io.FileInputStream;import java.io.FileOutputStream;import java

2020-07-26 13:56:55 554

原创 Netty学习笔记 3.5 应用实例3-使用一个Buffer完成文件读取

应用实例3-使用一个Buffer完成文件读取实例要求:使用 FileChannel(通道) 和 方法 read , write,完成文件的拷贝拷贝一个文本文件 1.txt , 放在项目下即可代码演示package com.atguigu.nio;import java.io.FileInputStream;import java.io.FileOutputStream;import java.nio.ByteBuffer;import java.nio.channels.FileCh

2020-07-26 13:54:32 220

原创 Netty学习笔记 3.4应用实例2-本地文件读数据

应用实例2-本地文件读数据实例要求:使用前面学习后的ByteBuffer(缓冲) 和 FileChannel(通道), 将 file01.txt 中的数据读入到程序,并显示在控制台屏幕假定文件已经存在代码演示为方便自我查看及分类具体代码注释及上文请查看我得上一篇博客Netty学习笔记 3.3 应用实例1-本地文件写数据package com.my.nio;import java.io.File;import java.io.FileInputStream;import java.nio

2020-07-26 13:46:20 377

原创 Netty学习笔记 3.3 应用实例1-本地文件写数据

应用实例1-本地文件写数据实例要求:使用前面学习后的ByteBuffer(缓冲) 和 FileChannel(通道), 将 “hello,netty” 写入到file01.txt 中文件不存在就创建代码演示package com.my.nio;import java.io.FileOutputStream;import java.nio.ByteBuffer;import java.nio.channels.FileChannel;public class NIOFileChannel

2020-07-26 13:42:04 257

原创 Netty学习笔记 3.2 NIO和BIO比较及原理示意图

Netty学习笔记 3.2 NIO和BIO比较及原理示意图NIO 和 BIO 的比较BIO 以流的方式处理数据,而 NIO 以块的方式处理数据,块 I/O 的效率比流 I/O 高很多BIO 是阻塞的,NIO 则是非阻塞的BIO基于字节流和字符流进行操作,而 NIO 基于 **Channel(通道)和 Buffer(缓冲区)**进行操作,数据总是从通道读取到缓冲区中,或者从缓冲区写入到通道中。Selector(选择器)用于监听多个通道的事件(比如:连接请求,数据到达等),因此使用单个线程就可以监听多个

2020-07-26 13:35:51 611 3

原创 Netty学习笔记 3.1 Java NIO 编程

Netty学习笔记 3.1 Java NIO 编程Java NIO 基本介绍Java NIO 全称 java non-blocking IO,是指 JDK 提供的新 API。从 JDK1.4 开始,Java 提供了一系列改进的输入/输出的新特性,被统称为 NIO(即 New IO),是同步非阻塞的NIO 相关类都被放在 java.nio 包及子包下,并且对原 java.io 包中的很多类进行改写。【基本案例】NIO 有三大核心部分:Channel(通道),Buffer(缓冲区), Selector(

2020-07-26 13:26:36 119

原创 Netty学习笔记 2.2 BIO应用实例(案例+超详细注释)

Netty学习笔记 2.2 BIO应用实例实例说明:使用BIO模型编写一个服务器端,监听6666端口,当有客户端连接时,就启动一个线程与之通讯。要求使用线程池机制改善,可以连接多个客户端.服务器端可以接收客户端发送的数据(telnet 方式即可)。package com.atguigu.bio;import java.io.InputStream;import java.net.ServerSocket;import java.net.Socket;import java.util.c

2020-07-26 11:17:08 156

原创 Netty学习笔记 2.1 Java BIO编程

Netty学习笔记 2.1 Java BIO编程如果有所侵权,请联系删除,谢谢!I/O模型I/O 模型基本说明I/O 模型简单的理解:就是用什么样的通道进行数据的发送和接收,很大程度上决定了程序通信的性能Java共支持3种网络编程模型/IO模式:BIO、NIO、AIOJava BIO : 同步并阻塞(传统阻塞型),服务器实现模式为一个连接一个线程,即客户端有连接请求时服务器端就需要启动一个线程进行处理,如果这个连接不做任何事情会造成不必要的线程开销 【简单示意图】Java NIO : 同步非

2020-07-26 10:43:24 119

原创 Netty学习笔记 一、Netty介绍和应用场景

学习要求今天开始记录新的学习笔记,在整理老师笔记的同时加入自己的实践经历,为自己以后复习查看做好准备,同时分享出来供同样想学习的人做一点参考。如果有所侵权,请联系删除,谢谢!要求已经掌握了 Java 编程, 主要技术构成: Java OOP 编程、Java 多线程编程、Java IO 编程 、Java 网络编程、常用的Java 设计模式(比如 观察者模式 ,命令模式,职责链模式 )、常用的数据结构(比如 链表)要求学员最好有项目开发和阅读源码的经历。Netty的介绍Netty 是由 JBOS

2020-07-26 10:30:57 191

原创 Flask学习笔记(十八)单元测试

单元测试为什么要测试?Web程序开发过程一般包括以下几个阶段:[需求分析,设计阶段,实现阶段,测试阶段]。其中测试阶段通过人工或自动来运行测试某个系统的功能。目的是检验其是否满足需求,并得出特定的结果,以达到弄清楚预期结果和实际结果之间的差别的最终目的。测试的分类:测试从软件开发过程可以分为:单元测试、集成测试、系统测试等。在众多的测试中,与程序开发人员最密切的就是单元测试,因为单元测试是由开发人员进行的,而其他测试都由专业的测试人员来完成。所以我们主要学习单元测试。什么是单元测试?程序开发过程

2020-07-24 12:29:10 137

原创 Flask学习笔记(十七)蓝图Blueprint

蓝图Blueprint为什么学习蓝图?我们学习Flask框架,是从写单个文件,执行hello world开始的。我们在这单个文件中可以定义路由、视图函数、定义模型等等。但这显然存在一个问题:随着业务代码的增加,将所有代码都放在单个程序文件中,是非常不合适的。这不仅会让代码阅读变得困难,而且会给后期维护带来麻烦。如下示例:我们在一个文件中写入多个路由,这会使代码维护变得困难。from flask import Flask app = Flask(__name__) @app.route

2020-07-24 12:27:38 1454

原创 Flask学习笔记(十六)Flask—Mail

Flask—Mail在开发过程中,很多应用程序都需要通过邮件提醒用户,Flask的扩展包Flask-Mail通过包装了Python内置的smtplib包,可以用在Flask程序中发送邮件。Flask-Mail连接到简单邮件协议(Simple Mail Transfer Protocol,SMTP)服务器,并把邮件交给服务器发送。邮箱认证如下示例,通过开启QQ邮箱SMTP服务设置,发送邮件。from flask import Flaskfrom flask_mail import Mail, M

2020-07-24 12:25:26 135

原创 Flask学习笔记(十五)数据库迁移

数据库迁移在开发过程中,需要修改数据库模型,而且还要在修改之后更新数据库。最直接的方式就是删除旧表,但这样会丢失数据。更好的解决办法是使用数据库迁移框架,它可以追踪数据库模式的变化,然后把变动应用到数据库中。在Flask中可以使用Flask-Migrate扩展,来实现数据迁移。并且集成到Flask-Script中,所有操作通过命令就能完成。为了导出数据库迁移命令,Flask-Migrate提供了一个MigrateCommand类,可以附加到flask-script的manager对象上。首先要在虚

2020-07-24 12:24:35 180

原创 Flask学习笔记(十四)自定义模型类

自定义模型类定义模型模型表示程序使用的数据实体,在Flask-SQLAlchemy中,模型一般是Python类,继承自db.Model,db是SQLAlchemy类的实例,代表程序使用的数据库。类中的属性对应数据库表中的列。id为主键,是由Flask-SQLAlchemy管理。db.Column类构造函数的第一个参数是数据库列和模型属性类型。如下示例:定义了两个模型类,作者和书名。#coding=utf-8from flask import Flask,render_template,redir

2020-07-24 11:57:27 363

Java A* Astar算法实现广州城市最短路径规划

Java A* Astar算法实现广州城市最短路径规划

2022-02-23

W3School 2018离线手册.zip

w3cschool离线教程,包含了大量的常用的文档,使用方便,版本完整,有需要的可以下载使用,如有违规请联系删除

2020-03-15

mysql-5.5.27-win64.rar

mysql-5.5.27-win64,安装版本,自主安装,有需要得就拿去用吧~还有mysql-5.5.27-win32位的下载也有,如果是解压版本得小白可以到我的博客中学习安装,大佬觉得有问题可以留言告诉我~谢谢各位大佬指导!

2020-03-03

mysql-5.5.27-win32.rar

mysql-5.5.27-win32,安装版本,自主安装,有需要得就拿去用吧~还有mysql-5.5.27-win64位的下载也有,如果是解压版本得小白可以到我的博客中学习安装,大佬觉得有问题可以留言告诉我~谢谢各位大佬指导!

2020-03-03

空空如也

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

TA关注的人

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