无标题
WebSocket(ing)WebSocket协议 WebSocket (握手+ 数据传输)是一种网络通信协议,是HTML5 开始提供的一种在单个TCP连接上进行全双工通讯的协议。 Http协议 HTTP 协议是一种无状态的、无连接的、单向的应用层协议。它采用请求/响应模型。通信请求只能由客户端发起,服务端对请求做出应答处理。 HTTP协议无法实现服务器主动向客户端发起消息。 图源:https://i-blog.csdnimg.cn/blog_migrate/e9d04aff4ce28cff02cc86bb76e48271.png
Servlet小结
Servlet小结视频链接:黑马servlet视频全套视频教程,快速入门servlet原理+servlet实战 什么是Servlet? 菜鸟教程:Java Servlet servlet: server applet Servlet是一个运行在Web服务器(如Tomcat、Jetty)或应用服务器(如WebLogic、WildFly)中的Java类,用于扩展服务器功能,通过请求-响应模型与客户端交互(如浏览器)。 它实现了javax.servlet.Servlet接口或继承HttpServlet类,处理HTTP请求(GET、POST等)并生成动态响应(HTML、JSON、图片等)。 与JSP(JavaServer Pages)结合使用时,Servlet负责业务逻辑处理,JSP负责页面渲染。 Servlet其实就是一个接口,它定义了Java类被浏览器访问到(tomcat识别到)的规则,只要实现了这个接口的Java类就是一个Servlet 快速入门1.创建项目 2.编写Servlet类2.1 实现Servlet接口1public class ServletDemo1...
若依项目部署小结
环境搭建虚拟机环境:jdk1.8 + tomcat9 + nginx A :虚拟机A运行前端项目 A B:虚拟机B运行war包 B C:虚拟机C运行jar包 C mysql和redis连的是C主机 前端项目部署必备:nginx环境 + 打包好的dist文件夹 1.前端打包命令: 在当前前端项目的根目录 12npm i # 下载依赖npm run build # 打包 结束会生成一个dist文件夹 2.nginx部署 修改conf文件夹下的nginx.conf文件 1234567891011121314151617181920212223server { listen 8080; server_name localhost; # 前端静态文件配置 : dist目录 location / { root /usr/local/program/ruoyi-ui/dist; index index.html index.htm; ...
CentOS 7环境搭建
CentOS 7环境搭建我的基础环境: CentOS版本:CentOS Linux release 7.7.1908 (Core) Vmware版本:VMware® Workstation 17 Pro 17.5.0 build-22583795 注意: 所有有关防火墙的操作都可以不开端口,但是我为了测试方便我就开了端口号,便于后续本地测试,这个自行选择。 我所有的安装指令都是在root用户权限下执行的。 参考:软件安装 | CodeSheep 如有错误,欢迎指正! 1.验证网络连通性12ping 8.8.8.8ping www.baidu.com 连不通的,去修改一下/etc/resolv.conf下的dns配置 12345# /etc/resolv.confnameserver 223.5.5.5 # 阿里云主DNSnameserver 223.6.6.6 # 阿里云备DNSnameserver 114.114.114.114 # 114公共DNS(备用)nameserver 8.8.8.8 #...
最短路问题
学习思路(yxc总结): 一. 朴素Dijkstra算法 (稠密图)****<邻接矩阵>算法思路: 更新过程:acwing849. Dijkstra求最短路 I 此题思路(分解版): 1.读入的同时需要更新边权 1g[a][b] = min(g[a][b], c);//g[][]存放的为最小边权 2.Dijkstra算法 (核心步骤),循环思路对应朴素Dijkstra算法的第二步 123456789101112for (int i = 0; i < n; i ++ )//循环每一个点{ int t = -1;//初始化 for (int j = 1; j <= n; j ++ ) if (!st[j] && (t == -1 || d[t] > d[j]))//没有确定最短距离的点 + 没有更新过t/距离更近的点 t = j; st[t] = true;//标记t这个点已确定最短距离 ...
Java虚拟机
JVM的概念百度百科:java虚拟机 什么是虚拟机?虚拟机是一种抽象化的计算机,通过在实际的计算机上仿真模拟各种计算机功能来实现的。 为什么要有JVM? Java设计的初衷是使要建的能在任何平台上运行的程序不需要再在每个单独的平台上由程序员进行重写或重编译。 Java虚拟机使这个愿望变为可能,因为它能知道每条指令的长度和平台的其他特性。 JVM的设计目标是提供一个基于抽象规格描述的计算机模型,为解释程序开发人员提供的任何系统上运行。 什么是java虚拟机?JVM全称Java Virtual...
基础算法
快速排序图解分析: 模板:12345678910111213141516171819202122//核心思想:分而治之//函数参数:(需要处理的数组, 数组的左边界, 数组的右边界)//函数:使得左边小于x, 右边大于x void quick_sort(int q[], int l, int r){ //递归出口 if (l >= r) return; //运用双指针,左指针指向的数小于x, 右指针指向的数大于x int x = (q[l] + q[r]) / 2; int i = l - 1, j = r + 1; while (i < j) { do i ++; while(q[i] < x); do j --; while(q[j] > x); if (i < j) swap(q[i], q[j]); } //递归处理左右子区间 quick_sort(q, l, j); ...
Java并发编程4(JUC篇)
本篇文章重点介绍JUC(java.util.concurrent) JUC是”java.util.concurrent”包的简称,它是Java提供的一个并发工具包,旨在简化多线程编程,提供了丰富的类和接口来帮助开发者更高效、更安全地编写并发程序。JUC包增强了Java对并发的支持,解决了传统多线程编程中的一些难题,如死锁、竞争条件和资源管理等。 原子变量 基本类型原子变量 AtomicInteger 提供对整型值的原子操作,如加法、减法等。 方法示例:incrementAndGet(), decrementAndGet(), addAndGet(int delta), compareAndSet(int expect, int update)。 AtomicLong 类似于AtomicInteger,但是针对长整型(long)值。 方法与AtomicInteger相似,适用于需要处理较大数值的情况。 AtomicBoolean 支持布尔类型的原子操作。 方法示例:get(), set(boolean newValue),...
Java并发编程3(CAS)
Java内存模型(JMM)概念百度百科:java内存模型_百度百科 Java内存模型(Java Memory Model,...
Java并发编程2(锁-Sychronized)
认识Java对象头 32位虚拟机对象头: 64位虚拟机对象头: 1.Mark Word(标记字): Mark Word是对象头的一部分,用于存储对象自身的哈希码、GC分代年龄、锁状态标志、线程持有的锁、偏向线程ID(或偏向时间戳)、偏向模式以及锁的状态等信息。 标记字的大小和具体内容可能因JVM实现的不同而有所变化。例如,在64位JVM上,默认情况下Mark Word占用64位(8字节),而在32位JVM上则是32位(4字节)。 2.Class Pointer(类指针): 这是指向该对象对应类(Class)的指针,通过这个指针可以访问到对象所属类的元数据(如方法表、字段描述等)。类指针的大小依赖于JVM的具体实现及其是否开启了压缩指针(Compressed Oop)选项。 在某些情况下,比如当使用了-XX:+UseCompressedClassPointers选项时,类指针会被压缩以节省内存。 3.Array...