首页 文章 精选 留言 我的

精选列表

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

GNOME 3.38 Beta 2 发布

GNOME 3.37.91 已发布,同时作为即将发布的 GNOME 3.38 第二个 Beta 测试版。 新版本主要变化包括: 修复Epiphany 网页浏览器在访问长页面时崩溃的问题 Glib 添加对statx 系统调用的支持 GNOME Control Center 将"Universal" 重命名为 "Accessibility",还支持Enhanced Open WiFi安全性 GNOME Shell 修复了X11 会话登录、libcroco 中潜在的堆栈溢出问题,修复了缺少GLSL 着色器支持的系统登录界面,以及其他修复 修复 Mutter 的崩溃问题 Tracker 的 CLI 改进 其他多项bug 修复和翻译更新 此版本 GNOME 3.37.91 标志着进入字符串冻结阶段,而 UI 冻结和功能冻结已经在本月初开始。 9月初即将发布的是 GNOME 3.38 候选版本,同时进入硬代码冻结阶段,GNOME 开发者计划在9月16日正式发布 GNOME 3.38.0。

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

Mockito 2 参数匹配器

Mockito 通过使用equals()这种自然的 Java 样式来校验参数值。有时候,当需要有其他一些灵活性的时候,你可能会要求使用参数匹配(argument matchers)。 请参考下面的代码: //stubbing using built-in anyInt() argument matcherwhen(mockedList.get(anyInt())).thenReturn("element"); //stubbing using custom matcher (let's say isValid() returns your own matcher implementation):when(mockedList.contains(argThat(isValid()))).thenReturn("element"); //following prints "element"System.out.println(mockedList.get(999)); //you can also verify using an argument matcherverify(mockedList).get(anyInt()); //argument matchers can also be written as Java 8 Lambdasverify(mockedList).add(argThat(someString -> someString.length() >5)); 参数匹配运行进行灵活校验或者打标。 请访问https://static.javadoc.io/org.mockito/mockito-core/3.0.0/org/mockito/hamcrest/MockitoHamcrest.html链接来查看更多有关自定义参数匹配器/hamcrest matchers(custom argument matchers/hamcrest matchers)的内建参数匹配器和示例。 更多有关自定义参数匹配器(custom argument matchers)的使用,请参考ArgumentMatcher类的 API 文档。 在使用复杂参数匹配器的时候需要谨慎。尝试给一个干净并且简单的测试的时候,尽量选择自然的参数匹配使用的是equals()对比相对偶然使用anyX()来说。有时候可能对你的代码进行一些重构来允许equals()进行匹配,或者可以实现(implement)equals()方法来帮助进行测试。 同时,请阅读Capturing arguments for further assertions (Since 1.8.0)页面中的内容,或者参考ArgumentCaptor类的 API。 ArgumentCaptor是有关参数匹配器的是特殊实现,能够为后面的对比(assertions)捕获参数变量。 参数匹配器的写法 如果你现在正在使用参数匹配器,所有参数(all arguments)都必须由 matches 提供。 下面的示例代码显示校验,但是一些将会应用到打标中。 verify(mock).someMethod(anyInt(), anyString(), eq("third argument"));//above is correct - eq() is also an argument matcher verify(mock).someMethod(anyInt(), anyString(),"third argument");//above is incorrect - exception will be thrown because third argument is given without an argument matcher. 像anyObject(),eq()Matcher 方法不会返回matchers。 在内部,他们将会在堆栈(stack)中记录一个matcher 然后返回一个虚假的值(通常为 null)。 这种实现方式是基于 Java 编译器中有关静态类型的安全性问题而考虑的,从而带来的结果是你不能在verified/stubbed 方法外部使用anyObject(),eq()。 https://www.cwiki.us/display/MockitoZH/Argument+matchers

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

Docker之2 安装部署

Docker的版本 Docker有两个版本:社区版(CE)Docker Community Edition(CE)非常适合希望开始使用Docker并尝试使用基于容器的应用程序的个人开发人员和小型团队。企业版(EE)Docker Enterprise Edition(EE)专为企业开发和IT团队而设计,他们在生产中大规模构建,发布和运行业务关键型应用程序。 Docker支持的平台 Docker可在多个平台上使用,桌面平台有Windows、MAC。服务器可以运行在CentOS、Debian、Ubantu等Linux操作系统上。以下实验我们已阿里云的ECS服务器进行安装。 Docker安装 # 阿里云的Docker RPM Repo wget -P /etc/yum.repos.d/ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 安装Docker yum -y install docker-ce 启动Docker service docker start 添加镜像代理 mkdir -p /etc/docker tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://5j55onw1.mirror.aliyuncs.com"] } EOF 重启Docker生效代理 systemctl daemon-reload systemctl restart docker 查看代理生效情况 docker info

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

python 文件file操作(2)

文件的属性 所谓属性,就是能够通过一个文件对象得到的东西。 >>> f = open("m1.txt","a") >>> f.name 'm1.txt' >>> f.mode #显示当前文件打开的模式 'a' >>> f.closed #文件是否关闭,如果关闭,返回True;如果打开,返回False False >>> f.close() #关闭文件的内置函数 >>> f.closed True 文件的有关状态 >>> import os >>> file_stat = os.stat("m1.txt") #查看这个文件的状态 >>> file_stat #文件状态是这样的。从下面的内容,有不少从英文单词中可以猜测出来。 posix.stat_result(st_mode=33204, st_ino=5772566L, st_dev=2049L, st_nlink=1, st_uid=1000, st_gid=1000, st_size=69L, st_atime=1407897031, st_mtime=1407734600, st_ctime=1407734600) >>> file_stat.st_ctime #这个是文件创建时间 1407734600.0882277 #换一种方式查看这个时间 >>> import time >>> time.localtime(file_stat.st_ctime) #这回看清楚了。 time.struct_time(tm_year=2014, tm_mon=8, tm_mday=11, tm_hour=13, tm_min=23, tm_sec=20, tm_wday=0, tm_yday=223, tm_isdst=0) 以上关于文件状态和文件属性的内容,在对文件的某些方面进行判断和操作的时候或许会用到。特别是文件属性。比如在操作文件的时候,我们经常要首先判断这个文件是否已经关闭或者打开,就需要用到file.closed这个属性来判断了。 文件的内置函数 >>> dir(file) ['__class__', '__delattr__', '__doc__', '__enter__', '__exit__', '__format__', '__getattribute__', '__hash__', '__init__', '__iter__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'close', 'closed', 'encoding', 'errors', 'fileno', 'flush', 'isatty', 'mode', 'name', 'newlines', 'next', 'read', 'readinto', 'readline', 'readlines', 'seek', 'softspace', 'tell', 'truncate', 'write', 'writelines', 'xreadlines'] >>> 实验: >>> f = open("m1.txt","r") >>> f.read() 'My name is hiekay.\nMy website is hiekay.github.io\nAha,I like program\n' >>> file.read()能够将文件中的内容全部读取过来。特别注意,这是返回一个字符串,而且是将文件中的内容全部读到内存中。试想,如果内容太多是不是就有点惨了呢?的确是,千万不要去读大个的文件。 >>> contant = f.read() >>> type(contant) <type 'str'> 如果文件比较大了,就不要一次都读过来,可以转而一行一行地,用readline >>> f = open("m1.txt","r") >>> f.readline() #每次返回一行,然后指针向下移动 'My name is hiekay.\n' >>> f.readline() #再读,再返回一行 'My website is hiekay.github.io\n' >>> f.readline() 'Aha,I like program\n' >>> f.readline() #已经到最后一行了,再读,不报错,返回空 '' 读多行,readlines() >>> f = open("m1.txt","r") >>> cont = f.readlines() >>> cont ['My name is hiekay.\n', 'My website is hiekay.github.io\n', 'Aha,I like program\n'] >>> type(cont) <type 'list'> >>> for line in cont: ... print line ... My name is hiekay. My website is hiekay.github.io Aha,I like program 从实验中我们可以看到,readlines和read有一样之处,都是将文件内容一次性读出来,存放在内存,但是两者也有区别,read返回的是str类型,readlines返回的是list,而且一行一个元素,因此,就可以通过for逐行打印出来了。 在print line中,注意观察list里面的每个元素,最后都是一个\n结尾,所以打印的结果会有空行。 对付大点的文件,推荐这么做: >>> f = open("m1.txt","r") >>> f <open file 'm1.txt', mode 'r' at 0xb757c230> >>> type(f) <type 'file'> >>> for line in f: ... print line ... My name is hiekay. My website is hiekay.github.io Aha,I like program 以上都是读文件的内置函数和方法。除了读,就是要写。所谓写,就是将内容存入到文件中。用到的内置函数是write。但是,要写入文件,还要注意打开文件的模式,可以是w,也可以是a,看具体情况而定。 >>> f = open("m1.txt","a") #因为这个文件已经存在,我又不想清空,用追加的模式 >>> f.write("There is a baby.") #这句话应该放到文件最后 >>> f.close() #请看官注意,写了之后,一定要及时关闭文件。才能代表真正写入 看看写的效果: >>> f = open("m1.txt","r") >>> for line in f.readlines(): ... print line ... My name is hiekay. My website is hiekay.github.io Aha,I like program There is a baby. #果然增加了这一行 以上是关于文件的基本操作。高级 : pickle这个模块,是一个很好用的东西。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

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

Rocky Linux

Rocky Linux

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

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册