自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

未来已来

个人温饱之外,别无高尚理想,士当引以为耻

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

原创 CTF总结

昨天参加了一场公司举办的CTF,虽是初级场,但是自己真正第一次参加,觉得甚是有意思,可惜没有参考答案,只能趁热记录下来自己挖出来的漏洞。1. SQL注入在输入框或者url里可以尝试SQL注入譬如username中输入[ \’ or 1=1#] 便可免密登录,因为查询语句是 select * from DB where username=’’ or 1=1 # password=’#后面的内容被注释掉了,有时候–也可以用于注释。2.xss攻击在输入框中尝试输入<script>alert

2021-10-14 22:26:45 2875

原创 最佳买卖股票时机问题分析

本文整理了leetcode上关于股票买卖最大利润系列问题的通用解法。这列问题通常是用动态规划来解。首先来看通用的问题:1. 给定一个整数数组 prices ,它的第 i 个元素 prices[i] 是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)这是leetcode上的第188题解决这类问题的思路是创建两个数组,buy和sell,对于每天的股票价格,buy[j]代表第j次买入时的

2021-01-31 18:46:44 155

原创 java设计模式的七大原则

设计模式是为了让程序具有更好的 代码重用性、可读性、可扩展性、可靠性、使程序呈现高内聚、低耦合的特性1.单一职责原则对类来说,一个类应该只负责一项职责(功能),这样可以降低类的复杂度,提高类的可读性可维护性。2.接口隔离原则客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上。如果这个接口中的方法很多,往往实现这个接口的类又不需要用到那么多方法,可以考虑把这个接口拆分称几个独立的接口,避免实现用不到的方法所造成的浪费3.依赖倒转原则依赖倒转原则的中心思想是 面向接口的

2020-12-24 21:32:42 191

原创 ThreadLocal介绍

ThreadLocal可以使得线程之间相互隔离,也就是说线程A更改了ThreadLocal变量的值,线程B却不会知道,ThreadLocal不仅可以降低代码的耦合度,而且不会阻塞线程。1.代码示例public static void main(String[] args) { ThreadLocal<Persion> tl = new ThreadLocal<>(); new Thread(() -> { try { Thread

2020-12-18 10:55:23 110

原创 JVM的内存结构图

1. 什么是JVMJVM(Java Virtual Machine) 是一个虚拟出来的计算机,可在实际的计算机上模拟各种计算机功能。JVM有自己完善的硬件架构,例如处理器、堆栈和寄存器等,还具有相应的指令系统。JVM有针对不同系统的特定实现(Windows, Linux, macOS), 目的是使用相同的字节码,它们都会给出相同的结果。这样就实现了java的跨平台性。Java程序从源代码到运行一般有下面三步:JVM是运行Java字节码的虚拟机。2.JVM 内存图JVM的内存主要分为三大块:栈内

2020-12-01 14:48:29 368 1

原创 TCP学习笔记4----TCP的拥塞控制

1.滑动窗口上一节中的Nagle算法是一种对小分组数据的流量控制算法。这一篇主要介绍另一种流量控制算法滑动窗口协议。这个协议可以使得多个报文能够连续发送,提高传输效率。接收方通过窗口大小来告诉对方可以发送多少个字节的数据,当接收方确认数据后,这个滑动窗口不时地向右移动,如下图所示2.TCP的拥塞控制算法一般来说,我们总是希望数据传输地更快一些,但是如果对方来不及收,就会造成数据的丢失。我们希望能通过一些算法来避免拥塞。判断网络出现拥塞的依据:发生了超时重传。2.1 慢启动如果一开始发送方就连

2020-11-23 15:36:04 361

原创 TCP 学习笔记3----TCP的交互数据流

所谓交互数据流就是指通过交互产生的一些数据量很小的分组,比如客户端输出一个命令,服务器会对客户端发送一个ack以及该命令的回显,客户端再发送一个对回显命令的确认,如果这样的分组很多,那么会降低传效率。1.经受时延的确认我们把客户端对服务端发送的回显报文的ack叫做经受时延的确认。这是指这些ACK通常不会立即发送,而是会等待一段时间,以便于将ACK与需要沿该方向发送的数据一起发送。大部分会采用200ms的定时器。2.Nagle算法如果这种交互式数据发送的比较频繁,可能会在广域网上产生拥塞的可能。Nag

2020-11-23 11:47:08 152

原创 TCP学习笔记2----TCP连接的建立与终止

1.建立连接建立连接的过程也叫“三次握手”:(1)客户端发送一个SYN段指明打算连接的服务器端口以及初始序号;(2) 服务器发回包含服务器的初始序号的SYN段作为应答;(3) 客户端对服务器的SYN报文进行确认。 只有在这个时候才会发SYN报文。2. 终止连接终止连接的过程也叫"四次挥手":(1) 客户端发送一个FIN包,进入主动关闭(FIN_WAIT_1)状态,服务端收到报文后进入被动关闭(CLOSE_WAIT)状态;(2) 服务端给客户端回一个ACK表示收到了FIN包,客户端进入FIN

2020-11-22 17:53:43 139

原创 TCP学习笔记1----什么是TCP

什么是TCPTCP是位于IP上层的传输层协议,它提供一种面向连接的、可靠的字节流服务。为什么说TCP是字节流服务?这是因为应用数据被分割成TCP认为最合适发送的数据块来传输。有可能这段应用数据太小,被存在TCP的缓存区,等累积到合适的大小再传输,还有可能这段数据被TCP分割成好几块来传输,从TCP的角度来看,它并不知道这块数据有什么意义,也不知道传输的数据是什么类型的数据。下面是TCP报文的数据格式:序号表示在这个报文段中的第一个数据字节确认序号应当是上次已成功接收到数据字节序号加1。只有AC

2020-11-21 21:42:21 201

原创 SQL学习笔记

1. 什么是SQLSQL就是访问和处理关系数据库的计算机标准语言。关系数据库可以看作是一个二维表格,任何数据都可以同通过行号+列号来唯一确定。2. 关系模型主键: 通过主键可以唯一区分出不同的记录。不使用业务相关的字段作为主键。联合主键: 通过多个字段唯一标识记录,即两个或更多的字段都设置为主键。这种主键被称为联合主键。外键: 通过某个字段,可以把数据与另一张表关联起来。3.查询数据 (SELECT)SELECT * FROM <表名> 可以查询到一张表的所有记录。SELECT

2020-11-06 14:37:38 140

原创 Vim 的基本用法

简单介绍一下比较常用的vim命令1. 删除某一行进入command模式,然后输入:dd2. 删除多行进入command模式,然后输入:3 dd把前面的3换成你想删除的行数3. 撤销改变进入command模式,然后输入:u4. redo changes进入command模式,然后输入:ctrl + r5. search text进入command模式,然后输入:/yourtext + ENTER6. find and replace text进入command模式,然后输入

2020-09-11 15:18:46 181

原创 【机器学习】SVM和核函数

上了吴恩达教授在Coursera上的课程之后,在网上找到了他在斯坦福课程的资料CS229 。下面会结合这两个课程的资料,整理一篇笔记。背景从之前的逻辑回归的模型中,我们可以看到,如果一个样本越远离决策边界(Decision Boundary),那么我们就越能确保这个样本被正确分类。所以一个比较好的决策边界是尽量能让所有样本到决策边界的距离最大。从下图中可以看到,如果margin越大,我们对样本...

2019-11-06 14:50:10 544

原创 【机器学习】如何快速找到模型算法中存在的问题

训练集、验证集和测试集训练集(train sets)主要用于训练模型,调整参数,验证集(validation sets)用于进一步调参,而测试集(test sets)用于最后评估模型的精度。一般训练集、验证集和测试集的比例为60%,20%,20%。Bias&Variance我们的学习模型和真实值之间的误差主要来自三个方面:Bias,Variance和随机误差。其中随机误差,也叫噪声,...

2019-10-23 11:30:59 605

原创 【机器学习】神经网络的模型和算法过程以及BP算法

本文主要讲的是神经网络用于多分类场景。之前讲到的逻辑回归的模型是这样的:神经网络比逻辑回归多了一些

2019-10-18 15:47:30 936

转载 逻辑回归和神经网络权重初始化为0的问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

2019-10-17 11:17:49 2677

转载 神经网络BP反向传播算法原理和详细推导流程

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

2019-10-16 16:45:19 170

原创 【机器学习】过拟合问题

**欠拟合(Underfitting)也叫高偏差,是指我们的假设模型与训练样本之间的映射效果不好,通常可能的原因是模型太简单,或者我们所用到的参数太少。另一个极端过拟合(Overfitting)**是指与训练样本拟合地非常好,但是却对新数据的预测效果不好。可能的原因是我们选择了过于复杂的模型。下面用Andrew Ng的两幅图来表示欠拟合和过拟合在线性回归和逻辑回归中的效果:那么如何解决过...

2019-10-14 17:17:07 264

原创 【机器学习】逻辑回归

分类问题(Classification)是指把数据分成一些离散的输出,比如类1、类2、类3、类4等。逻辑回归(Logistic Regression)虽然名字里有"回归",但它实际上是一种分类问题的解决办法,主要用于二分类(即输出只有两种,0或1).我们首先讲二分类,然后再介绍多类。1.模型表示逻辑回归的模型实际上就是将线性回归的模型做了sigmoid变换。Sigmoid函数为:g(z)=...

2019-10-14 15:56:15 203

原创 【机器学习】什么是线性回归、cost function以及常用的线性回归算法

我们首先通过回归问题中最简单的线性回归(Linear Regression)来了解什么是监督学习。监督学习的模型一般可以表示成如下:在监督学习的问题中,我们要找到一个函数h(x),使得对于一个给定的数据集x,能预测出对应的输出y。即 y=h(x)y = h(x)y=h(x)如果我们所要预测的y值是连续的,比如房价,那么这就是一个回归问题;如果y值是一些离散的点,比如是良性肿瘤还是恶性肿瘤,...

2019-10-09 12:55:16 1162 1

原创 【机器学习】监督学习和无监督学习

写在前面最近一直在学习斯坦福大学教授Andrew Ng的机器学习课程。决定把所学到的知识整理下来。机器学习算法主要分为两种:监督学习(supervised learning)和无监督学习(unsupervised learning).1.监督学习监督学习是我们已知数据集的正确输出是什么(即标签 label),想要得到输入和输出的关系。监督学习又分成两种:回归问题(Regression)和...

2019-10-08 15:13:05 299

转载 Java对象与引用变量

先搞清楚什么是堆,什么是栈。Java开辟了两类存储区域,对比二者的特点存储区域存储内容优点缺点缺点栈基本类型的变量和对象的引用变量存取速度比堆要快,仅次于寄存器,栈数据可以共享存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。栈中主要存放一些基本类型的变量当超过变量的作用域后,Java会自动释放掉该变量,内存空间可以立即被另作他用堆由new等指令创建...

2019-08-19 14:59:26 3119

原创 Java 多线程之间通信

背景之所以要用到java的多线程,是因为最近写的程序需要一个这样的场景:server端监听在一个IO上,但是client端有2个IO(可以是多个,我这里是2个)都需要跟server的那个IO通信,但是client两个IO并不是同时向server的那个...

2019-08-13 17:03:48 168

原创 数字签名、数字证书与CA

上周,有同事给我们介绍了什么是数字证书及其工作原理,于是我决定结合自己的理解把这个原理记录下来。为什么会用到数字证书在我们上网的时候,为了防止我们的信息被某些钓鱼网站截取,所以我们在与对方进行通信的时候,需要验证对方的身份。那么如何验证对方的身份是真实可靠的呢,就需要对方能够提供数字证书,而且该证书能够被验证是权威的CA颁发的。举个栗子,比如你要招聘一名清华大学的毕业生,那么你如何确定对方是...

2019-08-05 18:00:26 4205

原创 NAT介绍

有时候会在搭建网络环境的时候,总是把NAT弄混淆,所以决定写一篇关于NAT的总结性介绍,文章中有部分图是copy from 同事的PPT。。。。1.什么是NATNAT(Network Address Transfer),即网络地址转换。它是一种在IP数据包通过路由器或者防火墙时重写source IP或Destination IP地址的技术。我们知道ip地址的资源是有限的,不可能为每一个人的每...

2019-07-30 14:51:11 611

原创 如何删除gitlab上的文件及其记录

背景昨天突然有人跟我说我在gitlab上的一个仓库占用的内存很大,导致pull下来时间有点久。我检查了一下发现原来是我把几个大文件push上去了,而这几个大文件其实没必要传上去,很尴尬。。。因为这个gitlab仓库是大家公用的,所以今天上午在尝试如何把这几个大文件删除并且把记录抹去,虽然最后没有完全解决,但还是记录一下我尝试的过程。这个故事告诉大家,在git add . 之后一定要检查一下自己...

2019-07-18 15:54:19 9285 2

原创 paramiko库实现两台linux服务器之间的文件传输

问题如果想实现主机主动上传文件给远端服务器,而不想在远端服务器上做任何操作,该怎么办呢?解决办法网上搜了一下,python有一个库叫paramiko可以实现主动从远端下载或上传文件,而不需要在远端做任何配置。paramiko是一个遵循SSH2 协议的python库。安装在安装paramiko之前,需要安装一个名为PyCrypto的模块。wget http://ftp.dlitz.net...

2019-06-27 18:00:33 1456

原创 Jenkins+Gitlab 持续集成

前言如果不想在Jenkins上输入用户名和密码,可以通过API token来访问Gitlab步骤登陆gitlab,在User setting中配置Access Tokens如图所示,填写完 Name和Expires date之后,选中四个Scopes,就可以点击Create personal access token来生成API token. 在生成之后,要注意把token保存下来,因...

2019-05-29 15:43:19 1400

原创 如何用Jenkins通过SSH远程控制主机执行命令

背景Jenkins服务器运行在一台主机上,但实际的运行环境在另一台主机上,Jenkins要做的事是远程控制主机何时运行脚本,以及将运行后的结果显示在Jenkins上。什么是SSHssh是一种网络协议,用于计算机之间的加密登陆。如果一个用户从本地计算机,使用SSH协议登陆另一台远程计算机,我们就可以认为这种登陆是安全的,即使被中途截获,密码也不会泄露。步骤(1)首先查看主机上SSH服务是否...

2019-05-22 10:18:45 10781 2

原创 解决docker logs无法实时输出脚本打印的内容

背景&问题我在docker-compose.yml的command参数后面加入了一行运行python脚本的命令:command:python test.py那么这条命令会在container生成的时候就开始运行。但是通过docker logs -f 命令来查看日志时,我发现py脚本里通过print打印出来的东西并不会实时显示出来,而是程序执行完了才会显示出来,这并不是我想要的结果...

2019-05-15 16:56:07 9231

转载 配置Jenkins端口

1.启动前检查是否已安装jdkjava #显示java参数即证明已安装jdk2.查找jenkins安装路径rpm -ql jenkinsjenkins安装路径jenkins相关目录释义:(1)/usr/lib/jenkins/:jenkins安装目录,war包会放在这里。( 2 ) /etc/sysconfig/jenkins:jenkins配置文件,“端口...

2019-05-15 16:14:52 3958

原创 解决PyQt: undefined symbol:FT_Get_Font_Format Error

背景最近想给我写的python程序做一个WebUI,所选用的库是PyQt5。QtWebKit内嵌Chrome浏览器,能够通过html展示出想要的UI效果软件版本我使用的软件版本是Python 3.6.4 + PyQt5 5.12.1问题但是当我将界面做出来之后,运行程序,在UI上点击鼠标右键,界面会闪退,并且报出以下错误信息:python3: symbol lookup error:...

2019-05-08 10:24:09 8929 3

空空如也

空空如也

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

TA关注的人

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