- pwnable.tw hacknote
N1ch0l4s
pwnable.twpwn
hacknote主要考察:uaf,fastbin数据结构分析程序流程可知,在add部分,创建的数据结构如下所示用图片直观表示,就是所有被分配的chunk数据结构都是puts块+数据块,并且puts块大小固定。注意到每次free的时候两个快都会被free,并且存在uaf,考虑在free两个块之后,一次malloc0x8大小的内容,再执行show,那么malloc(0x8)时候调用的puts函数即可被
- pwnable.tw——hacknote
「已注销」
CTF
很少做pwn,之前也只懂点rop,现在跟着练练pwn的堆利用吧,pwnable.tw上的一题hacknote,比较纯粹的uaf题目,还好不久前看了点glibc内存管理的东西,可以派上用场了。逆向很轻松,那为什么不直接给源码呢。。。根据add_note函数很容易了解note的结构体特征unsignedintadd_node(){note*v0;//ebxsignedinti;//[esp+Ch][e
- pwnable.tw hacknote write up
苍崎青子
PWN
程序分析:程序有四个操作:1.Addnote2.Deletenote3.Printnote4.Exit1.Addnote在bss段中存放note的指针,每一个note包含两个堆块,add的过程中第一个堆块的数据区的开始四字节存放调用puts的函数地址(0x804862b),随后四个字节存放后面存放content的堆块的地址2.Deletenote漏洞点发生在Delete操作中,在调用free函数的
- pwnable.tw之hacknote
Kdongdong
ctfpwnuafmalloc
uaf漏洞产生的主要原因是释放了一个堆块后,并没有将该指针置为NULL,这样导致该指针处于悬空的状态(有的地方翻译为迷途指针),同样被释放的内存如果被恶意构造数据,就有可能会被利用。再怎么表述起始还不如真的拿一道题自己调自己看内存看堆状态来的好理解。这也是我觉得ctf-pwn的意义所在,可以把一些漏洞抽象出来以题的形式,作为学习这方面的一个抓手。此篇尽量做的细致基础,但仍然假设读者已经初步了解ua
- 【PWN刷题】Pwnable-hacknote
QY不懂
Pwn刷题之路安全网络安全
题目来源:https://pwnable.tw/challenge目录前言一、Pwnable-hacknote1.检查保护2.IDA分析3.漏洞利用:4.EXP总结前言回顾经典老题。一、Pwnable-hacknote1.检查保护32位没开PIE,堆题一般全开。2.IDA分析①太经典辣,堆菜单题。三个功能,add、delete和show。②看堆题先看delete,果然free后没有置空,存在UAF
- 解题思路 | 从一道Pwn题说起
在下佩服_71b5
0×00序好久没有写文章了,最近在学习pwn,这次就分享pwnable.tw上的一道pwn的解题思路。这篇文章主要目的并不是以做这道题为目的,而是以这个题为主线,我主要想讲的是通过这道题,我们能联想或者学会一些其他的东西,所以叫做从一道pwn题说起。如果有什么不对的地方,欢迎大家指出。0×01题目分析题目本身难度并不大,正好适合刚接触堆的选手练习,快速掌握堆利用的知识和技巧,下面我们开始分析,首先
- [pwnable.tw]seethefile [IOFILE学习--fclose]
HAPPYers
原理fclose与伪造_IO_FILE我们使用fopen打开一个文件会在堆上分配一块内存区域用来存储FILE结构体,存储的结构体包含两个部分,前一部分为_IO_FILE结构体file,后一部分是一个指向structIO_jump_t的指针vtable,这个结构体种存储着一系列与文件IO相关的函数指针。在我们调用fclose关闭一个文件时,我们最终会调用到vtable中存储的函数指针。如果我们能够将
- pwn解题
圈圈9700
解题思路|从一道Pwn题说起Reshahar2017-12-06现金奖励共367757人围观,发现7个不明物体0×00序好久没有写文章了,最近在学习pwn,这次就分享pwnable.tw上的一道pwn的解题思路。这篇文章主要目的并不是以做这道题为目的,而是以这个题为主线,我主要想讲的是通过这道题,我们能联想或者学会一些其他的东西,所以叫做从一道pwn题说起。如果有什么不对的地方,欢迎大家指出。0×
- pwnable.tw secret_of_my_heart
joe1sn
pwnablewriteupsecret_of_my_heart保护checksec.pngIDA反汇编从add函数可以看到结构体structchunk{__int64size;charname[0x20];char*desc;}然后又全局变量0x202018,每0x30个写入一个chunk结构体,那就是一个chunk结构体数组,chunk*dword_202018漏洞点vulnchar*__fa
- Pwnable.tw hacknote
Robin_Tan
一道适合入门的堆利用题目需要事先了解malloc相关的堆分配机制(fastbin,normalbin等)先用ida分析以下,有add,delete,print3个主要功能,一个note会分配8个字节,前四字节指向print功能所要调用的函数,后四节指向note中的具体内容。漏洞比较明显,在delete的时候,没有将指针置为Null,可创造一个迷途指针,从而进行UAF。基本的思路是先add两次,但是
- pwnable.tw 堆一hacknote
Sadmess
分析程序漏洞很简单,free掉两个指针之后没有清空,可以uaf,程序有执行函数地址的函数,因此可直接劫持流程踩了n多坑,发篇文章纪念一下expfrompwnimport*p=remote("chall.pwnable.tw",10102)#p=process("./hacknote")elf=ELF("./hacknote")libc=ELF("./libc_32.so.6")read_got=e
- 算法06-1冒泡排序
Simon0903
1、冒泡排序(DubbleSort)它一种简单的排序算法。它重复的遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们进行交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列排序已经完成。这个算法的名字由来是因为越小的元素会经由交换而慢慢浮上来队列的顶端冒泡算法的运作机制如下:1、比较相邻的两个元素,如果第一个比第二个大(升序),就交换他们两个;2、对每一对相邻元素做同
- pwnable.tw - hacknote(uaf漏洞利用)
一点.
pwn学习
*##pwnable.tw-hacknote前言:看了几个大佬写的pwnable.tw-hacknote,自己也尝试写一下;程序分析:首先运行一下程序发现这里有add_note,delete_note,print_note三个功能,我们看一下main函数,add_note,和delete_note函数,main函数:add_note函数:可以看到首先为ptr+note_offset使用malloc
- pwnable.tw——hacknote分析
HawkJW
pwn题目
hacknote的题目分析2020-02-2421:22:47byhawkJW题目附件、ida文件及wp链接这是一道比较经典的题目,所以稍微记录一下1.程序流程总览首先,还是老规矩,看一下保护情况可以看出来,PIE没有开启,可以修改got表,其余基本上都开启了,保护程度一般吧。下面我们来看一下程序的具体流程吧。没什么好说的,还是比较经典的菜单题目。但是需要注意的是,对于note仅仅有add、del
- pwnable.tw 题解笔记
朝向高处的旅途
题目orw考察写shellcode题目只允许使用read/write/open.系统调用表:https://introspelliam.github.io/2017/08/06/%E7%B3%BB%E7%BB%9F%E8%B0%83%E7%94%A8%E7%BA%A6%E5%AE%9A/#coding=utf-8frompwnimport*p=remote('chall.pwnable.tw',1
- pwnable.tw之3x17
合天智汇
前言最近在pwnable做题遇到一道静态编译的二进制文件,并且是去除符号表的,从这道题可以学习到main函数的由来,以及start函数的部分知识。题目这里以pwnable.tw的3x17的题目作为例子。检查保护题目仅仅开启了NX的保护可以看到题目采用的是静态链接•静态链接:静态链接需要在编译链接的时候将需要执行的代码直接拷贝到调用处,这样可以做到程序发布的时候不需要依赖库,相反的程序占用的内存可能
- 通过利用fini_array部署并启动ROP攻击 | TaQini
TaQini852
pwn笔记CTF
这篇文章源自pwnable.tw上的一道题目3x17,其中用到了fini_array劫持,比较有意思,于是写篇文章分析记录总结一下关于fini_array的利用方式~0x0背景用gdb调试main函数的时候,不难发现main的返回地址是__libc_start_main也就是说main并不是程序真正开始的地方,__libc_start_main是main的爸爸然鹅,__libc_start_mai
- 攻防世界-PWN进阶区-hacknote(pwnable.tw)
L.o.W
攻防世界-PWN
攻防世界中这道题是pwnable.tw上面的原题,虽然在攻防世界上难度为7星,不过实际上这题不算难,只需要利用UAF就可以完成。题目分析题目链接:https://pan.baidu.com/s/1T-mIVLkxvyZ_7VvlBuInZQ提取码:azydchecksec:保护机制比前几题弱了很多main:hacknote实现了三个功能:1.添加(上限为5)在新建note时,程序会先申请一个8by
- pwnable.tw 第一题之start
言承Yolanda
pwn
今天学长布置了作业,,,做这道题,,,言承这次遇到的第一个情况,,,就是页面打开了,题目出不来。流泪。大家可以直接用下面图片的ip,端口,如果有需要,想自己pwnable.tw,可以私信我。然后我们来看题32位的程序,程序什么也没开,,,感觉挺友善的哈执行效果,,挺好就一个输入点,基本猜测就是栈溢出,,,用ida打开有点傻眼,没有main函数,只有start和exit,启动和退出?什么操作,内心有
- Pwnable.tw Start
Robin_Tan
参考了这篇writeuphttp://dogewatch.github.io/2017/04/10/pwnable.tw-Part1/拿到binary拖到ida里看一下,只有两个函数,一个_start,一个_exit。直接通过int80h进行系统调用linuxsyscall的资料在这里把这段汇编翻译成cvoid_start(){charbuf[20]='Let'sstarttheCTF:';sys
- pwnable.tw - orw
PolluxAvenger
二进制漏洞Linux
简单概览与start不同,该程序使用动态链接提示仅允许有限的系统调用openreadwrite函数程序运行哪怕是输入一个字母,程序仍然会出现段错误检查安全措施可见栈上开了CANARY程序在IDA中反编译可见:函数orw_seccomp反编译:程序从终端读入内容,存放在shellcode,然后执行该命令所以大体过程为先open文件,然后read读出内容,再write打印到终端frompwnimpor
- pwnable.tw - start
PolluxAvenger
二进制漏洞
首先安装pwntools,在执行pipinstall--upgradepwntools时出错cannotimportnamemain要修改/usr/bin/pipfrompipimportmain为frompipimport__main__sys.exit(__main__._main())再次执行即可安装pedagitclonehttps://github.com/longld/peda.git
- bugku-游戏过关
吾梦不尽
pwnable.tw的calc和pwnable.kr的memcpy难度提升得让我突然像是到了一片知识的孤岛上,举目所望是无尽的未知。才发现自己的汇编基础实在薄弱,另外只通过0day安全分析学了windows的堆管理,对linux的堆管理实在是所知甚少,鉴于此,在补足基础的时候,打算做一下bugku上的逆向维持一下基本的做题感觉。bugku逆向的前三题都是用IDA打开就看到答案了,所以从游戏过关这一
- Pwnable.tw calc
Robin_Tan
这题的漏洞还是挺有意思的先逆向分析一下binary的逻辑看calc函数通过get_expr获得输入,会过滤掉除了+,-,*,/,%和数字以外的字符再传入parse_expr处理注意用于存放表达式的buffer每次都会清空,而且有canary保护再看parse_expr函数主要的逻辑是解析表达式,把操作符放入s[v8]把操作数放入a2,这里需要注意的是a2的第一个元素是操作数的个数,之后才依次是各操
- File Stream Pointer Overflow [libc<=2.24]
BJChangAn
pwnable.tw做到250pt就连偷看wp也领悟不能,exp是不可能会写的,shellcode编码也是编不出来的,比较有眼缘的一道seethefile,在看了大佬哄完女票睡觉后的文章之后迫不及待尝试了一个demo也失败了。身边的大佬说libc新版会有检查,我以为只是为了安慰我,时隔半年再翻出来终于在google字缝里看到了libc<=2.24这个说法。不信邪拿2.26硬试,一点一点仿照正常流程
- 【PWN】pwn入门
Pino_HD
0x01前言今天pwnable.kr不知道什么原因网站挂掉了,pwnable.tw对于我又太难,每题做的我很难过,听从小伙伴的建议,决定从ctf的pwn入手。0x02工具filepwn0//查看文件格式,i386,x86_64等objdump-Spwn0|less//查看汇编代码,查看相关的函数信息。转到IDAF5看看伪代码edb,类似windows上的OD,不过小细节上还是不行,操作不方便。gd
- pwnable.tw之start
yahoo0o0
最近开始在网上找一些pwn题练手,由于pwn的环境一般来说是要比web的环境要难搭建的,所以要找到一些好的题目还是比较难的,最近找到两个还不错的网站,一个是pwnable.kr,另一个是pwnable.tw,这是tw上的题目,如果做出来的话会持续更新。Start拿到一个程序,我们先运行一下,看一下这个程序是干嘛的运行示意然后看一下这个程序几位的文件信息接下来我们就可以直接把程序丢到32位的IDA当
- pwnable.tw记录之hacknote
BJChangAn
0x00漏洞简介uaf漏洞产生的主要原因是释放了一个堆块后,并没有将该指针置为NULL,这样导致该指针处于悬空的状态(有的地方翻译为迷途指针),同样被释放的内存如果被恶意构造数据,就有可能会被利用。再怎么表述起始还不如真的拿一道题自己调自己看内存看堆状态来的好理解。这也是我觉得ctf-pwn的意义所在,可以把一些漏洞抽象出来以题的形式,作为学习这方面的一个抓手。此篇尽量做的细致基础,但仍然假设读者
- glibc fclose源代码阅读及伪造_IO_FILE利用fclose实现任意地址执行
L1nkM3
简介最近学习了一下_IO_FILE的利用,刚好在pwnable.tw上碰到一道相关的题目。拿来做了一下,遇到了一些困难,不过顺利解决了,顺便读了一波相关源码,对_IO_FILE有了更深的理解。文章分为三部分,分别是利用原理、实例和源码阅读。源码部分比较无聊所以我把它放在了最后。原理原理我们使用fopen打开一个文件会在堆上分配一块内存区域用来存储FILE结构体,存储的结构体包含两个部分,前一部分为
- pwnable.tw 题解一 Start orw calc doublesort
Nevv
0x01Startchecksec的时候可以看到程序没有打开任何的安全保护措施,然后查看IDA下的汇编代码,可以看出,从栈上打印字符串实际上是操作的ecx,所以我们首先send的payload先把当前esp的地址leak出来(此时保存的是指向ret位置的地址),然后再次发送的payload中包含了20个字符a填充缓冲区,刚才leak出的地址,shellcode即可得到shell。.text:080
- 安装数据库首次应用
Array_06
javaoraclesql
可是为什么再一次失败之后就变成直接跳过那个要求
enter full pathname of java.exe的界面
这个java.exe是你的Oracle 11g安装目录中例如:【F:\app\chen\product\11.2.0\dbhome_1\jdk\jre\bin】下的java.exe 。不是你的电脑安装的java jdk下的java.exe!
注意第一次,使用SQL D
- Weblogic Server Console密码修改和遗忘解决方法
bijian1013
Welogic
在工作中一同事将Weblogic的console的密码忘记了,通过网上查询资料解决,实践整理了一下。
一.修改Console密码
打开weblogic控制台,安全领域 --> myrealm -->&n
- IllegalStateException: Cannot forward a response that is already committed
Cwind
javaServlets
对于初学者来说,一个常见的误解是:当调用 forward() 或者 sendRedirect() 时控制流将会自动跳出原函数。标题所示错误通常是基于此误解而引起的。 示例代码:
protected void doPost() {
if (someCondition) {
sendRedirect();
}
forward(); // Thi
- 基于流的装饰设计模式
木zi_鸣
设计模式
当想要对已有类的对象进行功能增强时,可以定义一个类,将已有对象传入,基于已有的功能,并提供加强功能。
自定义的类成为装饰类
模仿BufferedReader,对Reader进行包装,体现装饰设计模式
装饰类通常会通过构造方法接受被装饰的对象,并基于被装饰的对象功能,提供更强的功能。
装饰模式比继承灵活,避免继承臃肿,降低了类与类之间的关系
装饰类因为增强已有对象,具备的功能该
- Linux中的uniq命令
被触发
linux
Linux命令uniq的作用是过滤重复部分显示文件内容,这个命令读取输入文件,并比较相邻的行。在正常情 况下,第二个及以后更多个重复行将被删去,行比较是根据所用字符集的排序序列进行的。该命令加工后的结果写到输出文件中。输入文件和输出文件必须不同。如 果输入文件用“- ”表示,则从标准输入读取。
AD:
uniq [选项] 文件
说明:这个命令读取输入文件,并比较相邻的行。在正常情况下,第二个
- 正则表达式Pattern
肆无忌惮_
Pattern
正则表达式是符合一定规则的表达式,用来专门操作字符串,对字符创进行匹配,切割,替换,获取。
例如,我们需要对QQ号码格式进行检验
规则是长度6~12位 不能0开头 只能是数字,我们可以一位一位进行比较,利用parseLong进行判断,或者是用正则表达式来匹配[1-9][0-9]{4,14} 或者 [1-9]\d{4,14}
&nbs
- Oracle高级查询之OVER (PARTITION BY ..)
知了ing
oraclesql
一、rank()/dense_rank() over(partition by ...order by ...)
现在客户有这样一个需求,查询每个部门工资最高的雇员的信息,相信有一定oracle应用知识的同学都能写出下面的SQL语句:
select e.ename, e.job, e.sal, e.deptno
from scott.emp e,
(se
- Python调试
矮蛋蛋
pythonpdb
原文地址:
http://blog.csdn.net/xuyuefei1988/article/details/19399137
1、下面网上收罗的资料初学者应该够用了,但对比IBM的Python 代码调试技巧:
IBM:包括 pdb 模块、利用 PyDev 和 Eclipse 集成进行调试、PyCharm 以及 Debug 日志进行调试:
http://www.ibm.com/d
- webservice传递自定义对象时函数为空,以及boolean不对应的问题
alleni123
webservice
今天在客户端调用方法
NodeStatus status=iservice.getNodeStatus().
结果NodeStatus的属性都是null。
进行debug之后,发现服务器端返回的确实是有值的对象。
后来发现原来是因为在客户端,NodeStatus的setter全部被我删除了。
本来是因为逻辑上不需要在客户端使用setter, 结果改了之后竟然不能获取带属性值的
- java如何干掉指针,又如何巧妙的通过引用来操作指针————>说的就是java指针
百合不是茶
C语言的强大在于可以直接操作指针的地址,通过改变指针的地址指向来达到更改地址的目的,又是由于c语言的指针过于强大,初学者很难掌握, java的出现解决了c,c++中指针的问题 java将指针封装在底层,开发人员是不能够去操作指针的地址,但是可以通过引用来间接的操作:
定义一个指针p来指向a的地址(&是地址符号):
- Eclipse打不开,提示“An error has occurred.See the log file ***/.log”
bijian1013
eclipse
打开eclipse工作目录的\.metadata\.log文件,发现如下错误:
!ENTRY org.eclipse.osgi 4 0 2012-09-10 09:28:57.139
!MESSAGE Application error
!STACK 1
java.lang.NoClassDefFoundError: org/eclipse/core/resources/IContai
- spring aop实例annotation方法实现
bijian1013
javaspringAOPannotation
在spring aop实例中我们通过配置xml文件来实现AOP,这里学习使用annotation来实现,使用annotation其实就是指明具体的aspect,pointcut和advice。1.申明一个切面(用一个类来实现)在这个切面里,包括了advice和pointcut
AdviceMethods.jav
- [Velocity一]Velocity语法基础入门
bit1129
velocity
用户和开发人员参考文档
http://velocity.apache.org/engine/releases/velocity-1.7/developer-guide.html
注释
1.行级注释##
2.多行注释#* *#
变量定义
使用$开头的字符串是变量定义,例如$var1, $var2,
赋值
使用#set为变量赋值,例
- 【Kafka十一】关于Kafka的副本管理
bit1129
kafka
1. 关于request.required.acks
request.required.acks控制者Producer写请求的什么时候可以确认写成功,默认是0,
0表示即不进行确认即返回。
1表示Leader写成功即返回,此时还没有进行写数据同步到其它Follower Partition中
-1表示根据指定的最少Partition确认后才返回,这个在
Th
- lua统计nginx内部变量数据
ronin47
lua nginx 统计
server {
listen 80;
server_name photo.domain.com;
location /{set $str $uri;
content_by_lua '
local url = ngx.var.uri
local res = ngx.location.capture(
- java-11.二叉树中节点的最大距离
bylijinnan
java
import java.util.ArrayList;
import java.util.List;
public class MaxLenInBinTree {
/*
a. 1
/ \
2 3
/ \ / \
4 5 6 7
max=4 pass "root"
- Netty源码学习-ReadTimeoutHandler
bylijinnan
javanetty
ReadTimeoutHandler的实现思路:
开启一个定时任务,如果在指定时间内没有接收到消息,则抛出ReadTimeoutException
这个异常的捕获,在开发中,交给跟在ReadTimeoutHandler后面的ChannelHandler,例如
private final ChannelHandler timeoutHandler =
new ReadTim
- jquery验证上传文件样式及大小(好用)
cngolon
文件上传jquery验证
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="jquery1.8/jquery-1.8.0.
- 浏览器兼容【转】
cuishikuan
css浏览器IE
浏览器兼容问题一:不同浏览器的标签默认的外补丁和内补丁不同
问题症状:随便写几个标签,不加样式控制的情况下,各自的margin 和padding差异较大。
碰到频率:100%
解决方案:CSS里 *{margin:0;padding:0;}
备注:这个是最常见的也是最易解决的一个浏览器兼容性问题,几乎所有的CSS文件开头都会用通配符*来设
- Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数
daizj
shell$#$?特殊变量
前面已经讲到,变量名只能包含数字、字母和下划线,因为某些包含其他字符的变量有特殊含义,这样的变量被称为特殊变量。例如,$ 表示当前Shell进程的ID,即pid,看下面的代码:
$echo $$
运行结果
29949
特殊变量列表 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个
- 程序设计KISS 原则-------KEEP IT SIMPLE, STUPID!
dcj3sjt126com
unix
翻到一本书,讲到编程一般原则是kiss:Keep It Simple, Stupid.对这个原则深有体会,其实不仅编程如此,而且系统架构也是如此。
KEEP IT SIMPLE, STUPID! 编写只做一件事情,并且要做好的程序;编写可以在一起工作的程序,编写处理文本流的程序,因为这是通用的接口。这就是UNIX哲学.所有的哲学真 正的浓缩为一个铁一样的定律,高明的工程师的神圣的“KISS 原
- android Activity间List传值
dcj3sjt126com
Activity
第一个Activity:
import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import a
- tomcat 设置java虚拟机内存
eksliang
tomcat 内存设置
转载请出自出处:http://eksliang.iteye.com/blog/2117772
http://eksliang.iteye.com/
常见的内存溢出有以下两种:
java.lang.OutOfMemoryError: PermGen space
java.lang.OutOfMemoryError: Java heap space
------------
- Android 数据库事务处理
gqdy365
android
使用SQLiteDatabase的beginTransaction()方法可以开启一个事务,程序执行到endTransaction() 方法时会检查事务的标志是否为成功,如果程序执行到endTransaction()之前调用了setTransactionSuccessful() 方法设置事务的标志为成功则提交事务,如果没有调用setTransactionSuccessful() 方法则回滚事务。事
- Java 打开浏览器
hw1287789687
打开网址open浏览器open browser打开url打开浏览器
使用java 语言如何打开浏览器呢?
我们先研究下在cmd窗口中,如何打开网址
使用IE 打开
D:\software\bin>cmd /c start iexplore http://hw1287789687.iteye.com/blog/2153709
使用火狐打开
D:\software\bin>cmd /c start firefox http://hw1287789
- ReplaceGoogleCDN:将 Google CDN 替换为国内的 Chrome 插件
justjavac
chromeGooglegoogle apichrome插件
Chrome Web Store 安装地址: https://chrome.google.com/webstore/detail/replace-google-cdn/kpampjmfiopfpkkepbllemkibefkiice
由于众所周知的原因,只需替换一个域名就可以继续使用Google提供的前端公共库了。 同样,通过script标记引用这些资源,让网站访问速度瞬间提速吧
- 进程VS.线程
m635674608
线程
资料来源:
http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001397567993007df355a3394da48f0bf14960f0c78753f000 1、Apache最早就是采用多进程模式 2、IIS服务器默认采用多线程模式 3、多进程优缺点 优点:
多进程模式最大
- Linux下安装MemCached
字符串
memcached
前提准备:1. MemCached目前最新版本为:1.4.22,可以从官网下载到。2. MemCached依赖libevent,因此在安装MemCached之前需要先安装libevent。2.1 运行下面命令,查看系统是否已安装libevent。[root@SecurityCheck ~]# rpm -qa|grep libevent libevent-headers-1.4.13-4.el6.n
- java设计模式之--jdk动态代理(实现aop编程)
Supanccy2013
javaDAO设计模式AOP
与静态代理类对照的是动态代理类,动态代理类的字节码在程序运行时由Java反射机制动态生成,无需程序员手工编写它的源代码。动态代理类不仅简化了编程工作,而且提高了软件系统的可扩展性,因为Java 反射机制可以生成任意类型的动态代理类。java.lang.reflect 包中的Proxy类和InvocationHandler 接口提供了生成动态代理类的能力。
&
- Spring 4.2新特性-对java8默认方法(default method)定义Bean的支持
wiselyman
spring 4
2.1 默认方法(default method)
java8引入了一个default medthod;
用来扩展已有的接口,在对已有接口的使用不产生任何影响的情况下,添加扩展
使用default关键字
Spring 4.2支持加载在默认方法里声明的bean
2.2
将要被声明成bean的类
public class DemoService {