【R语言】kaggle-CNN手写数据集识别

一、Kaggle的任务描述 kaggle-CNN手写数据集下载 网址 MNIST(“国家标准与技术研究院修改版”)是计算机视觉领域的“hello world”数据集。训练集 (training set) 由来自 250 个不同人手写的数字构成, 其中 50% 是高中学生, 50% 来自人口普查局 (the Census Bureau) 的工作人员. 测试集(test set) 也是同样比例的手写数字数据. 数据文件train.csv和test.csv包含从零到九的手绘数字的灰度图像。每张图像的高度为28像素,宽度为28像素,总共为784像素。每个像素都有一个与之相关的像素值,表示该像素的亮度或暗度,较高的数字意味着较暗。此像素值是一个介于0和255之间的整数,包括0和255。 训练数据集(train.csv)有785列。称为“标签”的第一列是由用户绘制的数字。其余列包含关联图像的像素值。 训练集中的每个像素列都有一个像pixelx这样的名称,其中x是0到783之间的整数,包括0和783之间的整数。为了在图像上定位这个像素,假设我们已经将x分解为x = i * 28 + j,其中i和j是0到27之间的整数,包括0和27。然后,pixelx位于28 x 28矩阵的第i行和第j列(索引为零)。 例如,像素31指示位于2行4列的位置。在视觉上,如果我们省略“像素”前缀,则像素组成如下图像: 000 001 002 003 … 026 027 028 029 030 031 … 054 055 056 057 058 059 … 082 083 | | | | … | | 728 729 730 731 … 754 755 756 757 758 759 … 782 783 测试数据集(test.

python习题及答案

作业四 按要求编写程序(任选三题) 1、 编写一个从 1 加到 end 的当型循环。变量 end 的值由键盘输入。假如输入 end 的值为 6,则代码输出的结果应该是 21,也就是 1+2+3+4+5+6 的结果(不要用 sum 作为变量,因为它是内置函数)。 a = input() b=int(a) total = 0 for i in range(b+1): total = i+total print(total) 2、从键盘输入一个整数,判断该数字能否被 2 和 3 同时整除,能否被 2 整除,能否被 3 整除,不能被 2 和 3 整除。输出相应信息。 a = input() b=int(a) if b%2==0 and b%3==0: print('该数字能被 2 和 3 同时整除') elif b%2==0: print('该数字能被 2 整除') elif b%3==0: print('该数字能被 3 整除') else : print('该数字不能被 2 和 3 整除') 3、 一个数如果恰好等于它的因子之和,这个数就称为“完数”,例如, 6 的因子

Android HttPUrlConnection

GET和POST方式有什么区别 HttPUrlConnection请求网络数据实例 HttPUrlConnection加载网络数据实例 String/StringBuffer/StringBuilder有什么区别 GET和POST方式有什么区别 get方法属于明文传参,在地址栏可以看到参数调用简单,不安全。post方法属于暗文传参,在地址栏参数不可见,调用复杂,安全。 post请求使用方法 new Thread(new Runnable() { @Override public void run() { try { URL url = new URL(getUrl); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("POST");//设置请求方式为POST connection.setDoOutput(true);//允许写出 connection.setDoInput(true);//允许读入 connection.setUseCaches(false);//不使用缓存 connection.connect();//连接 int responseCode = connection.getResponseCode(); if(responseCode == HttpURLConnection.HTTP_OK){ InputStream inputStream = connection.getInputStream(); String result = is2String(inputStream);//将流转换为字符串。 Log.d("kwwl","result============="+result); } } catch (Exception e) { e.printStackTrace(); } } }).start(); get请求的使用方法 HttpURLconnection是同步的请求,所以必须放在子线程中。使用示例如下: new Thread(new Runnable() { @Override public void run() { try { String url = "

HttpUrlConnection的使用

1.GET和POST方式有什么 区别 这两种方式都是HTTP常用的请求方式 get方式属于明文传参,在地址栏可以看到参数,调用简单,不安全 post方式属于暗文传参,在地址栏参数不可见,调用稍复杂,更加安全 所以,一般是公开的东西就可以使用get方法,而当要一定加密的时候就要使用get方法 2.HttpUrlConnection请求网络数据实例 基本步骤如下: 1.创建URL对象 2.通过URL对象调用openConnection()方法获得HttpURLConnection对象 3.HttpURLConnection对象调用getInputStream()方法向服务器发送HTTP请求并获取到服务器返回的输入流 5.读取输入流,转换成String字符串 注意:在Android中访问网络必须添加网络权限,在Android中访问网络必须放在子线程进行 下面为代码演示: private void getWebInfo() { try { //创建URL地址对象 URL url=new URL("https://www.lenovo.com.cn"); //创建Connection对象 HttpURLConnection connection= (HttpURLConnection) url.openConnection(); //创建输入流对象 InputStream inputStream=connection.getInputStream(); //创建Reader对象 InputStreamReader reader=new InputStreamReader(inputStream); //创建BufferReader对象 BufferedReader bufferedReader=new BufferedReader(reader); //开始读取 String temp=""; StringBuffer stringBuffer=new StringBuffer(); while ((temp=bufferedReader.readLine())!=null){ stringBuffer.append(temp); } Log.e("TAG",stringBuffer.toString()); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } 最后我是用到了打印的方式在控制台将所得到的网址的内容打印出来,这即为HttpUrlConnection请求网络数据实例 当然,我们要注意这个方法一定要放到一个子线程中运行,因为主线程不能进行耗时操作; 3.HttpUrlConnection加载网络图片实例 HttpUrlConnection加载网络图片实例与上面的请网络数据稍有不同,其输入的地址为你的图片网络地址,而不是你的网站地址

基于快速去雾的图像亮度增强方法

起因 最近在做一个图像处理的算法,因为图像太暗,所以需要对图像的亮度进行增强(不考虑噪声的放大)。尝试了网上搜索到的各种方法后,发现它们存在两个问题:容易造成原本较亮的地方过曝,并且参数不好设置。尝试了一些暗光增强的paper的算法后,发现它们又太慢了。这时我想到曾经看过的一篇paper说过,有一种亮度增强的算法是基于去雾来做的,步骤很简单: 1. 将RGB图像取反(关于图像取反,请参考我的这篇博客OpenCV图像取反); 2. 对取反后的图像进行去雾; 3. 将去雾后的图像取反。 其背后的理念是:暗光图像取反后,原本接近黑色的像素就会变成接近白色,整张图像就会类似于有雾的图像。于是对这样的图像进行去雾后,白色的像素就变暗了,再反色后,像素就变亮了!没毛病! 快速去雾算法 说起去雾,恐怕大多数人的第一反应就是鼎鼎大名的何恺明博士的暗通道先验去雾算法。我的第一反应也是这个。但是在了解之后,我发现这种方法速度太慢了,难以应用到我的算法中。于是我开始搜索快速的去雾算法,很快找到了这篇论文《基于单幅图像的快速去雾算法》刘倩, 陈茂银, 周东华(这篇文章中也提到了暗通道先验去雾算法的速度太慢),速度很快,只有O(1)复杂度。 这篇论文我并没有仔细看,而是秉承“拿来主义”的精神,直接根据论文提供的算法流程实现了代码。原因是它的算法流程太简单了,在轻松地实现了代码之后,就没有再看的欲望了~这里贴一下它的算法流程,你们自己看: 源码解释 我把实现的代码放到了GitHub:IBEABFHR(原谅我这个取名废),请点进去看效果图,我这里就不重复放了。我感觉效果还是很好的,暗处的亮度增强得很好,亮处虽然有过曝,但并不是很明显。而且控制亮度的参数很好调整,只要随便找一张图像调整好参数,就可以应用于所有图片了。 运行速度 代码是用OpenCV实现的,同时支持彩色图像和灰度图像。在我的电脑上(CPU: E3-1230 v3)测试,运行100次取平均值,速度如下: 分辨率 类型 时间 1024×768 灰度图像 8.77ms 1024×768 彩色图像 16.24ms 1920×1080 灰度图像 22.61ms 1920×1080 彩色图像 40.60ms 4160×2340 灰度图像 104.57ms 4160×2340 彩色图像 186.14ms 但是如果你只使用我的算法一次,可能速度要慢得多,原因是第一次取反操作因为未知原因耗费了额外的时间。关于这点,请参看我的这篇博客OpenCV图像取反。 参数调整 这个算法总共有两个可变参数。一个是在step 3中进行均值滤波时的所用的滤波半径radius,另一个是在step 5中用的ρ。 radius参数在某些图像上可以控制对比度,数值越大,对比度越强,但在某些图像上不起作用。这个参数取值不能太小,否则增强后的图像会出现光晕。一般不应小于50或者图像宽度和高度最大值的的1/20。 ρ控制图像增强的亮度,数值越大,增强后的图像越亮。一般的取值范围为[1.0, 2.0]。在我的实现中,我使用了一种简单选择的策略,请参看源代码,仅供参考。 关于参数的效果及设置,我参考了这篇博客一种可实时处理 O(1)复杂度图像去雾算法的实现,在此进行感谢。

HttpUrlConnection

一.GET和POST方式有什么区别 GET方式属于明文传参,在地址栏可以看到参数,调用简单,不安全。 POST方式输入暗文传参,在地址栏不可见,调用复杂,安全。 二.HttpUrlConnection请求网络实例 1.创建URL对象 URL url = new URL("https://www.baidu.com/"); 2.通过URL对象调用openConnection()方法获得HttpURLConnection对象 HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 3.HttpURLConnecton对象调用getlnputStream()方法向服务器发送http请求并获取到服务器返回的输入流 InputStream inputStream = connection.getInputStream(); 4.读取输入流,转换成String字符串 InputStreamReader reader = new InputStreamReader(inputStream); //创建BufferedReader对象 BufferedReader bufferedReader = new BufferedReader(reader); //开始读取 String temp = ""; StringBuffer stringBuffer = new StringBuffer(); 注:1.在Android中访问网络必须添加网络权限。 <uses-permission android:name="android.permission.INTERNET" /> 2.在Android中访问网络必须放在子线程中执行 三.HttpUrlConnection请求网络图片实例 xml代码如下: id="@+id/web_btn1" android:layout_width="match_parent" android:layout_height="50dp" android:text="访问网络图片"/> id="@+id/web_iv" android:layout_width="match_parent" android:layout_height="match_parent" android:scaleType="centerCrop"/> 效果如图: Java代码如下: web_btn1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { new Thread(new Runnable() { @Override public void run() { getWebpic(); } }).

网络安全如何“疏而不漏”,了解一下锐捷大数据安全平台“降维攻击”

网络威胁分析,是网络安全领域的难点,每天由于网络安全运维产生的数据量非常大,而且这些数据往往暗藏威胁,而日常针对这些海量数据的解决方法一般是不定期的导出数据发给各自安全设备厂商,通过分析后再汇总。但是,这样的做法往往和IT资产、网络环境没有关联,导致分析的结果有效性相当差,发掘网络攻击的作用相当之小。 那么锐捷大数据安全平台是如何通过降维攻击来解决这种现状的呢? 举一个锐捷大数据安全平台在集美大学的应用实例你就了解了: 4月有一次平台上报出了归并次数200万+的”网络攻击行为异常”严重级别告警,目标为对外服务的网站群地址。 经过BDS平台攻击源的统计发现主要来源于一个公网IP,类型包括各种web和网络攻击,验证攻击已经穿透WAF到达FW,但因没有接入服务器中间件日志,BDS平台无法感知服务器是否有异常。 经过查验确定服务器未有异常后,猜测要么是后门植入后未启动破坏,要么是网监部门善意检测,经验证后确实为网监IP,因数字峰会在福州所以需要统一检测。 从此次应用实例中我们可以看出,锐捷大数据安全平台能够对网络攻击行为异常的分析提前发现攻击源,发现威胁的潜在位置,精准帮助网络安全技术人员将未知的威胁解除,通过降维攻击来解决日常网络安全中的一些更为实际的问题,让网络安全“疏而不漏”。

HTTP请求

HTTP请求 一.GET和POST方法有什么区别 get方式属于明文传参(不加密),在地址栏参数可见 post方式属于暗文传参,在地址栏参数不可见 二.HttpURLConnection请求网络数据实例 创建URL地址对象 URL url = new URL("https://www.baidu.com/"); 创建Connection对象 HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 创建输入流对象 InputStream inputStream = connection.getInputStream(); 创建Reader对象 InputStreamReader reader = new InputStreamReader(inputStream); 创建BufferedReader对象 Bufferedder bufferedReader = new BufferedReader(reader); 开始读取 String temp = ""; StringBuffer stringBuffer = new StringBuffer(); while ((temp = bufferedReader.readLine()) != null) { stringBuffer.append(temp); } Log.e("WEB", stringBuffer.toString()); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } 布局文件:

Dubbo添加服务ip白名单,防止不法调用。

1.新增类ValidationFilter继承阿里巴巴的Filter package com.filter; import java.io.IOException; import java.io.InputStream; import java.util.Properties; import com.alibaba.dubbo.rpc.*; /** * Description: * author: LinQin * date: 2018/06/08 */ public class ValidationFilter implements Filter { @Override public Result invoke(Invoker invoker, Invocation invocation) throws RpcException { Properties prop = new Properties(); InputStream in = ValidationFilter.class.getResourceAsStream("/ipwhitelist.properties"); String clientIp = RpcContext.getContext().getRemoteHost();//客户端ip try { prop.load(in); String ipwhitelist = prop.getProperty("ipwhitelist");//ip白名单 if (ipwhitelist.contains(clientIp)) { return invoker.invoke(invocation); } else { return new RpcResult(new Exception("ip地址:" + clientIp + "

DNS反弹Shell

0X01 引子 反弹Shell广泛应用于远程控制下的权限维持,通过反转攻(客户端)和受(服务端)的角色,来实现条件限制,尤其是内网情况下的远程连接。 反弹Shell的工具和实现方法多种多样,只要能够让被控端通过网络发送数据到控制端,并且实现数据的解析即可完成控制过程。 最近在继续了解网络协议,于是突然想在DNS数据包中插入一些伪造的命令来实现解析,本来准备自己尝试写一个DNS服务器和DNS请求程序来实现反弹,不过刚动笔就看到了别人开源的程序,于是直接使用别人的程序来学习了。 https://github.com/ahhh/Reverse_DNS_Shell 为了运行测试更方便,去掉了程序中的加解密功能,额外的Python包只需要dns和dnslib 0X02 DNS 为了关联主机和IP地址对应关系而诞生的DNS本身,不需要我在这里赘述了。跳过域名构成、查询过程等可以轻松在网络查询到的内容,我们直接来看看DNS的包构成 在smtp那篇文章中,我们提过一层一层洋葱状的协议包裹,在这里,我们跳过以太、IP、UDP头,直接到DNS数据的部分。 标志着数据开始的是Tran ID段,所有的问答信息都需要一定的机制来保证对应,这部分应该就是对应机制中的一部分。 紧接着的Flags,0x0100表明了一些查询属性。 Queries中是我们所要查询的host,查询类型。作为A类型查询,得到的是host的IP,这里也是我们做手脚的地方,不过TXT类型可以插入一些附加的信息,更适合我们用来构造命令语句。 服务器回应包如下: 作为回应的Tran ID,它和查询包相同。 Flags中标准回应标志位 重复显示的Queries 回应的Answers信息。通过CNAME查取主机规范名,再通过规范名查取对应IP。 利用这种相互应答的特性,我们初步计划通过以下流程来实现我们的反弹Shell 0X03 程序 原始的程序可以在上面的github中找到,这里贴出我们去掉加解密的部分程序。 先说DNS服务器的部分 这一部分封装了对DNS的应答,payload里是被控端发来的查询信息,也就是上一次命令执行后的回显,而out是我们这一次的命令,封装成了TXT的应答包 这部分对于被控端的查询包进行解析,从中获取到地址和数据,对于数据,解析出其中的命令回显,并且初始化一个应答包。 主函数中使用socket监听相关端口,对于监听到的包按照预定流程进行处理。 再来看看被控端发送的部分 首先是整个流程一览,从程序中可以很清晰的看到建立连接,解析命令,执行命令,发送回显的过程。 构造的url,也就是命令回显,对于没有命令的,会返回nxt。利用回显构造查询语句。 这两段程序对于收到的文本格式的命令进行解析和执行,没有太多的东西可以讲。只是注意格式的截取,并且考虑对Linux和Windows的命令之间转换。 这部分负责发送DNS查询,按照与服务器约定的格式构造包并且进行发送。 0X04 测试 我们需要先执行服务器端程序,然后执行被控端程序。我的服务端程序在一台Ubuntu主机上,被控端在我的Win10机器上。 这是被控端第一次连接时发送的包,因为控制端还没有指令,第一次连接发送的是空包,其中Name的值bnh0就是我之前所说的NXT 而第二个包就是控制端发送的指令,在TXT中发送的就是指令whoami的base64编码, 可以对比和我之前实际抓包的不同之处,对照可以看出我们在DNS包的哪些地方做过修改。 0X05 延伸 其实相关的DNS隧道技术原理应该差不多,都是在本来应该放DNS规定信息的地方放入了其他的东西,来达到一些意想不到的结果。 当然,RFC还有许多协议可以让我随意构造去做测试,下一步考虑写一个多协议支持的Fuzzing工具 :) 点赞 收藏 分享 文章举报 FLy_鹏程万里 博客专家 发布了937 篇原创文章 · 获赞 1031 · 访问量 173万+ 他的留言板 关注