蒙特·卡罗方法
蒙特卡洛方法概述蒙特·卡罗方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。与它对应的是确定性算法。蒙特·卡罗方法在金融工程学,宏观经济学,计算物理学(如粒子输运计算、量子热力学计算、空气动力学计算)等领域应用广泛。蒙特卡罗方法于20世纪40年代美国在第二次世界大战中研制原子弹的“曼哈顿计划”计划的成员S.M.乌拉姆和J.冯·诺伊曼首先提出。数学家冯·诺伊曼用驰名世界的赌城—摩纳哥的Monte Carlo—来命名这种方法,为它蒙上了一层神秘色彩。在这之前,蒙特卡罗方法就已经存在。1777年,法国数学家布丰(Georges Louis Leclere de Buffon,1707—1788)提出用投针实验的方法求圆周率π。这被认为是蒙特卡罗方法的起源。
π的计算圆与外切正方形的面积比为π/4,在正方形内随机均匀置n个点,落在圆内点的数量与总数n之比为近似为面积比即π/4,通过python置随
栈溢出实现
先编写test.c
#include <stdio.h>
#include <string.h>
void function2(){
printf("Execution flow changed\n");
}
void function1(char *str){
char buffer[5];
strcpy(buffer,str);
}
void main(int argc,char *argv[])
{
function1(argv[1]);
printf("Executed normally\n");
}
安装完整的gcc编译包
sudo apt-get install gcc-multilib
用32位编译test.c, -fno-stack-protector:关闭堆栈保护机制. -z execstack:打开堆栈可执行机制
gcc -m32 -g -fno-stack-protector -z execstack -o bufferoverflow test.c
运行测
lua基本语法
安装sudo apt-get install lua5.4
编程交互式lua -i进入交互式编程
chenxiyuan@kali:~$ lua -i
Lua 5.4.0 Copyright (C) 1994-2020 Lua.org, PUC-Rio
> print("hello world!")
hello world!
脚本式chenxiyuan@kali:~$ cat << EOF > 1.lua
> print("hello world!")
> EOF
chenxiyuan@kali:~$ lua 1.lua
hello world!
基本语法注释--是单行注释;--[[]]--是多行注释.
关键字and,break,do,else,,elseif,end,false,for,function,if,in,local,nil,not,or,repeat,return,then,true,until,while ,goto
全局变量变量默认是全局的,并且就算你没有进行创建并直接访问也不会报错,得
BUUCTF web writeup(三)
[RoarCTF 2019]Easy Calc题目是一个计算器,F12看到上了waf,去看看calc.php内容
<?php
error_reporting(0);
if(!isset($_GET['num'])){
show_source(__FILE__);
}else{
$str = $_GET['num'];
$blacklist = [' ', '\t', '\r', '\n','\'', '"', '`', '\[', '\]','\$','\\','\^'];
foreach ($blacklist as $blackitem) {
if (preg_match('/' . $blackitem . '/m',
python实现转轮密码机
密码学第一个实验。三转轮密码机,慢轮中轮快轮,每加密一个字符,快轮转动一圈,快轮每转动26圈中轮转动一圈,中轮每转动26圈慢轮转动一圈。因此三转轮密码机的密钥空间为26*26*26=17576代码:
from tkinter import *
import tkinter as tk
import tkinter.messagebox
window =tk.Tk() #实例化object
window.title('转轮密码机') #窗口标题
window.geometry('1000x400') #窗口尺寸
a=['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S
混合密码算法的模拟实现
这个是大二上的程序设计周选择的题目,半年前写的。没办法,硬盘坏了只能现在发出来。用了tkinter库
from tkinter import *
import tkinter as tk
import tkinter.filedialog
import tkinter.messagebox
import tkinter.simpledialog
window =tk.Tk() #实例化object
window.title('混合密码算法的模拟实现') #窗口标题
window.geometry('800x400') #窗口尺寸
def encrypt():#加密,首先判断原文是否为空,不为空根据radiobutton的值进行对应的加密
if text1.get(1.0, END) == '\n':#获取原文文本框内容
tkinter.messagebox.showinfo('提示', '请输入原文')
else:
if var.get() =='
从零开始android开发(二)
今天要完成一个启动页,然后跳转到主程序。
@Override@Override表示重写。编译器可以验证@Override下面的方法名是否是你父类中所有的,如果没有则报错。
启动页闪屏 <activity
android:name=".StartPageActivity"
android:theme="@style/SplashActivityTheme">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity&g
ubuntu+java+tomcat
java安装默认版本
sudo apt install default-jdk
Java 8
sudo apt install openjdk-8-jdk
which java
root@356ca11f70aa:/usr/local# which java
/usr/bin/java
root@356ca11f70aa:/usr/local# ls /usr/bin/java
/usr/bin/java
root@356ca11f70aa:/usr/local# ls -l /usr/bin/java
lrwxrwxrwx 1 root root 22 Mar 19 05:13 /usr/bin/java -> /etc/alternatives/java
root@356ca11f70aa:/usr/local# ls -l /etc/alternatives/java
lrwxrwxrwx 1 root root 43 Mar 19 05:13 /etc/alternatives/java -> /usr/lib/jvm/java-11-openjdk-amd64/b
给服务器和docker传文件
本机到服务器用xshell连服务器,可以用scp传。今天发现了一个好用的命令rz,可以直接上传文件到当前文件夹。
rz [选项]
选项说明:
-+, --append:将文件内容追加到已存在的同名文件
-a,--ascii:以文本方式传输
-b, --binary:以二进制方式传输,推荐使用
--delay-startup N:等待N秒
-e, --escape:对所有控制字符转义,建议使用
-E, --rename:已存在同名文件则重命名新上传的文件,以点和数字作为后缀
-p, --protect:对ZMODEM协议有效,如果目标文件已存在则跳过 -
q, --quiet:安静执行,不输出提示信息
-v, --verbose:输出传输过程中的提示信息
-y, --overwrite:存在同名文件则替换
-X, --xmodem:使用XMODEM协议
--ymodem:使用YMODEM协议
-Z, --zmodem:使用ZMODEM协议
--version:显示版本信息
--h, --help:显示帮助信息
下载到本地就用sz命令。
服务器到docke
从零开始android开发(一)
因为某些原因,打算学习安卓开发,记录一下每一步。
Bottom Navigation Activity首先开发工具是as3,新建一个bottom navigation activity,因为底部导航栏是比较常用的嘛,这里就直接建一个项目。
文件结构androidmainfest.xml这个是android的主配置文件,采用XML描述语言。AndroidManifest.xml配置文件的根元素,必须包含一个元素并且指定xlmns:android和package属性。xlmns:android指定了Android的命名空间,默认情况下是“http://schemas.android.com/apk/res/android”;而package是标准的应用包名,也是一个应用进程的默认名称。android:versionCode是给设备程序识别版本用的,必须是一个整数值代表app更新过多少次;而android:versionName则是给用户查看版本用的,需要具备一定的可读性,比如“1.0.0”这样的。下面是一份官方的AndroidManifest.xml,格式是这样,具体解析就不赘述了。
&l