- 博客(15)
- 收藏
- 关注
原创 多线程学习笔记-并发包
多线程学习笔记-并发包 并发包 计数器-CountDownLatch CountDownLatch 类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了。CountDownLatch是通过一个计数器来实现的,计数器的初始值为线程的数量。每当一个线...
2018-12-28 15:52:25
289
原创 【Tomcat8.5源码分析】【3】一个简单的HTTP服务器
通过上面两篇文章的学习,我们知道了HTTP\SOCK\TCP\IP之间的关系以及区别,接下来我们手写一个HTTP服务器 首先我们定义一个HttpServer类,该类主要用以创建一个ServerSocket,当有请求进入的时候会通过accept()方法生成一个套接字-Socket对象,然后通过Socket对象的输入输出流进行读取请求数据,并返回请求结果。封装的输入流对象为Re...
2018-11-12 23:47:05
298
原创 【Tomcat8.5源码分析】【2】TCP\IP、SOCKET、HTTP的区别联系
【2】TCP\IP、SOCKET、HTTP区别 网络七层协议,层上而下分为: 【物理层】 物理层规范是有关传输介质的特这些规范通常也参考了其他组织制定的标准。连接头、帧、帧的使用、电流、编码及光调制等都属于各种物理层规范中的内容。物理层常用多个规范完成对所有细节的定义。示例:Rj45,802.3等。 【数据链路层】 它定义了在单个链路上如何传输数据。这些协议与被讨论的各种介质有关。示例:ATM,F...
2018-11-12 23:11:33
513
原创 【Tomcat8.5源码分析】【1】导入源码到intellij
1、访问地址http://tomcat.apache.org/ 2、找到页面Download->Tomcat 8 Binary Distributions 这个是编译后的程序,如果需要直接运行Tomcat可以下载这里的,直接运行。 Source Code Distributions 这个是源码文件,由于我们是需要分析Tomcat源码,所以我们选择这里的.zip文件  3、下载完毕后解压...
2018-09-28 11:12:38
830
原创 spring容器启动时扫描指定的包下面的class
思路: 实现BeanFactoryPostProcessor接口、ResourceLoaderAware接口。 在实现类中定义MetadataReaderFactory、ResourcePatternResolver变量。 在ResourceLoaderAware接口的setResourceLoader方法中使用SimpleMetadataReaderFactory和ResourcePatt...
2018-09-21 14:26:37
2228
转载 INTELLIJ IDEA常用配置
刚刚使用IntelliJ IDEA 编辑器的时候,会有很多设置,会方便以后的开发,磨刀不误砍柴工。 比如:设置文件字体大小,代码自动完成提示,版本管理,本地代码历史,自动导入包,修改注释,修改tab的显示的数量和行数,打开项目方式,等等一大堆东西。 总结一下,免得下次换了系统,还得再找一遍配置。 具体总结如下图: 设置外观和字体大小 这个呢是设置一下外观。和字体大小。放在第一个没问题。 ...
2018-09-20 15:57:48
160
转载 一位程序员的十年工作总结
展望未来,总结过去10年的程序员生涯,给程序员小弟弟小妹妹们的一些总结性忠告 走过的路,回忆起来是那么曲折,把自己的一些心得体会分享给程序员兄弟姐妹们,虽然时代在变化,但是很可能你也会走我已经做过的10年的路程,有些心得体会你可以借鉴一下,觉得说得有道理的你就接纳,觉得说得没道理的,你就抛弃,以下是我发自内心的,给大家的忠告,特别是针对那些小弟弟妹妹们。 ...
2018-07-30 15:55:51
831
2
原创 SpringCloudConfig使用总结【分布式配置】
一:开发前准备: 1、搭建ZK 启动命令:zkServer.sh start 2、搭建Kafka或rabbitmq kafka启动命令:bin/kafka-server-start.sh config/server.properties & 3、搭建git,这里直接用了gith
2017-12-11 19:24:17
664
原创 6、netty http协议开发应用(netty学习笔记)
1、Netty http服务端入门 1.1http文件服务器。 package com.play.netty.http.fileserver; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelInitiali
2017-09-25 17:24:21
470
原创 5、netty-java序列化(netty学习笔记)
一:java序列化的缺点 1、无法跨语言。 2、序列化后的码流太大。 3、序列化性能提低。 Netty 对Pojo对象序列化. Model package com.play.netty.serializable.model; import java.io.Serializable; /** * Created by I
2017-09-25 17:20:41
304
原创 4、netty之解决tcp粘包问题(netty学习笔记)
解决这个问题netty主要用到了: 1、LineBasedFrameDecoder 换行符解码器 2、DelimiterBasedFrameDecoder 自定义解析符解码器 3、FixedLengthFrameDecoder 定长报文解码器 4、StringDecoder TimeClient package com.play.netty.tim
2017-09-25 17:17:21
389
原创 3、netty 之HelloWorld(netty学习笔记)
HelloWorld 客户端 package com.play.netty.timeserver.client; import io.netty.bootstrap.Bootstrap; import io.netty.channel.ChannelFuture; import io.netty.channel.ChannelInitializer; import io.n
2017-09-25 17:13:59
209
原创 2、NIO客户端和服务端示例代码(netty学习笔记)
MultiplexerTimerServerpackage niostudy; import java.io.IOException; import java.net.InetSocketAddress; import java.nio.ByteBuffer; import java.nio.channels.SelectionKey; import java.nio.channels.Sele
2017-09-25 17:12:58
263
原创 1、传统BIO编程示例及缺点分析(netty-学习笔记)
缺点分析: BIO主要问题在于每当有一个新客户端请求接入,服务端都会创建一个新的线程,无法满足高性能、高并发场景。 示例源码: TimeServer.java: package com.study.netty.server; import com.study.netty.handler.TimeServerHandler; im
2017-09-25 16:48:17
588
转载 tcp粘包问题
为什么会产生粘包问题呢???‘ 1, 从数据发送的过程中,经过那些步骤来看: 应用层首先要将自己的数据通过套接字发送,首先要调用一个write方法:(将应用进程缓冲区中的数据拷贝到套接口发送缓冲区SO_SNDBUF,有一个大小的限制),如果应用进程缓冲区的一条消息的字节的大小超过了发送缓冲区的大小,就有可能产生粘包问题,因为消息已经被分割了,有可能一部分已经被发送出去了,对方已经接受了,但是另
2017-09-25 16:45:25
267
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅