- 博客(77)
- 资源 (1)
- 收藏
- 关注
原创 C语言实现家谱管理系统
文章目录head.hfamily.cppmain.cpphead.h#include <stdio.h>#include <stdlib.h>#include <math.h>#include <string.h>#ifndef FAMILY_H_INCLUDED#define MAXSIZE 100#define FAMILY_H_INCLUDEDtypedef struct Infomation{ char name[20];
2021-06-27 12:34:41 7302 42
原创 二叉树的遍历和统计二叉树中度为0、度为1、度为2的结点个数
文章目录实验五 树的应用--二叉树的遍历一、实验目的:1、了解二叉树的逻辑结构和物理结构;2、掌握二叉树数据类型定义;3、熟练掌握二叉树在链式存储结构上的遍历操作;二、实验要求:三、实验任务:四、代码如下五、实验结果图实验五 树的应用–二叉树的遍历一、实验目的:1、了解二叉树的逻辑结构和物理结构;逻辑结构:1对多的关系,层次关系明显物理结构:在内存的存储结构,常用的有二叉链表和三叉链表2、掌握二叉树数据类型定义;3、熟练掌握二叉树在链式存储结构上的遍历操作;深度遍历:先序遍历、中序
2021-05-20 21:24:49 7526 3
原创 LRU算法
Problem: 146. LRU 缓存文章目录思路解题方法复杂度Code思路讲述看到这一题的思路解题方法描述你的解题方法复杂度时间复杂度:添加时间复杂度, 示例: O(n)O(n)O(n)空间复杂度:添加空间复杂度, 示例: O(n)O(n)O(n)Codetype LRUCache struct { //四部分 size cap cache(哈希表) head.tail虚拟指针 size int capacity int
2024-04-07 11:48:23 310
原创 Spring初步了解到深入理解
Spring—>给软件行业带来了春天Spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器框架2002,首次推出了Spring框架的雏形Spring框架以interface21框架为基础,经过重新设计,并不断丰富内涵,与2004年发布1.0正式版
2023-10-24 14:54:28 325
原创 redis发布订阅模型
def publish(channel , message) : # 将消息发送给 channe1 频道的所有订间者channel publish(channel , message) #将消息发送给所有和 channel 頻道相匹配的模式的订回者。
2023-08-03 14:12:38 863
原创 Redis复习
可重入锁是指一个线程在持有锁的情况下可以再次加锁,如果一个锁可以支持一个线程多次加锁,那么这个锁就是可重入的。是不会被线程调度打断的操作,这种操作一旦开始,就会运行到结束,不会有。用户状态,在内存修改,修改过之后再还回去,这个操作不是。生产一次消息,中间件将消息复制到多个消息队列,,表示读入这么多字节的数据后返回,如果没读够。都会关联一个指令队列,指令会队列排队处理,会给予反馈成功消息,因为网络延迟,所以在。是两条指令而不是原子指令,之后的。一般不会阻塞,除了缓冲区满了,**就是在读写的时候不阻塞,
2023-06-30 17:02:16 285
原创 结构体和内存对齐(基础+底层)
地址总线:cpu需要从内存读取数据,需要通过地址总线把地址传到内存,内存准备好数据,输出到地址总线,交给cpu,如果地址总线只有8根, 那么地址只有8为,寻址空间为256个地址,想使用更大的内存,就需要有更宽的地址总线,32位地址总线可以寻址4G内存数据总线,机器字长:每次操作1字节麻烦,就加宽数据总线,一次想操作4字节,就需要用32根数据总线,每次操作字节数就是机器字长。
2022-10-27 09:51:18 756 2
原创 GMP调度
M2与P2解绑,但M2会记住P2,然后G8和M2进行系统调用状态,当G8和M2退出系统调用,会尝试获取P2,如果无法获取,则会获取空闲的P,如果依然没有,G8会被即为可运行状态并且加入全局队列,M2因为没有P的绑定编程休眠状态(长时间休眠会等待GC回收)如果M2的本地队列没有了,全局队列也没有了,这时候会取M1的本地队列的后半部分,直接拿过来(有人说是前半部分?G2唤醒M2,M2绑定P2,并且运行G0,但是P2本地没有G,M2此时为自旋线程(没有G但是不断寻找G)从全局队列到本地队列的负载均衡。
2022-10-24 08:38:06 430
原创 计算机操作系统复习
每个进程中访问临界资源的那段程序称为临界区,一次仅允许一个进程使用的资源称为临界资源。如果有若干进程要求进入空闲的临界区,一次仅允许一个进程进入,如已有进程进入自己的临界区,则其它所有试图进入临界区的进程必须等待;进入临界区的进程要在有限时间内退出。如果进程不能进入自己的临界区,则应让出CPU,避免进程出现“忙等”现象。什么是死锁在两个或者多个并发进程中,如果每个进程持有某种资源而又等待其它进程释放它或它们现在保持着的资源,在未改变这种状态之前都不能向前推进,称这一组进程产生了死锁。。。。......
2022-07-27 22:08:29 36
原创 Nginx入门
Nginx(engine X)是一个高性能的HTTP和反向代理web服务器,同时提供了服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发的,第一个版本在2004年,2011年6月1日,nginx发布Nginx是安装简单,配置文件简洁,Bug少的服务。Nginx启动容易,并且可以7*24不间断运行Nginx由C语言协程,官方测试并发数可高达50000。
2022-07-04 20:35:54 1030
原创 Docker基础指令
Docker概述Docker为什么出现解决问题:1.在我的电脑上可以运行,但是到别人的电脑上就不能运行了2.出现版本更新,导致服务不能用3.环境配置麻烦,不是有的项目可能不支持跨平台传统: 开发打jar包,运维来部署现在:开发打包部署上线,一套流程做完拿app应用商店距离java -apk发布 ——用户使用apk ——安装即可以使用java -jar(环境)—— docker:应用商店 ——直接运行即可用docker思想:dockere的思想来源于集装箱, 采用隔离思想,集装箱内物
2022-05-01 15:47:07 3755
原创 广度优先搜索(BFS)
BFS问题简介BFS,英文全称是 Breadth First Search。 BFS并不使用经验法则算法。从算法的观点,所有因为展开节点而得到的子节点都会被加进一个先进先出的队列中。其邻居节点尚未被检验过的节点会被放置在一个被称为 open 的容器中(例如队列或是链表),而被检验过的节点则被放置在被称为 closed 的容器中。(open-closed表)我的理解最早我学广度优先遍历是在二叉树里面的 层序遍历, 广度优先搜索的做法是1.首先创建一个队列(queue),2.把根节点的存入队
2022-04-03 17:22:41 1691
原创 二叉树的层序遍历(BFS)
文章目录二叉树的层序遍历(bfs)思想:BFS:102.二叉树层序遍历题目思路103.二叉树的锯齿形层序遍历题目199.二叉树的右视图题目:代码二叉树的层序遍历(bfs)思想:二叉树的层序遍历主要是运用bfs的思想,进行一层一层的遍历BFS:创建队列Queue,然后从当前一层的节点进行取值操作,然后遍历下一层的节点,如此反复进行102.二叉树层序遍历题目思路class Solution {public List<List<Integer>> levelOrde
2022-03-29 17:55:37 6139
原创 回溯解决子集,组合,全排列问题
回溯框架思想回溯算法是类似于枚举的搜索过程,主要是在搜索过程中寻找问题的解,当79.子集题目思路:这是一个子集划分问题,我们每次添加一个数字形成组合即可Java版本class Solution { public List<List<Integer>> subsets(int[] nums) { List<List<Integer>> res = new ArrayList<>(); res.add(ne
2022-03-14 09:25:22 364 1
原创 动态规划解决背包问题
文章目录背包问题框架1.状态和选择2.对dp数组的定义3.寻找状态转移方程框架leetcode 416 划分等和子集问题思路代码518 零钱划分问题思路代码背包问题框架1.状态和选择对于给定的背包,可以装的容量为W,可以装的个数为N个,那么这两个属性就是这个背包问题的状态,选择就是选择这个装到背包或者不选这个装到背包。2.对dp数组的定义在dp数组中 dp[i][W] 表示在选取第i个物体的时候,这个W的重量,那么我们的目的很简单,对于正常的情况来说,我们需要求到的结果是dp[N][W],我们可
2022-03-07 09:04:52 609
原创 Gorm操作数据库
gorm介绍Github GORM中文官方网站内含十分齐全的中文文档,有了它你甚至不需要再继续向下阅读本文。安装go get -u github.com/jinzhu/gorm连接数据库import _ "github.com/jinzhu/gorm/dialects/mysql"// import _ "github.com/jinzhu/gorm/dialects/postgres"// import _ "github.com/jinzhu/gorm/dialects/sqlite"
2022-02-27 19:15:05 1074
原创 链表的创建以及基础增删改查操作
文章目录Java版本链表创建增加操作展示操作修改操作删除操作总体Go版本Java版本链表创建class ListNode{ int value; String name; ListNode next; public ListNode(int value,String name){ this.value = value; this.name = name; } @Override public String toS
2022-02-19 20:04:54 410
原创 MySQL进阶复习
事务MyISAM和InnoDB区别1.是否支持行级锁MyISAM只有表级锁,InnoDB有行级锁和表级锁MyISAM一锁就锁住了整个表,InnoDB并发性能更好2.是否支持事务MyISAM不支持InnoDB支持,有commit和rollback的功能3.是否支持外键MyISAM不支持InnoDB支持MySQL InnoDB 引擎使用 redo log(重做日志) 保证事务的持久性,使用 undo log(回滚日志) 来保证事务的原子性。MySQL InnoDB 引擎通过 锁机制、M
2022-02-13 19:42:21 693
原创 Java基础总结
1.面向过程和面向对象面向过程:性能比面向对象高,没有面向对象容易维护、复用、拓展面向对象:性能比面向过程低,易于维护,复用,拓展ps:面向过程也需要分配内存,Java性能差的原因是Java是半编译语言,最终的执行代码并不是可以直接被CPU使用的二进制机械码2.Java特点简单易学面向对象平台无关性可靠性安全性支持多线程(C++没有多线程,需要调用操作系统的多线程设计)支持网络编程编译和解释并存3.JVM 、JDK 、JDRJVM运行Java字节码的虚拟机字节码JVM可
2022-02-07 08:15:37 279
原创 Go操作数据库
1.Go操作MySQL1.1连接1.1.1下载依赖go get -u github.com/go-sql-driver/mysql1.1.2使用MySQL驱动func Open(driverName, dataSourceName string) (*DB, error)Open打开一个dirverName指定的数据库,dataSourceName指定数据源,一般至少包括数据库文件名和其它连接必要的信息。import ( "database/sql" _ "github.com/go
2022-01-23 19:42:52 2418
原创 剑指OfferII019 最多删除一个字符得到回文
文章目录题目:思路:代码:优化:思路:代码:题目:思路:暴力破解,因为只让替换一个字符,我们双指针扫描的时候如果发现对不上,就先跳过让count=1,下次如果对不上并且count=1的时候,就返回false但是代码:class Solution { public static boolean validPalindrome(String s) { int left = 0,right = s.length()-1; int count =
2022-01-12 22:31:23 3488 1
原创 剑指Offer II 018.有效的回文
题目:暴力思路:判断该字符是否合法,然后取出s的值,用StringBuffer接收s的值进行reverse和原数比较代码:package LeetCode.MarchSoft.SwordTowards.Day3Sword;public class ZZ18 { public static void main(String[] args) { String s = "OP"; System.out.println(isPalindrome(s)); }
2022-01-12 22:28:37 327
原创 剑指OfferII 007 数组中和为0的三个数
文章目录Offer7 数组中和为0的三个数题目:我的思路:代码:双指针思路:代码:优化思路:代码:ps:Offer7 数组中和为0的三个数题目:我的思路:暴力破解,三重for循环遍历,然后map去重代码:class Solution { HashMap<Integer, List<Integer>> map = new HashMap<>(); public List<List<Integer>> threeSu
2022-01-12 22:26:44 314
原创 动态规划—路径下降和
题目思路第一步,首先分析问题,我们如果要找到路径跑到最后一行的最优状态,我们得知道他先前的状态dp[i-1],通过此题我们得知dp(matrix,i,j)是dp(matrix,i-1,j)和dp(matrix,i-1,j-1)和dp(matrix,i,j+1)三种状态取最小值过来的然后我们就取得了最后一行每一个空的最小值,最后我们只需遍历比较取最小值即可代码package LeetCode.labuladong.Dynamic;import java.util.Arrays;/**
2022-01-09 21:27:08 304
原创 算法趣味问题—打家劫舍I
题目:思路:动态规划涉及到最优子结构和重叠子问题,重叠子问题需要备忘录,最优子结构需要判断有没有出现代码:自顶向下class Solution { int[] memo ; public int rob(int[] nums) { //对于memo进行初始化 memo =new int[nums.length]; Arrays.fill(memo,-1); //从0开始对dp进行扫描 ret
2022-01-09 18:04:00 413
原创 算法趣味问题—打家劫舍III
文章目录打家劫舍III题目:思路:代码:打家劫舍III题目:思路:同样是找下层和下下层,只不过需要加备忘录并且变成子树的遍历代码:class Solution { HashMap<TreeNode,Integer> memo =new HashMap<>();public int rob(TreeNode root) { //为空 if(root==null) return 0; //判断是否在备忘录里面 if(memo.conta
2022-01-09 18:00:34 175
原创 算法趣味问题—打家劫舍II
文章目录打家劫舍II题目:思路:代码:打家劫舍II题目:思路:跟原来一样,只不过这一次头一个和最后一个不能同时抢了,只能抢第二个和最后一个,以及第一个和倒数第二个,我们只需更改stole里面的下标即可代码:class Solution { public int rob(int[] nums) { int n = nums.length; //0和1的情况都为0 if(n==1) return nums[0]; //写错
2022-01-09 17:58:01 190
原创 算法趣味问题—打家劫舍I
题目:思路:动态规划涉及到最优子结构和重叠子问题,对于最优子结构需要代码:自顶向下class Solution { int[] memo ; public int rob(int[] nums) { //对于memo进行初始化 memo =new int[nums.length]; Arrays.fill(memo,-1); //从0开始对dp进行扫描 return dp(nums,0);
2022-01-09 17:56:28 261
原创 最大子数组和
题目:思路:动态规划对于这个题,必须要是连续的子数组,所以我们需要判断的是要么当前dp[i]为num[i]和之前的dp[i-1]组成一个数组,要么dp[i] =num[i]组成一个新的数组优化前:class Solution { public int maxSubArray(int[] nums) { //从前到后 //先对dp数组初始化 int n = nums.length; int[] dp =new int[n];
2022-01-09 17:53:15 85
原创 Git命令回顾
Remote是远程仓库Repository是本地仓库workspace是自己的工作空间git clone 和 forkgit clone 实在自己电脑直接敲命令结果是将github克隆到自己电脑中git fork 是直接访问github网站如果我们想要修改他人github项目,我们直接用git clone是不能push的,所以我们使用fork,先把代码复制到自己的github仓库,然后git clone到本地修改, 然后在提交push(这里的push是push到自己github仓.
2022-01-02 20:01:57 223
原创 单片机设计0~99.99秒的计时器
文章目录电路图如下:代码如下:运行图如下:开始计数停止计数复位我的学号后四位是4104对应 秒为41 毫秒为04电路图如下:代码如下:#include <REGX51.H>unsigned char seg []={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf};unsigned char ms,s,key_mod;unsigned int cp,cp1;sbit key_begin = P1^4;sbi
2021-12-26 17:25:21 3994 1
原创 单链表的解题思路
文章目录六种单链表的解题思想合并两个有序链表题目:解题思路:代码如下:单链表的倒数第 k 个节点题目:解题思路:代码如下:链表的中间节点题目:解题思路:代码如下:判断链表是否包括环题目:解题思路:代码如下:环形链表 II题目:解题思路:代码如下:判断两个链表是否相交题目:解题思路:代码如下:六种单链表的解题思想合并两个有序链表题目:解题思路:我们想让两个有序链表合并并且合并之后的链表仍为有序链表,就需要我们在合并的时候进行排序,首先创建一个临时结点dummy为-1,创建一个临时节点p为dummy
2021-12-16 15:32:30 1527
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人