自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(222)
  • 收藏
  • 关注

原创 TCP/IP四层模型的理解

应用层没什么好说的,优秀的文章很多传输层TCP传输控制层TCP是面向连接的,可靠的传输协议面向连接:当通信双方通过三次握手,并且在都在内部开辟了通信所需要的资源,例如SOCKET缓冲区等,这就算一个连接真正建立了。整个过程三次握手:发送数据四次挥手利用抓包命令来查看上面的通讯过程# yum install tcpdump // 如果没有tcpdump,需要先安装这个程...

2020-03-25 21:10:12 6009

原创 报告(2022-7-26)

摘要

2022-07-26 11:13:15 371 1

原创 2022-7月-日报

日报

2022-07-14 22:17:20 1156

原创 论文概述,实验总结

操作系统指纹识别推进比较慢,主要是获取不到想要的数据,正在尝试通过各种途径获取数据。同时尝试研究联邦学习相关的内容。一、操作系统指纹识别对已有的数据进行处理,尝试使用SGAN和来提升识别精确度二、 Byzantine-robust Federated Learning via Trust Bootstrapping这篇论文是关于联邦学习的,文中提出了一种聚合客户端参数的方式,来提升联邦学习的安全性。联邦学习中存在多种聚合参数的方式:FedAvg:最基本的模型平均方法。Byzantine-ro

2021-12-12 20:33:26 1288 1

原创 第十三周周报

研究进度阅读论文:Single-Packet OS Fingerprinting操作系统的识别经过了几个阶段。最开始的操作系统指纹识别基于应用程序的banner抓取,但是现在越来越多的程序会修改banner或者干脆不提供banner,导致这种方法可用性降低Multiple Packets,nmap工具出现,提出了基于TCP/IP协议栈来进行操作系统的指纹识别,nmap总是希望目标主机接收tcp连接,如果请求的是一个关闭的udp端口,目标主机会响应icmp unreachable,或者是回复ping

2021-12-05 22:58:07 2159

原创 第十四周周报

研究进度阅读论文:Single-Packet OS Fingerprinting操作系统的识别经过了几个阶段。最开始的操作系统指纹识别基于应用程序的banner抓取,但是现在越来越多的程序会修改banner或者干脆不提供banner,导致这种方法可用性降低Multiple Packets,nmap工具出现,提出了基于TCP/IP协议栈来进行操作系统的指纹识别,nmap总是希望目标主机接收tcp连接,如果请求的是一个关闭的udp端口,目标主机会响应icmp unreachable,或者是回复ping

2021-11-14 10:25:36 1972 1

原创 论文写作-报告

怎么做研究选择的方向要小,挖掘要深入多去学习,多去借鉴。如果从一个作者身上拷贝,那是剽窃;但从很多人那里拷贝,那是创新做研究的一个简单的方法:发现问题,寻求方法解决问题。动机和目标。为什么你要研究这个?在你读博前应该对此有个很清楚的认识。原因不该是“我不能找到工作”或“目前我没有其他感兴趣的事可做”。写论文时一个好的题目应该只含可适当地描述论文内涵的最少可能字数,且要尽可能的具有吸引力,能吸引读者写论文的一个重点:表达清晰,简单说来就是说人话。论文要有明确的动机,否者别人都不知道你在做

2021-11-02 15:41:32 167

原创 2021-09-18

一、机器学习模型的攻击分类1、训练阶段的攻击训练阶段的恶意攻击,主要的目的就是针对模型的参数进行微小的扰动,从让而模型的性能和预期产生偏差。这样的行为主要是通过数据投毒来完成的。当我们能接触,或间接修改模型训练阶段的输入数据的时候,无论是篡改部分数据的特征样本,亦或是“翻转”样本的标签,也可以是在部分训练数据分布敏感的场景下,都有可能对最后的模型准确性产生影响。又或者是一些在线的模型训练API,如若没有做好万全的防御措施,则可能会被恶意的攻击者,通过“逆向工程”的方式来解析模型的内部结构,从而导致模

2021-09-18 16:14:48 217

原创 关于做研究,写论文

0、思路的转变研究不同于研发,是要创造新东西,而不是对现有继续的利用。而且研究工作的收效没有那么快,要有心理准备。1、做研究的基本流程确定topic提出problem思考ideaconcrate workpaper writingsubmit1.1 Topic计算机领域有很多的分支,一个分支也有很多的话题,选择一个领域进行了解。然后导师或者自己确定一个topic。阅读大量文献,了解topic的现状。1.2 prolem通过阅读的大量文献,进行总结思考,确定一个problem,与团

2021-09-09 21:40:26 157 1

原创 暑魔训作业

1.6、作业符号不熟悉,没有形成思维模式,感觉读起来没有文字直观不知道如何用数学表达式去描述2.6、作业2A={∅,{1},{3},{1,3}}2^A = \{\emptyset,\{1\},\{3\},\{1,3\}\}2A={∅,{1},{3},{1,3}}2θ={θ}2^θ = \{θ\}2θ={θ}A={5,6,7,8,9}=[5..9]={X∈N∣x>4,x<10}A = \{5, 6, 7, 8, 9\} = [5..9] = \{X \in N | x >

2021-07-27 07:27:37 167

原创 离散数学入门级概念:集合、关系、元组

习题 1: { 0 , 1 , { 0 , 1 } , { 1 , 2 } } {0, 1, {0, 1}, {1, 2}}{0,1,{0,1},{1,2}} 有几个元素? 机器学习中, 这类形式的集合有什么优点和缺点?有4个元素,是一种递归的定义,集合内部可以包含其他集合。习题 2:∅ 的基数是多少? {∅} 呢?∅的基数是0,{∅}的基数是1。习题 5: 多标签学习中, 输出为一个向量,相应的学习器算不算函数呢?习题 6: 元组只能表达对象的数据部分, 还是可以完整地表达 (既包括数据

2021-05-04 18:24:48 370

原创 判断链表中是否有环,如果有则返回这个环的起始位置

1.判断是否有环设置快慢指针在链表上移动,若两个指针相遇则一定有环。问题来了,为什么有环就一定能相遇,相遇就一定有环?首先,如果无环,那么肯定不会相遇。如果有环,那么最终快指针和慢指针最终都会进入到环中。假设某个时刻开始,两个指针都进入到环中,那么从这时候开始,他们在环中每一步移动,就会使他们之间的距离缩小一步(假设此时以快指针在追慢指针这个角度来看),为什么会缩小?因为慢指针移动一步,快指针移动两步,就相当于慢指针没动,快指针移动一步。最终如果有环就一定会追上。2.返回环的起始位置已知链表中有环

2021-03-24 17:55:48 334 1

原创 Base64加密解密C语言实现

void encodeBase64(char* str,int len,char** in){ char base64[65] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; //读取3个字节zxc,转换为二进制01111010 01111000 01100011 //转换为4个6位字节,011110 100111 100001 100011 //不足8位在前补0,变成00011110 00100

2020-11-02 10:07:29 2549

原创 快排改进型

对快排进行改进,为什么要进行改进?我们就要分析目前快排存在的问题!首先我们要知道的是,快排的基本思想就是对元素进行分区,选定一个基本值,然后把其他的值放在基准值的左边或者右边,那这样会存在什么问题呢?对于两个数组中存在相同的元素来说,这样的分区是非常没有效率的,因为如果我们选择的基准值在数组中存在了相同的元素,那么这些元素在划分的过程中又会被多排序一次,所以这样不就导致了效率问题。改进的策略是,将元素划分为三个区域,左边区域的元素是小于基准值的,中间区域是等于基准值的,右边区域是大于基准值的,这样就使得

2020-05-28 08:59:58 266

原创 DirectByteBuffer与MappedByteBuffer

在此之前,我一直以为这两个类之间是完全不同的东西,因为他们的理念并不相同,一个是在堆外分配内存,一个是使用内存映射(虽然其也是占用了堆外内存),先引用大佬的文章占小狼:深入浅出MappedByteBuffer前言java io操作中通常采用BufferedReader,BufferedInputStream等带缓冲的IO类处理大文件,不过java nio中引入了一种基于MappedByte...

2020-03-24 21:22:44 2315 1

原创 System.arraycopy()方法为什么是native的

按照一般的数组复制来说,就是遍历数组进行复制,为什么会需要用到native方法,难道C语言有什么更快的数据赋值方式吗?确实是有的,那就是memcpy(void *destin, void *source, unsigned n),函数的功能是从源内存地址的起始位置开始拷贝若干个字节到目标内存地址中这个可要比数组复制快的多...

2020-03-24 17:41:32 488

转载 短网址有啥好处,用长网址不香吗?

以下文章来源于码海 ,作者码海原文链接前言今天,我们来谈谈如何设计一个高性能短链系统,短链系统设计看起来很简单,但每个点都能展开很多知识点,也是在面试中非常适合考察侯选人的一道设计题,本文将会结合我们生产上稳定运行两年之久的高性能短链系统给大家简单介绍下设计这套系统所涉及的一些思路,希望对大家能有一些帮助。本文将会从以下几个方面来讲解,每个点包含的信息量都不少,相信大家看完肯定有收获:...

2020-03-24 14:40:38 547

原创 SpringMVC随处获取request对象

SpringMVC内部提供了一个名为RequestContextListener的监听器,该监听器继承自ServletRequestListener,很明显,其就是监听Request对象的创建个销毁,很好的利用了这一点让我们能随时的获取到Request对象。@Overridepublic void requestInitialized(ServletRequestEvent requestEv...

2020-03-21 14:30:47 254

原创 Shrio中的session机制

主要是web相关,javase不说引入SecurityManager是shiro的核心,负责与shiro的其他组件进行交互,而SessionManager是session的真正管理者,负责shiro的session管理。在shrio中,当我们利用subject.login()进行登录的时候或者是利用subject.getSession()的时候,就会创建一个session。这个session...

2020-03-20 09:34:03 688

原创 Servlet标准中的ServletContainerInitializer

在web容器启动时为一些第三方组件机会做一些初始化的工作,例如注册servlet或者filtes等,servlet规范中通过ServletContainerInitializer实现此功能。每个框架要使用ServletContainerInitializer就必须在对应的jar包的META-INF/services 目录创建一个名为javax.servlet.ServletContainerIni...

2020-03-18 17:22:17 488

转载 读写锁性能之王 —— StampedLock

一. StampedLock概述1.1 简介StampedLock是JDK1.8中新增的一个读写锁,也是对JDK1.5中的读写锁ReentrantReadWriteLock的优化。主要包括读写锁之间的转换及更加细粒度并发控制等,前者提供的是不可重入锁,后者的是可重入锁,但是前者通过了乐观读锁在多线程并发中的读多情况下有更好的性能,因为StampedLock获取乐观读锁时,居然不需要通过CAS...

2020-03-17 10:50:09 191

原创 我终于搞懂了数据库锁封锁协议

这里只是介绍封锁协议,因为其他的其实不算很难理解,网上优秀的博客有很多。之前在网上查找资料,看他们介绍三种封锁协议,始终是觉得非常的难以理解,因为他们大多数都只是直接搬理论,没有把其中的关系将清楚。当然也可能是我领悟能力太差了,大神的话请出门右转。在运用X锁和S锁这两种基本封锁对数据对象加锁时,还需要约定一些规则。例如,何时申请X锁或S锁、持锁时间、何时释放等。这些规则称为封锁协议。通常使用三...

2020-03-12 11:55:53 2063 1

原创 Linux服务管理

RPM安装的服务1.独立的服务启动注意:此方式的启动需要有启动脚本在init.d文件夹下,一般通过rpm安装的服务都会在该路径下放置一个启动脚本,service命令实际上也就是执行该目录下的指定的脚本。比如service redis start,就是执行init.d路径下的名为redis的脚本,start就是传递给脚本的参数。/etc/init.d这个文件只是一个软链接,实际上就是链接到了下...

2020-03-03 20:38:37 137

原创 Linux中运行级别以及含义

什么是Linux的运行级别?可以简单的理解为linux启动之后处于的某个状态,linux启动之后会在一个级别状态下运行,linux服务器一般运行在3级别。一、Linux的运行级别(runlevel)运行级别0:系统停机状态,系统默认运行级别不能设为0,否则一开机就会重启运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆 运行级别2:多用户状态(没有NFS) 运行级别3...

2020-03-03 17:12:52 5661

原创 /proc文件与/etc文件

/proc是一种虚拟文件系统,也叫进程数据文件系统,其信息不是存储在块设备中的,只有在读取/proc目录下文件的时候才会去动态生成。/proc文件系统可以获得很多进程信息。/proc内容/proc文件系统的容量依系统而不同(硬件配置、体系结构),主要包含以下几大类:系统进程的特征数据内存管理文件系统设备驱动程序系统总线电源管理终端系统控制参数进程的数据/proc的初衷就是来...

2020-03-03 17:12:21 1009

原创 linux中的进程权限

对于一个linux进程,它每次打开、创建或者删除一个文件时,内核就要对该进程进行文件访问权限测试,而在对具体某个文件进行测试时,还需要测试其对目录(也就是文件路径)进行权限测试。比如要修改/usr/include/stdio.h,需要对/、/usr和/usr/include这三个目录进行权限测试,保证有对这三个目录的执行权限(执行权限用于打开该目录,读权限用于显示目录内容,写权限用于创建新文件或...

2020-03-03 14:18:49 862

原创 Linux下安装Mysql

这里只讲解yum的安装方式,yum安装方便,能自动的安装依赖的rpm包,这种方式比起源码安装来说要快捷的多。前言需要要注意的是,要在linux上安装mysql,需要创建一个mysql用户我们可以选择不手动创建,使用yum方式安装mysql,其会自动创建mysql用户,其家目录是在/var/lib/mysql,而不是/home/mysql,且是禁止登陆的,如下这样也是为了安全,mysql进...

2020-03-03 13:57:12 328

原创 登录的新用户显示-bash-4.2$

登录了一个新用户,终端却显示为下面这个样子bash-4.2$这是因为此时我们登录的用户目录下没有.bash_profile文件,那么问题就找到了,就是缺少用户环境配置文件。那么为什么需要这样文件?这就是跟linux的机制有关联了,当一个用户通过ssh登录shell的时候,系统会自动执行一些初始化脚本,其中包含shell中显示的名称也是这时候去初始化的,但是如果用户的家目录下缺少该文件,就...

2020-03-03 10:40:36 3247

转载 SpringMVC 中 @ControllerAdvice 注解的三种使用场景!

@ControllerAdvice ,很多初学者可能都没有听说过这个注解,实际上,这是一个非常有用的注解,顾名思义,这是一个增强的 Controller。使用这个 Controller ,可以实现三个方面的功能:全局异常处理全局数据绑定全局数据预处理灵活使用这三个功能,可以帮助我们简化很多工作,需要注意的是,这是 SpringMVC 提供的功能,在 Spring Boot 中可以直接使...

2020-02-15 11:23:31 847

原创 @ModelAttribute注解的意义?

@ModelAttribute这个注解并不是一个必须要用到的注解,因为可以用其他方式来达到一样的效果,@ModelAttribute只是提供一种相对简单的方式@ModelAttribute官方解释Spring官方的JavaDoc:它将方法参数/方法返回值绑定到web view的Model里面。只支持@RequestMapping这种类型的控制器哦,因为其只存在于RequestMappingHa...

2020-02-15 11:16:26 986

转载 @InitBinder的使用

@InitBinder这个注解是Spring 2.5后推出来,用于数据绑定、设置数据转换器等,字面意思是“初始化绑定器”。在Spring MVC的web项目中,相信小伙伴们经常会遇到一些前端给后端传值比较棘手的问题:比如最经典的问题:Date类型(或者LocalDate类型)前端如何传?后端可以用Date类型接收吗?字符串类型,如何保证前段传入的值两端没有空格呢?(99.99%的情况下多余的...

2020-02-14 20:42:57 2300 1

原创 WebDataBinder与HttpMessageConverter

HttpMessageConverterHttpMessageConverter<T> 是 Spring3.0 新添加的一个接口,负责将请求信息转换为一个对象(类型为 T),将对象(类型为 T)输出为响应信息// 指定转换器可以读取的对象类型,即转换器是否可将请求信息转换为 clazz 类型的对象,同时指定支持 MIME 类型(text/html,applaiction/json等...

2020-02-14 15:20:53 684

转载 Shiro 中的 SessionManager

shiro提供了完整的会话管理功能,不依赖底层容器,JavaSE应用和JavaEE应用都可以使用。SessionManager(会话管理器)管理着应用中所有Subject的会话,包括会话的创建、维护、删除、失效、验证等工作。SessionManager继承结构DefaultSecurityManager默认使用的SessionManager为DefaultSessionManager,用于J...

2020-02-13 20:24:11 1407

原创 LCP 4. 覆盖 状压DP

OJ题意已经非常清楚了,这题其实跟[POJ 2411]这道题类似,算是一个加强版,都是放置多米诺骨牌,不过这个题添加了障碍物,也就是多加了判断而已,不过也在放置逻辑上加大了难度。核心思想依然是:枚举上一行的状态,搜索这一行所有可能的填写情况。我们定义如下这种填充表示方式:如果一个骨牌是横着放的,那么它所在的两个方格都填充1.如果它是竖着放的,那么它所在的两个格子中,上面的那个填0,下面的这个...

2020-02-10 10:07:58 352

原创 Leetcode 5335. 参加考试的最大学生数 状压DP

OJ每一行只与上一行有关,看成二进制,同时每一行最多2^8种状态,我们自然想到进行状态压缩状态转移方程为:dp[row][state] = max(dp[row-1][last] + state.count())其中state代表某一个二进制数字,state.count代表当前数字的二进制有多少个1注意我们需要检查合法性,这里包括:本行的合法性:不能把学生安排在坏座位上;不能有相邻...

2020-02-09 13:05:33 385

原创 Leetcode 1307. 口算难题

题解因为一共只有10种可能的数字[0-9],所以等式中包含的所有的字符最多包含10种,我们只需要枚举每一种字符对应到每一种数字,得到满足条件的那一个即可,但是要注意,首字符不能为0。思路非常的简单,但是也要注意,处理不当可能会超时。我们如果直接枚举每一种字符可能对应的数字,然后再根据等式计算结果,这样非常可能超时。可以先进行预处理,求出给定的所有串中出现的字符的出现的次数和出现的位置代表的数字...

2020-02-06 13:56:22 493

原创 FactoryBean——Spring的扩展点之一

FactoryBean和BeanFactory虽然名字很像,但是这两者是完全不同的两个概念,用途上也是天差地别。BeanFactory是一个Bean工厂,我们可以简单理解为它就是我们平常所说的Spring容器,它完成了Bean的创建、自动装配等过程,存储了创建完成的单例Bean。而FactoryBean通过名字看,我们可以猜出它是Bean,但它是一个特殊的Bean,一个工厂Bean,用来生成其他B...

2020-02-02 15:47:40 273

原创 Leetcode 5331 跳跃游戏 V

OJ题意:给定一个数组,数组的值代表一个矩形的高度,我们可以任意选择一个矩形当做起点,然后进行跳跃,每次跳跃的最远距离为d,可以向左或者向右跳,但是不能跳出数组。在一个位置上要想跳到另外一个位置,中间所有的矩形都要比起跳位置的矩形矮,且目标矩形也比起跳矩形矮,问最多访问多少个下标。解:一个动态规划的题,dp[i]表示在下标i位置最多能到达的下标数量,dp[i] = max(dp[k]+1,...

2020-02-02 13:09:23 151

原创 Leetcode 1320 二指输入的的最小距离

OJ题意非常的明确,我们直接来进行分析,要求出最小的移动距离,其实非常容易的我们就能想到两个手指最开始的位置,一定都是在键盘中的某个输入串中包含的字符上面的,但是我们并不能确定在哪个位置。不过,我们能确定其中一个手指最开始的位置,那就是输入串第一个字符所在位置,这一点其实非常容易想通,因为我们不管把手指放在什么位置,都要移动去输入第一个字符,那还不如直接放在第一个字符上,但是第二个手指并不能这样...

2020-02-01 15:14:28 376

原创 LeetCode 1335. 工作计划的最低难度

OJ题意给定一组工作序列的难度,给定天数。完成第i个工作的时候,必须要先完成(0,i-1)的工作,每天的工作难度是这一天完成的工作中难度最大的那一个,每天的难度之和为完成这组工作难度的总和,每天都必须要有工作。题解典型的动态规划的题目,用dp[i][j]来表示i天一共完成j个任务的最小难度。关系怎么递推呢?i天要完成j个任务,只要将这j个任务分配给这几天就可以了,求出最小分配,假设i天完成...

2020-01-30 14:48:28 289

空空如也

空空如也

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

TA关注的人

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