首页 文章 精选 留言 我的

精选列表

搜索[鸿蒙课程],共8080篇文章
优秀的个人博客,低调大师

德哥PG系列课程直播(第12讲):PostgreSQL 物联网最佳实践

直播回顾 https://yq.aliyun.com/live/846 知识点 知识点:时序数据特性,SCHEMAless设计思路,递归调用,规则,流式计算,滑窗聚合 学习资料 1、时序数据合并场景加速分析和实现 - 复合索引,窗口分组查询加速,变态递归加速背景: 在很多场景中,都会有数据合并的需求。例如记录了表的变更明细(insert,update,delete),需要合并明细,从明细中快速取到每个PK的最新值。又比如有很多传感器,不断的在上报数据,要快速的取出每个传感器的最新状态。对于这种需求,可以使用窗口查询,但是如何加速,如何快速的取出批量数据呢?这个是有优化的门道的。2、(时序业务)证券交易系统数据库设计 - 阿里云RDS PostgreSQL最佳实践标签:PostgreSQL , 证券 , 时序数据 , JSON , HSTORE , 数组 , range索引 , BRIN块级索引 , 分时走势 , 线性回归 , MADlib , 机器学习3、PostgreSQL 海量时序数据(任意滑动窗口实时统计分析) - 传感器、人群、物体等对象跟踪标签:PostgreSQL , 物联网 , feed , 网游 , 热力 , 商场驻留 , 人群分析 , 实时热力图 , 实时在线图 , 实时分段最大最小区间图 , 任意滑动窗口实时最高、最低在线数4、时序、时序、时序业务(所有VALUE NEW值 7秒到7毫秒的优化之旅) - 阿里云RDS PostgreSQL最佳实践标签:PostgreSQL , 时序数据库 , 时序 , 滑动窗口 , 递归查询 , subquery , 窗口查询 , 求最新值5、海量实时计算+OLTP+OLAP DB设计 - 阿里云(RDS、HybridDB) for PostgreSQL最佳实践 - 泛电网系统应用标签:PostgreSQL , 国家电网 , 电表 , 余额 , 流式计算 , 状态监测 , 上下文相关6、PostgreSQL 在铁老大订单系统中的schemaless设计和性能压测标签:PostgreSQL , UDF , schemaless , 自动建表 , 自动分区 , 订单查询 , 用户订单查询 , 席别订单查询7、流计算风云再起 - PostgreSQL携PipelineDB力挺IoT(物联网)背景:pipelinedb是基于PostgreSQL的一个流式计算数据库,纯C代码,效率极高(32c机器,单机日处理流水达到了250.56亿条)。同时它具备了PostgreSQL强大的功能基础,正在掀起一场流计算数据库制霸的腥风血雨。8、HTAP数据库 PostgreSQL 场景与性能测试之 33 - (OLAP) 物联网 - 线性字段区间实时统计标签:PostgreSQL , HTAP , OLTP , OLAP , 场景与性能测试9、HTAP数据库 PostgreSQL 场景与性能测试之 27 - (OLTP) 物联网 - FEED日志, 流式处理 与 阅后即焚 (CTE)标签:PostgreSQL , HTAP , OLTP , OLAP , 场景与性能测试10、HTAP数据库 PostgreSQL 场景与性能测试之 24 - (OLTP) 物联网 - 时序数据并发写入(含时序索引BRIN)标签:PostgreSQL , HTAP , OLTP , OLAP , 场景与性能测试11、HTAP数据库 PostgreSQL 场景与性能测试之 15 - (OLTP) 物联网 - 查询一个时序区间的数据标签:PostgreSQL , HTAP , OLTP , OLAP , 场景与性能测试12、SQL流式案例 - 旋转门压缩(前后计算相关滑窗处理例子)标签:PostgreSQL , 阅后即焚 , 流计算 , 旋转门压缩 , 滑窗分析 , 上下文相关滑窗 , 上下结果相关滑窗13、旋转门数据压缩算法在PostgreSQL中的实现 - 流式压缩在物联网、监控、传感器等场景的应用背景:在物联网、监控、传感器、金融等应用领域,数据在时间维度上流式的产生,而且数据量非常庞大。14、PostgreSQL 三角函数的用法举例 - 已知3点求夹角(旋转门续)背景:前几天写了一篇关于旋转门的数据压缩算法在PostgreSQL中的实现,里面用到了PostGIS里面的ST_Azimuth函数用来计算夹角,其实在PostgreSQL 中,我们还可以使用三角函数,以及三边来求夹角。 往期回顾 PostgreSQL多场景阿里云沙箱实验(第11讲):PostgreSQL 在社交应用领域的最佳实践 https://yq.aliyun.com/live/824PostgreSQL多场景阿里云沙箱实验(第10讲):PostgreSQL 时空调度数据库实践 https://yq.aliyun.com/live/807PostgreSQL多场景阿里云沙箱实验(第9讲):PostgreSQL 时空业务实践 https://yq.aliyun.com/live/794PostgreSQL多场景阿里云沙箱实验(第8讲):PostgreSQL 简单空间应用实践 https://yq.aliyun.com/live/783PostgreSQL多场景阿里云沙箱实验(第7讲):PostgreSQL 并行计算 https://yq.aliyun.com/live/733PostgreSQL多场景阿里云沙箱实验(第6讲):PostgreSQL 用户画像系统实践 https://yq.aliyun.com/live/710PostgreSQL多场景阿里云沙箱实验(第5讲):PostgreSQL 估值、概率计算 https://yq.aliyun.com/live/691PostgreSQL多场景阿里云沙箱实验(第4讲):PostgreSQL 实时多维分析 https://yq.aliyun.com/live/659PostgreSQL多场景阿里云沙箱实验(第3讲):PostgreSQL 实时搜索实践https://yq.aliyun.com/live/647PostgreSQL多场景阿里云沙箱实验(第2讲):PG秒杀场景实践https://yq.aliyun.com/live/615PostgreSQL多场景阿里云沙箱实验(第1讲):如何快速构建海量逼真测试数据https://yq.aliyun.com/live/594 主讲人 德哥(云栖社区昵称:德哥)阿里云数据库专家,PostgreSQL中国社区校长。 格言:公益是一辈子的事, I'm digoal, just do it. 专家已经在社区发布了1946篇技术博文(截止到12月11日),很快将突破2000篇。厉害了!想要成为德哥粉丝请直接点击这里。 直播时间 时间:2019年1月23日 19:30 直播地址 PostgreSQL技术进阶群,钉钉扫码入群看直播

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

德哥PG系列课程直播(第9讲):PostgreSQL 时空业务实践

直播回顾地址 PostgreSQL多场景阿里云沙箱实验(第9讲):PostgreSQL 时空业务实践 https://yq.aliyun.com/live/794 知识点 知识点:时空partial index,时空搜索。空间复合索引。 学习资料 1、空间复合索引加速空间搜索背景:随着移动互联网的普及,空间数据已经成为大多数企业数据的标配,例如出行、快递、等。通常数据的查询会带位置距离搜索,同时还会伴随其他属性的过滤,其他属性的过滤:例如时间范围,区域ID的过滤,物流公司ID的过滤。2、数据库案例集锦 - 开发者的《如来神掌》标签:PostgreSQL , PG DBA cookbook , PG Oracle兼容性 , PG 架构师 cookbook , PG 开发者 cookbook , PG 应用案例3、RDS PostgreSQLHDB PG 毫秒级海量时空数据透视 典型案例分享背景:随着移动终端的普及,现在有越来越多的业务数据会包含空间数据,例如手机用户的FEED信息、物联网、车联网、气象传感器的数据、动物的溯源数据,一系列跟踪数据。4、时间、空间、对象 海量极速多维检索 - 阿里云RDS PostgreSQL最佳实践背景:人类或者其他对象的活动产生了海量的时间、空间数据,如果有科技能实现回到过去,过去的世界状态会是什么样的?实际上这个需求在数据库中也存在。5、(新零售)商户网格化运营 - 阿里云RDS PostgreSQL最佳实践标签:PostgreSQL , PostGIS , 地理位置 , KNN , 近邻检索 , 网格检索 , polygon中心点 , 半径搜索6、PostgreSQL 实时位置跟踪+轨迹分析系统实践 - 单机顶千亿轨迹/天背景:随着移动设备的普及,越来越多的业务具备了时空属性,例如快递,试试跟踪包裹、快递员位置。例如实体,具备了空间属性。例如餐饮配送,送货员位置属性。例如车辆,实时位置。等等。7、PostgreSQL + PostGIS 时态分析背景:假设我们有一些物体的轨迹数据(经纬度、measure(通常存为epoch时间戳)),比如车辆、人、传感器等。给定一个物体在某个时间范围的轨迹数据,查找有没有与这个物体接触的轨迹,并按亲密度排序。 往期回顾 PostgreSQL多场景阿里云沙箱实验(第8讲):PostgreSQL 简单空间应用实践 https://yq.aliyun.com/live/783PostgreSQL多场景阿里云沙箱实验(第7讲):PostgreSQL 并行计算 https://yq.aliyun.com/live/733PostgreSQL多场景阿里云沙箱实验(第6讲):PostgreSQL 用户画像系统实践 https://yq.aliyun.com/live/710PostgreSQL多场景阿里云沙箱实验(第5讲):PostgreSQL 估值、概率计算 https://yq.aliyun.com/live/691PostgreSQL多场景阿里云沙箱实验(第4讲):PostgreSQL 实时多维分析 https://yq.aliyun.com/live/659PostgreSQL多场景阿里云沙箱实验(第3讲):PostgreSQL 实时搜索实践https://yq.aliyun.com/live/647PostgreSQL多场景阿里云沙箱实验(第2讲):PG秒杀场景实践https://yq.aliyun.com/live/615PostgreSQL多场景阿里云沙箱实验(第1讲):如何快速构建海量逼真测试数据https://yq.aliyun.com/live/594 主讲人 德哥(云栖社区昵称:德哥)阿里云数据库专家,PostgreSQL中国社区校长。 格言:公益是一辈子的事, I'm digoal, just do it. 专家已经在社区发布了1946篇技术博文(截止到12月11日),很快将突破2000篇。厉害了! 想要成为德哥粉丝请直接点击这里。 直播时间 时间:2019年1月2日 19:30 直播地址 PostgreSQL技术进阶群,钉钉扫码入群看直播

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

04.Beetl常用内置函数以及安全输出---《Beetl视频课程》

本期视频实现了三个功能,模糊搜索、标签分类、登录/注销功能; 内容简介:使用了常用内置函数,以及安全输出,实现了上面提到的三个业务 一起学beetl目录:https://my.oschina.net/u/1590490?tab=newest&catalogId=6214598 作者:GK 常用内置方法 date 返回一个java.util.Date类型的变量,如 date() 返回一个当前时间(对应java的java.util.Date); ${date( "2011-1-1" , "yyyy-MM-dd" )} 返回指定日期 print 打印一个对象 print(user.name); println 打印一个对象以及回车换行符号,回车换号符号使用的是模板本身的,而不是本地系统的.如果仅仅打印一个换行符,则直接调用println() 即可 printFile 直接答应文件,文件路径以模板根目录为相对目录,printFile(‘‘/common/header.html’’); nvl 函数nvl,如果对象为null,则返回第二个参数,否则,返回自己 nvl(user,"不存在") isEmpty 判断变量或者表达式是否为空,变量不存在,变量为null,变量是空字符串,变量是空集合,变量是空数组,此函数都将返回true isNotEmpty 同上,判断对象是否不为空 has 变量名为参数,判断是否存在此全局变量,如 has(userList),类似于1.x版本的exist("userList"),但不需要输入引号了 assert 如果表达式为false,则抛出异常 trim 截取数字或者日期,返回字符,如trim(12.456,2)返回"12.45",trim(date,'yyyy')返回"2017" trunc 截取数字,保留指定的小数位,如trunc(12.456,2) 输出是12.45.不推荐使用,因为处理float有问题,兼容原因保留了 decode 一个简化的if else 结构,如 ${decode(a,1,"a=1",2,"a=2","不知道了")},如果a是1,这decode输出"a=1",如果a是2,则输出"a==2", 如果是其他值,则输出"不知道了" debug 在控制台输出debug指定的对象以及所在模板文件以及模板中的行数,如debug(1),则输出1 [在3行@/org/beetl/core/lab/hello.txt],也可以输出多个,如debug("hi",a),则输出hi,a=123,[在3行@/org/beetl/core/lab/hello.txt] parseInt 将数字或者字符解析为整形 如 parseInt("123"); parseLong 将数字或者字符解析为长整形,parseInt(123.12); parseDouble 将数字或者字符解析为浮点类型 如parseDouble("1.23") range 接收三个参数,初始值,结束值,还有步增(可以不需要,则默认为1),返回一个Iterator,常用于循环中,如for(var i in range(1,5)) {print(i)},将依次打印1234. flush 强制io输出。 json,将对象转成json字符串,如 var data = json(userList) 可以跟一个序列化规则 如,var data = json(userList,"[*].id:i"),具体参考 https://git.oschina.net/xiandafu/beetl-json pageCtx ,仅仅在web开发中,设置一个变量,然后可以在页面渲染过程中,调用此api获取,如pageCtx("title","用户添加页面"),在其后任何地方,可以pageCtx("title") 获取该变量 type.new 创建一个对象实例,如 var user = type.new("com.xx.User"); 如果配置了IMPORT_PACKAGE,则可以省略包名,type.new("User") type.name 返回一个实例的名字,var userClassName = type.name(user),返回"User" global 返回一个全局变量值,参数是一个字符串,如 var user = global("user_"+i); cookie 返回指定的cookie对象 ,如var userCook = cookie("user"),allCookies = cookie(); 字符串相关方法 strutil方法对参数均不做空指针检测,你可自定义方法来覆盖这些内置的方法 strutil.startWith ${ strutil.startWith("hello","he")} 输出是true strutil.endWith ${ strutil.endWith("hello","o")} 输出是true strutil.length ${ strutil. length ("hello")},输出是5 strutil.subString ${ strutil.subString ("hello",1)},输出是"ello" strutil.subStringTo ${ strutil.subStringTo ("hello",1,2)},输出是"e" strutil.split ${ strutil.split ("hello,joeli",",")},参数第一个是字符串,第二个是正则表达式。输出是数组:返回第一个是"hello",第二个是"joelli" strutil.contain ${ strutil.contain ("hello,"el")},输出是true strutil.toUpperCase ${ strutil.toUpperCase ("hello")},输出是HELLO strutil.toLowerCase ${ strutil.toLowerCase ("hello")},输出是hello strutil.replace ${ strutil.replace ("hello","lo","loooo")},输出是helloooo strutil.format ${ strutil.format ("hello,{0}, my age is {1}","joeli",15)},输出是hello,joeli, my age is 15. 具体请参考http://docs.oracle.com/javase/6/docs/api/java/text/MessageFormat.html strutil.trim 去掉字符串的尾部空格 strutil.formatDate var a = strutil.formatDate(user.bir,'yyyy-MM-dd')}; strutil.index var index = strutil.index("abc","a");返回 索引0 strutil.lastIndex var index = strutil.lastIndex("aba","a");返回索引2 数组相关方法 array.range 返回数组或者Collection一部分,接受三个参数,第一个是数组或者Collection子类,第二,三个参数分别是起始位置 array.remove 删除某个数组或者Collection的一个元素,并返回该数组或者Collection.第一个是数组或者Collection子类,第二个参数是元素 array.add 向数组或者Collection添加一个元素,并返回该数组或者Collection。第一个是数组或者Collection子类,第二个参数是元素 array.contain 判断数组或者元素是否包含元素,如果包含,返回true。否则false。第一个是数组或者Collection子类,第二个参数是元素 array.toArray 转化成数组,如array.toArray(1,2,"a"); array.collection2Array 将java集合转化为数组 array.collection2Array([1,2,'']) 正则表达式相关方法 reg.match(str,regex) str为需要处理的字符串,regex是表达式 reg.replace(str,regex,replace),str为需要处理的字符串,regex是表达式,替换的字符串替换字符串 reg.find(str,regex) 返回找到的符合表达式的第一个字符串,否则返回空字符串 reg.findList(str,regex) 找到所有符合表达式的字符串,否则返回空列表 reg.split(str,regex),对字符串进行切分,返回列表 reg.split(str,regex,limit) 同上,limit是最多返回个数 安全输出 变量后面加一个感叹号标识安全输出,占位符,定界符都可以使用,感叹号后面可以写默认值例如: ${userName!} ${userName!"默认值"} <%if(userName!"xxxx"=="xxxx"){......}%> 安全输出是任何一个模板引擎必须重视的问题,否则,将极大困扰模板开发者。Beetl中,如果要输出的模板变量为null,则beetl将不做输出,这点不同于JSP,JSP输出null,也不同于Freemarker,如果没有用!,它会报错. 模板中还有俩种情况会导致模板输出异常 有时候模板变量并不存在(譬如子模板里)模板变量为null,但输出的是此变量的一个属性,如${user.wife.name}针对前俩种情况,可以在变量引用后加上!以提醒beetl这是一个安全输出的变量。 如${user.wife.name! },即使user不存在,或者user为null,或者user.wife为null,或者user.wife.name为null beetl都不将输出 可以在!后增加一个常量(字符串,数字类型等),或者另外一个变量,方法,本地调用,作为默认输出,譬如: ${user.wife.name!”单身”},如果user为null,或者user.wife为null,或者user.wife.name为null,输出”单身” 譬如 ${user.birthday!@System.constants.DefaultBir}, 表示如果user为null,或者user. birthday为null,输出System.constants.DefaultBir 还有一种情况很少发生,但也有可能,输出模板变量发生的任何异常,如变量内部抛出的一个异常 这需要使用格式${!(变量)},这样,在变量引用发生任何异常情况下,都不作输出,譬如 ${!(user.name)},,beetl将会调用user.getName()方法,如果发生异常,beetl将会忽略此异常,继续渲染 值得注意的是,在变量后加上!不仅仅可以应用于占位符输出(但主要是应用于占位符输出),也可以用于表达式中,如: <% var k = user.name!'N/A'+user.age!; %> <% ${k} %> 如果user为null,则k值将为N/A 项目git地址:https://gitee.com/gavink/beetl-blog 视频地址:下载下来会更清晰,视频比较长,可使用倍速看,主要实现业务比较的地方耗费时间长 百度网盘下载: https://pan.baidu.com/s/1LyxAxlKpVXgVjwSXIbzBuA 提取码: 68im bilibili (可以调节清晰度): https://www.bilibili.com/video/av36278644/?p=4 博客目录:https://my.oschina.net/u/1590490?tab=newest&catalogId=6214598

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

03.Beetl模板变量以及自定义模板配置---《Beetl视频课程》

本期视频设置一个全局可配置的网站标题; 内容简介:使用临时变量、全局变量、共享变量、自定义Beetl配置、使用ctxPath解决乱码、404等问题 一起学beetl目录:https://my.oschina.net/u/1590490?tab=newest&catalogId=6214598 作者:GK 临时变量 在模板中定义的变量成为临时变量,这类似js中采用var 定义的变量,如下例子 <% var a = "xxxx"; %> 全局变量 全局变量是通过template.binding传入的变量,这些变量能在模板的任何一个地方,包括子模板都能访问到。如java代码里 template.binding("list",service.getUserList()); //在模板里 <% for(user in list){ %> hello,${user.name}; <% } %> 在请求中beetl会从request->attributes中获取变量作为模板变量,所以下面的page,blogSiteTitle也是全局变量 @GetMapping("/") public String index(@RequestParam(required = false, defaultValue = "1") Integer pageNumber, @RequestParam(required = false, defaultValue = "8") Integer pageSize, HttpServletRequest request) { PageQuery<Blog> pageQuery = blogService.pageBlog(pageNumber, pageSize); request.setAttribute("page", pageQuery); request.setAttribute("blogSiteTitle", "XXX网站"); return "index1.html"; } 共享变量共享变量指在所有模板中都可以引用的变量,可通过groupTemplate.setSharedVars(Map<String, Object> sharedVars)传入变量,这些变量能用在 所有模板 的任何一个地方 GroupTemplate gt = new GroupTemplate(resourceLoader, cfg); Map<String,Object> shared = new HashMap<String,Object>(); shared.put("name", "beetl"); gt.setSharedVars(shared); 哪怎么去获取GroupTemplate对象呢?我们可以自定义一个Beetl配置。然后设置我们要的值。 自定义beetl配置 package com.ibeetl.blog.config; import com.ibeetl.starter.BeetlTemplateConfig; import org.beetl.core.GroupTemplate; import org.beetl.core.resource.ClasspathResourceLoader; import org.beetl.ext.spring.BeetlGroupUtilConfiguration; import org.beetl.ext.spring.BeetlSpringViewResolver; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import java.util.HashMap; import java.util.Map; import java.util.Properties; /** * @author GavinKing * @ClassName: BeetlConfig * @Description: * @date 2018/11/22 */ @Configuration public class BeetlConfig { //模板根目录 ,比如 "templates" @Value("${beetl.templatesPath}") String templatesPath; @Value("${blog.title}") String title; @Bean public GroupTemplate getGroupTemplate(BeetlGroupUtilConfiguration beetlGroupUtilConfiguration) { GroupTemplate gt = beetlGroupUtilConfiguration.getGroupTemplate(); Map<String,Object> shared = new HashMap<>(); shared.put("blogSiteTitle", title); gt.setSharedVars(shared); return gt; } @Bean public BeetlGroupUtilConfiguration getBeetlGroupUtilConfiguration() { BeetlGroupUtilConfiguration beetlGroupUtilConfiguration = new BeetlGroupUtilConfiguration(); //获取Spring Boot 的ClassLoader ClassLoader loader = Thread.currentThread().getContextClassLoader(); if(loader==null){ loader = BeetlConfig.class.getClassLoader(); } ClasspathResourceLoader cploder = new ClasspathResourceLoader(loader, templatesPath); beetlGroupUtilConfiguration.setResourceLoader(cploder); beetlGroupUtilConfiguration.init(); //如果使用了优化编译器,涉及到字节码操作,需要添加ClassLoader beetlGroupUtilConfiguration.getGroupTemplate().setClassLoader(loader); return beetlGroupUtilConfiguration; } @Bean(name = "beetlViewResolver") public BeetlSpringViewResolver getBeetlSpringViewResolver(BeetlGroupUtilConfiguration beetlGroupUtilConfiguration) { BeetlSpringViewResolver beetlSpringViewResolver = new BeetlSpringViewResolver(); beetlSpringViewResolver.setContentType("text/html;charset=UTF-8"); beetlSpringViewResolver.setOrder(0); beetlSpringViewResolver.setConfig(beetlGroupUtilConfiguration); return beetlSpringViewResolver; } } 从session中取值 从session中取值和request中一样,只不过前面加一个session ${session.title} 解决编码错误 修改SpringBoot的 application.properties配置文件,增加编码的配置 server.tomcat.uri-encoding=UTF-8 spring.http.encoding.charset=UTF-8 spring.http.encoding.enabled=true spring.http.encoding.force=true spring.messages.encoding=UTF-8 共享变量ctxPath Beetl默认共享变量ctxPath表示 Web应用ContextPath 可以用解决路径问题,如 图片、样式无法找到的问题 项目git地址:https://gitee.com/gavink/beetl-blog 视频地址:下载下来会更清晰 百度网盘下载: https://pan.baidu.com/s/1LyxAxlKpVXgVjwSXIbzBuA 提取码: 68im bilibili (可以调节清晰度): https://www.bilibili.com/video/av36278644/?p=3 博客目录:https://my.oschina.net/u/1590490?tab=newest&catalogId=6214598

资源下载

更多资源
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文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

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

WebStorm

WebStorm

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

用户登录
用户注册