首页 文章 精选 留言 我的

精选列表

搜索[基础搭建],共10000篇文章
优秀的个人博客,低调大师

阿里云智能--基础产品技术月刊 2019年8月

一、商用产品技术TOP1 智能接入网关SAG发布集中控制台配置功能,提升企业客户网络管理维护效率在规模较大的企业用户场景,企业线下IDC之间以及访问云上资源,会在多地域部署阿里云智能接入网关SAG,传统的本地web配置,因为IT管理人员经验和技能水平参差不齐,造成配置错误、遗漏等多种问题,管理维护效率较低。针对此场景,智能接入网关发布了集中控制台配置功能,可以由总部IT人员在阿里云SAG控制台中统一进行配置,大大提升了可以在日常交付、运维等场景的效率。同时,控制台还可以自定义升级时间,在业务低峰期升级,降低升级期间的业务影响。 TOP2 E-HPC发布混合云异步缓存渲染计算并通过墨境天合测试8月28日,EHPC渲染混合云异步缓存方案发布,得到渲染客户认可。该方案基于云上NAS构建文件缓存层,异步缓存创新实现了缓存预热过程中无需重复拉

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

Java编程基础阶段笔记 day 07 面向对象编程(上)

​ 面向对象编程 笔记Notes 面向对象三条学习主线 面向过程 VS 面向对象 类和对象 创建对象例子 面向对象的内存分析 类的属性:成员变量 成员变量 VS 局部变量 类的方法 方法的重载 可变个数形参 面向对象:封装性 访问权限修饰符 构造方法(构造器) 给属性赋值的方法 UML类图 this 关键字 面向对象学习主线 类及类的成员:属性,方法,构造器,代码块,内部类 面向对象的三大特性:封装性,继承性,多态性 其他关键字:this,super,interface,final,static...... 面向过程 vs 面向对象 面向过程:强调的是功能行为 面向对象 :强调具备了功能的对象 类和对象的区别 类:抽象的(汽车设计模板) 对象:具体的,类的实例(根据模板造出的汽车) 类的成员:属性和方法 属性 = field = 成员变量 (成员)方法 = 函数 = method 面向对象的例子 1.创建一个类,并在类中提供必要的属性和方法 2.由类派生出对象。(创建对象) 3.调用对象中的属性和方法。(对象名.属性名/方法名) //创建一个类 class Person{ //属性 String name; int age; char sex; //方法 public void run(){ System.out.println(name + "跑起来"); } public void say(){ System.out.println(name + "今年" + age); } } // main 方法中 Person person = new Person(); //调用属性 :对象名.属性名 person.name = "王庆港"; //给属性赋值 person.age = 23; //获取属性的值 String name = person.name; System.out.println("name=" + name); //调用方法 :对象名.方法名 person.run(); person.say(); 面向对象的内存分析 同一个类创建的多个对象,每个对象独自拥有一份属性。 当修改其中一个对象的属性的值后,其它对象的该属性不会受到影响 类的成员之 :属性(成员变量) 变量的分类: ①按照数据类型分 :基本数据类型 vs 引用数据类型 ②按照位置分 :成员变量 vs 局部变量 成员变量和局部变量 相同点: ①变量的声明的格式都是一样的。 ②变量都有作用域 ③变量都是先声明后使用 成员变量和局部变量 不同点: ①局部变量:在方法里,方法的形参,构造器中,构造器的形参,代码块 ②成员变量: 在类中方法等结构外 权限修饰符: ①局部变量:不能使用权限修饰符修饰 ②成员变量:可以使用四种权限修饰符(public protected 缺省的(default) private) 内存: ①局部变量:在内存的栈中 ②成员变量:在内存的堆(对象)中 默认值: ①局部变量 :没有默认值 ②成员变量 :有默认值(和数组元素的默认值是一样的) byte,short,int,long -> 0 float,double -> 0.0 boolean -> false char -> u0000 引用数据类型 -> null class Animal{ //属性(成员变量) public String name = "动物"; int legs; protected boolean isLive = true; {//代码块 String address = "";//局部变量 } public Animal(){} //构造器 public Animal(int sex){//构造器的形参 int a = 10;//局部变量 } //方法 public void say(int sex){//方法的形参 //局部变量 int age = 10; age = 20; name = "大锤"; } } 不定义对象的句柄,而直接调用这个对象的方法。这样的对象叫做匿名对象。 如:new Person().shout(); 类的成员:方法(method) Java里的方法不能独立存在,所有的方法必须定义在类里。 方法的声明格式: 修饰符 返回值类型 方法名(参数类型 形参1, 参数类型 形参2, ….){ 方法体程序代码 return 返回值; } 权限修饰符 :public protected 缺省的 private (先用public) ①void/具体的类型(基本数据类型、引用数据类型): ②void : 表示该方法没有返回值 具体的类型 :调用该方法会有返回值。 注意:返回数据需要使用return关键字。return 后面跟需要返回的数据。 方法名 :只需要遵守标识符的规则和规范即可 (形参相同的情况下,同一个类中的方法名不能相同)。 形参列表 :可以有0个1个或多个。多个之间使用","隔开。 ①作用 :用来通知方法的调用者调用此方法时需要传递数据。 ②注意:实参的类型必须和形参的类型保持一致 方法体 :方法功能的具体体现。 注意 :只有调用方法时方法体才会执行。 对象数组题目: 定义类Student,包含三个属性:学号number(int),年级state(int),成绩score(int)。创建20个学生对象,学号为1到20,年级和成绩都由随机数确定。 问题一:打印出3年级(state值为3)的学生信息。 问题二:使用冒泡排序按学生成绩排序,并遍历所有学生信息 提示: 1) 生成随机数:Math.random(),返回值类型double; 2) 四舍五入取整:Math.round(double d),返回值类型long。 class Student1{ int number; int state; int score; @Override public String toString() { return "Student1 [number=" + number + ", state=" + state + ", score=" + score + "]"; } } public class StuInfo { public static void main(String[] args) { // 创建对象数组 Student1[] studentArr = new Student1[20]; // 循环创建对象并赋值,传给对象 for (int i = 0; i < 20; i++) { Student1 student1 = new Student1(); student1.number = i; student1.state = (int)Math.round( (Math.random()*7)); student1.score = (int) (Math.random()*100); studentArr[i] = student1; } System.out.println("---------打印排序前的学生信息-------------"); for (int i = 0; i < studentArr.length; i++) { System.out.println(studentArr[i]); } System.out.println("----------打印state为3的学生信息---------"); // 循环查找对象数组中state值为3的对象,打印输出对象信息 for (int i = 0; i < studentArr.length; i++) { if (studentArr[i].state == 3) { System.out.println(studentArr[i]); } } System.out.println("----------------------------------------"); // 使用冒泡排序按学生成绩排序,并遍历所有学生信息 // 思路:两个循环遍历数组中的对象的成绩,若对象的成绩小于后一个,则交换对象的位置 for (int i = 0; i < studentArr.length -1; i++) { // 外层循环决定冒泡排序的次数,为数组长度-1 for (int j = 0; j < studentArr.length - i -1; j++) { // 内层循环决定每次多少次冒泡,为 if (studentArr[j].score > studentArr[j+1].score) { // 如果前面的对象小于大于后面的,就叫交换类数组地址 Student1 temp = studentArr[j]; studentArr[j] = studentArr[j+1]; studentArr[j+1] = temp; } } } // 注意!!!!!!!!!! // 冒泡排序交换的值的数组的下标为内循环的循环变量 System.out.println("------打印排序后的信息-------"); // 打印排序后的信息 for (int i = 0; i < studentArr.length; i++) { System.out.println(studentArr[i]); } } } 重载的概念、特点、实例 ①在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。 ②与返回值类型无关,只看参数列表,且参数列表必须不同。 (参数个数或参数类型)。调用时,根据方法参数列表的不同来区别。 ③示例: //返回两个整数的和 int add(int x,int y){return x+y;} //返回三个整数的和 int add(int x,int y,int z){return x+y+z;} //返回两个小数的和 double add(double x,double y){return x+y;} 注意!!: ①不同的形参列表 :形参的个数,顺序,类型不同 ②方法的重载和权限修饰符,返回值类型,形参的名字无关。 ③判断方法:只看 方法名 + 形参列表(看形参和实参的类型) 可变个数形参 格式 :变量的类型 ... 变量名 说明: ①可变形参的底层就是一个数组 ②在可变形参的方法中,和可变形参相同类型的数组的方法不构成重载。 ③在形参列表中可变形参只能放在最后 ④在同一个方法的形参列表中只能有一个可变形参。 ⑤ 可变形参的个数可以是0个1个或多个 方法的参数传递 基本数据类型的参数传递 引用数据类型的参数传递 方法的参数传递 面向对象:封装 为什么要使用封装性? 在创建对象以后,就可以通过对象名.属性名这种方式对属性直接进行操作。这种操作对于属性只有类型和范围的限制。但是在实际开发中我们会有更多的其它的限制条件。而这些限制条件又不能在属性的声明处加以限制。我们采取取如下方式 ①使用权限修饰符对属性进行权限的限制,那么在类的外部就不能随意的再调用类中的属性 ②提供公共的方法,在方法中可以加以限制其它的条件。然后可以通过该方法给属性赋值和获取属性的值。 封装性的体现(狭义上): ①将属性私有化。(private修饰属性) ②提供公共的set/get方法。(set方法用来给属性赋值,get方法用来获取属性的值) 封装性的体现(广义上): ①可以使用四种权限修饰符:private,缺省的,protected,public ②四种权限修饰符可以修饰 :属性,方法,构造器,内部类 ③类只能被public和缺省的修饰。 四种访问权限修饰符 构造方法(构造器) 构造器的特征 它具有与类相同的名称 它不声明返回值类型。(与声明为void不同) 不能被static、final、synchronized、abstract、native修饰,不能有return语句返回值 构造器的作用:创建对象;给对象进行初始化 如:Order o = new Order(); Person p = new Person(“Peter”,15); 根据参数不同,构造器可以分为如下两类: 隐式无参构造器(系统默认提供) 显式定义一个或多个构造器(无参、有参) 注 意: Java语言中,每个类都至少有一个构造器 默认构造器的修饰符与所属类的修饰符一致 一旦显式定义了构造器,则系统不再提供默认构造器 一个类可以创建多个重载的构造器 父类的构造器不可被子类继承 构造器重载使得对象的创建更加灵活,方便创建各种不同的对象。 给属性赋值的方法 赋值的位置: ① 默认初始化:int a; ② 显式初始化:int a = 0; ③ 构造器中初始化 ④ 通过“对象.属性“或“对象.方法”的方式赋值 赋值的先后顺序: ① - ② - ③ - ④ JavaBean:Java语言编写的可重用组件 定义:是一个普通的Java类,但是符合如下标准 ①类是公共的 ②有一个无参的公共的构造器 ③有属性,且有对应的get、set方法 UML类图 ①+ 表示 public 类型, - 表示 private 类型,#表示protected类型 ②方法的写法:方法的类型(+、-) 方法名(参数名:参数类型):返回值类型 this 关键字 this 是什么? ①它在方法内部使用,即这个方法所属对象的引用; ②它在构造器内部使用,表示该构造器正在初始化的对象。 this作用域:this 可以调用类的属性、方法和构造器 适用情形:当在方法内需要用到调用该方法的对象时,就用this。 具体的:我们可以用this来区分属性和局部变量。 public void setAge(int age){ age = age;//局部变量 :就近原则(属性名和局部变量名相同时默认调用的是局部变量) System.out.println("===========" + age); } this 调用构造器 总结Summary 面向对象的内存分析 成员变量与局部变量 构造器 函数重载

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

阿里云测试,阿里云移动测试平台基础了解

移动测试是为广大企业客户和移动开发者提供真机测试服务的云平台,拥有大量热门机型,提供7x24全天候服务,帮助客户发现APP中的各类隐患(应用崩溃、各类兼容性问题、功能性问题、性能问题等),减少用户流失,提高APP质量和市场竞争力。 简介: 移动测试是为广大企业客户和移动开发者提供真机测试服务的云平台,拥有大量热门机型,提供7x24全天候服务。 我们致力于提供专业、稳定、全面、高价值的自动化测试能力,以及简单易用的使用流程、贴心的技术服务,并且帮助客户以最低的成本、最高的效率发现APP中的各类隐患(APP崩溃、各类兼容性问题、功能性问题、性能问题等),减少用户流失,提高APP质量和市场竞争力。 依托于阿里深厚的移动测试技术积累,MQC针对不同的测试场景和需求,研发了一套独特的测试方法和体系,可以涵盖Android、iOS、YunOS、H5 等不同的平台体系,我们在内部服务了手淘、天猫、聚划算、支付宝等一系列超级App,积累了丰富的移动测试经验。 名词解释: 兼容性测试:Android系统版本繁多,再加上各个厂商定制化的修改,使得Android碎片化问题非常严重。开发者需要花大量的金钱购买各类真机设备,花大量时间在不同的Android设备上进行测试,程序崩溃问题依然严重。兼容性测试就是解决这一问题。用户只需上传应用包,然后直接选择真机设备,即可提交到云端进行测试。兼容性测试会帮用户自动的在选择的真机终端上进行安装测试、启动测试、压力测试、卸载测试,最后把整体的兼容性报告、所有崩溃隐患的详细信息全部呈现给开发者,让开发者足不出户,便能体验到极致的测试服务。 H5测试: H5应用已经到了与Native应用平分天下的地位,越来越多的开发者愿意将精力投入到更加方便、轻量的H5应用上去。同时,H5应用的兼容性、性能等问题愈发值得重视。H5测试为开发者提供真机上H5应用的兼容性和性能测试,同时智能地遍历H5应用所有下级页面,并且给出H5应用待优化的点,让开发者快乐开发。 ANR:如果应用对输入事件(例如硬件点击或者屏幕触摸事件)在5秒内无响应,或者BroadReceiver不能够在10秒内结束接收到任务,就会发生ANR(程序无响应)。一般由在UI线程中执行了数据库、IO、网络等耗时的操作而无法响应输入事件引起。 Crash:应用在运行过程中,出现异常退出。 Monkey测试:Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中。它向系统发送伪随机的用户事件流(如按键输入、触摸屏输入、手势输入等),实现对正在开发的应用程序进行压力测试。Monkey测试是一种为了测试软件的稳定性、健壮性的快速有效的方法。 CPU时间:操作系统调度CPU交替的执行不同进程,一个进程的CPU时间就是指CPU在该进程上执行的所有时长的总和。 H5首屏加载: H5页面加载完首屏所有资源、包括css、js、图片、数据等所消耗的时间。 DOM加载:webView onPageStart到onPageFinished的时间。 非CDN资源:CDN是构建在网络之上的内容分发网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。非CDN资源就是没有使用CDN的资源,加载资源时需要通过DNS层层解析。 无时间戳资源:HTTP请求时没有在Header里面带上modify time和expire time这样的信息,在请求时从缓存里面找不到匹配的资源,需要重新加载,会耗用更多的流量和时间。 浏览器兼容性测试:浏览器兼容性目前支持QQ、百度、UC、360四类移动端浏览器。MQC会在您选择的设备上,分别用这四款移动浏览器加载目标网页,并在加载完成后,向上滑动2次网页,分别截取H5应用图片。从而,帮助您查看在不同浏览器上的H5应用兼容性情况。 功能特性 移动测试致力于提供专业、稳定、全面、高价值的自动化测试能力,以及简单易用的使用流程、贴心的技术服务,并且帮助客户以最低的成本、最高的效率发现APP中的各类隐患(APP崩溃、各类兼容性问题、功能性问题、性能问题等)。移动测试的机型分布涵盖了市面上几乎所有主流品牌、型号、系统版本和屏幕分辨率。目前主要包括:Android兼容性测试、Android功能测试、Android深度性能测试、Android远程真机租用、Android在线录制、iOS兼容性测试、iOS功能测试、iOS在线录制、H5测试等功能。 Android兼容性测试 本服务按照APP安装—>启动—>登录(可选)—>Ripper探索->不同版本覆盖安装(可选)—>卸载这一流程运行您的APP,同时也会获取相关的运行日志(如果有)、BUG信息(如果有)、性能数据(如果有,主要包含启动时间、CPU、内存、流量等数据),测试完成后将会提供一份兼容性测试报告。对于Android兼容性测试,免费任务的测试时长为5分钟,付费任务的测试时长为10分钟。 登录这一步骤为可选项,目前支持自动登录和脚本登录(一次测试任务中两种方法不能同时使用),在您提交测试任务时,如果您提供了测试账号和密码,测试执行时将在出现登录界面后移动测试将自动输入账号密码进行登录操作,此方法不支持需要验证码的登陆过程或者界面特殊的登录界面;如果您在提交测试任务时提供了Appium(zip压缩后的Python或Java文件)或Robotium(zip压缩过的Java文件)测试脚本,移动测试将在测试过程开始时执行您的测试脚本。两种登陆方法均支持账号池功能。 说明:Ripper探索使用了阿里集团基于机器学习开发的智能 AI 程序Ripper,具备自主决策能力,极大提高 App 测试效率。Ripper在页面覆盖度、BUG检出率上相较传统Monkey和遍历程序有明显优势。 Android功能测试本服务将按照APP安装—>启动—>执行测试用例—>卸载这一流程运行您的APP,同时也会获取相关的运行日志(如果有)、BUG信息(如果有)、性能数据(如果有),测试完成后将会提供一份功能测试报告。报告将会以截图或者视频的形式向您展现APP的运行过程,帮助您快速进行功能回归。 本服务需要您提供一份基于Appium或Robotium测试引擎的测试脚本,Appium测试脚本支持Python和Java编程语言,Robotium脚本支持Java编程语言。本服务不提供单独的登陆步骤,请将您的登陆过程集成在测试脚本中,这里也支持账号池功能。 功能测试的脚本执行成功率跟您测试脚本的质量有关,移动测试无法保证您的脚本一定可以得到您预期的结果。移动测试会在脚本运行过程中尽量帮助您处理掉系统弹窗,以在一定程度上提高功能测试成功率,但是您APP弹出的非系统弹窗则需要您在测试脚本中自行处理。为了提高您的脚本执行成功率,建议您在测试脚本中必要的步骤后增加相关的校验或处理步骤(例如:在可能出现弹窗的地方进行相关判断和处理、在界面切换或网络请求等时间不可控的步骤后增加等待时间防止由于界面未完全加载而导致找不到控件等)。您可以通过Android在线录制生成一份测试脚本或者直接保存成测试用例,可以减轻您的脚本编写负担。 Android功能测试的测试时长限制在30分钟以内,如果您的测试用例或脚本的执行时间过长,移动测试将在超时后主动结束本次测试任务,不会继续执行用例或脚本;你可以将用例或脚本合理拆分,分解成多个任务提交测试,或者联系移动测试为您提供个性化支持。同时,针对金融类客户,我们支持随机密码键盘的输入操作,提高功能测试的适用范围。 Android远程真机租用 远程真机租用向您提供在线远程操作移动测试设备的功能,您可以实时看到设备的屏幕、以及执行屏幕或者按键操作,例如:点击、滑动、输入文本等。本服务方便您在发现APP在某些机型上存在问题而手边没有对应设备时,快速复现您APP的异常和问题。 Android&iOS在线录制在线录制可以记录您在移动测试设备上的操作轨迹,快速生成对应的功能测试用例和脚本。支持点击、滑动、文本输入、等待等常用操作。生成的测试脚本通过xpath、控件id、文字等多种方式查找控件,明显提高了功能测试的成功率。针对iOS系统不同版本间xpath或元素类型变化等问题,移动测试做了大量适配工作。 说明:由于APP之间存在大量差异,移动测试无法适配所有情况,无法保证在线录制生成的脚本一定运行成功。为了保证生成的测试用例或脚本在功能测试中有较高的成功率,您在录制时应尽量从APP安装完成启动时开始录制,不要漏掉某些操作步骤;对于非系统弹框,也需要您进行针对性的处理;在录制界面切换或网络请求这类时间不可控的步骤后,请加上一定的等待时间,避免在功能测试时因为这些因素而出现找不到控件的问题。 Android深度性能测试深度性能测试能协助测试人员发现APP中存在的深层次性能问题,直接定位多项性能问题及瓶颈的根本原因,方便您快速做出针对性地修改,提升APP性能表现,使得APP运行得更加稳定。深度性能测试现在提供内存泄露、内存溢出、GC监控、界面流畅度和卡顿检测、过度绘制检测、启动分析、严苛模式(StrictMode)分析、安装包分析等功能。分别从内存表现、绘制和响应表现、启动表现、安装包等四个方面对APP性能做出来全面的分析。 iOS兼容性测试本服务按照安装—>启动—>自动登录(可选)—>智能探索—>卸载的流程在您选定的设备上运行您的APP,移动测试目前的iOS机型涵盖iPhone 4S到iPhone 7/7P,系统版本涵盖iOS 8到iOS 10。方便您快速针对iOS机型进行全覆盖测试。自动登录只需要您提供测试账号和密码就可以帮您快速登录,这里暂不支持需要验证码和比较特殊的登录界面。本服务将收集设备在APP运行期间输出的BUG日志(如果有),并将录制测试过程的APP运行视频,方便您快速查看问题。iOS兼容性测试免费任务的测试时长为5分钟,付费任务测试时长为10分钟。 iOS功能测试本服务按照安装—>启动—>执行脚本—>卸载的流程运行您的APP。测试脚本目前支持Appium和UI Automation(由于iOS的限制,UI Automation脚本仅支持iOS 8及之前版本的设备)测试框架。移动测试将会录制APP的运行视频,方便您快速发现功能问题。用于iOS功能测试的Appium脚本仅支持Python语言,UI Automation脚本仅支持JavaScript语言。 功能测试的脚本执行成功率跟您测试脚本的质量有关,移动测试无法保证您的脚本一定可以得到您预期的结果。移动测试会在脚本运行过程中尽量帮助您处理掉系统弹窗,以在一定程度上提高功能测试成功率,但是您APP弹出的非系统弹窗则需要您在测试脚本中自行处理。为了提高您的脚本执行成功率,建议您在测试脚本中必要的步骤后增加相关的校验或处理步骤(例如:在可能出现弹窗的地方进行相关判断和处理、在界面切换或网络请求等时间不可控的步骤后增加等待时间防止由于界面未完全加载而导致找不到控件等)。您可以iOS在线录制生成测试脚本或用例,减轻您的脚本编写负担。 iOS功能测试免费任务的测试时长限制在5分钟以内,付费任务的测试时间限制在20分钟以内,如果您的测试用例或脚本的执行时间过长,移动测试将在超时后主动结束本次测试任务,不会继续执行用例或脚本;你可以将用例或脚本合理拆分,分解成多个任务提交测试,或者联系移动测试为您提供个性化支持。 H5测试H5测试可以在不同手机浏览器下测试您的页面加载情况。H5测试从资源加载、白屏时间、网页大小、网页复杂度等方面对您的页面加载性能做出全面分析, 方便快速发现H5问题。原文链接:https://blog.csdn.net/lsj960922/article/details/80338224

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

Spring Cloud Alibaba基础教程:Sentinel使用Nacos存储规则

通过上一篇《使用Sentinel实现接口限流》的介绍,相信大家对Sentinel已经有了初步的认识。在Spring Cloud Alibaba的整合封装之下,接口限流这件事情可以非常轻易的整合到我们的Spring Cloud应用中。但是,通过上篇的整合,依然还不能完美的满足我们日常的生产需求。其中,非常重要的一点就是限流规则的持久化问题。不少细心的读者也在留言中提出了Dashboard中设置的限流规则在应用重启之后就丢失了的问题。那么,接下来我们就来说说Sentinel的规则持久化如何实现。 使用Nacos存储限流规则 Sentinel自身就支持了多种不同的数据源来持久化规则配置,目前包括以下几种方式: 文件配置 Nacos配置 ZooKeeper配置 Apollo配置 本文我们就来一起动手尝试一下,使用Spring Cloud Alibaba

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

Spring Boot 2.x基础教程:工程结构推荐

Spring Boot框架本身并没有对工程结构有特别的要求,但是按照最佳实践的工程结构可以帮助我们减少可能会遇见的坑,尤其是Spring包扫描机制的存在,如果您使用最佳实践的工程结构,可以免去不少特殊的配置工作。 典型示例 以下结构是比较推荐的package组织方式: com +- example +- myproject +- Application.java | +- domain | +- Customer.java | +- CustomerRepository.java | +- service | +- CustomerService.java | +- web | +- C

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Mario

Mario

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

腾讯云软件源

腾讯云软件源

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

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册