自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

致宁的大博客!

记录自己的每一次进步啊!

  • 博客(139)
  • 收藏
  • 关注

原创 详谈HashMap源码以及哈希碰撞

0.底层结构首先看HashMap的底层结构和基本方法transient Node<K,V>[] table; //数组,hash表的桶//hash表每个桶下的链表 Node(int hash, K key, V value, Node<K,V> next) { this.hash = hash; this.key = key; ...

2019-08-05 20:26:35 326

原创 数据库事务、隔离级别、脏读、不可重复读、幻读

1. 事务就是一组DML语句组成,这些语句在逻辑上存在相关性,这一组DML语句要么全部成功,要么全部失败,是一个整体。MySQL提供一种机制,保证我们达到这样的效果。事务还规定不同的客户端看到的数据是不相同的。(《数据库系统概念》)是数据库种的一个单独的执行单元(Unit),由高级语言编写用户程序的执行所引起。当更改数据成功时,在事务中更改的数据就会被commit,不会再改变。否则,事务就会取...

2019-07-05 23:38:37 127

原创 测试流程详解

首先回顾一下,软件测试的生命周期需求分析→测试计划→ 测试设计、测试开发→ 测试执行→ 测试评估然后开始今天的讲解,测试流程:需求分析 -> 测试计划 -> 编写测试用例 -> 测试执行 -> 测试报告编写-------------------------------------准备工作----------------------------------------...

2019-07-05 15:54:02 1001

原创 进程(查看、关闭、创建)、孤儿进程、僵尸进程、1号进程

1.操作系统定义:是一个安装在计算机硬件上的软件目的:为了让计算机更加好用功能:合理统筹管理计算机软硬件资源管理:先描述、再组织操作系统通过硬件驱动管理、操作各个硬件,如下图:2.进程操作系统中通过pcb(进程控制块)控制一个进程pcb:就是一个结构体,是操作系统用来存储描述一个进程的一串数字。叫taskstruct,包括:上下文数据、内存指针、程序计数器。进程:正在进行中的程...

2019-07-05 14:26:48 2065

原创 [练习]QQ登陆界面-测试用例的编写

(Test Case)是为了实施测试而向被测试系统提供的一组集合,包括:测试环境、操作步骤、测试数据、预期结果等要素。一条测试用例最终只有一个结果。一个功能点至少有一个测试用例。测试用例数/功能点数 = 测试的覆盖率(越大越全面)为什么有测试用例?1.全面的测试所有的功能2.衡量测试覆盖率3.易于对新版本重复测试4.大量测试会影响测试效率接下来,编写一组关于QQ登陆界面...

2019-04-25 17:32:57 23305

原创 TCP的三次握手&四次挥手

1. 三次握手三次握手过程:第一步:client 发送 syn 到server 发起握手;第二步:server 收到 syn后回复syn+ack给client;第三步:client 收到syn+ack后,回复server一个ack表示收到了server的syn+ack(此时client的端口的连接已经是established)。从应用层角度深度理解TCP三次握手和队列:...

2019-04-20 18:32:36 173

原创 【简单】88. 合并两个有序数组

用两个数组的最后一个值做比较,如果nums2比较大,那么就把nums2的最后一个值放在nums1的最最后面,然后nums2的最后一位- -;否则,就把nums1的最后一位放在最最后面,nums1的最后一位 - -;循环截止的条件是数组2的最后一位<0。题中说明两个list已经是升序排列的,而且nums1的后面有留出空间放数字,所以把nums2的值从后面插入,元素移动的会相对少一些。需要注意的是两个数组分别为空的场景~~

2023-03-19 17:01:54 202

原创 【leetcode】(中等)dp 64. 最小路径和

class Solution { public int minPathSum(int[][] grid) { int m =grid.length, n = grid[0].length; for(int i =0; i<m; i++){ for(int j=0; j<n; j++){ ...

2020-03-15 14:41:49 364

原创 【leetcode】(中等)236. 二叉树的最近公共祖先

class Solution { public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q) { //结束条件 if(root == null) return root; //root即为最近公共祖先 if(root == ...

2020-03-15 13:56:44 318

原创 【leetcode】(中等)347. 前 K 个高频元素 hash & heap

class Solution { public List<Integer> topKFrequent(int[] nums, int k) { //用map统计频数 HashMap<Integer,Integer> map = new HashMap<>(); for(int i:nums){ ...

2020-03-15 12:54:44 210

原创 【leetcode】(中等)递归 24.链表中相邻的结点交换

看到了一个很厉害的递归,逐行注解一下写递归不要关注里面的内容,只关注它的功能。内容的话,想好终止条件,和最后一次循环的操作思路。比如这个递归到最深的一层就是,head所指->next所指->null最后要得到 next所指 -> head所指 -> null/** * Definition for singly-linked list. ...

2020-03-14 15:33:44 215

原创 【leetcode】(中等)dp 647.回文子串数 5. 最长回文子串

1.回文子串数这道题我是用dp,创建一个dp二维数组,用来存放dp[i][j]这个字串是不是回文串。也可以表达:如果最后一个字符和第一个字符相等,而且中间的子串是一个回文串,那么i-j就是回文子串dp[ i ] [ j ] = dp[ i+1] [j-1]&& ( s.charAt( i ) == s.charAt( j ) )要注意的是,中间的...

2020-03-14 13:52:58 236

原创 shell命令删除30天以前的log日志文件

find . -type f -mtime +30 -exec rm -rf {} \; 在当前目录下查找文件,时间要大于30天前,将上一步查询的结果rm删除并且递归删除。

2020-03-12 16:31:13 2176

原创 SED实用基础

sed是一种linux的轻量级流编辑器。(字符串截取命令)主要用来对数据进行选取、替换、删除、新增。格式:sed [选项] ‘[动作]’ 文件名sed ‘/正则表达式/p’1. 选项-n 会只将处理后的数据输出到屏幕-e 多项编辑-i 直接修改文件sed 's/old/new/g' text.txt 预修改,只是缓存并没修改sed -i 's/ol...

2020-03-12 16:21:13 100

原创 AWK实用基础

shell编程中的awk命令非常强大,里面可以加入循环、判断等,因此也被称为awk编程。一般情况下awk更多的是获取指定列内容,格式化输出等。格式如下:awk ‘条件1 {动作1} 条件2 {动作2} ……’ 文件名awk ‘/正则表达式/’条件相当于输入,没有条件就会把整个文件内容执行后面的动作。动作相当于输出,流程处理后格式化输出。1. 输出列$num...

2020-03-12 13:39:40 158

原创 vim的三种模式以及相互转换

一共有12中模式最常用三种: 普通模式 删除、撤销、恢复撤销 插入模式 插入数据,进行编辑 底行模式 保存退出 vim设置 普通模式完成编辑文件最常见的操作光标移动 hjkl ——左右上下 w/b——按单词右/左移动 ctrl+f/b——向下/上翻页 gg/G——文档首行/尾行 复...

2020-02-19 01:51:53 2462 1

原创 Python中的类与对象

一、定义类class 类名: 类内容(包括属性、函数)二、类里面的函数1. 类函数是指不需要创建类对象实例,就可以调用的函数在函数前加@classmethod标识class Student: name='hx' age = 12 @classmethod def classmethod(cls): print(...

2020-02-06 16:00:54 128

原创 python3六个基本数据类型

摘取Python3教程:https://www.runoob.com/python3/python3-data-type.htmlPython3 中有六个标准的数据类型:Number(数字)String(字符串)List(列表)Tuple(元组)Set(集合)Dictionary(字典)Python3 的六个标准数据类型中:不可变数据(3 个):Number(数字)、Stri...

2020-02-04 15:40:35 662

原创 Python中的序列

视频资源:B站小甲鱼视频博客参考:https://www.cnblogs.com/forwardfeilds/p/10451794.htmlPython的序列类型非常丰富,包括了列表(list),元组(tuple),字符串(str), 字节数组(bytes),队列(deque)能否存放不同类型数据容器序列:能存放不同类型的数据。存放的一般是引用。list、tuple、collectio...

2020-01-31 16:47:45 274

原创 【LeetCode】SQL(简单)627. 交换工资

思路:就像不用中间变量交换两个数值一样,还记得有一种方法是用异或,所以可以用这种思路想这道题代码:update salary set sex=char(ascii('f')+ascii('m')-ascii(sex));...

2019-12-25 15:47:06 164

原创 【LeetCode】SQL(简单)182.查找重复的电子邮箱

思路:通过看评论大神和解题有以下几种方法解决:通过多表联查;两次访问Person表,找到id不同但是Email相同的Email并输出,需要注意的是要把输出结果进行去重(distinct)。通过分组;将Person表按照Email分组,并count出每个组中的Email总数,将大于1的Email输出。【最快】代码:select distinct p1.Emailfrom Pers...

2019-12-25 15:30:03 245

原创 【LeetCode】(简单)7.整数反转

思路:1.一开始是想转成字符数组,反转之后再转成int类型,不知道怎么就一直通过不了。看了评论和解题,将x的最后一位迭代10,然后更新最后一位。2.就像这样,res = res10 + x%10 ; x /=10;代码:class Solution { public int reverse(int x) { //防止数据溢出,使用long long...

2019-12-17 23:29:51 83

原创 【LeetCode】(简单)14.最长公共前缀(java,substring)

import java.util.*;class Solution { public String longestCommonPrefix(String[] strs) { if(strs.length ==0) return ""; String res = strs[0]; for(int i =1; i<strs.lengt...

2019-12-17 17:16:11 173

原创 【LeetCode】(简单)20. 有效的括号(java,Satck解决)

代码:思路在备注都很清楚了import java.util.*;class Solution { public boolean isValid(String s) { if(s == null) return false; Stack<Character> stack = new Stack<>(); cha...

2019-12-17 16:44:39 129

原创 【LeetCode】(简单)141.环形链表(双指针法)

思路:链表类的题,一般要想到指针,双指针法。链表相交,链表成环等。在成环链表中,快慢指针一定会相遇,就比如说在操场跑步,同一起点,快的人跑两圈,慢的人只跑一圈,第一圈一定不会相遇,第二圈一定会相遇。那么如果不是操场那样的圈,而是笔直的公路,那就是快的人先到达终点,然后结束。代码:public class Solution { public boolean hasCycle(L...

2019-12-17 15:51:19 174

原创 【LeetCode】(简单)231. 2的幂(3种思路)

思路:最普通的思路就是无限的给这个n除以2,看它最后是不是等于1。但是这个方法特别耗内存,性能较低。看leetcode评论说,2的幂一定可以被2的31次幂整除,这也可以判断。最最最精妙的方法就是用二进制来做。如果这个数的二进制只有一位1,那就是2的幂。那怎么判断是不是只有1位呢。举个例子,8的二进制是1000,7的二进制是0111,在《剑指offer》上有过怎么消除最低位的1的方法。那就...

2019-12-17 15:26:37 109

原创 【LeetCode】(简单)155. 最小栈(空间解决时间,2种方法)

思路:要求O(1)复杂度找到,不遍历整个集合是不可能的。但如果牺牲空间复杂度来满足这个要求 也是可以的。有两种思路:用两个栈。一个存储元素本身,一个存储当前最小的元素。那么入栈就得两个都入,出栈也是。用一个栈,但是存两倍个数的元素。第一层存元素本身,第二层存当前最小值,入栈入两次,第二次判断最小元素并存入。出栈也是。接下来就只看第二种方法的代码:class MinStack {...

2019-12-16 17:14:23 458

原创 【LeetCode】(简单)26. 删除排序数组中的重复项(双指针法)

代码:至于思路都已经备注了,双指针法class Solution { public int removeDuplicates(int[] nums) { if(nums.length<=1) return nums.length; //mark是标记插入位置的,comp是标记下一个元素和谁比较 int mark =1; int c...

2019-12-16 16:00:56 100 1

原创 【LeetCode】(简单)160. 相交链表(四种方法,java)

思路1:1.先确定两个链表有没有相交2.有的话,最后一个结点一定相同3.遍历两个链表到末尾,判断相同与否,顺便计算两个链表长度4.计算长度差,然后求出相交链表的头节点代码1:public class Solution { public ListNode getIntersectionNode(ListNode headA, ListNode headB) { ...

2019-12-16 15:33:02 209

原创 【LeetCode】(简单)9. 回文数

思路1:将问题转为判断回文字符串代码1:class Solution { public boolean isPalindrome(int x) { if(x <0) return false; if(x ==0) return true; //int转为String String str = I...

2019-12-15 15:16:29 100

原创 【LeetCode】(简单)21. 合并两个有序链表

思路:这个和归并排序一样,两个数组中先挑小一点的连接到新链表上,当有一个链表遍历完成之后,将另一个链表的所以结点都续到新节点最后即可。代码:class Solution { public ListNode mergeTwoLists(ListNode l1, ListNode l2) { //新链表的起点 ListNode newhead ...

2019-12-15 14:27:59 104

原创 【LeetCode】(简单)169. 多数元素

思路:出现次数大于数组长度的一半,意思就是,排序后n/2下标一定是那个数,不然就小于了一半。代码:import java.util.*;class Solution { public int majorityElement(int[] nums) { Arrays.sort(nums); return nums[nums.length/...

2019-12-15 14:14:12 77

原创 【LeetCode】(简单)235. 二叉搜索树的最近公共祖先

思路:1. 还是那句话,关于二叉树的问题一定要想到用递归,而递归是不关心方法的具体实现的。2. 再想想二叉搜索树的特点,root的值是比左边大,比右边小的。所以如果p和q一个在左一个在右,那最近的公共祖先就是root。3. 如果都在左边,那就把left结点传进方法中作为root结点,继续寻找公共祖先。反之。代码:class Solution { publi...

2019-12-15 14:06:12 91

原创 【LeetCode】(简单)136. 只出现一次的数字

思路:1. 利用map集合存储,key存储数值,value存储出现次数;空间复杂度为O(n),时间复杂度为O(n)2. 利用异或运算,首先知道一个结论,i ^ i = 0; 0 ^ i = i ; 所以两个相同的数异或等于0;在和出现一次的那个数值进行异或得到的就是那个数;空间复杂度O(1),时间复杂度O(n)代码:以第二种简单的方法为主:class Solution...

2019-12-15 13:51:11 100

原创 【LeetCode】(简单)344. 反转字符串

思路:1. 最偷懒的应该是把字符数组从后向前打印一遍,但是实质上并没有更改数组内容,不推荐;2. 和交换两个元素一样,把数组从中间分开,两两交换;而交换的方法就有两种种,异或、开辟新空间。3. i ^= j; j ^= i; i ^= j; 这样就交换了i和j的值; 可以这么理解,i和j异或后,得到了一个中间的钥匙,i和这个钥匙异或就得到了j,反之,j和这个钥匙异或就得到了i;...

2019-12-15 13:23:45 115

原创 【LeetCode】(简单)557. 反转字符串中的单词 III

思路:最好想到的就是用空格把单词分开,挨个反转,最后再把空格加上。至于这个反转,StringBuilder和StringBuffer中有方法可以直接用。当然自己写也可以,完全没难度。代码:class Solution { public String reverseWords(String s) { String[] strs = s.split(" ");...

2019-12-14 16:47:57 75

原创 【LeetCode】(简单)292. Nim 游戏

思路:先说结论:作为先手,如果堆中石头的数量n不能被4整除,那么你总是可以赢得 Nim 游戏的胜利。原因:1.小于3块的话,你作为先手就可以全拿走,结束游戏。2.如果刚好4块的话,作为先手一定会输,因为对手一定会拿走最后一块。所以在自己的回合中应避免自己剩下4个。3.但是如果不是4倍数的话,就可以控制将4个留给对手,那么自己必定会赢。比如7,那就先把后四个排除,剩下3个...

2019-12-14 16:24:49 91 1

原创 【LeetCode】(简单)104. 二叉树的最大深度(一行代码实现)

思路:关于二叉树的题目,一定要想到递归;递归的话,无需关注方法内部怎么实现的,只需使用它即可。有一个寻求最大深度的方法,它的作用就是寻找最大深度,那么一个结点的所构成树的最大深度就是寻求其左右子树的最大深度较大的那个 加上root的这一层深度,也就是加1;具体看代码。代码:import java.lang.Math;class Solution { publ...

2019-12-14 15:21:52 115

原创 信息素养与信息检索

信息与人的关系信息是一种资源可以被人感知人类认识的基础信息素养构成:知识、道德、意识(不会就查)、能力信息资源的类型:加工深度(0、1、2、3)、载体形式(印刷、声像、机读、缩微)、出版形式(文献、电子、网络)、传递范围、表达形式按加工程度分:(分散、无序、多 —> 集中、有序、少)一次为主要利用对象零次信息资源:书稿、图纸、日记一次信息资源:期...

2019-12-08 22:13:09 2588

原创 shell中head、tail使用

headhead [-n -k]…[file]…显示前10行可以认为数字前默认为+号1、head -10 file.txt 【省略了n,所以前面的-是短横线】2、head -n 10 file.txt 【默认含义】3、head -n +10 file.txt 【加上+号】除最后k行,显示其它所有可以认为第k行分界,显示上半部分head -n -10 file.txt 【数字前面加...

2019-11-29 23:01:22 1929

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除