苹果微软亚马逊谷歌Facebook五大科技巨头是如何赚钱的
苹果微软亚马逊谷歌Facebook这五大科技巨头在2018年的收入总和超过了8000亿美元。 如果这五大科技巨头保证30%的增长率,这五大科技巨头在2019年的收入总和会超过10000亿美元。 ...
苹果微软亚马逊谷歌Facebook这五大科技巨头在2018年的收入总和超过了8000亿美元。 如果这五大科技巨头保证30%的增长率,这五大科技巨头在2019年的收入总和会超过10000亿美元。 ...
背景 发现自己对情绪没有自己的思考,这方面有很多不知道自己不知道的东西。 误区总结 没有明确:情绪是人生底层操作系统 低估了情绪价值 低估了被情绪主导的人数与比例 忽略了共情别人的情绪 试图控制自己的情绪,导致情绪的恶性循环 试图分清自己的情绪的好坏 试图逃离情绪 不知道自己处于情绪化主导中(不自觉追求情绪价值) 主动将情绪同各种事情耦合在一起 没有建立适应情绪的行为模式 认为情绪多变,不需要研究与学习 总结 情绪是人生底层操作系统。情绪无时不在,无处不在,与情绪共处,应用情绪才是关键。 ...
什么是DoH DoH是DNS over HTTPS。 传统DNS相当于DNS over UDP。 DoH带来哪些好处? 采用DoH对用户来说有如下好处: DoH协议不允许其他用户,服务提供商或第三方查看您访问的网站并收集数据,保护了用户的隐私 DoH协议有利于防止欺骗与钓鱼攻击,保护在线数据的安全和隐私 加速DNS解析,提高网页访问速度 对于天朝人民,还有另一个好处就是科学上网 DoH现在可以使用吗? 1 We've enabled an experiment in Chrome 79 for a fraction of our users. Chrome 79版本对部分用户开启。 ...
背景 这是一个信息爆炸,连接无限,复杂快变的时代。 通才 通才(Polymath),指的是那些具有广泛涉猎知识和兴趣,在不同领域都有深入理解与创造力的人。其主要特点如下: ...
为什么要云节点 主要由以下几个原因: 国内GFW太狠,github都不能幸免,代码都不能下载,影响正常的开发 rust这个编译太占用cpu,内存,硬盘 rust编译的时候cpu一直在叫,影响个人心情,进而影响开发效率 云节点方便共享 花小钱买时间是一件很划算的事情 搭建步骤 准备节点 具体参考这篇文章Installing Substrate,各种类型的操作系统都有说明。 ...
vector in Rust 1 2 3 4 5 struct Vec { length: u32, //Present size of vector ptr: RefCell, //Pointer to allocate Memory on Heap capacity: u32, //Max size vector can hold, after this vector need to be resized/reallocated } create 不指定数据类型 1 2 let mut v1 = Vec::new(); let mut v2 = vec![]; 指定数据类型 1 2 3 let mut v1:Vec<i32> = Vec::new(); let mut v2:Vec<i32> = vec![]; let mut v3 = vec![1i32, 2,3]; 创建并初始化 1 2 3 4 5 6 let mut v1 = vec![1,2,3]; let mut v2:Vec<i32> = vec![1,2,3]; let mut v3 = vec![1i32,2,3]; let mut v4 = vec![1; 10]; let mut v5: Vec<i32> = (0..10).collect(); let v6: Vec <i32> = [1,2,3].to_vec(); 2D vector 1 2 3 let mut 2d_vec: Vec<Vec<i32>> = Vec::new(); let mut 2d_vec: Vec<Vec<i32>> = vec![vec![0; row as usize]; col as usize]; convert from slic 1 2 3 4 5 fn main() { let a = &[1,2,3]; let v1 = a.to_vec(); println!("{:?}", v1) } 1 2 3 4 5 fn main() { let a = &[1,2,3]; let v1 = Vec::from(a); println!("{:?}", v1) } 1 2 3 4 5 6 fn main() { let mut v1 = Vec::new(); let a = &[1,2,3]; v1.extend_from_slice(a); println!("{:?}", v1) } 访问元素 read 1 2 3 4 let mut v1 = vec![1,2,3]; let item = v1[0]; println!("{:?},{:?}", v1.get(0),v1.get(100)); //Some(1),None slice 1 2 3 let v1 = vec![1,2,3,4,5]; let v2 = v1[1..]; let v2 = v1[1..3]; write 1 2 let mut v1 = vec![1,2,3]; v1[0] = 11; insert 1 2 3 4 5 6 fn main() { let mut v1 = vec![1,2,3]; v1.insert(2,1); println!("v1:{:?}",v1); } // v1:[1, 2, 1, 3] remove 1 2 3 4 let mut v1 = vec![1,2,3]; v1.remove(0); println!("v1:{:?}",v1); // v1:[2, 3] clear 1 2 3 4 5 6 7 fn main() { let mut weapons = vec!["Andúril", "Sting", "Glamdring"]; weapons.clear(); println!("Weapons after the war: {:?}", weapons); } append 1 2 3 4 5 6 7 fn main() { let mut v1 = vec![1,2,3]; let mut v2 = vec![4,5,6]; v1.append(&mut v2); println!("v1:{:?}",v1); } // v1:[1, 2, 3, 4, 5, 6] extend 1 2 3 4 5 6 let mut vec1 = vec![1, 2, 3]; let vec2 = vec![4, 5, 6]; vec1.extend(vec2); assert_eq!(vec1, [1, 2, 3, 4, 5, 6]); 1 2 3 4 5 6 7 let vec1 = vec![1, 2, 3]; let vec2 = vec![4, 5, 6]; let mut vec3 = vec1; vec3.extend(vec2.into_iter()); assert_eq!(vec3, [1, 2, 3, 4, 5, 6]); 1 2 3 4 5 6 7 8 9 fn main() { let mut army_of_men = vec!["Aragorn"]; let elves_and_dwarves = vec!["Legolas", "Gimli"]; // The Elves and Dwarves join the coalition army_of_men.extend(elves_and_dwarves); println!("United Army: {:?}", army_of_men); } sort 1 2 3 4 5 6 7 8 9 10 11 12 fn main() { let mut v1 = vec![1,2,3, 3,2,1]; v1.sort(); println!("v1:{:?}",v1); let result = v1.binary_search(&2); println!("result:{:?}",result); } // v1:[1, 1, 2, 2, 3, 3] // result:Ok(3) resize 1 2 3 4 5 6 7 8 9 fn main() { let mut v1 = vec![1,2,3, 3,2,1]; v1.resize(10, 0); println!("v1:{:?}",v1); v1.resize(2, 0); println!("v1:{:?}",v1); } // v1:[1, 2, 3, 3, 2, 1, 0, 0, 0, 0] // v1:[1, 2] push and pop 1 2 3 4 let mut v1 = vec![1,2,3]; v1.push(4); v1.push(5); let item = v1.pop(); iterator 1 2 3 4 5 6 7 8 9 10 11 12 13 let mut v = vec![1,2,3]; for item in &v { } for item in &mut v { } for item in v { } 1 2 3 4 5 6 7 8 9 10 11 12 13 let mut v = vec![1,2,3]; for (i, x) in v.iter().enumerate() { println!("In position {} we have value {}", i, x); } for x in v.iter() { println!("item:{}",x); } for x in v.iter_mut() { *x *= 3; } println!("Updated vector: {:?}", xs); 1 2 3 let items = vec![1, 2, 3]; let sitems = items.into_iter().map(|x| x.to_string()).collect::<Vec<_>>(); println!("sitem: {:?}",sitems); concat() 1 2 3 4 5 6 7 8 9 fn main() { let elves = vec!["Legolas", "Thranduil"]; let dwarves = vec!["Gimli", "Thorin"]; // Uniting Elves and Dwarves let united_army = [elves, dwarves].concat(); println!("United army: {:?}", united_army); } 属性 capacity 1 2 let mut v1 = vec![1,2,3]; println!("capacity={}",v1.capacity()); len 1 2 let mut v1 = vec![1,2,3]; println!("len={}",v1.len()); is_empty 1 2 let mut v1 = vec![1,2,3]; println!("is_empty={}",v1.is_empty()); contains 1 2 3 4 5 6 7 8 9 fn main() { let mut v1 = vec![1,2,3]; println!("{} is in v1:{:?}",1, v1.contains(&1)); println!("{} is in v1:{:?}",11, v1.contains(&11)); } // 1 is in v1:true // 11 is in v1:false application storing enum in vector 1 2 3 4 5 6 7 8 9 10 11 12 13 14 use std::{string::String, u32}; #[derive(Debug)] enum Address{ NoIP, IPv4(u8,u8,u8,u8), IPv6(String), } fn main() { let mut v:Vec<Address> = Vec::new(); v.push(Address::NoIP); v.push(Address::IPv4(1,2,3,4)); println!("{:#?}",v[1]); } into_iter().enumerate() 1 2 3 4 5 6 7 fn main() { let v = vec![3,2,4]; for (idx, num) in v.into_iter().enumerate() { println!("index={}, value={}", idx, num); } }
前言 最近golang的1.13版本发布了,有很多新特性与改进合入。这里主要分析sync.pool的优化。 本文主要解答以下几个问题: sync.pool优化体现在哪里? 优化是如何实现? 优化的好处有哪些? 优化 具体优化项如下: ...
不投资中国才是巨大的风险 最近,桥水基金创始人及《原则》的作者瑞·达利欧公开表示:不投资中国才是巨大的风险。如下图所示: 作为一个世界富豪榜排名前100的大富豪, 作为一个掌握1500亿美元的对冲基金的掌门人, ...
由于墙的原因,导致cargo build,cargo run都会出现概率性失败,并且整个过程十分缓慢。 下面是解决方案: 方案1 在 ~/.cargo/config文件(如果没有创建一个)下添加如下内容: ...
说明 完全是为了记录自己的操作记录,换一台新机器真是免不了要装python。记录下来,便于以后操作。 apt-get安装 1 2 3 4 5 6 7 apt update apt install software-properties-common add-apt-repository ppa:deadsnakes/ppa apt install python3.7 源码安装 1 2 3 4 5 6 7 8 sudo apt update sudo apt install -y build-essential zlib1g-dev libncurses5-dev libgdbm-dev libnss3-dev libssl-dev libreadline-dev libffi-dev wget wget https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tar.xz tar -xf Python-3.7.3.tar.xz cd Python-3.7.3 ./configure --enable-optimizations make make altinstall 更新python3.9 1 2 3 $ sudo add-apt-repository ppa:deadsnakes/ppa $ sudo apt update $ sudo apt install python3.9 install pip 1 apt-get install python3-pip install virutalenv 1 pip3 install virtualenv 1 python3 -m pip install --user virtualenv 1 python3 -m venv env 1 source venv/bin/activate install pipenv 1 pip install --user pipenvd 1 pipenv install tweepy python-dotenv 1 pipenv run python twitter_client.py install jupyter 1 2 python3 -m pip install --upgrade pip python3 -m pip install jupyter pip basic 查看包状态 1 pip show pkgname 不使用缓存 1 pip install --no-cache-dir --default-timeout=10000 pkgname 更新包 1 pip install -U pkgname 指定源 有时候安装一些依赖包,网不好,直接超时,或者这个包就是死都下不下来的时候,可以指定国内源镜像。 pip install -i 国内镜像地址 包名 ...