
java
文章平均质量分 82
星晨sta
知之为知之,不知为不知,是知也...
路漫漫其修远兮,吾将上下而求索...
生而不息,只求真理...
展开
-
Netty入门四http
1.netty构建http服务涉及API编解码器HttpRequestDecoder 解码器HttpResponseEncoder 编码器HttpServerCodec 解码器和编码器HttpObjectAggregator该解码器针对请求体req.content() 也是ChannelInboundHandlerAdapter类型2.基于netty开发类似springboot+web的简单版框架1.netty核心代码如下:netty-server, 封装net...原创 2021-08-11 16:58:11 · 464 阅读 · 0 评论 -
netty入门三netty扫盲
1.netty概述Netty是由JBOSS提供的一个java开源框架,基于NIO的客户、服务器端的编程框架。Netty实现的协议包括FTP、HTTP、SMTP、WEBSOCKET等待Netty解决了NIO编程的复杂的线程模型,以及断连重连、网络闪断、半包读写、失败缓存、网络拥塞和异常流处理的问题,Epoll空轮询导致的CPU飙升100%2.netty核心组件ServerBootstrap 启动类NioEventLoopGroup 线程组 持有多个NioEventLoop.原创 2021-07-31 22:38:18 · 257 阅读 · 0 评论 -
netty入门二NIO
s1.NIO概述首先大家形成一个共识,那就是在我们讨论IO模型的时候,目前来说都是针对网络编程而言,因为网络编程才有大规模的连接,IO输入输出,NIO出现的目的也正是为了解决BIO网络编程模型中大量连接产生大量线程的痛点。IO模型一般包含三种BIO,同步阻塞IO,参考下图BIO的线程模型NIO,同步非阻塞IO完全理解NIO线程模型后补充AIO,异步非阻塞IO2.NIO核心API2.1Channelchannel与IO流的区别:channel即可以读,也可以写.原创 2021-07-11 17:08:14 · 207 阅读 · 0 评论 -
netty入门一回顾阻塞IO
准备抽时间深入学习netty,在此之前先回顾BIO 扫清NIO盲点,本篇先回顾一下BIO传统的socket编程是BIO即阻塞,因此为了对并发的支持,传统的BIO模型只能每个线程都封装一个socket,以达到支持并发的效果下面我们上一段模拟向一个服务端并发发起请求的代码,基于Socket阻塞IO模型实现服务端SocketServer:package cn.qu.socket;import java.io.BufferedReader;import java.io.IOException原创 2020-11-14 22:59:27 · 207 阅读 · 0 评论 -
java-数据结构-二叉查找树
1、二叉查找树概树二叉查找数(也称二叉排序树),首先是一颗二叉树,具有所有二叉树的特性。左子树以及所有左子树的子树均小于根节点,右子树以及所有右子树的子树均大于根节点。非叶子节点的节点也是一颗二叉排序树。2.二叉查找树的作用二叉查找树,即具有链表快速增删的特性也具有数组快速查找的特性,例如文件系统3.构造一颗二叉查找树3.1首先声明一个类BinarySearchTree<T>3.2在上述类中定义一个内部静态类用于定义节点类Node<T>,并声明一个根节原创 2020-10-11 13:59:41 · 320 阅读 · 0 评论 -
java-数据结构-二叉树
概述二叉树是n个有限元素的集合,由一个根及两个不相交的左、右子树组成,子树也是二叉树,是有序树1.每个节点至多有两个子结点,因此二叉树节点的度小于等于22.第n层上,最多有2^n-1个节点构建二叉树1.构建一颗二叉树的数据结构@AllArgsConstructor @Data private static class Node<T> { private T t; private Node<T> left; ...原创 2020-09-05 17:04:38 · 201 阅读 · 0 评论 -
java-mysql专题
1.sql优化1.1select字句中不要使用* 理由:把*替换成表中的字段名,需要解析一次数据字典,有性能损耗1.2from字句后的主表最好是记录数最少的表(oracle rbo模式,从from最右边的表开始扫描)1.3范围大的条件放在where末尾,where字句的解析顺序是从后到前1.4子查询in迭代的是子表,exists迭代的是外表,外大用in,内大用exists...原创 2020-03-30 14:13:10 · 176 阅读 · 0 评论 -
java-并发专题-1
1.并发、并行、吞吐量并发:是指单位时间内(通常1s)系统或程序处理的请求数量。并行:多个线程或进程同时运行完成某个大型计算的一部分。吞吐量:网络吞吐量是指定单位时间内传输的数据字节大小,系统吞吐量与并发差不多一个意思。2.锁隐式锁:synchronized(同步关键字)最优用法:private byte[] lock = new byte[1];public v...原创 2020-03-22 22:39:47 · 304 阅读 · 0 评论 -
win10安装oracle11g
1.下载oracle11goracle11g下载接受许可,下载两个压缩包2.解压两个压缩包到同一个根目录下3.安装前准备关闭防火墙及病毒检测打开cvu_prereq.xml增加如下内容:4.运行setup.exe不使用自动更新为了能与生产环境兼容,这里选择服务器类型如果不需要多个数据库实例,选择单实例即可。...原创 2019-09-24 14:44:44 · 170 阅读 · 0 评论 -
java面试总结(11)SpringCloud
1.springboot概述springboot是由Pivotal团队开发的一款基于spring的全新框架,其设计初衷是为了简化spring的搭建以及开发过程。2.springboot的特点:1.约定大于配置的理念提高了开发效率,例如静态资源的位置,默认配置文件名称application2.嵌入式web容器,例如tomcat,让开发人员不必过多的关注容器的调优配置3.摒弃了大量...原创 2019-02-24 23:14:17 · 699 阅读 · 0 评论 -
java面试总结(10)Redis
1.1Redis概述redis是一款由C语言开发基于内存但可以持久化的key-value数据库,即非关系型数据库,NoSql(not only sql)2.Redis的优点、缺点优点:*数据是存储在内存中,速度非常快,理论上每秒可以达到11万次的读、8万次的写*支持事务,当然redis的事务只是保证了,执行语句的完整性并不能保证数据的安全*数据可以持久化到硬盘*支持字符...原创 2019-02-24 00:26:30 · 376 阅读 · 0 评论 -
java8 函数式编程实战
1.Lambda表达式的5种格式1.1首先看一个代码片段list.stream().anyMatch(person -> person.getAge() == 30);list.stream().anyMatch(new Predicate<Person>() { @Override public boolean test(Person per...原创 2018-12-10 23:16:16 · 556 阅读 · 0 评论 -
java面试总结(8)MyBatis
1.MyBatis概述mybatis是一款基于输入、输出映射的半自动化持久层ORM开源框架,原名Ibatis,2010年更名*ORM(object relational mapping)对象关系映射*半自动化主要是指mybatis并没有封装大量的API用于CRUD操作,相比于hibernate即使你不了解SQL规范,依然可以通过hibernate操作数据库2.MyBatis的优点...原创 2018-09-08 23:13:26 · 361 阅读 · 0 评论 -
java面试总结(9)Hibernate
1.hibernate概述hibernate是一款基于ORM的全自动化开源框架,可以通过原生SQL,自定义的HQL以及CriteriaAPI操作数据库,基于JDBC2.hibernate与mybatis的区别2.1orm的区别*hibernate的对象关系型映射:POJO对应数据库的表,POJO的对象对应数据库表的记录,POJO属性对应表的字段*mybatis的对象关系型映射:...原创 2018-09-11 17:18:55 · 238 阅读 · 0 评论