自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 深入理解java常量池

原文链接 理论 小菜先拙劣的表达一下jvm虚拟内存分布: 程序计数器是jvm执行程序的流水线,存放一些跳转指令,这个太高深,小菜不懂。本地方法栈是jvm调用操作系统方法所使用的栈。虚拟机栈是jvm执行java代码所使用的栈。方法区存放了一些常量、静态变量、类信息等,可以理解成class文件在内存中的存放位置。虚拟机堆是jvm执行java代码所使用的堆。Java中的...

2018-08-27 11:48:27 714

转载 linux tr命令详解

原文链接:https://blog.csdn.net/jeffreyst_zb/article/details/8047065tr用来从标准输入中通过替换或删除操作进行字符转换。tr主要用于删除文件中控制字符或进行字符转换。使用tr时要转换两个字符串:字符串1用于查询,字符串2用于处理各种转换。tr刚执行时,字符串1中的字符被映射到字符串2中的字符,然后转换操作开始。 带有最常用选项...

2018-08-27 10:33:41 681

转载 sql之left join、right join、inner join的区别

left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录 inner join(等值连接) 只返回两个表中联结字段相等的行举例如下: 表A记录如下: aID     aNum 1     a20050111 2     a20050112 3     a200501...

2018-08-13 13:28:41 521

原创 java接口知识总结

接口是一种特殊的抽象类,为了克服java单继承的缺点而被引入。通常可以通过一个类实现多个接口的方式来达到多重继承的目的。接口和继承的区别简而言之就是“has-a”和“is-a”的区别。那么接口中都能写入哪些东西呢?1.成员变量。接口中可以定义成员变量,但都默认被public static final来修饰。2.成员方法。接口中只允许public,abstract,default,s...

2018-07-19 12:42:44 443

转载 Java学习笔记之Python和Java中Super方法的区别

python 的 super 是一个函数,需要两个参数,第一个参数是类,第二个参数是实例,返回值是一个类对象。其意义是:站在参数2这个实例的角度看去, 参数1这个类的‘父亲’是谁,把‘父亲’返回。详情见这里。Java 的 super 是一个引用,即一个指针,它指向的是本类内部的那个父类对象。可以用 super.xxx 来访问父类的成员变量或成员函数。另外 Java 的 supe...

2018-07-03 11:54:22 623

原创 leetcode 动态规划题号

53 55 62 63 64 70 91 96 120 121 198 213 279 300 303 304 338

2018-05-23 10:46:07 450

原创 拍案叫绝的算法(二)

问题:求一个数n的各位上的数字和,如果这个和大于等于10,接着做以上操作。解答:这道题的算法只有一句话return (n != 0 && n % 9 ==0) ? 9 : n%9 ;理由很简单,10的m次方模9肯定是1。...

2018-05-14 21:26:41 411

原创 拍案叫绝的算法(一)

问题:有一个黑匣子,黑匣子里有一个关于 x 的多项式 p(x) 。我们不知道它有多少项,但已知所有的系数都是正整数。每一次,你可以给黑匣子输入一个整数,黑匣子将返回把这个整数代入多项式后的值。那么,最少需要多少次, 我们可以得到这个多项式每项的系数呢?答案:两次。第一次,输入 1 ,于是便得到整个多项式的所有系数之和。记作 S 。 第二次,输入 S + 1 ,于是黑匣子返回的是 ...

2018-05-14 21:21:33 654

原创 排序算法总结(Java版)

一.冒泡排序 冒泡排序,就是每次比较,大的元素往后挪,比较完第一遍后,最大的元素排到了数组的最后一位 。第二次比较,还是从第一个元素开始和后面的比较,把剩余的最大的元素拍到数组的倒数第二位,第一轮比较的最大元素不参与比较 。程序实现:/*冒泡排序*/public class Sort1 { public int[] sort(int[] nums){ int t...

2018-05-14 14:16:43 387

原创 简述大数分解算法Pollard Rho和Pollard p-1

大数分解问题其实至今都是一个世界级难题,最常见的分解法是从2一直找到sqr(N),作为一个密码学专业的学生,每次看到别人这么做来进行因子分解,自己都控制不住想要制止他,因为这个算法的效率简直太太太太太低了。于是,简单介绍一下牛逼哄哄的Pollard算法,专制各种大数。先说rho算法。rho算法其实是一种概率上的算法,虽然是靠概率,但是其准确率非常高(99.9%),更重要的是,该算法效率...

2018-05-11 12:16:12 11973

原创 公钥、私钥、数字签名、数字证书、对称与非对称算法,HTTPS

要入门密码学,首先要搞清楚三个概念,即加密,签名和认证。 一、公钥加密,私钥解密——用于加密信息如果你想把某个消息秘密的发给某人,那你就可以用他的公钥加密。因为只有他知道他的私钥,所以这消息也就只有他本人能解开,于是你就达到了你的目的。二、私钥加密,公钥解密——用于数字签名严格来说,这里说的私钥加密是用私钥对摘要进行加密,接收方可以用公钥解密,解密成功则可验证信息的发送者是私钥的拥...

2018-03-26 22:03:24 497

转载 计算机网络的三种通讯模式(单播,广播,组播)小结

1.单播(Unicast)单播在发送者和每一接收者之间实现点对点网络连接。 如果一台发送者同时给多个的接收者传输相同的数据,也必须相应的复制多份的相同数据包。如果有大量主机希望获得数据包的同一份拷贝时, 将导致发送者负担沉重、延迟长、网络拥塞;为保证一定的服务质量需增加硬件和带宽。“单播”可以理解为一个人对另外一个人说话,,此时信息的接收和传递只在两个节点之间进行,参见图1。 单播...

2018-03-04 13:18:07 663

原创 删除单向链表中最小值

原题目:在单链表L中删除一个最小值节点,算法尽可能高效,且假设最小值节点为唯一。原答案实在是蠢,特别复杂,看不懂,不想看。自己写了个递归,时间复杂度o(n),空间复杂度o(1),优雅的解决了这个问题。class LNode: def __init__(self, x): self.val = x self.next = Nonedef func(head,

2017-12-11 10:45:21 2033

原创 翻转链表的三种方法(python实现)

具体方法来自看图理解单链表的反转,以下为该博客中方法的python实现以及测试方法一:利用三个指针逐个翻转def func1(head): p = head q = head.next p.next = None while q: r = q.next q.next = p p = q q = r

2017-12-11 09:17:15 13766 7

原创 198. House Robber,又发现一道数学归纳法在leetcode中的应用题

上一道利用到数学归纳法的题目是求最大子列和的Kadane算法,今天做leetcode又遇到了一道及其类似的题目,也是从零开始一步步求解最优解,直至最后得出我们想要的答案。这种思想非常的重要!! 题目地址:198. House Robber 它的算法思想是:从0开始一步步生成最终的数列,得出最大的值(是不是和kadane算法很像!!) f(0) = nums[0] f(1) = max(n

2017-11-20 17:41:34 514

转载 关于String和StringBuffer的常见问题

下面这段代码的输出结果是什么? String a = “hello2”;   String b = “hello” + 2;   System.out.println((a == b)); 输出结果为:true。原因很简单,”hello”+2在编译期间就已经被优化成”hello2”,因此在运行期间,变量a和变量b指向的是同一个对象。2.下面这段代码的输出结果是什么?String a = “he

2017-08-28 21:15:04 668

转载 Java中的String、StringBuffer与StringBuilder

String,StringBuffer,StringBuilder。关于这三个类在字符串处理中的位置不言而喻,那么他们到底有什么优缺点,到底什么时候该用谁呢?下面我们从以下几点说明一下: 1.三者在执行速度方面的比较:StringBuilder > StringBuffer > String  2.String <(StringBuffer,StringBuilder)的原因     S

2017-08-28 21:06:21 402

转载 JS闭包详解

大名鼎鼎的闭包!这一题终于来了,面试必问。 请用自己的话简述什么是「闭包」。「闭包」的作用是什么。首先来简述什么是闭包 上面三行代码在一个立即执行函数中。 三行代码中,有一个局部变量 local,有一个函数 foo,foo 里面可以访问到 local 变量。 好了这就是一个闭包: 「函数」和「函数内部能访问到的变量」(也叫环境)的总和,就是一个闭包。 就这么简单。 有的同学就疑惑

2017-08-27 17:21:29 421

原创 JavaScript中的let与var

先贴两段让人匪夷所思的代码:var a = [];for (var i = 0; i < 10; i++) { a[i] = function () { console.log(i); };}a[6](); // 10上面这段代码输出的结果是10。var a = [];for (let i = 0; i < 10; i++) { a[i] = function () {

2017-08-26 16:05:01 472

转载 JAVA接口思想2

原文链接第一次看这篇文章时,是在CSDN博客中看到的,作者写的初衷还是蛮好的,但是确实有错误的地方和不是很明白的地方。于是就很想去看看原文,废了半天的功夫终于找到了,原文还是一样有出错和我不理解的地方,我也把原文的地址贴在上面了。三月份学习的Java集合框架这部分,这几天拿出来整理就想再深入一点,因此也看了很多的关于Java集合框架的文章,这篇我算是有一点点的体会,我只是改了一些我认为错误的地方和不

2017-08-25 14:10:11 598

原创 JavaScript中的值传递

变量的传递分为两种,分别是值传递和引用传递。但是需要注意的一点是,在JavaScript中,只存在值传递,而不存在引用传递!!!这点非常容易迷惑人,于是总结如下:先看例子function changeStuff(a, b, c){ a = a * 10; b.item = "changed"; c = {item: "changed"};}var num = 10;var obj1

2017-08-20 11:35:30 668

原创 JavaScript中的==和===

严格相等运算符 ===简单说明使用三个等号(===)的判断规则: (1)如果类型不同,就一定不相等 (2)如果两个都是数值,并且是同一个值,那么相等;如果其中至少一个是NaN,那么不相等。(判断一个值是否是NaN,只能使用isNaN( ) 来判断) (3)如果两个都是字符串,每个位置的字符都一样,那么相等,否则不相等。 (4)如果两个值都是true,或是false,那么相等 (5)如果两个

2017-08-20 09:47:20 294

原创 JavaScript数据类型

一直以来总觉得js的数据类型挺简单的,没有系统的学习过。但直到昨天在控制台下打了个undefined == null ,电脑竟然返回了个true。于是自己在书上翻了翻这方面的知识点,发现坑还真是不少,有很多令人迷惑但却技术上正确的点,便总结一下。JS一共6种数据类型。其中,基本数据类型5种——Undefined,Null,Boolean,Number,String。复杂数据类型一种——Object。

2017-08-20 09:17:18 279

原创 从一道easy leetcode问题,谈谈最大子列和的Kadane算法

发现网上讲解kadane算法的文档都是英文的,于是自己就拿中文总结一下,希望能对大家有所帮助。最大子列和问题是算法中的经典问题。记得一年前刚学数据结构时,还总结过一篇求最大子列和算法的博客。博文地址:最大子列和的四种算法比较昨天无事刷leetcode,被一道easy的题目难住,121. Best Time to Buy and Sell Stock。拿java写了三十多行代码,最后还是计算错误。无奈

2017-08-18 11:22:45 4085 2

原创 java数据类型

java的数据类型分为两种:基本类型和引用类型。 引用类型分为下面几种:类类型(class,interface,enum,annotation)和数组类型

2017-08-17 10:41:51 402

转载 java中成员变量和局部变量在内存中的分配

对于成员变量和局部变量:成员变量就是方法外部,类的内部定义的变量;局部变量就是方法或语句块内部定义的变量。局部变量必须初始化。 形式参数是局部变量,局部变量的数据存在于栈内存中。栈内存中的局部变量随着方法的消失而消失。 成员变量存储在堆中的对象里面,由垃圾回收器负责回收。 如以下代码:class BirthDate { private int day; private int m

2017-08-17 10:37:19 2715

转载 Java字符串的内存分配

对于字符串,其对象的引用都是存储在栈中的,如果是编译期已经创建好(直接用双引号定义的)的就存储在常量池中,如果是运行期(new出来的)才能确定的就存储在堆中。对于equals相等的字符串,在常量池中永远只有一份,在堆中有多份。 String s1 = "china"; String s2 = "china"; String s3 = "china";

2017-08-17 10:34:52 629

原创 java中的堆,栈,静态域,常量池

Java内存分配主要包括以下几个区域:寄存器:我们在程序中无法控制栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中堆:存放用new产生的数据静态域:存放在对象中用static定义的静态成员常量池:存放常量非RAM(随机存取存储器)存储:硬盘等永久存储空间Java内存分配中的栈栈中主要存放两种数据类型:在函数中定义的一些基本类型的变量数据,也就是局部变量。对

2017-08-17 10:24:54 1645 2

转载 java接口思想

这是一篇对java接口思想的总结,原文链接java的接口及实例一、定义Java接口(Interface),是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。接口定义的一般形式为:[访问控制符]interface <接口名> {类型标识符final 符号常量名n = 常数;返回值类型 方法

2017-08-16 10:46:02 551

转载 Java泛型思想

这篇文章是对java泛型思想的一个总结,原文地址Java总结篇系列:Java泛型一. 泛型概念的提出(为什么需要泛型)?首先,我们看下下面这段简短的代码:public class GenericTest { public static void main(String[] args) { List list = new ArrayList(); list.add

2017-08-16 10:35:23 548

转载 一张图让你搞懂JavaScript的继承与原型链

前面的话  javascript里的关系又多又乱。作用域链是一种单向的链式关系,还算简单清晰;this机制的调用关系,稍微有些复杂;而关于原型,则是prototype、proto和constructor的三角关系。本文先用一张图开宗明义,然后详细解释原型的三角关系概念上图中的复杂关系,实际上来源就两行代码 function Foo(){}; var f1 = new Foo; 【构造函

2017-08-06 15:46:51 2859 1

原创 kali漏洞利用之BeeF

对XSS漏洞往往需要一个强大的框架支持,如网络上的XSS平台,在KALI下,Beef是一款丝毫不逊于XSS平台的工具。Beef是浏览器攻击框架的简称,是一款专注于浏览器的渗透测试工具。打开beefbeef-xss 默认用户名和密码分别为beef/beef 假设被测试主机由于XSS漏洞请求到下面这个页面 这时候可以看到,online browsers就多了一项127.0.0.1

2017-04-22 20:50:23 5795 2

原创 kali漏洞利用之Meterpreter介绍

使用示例:1.生成Meterpreter后门命令语句如下,如果其中的IP为kali攻击机的IP地址,后面跟着的是参数。msfpayload windows/meterpreter/reverse_tcp LHOST=222.28.136.223 LPORT=2333 R|msfencode -t exe -c 5 > /root/door.exe 这个语句中,如果不知道参数是什么,可以在metas

2017-04-22 20:40:15 3775

原创 kali漏洞利用之Metasploit实战

Metasploit在渗透测试中经常被用到,实际上这套软件包括了很多工具,这些工具组成了一个完整的攻击框架。他们或许在渗透测试中的每一方面都不能称为最好用的工具,但组合起来的框架却让它变得强大。1.启动服务:在kali中使用metasploit,需要先开启PostgreSQL数据库服务和metasploit服务,然后就可以完整的利用msf数据库查询exploit和记录 2.路径介绍kali中,

2017-04-22 20:33:16 21899

原创 kali无线安全分析工具

随着无线网络的兴起,kali Linux下为我们准备了丰富的无线网络攻击套件。由于无线网络攻击测试需要硬件设备支持,故对这些工具我们只在理论上加以介绍。 RFID/NPC工具与之相关的是IC卡的攻击与破解,生活中形形色色的饭卡,工卡,房卡,水卡都可以成为攻击测试的目标。有时需要一套专业的分析硬件如Proxmark3,详细的介绍请参考国内的无线网络安全团队的RADIOWAR的WIKI。软件定义无线

2017-04-22 20:15:58 3349

原创 kali密码攻击之——哈希传递攻击

passing the hash,中文一般翻译为hash传递攻击,在windows系统中,系统通常不会存储用户登录密码,而是存储密码的哈希值,在我们远程登录系统的时候,实际上向远程传递的就是密码的hash值。当攻击者获取了存储在计算机上的用户名和密码的hash值的时候,他虽然不知道密码值,但是仍然可以通过直接连接远程主机,通过传送密码的hash值来达到登录的目的。passing the hash套件

2017-04-22 20:10:51 7122 1

原创 kali密码攻击之——在线攻击工具

密码攻击是安全测试中必不可少的一环,下图为kali对在线密码攻击的工具的分类 Cewl该工具可以通过爬行网站获取关键信息创建一个密码字典。例如输入一个url,它通过提取返回这个url页面源码标签中的一些内容,把这些内容组合成字典,对管理员密码的一个特定枚举就更高效一些。 CAT(Cisco-Auditing-Tool思科审计工具)一个很小的安全审计工具,扫描思科路由器的一般性漏洞,例如默认密码,

2017-04-22 19:57:35 18033

原创 基于hunt工具的TCP会话劫持攻击实验

TCP会话劫持攻击,是劫持通信双方已建立的TCP会话连接,假冒其中一方的身份与另一方进行进一步通信。通常一些网络服务会建立在TCP会话之后进行应用层的身份认证,客户端在通过身份认证之后,就可以通过TCP会话连接对服务器索取资源。且期间不用再次进行身份认证。而TCP会话劫持为 攻击者提供了一种绕过应用层身份认证的技术途径,因此得到较高水平攻击者的青睐。实验环境: A:攻击机kali B:TCP会话

2017-04-10 21:24:03 9583 8

原创 TCP RST攻击实验流程

TCP RST攻击也称伪造TCP重置报文攻击,它通过更改TCP协议头的标志位中的“reset”比特位(0变1),来关闭掉一个TCP会话连接。 首先,A为kali攻击机,B为靶机(win2000),C为服务器(ubuntu)。其中服务器的IP地址如下 我们用靶机B建立和C的23端口的连接,利用telnet命令 这时,我们启动A中的wireshark,进行数据包的监视: 打开NETWOX,调

2017-04-10 18:57:17 6426

原创 SYN Flood攻击实验流程

TCP SYN Flood,又称SYN洪泛攻击,是目前最为有效和流行的一种拒绝服务攻击形式。它利用TCP三次握手协议的缺陷,向目标主机发送大量的伪造源地址的SYN连接请求,消耗目标主机的连接队列资源,从而不能正常为用户提供服务。 首先,令A为攻击机(SYN Flood攻击发起者),C为靶机,B为C要去连接的服务器,先查看它们的IP地址,如下: 然后,我们先用C连接一下B的23端口: 可以看

2017-04-10 18:31:59 1577

空空如也

空空如也

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

TA关注的人

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