[刷题记录]牛客面试笔刷TOP101
牛客笔试算法必刷TOP101系列,每日更新中~
1.合并有序链表2023.9.3
合并两个排序的链表_牛客题霸_牛客网 (nowcoder.com)
题意大致为:
将两个链表中的元素按照从小到大的顺序合并成为一个链表.
所给予的条件:
给出的所要合并的链表都是从小到大顺序排列的.
思路:
创建一个新的头节点来方便组装新的链表.分别用两个指针遍历两个链表,比较两个指针所在的节点,较小的节点先一步存放到新链表中,并且相应的指针向后移动一位.
移动后的指针所在的节点再与先前较大的未移动的节点进行比较,循环进行上面的操作.
直到任一链表遍历完毕,再把另一没遍历完的链表剩下的节点连接到新链表的尾巴.
错解:
public ListNode Merge (ListNode pHead1, ListNode pHead2) {// write code hereListNode fakeHead = new ListNode(-1);ListNode cur = fakeHead;while(pHead1.next != null || pHead2.next != null){//我怎么用了或呢!!!//明明是把链表都遍历一遍不要管他nextif(pHead1.val <= pHead2.val){cur.next = pHead1;cur = cur.next;pHead1 = pHead1.next;}else{cur.next = pHead2;cur = cur.next;pHead2 = pHead2.next;}}if(pHead1.next == null){//上面错,下面跟着错了.cur.next = pHead2;}if(pHead2.next == null){cur.next = pHead1;}return fakeHead.next;}
刚开始,可能脑袋真的不好使了.
明明想的是,要把链表都遍历完整一遍,分别拿每一个节点跟另一个链表的节点进行比较.结果while循环中写的却是.next.还想不出问题在哪里真的是罪过.
还有while循环条件中的连接符号居然用的||.
只要有一个链表遍历完了就结束循环,所以要用&&啊啊啊!!!
真的是出师未捷身先死,下面好好加油吧.
正确题解:
起码脑子里的思路是对的,就是想的跟写的对不太上...
import java.util.*;/** public class ListNode {* int val;* ListNode next = null;* public ListNode(int val) {* this.val = val;* }* }*/public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param pHead1 ListNode类 * @param pHead2 ListNode类 * @return ListNode类*/public ListNode Merge (ListNode pHead1, ListNode pHead2) {// write code hereif(pHead1 == null){return pHead2;}if(pHead2 == null){return pHead1;}ListNode fakeHead = new ListNode(-1);ListNode cur = fakeHead;while(pHead1 != null && pHead2 != null){//这里之前用了||if(pHead1.val <= pHead2.val){cur.next = pHead1;pHead1 = pHead1.next;}else{cur.next = pHead2;pHead2 = pHead2.next;}cur = cur.next;}if(pHead1 == null){cur.next = pHead2;}else{cur.next = pHead1;}return fakeHead.next;}
}
2.链表是否有环2023.9.4
判断链表中是否有环_牛客题霸_牛客网 (nowcoder.com)
题意:
判断链表中是否有环,环所指的是:链表中节点的next存放此节点先前节点的地址.
给予的条件:
普通链表一个
思路:
这道题先前有学习过,我学到了两种解法.
①:用快慢指针的方法,快指针的速度是慢指针的两倍.在完全遍历完链表先前,如果快指针与慢指针相遇了,则证明此链表中含有环.反之,证明没有.(闭环追及问题)
②:用HashSet的方法,将链表进行遍历,把遍历到的节点的地址存放到set当中.如果链表有环则必定会有节点重复存放第二次,就可以用contains来判断有没有环.
public static boolean hasCycle(ListNode head) {ListNode fast = head;ListNode slow = head;//因为fast一次走两步,在while循环中就要判断能否有足够的位置够一次走两步//首先要判断fast!=null,看是否遍历完成,如果没有再看其后面有没有节点while(fast != null && fast.next != null){fast = fast.next.next;slow = slow.next;if(slow == fast){return true;}}return false;}
3.判断链表中环的入口点
链表中环的入口结点_牛客题霸_牛客网 (nowcoder.com)
思路:首先是要判断链表有没有环,有环才能进行后面的操作
public ListNode EntryNodeOfLoop(ListNode pHead) {ListNode fast = pHead;ListNode slow = pHead;boolean check = false;//首先要判断链表有没有环while(fast != null && fast.next != null){fast = fast.next.next;slow = slow.next;if(fast == slow){check = true;break;}}if(!check){//证明没有环return null;}slow = pHead;while(slow != fast){slow = slow.next;fast = fast.next;}return fast;}
4.链表中倒数最后K个节点2023.9.5
链表中倒数最后k个结点_牛客题霸_牛客网 (nowcoder.com)
题意:
根据给出的K,来返回链表中倒数第K个节点及其往后的所有节点.
思路:(有误)
这个题目以前写过了.
用的是快慢指针的方式,倒数第一个与倒数第K个节点之间相差K-1个节点.
所以,可以先让快指针从头节点走k-1步,再让慢指针从头节点开始,与快指针一齐一次走一步,直到快指针到达了末尾节点,此时慢指针所在的节点就是倒数第K个节点.
将慢指针所在的节点返回即可.
纠正:
其实这里的本质是,控制两端的距离,再平行的进行移动.
快指针其实移动k个节点会好一点,
错解:
这里写的是移动k个节点了,跟想的时候不一样.如果是移动k个节点,看的是末尾后一个位置即空节点与倒数第K个节点的位置距离.
例如,倒数第三个节点,与空节点相差的距离是3.即倒数第三个节点要移动3次才能到达空节点的位置.
先判定再移动是为了能预防出现快指针走过头,走到了null,直接返回null却没有返回slow的情况
如果链表长5,求倒数第6个节点的时候,就会出现.
public ListNode FindKthToTail (ListNode pHead, int k) {if(pHead == null){return null;}// write code hereListNode fast = pHead;ListNode slow = pHead;for(int i = 0; i < k; i++){fast = fast.next;if(fast == null){return null;//主要是这里的问题,//因为倒数的k刚好为链表的长度,而fast是从头节点1开始//走到空指针之后就直接返回了//其实应该把if判定条件放到移动指针的上面//而且在外面加一个判断k是否合法的条件//当k小于0或等于0时返回null.}}while(fast != null){//fast要在尾巴节点停下来fast = fast.next;slow = slow.next;}return slow;}
正解:
2023.9.7补充一下,for循环里面的if主要是为了防止越界的,证明当前fast指针指向的节点不为空,可以继续往下走.是作为条件而不是判断,所以要放在上面而不是下面.
public ListNode FindKthToTail (ListNode pHead, int k) {if(pHead == null){return null;}// write code hereListNode fast = pHead;ListNode slow = pHead;for(int i = 0; i < k; i++){if(fast == null){return null;}fast = fast.next;}while(fast != null){//fast要在尾巴节点停下来fast = fast.next;slow = slow.next;}return slow;}
5.删除链表的倒数第n个节点
删除链表的倒数第n个节点_牛客题霸_牛客网 (nowcoder.com)
嗨呀,这个跟上面一起写的.简单啦,我就不信我会错.
思路(否决):
既然是删除,肯定要找到被删除的节点的前驱与后驱.再将他们连接起来.
找到倒数第n个节点,继续用快慢指针的方式来找.
有一个问题,slow的位置恰好倒数第n个的位置,那么其前驱我们就不能知道了.
所以要找倒数第n个位置的前一个,那么slow与fast之间的距离就会增加一位.变成了fast走n+1
还想到了,可能会删除头节点这种情况,想在fast移动之后加上一个判定条件
思路(第二版):
觉得上面的太麻烦了,还容易出错.因为上面的思路会存在越界的行为.
头节点会变动的题型还是创建一个假的头节点来存放比较好.再加上一个新的指针在slow指针的前一位变动,tmp就是前驱slow是倒数第n个fast是后驱.将tmp与fast连接起来就好了
public ListNode removeNthFromEnd (ListNode head, int n) {// write code hereListNode fast = head;ListNode slow = head;ListNode fakeHead = new ListNode(-1);fakeHead.next = head;ListNode tmp = fakeHead;// if(n <= 0){// return null;// } 写完才看到,题目保证n一定有效for(int i = 0; i < n; i++){if(fast == null){//走过头了return null;}fast = fast.next;}while(fast != null){fast = fast.next;slow = slow.next;tmp = tmp.next;}tmp.next = slow.next;return fakeHead.next;}
6.两个链表的第一个公共节点2023.9.6
两个链表的第一个公共结点_牛客题霸_牛客网 (nowcoder.com)
思路:
也是炒冷饭了.想到的是先遍历链表,分别得到他们的长度.
用双指针的方式,对于较长的链表先走两个链表长度差的距离.
再让两个指针分别从链表出发,一次走一步直到null,如果其中两指针相对,则证明有公共节点,
然后还学到了第二个方法.
对比上面的方法的优点是:不用考虑哪一个链表比较长,也不用额外写代码来得到链表的长度.虽然他们的本质都是双指针的方式.
就像下图的一样,直接让两个指针从两个链表的头节点开始一起往下走,任一一个指针遍历完所在的链表后,来到空节点时则会跳转到另一条链表的头节点开始遍历.
观察下面的图我们可以发现,这样就能消除链表长度导致的长度差.
public ListNode FindFirstCommonNode(ListNode pHead1, ListNode pHead2) {ListNode l1 = pHead1;ListNode l2 = pHead2;while(l1 != l2){if(l1 == null){l1 = pHead2;}else{l1 = l1.next;}if(l2 == null){l2 = pHead1;}else{l2 = l2.next;}}return l1;}
7.链表相加
链表相加(二)_牛客题霸_牛客网 (nowcoder.com)
思路:
我只能想到把链表都给翻转了才进行后面的操作.
然后创建一个新的头节点,创建新的节点.如果现在相加的节点个位溢出了就要移动到下一位去.
先写写看吧.
错解(愚蠢的错误):
最后一个例子没过去,好可惜.
努力找找看哪里错了吧...我看别人的代码好优雅噢.我的有点不堪.
public ListNode addInList (ListNode head1, ListNode head2) {// write code here//先翻转两个链表head1 = rever(head1);head2 = rever(head2);ListNode fakeHead = new ListNode(-1);//创建两个指针来遍历链表ListNode l1 = head1;ListNode l2 = head2;ListNode cur = fakeHead;//遍历新链表//存储溢出int count = 0;while(l1 != null && l2 != null){int tmp = l1.val + l2.val + count;if(tmp >= 10){tmp -= 10;//溢出了,得留到下一个.count = 1;}else{count = 0;}ListNode node = new ListNode(tmp);cur.next = node;cur = node;l1 = l1.next;l2 = l2.next;}while(l1 != null){int tmp = l1.val + count;if(tmp >= 10){tmp -= 10;count = 1;}else{count = 0;}ListNode node = new ListNode(tmp); cur.next = node;cur = node;l1 = l1.next;}while(l2 != null){int tmp = l2.val + count;if(tmp >= 10){tmp -= 10;count = 1;}else{count = 0;}ListNode node = new ListNode(tmp); cur.next = node;cur = node;l1 = l1.next;//什么东西啊,什么东西啊.对自己无语啦.,把这里改成l2就好了}if(count != 0){ListNode node = new ListNode(count);cur.next = node;cur = node;}return rever(fakeHead.next);}public ListNode rever(ListNode head){ListNode cur = head.next;ListNode pre = head;while(cur != null){ListNode curNext = cur.next;cur.next = pre;pre = cur;cur = curNext;}head.next = null;return pre;}
正解:
在错解里的代码改了.糊涂啊糊涂
8.单链表的排序23.9.7
单链表的排序_牛客题霸_牛客网 (nowcoder.com)
思路(没想到):
一开始我只想到了把链表放到数组里面,在数组中进行排序之后再赋值到链表上.但是感觉不怎么好,又看到了题解里面说的用分治的思想,其实就是归并排序嘛.但是我内心会对递归有一定的抵触心理...但还是认真看了一遍题解,也自己动手画了一遍图.思路是清晰了,但不知道代码写得怎么样.先动手看看吧.
public ListNode sortInList (ListNode head) {// write code here//既然是用归并排序递归的思路://递归首先要考虑的是其结束的条件.//当只剩一个节点或没有节点的时候结束拆链表的递归操作if(head == null || head.next == null){return head;//返回当前节点}//先找到链表的中间点,进行拆.//找中间点用到了快慢指针的思想,再加上一个中间点的前驱节点才能进行拆除ListNode left = head;ListNode mid = head.next;ListNode right = mid.next;while(right != null || right.next != null){//因为要考虑链表节点个数的奇偶情况//奇数个的时候right指针走到尾巴节点就该停下来了,再继续走两步会越界//所以是right.next!=null的情况//偶数个的时候right指针可以走到尾巴节点的后一个空节点//还有就是因为right一次走两步的关系,需要判断能否还有足够的节点left = left.next;mid = mid.next;right = right.next.next;}//走完了,此时mid来到了中间节点的位置,left是mid的前驱节点的位置//别忘了head//此时前半段链表就被head和left所包裹//后半段链表就被mid与right所包裹//就要将他们分开了left.next = null;//继续调用来递归ListNode lhead = sortInList(head);//递归前半段ListNode rhead = sortInList(mid);//递归后半段//将他们进行排序//写一个排序的方法return sort(lhead,rhead);}public ListNode sort(ListNode p1,ListNode p2){//此处用双指针的方式,来分别遍历两个链表//就跟归并排序里的一样了//还要判断谁空了就返回另一半if(p1 == null){return p2;}if(p2 == null){return p1;}//重新创建一个新的链表来存储ListNode cur = new ListNode(-1);while(p1 != null && p2 != null){if(p1.val > p2.val){cur.next = p2;p2 = p2.next;}else{cur.next = p1;p1 = p1.next;}}//如果有剩余的节点没有遍历到,就直接加上去if(p1 != null){cur.next = p1;}else{cur.next = p2;}return cur.next;//最后返回排好序的链表}
正解:
都没有什么大错误,就是有一些逻辑上的不清楚.
也算是对递归这个心魔没那么恐惧了吧...
public ListNode sortInList (ListNode head) {// write code here//既然是用归并排序递归的思路://递归首先要考虑的是其结束的条件.//当只剩一个节点或没有节点的时候结束拆链表的递归操作if(head == null || head.next == null){return head;//返回当前节点}//先找到链表的中间点,进行拆.//找中间点用到了快慢指针的思想,再加上一个中间点的前驱节点才能进行拆除ListNode left = head;ListNode mid = head.next;ListNode right = mid.next;while(right != null && right.next != null){//错误1:调试后发现错误了||//因为要考虑链表节点个数的奇偶情况//奇数个的时候right指针走到尾巴节点就该停下来了,再继续走两步会越界//所以是right.next!=null的情况//偶数个的时候right指针可以走到尾巴节点的后一个空节点//还有就是因为right一次走两步的关系,需要判断能否还有足够的节点left = left.next;mid = mid.next;right = right.next.next;}//走完了,此时mid来到了中间节点的位置,left是mid的前驱节点的位置//别忘了head//此时前半段链表就被head和left所包裹//后半段链表就被mid与right所包裹//就要将他们分开了left.next = null;//继续调用来递归ListNode lhead = sortInList(head);//递归前半段ListNode rhead = sortInList(mid);//递归后半段//将他们进行排序//写一个排序的方法return sort(lhead,rhead);}public ListNode sort(ListNode p1,ListNode p2){//此处用双指针的方式,来分别遍历两个链表//就跟归并排序里的一样了//还要判断谁空了就返回另一半if(p1 == null){return p2;}if(p2 == null){return p1;}//重新创建一个新的链表来存储ListNode head = new ListNode(-1);//补充3:这里忘记加一个遍历的指针了//直接用头节点去接了怪不得返回只有一个节点ListNode cur = head;while(p1 != null && p2 != null){if(p1.val >= p2.val){//补充2 加一个=cur.next = p2;p2 = p2.next;}else{cur.next = p1;p1 = p1.next;}cur = cur.next;//补充1}//如果有剩余的节点没有遍历到,就直接加上去if(p1 != null){cur.next = p1;}else{cur.next = p2;}return head.next;//最后返回排好序的链表}
9.判断一个链表是否为回文结构
判断一个链表是否为回文结构_牛客题霸_牛客网 (nowcoder.com)
思路:
找到中间的节点,将后半段链表进行翻转.
用双指针的形式,从开头与中间开始遍历节点.如果两者不一样,则证明为不是回文结构.
错解:
不是很明白出什么问题了,先放到idea调试看看
主要是翻转之后与前半段的链接没有处理好.
我想实现的是指针分别遍历,没有给他们设null,直到他们相遇或者在偶数情况下在相邻的时候结束循环.
错的原因写在相应的注释里了,链表题还是要好好画图啊.还有记得理清一下循环结束的条件,是用||还是&&
public boolean isPail (ListNode head) {// write code here//先用双指针的形式找到中间节点,如果是偶数个节点,就找中间靠右的节点if(head == null || head.next == null){return true;//如果只有一个节点或者为空则}ListNode slow = head;ListNode fast = head;boolean count = true;while(fast != null && fast.next != null){slow = slow.next;fast = fast.next.next;}//此时slow为中间节点//这里本质上还是多此一举了,如果是奇数个直接从中间开始翻转就好了//这里的想法也是想把中间节点与翻转后的末尾进行连接,让两个指针能够相遇//但是顺序错了,而且这样就会太复杂if(fast != null){//证明为奇数个数,中间节点向后走一个ListNode mid = slow;slow = slow.next;slow.next = mid;}//翻转后半段slow = reverse(slow);while(head != slow || head.next != slow){//还要你,我最近怎么老是用错||与&&if(head.val != slow.val){count = false;break;}head = head.next;slow = slow.next;}return count;}public ListNode reverse(ListNode head){ListNode cur = head.next;ListNode pre = head;while(cur != null){ListNode curNext = cur.next;cur.next = pre;pre = cur;cur = curNext;}return pre;}
正解:
还是得自己调试和画图才能写出来,下次加油嗷.
public boolean isPail (ListNode head) {// write code here//先用双指针的形式找到中间节点,如果是偶数个节点,就找中间靠右的节点if(head == null || head.next == null){return true;//如果只有一个节点或者为空则}ListNode slow = head;ListNode fast = head;boolean count = true;while(fast != null && fast.next != null){slow = slow.next;fast = fast.next.next;}//此时slow为中间节点//翻转后半段slow = reverse(slow);//是这里,翻转之后成一个环了,没有给nullwhile(head != slow && head.next != slow){if(head.val != slow.val){count = false;break;}head = head.next;slow = slow.next;}return count;}public ListNode reverse(ListNode head){ListNode cur = head.next;ListNode pre = head;while(cur != null){ListNode curNext = cur.next;cur.next = pre;pre = cur;cur = curNext;}return pre;}
相关文章:
[刷题记录]牛客面试笔刷TOP101
牛客笔试算法必刷TOP101系列,每日更新中~ 1.合并有序链表2023.9.3 合并两个排序的链表_牛客题霸_牛客网 (nowcoder.com) 题意大致为: 将两个链表中的元素按照从小到大的顺序合并成为一个链表. 所给予的条件: 给出的所要合并的链表都是从小到大顺序排列的. 思路: 创建一…...
降水预报之双重惩罚
在降水预报中,通常会出现 "双重惩罚问题 "的指标或度量包括那些常用于预报验证的指标或度量。当假阴性(漏报降水事件)和假阳性(误报)受到同等惩罚或加权时,就会出现双重惩罚问题,这在…...
一条SQL语句的执行过程(附一次两段式提交)
一条SQL语句的完整执行过程是怎样的呢?我们用select和update语句来举例。 注意在mysql8后,进入服务层后,取消了去查询缓存(属于Server服务层)这个步骤,缓存中key是SQL语句,value是值,这样其实并不会提升性…...
Python基础知识详解:数据类型、对象结构、运算符完整分析
文章目录 python基础知识数据类型类型检查对象(object)对象的结构变量和对象类型转换运算符(操作符)1. 算术运算符2. 赋值运算符3. 比较运算符(关系运算符)4. 逻辑运算符5. 条件运算符(三元运算符) 总结 py…...
基于Streamlit的应用如何通过streamlit-authenticator组件实现用户验证与隔离
Streamlit框架中默认是没有提供用户验证组件的,大家在基于streamlit快速实现web应用服务过程中,不可避免的需要配置该应用的访问范围和权限,即用户群体,一般的做法有两种,一种是通过用户密码验证机制,要求只…...
[虚幻引擎插件介绍] DTGlobalEvent 蓝图全局事件, Actor, UMG 相互回调,自由回调通知事件函数,支持自定义参数。
本插件可以在虚幻的蓝图 Actor, Obiect,UMG 里面指定绑定和执行消息,可带自定义参数。 参数支持 Bool,Byte,Int,Int64,Float,Name,String,Text,Ve…...
2023数学建模国赛选题建议及BC题思路
大家好呀,全国大学生数学建模竞赛今天下午开赛啦,在这里先带来初步的选题建议及思路。 目前团队正在写B题和C题完整论文,后续还会持续更新哈,以下只是比较简略的图文版讲解,团队目前正在写B、C题完整论文,…...
vue3:4、组合式API-setup选项
setup每次都要return,好麻烦。怎么解决? 使用 <script setup> 语法糖(底层帮你return了) 写法如下...
【C刷题训练营】第三讲(c语言入门训练)
前言: 大家好,我决定日后逐渐更新c刷题训练营的内容,或许能帮到入门c语言的初学者,如果文章有错误,非常欢迎你的指正! 💥🎈个人主页:Dream_Chaser~ 🎈&…...
简述视频智能分析EasyCVR视频汇聚平台如何通过“AI+视频融合”技术规避八大特殊作业风险
视频智能分析EasyCVR视频汇聚平台可以根据不同的场景需求,让平台在内网、专网、VPN、广域网、互联网等各种环境下进行音视频的采集、接入与多端分发。在视频能力上,视频云存储平台EasyCVR可实现视频实时直播、云端录像、视频云存储、视频存储磁盘阵列、录…...
2023年9月NPDP产品经理国际认证报名,找弘博创新
产品经理国际资格认证NPDP是新产品开发方面的认证,集理论、方法与实践为一体的全方位的知识体系,为公司组织层级进行规划、决策、执行提供良好的方法体系支撑。 【认证机构】 产品开发与管理协会(PDMA)成立于1979年,是…...
【MySQL】MySQL的安装,登录,配置和相关命令
文章目录 前言一. 卸载不需要的环境二. 获取MySQL的yum源三. 安装MySQL和启动四. 尝试登录MySQL方法1:获取临时root密码方法2:没有密码方法3:配置文件 五. 简单配置结束语 前言 本篇文章是基于云服务器;Linux:Centos7…...
攻防世界-WEB-php_rce
打开靶机链接 搜村ThinkPhP V5存在远程命令执行的漏洞 构建payload /index.php?sindex/think\app/invokefunction&functioncall_user_func_array&vars[0]system&vars[1][]ls 查询当前目录文件,没有发现flag。调整payload 得到flag文件,修…...
WRFDA资料同化实践技术
数值预报已经成为提升预报质量的重要手段,而模式初值质量是决定数值预报质量的重要环节。资料同化作为提高模式初值质量的有效方法,成为当前气象、海洋和大气环境和水文等诸多领域科研、业务预报中的关键科学方法。资料同化新方法的快速发展,…...
C++11新特性② | 左值、左值引用、右值与右值引用
目录 1、引言 2、值类别及相关概念 3、左值、右值 4、左值引用、右值引用 5、移动语义 5.1、为什么需要移动语义 5.2、移动语义定义 5.3、转移构造函数 5.4、转移赋值函数 6、标准库函数 std::move 7、完美转发 std::forward VC常用功能开发汇总(专栏文章…...
Python Opencv实践 - Harris角点检测
参考资料:https://blog.csdn.net/wsp_1138886114/article/details/90415190 import cv2 as cv import numpy as np import matplotlib.pyplot as pltimg cv.imread("../SampleImages/chinease_tower.jpg", cv.IMREAD_COLOR) plt.imshow(img[:,:,::-1])#…...
el-upload上传图片到七牛云或阿里云
(1)绑定上传地址,上传数据对象 <el-upload class"upload-demo" :action"uploadUrl" :data"uploadData":on-success"handleSuccess" :file-list"[]" :show-file-list"false"…...
Web jQuery—选择器、样式和效果
jQuery 选择器、样式和效果 代码下载 jQuery 介绍 JavaScript库:即 library,是一个封装好的特定的集合(方法和函数)。从封装一大堆函数的角度理解库,就是在这个库中,封装了很多预先定义好的函数在里面&a…...
Java和Kotlin的Field在继承中的不同表现
Kotlin是一个宣称与Java兼容性较好的语言,但在接触后发现一些技术还是有“概念上”的冲突,本文就记录下两者对象的Field(中文的说法有字段、域、属性、成员变量,下文若出现这些表达,指的都是这个东西)在继承…...
MySQL 子查询
文章目录 1.简介2.优势3.分类3.1 标量子查询3.2 行子查询3.3 列子查询IN 操作符ALL 操作符ANY/SOME 操作符 3.4 表子查询 4.关联子查询5.EXISTS 和 NOT EXISTS6.横向派生表7.附录参考文献 1.简介 子查询是另一个语句中的 SELECT 语句。 子查询也称为内查询(Inner …...
Ubuntu离线或在线安装CMake
首先下载适用于Ubuntu的CMake安装包,可以去官网下载,也可以通过下面的命令下载(需要联网): wget https://cmake.org/files/v3.22/cmake-3.22.1.tar.gz将下载的安装包进行解压: tar -xvzf cmake-3.22.1.ta…...
后端面试话术集锦第 十七 篇:MySQL面试话术
这是后端面试集锦第十七篇博文——MySQL面试话术❗❗❗ 1. 解释一下单列索引和联合索引 单列索引是指在表的某一列上创建索引。 联合索引是在多个列上联合创建索引。 单列索引可以出现在where条件的任何位置,而联合索引需要按照一定的顺序来写。在多条件查询的时候,联合索引…...
< 文件资源管理器 > 和 < 此电脑 > 有什么区别?
“文件资源管理器”和 “此电脑” 的区别 1. 文件和文件夹管理:2. 访问存储设备:3. 搜索功能:4. 视图和排序选项:5. 快速访问: 主要的区别1. 界面和用途:2. 显示内容:3. 导航: 在Win…...
线上问诊:可视化展示
系列文章目录 线上问诊:业务数据采集 线上问诊:数仓数据同步 线上问诊:数仓开发(一) 线上问诊:数仓开发(二) 线上问诊:数仓开发(三) 线上问诊:可视化展示 文章目录 系列文章目录前言一、全流程调度1.生产新…...
如何选择合适的HTTP代理服务器
HTTP代理服务器是一种常见的网络代理方式,它可以帮助用户隐藏自己的IP地址,保护个人隐私和安全。然而,选择合适的HTTP代理服务器并不容易,需要考虑多个因素。本文将介绍如何选择合适的HTTP代理服务器。 了解代理服务器的类型 HTT…...
Car Window Control Reset
大众汽车窗口自动升降失效,重置: 扣住5秒,重启汽车,试一下车钥匙,和再重试这个按钮,扣一下试一试...
序列号序列号
主板序列号 string str;str bios.GetSystemSerialNumber(); //wentai//str1 bios.GetSystemECSerialNumber();//CLogHelp::ITCLog(str1);LocalSN str.c_str();str bios.GetSystemVersion();LocalMode str.c_str();string str1;str1 bios.GetSystemSerialNumber();CLogHe…...
SSM(Spring-Mybatis-SpringMVC)
文章目录 1. 介绍1.1 概念介绍 2 SSM整合框架3. SSM功能模块开发4 测试4.1 业务层接口测试4.2 表现层接口测试 5.优化 -表现层数据封装6.异常处理 1. 介绍 1.1 概念介绍 SSM项目是指基于SpringSpringMVCMyBatis框架搭建的Java Web项目。 Spring是负责管理和组织项目的IOC容器和…...
MySQL——数据的删除以及MySQL中的约束
删除数据 删除表中的一行数据,也必须加上 WHERE条件,否则整列的数据都会被删除。删除语句: delete from 表名 where 条件; 他会将所有的符合条件的数据删除,如果不写条件,则表中的数据全部删除: 如果不添…...
静态路由 网络实验
静态路由 网络实验 拓扑图初步配置R1 ip 配置R2 ip 配置R3 ip 配置查看当前的路由表信息查看路由表信息配置静态路由测试 拓扑图 需求:实现 ip 192.168.1.1 到 192.168.2.1 的通信。 初步配置 R1 ip 配置 system-view sysname R1 undo info-center enable # 忽略…...
wordpress创建标签页/seo工程师
一、单继承情况: 解析: 创建B类的实例化对象时,执行初始化函数: 打印输出Enter B,当遇到super()调用父类初始化函数(此时是调用B类的父类A的__init__函数),输出Enter A、Leave B&…...
成都设计公司排行/厦门seo总部电话
Python在嵌入式开发中的应用引言在嵌入式开发中我们常常要进行数据分析、算法设计、原型验证、自动化测试、辅助工具设计,每个环节的工作效率对整体的开发都非常重要。选用一个好的辅助开发工具是非常必要的。Python作为一门解释型语言,容易上手…...
建站个人网站/快速排名工具免费查询
1.连接数据并显示一些信息 db_connet username:passwordip address/database name db_destroy 同上 db_import 文件名字 db_hosts -c address,svcs,vulns // 显示ip地址,服务器,漏洞数 db_vlns // 显示漏洞名字 2.nmap扫描 db_nmap -sS -nP ip addre…...
哪个网站可以免费做网页/软文推广策划方案
时间日期处理类(Date类,Calendat类) 在Java中获取当前时间,可以使用java.util.Date类和java.util.Calendar类完成。其中,Date类主要封装了系统的日期和时间的信息,Calendar类则会根据系统的日历来解释Date…...
网站正在建设中怎么办/夫唯老师seo
在上一篇文章中,我和你介绍了 join 语句的两种算法,分别是 Index Nested-Loop Join(NLJ) 和 Block Nested-Loop Join(BNL)。 我们发现在使用 NLJ 算法的时候,其实效果还是不错的,比通过应用层拆分成多个语句然后再拼接查询结果更方…...
深圳seo网站推广公司/seo网站整站优化
本节书摘来自异步社区出版社《PHP、MySQL和Apache入门经典(第5版)》一书中的第2章,第2.8节,作者: 【美】Julie C. Meloni,更多章节内容可以访问云栖社区“异步社区”公众号查看。 2.8 MySQL权限系统简介 PH…...