首页 文章 精选 留言 我的

精选列表

搜索[快速入门],共10000篇文章
优秀的个人博客,低调大师

C++入门:与Python对比第一弹

因为下学期会学c++面向对象编程,还有接下来的项目中可能会用到c++,所以决定先提前学习下,顺便与python做个比对,还是有许多相似之处的。=v= 下面是两个简单例子对比。 1,for循环 C++ #include <iostream> using namespace std; int main() { int a = 5; for (a; a < 10; a += 1) { cout << "a的值为:" << a << endl; } system("PAUSE"); return 0; } Python for a in range(5, 10): if a < 10: print('a的值为:', a) a += 1 else: break 输出都为: a的值为: 5 a的值为: 6 a的值为: 7 a的值为: 8 a的值为: 9 2,while循环 C++ #include <iostream> using namespace std; int main () { int a = 5; while( a < 10 ) { cout << "a 的值:" << a << endl; a++; } system("PAUSE"); return 0; } Python a = 5 while a < 10: print('a的值为:', a) a += 1 输出都为: a的值为: 5 a的值为: 6 a的值为: 7 a的值为: 8 a的值为: 9 额,那个,我想说:人生苦短,我学python!当然C++在开发驱动程序,系统服务,高效的网络通信程序(比如大型网游)。C++的执行效率是最高的。

优秀的个人博客,低调大师

带你入门比Python更高效的Numpy(附代码)

简介 向量化技巧对于数据科学家来说是相当熟知的,并且常用于编程中,以加速整体数据转换,其中简单的数学变化通过可迭代对象(例如列表)执行。未受到重视的是,把有一定规模的代码模块,如条件循环,进行矢量化,也能带来一些好处。正文 Python正在迅速成为数据科学家的编程实战语言。但与R或Julia不同的是,它是通用型编程语言,没有功能语法来立即开始分析和转换数值数据。所以,它需要专门的库。 Numpy是Numerical Python的缩写,是Python生态系统中高性能科学计算和数据分析所需的基础软件包。它是几乎所有高级工具(如Pandas和scikit-learn)的基础。 TensorFlow使用NumPy数组作为基础构建模块,在这些模块的基础上,他们为深度学习任务(在长列表/向量/数字矩阵上大量使用线性代数运算)构建了张量对象(Tens

优秀的个人博客,低调大师

TensorFlow.js入门(一)一维向量的学习

TensorFlow的介绍 TensorFlow是谷歌基于DistBelief进行研发的第二代人工智能学习系统,其命名来源于本身的运行原理。Tensor(张量)意味着N维数组,Flow(流)意味着基于数据流图的计算,TensorFlow为张量从流图的一端流动到另一端计算过程。TensorFlow是将复杂的数据结构传输至人工智能神经网中进行分析和处理过程的系统。 TensorFlow是一个著名的开源的人工智能系统,被广泛应用于语音识别或图像识别等多项机器学习和深度学习领域。它目前支持的程序语言有: Java, Python, Go, Lua, R, JavaScript, 其中2018年3 月 31 日 ,TensorFlow 宣布增加支持 JavaScript,并推出开源库 TensorFlow.js 。 我们将会介绍在前端开发中TensorFlow的相关内容,即TensorFlow.js的学习与应用。 Tensorflow中的一维向量及其运算 tensor 是 TensorFlow.js 的数据中心单元:由一组数值组成的一维或多维数组。在 TensorFlow.js中,一维向量的构造函数主要为:tf.tensor()和tf.tensor1d(),具体的API文档可以参考:https://js.tensorflow.org/api/0.12.0/ 。 可以用set()和get()函数分别获取和设置向量中的元素值。 一维向量的运算函数有很多,说明如下: tf.add() 两个向量的对应元素的和 tf.sub() 两个向量的对应元素的差 tf.mul() 两个向量的对应元素的乘积 tf.div() 两个向量的对应元素的商 tf.maximum() 两个向量的对应元素的最大值 tf.minimum() 两个向量的对应元素的最小值 tf.pow() 两个向量的对应元素的幂 以上只是一部分,还有更多的函数如: tf.abs(), tf.sin(), tf.cos(), tf.tan(), tf.tan()等。 简单例子 在网页中引入TensorFlow.js需要添加“script”标签,如下: <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@0.12.0"> </script> 我们通过一个小小的例子,来说明在TensorFlow.js中一维向量的使用方法,其完整的HTML代码如下: <html> <head> <!-- Load TensorFlow.js --> <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@0.12.0"> </script> <!-- Place your code in the script tag below.--> <script> function show(){ var a = [1,2,3,4,5]; var b = [2,3,4,5,6]; const vector1 = tf.tensor(a); const vector2 = tf.tensor(b); const res = vector2.add(vector1); document.getElementById("first_element").innerHTML = "第一个元素为" + res.get(0)+ "."; document.getElementById("whole_array").innerHTML = "向量:"+res; } </script> </head> <body> <p id="first_element"></p> <p id="whole_array"></p> <button onclick="show()" id="show" value="show">show</button> </body> </html> 显示的网页如下图: 实战 在刚才的例子中,我们仅仅只给出了一个简单的例子,那么,如果要实现稍微复杂一点的功能呢,比如下面的网页: 我们可以用TensorFlow.js来实现这些向量运算。该网页的完整的HTML代码如下: <html> <head> <!-- Load TensorFlow.js --> <script src="https://cdn.jsdelivr.net/npm/@tensorflow/tfjs@0.12.0"> </script> <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"> <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script> <script src="tf_result.js"></script> </head> <body> <center> <h2>TensorFlow向量(一维)学习</h2> <br><br> <div style="width:600px"> <div> <label class="col-sm-2 control-label">向量运算</label> <div class="col-sm-10"> <label class="radio-inline"> <input type="radio" name="optionsRadiosinline" value="add" checked="checked"> 加 </label> <label class="radio-inline"> <input type="radio" name="optionsRadiosinline" value="sub"> 减 </label> <label class="radio-inline"> <input type="radio" name="optionsRadiosinline" value="mul"> 乘 </label> <label class="radio-inline"> <input type="radio" name="optionsRadiosinline" value="div"> 除 </label> <label class="radio-inline"> <input type="radio" name="optionsRadiosinline" value="max"> max </label> <label class="radio-inline"> <input type="radio" name="optionsRadiosinline" value="min"> min </label> <label class="radio-inline"> <input type="radio" name="optionsRadiosinline" value="abs"> abs </label> <label class="radio-inline"> <input type="radio" name="optionsRadiosinline" value="sin"> sin </label> <label class="radio-inline"> <input type="radio" name="optionsRadiosinline" value="cos"> cos </label> <label class="radio-inline"> <input type="radio" name="optionsRadiosinline" value="tan"> tan </label> <label class="radio-inline"> <input type="radio" name="optionsRadiosinline" value="exp"> exp </label> <label class="radio-inline"> <input type="radio" name="optionsRadiosinline" value="log"> log </label> <label class="radio-inline"> <input type="radio" name="optionsRadiosinline" value="sqrt"> sqrt </label> <label class="radio-inline"> <input type="radio" name="optionsRadiosinline" value="square"> square </label> <label class="radio-inline"> <input type="radio" name="optionsRadiosinline" value="cubic"> cubic </label> <br><br> </div> </div> <div> <label for="vector1" class="col-sm-2 control-label">向量1</label> <div class="col-sm-10"> <input type="text" class="form-control" id="vector1" placeholder="向量1"> <br> </div> </div> <div> <label for="vector2" class="col-sm-2 control-label">向量2</label> <div class="col-sm-10"> <input type="text" class="form-control" id="vector2" placeholder="向量2"> <br> </div> </div> <div > <div class="col-sm-offset-2 col-sm-10"> <button class="btn btn-default" id="result">显示结果</button> <button class="btn btn-default" id="clc">清空</button> </div> </div> </div> <table class="table" style="width:600px"> <caption id="tf">运行结果</caption> <tbody> <tr class="success" id="table"> </tr> </tbody> </table> </center> </body> </html> 在其中我们用到了tf_result.js,其完整的JavaScript代码如下: $(document).ready(function(){ var flag; /* flag = 1表示一元运算 flag = 2表示二元运算 */ // 清空两个输入框的输入 $("#clc").click(function(){ $("#vector1").val(""); $("#vector2").val(""); }); // 是否允许"向量2"输入框有输入 $("#vector1").click(function(){ var op = $("input[name='optionsRadiosinline']:checked").val(); var ops = ["add", "sub", "mul", "div", "max", "min"]; if (ops.indexOf(op) == -1) flag = 1; else flag = 2; //文本框"向量2"禁用 if(flag == 1){ $("#vector2").val(""); $("input[type='text']").each(function () { $("#vector2").attr("disabled", true); }); } //文本框"向量2"启用 if(flag == 2){ $("input[type='text']").each(function () { $("#vector2").attr("disabled", false); }); } }); // 利用tensorflow.js的运算函数,输出计算结果 $("#result").click(function(){ if(flag == 1){ var vector1 = $("#vector1").val().split(',').map(Number); } if(flag == 2){ var vector1 = $("#vector1").val().toString().split(',').map(Number); var vector2 = $("#vector2").val().toString().split(',').map(Number); if(vector1.length != vector2.length) alert("输入的两个向量长度不一样"); } // 利用tensorflow.js的运算函数 if( flag == 1 || ((flag == 2) && (vector1.length == vector2.length))){ var op = $("input[name='optionsRadiosinline']:checked").val(); const pow2 = tf.tensor(2).toInt(); // 计算平方 const pow3 = tf.tensor(3).toInt(); // 计算三次方 switch (op) // JavaScript的switch结构 { case "add": // 加法 res = tf.tensor(vector1).add(tf.tensor(vector2)); break; case "sub": // 减法 res = tf.tensor(vector1).sub(tf.tensor(vector2)); break; case "mul": // 乘法 res = tf.tensor(vector1).mul(tf.tensor(vector2)); break; case "div": // 除法 res = tf.tensor(vector1).div(tf.tensor(vector2)); break; case "max": // 两个向量中的最大值,element-wise res = tf.tensor(vector1).maximum(tf.tensor(vector2)); break; case "min": // 两个向量中的最小值,element-wise res = tf.tensor(vector1).minimum(tf.tensor(vector2)); break; case "abs": // 绝对值 res = tf.tensor(vector1).abs(); break; case "sin": // 正弦函数 res = tf.tensor(vector1).sin(); break; case "cos": // 余弦函数 res = tf.tensor(vector1).cos(); break; case "tan": // 正切函数 res = tf.tensor(vector1).tan(); break; case "exp": // 指数函数,以e为底 res = tf.tensor(vector1).exp(); break; case "log": // 对数函数,以e为底 res = tf.tensor(vector1).log(); break; case "sqrt": // 平方根 res = tf.tensor(vector1).sqrt(); break; case "square": // 平方 res = tf.tensor(vector1).pow(pow2); break; case "cubic": // 三次方 res = tf.tensor(vector1).pow(pow3); break; default: res = tf.tensor([]); } $("#table").html(""); // 清空原有表格中的数据 // 输入计算结果 for(var i=0; i< res.shape; i++){ $("tr").append("<td>"+res.get(i)+"</td>;"); } } }); }); 运行刚才的网页,效果如下: 怎么样,是不是觉得TensorFlow.js也酷酷的呢?结合TensorFlow.js以及前端网页方面的知识,我们可以给出许多酷炫的TensorFlow的应用,以后我们会慢慢讲到。本次项目的Github地址为:https://github.com/percent4/tensorflow_js_learning 。 注意:本人现已开通两个微信公众号: 因为Python(微信号为:python_math)以及轻松学会Python爬虫(微信号为:easy_web_scrape), 欢迎大家关注哦~~

优秀的个人博客,低调大师

Java并发编程 -- AQS入门&实现可重入锁

Java并发编程 -- AQS可能会看的一脸懵逼,今天实战一个项目练手AQS MyAQSLock.java /** * Created by Fant.J. */ public class MyAQSLock implements Lock { private Helper helper = new Helper(); private class Helper extends AbstractQueuedSynchronizer { @Override protected boolean tryAcquire(int arg) { // 如果第一个线程进来,可以拿到锁,因此我们可以返回true // 如果第二个线程进来,则拿不到锁,返回false。有种特例,如果当前进来的线程和当前保存的线程是同一个线程,则可以拿到锁,但是有代价,要更新状态值 // 如何判断是第一个线程进来还是其他线程进来? //获取状态值 int state = getState(); Thread t = Thread.currentThread(); //如果状态=0,那就是第一个线程 if (state == 0) { if (compareAndSetState(0, arg)) { //设置当前线程为独占锁线程 setExclusiveOwnerThread(t); return true; } } else if (getExclusiveOwnerThread() == t) { setState(state + 1); return true; } return false; } @Override protected boolean tryRelease(int arg) { // 锁的获取和释放肯定是一一对应的,那么调用此方法的线程一定是当前线程 //获取当前线程,如果不等于独占锁的线程 if (Thread.currentThread() != getExclusiveOwnerThread()) { throw new RuntimeException(); } int state = getState() - arg; boolean flag = false; if (state == 0) { setExclusiveOwnerThread(null); flag = true; } setState(state); return flag; } Condition newCondition() { return new ConditionObject(); } } @Override public void lock() { helper.acquire(1); } @Override public void lockInterruptibly() throws InterruptedException { helper.acquireInterruptibly(1); } @Override public boolean tryLock() { return helper.tryAcquire(1); } @Override public boolean tryLock(long time, TimeUnit unit) throws InterruptedException { return helper.tryAcquireNanos(1, unit.toNanos(time)); } @Override public void unlock() { helper.release(1); } @Override public Condition newCondition() { return helper.newCondition(); } } 从上往下分析,首先继承Lock接口,然后定义一个子类为非公共内部帮助器类Helper类,Helper类继承AQS,重写它的tryAcquire和tryRelease方法。作为锁的获取和释放。然后填充Lock的子类实现。(为什么Lock子类方法里传值都是1呢,因为AQS源码就是这样,1一路传到底),注释还算详细,就不在这多说了。 /** * Created by Fant.J. */ class TestAQS { private int value; private MyAQSLock myAQSLock = new MyAQSLock(); public int next(){ myAQSLock.lock(); try { Thread.sleep(300); return value++; } catch (InterruptedException e) { throw new RuntimeException(); }finally { myAQSLock.unlock(); } } public void a() { myAQSLock.lock(); System.out.println("a"); b(); myAQSLock.unlock(); } public void b() { myAQSLock.lock(); System.out.println("b"); myAQSLock.unlock(); } public static void main(String[] args) { TestAQS test = new TestAQS(); new Thread(new Runnable() { @Override public void run() { test.a(); } }).start(); new Thread(new Runnable() { @Override public void run() { while (true){ System.out.println(Thread.currentThread().getName()+" "+test.next()); } } }).start(); new Thread(new Runnable() { @Override public void run() { while (true){ System.out.println(Thread.currentThread().getName()+" "+test.next()); } } }).start(); new Thread(new Runnable() { @Override public void run() { while (true){ System.out.println(Thread.currentThread().getName()+" "+test.next()); } } }).start(); } } 开了四个线程,一个线程去跑a方法,a方法中调用b方法,a、b方法调用之前都有加锁,之后有解锁,这个线程用来做可重入锁的测试,其他三个线程是测试线程安全。 结果图

优秀的个人博客,低调大师

【HBase从入门到精通系列】误删数据如何抢救?

前言 有时候我们操作数据库的时候不小心误删数据,这时候如何找回?mysql里有binlog可以帮助我们恢复数据,但是没有开binlog也没有备份就尴尬了。如果是HBase,你没有做备份误删了又如何恢复呢? 数据保护 当误删数据发生时候,不管三七二十一,第一要务是进入hbase shell,执行如下命令: alter 't', { NAME => 'f', KEEP_DELETED_CELLS => TRUE } 如果误删一张表的有多个family里的数据,需要都执行一下: alter 'tt', { NAME => 'f1', KEEP_DELETED_CELLS => TRUE }, { NAME => 'f2', KEEP_DELETED_CELLS => TRUE } 设置 KEEP_DELETED_C

优秀的个人博客,低调大师

手把手教你入门Hadoop(附代码&资源)

GETINDATA公司创始人兼大数据顾问彼得亚·雷克鲁斯基(Piotr Krewski)和GETINDATA公司首席执行官兼创始人亚当·卡瓦(Adam Kawa) 目录 内容简介 设计理念 HADOOP组件 HDFS YARN YARN 应用程序 监控 YARN 应用程序 用HADOOP处理数据 HADOOP 的其它工具 其它资源 内容简介 Hadoop是目前最流行的大数据软件框架之一,它能利用简单的高级程序对大型数据集进行分布式存储和处理。本文将介绍Hadoop的核心概念,描述其体系架构,指导您如何开始使用Hadoop以及在Hadoop上编写和执行各种应用程序。 Hadoop是阿帕奇(Apache)软件基金会发布的一个开源项目,它可以安装在服务器集群上,通过服务器之间的通信和协同工作来存储和处理大型数据集。因为能够高效地处理大数据,Hadoop近几年获得了

优秀的个人博客,低调大师

Logtail从入门到精通(二):开启日志采集之旅

Logtail相关概念 为了更好的了解日志采集,这里我们首先对日志采集中遇到的基本概念进行简要的介绍。 概念介绍 项目: 项目(Project)是日志服务中的资源管理单元,用于资源隔离和控制。您可以通过项目来管理某一个应用的所有日志及相关的日志源。它管理着用户的所有日志库(Logstore),采集日志的机器配置等信息,同时它也是用户访问日志服务资源的入口。 日志库: 日志库(Logstore)是日志服务中日志数据的采集、存储和查询单元。每个日志库隶属于一个项目,且每个项目可以创建多个日志库。 Logtail客户端: Logtail是一款执行日志收集工作的Agent,一般安装在需要收集日志的服务器上,作为独立软件运行。 机器组: 一个机器组包含一或多台需要收集一类日志的机器。通过绑定一组Logtail配置到一个机器组,可以让日志服务根据同样的L

优秀的个人博客,低调大师

Spring Boot入门(6)前端接受后台传参

基础知识 利用Spring Boot来制作Web应用,就必定会涉及到前端与后台之间互相传递参数。在Spring Boot的MVC模型中,如果采用Thymeleaf来渲染视图,则前端页面怎么才能获得后台运行传递的参数呢? 我们介绍两种在Thymeleaf中前端接受后台传参的方法: Thymeleaf自带的方法 Thymeleaf提供的JavaScript接受后台参数方法 在Thymeleaf中,使用th:text=”${var}”或者th:text=”#{var}”可接受后台参数。如果使用Thymeleaf提供的JavaScript接受后台参数方法, 则需在script标签中加入th:inline=”javascript”, 同时使用变量时应为 [[$var]]。 采用JavaScript可以接受的后台参数类型有: Strings Numbers Booleans Arrays Collections Maps Beans (Java对象实现getter和setter方法) 一个例子 以上为理论知识介绍部分,读者看了可能不一定会具体使用。因此,一个简单的例子是必须的。在这个例子中,后台使用Map方法向前端传递String和Bean。项目的完整结构如下图: 我们只需创建红线框内的三个文件。首先是Bean文件,即User类, 代码如下: package com.hello.paramDemo.Controller; public class User { private int age; private String name; User(int age, String name){ this.age = age; this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } } 接着是Controller文件,EgController.java的代码如下: package com.hello.paramDemo.Controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import java.util.Map; @Controller public class EgController { @RequestMapping(value="/params", method = RequestMethod.GET) /* 后台用Map方法向前端传递参数 * 传递的参数为message1: String, message2: String, user: User对象 */ public String passParam(Map <String, Object> map){ map.put("message1", "Hello, Spring Boot!"); map.put("message2", "Hello, Spring Boot!"); User user = new User(18, "Bruce"); map.put("user", user); return "result"; } } 最后是视图result.html,其代码如下: <!DOCTYPE HTML> <html xmlns:th="http://www.thymeleaf.org"> <head> <title>Passing Paraments</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <script th:inline="javascript"> function ShowMessage(){ document.getElementById("message2").innerHTML = "Thymeleaf String by JS: " + [[${message2}]]; var user = /*[[${user}]]*/ null ; document.getElementById("user").innerHTML = "Thymeleaf Beans by JS: name ->"+ user.name +", age -> "+ user.age.toString(); } </script> </head> <body> <p th:text="${message1}">test</p> <p id="message2"></p> <p th:text="'name: ' + ${user.name} +', age: ' + ${user.age}"></p> <p id="user"></p> <button onclick="ShowMessage()">Show Message From Java</button> </body> </html> 在上述Thymtleaf渲染的HTML页面中,就用到了之前将的两种办法来接受后台传递过来的参数。在JavaScript部分,user变量被赋予后台传递的user类的值,就是JavaScript中的对象。 程序运行 启动上述Spring Boot项目,在浏览器中输入: http://localhost:8080/params, 可以看到页面如下: 这是用Thymeleaf自带的方法接受后台参数, 还未显示JavaScript接受的参数。如想显示JavaScript接受的参数,可以点击“Show Message From Java”按钮,页面如下: 本次分享到此结束,如有问题,可参考Thymeleaf的官方说明文档网址: https://www.thymeleaf.org/doc/tutorials/3.0/thymeleafspring.html . 当然,也欢迎大家交流~~

优秀的个人博客,低调大师

入门指南】使用阿里云Elasticsearch搭建ELK日志系统

1.搭建专用网络 1.1 登录专有网络管理控制台 阿里云Elasticsearch是搭建在专有网络上的,所以我们先开通阿里云专有网络,点击开通. 1.2 创建专有网络 点击创建专有网络 在专有网络名称和交换机上写好名字,后续在购买es和ecs时候对应需要。 参考链接:https://helpcdn.aliyun.com/document_detail/65430.html 2. 购买Elasticsearch服务 2.1 购买入口 2.2 购买服务 在订单页面上选择已经创建的专有网络并设置登录密码 购买页面的登录账号默认为“elastic”,密码可自行设置,与登录Kibana的账号密码是一致的。 2.3 控制台查看状态 成功购买之后进入阿里云控制台选择大数据(数加)->阿里云Elasticsearch 2.4 登录kibana控制台 从控制台点击实

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册