- 博客(23)
- 收藏
- 关注
原创 网络编程原理:回显服务器与客户端通信交互功能
交换机是因为路由器的LAN口过少,而需要连接到路由器的节点过多,这时候交换机的WAN通过连接路由器的LAN口,然后通过交换机的LAN口来连接其他的路由器的WAN或者电脑,来实现层层连接,构成更复杂的网络结构。在计算机中,通过网络,可以让两个主机之间相互通信,在实现相互通信的过程时,需要我们开发者通过应用程序(应用层)通过系统的API与传输层进行交互。在网络中,本质是通过光/电信号来传输数据,通过低电平表示1,高电平表示0 ,高频光信号表示1 ,低频光信号表示0。
2024-12-29 16:05:39
6601
108
原创 Java多线程第三篇-多线程的代码相关案例
而上述代码中,如果线程1和线程2在执行的过程中,线程1可能会在编译器中为了优化从而将创建对象的步骤打乱,由原来的123,可能修改为132步骤,直接将将一个地址给到instance,这时候给到t2的是一个非空的非法对象,这时候因为不为空,t2直接返回该结果,这时候t2可以访问到属性方法,就会导致出现bug。在懒汉模式中,我们将类成员定义为null,初次创建对象是在条件中进行的,而当我们在条件中时,因为多线程是同时执行,我们这时候可能会因为多个条件成立而进入从而new出多个对象,这样会导致线程不安全。
2024-12-23 12:13:54
1282
79
原创 Java多线程第二篇-线程的常用方法和线程安全
我们可以减少读取的次数,通过sleep睡眠来限定load的读取次数,此时就不会出发内存可见性问题,但是什么时候代码会被JVM优化,我们人是不清楚的,只有机器清除,所以我们尽量使用volatile更保险一些,此方法知道即可。这时候就陷入一种嵌套循环,形成死锁。如果有两把锁设a、b,线程1获取到锁a,然后线程2也获取到锁b,这时候线程1嵌套获取b锁,线程2嵌套获取a锁,则循环等待锁释放,进不去出不来。所谓的可重入锁,指的是一个线程,一把锁,加锁两次,会出现死锁,就是“不可重入“,反之,就是”可重入“。
2024-12-23 12:13:33
1792
42
原创 Java多线程第一篇-认识多线程
当重写Thread方法时,run和start都是Thread的成员属性,run描述了线程的入口(线程要做的事情)start才是真正的调用了系统的API,在系统中创建出了线程,让线程在调用run。,操作系统目前包含多个进程而每个进程中包含着单个或者多个线程,一个进程由多个PCB(线程)来表示在代码中,如果进程出错后,不会影响到其他的进程的资源分配。线程的身份标识,类似于PID,标记一个进程中唯一的线程,是java提供的id,而不是API或者PCB提供的id。状态、优先级、上下文、记账信息…
2024-12-19 18:20:41
2435
88
原创 macOs中配置环境变量进入mysql
这时候我们直接mysql -u root -p直接进入mysql数据库。如果是bash输入以下命令。
2024-12-16 17:15:12
1780
41
原创 git企业的使用详细命令行操作
git是Linux创始人通过内核开发而创作的分布式版本的控制系统,而我们作为开发者需要开发与维护,避免不了版本的迭代和更新,git就是用来保存修改删除等操作的工具,可以记录代码改动情况,它能够保存代码的每个版本,每个版本文件中修改和删除git都会跟踪,通过追踪的方式使得开发者能够更有效率的获取到之前的版本,让开发的效率提高。这里的HEAD指针指向master通过 cat .git/HEAD查看。
2024-12-14 22:53:50
3186
88
原创 MySQL语句学习第四篇_数据库:通过intellij IDE连接MySQL数据库使用JDBC实现增删查改
MySQL语句学习第四篇_数据库通过intellij IDE连接MySQL数据库使用JDBC来实现增删查改本章的专栏📚➡️本博客前一章节指向➡️。
2024-12-10 10:17:08
5474
106
原创 MySQL语句学习第二篇_数据库
mysql服务器上有很多表,将许多具有关联关系的表放在一起,构成一个数据集合,被称之为数据库,在mysql服务器上可以有多个这样的数据库。在查询的时候,写做由列名构成的表达式,把这一列中的所有行带入到表达式中,之后参与运算,这里查询的时候,是把服务器的数据读出来后返回给了客户端,以临时表的形式来进行展示。mysql的服务器,是真正的本体,复杂保存和管理数据,数据都存储在硬盘中。硬盘:速度慢,空间大,硬盘数据持久保存,成本费用低。内存:速度快,空间小,内存数据容易丢失,成本费用高。,操作后返回给客户端。
2024-12-03 22:17:44
8160
97
原创 MacOS 命令行详解使用教程
本章讲述MacOs命令行详解的使用教程,感谢大家观看。本人博客:如烟花般绚烂却又稍纵即逝的主页MacOs命令行前言:在 macOS 上,Terminal(终端) 是一个功能强大的工具,它允许用户通过命令行直接与系统交互。本教程将详细介绍 macOS 命令行的基础与进阶操作,帮助你更高效地使用 Mac。文章目录一、什么是终端与 Shell1.1 终端介绍1.2 Shell 的作用二、终端的基本操作2.1 打开终端2.2 基本命令三、文件与目录操作3.1 查看当前目录3.2 切换目录3.3 创建
2024-12-03 16:44:21
7311
49
原创 Tree搜索二叉树、map和set_数据结构
HashSet是java集合框架中Set的常用类。HashSet不允许存储重复元素的集合,它使用哈希表来存储元素(val),确保每一个元素是唯一的,时间复杂度为O(1).HashMap是java集合框架Map的常用类。HashMap也是用哈希表通过key键值来存储val,与HashMap不同,它通过key键值来存储,元素可以相同,但是key键值一单相同val值就会被覆盖掉。
2024-12-01 20:09:50
2754
94
原创 六大排序算法:插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序
1.2 希尔排序二.选择排序2.1 单向选择排序2.2双向选择排序2.3 堆排序堆序详情堆排序三.交换排序3.1 冒泡排序3.2 快速排序3.2.1 Hoare排序这里定义一个left为左,right为右,将任意左右位置两边定义一个基准值,根据基准值的大小,直到left为大于基准值数,right为小于基准值数停下,若定义左边为基准值则右边先走,同理右边为基准值左边先走。
2024-11-28 13:35:01
11669
98
原创 非递归遍历二叉树(数据结构)
因为中序遍历是左根右,给定一个辅助栈,每次走到最后一个节点的left或者right为空时将栈中的元素给到数组,然后再去遍历栈顶右边元素是否为空。在数据结构中的学习难免少不了递归的学习,递归有时候也会让代码变得更加简洁,学习递归让我们对代码有更近一步的思考。每遍历一个节点打印一次元素且将其放入栈中,直到为空时,将栈顶元素移除来并打印并让其查看另一子树是否为空节点。二叉树的遍历方式有:前序遍历、中序遍历、后续遍历,层序遍历,而树的大部分情况下都是通过递归的方式来进行的。
2024-11-25 22:31:16
1619
73
原创 数据结构优先级队列PriorityQueue
我们使用大根堆来进行排序,将0下标值与最后下标值进行交换,end为最后下标值,然后向下筛选重新获取最大的节点值,每次的有效元素数量-1(由最后一个下标开始–直到为0,获取由小到大的元素)。而优先级队列(PriorityQueue)指的是具有优先级别的队列(特殊队列),根据指定类型的大小,每次出队的元素都是该类型中最大或者是最小的值,具有优先级。删除元素我们可以将对首的元素将队尾的元素进行互换,并将队尾元素的下标值删除,后续进行覆盖,然后通过向下筛选,设定根节点为0下标互换的位置,进行向下筛选。
2024-11-25 22:27:59
2693
41
原创 二叉树oj题解析
最近的公共祖先指的是这一棵树中两个节点中深度最大的且公共的祖先节点就是最近祖先节点。也就是说这两个节点在树中距离最近的相交例如:8 与6中的最近公共节点为2,因为他的最大深度就是2(在同一颗子树中)。8与4的最近公共节点为3,因为他的最大深度是3(在左右两棵子树中的情况)。
2024-11-22 23:06:37
964
47
原创 数据结构在二叉树Oj中利用子问题思路来解决问题
如果a释放完且a树的值给到了一维数组后,会得到b和c两个子树并放到队列中,这时候需要一个计数器来计算当前的层数,当层数为0时,我们将一维数组所有的值放到二维数组中就好了。这里当我们递出去时,我们就会减少一层当k等于1时,这里我们就在k层找到一个节点然后回归到父节点然后继续子树找下一个节点,知道将k层的节点数遍历完。只判断了根的节点的话它的左右子树的差确实为1,但是左子树中b的左子树和右子树的差值为2,这也不是一个平衡的二叉树。(ret如果为空,说明root根或者递归的条件就是空的,没有要找的元素)
2024-11-20 20:58:50
3638
78
原创 使用Mac下载MySQL修改密码第一篇_数据库
MySQL官网当进入到官网后下滑到community社区,进行下载然后选择community sever下载这里就是要下载的界面,如果需要下载之前版本的话可以点击archives,可能会因为这是外网原因,有时候下载会很慢,但是多下载几次一定会下载来的,然后我们就一直点安装,这里注意在安装后会跳出来一个窗口,这里面有你的初始密码,这里我们跳过安装步骤。如果是没有保存初始密码后,无法配置好MySQL。
2024-11-18 17:14:08
4411
53
原创 数据结构树和二叉树知识点和递归序列
完全二叉树:在二叉树中,只有最下面两层结点的度可以小于2,并且最下层的叶子结点集中在左子树的位置上,如果没有集中在左树则不是一个非完全二叉树。树是一种数据结构,它是由n个或大于n个的结点来组成具有层次关系的一个集合(一个树及n个子树的关系集合):在任意的二叉树中,若叶子结点的个数为n0,度为1的结点数为n1,度为2的结点数为n2。:度为0的结点称为叶子结点/终端结点(不含有子树的结点)。:若该结点含有子结点,则这个结点称为子结点的父亲结点。:一个结点中含有子树的根结点称为该结点的子结点。
2024-11-18 17:13:52
1266
28
原创 LeetCode通过栈解题逆波兰表达式 有效的括号 栈的压入、弹出序列 最小栈 清除数字
对计算机而言中缀表达式是非常复杂的结构。相对来说,逆波兰式在计算机看来却是比较简单易懂的结构。因为计算机普遍采用的内存结构是栈式结构,它执行先进后出的顺序。*我们将其中缀式的中每一个括号内对应的符号位置放到括号外去形成后缀表达式。条件三每个右括号都需要包含相同类型的左括号。条件二左括号和右括号的顺序需保持正确。条件一需以相应的右括号闭合。
2024-11-13 23:01:54
789
17
原创 java双向链表解析实现双向链表的创建含代码
想要删除任意节点可以直接通过访问下一个节点使其prev获取想要删除的上一个节点,然后将想要删除的上一个节点.next获取到被删除对象下一个节点的指向这里我们可以模拟实现MyListCode类中的一些方法,入头插法、尾叉法、任意位置插入节点、指定元素删除含有该元素的第一个节点、指定元素删除含有该元素的所有节点等…
2024-11-11 22:17:51
1493
14
原创 Leetcode链表回文 链表分割 链表相交 环形链表I 环形链表II 获取链表中倒数k的节点
因为是单链表我们需要将中间点的后续节点翻转,从而由最后一个节点开始走知道slow的下一个节点指向slow,将slow下一个节点给到cur对象,让cur的下一个节点指向slow。如果cur下一个节点指向slow的话,cur就会失去后续节点的链接,所以我们还需要一个对象来接收cur的下一个节点。首先求得回文串中的中间位置,因为回文串两边的头节点往中间靠拢,在相同的情况下,如果两边头节点相遇则是回文串。然后cur=curNext,cur的节点更新,知道找到最后一个节点。然后slow=cur将slow更新为头步。
2024-11-09 23:37:51
564
8
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人