- 博客(47)
- 收藏
- 关注
原创 耦合和内聚
描述的是一个模块(或类)对另一个模块的。:模块之间依赖很多,牵一发而动全身:模块之间依赖很少,改一个不会影响其他Controller → Service 接口 → 实现类。
2025-06-06 16:18:20
187
原创 数据库:事务
A给B转2000块钱,在转账过程中,A的账户扣除2000块钱,此时突然断网或数据库挂了,B的账号没有增加2000块钱。把所有sql语句打包成一个整体来执行,原子性,要么全部成功,要么全部失败;不同环境都有事务,在数据库中也有数据库事务。1.开启事务: start transaction2.执行多条SQL语句3.回滚或提交:rollback(全部失败)/commit(全部成功)采用日志的方式,记录事务中的关键操作,回滚是找找记录就行。通过回滚的方式,保证这一系列操作都能执行正确或者恢复如初。
2025-06-06 15:56:47
374
原创 JavaEE->多线程:定时器
约定一个时间,时间到了,执行某个代码逻辑(进行网络通信时常见)客户端给服务器发送请求 之后就需要等待 服务器的响应,客户端不可能无限的等,需要一个最大的期限。这里“等待的最大时间”可以用定时器的方式实现。
2025-06-03 17:07:01
588
原创 javaEE->IO:
/扫描指定目录,并找到名称中包含指定字符的所有普通文件(不包含目录),并且后续询问用户是否要删除该文件。如果文件是utf8编码,文件中的每个数据都是合法的utf8编码的字符,就可以认为是文本文件。大部分谈到的文件,都是指 硬盘的文件,文件就相当于是针对“硬盘”数据的一种抽象。2.二进制:文件中保存的数据,仅仅是二进制字符,不要求保存的内容是合法字符。1.字节流(对应着二进制文件):每次读/写的最小单位,都是“字节”。1.文本:文件中保存的数据,都是字符串,保存内容都是合法字符。
2025-06-02 11:09:43
858
原创 用servlet写的博客系统
设计好对应的表结构,把数据库相关的代码封装起来。a)找到实体:博客(blog表)用户(user表)b)确认实体之间的关系一对多一个博客属于一个用户,一个用户可以发多个博客。
2025-06-02 11:09:18
833
原创 开发的几种格式,TCP的十个重要机制
自定义协议中,我们有几种常见的数据格式:1.xml通过标签来组织数据请求:优势:让数据的可读性变更好了劣势:标签非常繁琐,传输的时候也占用更多网络带宽(maven会使用xml来管理项目配置)HTML是xml的变种2.json(最流行的数据格式)通过{}把所有的键值对包裹起来,键值对之间用,分割;键和值之间用:分割键固定是String类型,有时候大多可以把key的引号省略值可以是数字,字符串,json,数组。。。
2025-06-02 11:08:58
1035
原创 HTTP和HTTPS
大规模使用的版本是HTTP/1.1使用HTTP协议的场景:1.浏览器打开网站(基本上)---》网页和后台服务器的交互2.手机APP访问对应的服务器(大概率)----》app和后台服务器的交互HTTP协议的报文格式1.请求2.响应HTTP协议是一种”一问一答“结构模型的协议一问一答(访问网站)多问一答(上传文件)一问一答(下载文件)多问多答(串流/远程桌面)如何查看到HTTP请求和响应的格式?抓包工具:把网卡上经过的数据获取到并显示出来Fiddler(专门抓HTTP的)
2025-06-02 11:08:37
1856
1
原创 SpringMVC的注解
参数请求不分先后后端接收到需求:1)需求评审2)开发 :a.接口定义 b.开发 c.自测(开发人员进行测试,和测试人员无关)3)联调:后端和前端联调4)提测: 测试人员工作5)上线6)下线接口定义:两个原则1.看我需要什么(请求参数)2.看对方需要什么(响应结果)此处的接口表示API(客户端和服务端的约定)服务提供方:1.提供什么服务2.提供服务时,需要什么参数3.处理之后,需要给对方什么响应客户端角度:1.我需要什么服务2.服务端要求的参数,我是否有。
2025-06-02 11:08:10
1408
原创 Linux:将写的博客系统部署到云服务器
Linux系统的使用:当前写的博客系统程序,只是部署到自己电脑上,其他用户无法访问到。由于NAT机制的存在,IP地址被分为了内网IP和外网IP外网IP,云武器厂商提供的一些机器不同的局域网之间可以重复。云服务器是Linux系统,使用命令行操作。Linux不仅仅使用在服务器领域,也用于嵌入式设备和移动端设备。嵌入式设备:冰箱,洗衣机 ---》可以用来刷短视频移动端设备: 安卓系统也是基于Linux发展而来的桌面端(PC)主流的系统依然是Windows。
2025-06-02 11:07:26
754
原创 javaEE->多线程:线程池
约定一个时间,时间到了,执行某个代码逻辑(进行网络通信时常见)客户端给服务器发送请求 之后就需要等待 服务器的响应,客户端不可能无限的等,需要一个最大的期限。这里“等待的最大时间”可以用定时器的方式实现。
2025-06-01 21:51:46
542
原创 JavaEE: wait和notify
join(),哪个线程调用这个方法,哪个线程就堵塞wait和notify都是Object的方法,随便定义一个对象都可以使用。
2025-06-01 18:01:09
641
原创 JavaEE的学习:进程与线程
多进程实现并发编程的缺点:**创建/销毁/调度** 一个进程消耗时间都比较多创建的时候:消耗在申请资源上,进程是资源分配的基本单位**分配内存操作是一个大活:**操作系统内部有一定的**数据结构**,把空闲的内存分块管理好。当我们去进行申请内存的时候,系统就会从这样的数据结构中找到一个大小合适的空闲内存,返回给对应的进程。虽然通过数据结构可以一定程度上提高效率,但管理的空间多了,也比较耗时。# 线程:轻量级创建/销毁/调度线程 比进程都要更快。
2025-05-29 18:48:49
468
原创 区块链geth的创建,通过truffle把合约部署到geth上,多个节点的同步----ubuntu
得用梯子将编译好的geth复制到系统环境中测试geth是否安装成功编辑创世块 genesis.jsongenesis.json 中config里面的参数需要完整,启动geth后查看eth.chainId(),看是否与config中的一致Geth区块链初始化启动Geth私链networkid要与genesis.json文件里的chainId保持一致参数说明可以将geth启动命令写进一个shell脚本中,方便启动geth或者修改启动参数geth的基础使用。
2025-03-27 16:35:33
50
原创 区块链地方大师傅十分士大夫大师傅
Hyperledger Fabric 的账本包括两个组件:“世界状态”和“区块链”。每个参与者都拥有他们所属的每个Hyperledger Fabric网络的账本副本。世界状态是一个数据库,它存储了一组账本状态的当前值。通过世界状态,程序可以直接访问一个账本状态的当前值,不需要遍历整个交易日志来计算当前值。区块链是交易日志,它记录了促成当前世界状态的所有改变。旨在呈现一组账本状态的当前值,同时记录下促成了以上账本状态的交易的历史。一个状态(银行余额)和一组促成该状态的有序交易(收入和支出)
2025-03-18 13:43:45
119
原创 网络篇:网络编程
通过网络,两个主机之间能够进行通信,通信之后就可以完成一些功能。操作系统提供了api(应用层和传输层之间交互的路径),通过socket(插座,插上就可以通信了) api可以完成不同主机之间,不同系统之间的网络通信。
2024-10-15 09:16:00
648
原创 网络篇:网络初识
一开始网络就像计算机一样是军用,后面民用。A对B进行导弹打击,为啥B能进行还手?1)下达了还手的决策:提前约定好,越发什么情况就自动还手2)导弹发射井完好:部署很多导弹发射井在不同位置,第一时间不会全部摧毁掉,还有一种会跑的发射井(核潜艇)3)还手的指令能正确传达到发射井:导弹会对网络通信造成打击,在互联网体系下,还是能够正确传达游戏的发展局域网:把几个电脑通过路由器连到一起广域网:把更多的局域网连到一起,可以覆盖一个城市/国家/全世界交换机:扩展路由器的端口。
2024-10-12 11:11:20
675
原创 Cookie和Session
Cookie :http请求header中的一个属性浏览器持久化存储数据的一种机制网页无法访问主机的文件系统,要想存储数据就得通过其他方式。Cookie中保存的数据,也是键值对的格式(用户自定义),最后也是需要把键值对发给服务器(服务器会使用Cookie完成一些业务逻辑)。用Cookie存储当前用户的身份信息Cookie是客户端存储数据的机制:存储用户的身份标识(sessionId).
2024-10-11 10:43:40
428
原创 简单servlet项目:表白墙
当前页面已经可以实现把输入的数据进行提交的效果但是这里的数据都只是在浏览器的内存中保存的,刷新页面/关闭页面就没了。于是我们就需要引入服务器(后端代码)
2024-10-09 10:58:38
215
原创 创建一个servlet项目
servlet这个api是Tomcat提供的,不是jdk提供的。不是jdk自带的都需要手动安装引入。1)打开maven中央仓库(第三方库),找到servlet的jar包servlet的版本要和Tomcat的版本匹配比如:我用的Tomcat9,servlet就要用4.0所以咱们选择4.0的版本2)借助maven,自动下载依赖下载之后jar包存在了maven的本地仓库(自动创建的)
2024-10-05 11:36:04
877
原创 JavaEE -> 多线程:单例模式、阻塞队列
join(),哪个线程调用这个方法,哪个线程就堵塞wait和notify都是Object的方法,随便定义一个对象都可以使用。
2024-09-15 17:12:43
1093
原创 javaEE 多线程->线程安全:synchronized、死锁、volatile关键字
cpu读取内存这个操作非常慢(快慢相对),cpu进行大部分操作都很快,一旦操作到读/写内存,速度就降下来了。--->不一定可以,有的就是需要先获取多种锁再操作。1.互斥使用(锁的基本特性):当一个线程持有一把锁之后,另一个线程也想获取到锁,就要阻塞等待。(拿到锁1,尝试获取锁2,但锁1不会释放)1.第一种情况:一个线程,对 一把锁(对象一样),连续加锁两次,如果是不可重入锁就死锁。2.不可抢占(锁的基本特性):当锁已被线程1拿到,线程2只能等线程1释放,不能抢。2.第二种情况:两个线程,两把锁。
2024-09-07 00:39:25
505
原创 JavaEE的学习->多线程:Thread内部常见的方法、线程状态
安排了工作(Thread对象已有,run方法已重写),但未行动 (正处于调用start方法之前)---> 找王五等人,给他安排任务,但还未行动起来。:就绪状态,线程已经在cpu上执行或者正在排队上cpu执行 --->王五等人去银行窗口办理服务,有的正在被服务,有的还在排队。那么我们可以用加锁(Mysql并发执行事务,隔离性)来实现:加了一个锁之后,只有等一个线程执行完之后才能执行另一个线程。假如count++是原子的(比如有一个cpu指令,可一次完成load,add,save这三步操作)
2024-08-27 18:22:25
892
原创 java数据结构:排序
每一次从待排序的数据中选出最小(最大)的元素,放在序列的起始位置。,根据排序过程的要求不能在内外存之间移动数据的排序。将新的记录按照大小插入到已经排好的序列之中。:对直接插入排序的优化。
2024-08-07 00:54:49
374
原创 Nginx部署
在这里插入图片描述](https://i-blog.csdnimg.cn/direct/23ca1c57a9db498d9a7840c3c85b5362.png。
2024-07-12 23:15:17
178
原创 Apifox
1.下载:https://apifox.com/2.3.使用:Eg:系统登录 添加接口 返回响应 之后点保存就可以了 Eg:测试接口: Eg:数据表格语法地址:http://mockjs.com/examples.html#Name
2024-06-02 22:12:14
1502
原创 java数据结构:队列
简单来说就是排队,只允许在一端进行插入,在另一端进行删除的线性表。特性:先进先出进行删除的那一端叫队头,进行插入的那一端叫队尾。
2024-05-24 09:36:32
294
原创 java数据结构:链表
链式结构 在逻辑上连续 在物理上不一定连续现实中节点都是从堆上申请出来的从堆上申请的空间,按照一定策略分配,两次申请的空间可能连续,也可能不连续。
2024-05-23 15:39:23
160
1
原创 数据库:JDBC
数据库编程 是需要 数据库服务器 提供一些API 供程序员调用的。API:Application Programming Interface 应用程序 编程 接口一组类/函数 给 程序员调用, 实现某些功能。JDBC 通过 驱动程序(软件,转接头) 才能操作数据库。
2024-05-16 09:22:52
386
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人