系统学习
算法、计网、操作系统、计组、数据库、java
HardyDragon_CC
谦虚使人进步
展开
-
通过 languagereactor 浏览器插件学英语
languagereactorhttps://www.languagereactor.com/观看 快捷操作总结https://www.languagereactor.com/安装插件后观看目录中的视频有双语字幕,目前(2021.9)插件支持chrome (当然edge也可)观看 快捷操作还可以将单词标注AP 模式指的是每一句之后自动暂停。总结可以培养自己的听力和看视频学习。...原创 2021-09-12 22:28:40 · 5353 阅读 · 0 评论 -
力扣刷题笔记--304 二维区域和检索 - 矩阵不可变 前缀和
304 二维区域和检索 - 矩阵不可变作者:AC_OIer链接:https://leetcode-cn.com/problems/range-sum-query-2d-immutable/solution/xia-ci-ru-he-zai-30-miao-nei-zuo-chu-lai-ptlo/来源:力扣(LeetCode)著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。思路:二维前缀和解决的是二维矩阵中的矩形区域求和问题。二维前缀和数组中的每一个格子记录的是「以当原创 2021-08-05 11:31:01 · 136 阅读 · 0 评论 -
一个关于java泛型的疑问
之前对如下代码的区别不了解Stack<Integer> stack = new Stack<Integer>();Stack stack1 = new Stack();现在写个demo理解下,主要区别为是否指定了泛型。import java.util.ArrayList;import java.util.Stack;/** * @Description: TODO * @author: HardyDragon * @date: 2021年07月28日 22:07原创 2021-07-28 22:24:22 · 78 阅读 · 0 评论 -
BFS/DFS处理二维矩阵抽象问题例题
这是自己搜集的有关bfs和dfs关于二维01数组的例题BFS烂橘子01矩阵图像渲染DFS岛屿数量岛屿最大面积BFS烂橘子这里队列存储数组下标的方式和其他的不同class Solution { int[] dr = new int[]{-1, 0, 1, 0}; int[] dc = new int[]{0, -1, 0, 1}; public int orangesRotting(int[][] grid) { int R = grid.length, C原创 2021-07-15 21:12:12 · 145 阅读 · 0 评论 -
java--动态代理学习笔记
动态代理学习笔记什么是代理设计模式?为什么使用动态代理?练习Demointerface UserServiceclass UserServiceImplclass ProxyInvocationHandler调用什么是代理设计模式?分为静态代理和动态代理。将原有业务代码不变更作为原则,通过代理类来实现对原有业务的功能扩展。为什么使用动态代理?使用动态代理解决静态代理需要手写多个代理类应对不同业务的情况练习Demointerface UserServicepackage ProxyDemo;原创 2021-07-14 16:53:45 · 73 阅读 · 0 评论 -
java--快速排序
快速排序什么是快速排序?双边循环法demo调试单边循环法什么是快速排序?排序动画演示网站属于交换排序的一种,利用了分治的思想,将序列根据 pivot (中间值) 划分为两个序列,在 pivot 左边的元素全部都比 pivot 值小,在右边的比 pivot 大,对子序列递归操作。双边循环法demo递归,利用辅助函数确定 pivot 的索引并排序。package sort;/** * @Description: TODO * @author: HardyDragon * @date: 20原创 2021-07-07 15:44:48 · 65 阅读 · 0 评论 -
java实现冒泡排序
java实现冒泡排序前言BubbleSort 冒泡排序调试使用交换 flag 优化调试总结前言C语言实现冒泡排序 在主函数调用之前使用C实现过冒泡,但是不够精炼,描述不够简洁,便使用java来重新输出一下。BubbleSort 冒泡排序排序动画演示网站(建议收藏)冒泡排序是将一个无序的序列(例如数组),从头开始两两比较交换直到有序的过程,每轮两两交换可以让后面部分元素有序。例如,{3,9,6} 当交换比较到 {3,6,9} 后两个元素(数组大小 3 - 1 = 2 )有序时,整体有序。下原创 2021-07-06 11:07:11 · 104 阅读 · 0 评论 -
二分查找笔记(1)
二分查找什么是二分查找?二分查找模板一什么是二分查找?在最简单的形式中,二分查找对具有指定左索引和右索引的连续序列进行操作。这就是所谓的查找空间。二分查找维护查找空间的左、右和中间指示符,并比较查找目标或将查找条件应用于集合的中间值;如果条件不满足或值不相等,则清除目标不可能存在的那一半,并在剩下的一半上继续查找,直到成功为止。如果查找以空的一半结束,则无法满足条件,并且无法找到目标。作者:力扣 (LeetCode)链接:https://leetcode-cn.com/leetbook/read/原创 2021-07-05 10:32:20 · 79 阅读 · 0 评论 -
mysql基础总结
mysql基础总结前言工具思维导图前言这段时间根据《MYSQL必知必会》这本书做了碎片化的输出,这里进行一个思维导图式的总结,回顾一下自己所学的同时总结一下知识点,方便自己日后查看。这本书重点讲解了mysql的增删改查,其中先讲查的内容占了三分之二。后面又讲了视图、游标也是关于查询的,存储过程和触发器以及事务管理的基本概念,期间也有关于建表和用户管理的相关知识。总体上阅读没有什么困难,比较好上手,之前看这本书是打算巩固一下mysql基础,然后打算去牛客网刷题。那么接下来关于mysql这部分可能会接着碎原创 2021-07-01 16:03:30 · 89 阅读 · 3 评论 -
mysql笔记(24)--安全管理
安全管理什么是安全管理?如何管理用户?创建用户删除用户设置访问权限修改密码查看当前使用的用户名思维导图--总结什么是安全管理?查询当前所有用户USE mysql;SELECT USER FROM `user` u ;如何管理用户?创建用户CREATE USER ben identified BY '12345'USE mysql;SELECT USER FROM `user` u ;IDENTIFIED BY指定的口令为纯文本,MySQL将在保存到user表之前对其进行加密。原创 2021-06-30 10:28:00 · 77 阅读 · 1 评论 -
设计模式笔记--工厂模式
设计模式笔记--工厂模式什么是工厂模式?实例什么是工厂模式?有一个接口和一些实现该接口的实现类,一个工厂类可以根据需求返回不同实现类的实例对象。当需要实现类的对象时,不通过实现类直接实例化,而是告诉工厂类自己的需求来获得实例对象;实例Gitee Web IDE...原创 2021-06-29 22:23:19 · 71 阅读 · 0 评论 -
mysql笔记(23)--管理事务处理
管理事务处理什么是事务处理?如何使用事务管理?使用ROLLBACK使用COMMIT使用保留点取消自动提交思维导图--总结什么是事务处理?MyISAM 不支持事务处理, InnoDB 支持。回忆 InnoDB 不支持全文本搜索, MyISAM 支持。事务处理(transaction processing)可以用来维护数据库的完整性,它保证成批的MySQL操作要么完全执行,要么完全不执行。利用事务处理,可以保证一组操作不会中途停止,它们或者作为整体执行,或者完全不执行(除非明确指示)。如果没有错原创 2021-06-29 11:30:24 · 54 阅读 · 0 评论 -
刷题笔记(21)--平衡二叉树
平衡二叉树技巧:递归返回值可以表示两种状态。补充:递归计算二叉树高度平衡二叉树技巧:递归返回值可以表示两种状态。class Solution { // 递归辅助函数,其返回值有两种,如果树平衡返回的是树的深度(左右子树取最大值);如果不平衡,返回 -1; private int depthTree(TreeNode root){ if(root == null) return 0; int ld = depthTree(root.left);原创 2021-06-29 10:46:42 · 65 阅读 · 0 评论 -
mysql笔记(22)--使用触发器
使用触发器什么是触发器?如何使用触发器?创建触发器删除触发器INSERT触发器DELETE触发器UPDATE触发器思维导图--总结什么是触发器?在事件发生时自动执行所有这些例子的共同之处是它们都需要在某个表发生更改(增删改)时自动处理。这确切地说就是触发器。如何使用触发器?创建触发器USE mysql_must_study;DELIMITER $$$$CREATE TRIGGER newproductAFTER INSERTON products FOR EACH ROWSEL原创 2021-06-28 11:28:40 · 122 阅读 · 1 评论 -
刷题笔记(20)--对称的二叉树
对称的二叉树递归,辅助递归函数check() ,传入两个参数一个原始结点,另一个镜像结点。最小问题是镜像的判断,结点的左子节点 == 镜像过后的左子节点(即原来的右子结点),同理右子结点。。。/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) {原创 2021-06-28 09:31:00 · 47 阅读 · 0 评论 -
搜狗双拼输入法--快速入门
搜狗双拼输入法--快速入门什么是双拼?如何使用如何记忆键盘布局?总结什么是双拼?由声母和韵母拼汉字,两个字母可表示一个汉字,减少误触和提高速度(据说熟练后可以和全拼碰一碰)。全拼 使用全拼输入需要键入 quanpin ,但是使用双拼只需要键击四个(qrpn),好家伙,差不多节约一半时间。如何使用来看看搜狗全拼的键盘布局所以使用双拼输入法打出全拼只需要 全 的声母 q 对应 Q 和 韵母 uan 对应 R , 所以 全 可以用 QR 两个键表示;同理 拼 用PN两个键表示。如何记忆键盘布局?原创 2021-06-27 17:48:34 · 13450 阅读 · 0 评论 -
mysql笔记(21)--使用游标
使用游标什么是游标?为什么需要游标?如何使用游标?如何创建游标?如何打开和关闭游标?如何使用游标数据?实际处理数据案例总结什么是游标?游标(cursor)是一个存储在MySQL服务器上的数据库查询,它不是一条SELECT语句,而是被该语句检索出来的结果集。在存储了游标之后,应用程序可以根据需要滚动或浏览其中的数据。MySQL游标只能用于存储过程(和函数)。为什么需要游标?有时,需要在检索出来的行中前进或后退一行或多行。这就是使用游标的原因。如何使用游标?如何创建游标?在创建存储过程中,原创 2021-06-27 11:01:23 · 101 阅读 · 0 评论 -
刷题笔记(19)--把数组排成最小的数
把数组排成最小的数根据整形数组生成字符串数组对字符串数组使用内置函数 sort(排序数组,比较器) 进行排序,排序规则是如果 s1+ s2 的字典序大于 s2 + s1,说明 s1要放在 s2 后面,反之。compareTo 结果大于0,说明要排序,将两个参数交换位置。最后拼接排序后的字符数组返回字符串即可class Solution { public String minNumber(int[] nums) { String[] strs = new String原创 2021-06-27 10:02:37 · 51 阅读 · 0 评论 -
计组笔记(4)--海明校验码
海明校验码/汉明校验码海明码是什么?需要多少个校验位?校验位放哪里?怎么对信息位进行分组?如何纠错?总结海明码是什么?首先需要知道什么是奇偶校验码:在 n 位有效信息位前 或 后添加一个校验码改变整个校验码的1的个数。举个栗子,如果我们使用偶校验的方式检查数据是否出错:有1010这个信息位,其中1的个数刚好为偶数,说明数据正确。我们在其有效信息位前(也就是奇偶校验位)添加一位0,表示数据正确。这种校验方式的缺点就是只能判断数据是否出错,但是无法确定哪里出错,也就是没有纠错能力。遇到出错就只能重传原创 2021-06-26 21:20:35 · 563 阅读 · 0 评论 -
mysql笔记(20)--使用存储过程
使用存储过程什么是存储过程?为什么使用存储过程?如何创建存储进程?如何删除存储过程?如何使用存储过程?如何给存储过程添加参数?来看看 IN 在存储过程中的使用,传参功能?查询'存储过程'的信息总结:什么是存储过程?存储过程简单来说,就是为以后的使用而保存的一条或多条MySQL语句的集合。可将其视为批文件,虽然它们的作用不仅限于批处理。也叫作 调用为什么使用存储过程?方便复用复杂的sql,提高性能。。。如何创建存储进程?DROP PROCEDURE IF EXISTS mysql_must_stu原创 2021-06-26 11:00:02 · 96 阅读 · 0 评论 -
刷题笔记(18)--剪绳子II(贪心)
剪绳子II这题和 前面的剪绳子n的取值范围不同,涉及到了大数会越界的问题,需要每次都对其取余。n=2时,特殊解为11=1;n=3时,特殊解为12=2;n=4,2*2=4;n>4时,最优解应该是包含尽可能多的长度为3的子绳。例如n=6,最优解为33,而不是22*2;使用 long 存储结果还不够,还需要做到每次的中间结果都取余。class Solution { public int cuttingRope(int n) { // 对于 2 3 返回 1 和 2是特原创 2021-06-26 08:48:51 · 74 阅读 · 0 评论 -
mysql笔记(19)--使用视图
什么是视图?它不包含表中应该有的任何列或数据,它包含的是一个SQL查询,貌似也叫作虚拟表。视图仅仅是用来查看存储在别处的数据的一种设施。视图本身不包含数据,因此它们返回的数据是从其他表中检索出来的。在添加或更改这些表中的数据时,视图将返回改变过的数据。因为视图不包含数据,所以每次使用视图时,都必须处理查询执行时所需的任一个检索。视图影响性能。为何要使用视图?在视图创建之后,可以用与表基本相同的方式利用它们。可以对视图执行SELECT操作,过滤和排序数据,将视图联结到其他视图或表,甚至能添加和原创 2021-06-25 10:01:41 · 129 阅读 · 1 评论 -
刷题笔记(17)--整数拆分/剪绳子(动态规划)
剪绳子相同题目:整数拆分使用动态规划解题:使用dp数组存储直到 n 的最大乘积。dp[n] 就是要返回结果dp[0] = dp[1] = 0 : 这意味dp数组从索引 2 开始递推dp[i] 存放 i 的最大乘积dp[i] 有两种情况:假设 j 是其中一段的长度,另一个乘积有两种可能只有两段 j、i-j ; 其乘积是 j * (i-j) :题目要求 m>1,所以至少两个,即 j 不能等于 0;或者 j 和 dp[i-j] 多段构成,dp[i-j] 是之前存储的 i-j 的最大乘原创 2021-06-25 08:50:35 · 63 阅读 · 0 评论 -
mysql笔记(18)--创建表,修改表结构
关于使用sql创建表的样例:-- mysql_must_study.orders definitionCREATE TABLE `orders` ( `order_num` int NOT NULL AUTO_INCREMENT, `order_date` datetime NOT NULL, `cust_id` int NOT NULL, PRIMARY KEY (`order_num`), KEY `fk_orders_customers` (`cust_id`), CON原创 2021-06-24 10:25:09 · 127 阅读 · 1 评论 -
刷题笔记(16)--机器人的运动范围(BFS搜索)
机器人的运动范围(BFS搜索)DFS利用递归栈实现,BFS使用队列实现。BFS可以套模板,这里需要自己实现的就是求数位之和函数,利用整除和取余运算操作。class Solution { public int movingCount(int m, int n, int k) { if(k == 0){ return 1; } Queue<int[]> queue = new LinkedList<>原创 2021-06-24 09:36:41 · 91 阅读 · 0 评论 -
计网笔记(7)--编码,调制
非归零编码:规律(高1 低0);缺点:没有检错功能,无法缺点开始和结束位置。曼切斯特编码:结合了1/4/5的优缺点,将时钟周期和信号放在一起。用的频带多,但是方便接受。差分曼切斯特编码:两部分相同为1,不同为0;又比2抗干扰强。归零编码:和 非归零编码 功能类似,但是每次都会回到0,称为归零。反向不归零编码:信号电平翻转表示0,信号不变表示1;调幅+调相 = QAM音频数字化的三步走(PCM脉码调制):抽样、量化、编码(本质将模拟信号->数字信号)总...原创 2021-06-23 11:19:01 · 352 阅读 · 0 评论 -
mysql笔记(17)--UPDATE、DELETE
确定要更新的表名set 更新的值,更新多个使用逗号分隔;同样可以使用select的结果更新。确定更新行的where 过滤条件UPDATE customers SET cust_email = 'elmer@163.com'WHERE cust_id = 10005;在表名前使用 ignore 更新多行时,可以忽略更新失败的行,更新其他成功的。删除和更新都要注意指定where条件,不然对所有行生效就麻了。DELETE不需要列名或通配符。DELETE删除整行而不是删除列。为了删除指..原创 2021-06-23 10:32:12 · 118 阅读 · 1 评论 -
刷题笔记(15)--矩阵中的路径
矩阵中的路径矩阵搜索类题目,可以使用dfs递归查找;dfs函数作用:返回在矩阵board中,是否存在一个字符串数组word,从第i行j列开始逐个匹配word的每一个元素,若存在返回true,反之返回false;结束条件:行列超出界限,改元素之前访问过返回值:对元素上下左右进行递归查找,取其或的布尔结果;小操作:在子问题的操作上还要考虑一点,我们使用直接修改值的方式来表示矩阵元素已经被访问过,之后递归如果不想受到影响,还需要在得到res结果后复原该位置的元素值,为了下次递归能够访问原创 2021-06-23 09:43:35 · 87 阅读 · 0 评论 -
计组笔记(3)
真值:实际把带正负号的数值(人类习惯)机器值:把正负号数字化的数(存在机器的样子)BCD码:使用二进制编码的十进制数。8421:表示5(0101)余3码2421码英文字符在计算机中存储使用ASCII码。a 97 , A 65 ;其中ASCII可印刷字符范围是32-126,其余为控制、通信字符。汉字的表示和编码:GB2312-80、UTF-8一个汉字占2个字节byte,其编码一定大于一个字节的128,避免了和ascii的冲突。区位码就是一个94*94的数组。字符串在很多语言的原创 2021-06-22 19:03:49 · 100 阅读 · 0 评论 -
OS笔记(6)--进程控制
进程几种状态:运行就绪堵塞创建终止原创 2021-06-22 18:41:26 · 67 阅读 · 0 评论 -
mysql笔记(16)--INSERT
插入语句的使用方式:插入完整的行:需要指定表名和被插入到新行中的值。INSERT INTO customers VALUES(NULL, 'Pep E. LaPew', '100 Main Street', 'Los Angeles', 'CA', '90046', 'USA', NULL , NULL );这是表结构:分析:对于第一个参数为NULL,理由?第一列cust_id原创 2021-06-22 12:32:40 · 79 阅读 · 2 评论 -
刷题笔记(14)--旋转数组的最小数字
旋转数组的最小数字class Solution { public int minArray(int[] numbers) { int left = 0; int right = numbers.length - 1; // 利用二分查找的思想 使得left 和 right 落在最中间的两个位置,取其中最小的值 while(right - left > 1){ // 对左右去重原创 2021-06-22 09:23:40 · 56 阅读 · 0 评论 -
mysql笔记(15)
两个最常使用的引擎为 MyISAM 和 InnoDB ,前者支持全文本搜索,而后者不支持.为什么要使用全文本搜索?使用 like 或 正则 是有极限的。由于使用了索引,其性能更好,查询速度更加快。类似使用(散列表)哈希表存储。如何使用全文本搜索?创建表时使用 MyISAM 数据库引擎创建表时明确 索引,一般在创建表时启用全文本搜索。在定义之后,MySQL 自动维护该索引。在增加、更新或删除行时,索引随之自动更新。MATCH() 函数 指定被搜索的列, Against() 指定要使用原创 2021-06-21 10:43:51 · 79 阅读 · 1 评论 -
刷题笔记(13)
斐波那契数列直接使用递归会超时,因为包含了太多的重复计算,为了减少重复计算,使用哈希表存储之前计算的结果,再次遇到直接查表就可以了。需要注意的是判断map中是否存在某一键返回布尔的方法是 containsKey() ;class Solution { Map<Integer,Integer> map = new HashMap<>(); public int fib(int n) { if(n<2){ return原创 2021-06-21 08:47:49 · 45 阅读 · 0 评论 -
计网笔记(6)
TCP/IP原创 2021-06-20 11:00:18 · 92 阅读 · 0 评论 -
mysql笔记(14)
union(并查询/组合查询) 类似 与 where和or的搭配,例如:UNION指示MySQL执行两条SELECT语句,并把输出组合成单个查询结果集。SELECT vend_id ,prod_id ,prod_price FROM products p WHERE prod_price <=5UNION SELECT vend_id ,prod_id ,prod_price FROM products p WHERE vend_id IN (1001,1002);---SEL原创 2021-06-20 10:40:19 · 68 阅读 · 0 评论 -
刷题笔记(12)
重建二叉树/** * Definition for a binary tree node. * public class TreeNode { * int val; * TreeNode left; * TreeNode right; * TreeNode(int x) { val = x; } * } */class Solution { // 初始化字段:前序、中序、当前要处理的前序遍历首元素(每次处理完后该值加1,即处理下一个根结点)原创 2021-06-20 09:56:18 · 55 阅读 · 0 评论 -
mysql笔记(13)--联结
使用表别名目的:缩短mysql语句在单条select中重复使用表名对表使用别名 貌似可以省略 as ,之前就是那样做的,不知道其他的dbms可不可以。SELECT concat(vend_name,'(',vend_country,')') AS vend_titleFROM vendors v ORDER BY vend_name ;SELECT cust_name ,cust_contact FROM customers AS c ,orders AS o,orderitems原创 2021-06-19 10:30:29 · 67 阅读 · 0 评论 -
刷题笔记(11)
替换空格生成新的字符数组,String的构造函数三个参数,一个是已有的字符数组,第二个是从第几个字符开始赋值,第三个是复制多少个。class Solution { public String replaceSpace(String s) { int length = s.length(); int size = 0; char[] arr = new char[length*3]; for(int i=0;i&l原创 2021-06-19 09:23:26 · 47 阅读 · 0 评论 -
mysql笔记(12)
外键(foreign key) 外键为某个表中的一列,它包含另一个表的主键值,定义了两个表之间的关系。等值联结(equijoin)/内部联结如果数据存储在多个表中,怎样用单条SELECT语句检索出数据?答案是使用联结在from后添加多个表,然后注意使用完全限定名区分,利用WHERE子句建立联结关系。应该保证所有联结都有WHERE子句,否则MySQL将返回比想要的数据多得多的数据SELECT vend_name ,prod_name,prod_priceFROM vendors v,product原创 2021-06-18 10:31:56 · 69 阅读 · 2 评论