自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Neil.Liu的博客

起风了,唯有努力生存

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

原创 Go语言野生goroutine的处理

野生goroutine定义在写go代码时,常常需要使用goroutine来执行任务:go func() { fmt.Println("hello") panic("goroutine error")}()一旦造成了panic,那么此时recover是无法被捕获以及解决的,这种情况被我们称作野生goroutine捕获goroutine中的panic我们可以通过定义一个函数来捕获recover,并且执行goroutine方法func main() { Go(func()

2021-04-02 16:37:42 880 3

原创 Go语言常见问题汇总

如果需要声明初始值为零值的变量,应该使用var 关键字;如果提供确切的非零值初始化变量或者使用函数返回值创建变量,应该使用简化变量运算符:=。var i intfmt.Printf("i = %d\n", i)s := 10fmt.Printf("s = %d\n", s)关键字range可以用来迭代数组、字符串、切片、映射和管道。每次迭代返回两个值,第一个值是迭代的元素在切片里的索引位置,第二个值是元素值的一个副本。指针变量可以方便地在函数之间共享数据,使用指针变量可以让函数访问..

2021-03-26 10:10:58 257

原创 Go 语言之并发

并发并发是指同时进行多个任务的程序。go语言有两种并发编程的风格:第一种是goroutine和管道(channel),他们支持通信顺序进程(communicating sequential processes)或被简称为CSP,CSP是一个并发的模式,在不同的执行体(goroutine)之间传递值。第二种是共享内存多线程的传统模型。go语言提倡通信共享内存而不是通过共享内存而实现通信。Goroutines在go语言中,每一个并发的执行单元叫作一个goroutine。类似于其他语言的线程,但gorou

2021-02-25 23:26:09 312

原创 Go语言之接口

文章目录接口定义实现接口的条件接口值值接收者实现接口指针接收者实现接口一个类型实现多个接口空接口一个包含nil指针的接口不是nil接口类型断言接口定义接口(interface)是一种抽象类型,定义了一个对象的行为规范,只定义规范不实现,由具体的对象来实现规范的细节。接口类型具体描述了一系列方法的集合。go语言提倡面向接口编程。接口的定义格式如下type 接口类型名 interface{ 方法名1(参数列表)(返回值列表) ...}例如package iotype Read

2021-02-19 14:33:28 172

原创 Go语言之方法

方法文章目录方法方法的定义指针对象方法方法值和方法表达式封装方法的定义go语言中没有明确的构造函数,通常我们这样实现。type Person struct { Name string Age int8}func newPerson(name string, age int8) *Person { return &Person{ Name: name, Age: age, }}p := newPerson("小明", 20)fmt.Printf("%T\n %#

2021-02-15 21:22:32 225

原创 Go语言之函数

函数函数可以让我们将一个语句序列打包为一个单元,然后可以从程序中其他地方多次调用。即函数是可重复使用的、用于执行指定任务的代码块。函数声明函数的声明包括函数名、形式参数列表、返回值参数列表及函数体。func 函数名(参数列表)(返回值列表){ 函数体}函数名是由字母、数字和下划线组成,但首位不能使用数字。同一个包中,函数名是唯一的。形式参数列表描述了函数的参数名以及参数类型返回值列表描述了返回值的变量名以及参数类型,当返回一个匿名返回值时,括号可以省略;当没有返回值返回时,返回值

2021-02-06 10:42:59 203 1

原创 Go语言之JSON

JSONJavaScript对象表示法(JSON)是一种用于发送和接收结构化信息的标准协议。其中常用的协议包括JSON、XML、ASN.1,但JSON由于其简洁性、可读性和流行程度是最广泛的一个。在go语言中对这些标准格式的编码和解码都有良好的支持,其中标准库为encoding/json,encoding/xml、encoding/asn1等包提供支持。JSON定义JSON中包括基础数据类型和聚合数据类型。他们是通过JSON数组和对象类型进行递归组合的。基础的JSON类型包括数字、布尔值、字符串。

2021-02-02 00:02:26 480

原创 Go语言复合数据类型之结构体

结构体自定义类型和类型别名自定义类型go语言中可以使用自定义类型来定义一个全新的类型,使用type关键字来完成//类型定义type Myint int类型别名类型别名是将一个类型起一个别名,类似于小名,比如byte就是uint8的别名,本质上他们是同一种类型。type byte = uint8type rune = uint32类型别名和自定义类型的区别type custInt inttype aliasInt = intfunc main() { var a custIn

2021-01-31 18:34:33 516

原创 Go语言复合数据类型之map

Go语言复合数据类型之map文章目录Go语言复合数据类型之mapmap的定义map的初始化使用内置make函数初始化使用map字面值语法初始化创建指定key/value的mapmap的操作map对值的操作使用delete删除keymap的遍历补充map的定义哈希表是一个无序的key/value对的集合,要求所有的key必须不同,然后通过给定的key可以在O(1)内检索、更新或者删除对应的value。go语言中map就是一个哈希表,其表达形式为map[key] = value ,key在map中是同一

2021-01-27 13:45:50 386

原创 Go语言复合数据类型之切片

Go语言复合数据类型之切片文章目录Go语言复合数据类型之切片切片定义切片构造切片的操作切片的赋值append函数copy函数Slice就地修改切片定义切片slice是一个拥有相同类型的可变长度的序列,底层是对数组的引用。切片是由指针、长度和容量构成。指针指向第一个slice元素对应的底层数组的地址(第一个slice元素并不一定是底层数组的第一个元素)长度是slice中元素的个数容量是指从slice第一个元素到底层数组结束位置的长度。内置函数len()和cap()分别返回长度和容量。切片构

2021-01-26 17:19:11 166

原创 Go语言复合数据类型之数组

Go语言之基本数据类型之数组文章目录Go语言之基本数据类型之数组数组定义数组初始化数组遍历数组的比较二维数组补充知识点for range遍历字符串数组定义数组是由固定长度的特定类型元素组成的序列,数组的长度是固定的,不允许改变。访问数组可以根据索引下标来访问,索引的范围 0 到 数组长度 左闭右开区间。数组定义时,必须声明数组的长度var aaa [3]int// var 变量名 [数组长度]元素类型数组的长度必须是常量,因为数组长度需要在编译器确定,以下这种定义方式是错误的。var b

2021-01-25 14:22:02 220

原创 Go语言之基本数据类型

Go语言之基本数据类型Go语言将数据类型分为四类:基础类型、复合类型、引用类型、接口类型。基础数据类型:数字、字符串、布尔型复合数据类型:数组、结构体引用数据类型:指针、切片、字典、函数、通道,他们都是对程序中一个变量或状态的间接引用,即对引用类型数据的修改会影响所有该引用的拷贝接口类型:是对其他类型行为的抽象和概括整型Go语言提供了有符号和无符号类型的整数运算。按照长度划分:有符号: int8、int16、int32、in64无符号:uint8、uint16、uint32、uint64

2021-01-19 00:11:30 291

原创 Android逆向之Frida

文章目录frida 常用shell命令Frida hook app启动项Frida 常用java api1. frida 重载2. 内存扫描实例3. Array数组4. HashMap 数组5. 乱码情况 no-ascii6. 枚举类7. 类型转换8. 创建一个新类frida 常用shell命令Usage: frida [options] targetOptions: --version show program's version number and ex

2020-07-29 17:28:58 803

原创 Matlab入门

基本语法赋值语句# 使用等号(=) 创建变量 左侧 (x) 是变量的名称,其值为右侧 (pi) 的值x = pi#函数使用y = sin(-5)桌面管理将当前工作区保存到 MAT 文件中save data.mat将 MAT 文件中的变量加载到工作区load data.mat清除工作区中的所有变量clear清除命令行窗口中的所有文本clc更改数值输出的显示方式format long/short数组1. 创建数组行向量创建

2020-07-02 15:22:35 2461 1

原创 mac校验sha-256命令

mac校验sha-256命令openssl dgst -sha256 文件名

2020-06-03 11:50:53 2154

原创 Linux进程数据结构分析

Linux进程结构分析在 linux 里面,无论是进程、线程,到了内核我们统一称之为任务( Task ),由一个叫做task_struct的结构统一管理,这个结构体包含了一个进程所需要的所有信息。接下来我们基于 kernel 5.2来分析这个结构。0x00 task_struct 分析首先 task_struct 结构体位于 /linux5.2/include/linux/sched.h 文...

2020-03-20 10:11:00 381

原创 进程-调度

调度策略对于操作系统来说,cpu的数量是有限的,有些任务优先级较高,有些任务优先级较低,为了有效的利用cpu,这时就有了进程的调度的概念。在task_struct中,有一个成员变量,用来表示调度策略。 unsigned int policy;在sched.h文件头 有这样一个#include <uapi/linux/sched.h>打开这个文件,会看到如下定义,是poli...

2020-03-20 10:09:46 187

原创 adb常用命令

adb shell命令dumpsys查看当前应用的 activity 信息adb shell dumpsys activity top 查看指定包名应用的详细信息(相当于 AndroidManifest.txt 中的内容)adb shell dumpsys package [pkgname]查看指定进程名或进程 id 的内存信息adb shell dumpsys meminf...

2020-02-29 23:09:59 219

原创 夜神模拟器与mac os之间共享文件

mac os 使用夜神模拟器共享文件在 mac 系统中使用夜神模拟器做开发,不可避免的会互传文件,接下来介绍一下如何在 mac 与模拟器之间共享文件。在夜神模拟器中在模拟器中会预装ES文件浏览器 ,如果没有最好安装一个。打开ES文件浏览器(文件管理器同理),进入根目录,进入 /mnt/shared三个文件夹都是共享文件夹,将需要共享文件放入相应的文件夹即可,假如我们放入 Othe...

2020-01-17 10:47:52 3542

原创 《SQL必知必会》学习笔记(二)

上一篇讲述了 SQL 关于查询的知识点,此篇继续讲述 SQL 的一些常见知识点。《SQL 必知必会》(一)文章目录插入数据插入完整的行插入部分行插入检索出的值从一个表复制到另一个表更新删除数据更新删除更新和删除的原则视图视图的作用视图的限制创建视图删除视图用视图重新格式化检索出的数据使用视图过滤不需要的数据使用视图与计算字段存储过程SQL 其他特性约束唯一约束约束检查索引触发器插入数据IN...

2019-11-19 09:53:29 438

原创 《SQL必知必会》学习笔记(一)

文章目录DB基本知识及表的创建主键创建数据库检索数据DISTINCT 关键字限制结果注释排序检索数据排序数据指定排序方向过滤数据使用 WHERE 子句WHERE 子句操作符AND 操作符OR 操作符IN 操作符NOT 操作符LIKE 操作符百分号(%) 通配符下划线(—)通配符通配符使用技巧创建计算字段拼接字段执行算数计算使用函数处理数据文本处理函数日期时间处理函数数值处理函数汇总数据聚集函数AV...

2019-11-14 19:12:54 432

原创 正则表达式学习

0x00 元字符元字符是构造正则表达式的一种基本元素0x01 常用元字符元字符解释.匹配除换行符以外的任意字符\d匹配数字(等价于[0-9])\D匹配非数字(等价于[^0-9])\w匹配数字、字母、下划线(等价于[0-9a-zA-Z_])\W匹配非数字字母下划线(等价于[^0-9a-zA-Z_])\b匹配单词的开始或结束\s...

2019-11-07 19:20:34 672

原创 Linux进程数据结构分析

Linux进程结构分析在 linux 里面,无论是进程、线程,到了内核我们统一称之为任务( Task ),由一个叫做task_struct的结构统一管理,这个结构体包含了一个进程所需要的所有信息。接下来我们基于 kernel 5.2来分析这个结构。0x00 task_struct 分析首先 task_struct 结构体位于 /linux5.2/include/linux/sched.h ...

2019-11-01 13:53:21 455

原创 CSRF跨站伪造攻击

0x00前言web安全中除了XSS 还有一种最容易被忽视的攻击手段,那就是CSRF,它可以在用户无感知的情况下发起攻击,接下来我们来认识一下这种攻击手段。0x10跨站伪造请求 (Cross-site request forgery) 也被称为one-click attach 或者session riding,是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。0x20...

2019-10-24 10:10:23 144

原创 XSS简介

XSS简介0x10跨站脚本 (Cross-site scripting, 简称XSS) 是一种网站应用程序的安全漏洞攻击,是代码注入的一种。它允许恶意用户将代码注入到网页上,其他用户在观看网页时就会受到影响。这类攻击通常包含了HTML以及用户端脚本语言。**XSS攻击 **通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方式注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。...

2019-10-17 16:40:03 364

原创 计算机网络基础知识点大纲

计算机网络基础知识点计算机网络概述计算机网络定义计算机网络体系结构网络协议定义协议三要素体系结构OSI七层模式TCP/IP的四层模型五层协议体系数据包的封装与解封装分层结构中每一层所负责的内容封装与解封装的过程常用的网络设备传输媒体中继器集线器交换机路由器防火墙wireshark工具使用wireshark工具介绍应用领域...

2019-10-11 14:40:38 456 1

原创 mac版Typora常用指令

Typora下载Typora下载标题级别# 一级标题 command + 1## 二级标题 command + 2### 三级标题 command + 3#### 四级标题 command + 4##### 五级标题 command + 5###### 六级标题 command + 6引用> 引用command+opti...

2019-10-11 10:32:03 4877

原创 栈入门

栈入门0x10相关知识0x11寄存器32位x86架构下的寄存器可以被简单的分为通用寄存器和特殊寄存器,通用寄存器在大部分汇编指令下是可以任意使用的,而特殊寄存器只能被特定的汇编指定使用,不能用来存储数据。32位x86架构下的通用寄存器包括一般寄存器(eax, ebx, ecx, edx), 索引寄存器(esi, edi), 以及堆栈指针寄存器(esp, ebp) 。一般寄存器用来存储运行...

2019-10-10 09:51:34 200

原创 linux启动流程(二)

Linux 启动流程-内核初始化想要了解内核的启动过程,就需要查看linux源码了(此文是基于linux 5.2)。查看源码的过程中我们发现,内核的启动是start_kernel()函数,它是位于init包下main.c文件中的方法。我们在此方法里发现很多xxx_init的方法,也就是做一些初始化操作。asmlinkage __visible void __init start_kernel...

2019-10-09 11:48:35 131

原创 linux进程-从文件到二进制

进程-从文件到二进制gcc命令gcc [option] file1 file2 //不加入参数,则按照默认参数依次执行编译、汇编和链接操作,生成可执行的文件名a.out编译的过程预处理编译汇编链接参数新建一个hello.c文件#include<stdio.h>int main(){ printf("hello world!");}-E只...

2019-10-09 10:24:03 378

原创 堆入门之glibc分析(一)

堆入门之glibc分析malloc函数执行流程 glibc_2.27__libc_mallocvoid* __libc_malloc(size_t bytes) //bytes:用户申请分配的空间 __malloc_hook //全局变量 //如果需要自定义堆分配函数, 在__libc_malloc中调用以下函数:void *(*hook) (size_t, cons...

2019-10-08 09:55:30 1441

原创 gdb入门

GDB0x10 什么是GDBGDB是GNU程序的一个debugger, 允许查看其他程序运行时内部的情况,或者当一个程序崩溃时的运行情况0x11特性程序开始后, 指定可能影响程序行为的任何操作让程序在特定的条件下停止当程序停止后,检查发生了什么在程序中做一些操作, 比如试着修复一个bug或者尝试找到更多的问题0x20 GDB支持哪些语言AdaAssemblyCC++...

2019-10-02 09:37:13 269

原创 linux启动流程(一)

linux 启动流程0x00 What x86x86是Intel的CPU架构,最初是由16位的8086处理器组成的CPU和内存之间传递数据需要用到总线访问内存中某个地址的数据 把这类总线叫地址总线内存中真正的数据 这类总线叫做数据总线8086处理器的地址总线是20位, ip寄存器和通用寄存器是16位, 那么总线与寄存器之间的关系是把CS和DS寄存器中的值左移4位 。即: 起始地址1...

2019-09-29 16:14:34 142

原创 linux基本命令行(二)

linux基本命令行(二)进程-内存-文件进程创建进程的的系统调用叫fork,创建一个新的进程,需要一个老进程调用fork来实现,老的进程被称为父进程,新的进程被称为子进程。当父进程调用fork创建进程的时候,子进程将拷贝父进程所有的文件。针对这种情况我们往往这样处理:对于fork系统调用的返回值,如果当前进程是子进程返回0;如果是父进程就返回子进程的进程号。通过if-else判断 ...

2019-09-20 10:20:16 88

原创 linux基本命令行(一)

linux基本命令行(一)0x00安装软件0x01 rpm和dpkg目的rpm 用法dpkg用法安装指定软件rpm -i pkgfile.rpmdpkg -i pkgfile.deb显示所有已安装的软件名rpm -qadpkg -l显示套件包含的所有档案rpm -ql pkgnamedpkg -L pkgname显示特定档案所属的套件名称...

2019-09-18 11:28:13 108 1

空空如也

空空如也

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

TA关注的人

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