自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(78)
  • 收藏
  • 关注

原创 《Python3 CookBook 中文版》第一章:数据结构和算法(1.6-1.9)

1.6 字典中的键映射多个值问题怎样实现一个键对应多个值的字典(multidict)?解决方案一个字段就是一个键对应一个单值的映射。如果你想要一个键映射多个值,那么你就需要将这多个值放到另外的容易中,比如列表或者集合里。比如,你可以像下面这样构造这样的字典:d = { 'a' : [1, 2, 3], 'b' : [4, 5]}e = { 'a' : {1, 2, 3}, 'b' : {4, 5}}选择使用列表还是集合取决于你的实际需求。如果你想保持元素的

2020-11-18 18:06:00 136

原创 《Python3 CookBook 中文版》第一章:数据结构和算法(1.1~1.5)

第一章:数据结构和算法Python提供了大量的内置数据结构,包括列表,集合以及字典。大多数情况使用这些数据结构是较简单的。但是,我们也会遇到例如查询,排序和过滤等普遍存在的问题。因此,我们的目的就是讨论这些比较常见的问题和算法。另外,我们也会给出在集合模块collections当中操作这些数据结构的方法。1.1 解压序列赋值给多个变量问题现在有一个包含N个元素的元组或序列,怎样将它里面的值解压后同时赋值给N个变量?解决方案任何的序列(或是可迭代对象)可以通过一个简单的赋值语句解压并赋值给多个变量

2020-11-18 16:32:58 166

原创 《Effective Java 第三版》第二条:遇到多个构造器参数时要考虑使用构建器

第二条:遇到多个构造器参数时要考虑使用构建器静态工厂和构造器有个共同的局限:它们都不能便利地扩展到大量的可选参数。假设用一个类表示包装食品外显示的营养成分标签。这些标签中有几个域是必需的:含量、卡路里等。还有很多可选域:总脂肪量、饱和脂肪量、钠等。对于这样的类,应该用哪种构造器或者静态工厂来编写呢?用重叠构造器来提供所有可能的组合?如果需要用到很多参数,那么我们的构造器在后续的扩展会越来越麻烦。总之,重叠构造器模式可行,但是当有许多参数时,客户端代码会越来越难写,且难以阅读。一个构造器多参还可能会出现

2020-11-16 20:04:20 167 1

转载 《Python-100-Days》Day009:面向对象进阶

面向对象进阶在前面的章节我们已经了解了面向对象的入门知识,知道了如何定义类,如何创建对象以及如何给对象发消息。为了能够更好的使用面向对象编程思想进行程序开发,我们还需要对Python中的面向对象编程进行更为深入的了解。@property装饰器之前我们讨论过Python中属性和方法权限的问题,虽然我们不建议将属性设置为私有的,但是如果直接将属性暴露给外界也是有问题的,比如我们没有办法检查赋给属性的值是否有效。我们之前的建议是将属性命名以单下划线开头,通过这种方式来暗示属性是受保护的,不建议外界直接访问,

2020-11-16 20:03:39 155

转载 《Python-100-Days》Day013:进程和线程

原文链接原文链接:https://github.com/jackfrued/Python-100-Days/blob/master/Day01-15/13.%E8%BF%9B%E7%A8%8B%E5%92%8C%E7%BA%BF%E7%A8%8B.md进程和线程我们现在使用的计算机基本都是多CPU或多核,我们使用的操作系统也是支持“多任务”的,这使得我们可以同时运行多个程序,也可以将一个程序分解为若干个相对独立的子任务,让多个子任务并发的执行,从而缩短程序的执行时间,让用户获得更好体验。因此在挡下不管

2020-11-16 20:02:38 172

原创 《Effective Java 第三版》第四条:通过私有构造器强化不可实例化的能力

第四条:通过私有构造器强化不可实例化的能力当我们需要只包含静态方法和静态域的类,建议不要滥用。我们可以利用这种类,以java lang Math 或者 java util Arrays 的方式,把基本类型的值或者数组类型上的相关方法组织起来。我们也可以通过java.util.Collections的方式,把实现特定接口的对象上的静态方法,包括工厂方法组织起来。(从Java 8开始,可以把这些方法放进接口中,假定这是你自己编写的接口可以进行修改。)最后,还可以利用这种类把final类上的方法组织起来,因为不

2020-11-16 10:09:40 129

原创 第三章 高并发相关JVM与JDK新特性案例详解

3 高并发相关JVM与JDK新特性案例详解3.1 JVM核心概念及JVM对高并发的支持JVM即安装在操作系统上的Java虚拟机,Java代码直接操作的对象就是JVM(而不是操作系统)。无论哪种操作系统,只要安装了JVM就能屏蔽各自操作系统的差异性,从而以一种相同规范的“虚拟机”形式和Java字节码交互。3.1.1 内存区域与内存模型1. JVM内存区域线程共享:方法区、堆;线程私有:虚拟机栈、本地方法栈、程序计数器。2. JVM内存模型(Java Memory Mode,JMM)JMM用于

2020-11-14 15:24:07 144

原创 《并发编程的艺术》第三章:Java内存模型

3 JMM本章内容:JMM基础:主要介绍MM相关的基本概念;JMM中的顺序一致性:主要介绍重排序和顺序一致性MM;同步原语:3个,分别是synchronized、volatile和final。介绍它们的内存予以及重排序规则在处理器中的实现;JMM的设计:主要介绍JMM的设计原理,及其与处理器MM和顺序一致性MM的关系。3.1 JMM的基础3.1.1 JMM的两个关键问题线程通信和线程同步。命令式编程中,线程之间的通信机制:共享内存和消息传递。共享内存:线程隐式通信、显式同步。消息传

2020-11-14 15:13:46 146 1

原创 Leetcode 第四题:寻找两个正序数组的中位数

描述:给定两个大小为m和n的正序(从小到大)数组nums1和nums2。请你找出并返回这两个正序数组的中位数。进阶:要求时间复杂度为O(log(m+n))。示例1:输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2示例 2:输入:nums1 = [1,2], nums2 = [3,4]输出:2.50000解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5示例 3:输入:n

2020-11-14 14:09:32 406

原创 Leetcode第三题:两数相加

描述:给出两个非空的链表用来表示两个非负的证书。其中,它们各自的位数是按照逆序的方式存储的,并且它们的每个节点只能存储一位数字。如果,我们将这两个数加在一起,则会返回一个新的链表来表示它们的和。您可以假设除了数字0之外,这两个数字都不会以0开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> 8原因:342 + 465 = 807文字题解:方法一:模拟思路与算法由于输入的两个链表都是逆序存储数字的位数

2020-11-14 14:09:04 73

原创 《Java并发编程的艺术》第二章 Java并发编程的底层实现原理

2 Java并发机制的底层实现原理Java代码在编译后会变成Java字节码,字节码被类加载器加载到JVM里,JVM执行字节码,最终需要转化为汇编指令在CPU上执行,Java中所使用的并发机制依赖于JVM的实现和CPU的指令。2.1 volatile的应用轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”。可见性的意思是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。如果volatile变量修饰符使用恰当,它比synchronized的使用和执行成本低,因为它不

2020-11-14 14:08:08 145

转载 Redis 哈希(Hash)

Redis哈希(Hash)Redis hash 是一个 string 类型的 field(字段) 和 value(值) 的映射表,hash 特别适合用于存储对象。Redis 中每个 hash 可以存储 232 - 1 键值对(40多亿)。实例127.0.0.1:6379> HMSET runoobkey name "redis tutorial" description "redis basic commands for caching" likes 20 visitors 23000OK

2020-11-14 11:30:24 88

原创 《Effective Java 第三版》第三条:用私有构造器或者枚举类型强化Singleton属性

第三条:用私有构造器或者枚举类型强化Singleton属性Singleton是指只被实例化一次的类。Singleton通常被用来代表一个无状态的对象,如函数(24),或者那些本质上唯一的系统组件。使类称为Singleton会使它的客户端测试变得十分困难,因为不可能给Singleton替换模拟实现,除非实现一个充当其类型的接口。实现Singleton有两种常见方法。这两种方法都要保持构造器为私有的,并导出公有的静态成员,以便允许客户端能够访问该类的唯一实例。在第一种方法中,公有静态成员是个final域:

2020-11-14 11:05:33 56

原创 《Effective Java 第三版》第一条:用静态工厂方法代替构造器

第1条:用静态工厂方法代替构造器我们获取一个类实例的通常方法是提供一个公有构造器。还有一种方法,就是提供一个公有的静态工厂方法,它只是一个返回类实例的静态方法。以Boolean举例:public static Boolean valueOf(boolean b) { return b ? Boolean.TRUE : boolean.FALSE;}注:静态工厂方法域设计模式的工厂方法模式不同。该静态工厂示例不对应设计模式的工厂方法。静态工厂方法相较于构造器的优势...

2020-11-13 21:14:50 151 3

原创 《Effective Python第二版》第六条:在单次切片操作内,不要同时指定start、end和stride

在单次切片操作内,不要同时指定start、end和stride除了基本切片,Python还提供了somelist[start????stride]形式的写法,以实现步进式切割,即每n个元素里面取1个出来。例如,可以指定步进值,把列表中位于偶数索引处和奇数索引处的元素分成两组:a = ['red','orange','yellow','green','blue','purple']odds = a[::2]evens = a[1::2]print(odds)print(evens)>&gt

2020-11-13 11:48:58 228

原创 《Effective Python 第二版》第五条:了解切割序列的办法

了解切割序列的办法Python提供了一种把序列切成小块的写法。这种切片操作,使得开发者能够轻易地访问由序列中的某些元素构成的子集。最简单的用法,就是对内置的list、str和bytes进行切割。切割操作还可以延伸到实现了__getitem和setitem__这两个特殊方法的Python类上。切割操作的基本写法是somelist[start:end]举例如下:a = ['a','b','c','d','e','f'.'g','h']print('First Four:',a[:4])print('

2020-11-13 11:07:47 139

原创 《Effective Python第二版》第四条:用辅助函数来取代复杂的表达式

用辅助函数来取代复杂的表达式Python精炼的语法很容易用一行代码实现复杂逻辑。例如,从URL中解码查询字符串。下列所举的查询字符串中,每个参数都可表示一个整数值:from urllib.parse import parse_qsmy_value = parse_qs('red=5&blue=0&green=',keep_blank_values=True)print(repr(my_values))>>>{'red': ['5'],'green': [''],

2020-11-09 20:35:35 176

原创 Leetcode 1207 独一无二的出现次数

描述:一个整数数组arr,统计数组每个数的出现次数。如果每个数的出现次数都是独一无二的,就返回true;否则返回false。示例1:输入:arr = [1,2,2,1,1,3]输出:true解释:在该数组中,1 出现了 3 次,2 出现了 2 次,3 只出现了 1 次。没有两个数的出现次数相同。官方题解:class Solution { public boolean uniqueOccurrences(int[] arr) { Map<Integer, Integer&gt

2020-11-09 20:11:07 80

转载 应用:Application

应用:ApplicationCelery 在使用前必须要进行实例化,实例化之后被称为应用程序(简称 app)。 应用程序是线程安全的,可以配置多个不同配置、组件、任务的 Celery 程序在同一个进程中运行。 创建一个实例:>>> from celery import Celery>>> app = Celery()>>> app<Celery __main__:0x100469fd0>最后一行显示的内容包含 app 类的 Ce

2020-11-09 20:06:21 94

转载 《Python-100-Days》Day011:文件和异常

文件和异常实际开发中常常会遇到对数据进行持久化操作的场景,而实现数据持久化最直接简单的方式就是将数据保存到文件中。说到“文件”这个词,可能需要先科普一下关于文件系统的知识,但是这里我们并不浪费笔墨介绍这个概念,请大家自行通过百度百科进行了解。在Python中实现文件的读写操作其实非常简单,通过Python内置的open函数,我们可以指定文件名、操作模式、编码信息等来获得操作文件的对象,接下来就可以对文件进行读写操作了。这里所说的操作模式是指要打开什么样的文件(字符文件还是二进制文件)以及做什么样的操作(

2020-11-09 19:59:52 71

转载 《Celery中文手册》Celery进阶使用

原文链接原文链接:https://www.celerycn.io/ru-men/celery-jin-jie-shi-yongCelery进阶使用Celery 初次使用章节简单的说明了一下 Celery 的基本使用,本章节将更详细的介绍和使用 Celery,其中包含在自己的应用程序中和库中使用 Celery。本章节结尾记录有 Celery 的所有功能和最佳实战,建议继续阅读“用户指南”。在应用程序使用我们的项目项目的结构:proj/__init__.py /celery.py

2020-11-09 15:14:55 612 1

转载 《Celery中文手册》Celery初次使用

原文链接原文链接:https://www.celerycn.io/ru-men/celery-chu-ci-shi-yongCelery初次使用Celery 是一个包含一系列的消息任务队列。您可以不用了解内部的原理直接使用,它的使用时非常简单的。此外 Celery 可以快速与您的产品扩展与集成,以及 Celery 提供了一系列 Celery 可能会用到的工具和技术支持方案。在本教程中,您将学习 Celery 的基础支持。学习如下:选择并且安装一个消息中间件(Broker)安装 Celery

2020-11-09 14:25:25 518 1

原创 《Effective Python 第二版》第三条:了解bytes,str与unicode的区别

了解字节,字符串以及unicode之间的区别Python3中,两种类型的字符代表序列:bytes(字节)和str(字符串)。字节的实例抱哈8个原生的比特之,而字符串的实例则是用Unicode字符来堆砌的。Python2中,两种类型的字符代表序列:str(字符串)和unicode(Unocode字符)。与Python3相反,字符串实例代表着原生的8比特值序列,而unicode则由Unicode字符堆砌而成。有许多方法来表示Unicode字符的二进制数据(原生的8比特值 序列)。最常用的编码方式为UTF-

2020-11-09 12:46:01 166

转载 《Python-100-Days》Day009:面向对象进阶

原文链接原文链接:https://github.com/jackfrued/Python-100-Days/blob/master/Day01-15/09.%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1%E8%BF%9B%E9%98%B6.md#%E7%B1%BB%E4%B9%8B%E9%97%B4%E7%9A%84%E5%85%B3%E7%B3%BB面向对象进阶在前面的章节我们已经了解了面向对象的入门知识,知道了如何定义类,如何创建对象以及如何给对象发消息。为了能够更好的使

2020-11-08 15:28:40 66

转载 《Python-100-Days》Day008:面向对象编程基础

面向对象编程基础比较正式的说法。“把一组数据结构和处理它们的方法组成对象,把相同行为的对象归纳为类,通过类的封装隐藏内部细节,通过继承实现类的特化和泛化,通过多态实现基于对象类型的动态分派。”说明: 以上的内容来自于网络,不代表作者本人的观点和看法,与作者本人立场无关,相关责任不由作者承担。之前我们说过"程序是指令的集合",我们在程序中书写的语句在执行时会变成一条或多条指令然后由CPU去执行。当然为了简化程序的设计,我们引入了函数的概念,把相对独立且经常重复使用的代码放置到函数中,在需要使用这些功能

2020-11-06 21:09:15 78

转载 《Python-100-Days》Day007:字符串和常用数据结构

原文链接原文链接:https://github.com/jackfrued/Python-100-Days/blob/master/Day01-15/07.%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%92%8C%E5%B8%B8%E7%94%A8%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84.md字符串和常用数据结构使用字符串s1 = 'hello, world!'s2 = 'hello, world!'# 以三个双引号或单引号开头的字符串可以折行s

2020-11-06 20:46:46 154

转载 《Python-100-Days》Day006:函数和模块的使用

函数和模块的使用以一道数学题开始。8个苹果分成四组,每组至少一个苹果,有多少种方案?m = int(input('m = '))n = int(input('n = '))fm = 1for num in range(1, m + 1): fm *= numfn = 1for num in range(1, n + 1): fn *= numfm_n = 1for num in range(1, m - n + 1): fm_n *= numprint(fm //

2020-11-06 19:19:10 86

转载 《Python-100-Days》Day005:构造程序逻辑

构造程序逻辑学完前面的几个章节后,我觉得有必要在这里带大家做一些练习来巩固之前所学的知识,虽然迄今为止我们学习的内容只是Python的冰山一角,但是这些内容已经足够我们来构建程序中的逻辑。对于编程语言的初学者来说,在学习了Python的核心语言元素(变量、类型、运算符、表达式、分支结构、循环结构等)之后,必须做的一件事情就是尝试用所学知识去解决现实中的问题,换句话说就是锻炼自己把用人类自然语言描述的算法(解决问题的方法和步骤)翻译成Python代码的能力,而这件事情必须通过大量的练习才能达成。我们在本章

2020-11-06 17:36:46 63

转载 《Python-100-Days》Day004:循环结构

循环结构应用场景例如用程序控制机器人踢足球,如果机器人持球而且还没有进入射门范围,那么我们就要一直发出让机器人向球门方向移动的指令。在这个场景中,让机器人向球门方向移动就是一个需要重复的动作。for-in循环计算1-100求和。sum = 0for x in range(101) sum += xprint(sum)range()的用法:range(101):可以用来产生0到100范围的整数,需要注意的是取不到101。range(1, 101):可以用来产生1到100范围的整数,相

2020-11-06 15:44:56 119

转载 《Python-100-Days》Day003:分支结构

分支结构应用场景例如出租车计费,几公里换一个计费规则,如果仅有顺序结构,不能解决所有的问题。if语句的使用构造分支结构:if、elif、else。username = input('请输入用户名:')password = input('请输入口令: ')# 用户名是admin且密码是123456则身份验证成功否则身份验证失败if username == 'admin' and password == '123456': print('身份验证成功!')else: print

2020-11-06 14:43:07 89

转载 《Python-100-Days》Day002:语言元素

转载链接链接:https://github.com/jackfrued/Python-100-Days/tree/master/Day01-15语言元素指令和程序计算机的硬件系统通常由五大部件构成,包括:运算器、控制器、存储器、输入设备和输出设备。其中,运算器和控制器放在一起就是我们通常所说的中央处理器,它的功能是执行各种运算和控制指令以及处理计算机软件中的数据。我们通常所说的程序实际上就是指令的集合,我们程序就是将一系列的指令按照某种方式组织到一起,然后通过这些指令去控制计算机做我们想让它做的事情

2020-11-06 14:15:26 121

转载 Python 网络编程

Python网络编程Python提供了两个级别访问的网络服务:低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统 Socket 接口的全部方法。高级别的网络服务模块 SocketServer, 它提供了服务器中心类,可以简化网络服务器的开发。什么是Socket?Socket又称“套接字”,应用程序通常通过“套接字”向网络发出请求或者应答网络请求,使主机间一台计算机上的进程可以通讯。socket()函数Python中,我们用sock

2020-11-06 11:18:01 53

转载 Python操作MySQL数据库

Python操作MySQL数据库Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口。Python 数据库接口支持非常多的数据库,你可以选择适合你项目的数据库:GadFly、mSQL、MySQL、PostgreSQL、Microsoft SQL Server 2000、Informix、Interbase、Oracle、Sybase。你可以访问Python数据库接口及API查看详细的支持数据库列表。不同的数据库你需要下载不同的DB

2020-11-06 10:51:34 105

转载 Python面向对象

Python面向对象面向对象技术简介类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。**类变量:**类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。**数据成员:**类变量或者实例变量, 用于处理类及其实例对象的相关的数据。**方法重写:**如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重写。**局部变量:*

2020-11-05 22:03:28 150

原创 《Effective Python 第二版》第二条:遵循PEP8风格指南

遵循PEP8风格指南《Python Enhancement Proposal #8》(8号增强提案),又叫PEP8,它是针对Python代码格式而编订的风格指南。尽管可以在保证语法正确的前提下随意编写Python代码,但是,采用一致的风格来书写也可令项目更加易懂、更加易读、采用和其他Python程序员相同的风格来写代码,也可以使项目更利于多人协作。即便代码只会由你自己阅读,遵循这套风格也依然可以令后续的修改变得更容易一些。PEP8地址:http://www.python.org/dev/peps/pep

2020-11-05 19:21:28 397

原创 《Effective Python 第二版》第一条:确认自己所用的Python版本

确认自己所用的Python版本如果电脑上安装了多个版本的Python,究竟会执行哪个版本则无法肯定。建议用–version来运行Python命令,了解所使用的具体Python版本。python --version # 不是Python3python3 --version # Python3命令运行程序时,也可在内置的sys模块里查询当前的值。import sysprint(sys.version_info)print(sys.version)要点:两个活跃状态的版本:Python

2020-11-05 18:48:41 671 3

原创 解决:Git Pull出现冲突,无法提交代码

建议使用:git reset --hard xxxxxxxxxxxx:版本号。作用是将代码直接强制拉到版本号对应的版本。

2020-09-24 15:35:35 629

原创 《并发编程的艺术》第一章 并发编程的挑战

1 并发编程的挑战上下文切换、死锁、硬软件资源等。本章主要介绍挑战及其解决方案。1.1 上下文切换单核处理器支持多线程执行代码。CPU通过给每个线程分配CPU时间片来实现这个机制。时间片是CPU分配给各个线程的时间,因为时间片非常短,所以CPU通过不停地切换线程执行,让我们感觉多个线程是同时执行。CPU通过时间片分配算法来循环执行任务,当前任务执行一个时间片后会切换到下一个任务。但是,在切换前会保存上一个任务的状态,以便下次切换回到这个任务时,可以再加载这个任务的状态。所以任务从保存到再加载的过程就

2020-09-20 12:06:22 63

转载 Java使用Redis

Java使用Redis安装开始在 Java 中使用 Redis 前, 我们需要确保已经安装了 redis 服务及 Java redis 驱动,且你的机器上能正常使用 Java。 Java的安装配置可以参考我们的 Java 开发环境配置 接下来让我们安装 Java redis 驱动:首先你需要下载驱动包 下载 jedis.jar,确保下载最新驱动包。在你的 classpath 中包含该驱动包。连接到redis服务import redis.clients.jedis.Jedis; public

2020-08-21 15:28:08 55

转载 Redis字符串(String)

Redis字符串(String)Redis 字符串数据类型的相关命令用于管理 redis 字符串值,基本语法如下:语法redis 127.0.0.1:6379> COMMAND KEY_NAME实例redis 127.0.0.1:6379> SET runoobkey redisOKredis 127.0.0.1:6379> GET runoobkey"redis"在以上实例中我们使用了 SET 和 GET 命令,键为 runoobkey。Redis字符串命令set

2020-08-21 14:40:38 58

空空如也

空空如也

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

TA关注的人

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