首页 文章 精选 留言 我的

精选列表

搜索[HTTP/3],共10000篇文章
优秀的个人博客,低调大师

Python3入门(六)迭代器和生成器

本文介绍如何在python中使用迭代器和生成器 一、迭代器 迭代是Python最强大的功能之一,是访问集合元素的一种方式。迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。迭代器有两个基本的方法:iter() 和 next()。字符串,列表或元组对象都可用于创建迭代器示例: list1 = ["a", "b", "c"] # 创建迭代器对象 ll = iter(list1) # 输出下一个元素 print(next(ll)) # 输出:a 1、创建一个迭代器 把一个类作为一个迭代器使用需要在类中实现两个方法 __iter__() 与 __next__() 。如果你已经了解的面向对象编程,就知道类都有一个构造函数,Python 的构造函数为 __init__(),

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

云原生生态周报 Vol. 3 | Java 8 ❤️ Docker

业界要闻 Docker Hub遭入侵,19万账号被泄露: 4月25日Docker官方邮件曝露,因为Hub的一个数据库收到非授权访问,影响了约19万用户的用户名和哈希后的密码,以及用户自动构建的Github和Bitbucket Token。Docker公司建议用户修改其登录密码。如果您在公有云上的应用依赖于来自 Docker Hub的镜像,我们强烈建议您登录容器服务控制台更新相应的docker login信息或kubernetes secret。此外,阿里云容器镜像服务企业版提供网络访问控制、独享OSS Bucket加密存储等安全加固功能,最大程度保障您的镜像仓库的安全。 Java 8 终于开始提供良好的容器支持:长久以来,容器 和 Java 就像一对“欢喜冤家”。一方面,容器技术的“不可变基础设施”特性为开发者带来了无比宝贵的依赖与环

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

给女友讲讲设计模式——建造者模式(JAVA实例)3

前言 小的时候,我特别喜欢四驱车,我就不停的攒零花钱,等攒到足够买的起一辆车的时候,就会那所有的钱去买这辆车,但是很快我发现,组装好的车一般都是要比一个一个部件组装贵多了。发现这个秘密之后,我就会去买各种零部件,然后回来组装。 我想通过这个故事引出我们今天的主角,建造者模式。 建造者模式 package builder; /** * 四驱车类,是一个entity * @author luckyharry * */ public class FourWheelDrive { private Motor motor; private Shell shell; private Tire tire; public Motor getMotor() { return motor; } public void setMotor(Motor motor) { this.motor = motor; } public Shell getShell() { return shell; } public void setShell(Shell shell) { this.shell = shell; } public Tire getTire() { return tire; } public void setTire(Tire tire) { this.tire = tire; } @Override public String toString() { return "FourWheelDrive [motor=" + motor + ", shell=" + shell + ", tire=" + tire + "]"; } } 我们首先定义了一个四驱车类,里面包含了马达,轮胎,外壳(我们暂且认为四驱车是由这三个零件组成的)。 package builder; /** * 马达类,作为四驱车的一个零部件 * @author luckyharry * */ public class Motor { private String engine; private String housePower; public String getEngine() { return engine; } public void setEngine(String engine) { this.engine = engine; } public String getHousePower() { return housePower; } public void setHousePower(String housePower) { this.housePower = housePower; } @Override public String toString() { return "Motor [engine=" + engine + ", housePower=" + housePower + "]"; } } 马达这个类,具有引擎以及马力这两个属性。 package builder; /** * 外壳类,作为四驱车的一个零部件 * @author luckyharry * */ public class Shell { private String color; private Double length; private Double width; public String getColor() { return color; } public void setColor(String color) { this.color = color; } public Double getLength() { return length; } public void setLength(Double length) { this.length = length; } public Double getWidth() { return width; } public void setWidth(Double width) { this.width = width; } @Override public String toString() { return "Shell [color=" + color + ", length=" + length + ", width=" + width + "]"; } } 外壳类,具有颜色,长度,宽度,三个属性。 package builder; /** * 轮胎类,作为四驱车的一个零部件。 * @author luckyharry * */ public class Tire { private String resistance; private String size; public String getResistance() { return resistance; } public void setResistance(String resistance) { this.resistance = resistance; } public String getSize() { return size; } public void setSize(String size) { this.size = size; } @Override public String toString() { return "Tire [resistance=" + resistance + ", size=" + size + "]"; } } 轮胎类,具有摩擦力,以及轮胎尺寸两个属性。 package builder; public interface Builder { public void buildMotor(Motor motor); public void buildShell(Shell shell); public void builTire(Tire tire); public FourWheelDrive getCar(); } 这是建造者模式的一个中枢,是通过这个类,封装了一个个零部件的。但是需要注意的是,Builder只是把生成马达,外壳,以及轮胎的方法写好了,但是他并没有进行组装。 package builder; public class BuilderImpl implements Builder { private FourWheelDrive fourWheelDrive=new FourWheelDrive(); @Override public void buildMotor(Motor motor) { fourWheelDrive.setMotor(motor); } @Override public void buildShell(Shell shell) { fourWheelDrive.setShell(shell); } @Override public void builTire(Tire tire) { fourWheelDrive.setTire(tire); } @Override public FourWheelDrive getCar() { System.out.println(fourWheelDrive); return fourWheelDrive; } } 实现了Builder接口,真正赋予Builder的各个部件,但是这也不是一个组装的类。 package builder; public class Director { private Builder builder; public Director(Builder builder) { this.builder = builder; } public void create(Motor motor,Shell shell,Tire tire) { builder.buildMotor(motor); builder.buildShell(shell); builder.builTire(tire); } } 真正组装的类在这呢,那么我们为什么需要Director(导演)这个类呢,因为四驱车一定得需要马达,外壳,轮胎,但是他们的具体属性有可能会不同,所以我们把builder中的各个部件组装在这,调用的人,只需要知道自己想要什么样的四驱车就行,这种操作简直太爽了。 package builder; public class MainTest { public static void main(String[] args) { Motor motor=new Motor(); Shell shell =new Shell(); Tire tire = new Tire(); FourWheelDrive car =new FourWheelDrive(); motor.setEngine("高速引擎"); motor.setHousePower("大马力"); shell.setColor("蓝色"); shell.setLength(80.00); shell.setWidth(35.66); tire.setResistance("60N"); tire.setSize("30*30"); car.setMotor(motor); car.setShell(shell); car.setTire(tire); Builder builder=new BuilderImpl(); Director director=new Director(builder); director.create(motor, shell, tire); builder.getCar(); } } 上面就是我们动手组装四驱车的时候了,給他赋予自己想要的参数,这样我们就获得了我们想要的四驱车。小时候就是因为这样的一个聪明的举动,所以通过不停地更换零件,感觉自己拥有的每天都是新的。哈哈。 后记 我会一直以这样通俗易懂的自己能想到的例子,讲解设计模式,最大的启发是来源于《大话设计模式》。非常感觉这本书的作者程杰先生。

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

如何用1年时间获得3年成长?

前言 这世界存在这么一个银行,你一出生,就自动享有这家银行为你开设的一个 VIP 账号。每一天,这个 VIP 账号里面都会被自动存入不多不少恰好 86400 元钱。而你的任务就是每天都要把这 86400 元花光,随便你买什么。如果不够了,那就只能忍痛割爱——因为没办法,银行会告诉你,对不起,您只能等明天再来取下一笔 86400 元钱了。如果竟然没花完剩下了,就只好作废——因为没办法,银行会告诉你,对不起,我们这家银行不接受存款,并且还要每日注销余额。反正,每天一共就有这 86400 元,不多不少。 这家银行叫做“时间”。 时间在这个世界对任何人长度都是相等的。每个人每天都只有 24 小时,每个人的每个小时都只有 60 分钟,每个人的每分钟都只有 60 秒,每人每天一共 86400 秒,无论你是谁你在何方我们都是一样的。 那么为什么你总是觉得时间不够用? 用塞内加的《论生命之短暂》中的一段话来形容再合适不过了:“如果一个人出海遇到狂风暴雨,被变换肆虐的风吹得团团转,你可能会觉得他航行了很远。其实航行得并不远,只是浮沉动荡的时间长而已。” 有时候并不是时间不够用,而是你的方向错了。你虽然花了大量的时间但是却没有任何成长。 那么如何快速成长呢? 明确你的目标 做事前,要定目标。整个人才会有的放矢地向一个方向努力。比如我刚进入到上海的时候,我就给自己定了一个目标,做一名架构师。 接下来找到自己与目标之间的差距。我会从各个方面去要求自己学习更多的架构知识,比如架构师要会多门语言,所以我在上家公司中主动申请去其他技术小组帮忙,在这个过程中学会了很多不同的编程语言,这就是目标给我带来的主动性。 定目标我相信很多人都定过,因为定目标其实很容易,但是完成目标的人并不多。很多人应该会这样的疑惑:“我也定过目标,但是我就是没有动力,结果就从入门到放弃看。” 其中原因就是你并没有拆解你的目标。 优化你时间分配 你肯定会想做完计划,是不是下一步该执行计划了?错!还需要辨别计划中任务的轻重缓急。 如何辨别呢? 这个时候需要用到四象限法则。从重要程度,紧急程度这两个维度来看划分,这样就会把事情分成4个类型。 重要紧急 比如:到期完成的工作任务,延迟会导致公司很大的损失。这种事情肯定要马上去处理掉,不要拖延,尽快解决。但是很多事情并不是很重要,所以你要思考一下这件事情的重要程度。很多事情你认为重要,但是其实不重要。比如有些人看到手机来消息了就会不自觉的去玩手机,然后玩着玩着1个小时就过去了。这种事情就是典型的你认为重要但是实际上不重要的事情,可以把这种事情划分到不重要不紧急的事情。除此之外同时也要思考为什么这件事如此紧急,是不是之前的计划的时间没有安排好? 重要不紧急 这种事情通常是长期的对自己有益的事情,比如:看书,健身,社交,写一个开源库。这种事情我们需要制定计划,如:每天下班看书一个小时。在这里要做好计划,但是不要苛求自己,根据自己的实际情况进行调整。很多人计划没做好的原因就是对自己要求过高,导致最后没完成,打击到自己的自信心了,形成恶性循环,最终以放弃结束。 做事情要从小到大,最好就是跳一跳能完成的程度,不断修改自己的计划。还有就是想学习的东西太多了,导致整天都很焦虑,解决办法就是把事情分散开,每次只做一件事情。比如:我做开源项目就是一开始我并没有计划做到同类开源库的第一名,而是计划一个月做到1000个star。我一个月就会专注做一件事情。凡事都是一步一步慢慢往上走的。 不重要紧急 这种事情,一般是突然来的电话,活动,邀请。遇到这种事情就是安排别人去做。比如我做公众号这件事情,之前公众号更新频率是日更,需要找文章,编辑文章,这些事情都是需要大量时间的,我的处理这件事情的方式就是花钱请人来做。这样就节约了很多时间能让我做其他重要的事情。很多事情其实并不一定要亲力亲为。要知道时间成本也是成本。 不重要不紧急 朋友邀请,看电视剧,玩手机游戏,去拿快递,闲聊。对于外界的邀请,学会说不,不要爱面子不好意思,这样牺牲的是自己的时间。娱乐,这种无论是短期还是长期来看都无法成长的事情,不要去做。去拿快递,查看邮件,聊天,可以利用碎片时间统一处理。断舍离:删除不用app,无关紧要的联系人,闲聊的微信群。 其实很多当初看上去很重要的事情并没那么重要。大部分的时间应该放在重要但是不紧急的事情上面。很多紧急重要的事情是从原本的不紧急变成紧急的,如项目上线周期到了,但是功能却没做好,导致项目延期,其实这是因为一开始没有做好计划所导致的。 总结 从现在开始认真审视自己的时间深度,循着这些内在逻辑,稳扎稳打地践行。你会发现,从前的间歇性斗志昂扬,持续性的萎靡不振随风而去,你将快速成长,最终成为想要的自己。 原文发布时间为:2018-07-21本文作者:陈宇明本文来自云栖社区合作伙伴“程序员小灰”,了解相关信息可以关注“程序员小灰”

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

javascript成神之路(3):到底有没有json对象

前言:在我工作的过程中,很多小伙伴多会说:把字符串转化为JSON对象,把JSON对象转化成字符串等类似的话,前一段时间,我看了一篇关于JSON方面的文章,是一个外国大神写的,让我也深有体会,在这里我就谈一下我的感受。 很多的javascript开发人员都错误地把javascript对象字面量(Object Literals)称为JSON对象(JSON Objects),因为他的语法和JSON规范里描述的一样,但是该规范里也明确地说了JSON只是一个数据交换语言,只有我们将之用在string上下文的时候它才叫JSON。在这里我们在这里了解几个概念: 一、什么是字面量 他们是固定的值,不是变量,让你从“字面上”理解脚本。 字符串字面量是由双引号(")或单引号(')包围起来的零个或多个字符组成的。 对象字面量是由大括号({})括起来的零个或多个对象的属性名-值对。 二、序列化与反序列化 2个程序在交互通信的时候,他们倾向于使用string字符串因为string在很多语言里解析的方式都差不多。复杂的数据结构经常需要用到,并且通过各种各样的中括号{},小括号(),叫括号<>和空格来组成,这个字符串仅仅是按照要求规范好的字符。 为此,我们为了描述这些复杂的数据结构作为一个string字符串,制定了标准的规则和语法。JSON只是其中一种语法,它可以在string上下文里描述对象,数组,字符串,数字,布尔型和null,然后通过程序间传输,并且反序列化成所需要的格式。也是流行的数据交换格式,但是,我们喜欢JSON,谁叫我们是JavaScript开发人员呢! 三、什么时候是JSON,什么时候不是JSON? JSON是设计成描述数据交换格式的,他也有自己的语法, 例如像这样申明{ "prop": "val" } 可能是JavaScript对象字面量也有可能是JSON字符串,取决于什么上下文使用它,如果是用在string上下文(用单引号或双引号引住,或者从text文件读取)的话,那它就是JSON字符串,如果是用在对象字面量上下文中,那它就是对象字面量。如果这样用,这是对象字面量 var bar = { "prop": "val" }; 还需要我们特别注意的是,JSON有非常严格的语法,在string上下文里{ "prop": "val" }是个合法的JSON,但{ prop: "val" }和{ 'prop': 'val' }确实不合法的。所有属性名称和它的值都必须用双引号引住,不能使用单引号。另外,即便你用了转义以后的单引号也是不合法的。 四、放到上下文里来看JSON是何方神圣 可能有人会问,难道JavaScript代码不是一个大的字符串? 当然是,所有的JavaScript代码和HTML(可能还有其他东西)都是字符串,直到浏览器对他们进行解析。这时候.jf文件或者inline的JavaScript代码已经不是字符串了,而是被当成真正的JavaScript源代码了,就像页面里的innterHTML一样,这时候也不是字符串了,而是被解析成DOM结构了。 所以说这一切都是取决于上下文,在string上下文里使用带有大括号的JavaScript对象,那它就是JSON字符串,而如果在对象字面量上下文里使用的话,那它就是对象字面量。如果你对上下文不了解,我后面会具体介绍。 五、真正的JSON对象(看到曙光了吧) 开头已经提到,对象字面量不是JSON对象,但是有真正的JSON对象。但是两者完全不一样概念,在新版的浏览器里JSON对象已经被原生的内置对象了,目前有2个静态方法:JSON.parse用来将JSON字符串反序列化成对象,JSON.stringify用来将对象序列化成JSON字符串。 如果还不理解,参考以下的例子你应该会明白的: // 这是JSON字符串,比如从AJAX获取字符串信息 var my_json_string = '{ "prop": "val" }'; // 将字符串反序列化成对象 var my_obj = JSON.parse( my_json_string ); alert( my_obj.prop == 'val' ); // 提示 true, 和想象的一样! // 将对象序列化成JSON字符串 var my_other_json_string = JSON.stringify( my_obj ); 原文发布时间:2018年01月08日 作者:技术金三胖 本文来源:开源中国如需转载请联系原作者

资源下载

更多资源
腾讯云软件源

腾讯云软件源

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

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

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

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册