Java Web
文章平均质量分 90
我要敲代码6400
这个作者很懒,什么都没留下…
展开
-
[网络] 带你了解HTTP到底是什么
HTTP协议是一种它是从WEB服务器传输超文本标记语言(HTML)到本地浏览器的传送协议。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。我们平时输入 URL 来进行搜索的时候,一般开头就会有 http 或者 https。常见的HTTP(超文本传输协议,默认端口80)、HTTPS(默认端口443)、SMTP(传邮件.默认端口25)、FTP(传文件,默认端口21)、Telnet(远程登录,默认端口23)原创 2022-09-08 16:42:50 · 3245 阅读 · 6 评论 -
手动写一个搜索引擎(超详细)
搜索引擎是现代设备中被广泛利用的一种系统软件,诸如百度、谷歌、搜索、bing等,或者抖音、快手、b站、小红书,甚至软件应用市场,Windows(操作系统)中的各类提供搜索功能的背后都有搜索引擎的影子。原创 2022-08-20 19:56:28 · 7793 阅读 · 22 评论 -
自己写一个调查问卷Web项目 (超详细版)
项目介绍:发起问卷,管理问卷信息,把问卷结果通过可视化方式呈现出来使用技术:Servlet、MySQL、Apache Echarts项目功能:1.从数据库读取实现用户登录功能;使用Session,完成对用户登录的校验。2.数据库实现多表之间的关联关系。3.对题目和问卷的管理实现了分页的功能,题目和问卷实现了精确绑定。4.调查结果利用Apache Echarts 进行可视化展示,便于分析数据。...............原创 2022-08-02 00:00:17 · 3997 阅读 · 4 评论 -
[网络] IP协议——网络层
IP地址是 IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异IPV4 :32 位无符号整数 IPV6:128 位无符号整数点分发表示 192.168.3.154 < - > 32无符号整数 C0 A8 03 9AIP地址,存在网络号和主机号网络号:标注出主机所在网络主机号:标注出主机在网络是多少编号 192.168.3.154 ——> C类地址A类地址的网络中,一个子网,最多有多少台主机? 2^24这样的划分方式很导致大量的IP地址浪费原创 2022-07-09 16:44:23 · 1449 阅读 · 0 评论 -
[网络] TCP 协议的相关特性——传输层
ServerSocket socket 给服务器去使用Socket 通信线路的 socketInputStream is = getInputStream() OutputStream os = getOutputStream() 获取输入输出传输层TCP 传输控制协议职责:进程 to 进程 保证可靠性方法:确认(acknowledge)应答TCP给所有的数据编号,这样就知道哪些数据收到了,哪些没收到1)给应用层做编号 2)每个字节占用一个序号【a b c d】 1原创 2022-07-06 14:51:46 · 360 阅读 · 1 评论 -
[网络]UDP 的报文结构和注意事项——传输层
DatagramSocket(UDP 的 socket)DatagramPacket(UDP 的发送的报文)UDP:面向数据报文 发送方发送的数据,会被原封不动的,传递给接收方期间是不会做数据的拼接和拆分的 保证[abc][defg] 立即发送.........原创 2022-05-25 19:44:31 · 354 阅读 · 1 评论 -
[Java Web] 网络原理基础知识
1.理解网络纯硬件角度:网卡(network interface)数据的发送:首先需要填充数据,然后经过把数字信号转化为物理信号后,把数据发送出去。数据的接收:先接受数据,中断通知有数据到达了,数据复制2.数据在我们主机内部是怎么被处理的(发送、接收)进程控制的内存 -> 网卡网络分层:学院派:OSI 7层实际派:TCP/IP 5层:应用层、传输层、网络层、数据链路层、物理层3.局域网(Local Area Network LAN)国家 省 市集线原创 2022-05-14 15:44:44 · 409 阅读 · 1 评论 -
[Java Web]想学会线程?看这里
内存管理:空间上划分【内核使用的内存】【分配给普通进程使用的内存】【空闲空间】【进程A】【进程B】 空间划分不保证是连续的2.线性地址(虚拟地址) VS 物理地址物理地址:真实的内存中的地址线性地址:物理地址被操作系统进行转换后的一个地址进程间通信理论上进程间是独立的,但实际中,往往是多个进程之间互相配合,来完成复杂的工作。比如:通过 workbench 进程 和 mysql 服务器进程进行通信,来实现数据的增删查改。因此就有了进程之间交换数据的必要性了当下问题:OS 进行资源分配原创 2022-04-25 14:27:25 · 240 阅读 · 0 评论 -
[Java Web]线程之间的数据共享——线程通信
1.线程通信大部分场景下,几个线程之间是需要协调配合工作,一起完成一个总目标的。协调配合工作就需要线程之间进行数据交换。由于我们的线程都属于同一个进程,所以,共同享有 OS 分配过来的同样的资源(其中优先关注 内存资源)2.JVM 下的内存区域划分PC 保护区(PC) 栈:虚拟机栈、本地方法栈 堆 方法区 运行时常量池这些资源是属于进程的,理论上来讲,却是这个进程下的所有线程的。这些内存,在线程中还会分配一次。堆、方法区、运行时常量池是整个进程(JVM)只有一份。对原创 2022-04-25 15:03:14 · 375 阅读 · 0 评论 -
【Java Web]文件内容部分的操作
目录一、文件的读1.方法2.代码(1)一个字节一个字节的读取(2)一次读一堆(3)文件内容中有中文二、文件的写1.方法2.代码(1) 一个字节一个字节的写(2)一堆的写3.应用(1)文件复制工具(2)目录复制工具(3)文本替换工具一、文件的读InputStream 输入流 可以想象一个水龙头在滴水 数据从水龙头中流出的这样一个过程1.方法方法 说明 abstract int read() ...原创 2022-05-11 19:35:22 · 187 阅读 · 0 评论 -
[Java Web]线程安全(Thread Safe)
1.线程安全线程不安全:单看代码“没有问题”的情况下,但结果是错误的(无法 100% 得到预期结果)线程安全:代码的运行结果应该是 100% 符合预期2.线程不安全现象出现的原因1.站在开发者的角度1)多个线程之间操作同一块数据了(共享数据)——不仅仅是内存数据2)至少有一个线程在修改这块儿共享数据多个线程中至少有一个对共享数据做修改(写)操作即使在多线程的代码中,哪些情况下不需要考虑线程安全问题?1.几个线程之间互相没有任何数据共享的情况下,天生是线程安全的2.几原创 2022-04-28 21:20:48 · 813 阅读 · 0 评论 -
[Java Web] 文件操作——IO
1.什么是 I/O?I/O计算机硬件视角下,非内存数据的读写动作。这里主要介绍 文件(硬盘)I/OSystem.in、System.out、System.err 都是我们接触到的I/O2.文件概念狭义上的文件(File):一种抽象的概念,表示硬盘中的数据块变量、对象是对内存中数据的抽象。 文件是对硬盘中数据的抽象文件系统(FileSystem):对硬盘上的数据——文件进行直接组织和管理的一个模块3.硬盘存储 VS 内存存储(1)硬盘存储特点:非易失性存储:可以在断电的原创 2022-05-10 20:35:51 · 294 阅读 · 1 评论 -
[Java Web]关于各种各样的锁
1.读锁(共享锁)VS 写锁(独占锁)Shared Lock(S锁) eXclusive Lock(X锁)我们目前使用的锁都是独占锁(只有一个线程持有锁)非公平锁实现简单(默认)公平锁实现复杂公平锁:严格按照请求锁的次序获取到锁synchronized 锁是不公平锁lock 中 通过传入fair = true/false 来控制是否是公平的互斥锁的方案:放弃 CPU... 引发线程调度。计算机只有一个核时的解决思路:早让持有锁的线程释放锁。自旋锁的方案:for(int i = 0;i <原创 2022-05-09 16:05:33 · 343 阅读 · 0 评论 -
[Java Web]线程安全——volatile机制 阻塞队列
volatile:修饰变量,被 volatile 修饰的变量,变量容易变化。不会在工作内存中缓存这些变量从主内存读取,立即写回主内存1.volatile 的三个作用:1.保护内存可见性volatile 可以保护这些变量的内存可见性问题import java.util.concurrent.TimeUnit;public class Main { static boolean quit = false; static class MyThread ex原创 2022-05-05 09:26:57 · 524 阅读 · 0 评论 -
[Java Web]定时器(Timer) 线程池
使用 Timer// 使用定时器public class UseTimer { public static void main(String[] args) { // 一个定时器 + n 个定时器要去执行的任务 Timer timer = new Timer(); // 闹钟 // 继承 TimerTask(抽象类) // 执行的是 task.run() 方法 TimerTask task = new Ti原创 2022-05-09 10:18:36 · 902 阅读 · 0 评论