num

ArrayList数据结构及主要方法分析

a 夏天 提交于 2020-02-07 14:18:53
/** * Shared empty array instance used for default sized empty instances. We * distinguish this from EMPTY_ELEMENTDATA to know how much to inflate when * first element is added. */ private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {}; 可以看出ArrayList的是基于数组的型式实现的 1.ArrayList的初始空间大小 进入ArrayList源码中可以看到声明的初始容量(default capacity) /** * Default initial capacity. */ private static final int DEFAULT_CAPACITY = 10; 从源码中我们可以得到ArrayList的初始容量为10 2.ArrayList的add()——>append操作(在最后追加) /** * Appends the specified element to the end of this list. * * @param e element to be appended to this list *

使用 Python 在 Linux 上实现一键回归测试

时间秒杀一切 提交于 2020-02-07 11:30:34
从代码库迁出代码 —- pexpect 的使用 测试人员从代码库(例如 CVS )迁出代码的过程中,需要手动输入访问密码,而 Python 提供了 Pexpect 模块则能够将手动输入密码这一过程自动化。当然 Pexpect 也可以用来和 ssh、ftp、passwd、telnet 等命令行进行自动化交互。这里我们以 CVS 为例展示如何利用 Pexpect 从代码库迁出代码。 清单 1. 用 pexpect 迁出代码库代码 try : chkout_cmd = 'cvs co project_code' #从代码库迁出 project_code 的内容 child = pexpect . spawn ( chkout_cmd ) child . expect ( 'password:' ) child . sendline ( 'your-password' ) #请替换"your-password"为真实密码 child . interact ( ) except : pass #忽略迁出代码中的错误 在清单 1 中,我们用命令”cvs co project_code”从代码库中迁出了 project_code 的内容,我们也可以用该命令来更新已经迁出的代码。只需要将命令”cvs update” 传给类 pexpect.spawn()即可,详细的实现请参考代码文件。这里

HappenBefore指令重排

和自甴很熟 提交于 2020-02-07 10:27:17
HappenBefore:编写的代码顺序与执行代码的顺序可能不一致,是因为cpu为了提高运行速度会尝试重排指令。 如果两个操作访问同一个变量,并且有一个操作为写,那么这两个操作就操作数据依赖。存在数据依赖的操作的执行顺序改变会影响结果,所以cpu不会改变存在数据依赖的操作执行的顺序。 例如: public class HappenBefore { private static int num = 0; private static boolean flag = false; public static void main(String[] args){ for (int i = 0; i < 10; i++) { num = 0; flag = false; //线程1 修改数据 Thread t1 = new Thread(()->{ num = 1; flag = true; }); //线程2 读取数据 Thread t2 = new Thread(()->{ if (flag){ num *= 1; } //可能会有指令重排 if (num == 0){ System.out.println("此时值为:" + num); } }); t1.start(); t2.start(); try { t1.join(); t2.join(); } catch

《动手学深度学习》之丢弃法(dropout)

这一生的挚爱 提交于 2020-02-07 09:18:47
参考 丢弃法 我们可以通过使用丢弃法应对 过拟合 。 丢弃法只在 训练模型 时使用 在PyTorch中,我们只需要在 全连接层 后添加 Dropout层 并指定丢弃概率。 在训练模型时,Dropout层将以指定的丢弃概率随机丢弃上一层的输出元素; 在测试模型时(即model.eval()后),Dropout层并不发挥作用。 import torch import torch.nn as nn import sys sys.path.append("..") import d2lzh_pytorch as d2l #定义模型参数 num_inputs, num_outputs, num_hiddens1, num_hiddens2 = 784, 10, 256, 256 #定义模型 drop_prob1, drop_prob2 = 0.2, 0.5 #丢弃概率 net = nn.Sequential( d2l.FlattenLayer(), nn.Linear(num_inputs, num_hiddens1), nn.ReLU(), nn.Dropout(drop_prob1), nn.Linear(num_hiddens1, num_hiddens2), nn.ReLU(), nn.Dropout(drop_prob2), nn.Linear(num_hiddens2, 10)

数据挖掘——预测未来销售

南笙酒味 提交于 2020-02-07 09:14:15
数据挖掘——预测未来销售 处理sale_train_v2.csv和test.csv 处理shop.csv 处理item_categories.csv 处理items.csv 特征添加 该项目来自kaggle比赛, 处理sale_train_v2.csv和test.csv 1、读取训练数据: test = pd . read_csv ( "./test.csv" ) . set_index ( "ID" ) train = pd . read_csv ( "./sales_train_v2.csv" ) 2、删除异常值 先画图查看"item_price"属性的分布: index = [ v for v in range ( 2935849 ) ] plt . scatter ( index , train [ "item_price" ] ) plt . show ( ) 属性"item_price"的分布如上,这里将大于100000的点视为异常值,将其剔除掉: train = train [ train . item_price < 100000 ] 再看"item_cnt_day"属性: 将大于1000视为异常值: train = train [ train . item_cnt_day < 1000 ] 3、将售价低于0的使用中值填充 median = train [ (

python基础学习day6作业

好久不见. 提交于 2020-02-07 08:52:11
1.计算从1到1000以内所有奇数的和并输出 num = 1 sum = 0 while num <= 1000 : sum += num num += 2 print ( '1到1000以内所有奇数的和为:' , sum ) 2.求1–100之间可以被7整除的数的个数 num = 1 count = 0 while num <= 100 : if num % 7 == 0 : count += 1 num += 1 print ( '1-100之间可以被7整除的数的个数为:' , count ) 3.计算从1到100以内所有3的倍数的和 num = 1 sum = 0 while num <= 100 : if num % 3 == 0 : sum += num num += 1 print ( '1到100以内所有3的倍数的和为:' , sum ) 4.计算从1到100以内所有能被3或者17整除的数的和并输出 num = 1 sum = 0 while num <= 100 : if num % 3 == 0 or num % 17 == 0 : sum += num num += 1 print ( '1到100以内所有能被3或者17整除的数的和为:' , sum ) 5.计算1到100以内能被7或者3整除但不能同时被这两者整除的数的个数 num = 1 count = 0

LeetCode 刷题记录(二)

匆匆过客 提交于 2020-02-07 08:24:38
写在前面: 因为要准备面试,开始了在 [LeetCode] 上刷题的历程。 LeetCode上一共有大约150道题目,本文记录我在 <http://oj.leetcode.com> 上AC的所有题目,以Leetcode上AC率由高到低排序,基本上就是题目由易到难。我应该会每AC15题就过来发一篇文章,争取早日刷完。所以这个第二篇还是相对比较简单的15道题了。 部分答案有参考网上别人的代码,和leetcode论坛里的讨论,很多答案肯定有不完美的地方,欢迎提问,指正和讨论。 No.16 Climbing Stairs You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb 1 or 2 steps. In how many distinct ways can you climb to the top? class Solution { public: int climbStairs(int n) { if(n==0) return 0; if(n==1) return 1; if(n==2) return 2; int A[n]; A[0] = 1; A[1] = 2; for(int i=2; i<n; i++) { A[i] = A[i-2

数组和字符串//二进制求和

谁说胖子不能爱 提交于 2020-02-07 08:16:56
给定两个二进制字符串,返回他们的和(用二进制表示)。 输入为 非空 字符串且只包含数字 1 和 0 。 示例 1: 输入: a = "11", b = "1" 输出: "100" 示例 2: 输入: a = "1010", b = "1011" 输出: "10101" class Solution { public String addBinary(String a, String b) { if(a == null || a.length() == 0) return b; if(b == null || b.length() == 0) return a; int i = a.length()-1; int j = b.length()-1; int carry = 0; StringBuilder sb = new StringBuilder(); while(i >= 0 || j >= 0 || carry != 0){ if(i >= 0){ carry += a.charAt(i)-'0'; i--; } if(j >= 0){ carry += b.charAt(j)-'0'; j--; } sb.append(carry%2); carry/=2; } return sb.reverse().toString(); } } class Solution {

Cs231n作业:Q1-4 Two-Layer Neural Network exercise(未完成)

不想你离开。 提交于 2020-02-07 08:01:25
Cs231n作业:Assignment 1 Q4 - Two-Layer Neural Network exercise two_layer_net Implementing a Neural Network Forward pass: compute scores Forward pass: compute loss Backward pass Train the network Train a network Debug the training Tune your hyperparameters lnline Question two_layer_net Implementing a Neural Network 在这个练习中,我们将开发一个具有全连接层的神经网络来执行分类,并在CIFAR-10数据集上进行测试。 # A bit of setup import numpy as np import matplotlib . pyplot as plt from cs231n . classifiers . neural_net import TwoLayerNet % matplotlib inline plt . rcParams [ 'figure.figsize' ] = ( 10.0 , 8.0 ) # set default size of plots plt .

[leetcode]241. 为运算表达式设计优先级

故事扮演 提交于 2020-02-07 07:47:15
1、提交的代码,分治 class Solution { map < pair < int , int > , vector < int > > hash ; // 备忘录 key: <left,right> public : vector < int > ways ( const string & input , int left , int right ) { pair < int , int > curKey ( left , right ) ; if ( hash . find ( curKey ) != hash . end ( ) ) { //之前存了 return hash [ curKey ] ; } vector < int > res ; for ( int i = left ; i < right ; i ++ ) { if ( input [ i ] == '-' || input [ i ] == '+' || input [ i ] == '*' ) { //遇到操作符分别递归计算左边、右边, //当前选择的操作符优先最低(递归的下一层的表达式先算) vector < int > left_result = ways ( input , left , i ) ; vector < int > right_result = ways ( input , i