Other
Leetcode1020飞地的数量-----深度优先搜索
题目表述 给你一个大小为 m x n 的二进制矩阵 grid ,其中 0 表示一个海洋单元格、1 表示一个陆地单元格。
一次 移动 是指从一个陆地单元格走到另一个相邻(上、下、左、右)的陆地单元格或跨过 grid 的边界。
返回网格中 无法 在任意次数的移动中离开网格边界的陆地单元格的数量。
示例: 深度优先搜索 该题思路和岛屿数量比较相似,根据飞地的定义,如果从一个陆地单元格出发无法移动到网格边界,则这个陆地单元格是飞地。因此可以将所有陆地单元格分成两类:第一类陆地单元格和网格边界相连,这些陆地单元格不是飞地;第二类陆地单元格不和网格边界相连,这些陆地单元格是飞地。
我们可以从网格边界上的每个陆地单元格开始深度优先搜索,遍历完边界之后,所有和网格边界相连的陆地单元格就都被访问过了。然后遍历整个网格,如果网格中的一个陆地单元格没有被访问过,则该陆地单元格不和网格的边界相连,是飞地。
在实现时,不用将整个二维数组全部遍历,只用遍历网格的边界即可,找边界值为1的坐标,dfs搜索与该边界连通的值即可。
class Solution { private int[][] directions = {{1,0},{-1,0},{0,-1},{0,1}}; public int numEnclaves(int[][] grid) { int count = 0; int m = grid.length; int n = grid[0].length; boolean[][] visited = new boolean[grid.length][grid[0].length]; for(int i = 0;i < m; i++){ dfs(i,0,visited,grid); dfs(i,n-1,visited,grid); } for(int i = 1; i < n-1;i++){ dfs(0,i,visited,grid); dfs(m-1,i,visited,grid); } for(int i = 0; i < m;i++){ for(int j = 0; j < n; j++){ if(grid[i][j] == 1 && !
20213408冯旷霖Python技能树及CSDN MarkDown编辑器测评
班级:2134姓名:冯旷霖学号:20213408实验教师:王志强实验日期:2022年4月19日必修/选修:公选课
CSDN文章链接:(4条消息) Python技能树及CSDN MarkDown编辑器测评_FKL_yyds的博客-CSDN博客
剑指 Offer 28. 对称的二叉树
思路:递归的思想,当头节点不存在时直接返回True,递归遍历左右节点的值。 Python: # Definition for a binary tree node. # class TreeNode: # def __init__(self, x): # self.val = x # self.left = None # self.right = None class Solution: def isSymmetric(self, root: TreeNode) -> bool: def compare(root1,root2): if(not root1)and(not root2): return True if(not root1 or not root2)or(root1.val!=root2.val): return False return compare(root1.left,root2.right) and compare(root1.right,root2.left) return compare(root.left,root.right) if root else True
牛客华为机试HJ28
原题传送门
1. 题目描述 2. Solution 1、思路分析 匈牙利算法: https://blog.csdn.net/u013384984/article/details/90718287
本题的思路是:如果是素数,一定是奇数和偶数结合(奇数)才有可能是素数,所以将需要配对的数分为两组,一组是奇数,一组是偶数,通过匈牙利算法求得最大的配对数 配对的思路是,可以把偶数和奇数当初来相亲的一些男女,首先一对男女相亲成功结婚了,然后另一个男生发现他和这个女生也合适,他就拆散这两个人,自己和这个女生结婚,让这个前夫哥再寻找自己的结婚对象,这样递归,直到能够再这些相亲的男女中找出最多对的夫妻。
2、代码实现
import sys if sys.platform != linux: sys.stdin = open(input/HJ28.txt) def is_prime(num): 素数判断 i = 2 while i * i <= num: if num % i == 0: return False i += 1 return True def match(odd, visited, choose, evens): # 配对的过程 for j, even in enumerate(evens): if not visited[j] and is_prime(odd + even): # 未盖点 且 能成功匹配 visited[j] = True # 标记为匹配点 # 当前even未与任何odd匹配过 或 已经匹配过,能找到增广路径 if choose[j] == 0 or match(choose[j], visited, choose, evens): choose[j] = odd return True return False def solve(nums): odds = [x for x in nums if x % 2 !
Linux-CentOS 学习
Linux系统中一切皆文件
关于系统信息 在Linux系统中,提供了proc文件系统显示系统的软硬件信息。如果想了解系统中CPU的提供商和相关配置信息,则可以通过/proc/cpuinfo文件得到。
使用以下命令来读取/proc/cpuinfo文件,查看cpu的信息
cat /proc/cpuinfo 输出:
processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 142 model name : Intel(R) Core(TM) i7-7500U CPU @ 2.70GHz stepping : 9 microcode : 0xd6 cpu MHz : 2904.000 cache size : 4096 KB physical id : 0 siblings : 1 core id : 0 cpu cores : 1 apicid : 0 initial apicid : 0 fpu : yes fpu_exception : yes cpuid level : 22 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc eagerfpu pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single ssbd ibrs ibpb stibp fsgsbase tsc_adjust bmi1 avx2 smep bmi2 invpcid rdseed adx smap clflushopt xsaveopt xsavec xgetbv1 arat md_clear spec_ctrl intel_stibp flush_l1d arch_capabilities bogomips : 5808.
进程注入数据采集,sysmon可以获得CreateRemoteThread信息
下载地址:https://www.tarasco.org/security/Process_Injector/processinjector.zip
进程注入(pinjector.exe)提权进程注入将pinjector注入到用户的进程里一起运行,进而同时拥有了对应的权限。是一种比较隐蔽的手段,不会创建新的进程,很难发现,但是上传至目标主机时可能会报毒从http://www.tarasco.org/security/Process_Injector/ 下载pinjector.exe文件。放到主机的c盘根目录下 Pinjector.exe -l 列出进程,列出的所有进程都可以利用(找system对应权限的进程) pinjector.exe -p 456 cmd 5959
我自己本机尝试:
D:\bonelee\processinjector\Process Injector>pinjector -p 12304 cmd.exe 6688Privilege Switcher for Win32(Private version)(c) 2006 Andres Tarasco - [email protected][+] Trying to execute cmd.exe to 12304 as: DESKTOP-PTV6LGO \ admin[+] Code inyected... ; )
使用sysmon采集数据:
CreateRemoteThread detected: RuleName: - UtcTime: 2022-04-19 09:57:20.846 SourceProcessGuid: {7f59fefd-8780-625e-c811-000000002700} SourceProcessId: 3940 SourceImage: D:\bonelee\processinjector\Process Injector\pinjector.exe TargetProcessGuid: {7f59fefd-333e-625e-6f02-000000002700} TargetProcessId: 12304 TargetImage: C:\Program Files (x86)\Notepad++\notepad++.exe NewThreadId: 2224 StartAddress: 0x0000000003900000 StartModule: - StartFunction: - SourceUser: DESKTOP-PTV6LGO\admin TargetUser: DESKTOP-PTV6LGO\admin
集成Mybatis
(1)引入start(JDBC,MySQl,MyBatis)
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.2.0</version> </dependency> (2)配置数据库
spring.datasource.username=root spring.datasource.password=159263487qwe spring.datasource.url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=UTF-8&useSSL=false spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver #整合MyBatis mybatis.mapper-locations=classpath:mybatis/mapper/*.xml mybatis.type-aliases-package=com.my.pojo (3)实体类、mapper
@Mapper @Repository public interface UserMapper { List<User> queryAll (); User queryById(int id); int add (User user); int delete (int id); int update (User user); } (4)mapper.xml
<?xml version=1.0 encoding=UTF-8 ?> <!DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd> <mapper namespace=com.my.mapper.UserMapper> <select id=queryAll resultType=User> select * from user </select> <select id=queryById resultType=User> select * from user where id = #{id} </select> </mapper> (5)Controller 调用Servce层方法
记《读书日活动需求》bug总结
此次读书日活动功能主要是:五个问题对应五个动画交互页面,答完5道题之后展示一段视频(随机从书架上抽出一本书的动画效果),随后进入结果页面。
在结果页需要做站内站外的分享交互,将结果页面利用html2canvas转成图片,再将图片分享到各个平台。
开发过程中遇到的问题如下:
***html2canvas转apng资源元素异常***
通过image标签使用的apng动画,当它播放完成之后,再使用html2canvas转image元素,此时得到的只是apng动图的第一帧静态图片而不是最后一帧,所以需要再播放完成之后将src替换成最后一帧图片的url再使用html2canvas转。
***html2canvas转image元素时失效***
对于image元素,需要将其资源url import进来之后在dom中赋值到image元素的src上,写在css里不行。
***html2canvas会使当前页面中autoplay的audio再次播放***
这是因为html2canvas会临时遍历创建一套当前页面中所有的dom元素,再将转换目标元素择出来。解决办法是:在调用html2canvas之前,将audio元素临时移除掉autoplay属性,执行完之后再加上autoplay属性。
document.getElementById(WorldBookDayMusic).removeAttribute('autoPlay') ***在iOS移动端微信浏览器上,视频和音频无法播放,安卓端可以***
解法如下:
init = () => { if (this.refVideo) { this.refVideo.play() if (typeof WeixinJSBridge !== 'undefined') { WeixinJSBridge.invoke('getNetworkType', {}, e => { this.refVideo.play() }) } } } ***在iOS手机上,H5页面中audio的音量无法通过volume来设置***
解法如上:将音频文件本身的音量设置大些,这样在audio中直接通过src使用就可。
*** 在安卓手机上,video视频会闪现下默认播放图标***
解法如下图:加上 poster=noposter即可
***在iOS 13.4版本上,html2canvas无效(无报错无响应)***
解法:需要将html2canvas版本设置成 1.0.0-rc.4,即在package.json中 设置 html2canvas: 1.0.0-rc.4。但是这个版本在服务端渲染项目中会报 window is not defined错误,所以不能在页面顶部import,在使用的地方import。
utils.js文件
const importHtml2Canvas = () => import (/* webpackChunkName: activityHtml2canvas */ 'html2canvas') const _ = '' export { _ as default, importHtml2Canvas, } 使用:
Dos命令
打开CMD的方式
1.开始+系统+命令提示符
2.Windows+R输入CMD
3.按住Shift右击4.资源管理器的地址栏前面加上cmd路径
管理员方式运行:右击命令提示符以管理员身份运行。
常用的Dos命令
1#盘符切换 直接输入哪个盘切换即可2#查看当前目录下的所有文件 输入dir3#切换目录 cd (change directory)4#清理屏幕 cls5#退出终端 exit6#查看电脑的ip ipconfig7#打开应用 calc 打开计算器 mspaint 打开画图工具 notepad 打开一个新的记事本8#ping 命令 得到一个ip地址9#文件操作命令 md 目录名 创建一个文件夹 rd 目录名 移除一个文件夹 cd>文件名 创建一个文件 del文件名 删除一个文件