- 博客(27)
- 资源 (2)
- 收藏
- 关注
原创 TCP/IP 三次握手/四次挥手
TCP(Transmission Control Protocol)是面向连接的通信协议,通过三次握手建立连接, 然后才能开始数据的读写,通讯完成时要拆除连接,由于 TCP 是面向连接的所以只能用于端 到端的通讯。其提供面向有连接的通信传输。面向有连接是指在数据通信开始之前先做好两端之间 的准备工作。所谓三次握手是指建立一个 TCP 连接时需要客户端和服务器端总共发送三个包以确认 连接的建立。在 socket 编程中,这一过程由客户端执行 connect 来触发。TCP三次握手过程图:(面试点)
2020-10-31 15:03:48
205
原创 Java Web web.xml 根标签<web-app>浅析
web.xml 是 Java Web项目中常用的配置文件,用于配置 欢迎页、Servlet 以及 Filter 等。web.xml 的模式(Schema) 中定义的标签元素才能够使用。web.xml的模式文件是由Sun公司定义的,每个web.xml文件的根元素<web-app>中,都必须标明这个web.xml使用的是哪个模式文件。如下:<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://w
2020-07-17 15:45:02
2381
原创 如何停止线程?
Thread 方法中提供了几种方法能够使线程停止?1. stop() 方法; 2. 线程抛出异常方法 stop() 抛出异常 interrupt return 线程是否停止 停止 停止 锁释放 立即释放 立即释放 使用建议 不建议使用 不建议使用 一一举例:1. stop()方法,会立即停止线程,并且释放掉线程持有的锁。使用不当会造成数据异常,该方法已被废弃,...
2020-05-30 17:52:02
1106
原创 Java开发环境初始化
这里整理了一份Java开发的环境配置,方便自己也方便部分初学者借鉴:开发集成工具 Intellij IDEA+ 项目管理工具 Maven + java环境 JDK8 + 代码版本控制 Git下载地址:Intellij IDEA:https://www.jetbrains.com/idea/ (收费,不过可以从网上搜激活码:))Maven:http://maven.apache...
2019-04-09 23:09:50
387
原创 第二章、(4)静态synchronized方法与synchronized(class)代码块
1. 前面几篇介绍了 synchronized方法、synchronized(this)代码块 两种线程同步。关键字 synchronized 还可以应用在 static 静态方法上,表示对当前的 *.java 文件对应的 Class 类进行持锁。 问题:Class类锁 和 object对象锁 是不是同一个锁?如果不是,有什么区别? 静态synchronized方法获得Cla...
2018-11-14 11:15:31
249
原创 Java 位运算符 位与,位或,位非,位异或,右移,左移
今天看代码遇到位运算符,因为不常用已经忘记了,所以复习一下。Java位运算符包括:位与'&',位或'|',位非'~',位异或'^',右移'>>',左移'<<',右移'>>>' 。 位运算是以二进制位为单位进行的运算,其操作数和运算结果都是整型值。运算需要用到一些二进制知识,稍微回顾一下。这里有一篇介绍二进制、原码、反码和补码的文章...
2018-10-11 16:30:03
560
原创 第二章、(3)synchronized 同步代码块
摘要:一、synchronized 代码块中的代码是同步执行,A线程执行完才轮到B线程;不在synchronized代码块中则是异步执行。二、synchronized(this) 和 synchronized 方法一样,锁定的是当前对象。也就是说:当多个线程同时访问 同一个 object对象的synchronized(this) 方法时,改object 对象中其他synchronized(...
2018-08-02 16:56:54
3111
原创 CDN工作机制和负载均衡概述
1. CDN架构 CDN(Content Delivery Network),内容分发网络,是构筑在Internet上的一种先进的流量分配网络。通过在现有的Internet中增加一层新的网络架构,使用户可以就近取得所需内容,提高用户访问网站的响应速度。 目前CDN都以缓存网站中的静态数据为主,如 CSS、JS、图片和静态页面等数据。通常来说CDN要达到以下几个目标: a. 可扩展...
2018-06-14 17:06:59
7626
5
原创 DNS域名解析
1. DNS域名解析过程 用户在浏览器输入 URL 地址后: 1. 浏览器检查缓存中是否存在这个域名对应的解析过的IP地址,如果有,则解析结束。(浏览器缓存大小有限制、域名被缓存的时间也可以通过TTL属性来设置) 2. 若浏览器缓存中没有,浏览器会查找操作系统缓存中是否存在该域名对应的DNS解析结果。Windows中可以通过 C:\Windows\System32\driv...
2018-06-13 17:24:02
316
原创 HTTP请求解析、浏览器缓存机制
1. 浏览器如何发起一个HTTP请求? 浏览器在建立Socket连接之前,必须根据地址栏输入的 URL 的域名 DNS 解析出IP地址,再根据 IP 地址和默认的80端口与远程服务器建立 Socket,然后浏览器根据这个 URL 组装成一个 get 类型的 HTTP 请求,通过 outputStream.write 发送到目标服务器,服务器等待 inputStream.read 返回数据,最...
2018-06-13 10:51:11
1580
原创 B/S网络架构概述、CDN
1. B/S 客户端使用同一的浏览器(Browser),浏览器具有统一性,不需要特殊的配置和网络连接。服务端(Server)和Browser都基于统一的应用层协议HTTP来交互数据,使得服务器开发者可以采用相对规范的开发模式,节省开发成本。 HTTP采用无状态的短连接的通信方式,通常情况下,一次请求就完成了一次数据交互。采用这种方式是为了能同时服务更多的用户。2. CDN架构(Cont...
2018-06-04 16:49:51
1634
原创 Java Exception的日志输出
最近项目中使用多线程,需要将catch到的 Exception 与其他日志信息一起输出,否则日志会比较杂乱不太好准确定位。那么Java Exception到底有哪些信息呢? Exception 中的方法都是继承 Throwable 类的方法 一般catch到Exception,我们会直接用 e.printStackTrace() 方法输出exception 的完整堆栈信息。但...
2018-04-16 11:21:39
17999
1
原创 第二章、(1)synchronized 锁重入、子类可调用父类同步方法、异常自动释放锁、同步方法不可继承
摘要:一、当线程A调用对象Object 的synchronized 方法 X 时,A线程获得了 X 的方法锁,更准确的说是 对象Object锁。所以其他线程想要再执行 X 方法必须等线程A执行完X方法。但是其他线程可以调用对象Object中的其他 非synchronized 同步方法。(从而形成脏读)二、synchronized 锁重入:当一个线程得到一个对象锁后,再次请求此对象锁时是可以...
2017-09-25 10:24:33
669
原创 第二章、(2)方法内变量线程安全、synchronized 对象锁、synchronized方法和非synchronized方法可异步调用
synchronized 同步方法:(摘要)一、方法内的私有变量不存在"非线程安全"问题,实例变量如果在被多个线程访问时,可能出现"线程安全"问题。二、使用 synchronized 关键字申明方法,访问该方法的线程获得的是对象锁(该方法所属对象的锁)。哪个线程先执行带synchronized关键字的方法,哪个线程就持有该方法所属对象的锁Lock,那么其他线程只能呈等待状态,前提是多个线程...
2017-09-06 15:34:54
562
原创 多线程基础四(二)、能停止的线程(异常法、sleep、return、interrupt、stop)
停止线程,interrupt(),interrupted,isInterrupted,sleep() + interrupt(), sleep() +throw Exception, stop, return + interrupt()
2017-08-23 10:12:21
475
原创 多线程基础四(一)、停止不了的线程(interrupted、isInterrupted)
interrupt() 方法, interrupted() 方法、isInterrupted() 方法
2017-08-21 10:23:14
513
原创 多线程基础二、currentThread()、isAlive()、sleep()、getId()
currentThread()、isAlive()、sleep()、getId() 方法介绍
2017-08-15 16:29:34
775
原创 Git 工作环境初始化
1. 下载 Git : https://git-scm.com/downloads2. 选择一个目录安装 Git,安装完成后打开 cmd命令窗口。输入名利 git --version 检查是否安装成功3. git config --global user.name "xxx" # 配置用户名(公司会给你配好,我使用的是 GitHub 用户名)4. git config -...
2017-08-12 15:59:10
563
原创 Git 命令
git init # 初始化本地git仓库(创建新仓库)git config --global user.name "xxx" # 配置用户名git config --global user.e
2017-08-12 12:12:55
198
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人