java
文章平均质量分 62
鲸落1024
这个作者很懒,什么都没留下…
展开
-
netty-安全增强,防止OOM,空闲检测,黑白名单设置
netty防止出现OOMnetty oom出现原因:根源在于读的速度大于写的速度netty 防止oom对策:设置netty高低水位线启动流量整形时考虑:1.maxwrite(默认4m) 2.maxGlobalWriteSize(默认400M) 3.maxWriteDelay(默认4s)修改程序:在handler里面写之前判断是否可写,如果不可写就做另外处理pu...原创 2020-02-20 22:00:21 · 1275 阅读 · 0 评论 -
netty优化使用-增强写数据功能,流量整形,不同平台开启naive
netty增强写数据功能一般我们发送数据会采用如下方法进行发送数据- `public class BussinessProcessHandler extends SimpleChannelInboundHandler<Object> { protected void channelRead0(ChannelHandlerContext ctx, Object o) th...原创 2020-02-18 21:30:24 · 2509 阅读 · 0 评论 -
netty优化使用-内存泄漏检测,注解,线程模型
netty内存泄漏是什么原因:忘记release调用ByteBuf buffer=ctx.alloc().buffer();导致:堆外内存未free和堆内池化内存未归还,占用的资源未释放,导致OOM。netty内存检测方法:1.引用计数(buffer.reCnt()), ByteBuf buffer=ctx.alloc().buffer(),引用计数+1,buffer.releas...原创 2020-02-13 21:20:58 · 497 阅读 · 0 评论 -
netty-启动流程
netty启动流程启动实例:public final class EchoServer { static final boolean SSL = System.getProperty("ssl") != null; static final int PORT = Integer.parseInt(System.getProperty("port", "8007")); ...原创 2020-01-17 18:12:32 · 220 阅读 · 0 评论 -
netty-经典三种IO模式
经典三种IO模式BIO模式(阻塞I/o)NIO模式(非阻塞IO)AIO模式(异步模式)阻塞与非阻塞,同步与异步阻塞非阻塞同步异步BIO与NIO比较BIO代码简单特定场景:连接数少,并发度低,BIO性能不低于NIOnetty对BIO的支持netty对reactor的支持什么是reactor:reactorshi...原创 2019-12-24 15:45:49 · 719 阅读 · 0 评论 -
java 并发包同步 CountDownLatch, CyclicBarrier, Semaphore
java 线程并发包通常为java.util.concurrent 下的包线程包提供的同步结构主要有三个CountDownLatchCyclicBarrierSemaphoreCountDownLatchCountDownLatch 允许一个线程或多个线程等待某些操作完成,一般用于等待事件的促发实例:/** * @Author: gsonp * @Date: 20...原创 2018-10-31 20:42:04 · 177 阅读 · 0 评论 -
java内存模块
java 虚拟机内存模块java虚拟机在执行java程序时将java管理的内存分为不同的区域,主要是:1.方法区,2.虚拟机栈,3.本地方法栈,4.堆,5程序计数器程序计数器程序计数器为当前线程所执行的字节码的行号指示器,如果当前线程执行的是一个java方法,那么计数器记录的是正在执行的虚拟机字节码指令的地址,如果执行的是native方法,那么这个值就为空,此内存区域不会产生内存溢出问题j...原创 2019-04-01 21:45:21 · 283 阅读 · 0 评论 -
java垃圾收集器和内存分配
java垃圾收集器原创 2019-04-16 22:21:22 · 144 阅读 · 0 评论 -
java内存分配与垃圾回收策略
java内存分配java对象分配主要分配在堆上的新生代Eden区域,如果启动了本地线程分配缓存,将会优先分配在TLAB上,少数情况下将会分配在老年代中。对象优先在Eden分配:大多数情况下,会优先在Eden区域分配,当Eden区域不足时,虚拟机将会发起一次Minor GC老年代分配:大对象直接进入老年代...原创 2019-04-17 23:05:03 · 112 阅读 · 0 评论 -
数据结构-排序算法(一)
冒泡排序冒泡排序法:每次比较相连的两个数据,查看是否满足大小关系,如果不满足,则选择互换,重复n次,排序完成图解实例:代码实例:public class BubbleSort { public int [] sort(){ int[] a={5,1,3,2,4}; int lastExchangeIndex=0; int sor...原创 2019-05-10 19:07:50 · 128 阅读 · 0 评论 -
基于Netty的websocket client 和server
websocket简介websocket时h5时期提供的在单个TCP链接上进行全双工的通讯协议,使客户端和服务器端能够实时通信基于netty 的websocket server 端服务启动public class ServerMain { public static void main(String[] args) throws Exception{ ...原创 2018-07-27 10:23:38 · 23327 阅读 · 14 评论 -
java 注解- 入门篇
java 注解java 注解的作用当创建一个描述符性质的类或接口时,其中包含重复性的工作时,可以考虑使用注解来简化该过程。例如:spring中使用了大量注解来简化bean的转载和实例化过程java注解组成和定义元注解:元注解的作用是负责注解其他注解:简单的说就是负责其他注解说明,和给其他注解限制作用,java中定义的元注解有4种:@Target@Retentio...原创 2018-03-21 11:41:46 · 194 阅读 · 0 评论 -
servlet笔记--Response
servlet笔记–ResponseResponse响应行setStatus(int code) 设置响应状态码响应头 一个键对应一个值setDateHeader(String name,long date) 设置日期响应头setHeader(String name,String value) 设置key value 响应头setIntHeader(String name,int valu原创 2017-05-06 17:59:21 · 344 阅读 · 0 评论 -
SSM-maven-IntelliJ搭建
SSM-maven-IntelliJ搭建创建Maven项目 2.填写GroupID(就是该项目所在组的名字id)和ArtifactID(该项目的模块名) 3.下一步 4.填写项目名和项目地址 5.创建完成目录如下 6.java文件就在java文件夹下,将java 文件夹作为源码路径 7.maven项目完成增加对springMVC相关库的依赖1.在maven依赖文件pom.原创 2017-05-27 20:12:24 · 464 阅读 · 0 评论 -
spring 返回json数据
1.依赖阿里fastjson jar包 <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.7</version></dependency>2.在spring配置文件中配置fastjson支持: <mvc:annotation-driven>原创 2017-07-13 08:59:14 · 526 阅读 · 0 评论 -
spring框架模块
spring框架模块:1.core container(核心容器)2.DataAccess/Integration(数据访问/集成)3.web网络端4.AOP切片编程5.Instrumentation6.Messaging(消息)7.Test(测试)spring框架图核心容器A.核心容器包含了spring-core,spring-beans,-spring-context,spring-expres原创 2017-08-02 09:52:13 · 515 阅读 · 0 评论 -
HOMEJAVAJDK动态代理代理与Cglib代理原理探究
HOMEJAVAJDK动态代理代理与Cglib代理原理探究 JDK动态代理代理与Cglib代理原理探究 一、前言 Java中常见的代理有JDK代理和Cglib代理,无论是AOP实现还是mybaits动态生成数据库操作类无一不是通过代理来搞的,下面讲解下原理以及比较二、JDK代理 2.1 试验测试 接口类:public interface UserService {public ab转载 2017-08-06 14:26:59 · 261 阅读 · 0 评论 -
java jdk动态代理
java jdk动态代理为什么要使用动态代理:什么是代理:在设计模式中这样说的—–代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能代理分类:java代理总共分为三类:a.静态代理,b.java jdk动态代理,c.CGLib 动态代理静态代理 例:接口:IUserD原创 2017-10-14 17:39:23 · 290 阅读 · 0 评论 -
protobuf 和 intellij 配置使用
protobuf intellij 使用简介Protocol Buffer 简称 ProtoBuf 是用于结构化数据串行化的灵活、高效、自动的方法,又如 XML,不过它更小、更快、也更简单。你可以定义自己的数据结构,然后使用代码生成器生成的代码来读写这个数据结构。你甚至可以在无需重新部署程序的情况下更新数据结构安装intellij 安装 使用protobuf在intellij file-> set原创 2017-11-15 11:22:08 · 12659 阅读 · 2 评论 -
java多线程任务-ExecutorService
ExecutorService 使用原因使用原因:Executor框架使用Runnalbe作为其基本的任务表示形式,但是runnable并不能返回一个值或抛出一个异常,使用ExecutorService,提交一个携带结果的任务Callable Callable:该接口call方法将返回一个值,并可能抛出一个异常Future:在ExecutorService 中 所有submit方法将返回Fu原创 2018-01-13 19:44:28 · 237 阅读 · 0 评论 -
java多线程-CompletionService
compeltionService 使用原因:在并发任务时,如果需要获取并发任务执行后 返回结果,可以这样像ExecutorService提交Callable 任务,然后保留每个任务关联的Future对象,不断的轮询get方法,来获取结果,这是其中一种方法,不过java 提供了更好的api (compeltionService),来完成这些功能CompletionService :Com原创 2018-01-15 19:42:18 · 399 阅读 · 0 评论 -
关于java各种类型转化为无符号和类型转化为byte数组的方法
由于在java中所有的数据类型都是有符号的,但是在工作中与c进行通信是是无符号的,所以造成比如说java中int类型占4个字节,当服务器传过来的四个字节为无符号整型,这时就不能用int来表示了所以就要另想办法,而且需要把java中的类型转化为byte数组1.java中的无符号short类型转化为byte数组// short整型转为byte类型的数组 public static byte[]原创 2016-03-12 13:01:49 · 11610 阅读 · 1 评论