- 博客(39)
- 资源 (3)
- 收藏
- 关注
原创 用 rust 写算法
冒泡排序use std::io::*;fn main() { let mut str_buf = String::new(); stdin().read_line(&mut str_buf).expect("failed to read"); str_buf.clear(); stdin().read_line(&mut str_buf).expect("failed to read"); let num_arr: Vec<i32>
2021-09-08 13:22:24
267
原创 Rust学习笔记——模式和匹配
https://doc.rust-lang.org/book/ch18-00-patterns.html模式有以下几种类型:LiteralsDestructured arrays, enums, structs, or tuplesVariablesWildcardsPlaceholders模式是什么 && 在哪里使用模式模式在 Rust 中很常见,比如我们常用的赋值语句也使用了模式:let x = 5;,x 就是一个模式,Rust 会将表达式的值和模式进行比较,如果.
2021-02-09 16:44:11
745
原创 Rust 学习笔记——智能指针
https://doc.rust-lang.org/book/ch15-00-smart-pointers.html智能指针是一种想指针一样的行为且具有其他能力的数据结构(Smart pointers, on the other hand, are data structures that not only act like a pointer but also have additional metadata and capabilities.)在 Rust 中,智能指针和引用最大的区别在于:智能指.
2021-02-08 20:01:18
830
原创 清华大学 ucore-lab0 MacOS
因为在虚拟机上进行开发过于卡顿,所以选择在 MacOS 上搭建实验环境。在 MacOS 上搭建实验环境step1: 下载包管理工具homebrewMacportsstep2: 使用homebrew安装qemubrew updatebrew install qemustep3: 安装 i386-elf-gcc这里有很多坑,网上普遍的做法是 brew tap 第三方库 ,然后 brew install i386-elf-gcc。但是因为现在那些仓库已经将 i386 改为 x64,
2020-12-27 10:06:21
605
3
原创 基本排序看这篇就够了
基本排序时间复杂度都是O(n^2)冒泡排序 public static int[] bubbleSort(int[] array) { // Write your code here. for (int i = 0; i < array.length - 1; i++) { for (int j = 0; j < array.length - 1; j++) { if (array[j] >
2020-11-09 10:13:25
101
2
原创 一篇搞懂Android View
这篇文章主要参考Android LayoutInflater原理分析,带你一步步深入了解View(一)Android视图绘制流程完全解析,带你一步步深入了解View(二)Android视图状态及重绘流程分析,带你一步步深入了解View(三)Android自定义View的实现方法,带你一步步深入了解View(四)LayoutInflaterLayoutInflater 主要是用来加载布局的,我们经常使用它来加载自定义布局,在 RecyclerView 中也使用它。但是我们不知道的是 Activ.
2020-10-26 17:32:40
190
原创 Java多线程归纳总结
文章目录线程和进程进程和线程的区别Java线程的使用Java线程的创建启动线程获取线程的结果线程的高级用法线程等待线程唤醒线程休眠等待线程执行完成设置线程优先级线程中断交出CPU使用权线程池的使用ThreadPoolExecutorExecutorsThreadLocalThreadLocal 使用原理和内存溢出问题线程安全锁锁的种类CAS 和 ABA 问题ABA 问题描述ABA 问题解决Java 中的实现synchronized使用实现原理synchronized 是如何实现锁升级的ReentrantLo
2020-10-13 10:39:01
150
2
原创 Go的RPC
RPC是远程过程调用(remote procedure call),是用于分布式系统中节点之间互相通信。本文章参考Go语言高级编程,对这本书进行了比较详细的演示。我们先从Go原生的RPC讲起。RPC节点间通信,其中有一个节点是作为服务的提供方,我们称之为服务端,另外一个节点为服务的调用方,我们称之为客户端。我们通过一个打印"Hello World"的例子来说明native RPC是如何使用的。Hello下面是这个例子的文件目录结构:.├── client│ └── main.go.
2020-06-21 18:18:06
253
原创 Go的http库详解
服务端使用创建一个Hello World服务package mainimport ( "io" "net/http")func hello(w http.ResponseWriter, r *http.Request) { io.WriteString(w, "hello world\n")}func main() { http.HandleFunc("/hello", hello) http.ListenAndServe(":8080", nil)}使用下面命令启动
2020-06-21 18:17:27
2234
原创 Go语言——测试
Go语言作为一门21世纪的语言,自然提供了测试工具。这篇文章就介绍一下如何对Go语言所写的程序进行测试。Go语言测试命令主要就这一条go test测试源代码文件都以*_test.go为后缀,这些文件不会被编译成二进制文件。单元测试单元测试的测试函数以Test为函数的前缀名,然后参数为*testing.T类型,比如:func TestABC(t *testing.T) {}以下例子来...
2020-04-30 15:48:48
324
原创 C语言的宏
宏是C语言中一个很重要的特性,预处理器会在预处理中对宏进行替换。但是宏的语法又有许多的坑,所以这篇博客来记录一下,参考书目《C Primer Plus》宏的语法在C语言中#可以告诉预处理器,这是它需要处理的地方。预处理器会对代码中宏出现的地方用替换体进行替换,有时候可以用宏来提高代码运行速度(和内联函数有点像)。宏的语法:#define 宏 替换体宏不可以有空格,但是替换体可以,有...
2020-03-04 22:20:15
424
原创 Android Fragment
FragmentFragment是一种可以嵌入在活动中的UI片段,可以更灵活的进行开发。使用STEP 1:创建一个类继承Fragment,然后重写onCreatedView方法public class NewsContentFragment extends Fragment { public View view; @Nullable @Override ...
2020-02-01 23:12:59
180
原创 Java NIO
NIO:non-blocking input outputNIO核心类Channel类似于Stream,但是是双向的非阻塞性操作唯一性,通过Buffer文件类:FileChannelUDP类:DatagramChannelTCP类:ServerSocketChannel/SocketChannel使用://服务器通过Socket创建channelServerSocke...
2020-01-16 20:00:10
138
原创 学习Spring Boot前需要了解的Spring基础知识
Spring核心概念DI: dependency injectionAOP: aspect oriented programmingcontainer: 负责对象的生命周期,从new到finalize有两种container:BeanFactoryApplicationContext基于BeanFactoryApplicationContext主要有FileSystemXmlAp...
2019-09-18 16:35:50
8624
原创 Springboot+WebSocket
前端代码var websocket = null;if ('WebSocket' in window) { websocket = new WebSocket('ws://.......');} else { alert('该浏览器不支持websocket!');}websocket.onopen = function(event) { console.log();}web...
2019-09-18 16:34:26
108
原创 SpringBoot + Mybatis/JPA
这篇主要讲解SpringBoot结合JPA和Mybatis的使用SpringBoot作为后端框架,必定要对数据库进行crud操作,JPA和Mybatis把这些操作进行了封装,方便了代码的编写。JPA先从比较简单的JPA讲起第一步,添加依赖<dependency> <groupId>org.springframework.boot</g...
2019-08-15 17:50:35
323
原创 Spring Boot中日志框架的使用——Logback
在SpringBoot中可以使用的日志框架有很多,这里选用的是Logback,SpringBoot的version是2.1.7准备工作第一步先添加一个依赖<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId></d...
2019-08-13 16:35:40
108
原创 攻防世界逆向——key
用ida打开程序,可以看到main函数,调用了一个子函数点进去子函数,然后按F5,可以看到有100多行的代码。看到这里无从下手。我们先定位关键的字符串。把代码往下拉可以看到有"Congrats you got it!"的字符串。从这里往会看,可以看到要进入这里有一个分支语句sub_4020C0是一个关键函数,我们来看看函数的每个参数分别是什么。点击v44,亮黄的地方可以看到我们进...
2019-05-26 17:48:05
1613
原创 攻防世界reverse新手练习
0x01 re1用ida打开进行静态分析,按F5进行反编译注意标黄色标记的地方,输入的字符会保存在 v9,这个字符串会跟 v5 进行比较,如果两个字符串相等,那么就会输出 flag get,这说明 flag 是已经保存在程序中的我们在strings window(按shift+F12)中可以看到这几个字符串,我们可以推测flag包含DUTCTF字符串,所以在命令台中输入:s...
2019-04-13 12:29:34
7861
5
原创 Reversing.Kr replace题解
第一次尝试做题,参考了众多大神的讲解,终于把这题解出来了。我们先运行一下replace.exe,出现下面的框,什么都不输或输错点击check会异外终止。这题估计就是要让Wrong变成correct或right我们先进行一下静态分析,通过ida打开,在String window中找目标字符串可以看到是"Correct!"。然后单击这一行,会跳到下面这个界面鼠标右键corr...
2019-04-04 14:14:18
329
原创 入门x86汇编语言
从C语言到汇编一个C语言程序从.c到可执行文件需要经过预处理(preprocessing),编译(compilation),汇编(assembly)和链接(linking)我们观察一个最简单的例子:hello.c#include <stdio.h>int main(){ printf("hello world!"); return 0;}在linu...
2019-03-14 18:59:13
10425
1
原创 CSRF
CSRF全名是Cross Site Request Forgery,中文就是跨站请求伪造,重点在伪造上面,可以看成是黑客伪造了一个恶意页面,诱使用户访问,从而以该用户的身份在第三方站点执行一次操作。上图是一个正常访问和异常访问的对比 ,下面的异常访问就是黑客的攻击过程。下面这个图是黑客通过CSRF以用户的账号进行转账的例子攻击者伪造的请求要能被服务器验证通过,需要用户的浏览器能成功...
2019-03-04 23:09:11
190
原创 XSS漏洞
XSS是web安全中最为常见的漏洞,XSS全称是Cross Site Script。XSS攻击通常指黑客通过“HTML注入”篡改了网页,插入了恶意脚本,从而控制用户浏览的一种攻击。这里的跨站访问,可以是从正常的网站跨到黑客的服务器,也可以是黑客的服务器跨到正常的网站。XSS漏洞经常出现在需要用户输入的地方,这些地方一旦对输入不进行处理,黑客就可以进行HTML注入,进而篡改网页。例如:页...
2019-03-01 18:51:48
29559
2
原创 Java抽象类、接口和内部类
抽象类抽象方法和抽象类 抽象方法和抽象类必须使用abstract修饰符来定义,有抽象方法的类只能被定义成抽象类,抽象类里可以没有抽象方法 规则如下:抽象类必须使用abstract修饰符来修饰,抽象方法也必须使用abstract修饰符来修饰,抽象方法不能有方法体,只能有方法签名。抽象类不能被实例化。 无法使用new关键字来实例化类。抽象类可以包含成员变量,方法(普通方法和...
2018-10-19 23:52:34
184
转载 约瑟夫环非递归算法分析
【Joseph问题描述】n个人(编号0~(n-1)),从0开始报数,报到(m-1)的退出,剩下的人继续从0开始报数。求胜利者的编号。【求解思路】我们知道第一个人(编号一定是m%n-1) 出列之后,剩下的n-1个人组成了一个新的约瑟夫环(以编号为k=m%n的人开始):k k+1 k+2 ... n-2, n-1, 0, 1, 2, ... k-2并且从k开始报0。现在我们把他们的编号...
2018-09-29 18:36:46
775
2
原创 Tree Recovery,UVa536
#include <cstdio>#include <iostream>#include <cstring>#include <string>#include <algorithm>#include <sstream>using namespace std;const int MAXN = 100+10;c...
2018-09-14 16:46:22
109
转载 Tree UVa548
#include<iostream>#include<sstream>#include<cstdio>#include<cstring>#include<algorithm>#include<string>using namespace std;const int MAXN = 10000+10;int i...
2018-09-14 14:17:29
131
原创 Uva10474
Where is the Marble? DescriptionRaju and Meena love to play with Marbles. They have got a lot of marbles with numbers written on them. At the beginning, Raju would place the marbles one after ano...
2018-08-13 18:02:29
213
原创 kmp算法
kmp详细的原理:【soso字幕】汪都能听懂的KMP字符串匹配算法【双语字幕】_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili https://www.bilibili.com/video/av3246487?from=search&seid=11399441346457558573上面这个讲得很详细,很容易听懂;对于给定的模式串:ABCDABD,它的最大长度表及next...
2018-08-02 17:38:28
137
原创 POJ1068
DescriptionLet S = s1 s2...s2n be a well-formed string of parentheses. S can be encoded in two different ways:q By an integer sequence P = p1 p2...pn where pi is the number of left parentheses befo...
2018-08-01 20:41:42
413
原创 HDU1062 Text Reverse
Text ReverseTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 34466 Accepted Submission(s): 13535 Problem DescriptionIgnatius likes to ...
2018-08-01 15:33:09
128
原创 HDU 2072 单词数
单词数 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 64807 Accepted Submission(s): 16239 Problem Description lily的好朋友xi...
2018-07-31 18:29:55
112
转载 特别困的学生(Extraordinarily Tired Students, ACM/ICPC Xi'an 2006, UVa12108)
#include <cstdio>#include<iostream>using namespace std; struct student { int wake; int sleep; int loc;} stu[10]; int main() { int n; int index=1; while(cin>>n) { if(n...
2018-07-26 23:01:56
331
转载 快速幂算法代码总结
要理解base*=base这一步:因为 base*base==base2,下一步再乘,就是base2*base2==base4,然后同理 base4*base4=base8,由此可以做到base-->base2-->base4-->base8-->base16-->base32.......指数正是 2^i ,再看上面的例子,a¹¹= a1*a2*a8,这三项就可以...
2018-07-25 23:30:22
399
1
原创 水仙花数
春天是鲜花的季节,水仙花就是其中最迷人的代表,数学上有个水仙花数,他是这样定义的: “水仙花数”是指一个三位数,它的各位数字的立方和等于其本身,比如:153=1^3+5^3+3^3。 现在要求输出所有在m和n范围内的水仙花数。 Input输入数据有多组,每组占一行,包括两个整数m和n(100<=m<=n<=999)。Output对于每个测试实例,要求输出所有在...
2018-07-25 19:35:33
677
转载 信息解码(Message Decoding, ACM/ICPC World Finals 1991, UVa 213)
#include <cstdio>#include <iostream>#include <cstring>using namespace std;char codes[8][1<<8];int readchar();int readint(int c);int readcodes();int main(){ while(...
2018-07-24 23:40:05
223
原创 盒子(Box, ACM/ICPC NEERC 2004, UVa1587)
Ivan works at a factory that produces heavy machinery. He has a simple job — he knocks up wooden boxes of different sizes to pack machinery for delivery to the customers. Each box is a rectangular par...
2018-07-20 23:44:00
428
原创 子序列(All in All, Uva 10340)
DescriptionYou have devised a new encryption technique which encodes a message by inserting between its characters randomly generated strings in a clever way. Because of pending patent issues we wil...
2018-07-20 17:27:54
162
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人