自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 资源 (2)
  • 收藏
  • 关注

原创 python获取金融数据的api

python获取金融数据的api

2023-03-19 23:36:48 227

原创 centos在VMware无法联网问题解决方法

centos在VMware无法联网问题解决方法

2022-12-20 16:59:08 159

原创 Kubernetes in action中文 - 第1章 kubernetes介绍

1 容器实现隔离的机制。多个进程运行在同一个操作系统上,容器隔离他们有两个机制Linux命名空间,它使每个进程只能看到它自己的系统视图(文件,进程,网络接口,主机名等) Linux控制组(cgroups),它限制了进程能使用的资源量(CPU,内存,网络带宽等)2 Docker有三个主要概念镜像:包含了打包的应用程序及其所依赖的环境 镜像仓库:存放Docker镜像,以及促进不同人和不同电脑间共享这些镜像 容器:通常是一个Linux容器,基于Docker镜像被创建3 Docker镜像是由多

2021-11-08 15:30:52 1092 1

原创 压缩列表 《Redis 5 设计与源码分析》

1 压缩列表ziplist本质上就是一个字节数组。是一种线性数据结构,可以包含多个元素,每个元素可以是一个字节数组或一个整数2 Redis的有序集合,散列和列表都直接或间接使用了压缩列表。当有序集合zset或散列表hash的元素个数比较少,且元素都是短字符串时,Redis便使用压缩列表作为其底层数据存储结构。 列表list使用快速链表(quicklist)数据结构存储,而快速链表就是双向链表与压缩列表的组合127.0.0.1:6379[1]> hmset person name zhan

2021-06-17 16:01:16 233 1

原创 跳跃表 《Redis 5 设计与源码分析》

1 跳跃表基于有序列表+分层来实现,跳跃表的实现过程如下列为节点,行为层数。即每个柱子为节点,柱子上的L0 ~ Ln为层数从上图可以看出跳跃表有如下性质:跳跃表由很多层构成 跳跃表有一个头(header)节点,头节点中有一个n层的结构(L0到Ln),每层的结构包含指向本层的下个节点的指针,指向本层下个节点中间所跨越的节点个数为本层的跨度(span) 除头节点外,层数最多的节点的层高为跳跃表的高度(level)。如上图中,level为3,即L0到L2 每层都是一个有序链表,数据递增 除

2021-06-10 16:45:03 168

原创 Redis 5 设计与源码分析

1 Redis具有高性能的主要原因Redis是基于内存的存储数据库,大部分的命令都是内存操作 Redis是单进程线程的服务(实际上一个正在运行的Redis Server肯定不止一个线程,但只有一个线程来处理网络请求) Redis使用多路I/O复用模型(select,poll,epoll),可以高效处理大量并发连接 Redis的数据结构是专门设计,增,删,改,查等操作相对简单2 Redis的主要优点Redis是内存型的数据库,Redis的key-value对是存储在内存中 Redis的工作模

2021-06-09 17:17:09 896

原创 简单动态字符串 《Redis 5 设计与源码分析》

1 简单动态字符串(Simple Dynamic Strings, SDS) 是Redis的基本数据结构之一,用于存储字符串和整型数据。2 sds的结构体,大体有这4个变量:len:表示buf中已占用字节数 alloc:表示buf中已分配字节数,即buf分配的总长度 flags:标识当前结构体的类型,flags用来标示是属于5种中哪个字符串类型结构体 buf:柔性数组,真正存储字符串的数据空间如上所示,redis提供了5种字符串类型结构体(1字节,2字节,4字节,8字节和小于1字节)。变

2021-06-09 17:16:30 163 1

原创 深入理解计算机系统 第2章 信息的表示和处理

1 浮点运算是不可结合的,比如,在大多数机器上,表达式 (3.14+1e20) - 1e20 求得的值会是0.0,而 3.14 + (1e20 - 1e20) 求得的值会是3.14。# 比如Python>>> a = 3.14+1e20>>> a - 1e200.0>>> b = 1e20 - 1e20>>> 3.14 - b3.142 大多数计算机使用8位的块,或者字节(byte),作为最小的可寻址的内存单位

2021-05-25 17:19:21 286

原创 深入理解计算机系统 第1章 计算机系统漫游

1 其实系统中所有的信息(包括磁盘文件,内存中的查询,网络上的数据等)都是由一串比特,0和1来表示。区分不同数据对象的唯一方法就是我们读这些数据对象时的上下文2 C语言程序经过四个阶段生成一个可执行目标文件,四个阶段(预处理器,编译器,汇编器和链接器)预处理阶段:预处理器(cpp)根据以字符#开头的命令,修改原始的C程序,比如hello.c中第一行的 # include < stdio.h > 命令告诉预处理器读取系统头文件stdio.h的内容,并将它直接插入程序文本中,得到另一

2021-05-14 17:12:19 107

原创 流畅的Python 第1章 Python数据模型

1 Python解释器碰到特殊的句法时,会使用特殊方法去激活一些基本的对象操作。而这些特殊方法的命名以两个下划线开头,以两个下划线结尾(__xxx__)比如obj[key]的背后就是__getitem__方法,为了求得my_collection[key]的值,解释器实际上会调用my_collection.__getitem__(key)2 元组for循环例子,支持多个forself._cards = [Card(rank,suit) for suit in self.suits for ra.

2021-04-17 12:46:27 76

原创 Python编程 从入门到实践 第11章 测试代码

1 unittestimport unittestdef get_formatted_name(first,last): full_name = first + " " + last return full_name.title()class NamesTestCase(unittest.TestCase): def test_first_last_name(self): formatted_name = get_formatted_name('janis','joplin')

2021-04-06 06:52:03 78

原创 Python编程 从入门到实践 第10章 文件和异常

1 读取整个文件with open('pi_digits.txt') as file_object: contents = file_object.read() print(contents)2 逐行读取with open('pi_digits.txt') as file_object: for line in file_object: print(line.rstrip())3 创建一个包含文件各行内容的列表with open('pi_digits.txt') as f

2021-04-06 06:44:23 72

原创 Python编程 从入门到实践 第9章 类

1 创建Dog类class Dog(): """一次模拟小狗的简单尝试""" def __init__(self,name,age): """初始化属性name和age""" self.name = name self.age = age def sit(self): """模拟小狗被命令时蹲下""" print(self.name.title() + " is now sitting") def roll_over(self): """模拟小狗被命令时打滚"""

2021-04-06 06:14:43 99

原创 Python编程 从入门到实践 第8章 函数

1 用关键字 def 声明函数def greet_user(): """显示简单的问候语""" print("Hello!")greet_user()三引号括起的为文档字符串2 向函数传递信息def greet_user(username): """显示简单的问候语""" print("Hello, " + username.title()+"!")greet_user('jesse')3 传递实参,python支持位置实参和关键字实参。位置实参:要求实参和顺序和

2021-04-05 23:41:22 123

原创 Python编程 从入门到实践 第7章 用户输入和while循环

1 input()函数让程序暂停运行,等待用户输入文本>>> message = input('Tell me something, and I will repeat it back to you: ')Tell me something, and I will repeat it back to you: 123>>> print(message)1232 int() 将其他类型转化成整型>>> age = input("how

2021-04-05 19:12:38 111

原创 Python编程 从入门到实践 第6章 字典

1 字典用大括号 {} 。键和值之间用冒号分隔,而键-值对之间用逗号分隔。>>> alien_0 = {'color':'green','points':5}>>> print(alien_0['color'])green>>> print(alien_0['points'])52 字典是一种动态结构,可随时在其中添加键-值对>>> alien_0 = {'color':'green','points':5}&

2021-04-05 18:31:49 236

原创 Python编程 从入门到实践 第5章 if语句

1 if语句cars = ['audi','bmw','subaru','toyota']for car in cars: if car == 'bmw': print(car.upper()) else: print(car.title())2 使用 and 或 or 检查多个条件>>> age_0 = 22>>> age_1 = 18>>> age_0 >= 21 and age_1 >= 21Fals

2021-04-05 14:57:41 74

原创 Python编程 从入门到实践 第4章 操作列表

1for-in 循环magicians = ['alice','david','carolina']for magician in magicians: print(magician)2 用range()生成一系列数字for value in range(1,5): print(value) #输出 1 2 3 43 用range()和list()生成数字列表,range()可以设置步长b = list(range(1,6))print(b) # b为列表,[1,.

2021-04-05 14:43:24 71

原创 Python编程 从入门到实践 第3章 列表简介

1 在Python中,用方括号 [ ] 来表示列表bicycles = ['trek','cannondale','redline']python支持不同类型元素在同个列表中>>> a = [1,1.0,'11']>>> a[1, 1.0, '11']2 列表的修改,添加和删除访问列表,可以用索引,从0开始。指定某个索引进行修改>>> motorcycles = ['honda','yamaha','suzuki']&g

2021-04-05 13:49:05 75

原创 Rust权威指南 - 第2章 编写一个猜数游戏

1 先上一段代码use std::io;fn main() { println!("Guess the number!"); println!("Please input your guess."); let mut guess = String::new(); io::stdin().read_line(&mut guess).expect("Fail to read line"); // 不要漏掉mut println!("You guess...

2021-03-10 23:24:02 229

原创 Rust权威指南 - 第一章 入门指南

1 Rust的开发工具Cargo提供了一套内置的依赖管理与构建工具 Rustfmt用于约定一套统一的编码风格 The Rust Language Server则为集成开发环境(IDE)提供了可供集成的代码补全和错误提示工具2 通过命令 rustup doc 在网页浏览器中打开它3 println! 是宏,而不是函数fn main() { println!("Hello, world!");}用rustc 命令进行编译,如 rustc main.rs , 生成一个二进制的可执..

2021-03-07 04:22:30 1026

原创 Golang与Python比较

Python编程 从入门到实践1 命名Golang官方是建议采用驼峰命名,如getName; Python官方是约定采用小写字母,并使用下划线来表示空格,如get_name2 字符串Golang里,单引号是byte类型,双引号是字符串类型 Python里,不管单引号还是双引号,两者都是字符串类型3 python字符串函数title() 将字符串每个单词的开头都改成大写name = "ada lovelace"print(name.title()) // 输出 Ada ...

2021-03-07 03:31:42 281

原创 Java面试准备-集合

问题链接转载  Java面试通关要点汇总集【终极版】一、List 和 Set 区别list和set是实现了collection接口的List可以有重复项 有序容器,按插入的顺序输出 常用的实现类有ArrayList,LinkedList和VectorSet不能有重复项 无序容器,无法保证输出的顺序,TreeSet可以通过 Comparator  或者 Comparabl...

2018-11-27 12:38:53 103

原创 Java面试准备-线程

问题链接转载  Java面试通关要点汇总集【终极版】一、创建线程的方式及实现方式有三种:继承Thread类创建线程类,通过Runnable接口创建线程类和通过Callable和Future创建线程1)继承Thread类创建线程类定义Thread类的子类,并重写该类的run()方法 创建Thread类的子类,即创建线程对象 调用线程对象的start()来启动线程public ...

2018-11-27 12:38:41 262

原创 Java面试准备-锁机制

问题链接转载  Java面试通关要点汇总集【终极版】一、说说线程安全问题线程安全问题是多个线程类并发操作某类的函数,修改某个成员变量的值,很容易造成错误,数据不同步。 线程安全出现问题的根本原因是存在多个线程对象共享同个资源或操作共享资源代码有多个语句 常用的解决方案有同步代码块或同步函数同步代码块格式:synchronized (锁对象) {           // 需要...

2018-11-27 12:38:27 735

原创 Java面试准备-缓存使用

问题链接转载  Java面试通关要点汇总集【终极版】一、Redis 有哪些类型string类型:string为最简单类型,一个key对应一个valueset mykey "wangzai" ##设置key,如果该key存在会被覆盖setnx mykey "wangzai" ##如果mykey存在则不改变,如果不存在则创建赋值get mykey ##获取k...

2018-11-27 12:38:07 472 1

原创 Java面试准备-基础篇

问题链接转载  Java面试通关要点汇总集【终极版】一、面向对象的特征封装 抽象 继承 多态二、final, finally, finalize 的区别 final是一个属性,修饰类,方法和变量,修饰类则该类不能被继承,如String;修饰方法则该方法不能被重写,修饰变量则该变量为常量,必须要初始化。 finally是异常处理的一部分,用在try/catch语句里,表示...

2018-11-27 12:37:24 267

原创 Java面试准备-数据存储

问题链接转载  Java面试通关要点汇总集【终极版】一、MySQL 索引使用的注意事项不要在列上使用函数和进行计算,这将导致索引失效而进行全表扫描select * from news where year(publish_time) &lt; 2017; // 不要在列上使用函数select * from news where publish_time &lt; '2017-01-...

2018-11-27 12:37:02 261

原创 Java编程思想(4)

第13章 字符串1 String对象是不可变,String类中每一个修改String值的方法实际都是创建一个全新的String对象2 " + "与" += "是Java中仅有的两个重载过的操作符,而Java并不允许重载任何操作符。3 mac下用Java命令package c06;public class ArrayApp { public static void main(...

2018-10-01 14:50:53 192

原创 Java编程思想 第6章到第9章

第6章 访问权限控制1 访问权限控制的等级,从最大权限到最小权限依次为:public,protected,包访问权限(没有关键字)和private2 如果想要使用类,可以在import语句中导入该类或使用该类的全名来指定// 使用ArrayList的一种方法是使用其全名java.util.ArrayList来指定public static void main(String[] ar...

2018-09-23 23:59:32 167

原创 《实战Java高并发程序设计》学习总结(3)

第6章  java8与并发1 显式函数指函数与外界交换数据的唯一渠道就是参数和返回值,显式函数不会去读取或者修改函数的外部状态。这样的函数对于调试和排错是有益的。2 函数式编程式申明式的编程方式。而命令式则喜欢大量使用可变对象和指令。如下// 命令式编程public static void imperative(){ int[] iArr = {1,3,4,5,6,9,8,...

2018-09-05 19:44:37 197

原创 《实战Java高并发程序设计》学习总结(2)

第3章 JDK并发包1 synchronized的功能扩展:重入锁。使用java.util.concurrent.locks.ReentrantLock类来实现。所以叫重入锁,即该锁可以反复进入。import java.util.concurrent.locks.ReentrantLock;public class ReenterLock implements Runnable {...

2018-08-31 18:16:59 113

原创 《实战Java高并发程序设计》学习总结(1)

第1章 走入并行世界1 并发(Concurrency)和并行(Parallelism)都可以表示两个或多个任务一起执行。但并发偏重于多个任务交替执行,而多个任务之间有可能还是串行。并行是真正意义上的“同时执行”。2 有关并行的两个重要定律。Amdahl定律强调当串行比例一定时,加速比是有上限的。Gustafson定律关心的是如果可被并行化的代码所占比重足够多,那么加速比就能随着CPU的数量...

2018-08-24 19:00:52 198

原创 《Head First PHP & MySQL》学习总结

第1章  为静态页面赋予生命1 通过引入PHP,web服务器能够动态地生成HTML web页面2 表单使用HTML&lt;form&gt;标签创建,每个&lt;form&gt;标签都有一个action属性,不论为action属性设置什么文件名,表单提交时Web服务器都会用设置的这个文件来处理表单。如                  &lt;form  method="post"  a...

2018-08-24 17:57:20 722

原创 Vim的学习总结

参考链接  http://www.runoob.com/linux/linux-vim.html 1 vi/vim共分三种模式,分别是命令模式,输入模式和底线命令模式。2 命令模式下的常用命令" i " 切换到输入模式,以输入字符 " x " 删除当前光标所在处的字符 " h " 或向左箭头键,光标向左移动一个字符 " j " 或向下箭头键,光标向下移动一个字符 " k "...

2018-08-13 18:16:30 195

原创 《Linux从入门到精通》学习总结1

第1章 Linux概述1 常用的国内Linux资源www.chinaunix.net : 国内最大的Linux/UNIX技术社区网站 www.linuxeden.com : Linux伊甸园,最大的中文开源资讯门户网站 www.linuxfans.org : 中国Linux公社,拥有自己的Linux发行版本Magic Linux www.linuxsir.org : 提供Linux各...

2018-08-13 16:46:12 1941

原创 Go语言课外学习了解

1 对于独立运行的可执行文件必须是package main2 Go语言里如果想把多条语句放在一行书写,则必须要用封号“;”隔开。3 多个var声明可以成组,const和import同样允许这么做,要用圆括号(),如下 import ( "fmt" "reflect")const ( A string = "bac" // 显式类型 ...

2018-08-07 17:36:42 122

原创 Go语言编程第七章工程管理

参考书:Go语言编程第七章 工程管理1 go version 命令查看版本号2 Go语言明确拥护骆驼命名法3 go help xxx 命令查看xxx的信息4 go fmt xxx.go 格式化xxx.go文件内容第九章 进阶话题1反射是把双刃剑,功能强大但代码可读性并不理想。若非必要,并不推荐使用反射2 获取类型信息imp...

2018-07-04 11:27:26 118

原创 Go语言编程第六章安全编程

参考书:Go语言编程第六章 安全编程补充:在对称加密中,私钥不能暴露,如DES,AES,RC4等。非对称加密中,公钥是公开的,私钥是保密的。1 哈希算法是一种从任意数据中创建固定长度摘要信息的方法,如MD5,SHA-1等2 Go 语言的几个哈希算法TestString := "Hi,pandaman!"Md5Inst := md5.New()Md5Inst.Wri...

2018-07-03 18:29:53 151

原创 Go语言编程第五章网络编程

参考书:Go语言编程第五章 网络编程1 以前其他的Socket编程步骤建立Socket:使用socket( )函数 绑定Socket:使用bind( )函数 监听使用listen( )函数,或者连接使用connect( )函数 接受连接:使用accept( )函数 接收使用receive( )函数,或者发送使用send( )函数2 无论使用什么协议建立什么形式的连接,...

2018-07-03 17:47:23 226

很经典的国外深度学习课程

很经典的国外深度学习课程

2022-02-12

Go语言圣经

Go是一个开源的编程语言,它很容易用于构建简单、可靠和高效的软件。Go语言由来自Google公司的Robert Griesemer,Rob Pike和Ken Thompson三位大牛于2007年9月开始设计和实现,然后于2009年的11月对外正式发布。语言及其配套工具的设计目标是具有表达力,高效的编译和执行效率,有效地编写高效和健壮的程序。本书是为了帮助你开始以有效的方式使用Go语言,充分利用语言本身的特性和自带的标准库去编写清晰地道的Go程序。

2018-08-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除