Makefile
0. 简介Makefile 关系到了整个工程的编译规则。一个工程中的源文件不计其数,并且按类型、功能、模块分别放在若干个目录中,Makefile 定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个 Shell 脚本一样,其中也可以执行操作系统的命令。
Makefile带来的好处就是——“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。 make是一个命令工具,是一个解释Makefile中指令的命令工具。
1. 语法规则1.1 基本语法# rules1target1: prerequisites1 command1 command2# rules2target2: prerequisites2 command3 command4 command5
注意:
command 必须以Tab(\t)键开头
Makefile有隐含时间戳逻辑
target timestamp > prerequisites times ...
CSRF
0x00 CSRF简介 CSRF(Cross-site request forgery)跨站请求伪造,也被称为 One Click Attack 或者 Session Riding,是一种对网站的恶意利用。由于目标站点无 Token / Referer 限制,导致攻击者可以用户的身份完成操作达到各种目的。
攻击者通过一些技术手段欺骗用户的浏览器去访问一个自己曾经认证过的网站并执行一些操作(如发邮件、发消息、甚至财产操作:转账、购买商品等)。由于浏览器曾经认证过,所以被访问的网站会认为是真正的用户操作而去执行。这利用了web中用户身份认证的一个漏洞:简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。
0x01 CSRF 攻击原理1.用户C打开浏览器,访问受信任网站A,输入用户名和密码请求登录网站A;2.在用户信息用过验证后,网站A产生Cookie信息并返回给浏览器,此时用户登录网站A成功,可以正常发送请求到网站A;3.用户未退出网站A之前,在同一浏览器中打开一个TAB页访问网站B;4.网站B接受到用户请求后, ...
Untitled
IDA7.0 for Mac Dark ColorIDASkins安装
编译安装:https://github.com/zyantific/IDASkins.git
已经编译好的动态库:https://github.com/gloxec/IDA_plugins_mac/tree/master/7.0/IDASkins-IDA-7.0%20Mac%20OS
两个dylib文件放在 IDA/idabin/plugins/下
skin(整个文件夹)放在/Applications/...../ida.app/Contents/MacOS/目录下
ida-consonance安装切换完成后IDASkins多部分窗口配色仍未改变,通过以下来配置深色配置
下载https://github.com/eugeneching/ida-consonance获取clr文件
在IDA中设置颜色,Options->Colors->Import 之后倒入下载好的clr文件
最终效果![image-20200224094413834](/Users/ ...
Untitled
Nginx源码安装0.安装Nginx依赖包yum install -y pcre-devel zlib-devel openssl-devel wget gcc tree vim
1.从Nginx官网下载并解压源码包wget https://nginx.org/download/nginx-1.16.1.tar.gztar -zxvf nginx-1.16.1.tar.gz
2.Nginx编译前配置cd nginx-1.16.1./configure --prefix=/usr/local/nginx --with-http_ssl_module--prefix:配置configure脚本,软件的安装位置
3.进行安装编译make && make install
4.检查安装情况进入安装目录进行检查
cd /usr/local/nginxls
![image-20200212154141915](/Users/at0m/Library/Application Support/typora-user-images ...
Untitled
Tomcat安装配置
下载安装包:
在apache官网上下载tomcat二进制包
![image-20200223225428878](/Users/at0m/Library/Application Support/typora-user-images/image-20200223225428878.png)
下载解压安装包
wget https://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.31/bin/apache-tomcat-9.0.31.tar.gztar -zxvf apache-tomcat-9.0.31.tar.gz
将解压好的文件夹拷贝到指定位置并启动
mv apache-tomcat-9.0.31 /opt/tomcatcd /opt/tomcat/bin./startup.sh
打开浏览器查看http://localhost:8080检查是否安装成功。
![image-20200223225916990](/Users ...
torchvision
torchvision.transformsfrom torchvision import transforms# 对原有图片进行裁剪,保留长宽比transforms.resize(num) # 把一个取值范围是[0,255]的PIL.Image或者shape为(H,W,C)的numpy.ndarray,转换成形状为[C,H,W],取值范围是[0,1.0]的torch.FloadTensortransforms.ToTensor()# 给定均值:(R,G,B) 方差:(R,G,B), 把 Tensor 正则化transforms.Normalize(mean, std)
Jackson 踩坑
Jackson 反序列化对象冲突Jackson 反序列化对象时,如果所需反序列化对象 Setter 存在重载,则会提示错误。
Code 如下:
import com.fasterxml.jackson.core.JsonProcessingException;import com.fasterxml.jackson.databind.ObjectMapper;import org.junit.Test;public class MyTest { @Test public void jacksonTest() throws JsonProcessingException { ObjectMapper mapper = new ObjectMapper(); String json = mapper.writeValueAsString(new MyClass(1, "aaa")); MyClass w = mapper.readValue(json, MyClass.class); ...
Untitled
0. JVM 内存结构目前主流的 JVM 都基于 Hotspot VM 来设计并且采用“分代回收”的算法。“分代回收”的原理:对象的生命周期不同,所以针对不同生命周期的对象可以采取不同的回收方式,以便提高回收效率。Hotspot VM 将内存划分为不同的物理区,就是“分代”思想的体现。如图所示,JVM 内存主要由新生代、老年代、永久代构成。
Young Generation :大多数对象在新生代中被创建,其中大部分对象的生命周期很短。每次新生代的垃圾回收(Minor GC)后只有少量对象存活,所以选用标记-复制算法,只需要少量的复制成本就可以完成回收。
新生代内又分三个区:一个 Eden 区,两个 Survivor 区,大部分对象在 Eden 区中生成。当 Eden 区满时,还存活的对象将被复制到两个 Survivor 区(中的一个)。当这个 Survivor 区满时,此区的存活且不满足“晋升”条件的对象将被复制到另外一个 Survivor 区。对象每经历一次 Minor GC,年龄加1,达到“晋升年龄阈值”后,被放到老年代,这个过程也称为“晋升”。显然,“晋升年龄阈值”的大小直 ...
Java Exceptions & Errors
1. Java 异常类的层次结构图片摘自 Simple Snippets
从图中可以看出, Exceptions 类和 Errors 类都继承于 Throwable 类。
2. Java Exception直接上源码(摘自 JDK 11.0.10 )
public class Exception extends Throwable { static final long serialVersionUID = -3387516993124229948L; /** * Constructs a new exception with {@code null} as its detail message. * The cause is not initialized, and may subsequently be initialized by a * call to {@link #initCause}. */ public Exception() { super ...
String / StringBuilder / StringBuffer
1. String 不可变的原因直接上源码(摘自 JDK 11.0.10 )— 仅取部分源码非全部
public final class String implements java.io.Serializable, Comparable<String>, CharSequence { @Stable private final byte[] value;}
从源码中可以看到 String 类中使用 final 修饰一个 byte[] 来保存字符串,因此 String 对象是不可变的。
2. StringBuilder源码(摘自 JDK 11.0.10)— 仅取部分源码非全部
public final class StringBuilder extends AbstractStringBuilder implements java.io.Serializable, Comparable<StringBuilder>, CharSequence{ /** * Constructs a stri ...