关于ide:8k-Star基于-Matplotlib-的数据可视化利器

【导语】:Seaborn 是一个能够实现数据可视化的 Python 库,它是基于 matplotlib 库封装而成的,同时还能兼容 pandas 数据结构。咱们能够应用 Seaborn 来制作丑陋的数据图表,操作简略,易于上手。 提醒:Seaborn 反对 Python 3.7+ ,已不再反对 Python 2。简介1、数据可视化的工具介绍数据可视化是一种数据科学家将原始数据转化为图表的技术,这些图表能产生许多有价值的信息。图表升高了原始数据的复杂性,使用户更易了解。 有许多实现数据可视化的工具,例如 Tableau、Power BI、ChartBlocks以及其余的无代码工具。这些工具有着各自的用户,也都很弱小。然而当咱们须要一个良好的平台来解决原始数据时,python 不失为一个好的抉择。 尽管这种办法较为简单,须要的编程常识也更多,但 python 能通过许多操作和转换来实现数据可视化,因而对数据科学家来说是一个现实的抉择。Python 最大的一个长处就是它领有弱小的第三方库,来解决数据,比方numpy、pandas、matplotlib、tensorflow。 Matplotlib可能是目前最受认可的绘图库了,不仅实用于python,还实用于R语言等。它的定制化和可操作性使其坐上了头把交椅。然而当应用 matplotlib 时,有些定制化和操作性能很难实现。 基于 matplotlib,开发者发明了一个叫 seaborn 的库。seaborn 与 matplotlib 一样弱小,在带来一些新个性的同时还能简化绘图。 在本文中,咱们次要关注如何应用 seaborn 绘制高级的图表。你能够根据这些例子创立本人的图表。 ### 2. Seaborn是什么? Seaborn是 python 中一个能够制作数据图表的库。它是 matplotlib 库的高级封装,同时还能兼容 pandas 数据结构。 Seaborn能让你疾速摸索并了解数据。seaborn的工作形式为:首先捕获蕴含所有数据的整个数据结构或数组,随后通过执行绘图和统计数据须要的所有外部函数,将数据转换为信息图。 当你依据本身需要设计图表时,seaborn能缩小复杂性。 Seaborn 的Github主页: https://github.com/mwaskom/se... 装置pip install seaborn当装置seaborn时,也会主动装置其余绘图所须要的库,例如 matplotlib,pandas、numpy 和 scipy。此外,在写代码绘图前,咱们须要导入一些模块。 import matplotlib.pyplot as pltimport pandas as pdimport numpy as npimport seaborn as sns简略应用### 1. 绘制你的第一个图表 ...

January 30, 2021 · 2 min · jiezi

关于ide:52k-Star美观又实用的终端资源监视器-Bpytop

对于终端爱好者来说,领有监控系统资源应用状况的能力同样重要,理解零碎的资源利用率有助于你在系统维护中做出明确的抉择,有一些工具能够借助,诸如top和htop,但它们只显示多数零碎指标,如 CPU 和内存应用状况。 明天给大家举荐一个好用的,并且在 UI 设计上非常好看的终端资源监视器——Bpytop。它是 bashtop 的 python 版本。 0. GitHub 主页https://github.com/aristocrat... 1. Bpytop 性能个性在咱们深刻理解这个丑陋的资源监视器之前,咱们先来理解一下这个命令行工具提供了哪些性能个性: 一个好看的疾速响应的用户界面和箭头导航UI 内更改配置选项键盘和鼠标反对,反对菜单滚动过滤正在运行的过程显示以后磁盘驱动器的读写速度SIGTERM,SIGKILL,SIGINT 能够发送到选定的过程网络应用状况,磁盘以后读写速度的主动缩放图2. Bpytop 装置应用在你装置Bpytop之前,请确保你的零碎满足以下要求: Python 3.6及以上版本Psutil 模块,你能够应用以下命令装置这个模块:$ python3 -m pip install psutil接下来,咱们来具体介绍下如何装置 Bpytop: 有两种办法能够装置 Bpytop,从源代码装置和应用包管理器从零碎存储库装置,这里咱们介绍如何手动装置: 首先你须要从Github克隆整个仓库: $ git clone https://github.com/aristocratos/bpytop.git 接着从源代码进行编译,导航到克隆目录: $ cd bpytop并运行上面的命令: $ sudo make install而后就会看到以下页面: 当然除了手动装置,你还能够在各种 Linux 发行版中装置。这里咱们就不一一介绍了。 装置结束之后,Bpytop 显示零碎的资源应用状况如下: 要取得无关命令用法和键盘快捷键的帮忙,按ESC键并向下滚动并抉择HELP选项即可。 你还会取得快捷键应用操作列表 要退出或退出bpytop资源监视器,只需按键盘上的 q键。在$HOME/.config/bpytop目录中能够找到能够从 UI 更改的配置选项。 本文转自网络,文章版权归原作者所有。暂未找到原作者,如有通晓请留言。开源前哨 日常分享热门、乏味和实用的开源我的项目。参加保护 10万+ Star 的开源技术资源库,包含:Python、Java、C/C++、Go、JS、CSS、Node.js、PHP、.NET 等。

January 27, 2021 · 1 min · jiezi

关于ide:93k-StarPostgreSQL-的增强版命令行客户端

【导语】:pgcli 是针对PostgreSQL的命令行工具,对SQL语句有语法高亮显示,并且能对输出进行主动提醒。 简介pgcli是PostgreSQL的客户端工具,反对语法高亮,反对主动提醒补全命令,顺嘴一提,MySQL也有相似的工具叫mycli。 我的项目地址:<br/>https://github.com/dbcli/pgcli 简略应用下载安装pgcli实质上是一个python库,所以它的装置形式和其余python库装置一样: $ pip install -U pgcli# Only on Debian based Linux (e.g. Ubuntu, Mint, etc)$ sudo apt-get install pgcli # Only on macOS$ brew install pgcli 应用连贯数据库的语法为: $ pgcli [database_name]或者$ pgcli postgresql://[user[:password]@][netloc][:port][/dbname][?extra=value[&other=other-value]]例如: $ pgcli local_database$ pgcli postgres://amjith:pa$$w0rd@example.com:5432/app_db?sslmode=verify-ca&sslrootcert=/myrootcert更具体的用法,应用--help选项查看: $ pgcli --helpUsage: pgcli [OPTIONS] [DBNAME] [USERNAME]Options: -h, --host TEXT PostgreSQL数据库所在主机地址. -p, --port INTEGER PostgreSQL数据库实例的端口. -U, --username TEXT PostgreSQL数据库用户名. -u, --user TEXT PostgreSQL数据库用户名. -W, --password 强制提醒输出明码. -w, --no-password 不提醒输出明码. --single-connection 只是用繁多的连贯. -v, --version 查看pgcli版本. -d, --dbname TEXT 指标连贯的数据库. --pgclirc PATH pgclirc文件的门路. -D, --dsn TEXT 应用配置到[alias_dsn]局部的DSN pgclirc文件. --list-dsn 配置到[alias_dsn]局部的DSN列表pgclirc文件. --row-limit INTEGER 设置行限度提醒的阈值。应用0禁用提醒. --less-chatty 跳过启动时的介绍和退出时的再见. --prompt TEXT 提醒格局(默认: "\u@\h:\d> "). --prompt-dsn TEXT 应用DSN别名的连贯的提醒格局(默认: "\u@\h:\d> "). -l, --list 列出可用的数据库,而后退出. --auto-vertical-output 如果输出内容比终端宽度宽,主动切换到垂直输入模式. --warn / --no-warn 在运行危险查问之前收回正告.pgcli能够读取psql的环境变量,如PGHOST, PGPORT, PGUSER, PGPASSWORD, PGDATABASE;也应用ssl连贯来连贯ProstgreSQL,设置ssl相干的内容如下: ...

January 26, 2021 · 1 min · jiezi

关于ide:大一新生开发的小工具火了不一样的-Python-编程体验还是可视化的那种

转自:量子位(ID:QbitAI)普普通通黑底白字地敲代码太干燥?那么,把Python脚本可视化怎么样?就像这样,从输出图片、调整尺寸到双边滤波,每一步都能看得清清楚楚明明白白。 输出一个矩阵,无论是对它进行转置、求共轭还是乘方,都能失去及时的反馈。 这样一个Python脚本可视化工具,名叫Ryven,出自一位名叫Leon Thomm的大一新生之手。如果你也想试用一番,无妨接着往下看。 如何应用应用之前,简略筹备一下开发环境: Python3(举荐3.8以上)PySide2(举荐2.14以上)运行该我的项目中的Ryven.py,即可关上编辑器。作者提到,在Ryven中,有许多不同的脚本。每个脚本都蕴含变量、流(或图)以及日志。右键单击就能够轻松操作。不过,想要应用这些节点,须要先导入节点软件包。点击file,抉择import Nodes,导入*.rpc文件即可。 这个工具的另外一个特点是,蕴含了两种不同的算法模式。 数据流:每次数据更改(节点数据输入也就更改了)都会向前流传,并在所有连贯的节点中触发更新。如下图,滑动滑块,会立刻触发右侧节点中后果的更新。 执行流:数据不会在更改时立刻向前流传,而是只会在某个节点申请输入数据时,在受影响的节点中触发更新。另外,作者还给本人列了一个to do list,比方退出语法高亮性能、主动代码补全性能,欠缺视觉体验等等。可视化编程是不是还挺乏味的?不过,作者小哥也指出,可视化编程的目标不是取代文本编程,并且,文本编程中实现的许多工作没有可视化的必要。 对于作者作者 Leon Thomm,目前是苏黎世联邦理工学院的大一学生,自称“业余程序员”,致力于人机交互和可视化编程。依据他的个人简介,早在进入大学前,他曾经具备丰盛的软件开发经验。 传送门_我的项目地址: https://github.com/leon-thomm...https://github.com/leon-thomm... 开源前哨 日常分享热门、乏味和实用的开源我的项目。参加保护 10万+ Star 的开源技术资源库,包含:Python、Java、C/C++、Go、JS、CSS、Node.js、PHP、.NET 等。

January 26, 2021 · 1 min · jiezi

关于ide:大一新生开发的小工具火了不一样的-Python-编程体验还是可视化的那种

转自:量子位(ID:QbitAI)普普通通黑底白字地敲代码太干燥?那么,把Python脚本可视化怎么样?就像这样,从输出图片、调整尺寸到双边滤波,每一步都能看得清清楚楚明明白白。 输出一个矩阵,无论是对它进行转置、求共轭还是乘方,都能失去及时的反馈。 这样一个Python脚本可视化工具,名叫Ryven,出自一位名叫Leon Thomm的大一新生之手。如果你也想试用一番,无妨接着往下看。 如何应用应用之前,简略筹备一下开发环境: Python3(举荐3.8以上)PySide2(举荐2.14以上)运行该我的项目中的Ryven.py,即可关上编辑器。作者提到,在Ryven中,有许多不同的脚本。每个脚本都蕴含变量、流(或图)以及日志。右键单击就能够轻松操作。不过,想要应用这些节点,须要先导入节点软件包。点击file,抉择import Nodes,导入*.rpc文件即可。 这个工具的另外一个特点是,蕴含了两种不同的算法模式。 数据流:每次数据更改(节点数据输入也就更改了)都会向前流传,并在所有连贯的节点中触发更新。如下图,滑动滑块,会立刻触发右侧节点中后果的更新。 执行流:数据不会在更改时立刻向前流传,而是只会在某个节点申请输入数据时,在受影响的节点中触发更新。另外,作者还给本人列了一个to do list,比方退出语法高亮性能、主动代码补全性能,欠缺视觉体验等等。可视化编程是不是还挺乏味的?不过,作者小哥也指出,可视化编程的目标不是取代文本编程,并且,文本编程中实现的许多工作没有可视化的必要。 对于作者作者 Leon Thomm,目前是苏黎世联邦理工学院的大一学生,自称“业余程序员”,致力于人机交互和可视化编程。依据他的个人简介,早在进入大学前,他曾经具备丰盛的软件开发经验。 传送门_我的项目地址: https://github.com/leon-thomm...https://github.com/leon-thomm... 开源前哨 日常分享热门、乏味和实用的开源我的项目。参加保护 10万+ Star 的开源技术资源库,包含:Python、Java、C/C++、Go、JS、CSS、Node.js、PHP、.NET 等。

January 25, 2021 · 1 min · jiezi

关于ide:Cloud-IDE-Theia-插件系统拓展探索

Theia 插件零碎性能十分弱小,这么大的工程,仍然能放弃高质量的代码和清晰的架构,值得思考和学习VSCode Extension API 和配置的定义标准且形象Eclipse Theia 是一个可扩大的平台,能够利用最先进的 Web 技术开发多语言的 Cloud & Desktop IDE。 名词解释Theia:可拓展的 Cloud & Desktop IDE 平台。Theia Extension:Theia 是由一系列 Extension 组成,Extension 提供了解决 widgets, commands, handlers 等的能力,在编译时加载。Theia Plugin:概念上相似于 VSCode Extension,由 Theia 的其中一个 Extension :theia/packages/plugin-ext 定义了 加载机制、运行环境及 API 等。兼容 VSCode Extension ,性能更为弱小,运行时加载。VSCode Extension:VSCode 运行时加载的 extensions,基于 VSCode Extension API 实现,概念上相似于 Theia 的 Plugin,运行时加载。VSCode Extension 能够看成是 Theia Plugin 的子集。Theia Extension 与 Plugin 的界限:外围的、形象的、编译时加载的采纳 Extension;业务的、具体的、运行时加载的采纳 Plugin。 Theia Plugin 类型分为前端和后端(VSCode 只有后端),其中后端运行在独立的插件过程;前端运行在 Web Worker 上,通过 postMessage 和 Browser 主过程通信。这里的 Web Worker 有点像微信小程序架构外面的 App Service。 ...

January 7, 2021 · 7 min · jiezi

关于ide:DIP-依赖倒置原则

简介DIP 依赖倒置准则,高层模块不要依赖低层模块。高层模块和低层模块应该通过形象来相互依赖。除此之外,不要依赖具体实现细节,具体实现细节依赖形象。 程序要依赖于形象接口,不要依赖于具体实现。简略的说就是要求对形象进行编程,不要对实现进行编程,这样就升高了客户与实现模块间的耦合。 如何了解倒置?在面向过程的开发时,为了使得罕用代码能够复用,个别都会把这些罕用代码写成许许多多函数的函数库,这样我在做新我的项目时,去调用这些底层的函数就能够了。比方咱们做的我的项目大多都要拜访数据库,所以咱们就把拜访数据库的代码写成函数,每次新做我的项目时就去调用这些函数。这就交搞成模块依赖低层模块。 问题也就呈现在这里,咱们要做新我的项目时,发现业务逻辑的高层模块都是一样的,但客户却心愿应用不同的数据库或存储信息形式,这时就呈现麻烦了。咱们心愿再次利用这些高层模块,单高层模块都是与低层的拜访数据库绑定在一起的,就没有方法复用高层模块。 依赖倒置的作用依赖倒置准则能够升高类间的耦合性。依赖倒置准则能够进步零碎的稳定性。依赖倒置准则能够缩小并行开发引起的危险。依赖倒置准则能够进步代码的可读性和可维护性。依赖倒置准则的利用上面以“顾客购物程序”为例来阐明依赖倒置准则的利用。 本程序反映了 “顾客类”与“商店类”的关系。商店类中有 sell() 办法,顾客类通过该办法购物以下代码定义了顾客类通过张三网店 ZhangsanShop 购物: class Customer { public void shopping(ZhangsanShop shop) { // 购物 System.out.println(shop.sell()); }} 然而,这种设计存在毛病,如果该顾客想从另外一家商店(如李四店 LisiShop)购物,就要将该顾客的代码批改如下: class Customer{ public void shopping(LisiShop shop){ //购物 System.out.println(shop.sell()); }} 顾客每更换一家商店,都要批改一次代码,这显著违反了开闭准则。存在以上毛病的起因是:顾客类设计时同具体的商店类绑定了,这违反了依赖倒置准则。 解决办法定义“张三网店”和“李四网店”的独特接口 Shop,顾客类面向该接口编程,其代码批改如下: class Customer{ public void shopping(Shop shop){ //购物 System.out.println(shop.sell()); }}这样,不论顾客类 Customer 拜访什么商店,或者减少新的商店,都不须要批改原有代码了. 开源我的项目举荐SCHEDULE-BILIBILI 只有 Js 无能点啥,JS 和 Github Actions 实现哔哩哔哩每日主动签到、投币、支付处分。???? ???? awesome-IntelliJ-IDEA 这可能是全网最全的 IDEA 我的项目资源吧。???? ????

December 31, 2020 · 1 min · jiezi

关于ide:Intellij-IDEA-教程合集

<p align="center"> <img width="250px" src="https://gitee.com/xiaoxiunique/picgo-image/raw/master/atips/awesome-idea-no-text.svg"></p> 用爬虫在全网范畴内检索 Intellij IDEA 的优良文章,聚合在此。平台包含 「CSDN」「掘金」「简书」「知乎」「SegmentFault」「博客园」「开源中国」「慕课手记」,置信无论你对 Intellij IDEA 目前理解到什么水平,这个合集都能帮到你。 文末有不可形容的内容 ???????????? 知乎话题IntelliJ IDEA 中有什么让你相见恨晚的技巧? 浏览量:707,317相比 Eclipse,IntelliJ IDEA 有哪些更强的劣势或应用技巧? 浏览量:346878公司不让用IDEA,必须要用eclipse。大神们怎么对待这个强制规定? 浏览量:936885IntelliJ IDEA 如何学习? 浏览量: 199277自学Java用IDEA真的是在作吗?抉择IDEA还是Eclipse? 浏览量:42653装置WINDOWS平台下IDEA的装置和配置 浏览量: 1244 点赞量: 14JDK 与 IntelliJ IDEA 装置图文教程 浏览量: 9777 点赞量: 11【IntelliJ IDEA学习---二、IntelliJ IDEA的装置与破解(Mac版本)】 浏览量: 10635 点赞量: 6Java笔记1:IntelliJ IDEA具体装置步骤 浏览量:191195IDEA装置教程(多图预警) 浏览量:89681【2020】明哥版-Windows/MAC-IntelliJ IDEA最新版装置GIF图解教程 浏览量:15912设置IDEA——最全配置 浏览量:88438IDEA类和办法正文模板设置(十分具体) 浏览量:455363设置 IntelliJ IDEA 主题和字体的办法 浏览量:374900「硬核干货」总结 IDEA 开发的26个罕用设置 like: 72IDEA应用总结 like: 51IntelliJ IDEA设置JVM运行参数 浏览量:175305intellij idea设置主题、字体款式和背景色 浏览量:163813IntelliJ IDEA 设置编码为utf-8编码 浏览量:130940IntelliJ IDEA 设置Terminal 窗口字体大小 浏览量:42092idea设置live template代码模板 浏览量:33562Intellij IDEA设置HTTP Proxy 浏览量:12758idea设置maven配置文件setting.xml的地位 浏览量:72849插件第一弹!安顿!安利10个让你爽到爆的IDEA必备插件!Java程序员必备的Intellij插件(长期更新,截止到2018-05-03)Java效率工具之Intellij IDEA我收藏的神兵利器 - 效率工具我罕用的IDEA插件大公开,个个是精品!10个 解放双手的 IDEA 插件,能主动生成的绝不手写IntelliJ IDEA 罕用插件一览,让效率成为习惯 like: 173Java开发晋升十倍生产力:Idea近程一键部署springboot到Docker like: 127EasyCode — 基于 IntelliJ IDEA 开发的代码生成插件 like: 119Java开发必装的IntelliJ IDEA插件 like: 112IntelliJ IDEA 18 周岁,吐血推动收藏已久的必装插件 like: 96我在 IntelliJ IDEA 中必有得插件和配置 like: 77IntelliJ IDEA装置应用PlantUML插件 浏览量: 19582 点赞量: 11Git过来人通知你,去工作前最好还是学学Git like: 199对于git你日常工作中会用到的一些货色 like: 177三年 Git 应用心得 & 常见问题整顿 like: 1483最常见的 Git 问题和操作清单汇总 like: 644超详实Git扼要教程与命令大全 like: 562[字节研发设施下的 Git 工作流]() like: 487Git应用教程:最具体、最傻瓜、最通俗、真正手把手教! like: 437[通过 41 个 问答形式疾速理解学习 Git]() like: 420你确定你能记住那么多的git命令吗?快试试Sourcetree吧 like: 387「备忘录」60+Git常用命令行 like: 304Git如何回滚一次谬误的合并 like: 250你可能会疏忽的 Git 提交标准 like: 220SVNIntelliJ IDEA 下的svn配置及应用的十分具体的图文总结 浏览量:317427技巧IDEA 鲜为人知的 5 个骚技巧!真香! like: 121Intellij IDEA神器竟然还有这些小技巧 like: 84[动图展现 IDEA 2020 新个性(1)]() like: 466 个收藏已久 IDEA 小技巧,这一波全副分享给你! like: 34IDEA 小技巧之书签与珍藏 like: 14IDEA中编写并运行shell脚本 浏览量:52775快捷键十大Intellij IDEA快捷键 浏览量:635923Idea快捷键大全(Windows) 浏览量:215045idea批改快捷键办法总结 浏览量:179768史上最全的IDEA快捷键总结 浏览量:177429IntelliJ IDEA增加正文罕用的快捷键 浏览量:172638Mac下IntelliJ IDEA快捷键大全 浏览量:76921IDEA for mac 快捷键 浏览量:60544IntelliJ IDEA 罕用快捷键 之 Mac 版 浏览量:48087IntelliJ IDEA设置快捷键为Eclipse格调 浏览量:22034JavaIntelliJ IDEA 如何创立一个一般的 Java 我的项目,及创立 Java 文件并运行 浏览量:185371【IDEA】向IntelliJ IDEA创立的我的项目导入Jar包的两种形式 浏览量:146782IntelliJ IDEA 创立 hello world Java web Maven我的项目从头到尾都有图有假相2017版本 浏览量:68686详尽图文,用Intellij Idea创立一个一般的Java工程并用JDBC连贯数据库 浏览量:32316应用IntelliJ IDEA,gradle开发Java web利用步骤 浏览量:11209Debugidea近程调试,一个用上就被老大褒扬的黑科技 like: 71举个小栗子????IDEA近程Debug及应用场景 like: 12IDEA中如何应用debug调试我的项目 一步一步具体教程 浏览量:211593Intellij IDEA 2017 debug断点调试技巧与总结详解篇 浏览量:241596IDEA debug提醒Connected to the target VM, address: '127.0.0.1:xxxxx', transport: 'socket'的起因 浏览量:166002Intellij IDEA Debug调试技巧 浏览量:121398idea debug 无奈启动我的项目解决 Unable to open debugger port (127.0.0.1:50812) 浏览量:41242新版本[IntelliJ IDEA 2020.3正式公布,年度最初一个版本很讲武德]() like: 8IntelliJ IDEA 2020.1正式公布,你要的Almost都在这! 浏览量:36378IntelliJ IDEA 2020.1 正式公布,15 项重大个性、官网反对中文了! | 原力打算 浏览量:10286IDEA 2020最新版本 浏览量:12042idea系列之-2019.3版本新个性及装置一 浏览量:23330IDEA:Debug应用详解(含2018版个性) 浏览量:26645Intellij IDEA神器罕用技巧八-2018版本新增快捷键 浏览量:3667Intellij IDEA 2017新个性之Spring Boot相干 浏览量:13922微服务一键部署 Spring Boot 到近程 Docker 容器,就是这么秀! like: 72应用IntelliJ IDEA 搭建 spring mvc开发环境 like: 40教程网站IntelliJ IDEA应用教程how2j多光标教学IntelliJ-IDEA-TutorialPOJIE你懂的。。。???????????? ...

December 31, 2020 · 2 min · jiezi

关于ide:CloudIDE插件在手按时下班不愁

摘要:带你通过插件机制将CloudIDE扩大出你想要的性能,在CloudIDE中看视频,玩游戏,聊天都能够通过咱们的插件来轻松实现,让生产工具不再干燥,开发工作多姿多彩。间隔华为云CloudIDE在3月份HDC推出曾经过来大半年工夫,运行在网页上的集成开发环境带来了全新的开发体验,作为一名开发者,在CloudIDE上工作了一段时间之后是不是就想给本人的工作环境加点不一样的性能?接下来的教程将带你通过插件机制将CloudIDE扩大出你想要的性能,在CloudIDE中看视频,玩游戏,聊天都能够通过咱们的插件来轻松实现,让生产工具不再干燥,开发工作多姿多彩。 如果你有好的创意也能够将它变成插件共享到插件市场,让其余开发者一起来体验,帮忙你改良,接下来就让咱们进入CloudIDE插件开发的实战中来。 一.创立第一个CloudIDE插件 华为云CloudIDE的插件开发能够齐全在CloudIDE上进行,不须要本地装置任何软件,所以第一步咱们能够先申请一个CloudIDE实例作为咱们的开发环境(_不想看文字的读者能够间接参考动图进行环境创立_)。 通过https://ide.huaweicloud.com进...,点击"立刻体验"进入控制台,作为开发环境的实例须要永恒保留咱们的插件代码和开发环境配置,点击"新建实例"来创立一个永恒实例。 因为插件的开发须要应用Node.JS,所以咱们的技术栈能够抉择"All in One"或者"Node.JS",点击下一步, 在工程配置中咱们抉择不创立工程,CloudIDE目前反对在IDE实例中创立我的项目,不须要通过导入样例工程的形式来导入代码。点击确定便实现了一个CloudIDE实例的创立,创立胜利后会主动启动并进入实例。 进入实例之后咱们能够开始插件我的项目的创立,分为如下步骤: 1) 点击File->New Project,弹出新建我的项目页面。2) 抉择Plugin我的项目类型来创立插件我的项目。3) 填写插件的相干信息,这边一一解释下每个选项的含意和作用Type: 抉择须要创立的插件类型。 ⇨ Generic: 带有前后端的通用插件我的项目,前端能够反对html或者模板来编写,适宜须要高度定制化界面的插件编写; ⇨ Backend: 我的项目自身不带有前端页面,须要应用CloudIDE已有的界面扩大点来实现前端。 Path:抉择插件我的项目须要寄存的门路。 Name:插件的名称,插件我的项目的目录与之同名。 Publisher:插件发布者,默认主动获取华为云账户名。 Author:插件作者,默认主动获取华为云账户名。 License:抉择插件我的项目源码的License,选项默认反对MIT和BSD,能够主动生成LICENSE申明,如果自定义其余的LICENSE须要自行补充申明。 Version:插件的第一个版本号,倡议应用0.0.1这种版本格局。 Description:插件的详细描述。 Engine: 渲染html须要应用的模板引擎。 Git-Init:是否将新建的我的项目初始化成一个git仓库。 4) 点击“Create”新建插件我的项目。二.插件打包装置 插件我的项目能够通过执行npm run pack进行打包,目前有两种形式能够执行该命令 形式一: 右键点击Explorer的NPM SCRIPTS中的pack命令。抉择run,执行打包运行实现能够看到我的项目根目录呈现打包进去的以'.cloudide'为结尾的插件安装包形式二: 点击Termianl->New Terminal新建一个termianl在命令行中输出'npm run pack',执行打包运行实现能够看到我的项目根目录呈现打包进去的以'.cloudide'为结尾的插件安装包三.测试插件成果 打包进去的插件安装包能够在间接在通过右键菜单进行装置,右键点击打包出的'.cloudide'插件包,抉择'Install Plugin',插件装置实现之后将主动激活。 本文分享自华为云社区《实战CloudIDE插件开发-疾速上手》,原文作者:克劳德爱第一。点击关注,第一工夫理解华为云陈腐技术~

December 7, 2020 · 1 min · jiezi

关于ide:TopTipsPostMan-小技巧-你知道了觉得很简单但你不点进来你永远都不知道

一键导入申请将任意网页的异步申请导入到 Postman 中,关上一个网页 进入 Network 中,点击 XHR 右键申请 Copy -> Copy as cURL 进入 Postman 中,点击 Import 抉择 RawText 点击 Continue. 就这样一个申请就导入到 Postman 中了,间接点击 Send 便能够失去 和 网页截然不同的后果 生成申请代码 点击对应申请 Code 处,就能够生成对应申请的 各种代码申请片段 CURLDart - httpGo - NativeHTTPJava - OkHttpJava - UnirestJavaScript - FetchJavaScript - JqueryJavaScript - XHRNodeJs - AxiosNodeJs - Native间接将对应的代码 Copy 至开发环境中就能够运行。 申请体格式化 点击 Beautify 按钮,对申请体进行格式化。 获取返回内容设置 Token // 冀望接口的响应速度在 200ms 内。pm.test("Response time is less than 200ms", function () { pm.expect(pm.response.responseTime).to.be.below(200);});// 设置 Token 在全局环境变量中var data = JSON.parse(responseBody);pm.environment.set("token", data.data.token);pm.test("Successful POST request", function () { pm.expect(pm.response.code).to.be.oneOf([201,202, 200]);});本文由博客群发一文多发等经营工具平台 OpenWrite 公布

December 1, 2020 · 1 min · jiezi

关于ide:Charles-应用通过-Charles-分析社区消息系统

背景参考市面上雷同维度的 App 产品,蔚来 现实,对其音讯零碎进行抓包剖析。失去比拟适宜咱们本人的音讯零碎设计。 现实 ONE 现实的音讯零碎设计师一种集中式的设计,将所有的音讯集中管理,评论、赞、告诉、私信、车辆。 在音讯核心拉去告诉类音讯 对接口进行抓包如下。 https://api-app.lixiang.com/mms-api/v1-0/message?status=3&pageNumber=0&appId=chj_app_m01&channelType=1&pageSize=20&category=notice接口设计上 通过 category 来辨别是哪个渠道上的音讯,当初咱们申请的是告诉 类型的音讯,所以 category 为 notice。 接口的响应参数如下 { "success": true, "code": 0, "msg": "SUCCESS", "data": { "pageSize": 20, "pageNumber": 0, "numberOfElements": 1, "totalPages": 1, "totalElements": 1, "elements": [{ "requestId": "rC21P1A80H2DJJQIGR00", "messageId": "C21P1A80H2DJJQIGR0000000", "appId": "chj_app_m01", "recipient": "3250332467430584322", "sender": null, "title": "现实社区用户公约(试行)", "summary": "敬爱的现实用户,为了保护社群的实在,敌对的气氛,咱们制订了现实的社群标准。", "contentId": null, "action": "{\"accountId\":0,\"avatar\":\"\",\"comment\":\"\",\"commentId\":0,\"commentType\":1,\"createTime\":1598072448536,\"level\":1,\"messageType\":\"notice\",\"nickName\":\"\",\"productId\":754,\"surfacePlot\":\"https://p.ampmake.com/lixiangzhizao_app/pc_push_system/787334842102195.jpg\",\"type\":1}", "tag": ["[Ljava.lang.String;@474616fd"], "category": "notice", "status": 1, "encryption": null, "sendOn": 1598072449000, "receiveOn": 0, "createdOn": 1598072448000, "updatedOn": 1599009229000 }] }}咱们将返回值和界面放在一起比照一下 ...

December 1, 2020 · 1 min · jiezi

关于ide:Charles-应用通过-Charles-分析社区话题功能

背景App 目前没有经营疏导工具对用户内容进行正当疏导,须要减少话题经营工具。提供 App 社区内容品质和每天 UGC 量级。 参考社区帖子增加标签是一个很罕用的性能,大部分的社区 App 都有实现,诸如 微博,豆瓣,Oppo社区,现实,蔚来。真正在进入此需要之前,最好理解下相干平台的产品。 以上别离是 豆瓣、蔚来、Oppo社区、现实汽车 的 Tag 展现计划。 Tag 能够反对一个或者多个开始抓包 剖析接口 前面所贴出的 返回后果针对 Topic 局部JSON, 其余局部省略。 豆瓣 豆瓣列表 展现 { "topic_label_bg_color":"#F7F7F7", "topic_label_bg_img":"", "name":"读书时写的乏味批注", "topic_icon_large":"", "url":"https://www.douban.com/gallery/topic/164512/", "uri":"douban://douban.com/gallery/topic/164512", "topic_icon":"", "topic_label_hashtag_color":"#5DC66F", "topic_label_text_color":"#39A94C", "type":"gallery_topic", "id":"164512"}豆瓣主题详情 { "subscription_count": 1267, "creator": null, "is_subscribed": false, "invite_type": "", "screenshot_title": "分享海报", "screenshot_url": "douban://partial.douban.com/screenshot/gallery/topic/164512/_content", "guests": [], "card_subtitle": "88篇内容・164.1万次浏览", "screenshot_type": "rexxar", "id": "164512", "is_closed": false, "focused_subject": null, "topic_label_bg_color": "#F7F7F7", "topic_label_bg_img": "", "has_create_button": true, "group": null, "topic_tabs": [], "post_count": 88, "name": "读书时写的乏味批注", "label": "", "topic_label_hashtag_color": "#5DC66F", "ad_monitor_urls": [], "is_ad": false, "unpublic_reason": "", "participant_count": 92, "tags": [], "subject_card": null, "cover_url": "", "introduction": "明天重翻了我从前看的书,对于本人写的批注感到好笑,尽管很多是无厘头的碎碎念,但也很乏味不是么?让我看看你们写的吧,一起分享这高兴!", "content_type": 6, "is_public": true, "topic_label_text_color": "#39A94C", "sharing_url": "https://www.douban.com/doubanapp/dispatch?uri=/gallery/topic/164512/", "wechat_timeline_share": "url", "topic_icon_large": "", "click_track_urls": [], "uri": "douban://douban.com/gallery/topic/164512", "create_button_text": "", "topic_icon": "", "mask_color": "", "mask_type": ""}外围信息:类型、跳转地址、名称、文字背景色、文字色彩、文字背景图片、图标,形容,文章公布数 ...

December 1, 2020 · 2 min · jiezi

关于ide:扫盲数据结构-堆入门

什么是堆堆是一颗【齐全二叉树】堆的所有【根节点】“大于”【子节点】这里的大于是能够定义的。 <img src="https://gitee.com/xiaoxiunique/picgo-image/raw/master/atips/image-20200318211957067.png" alt="image-20200318211957067" style="zoom:50%;" /> 上图所示,都是满足堆上方的性质,一颗齐全二叉树,所有的根节点大于子节点 上方展现的为最大堆(相应的也能够定义最小堆) 应用数组示意 <img src="https://gitee.com/xiaoxiunique/picgo-image/raw/master/atips/image-20200318212734956.png" alt="image-20200318212734956" style="zoom:50%;" /> 因为堆满足齐全二叉树的定义,所以堆能够应用数组来示意【上图所示】。 由上图得在 index 地位上的节点能够推倒出如下公式 parent(i) = i / 2 left child (i) = 2 * i right child (i) = 2 * i + 1 然而在上图中,其实是节约了数组的零号地位,如果元素从0号地位排将会是上面的构造 <img src="https://gitee.com/xiaoxiunique/picgo-image/raw/master/atips/image-20200318213435336.png" alt="image-20200318213435336" style="zoom:50%;" /> 由上图能够推倒公式为: parent(i) = (i - 1) / 2 left child (i) = 2 * i + 1 right child (i) = 2 * i + 2 ...

November 30, 2020 · 1 min · jiezi

关于ide:扫盲数据结构-二叉树入门

什么是二叉树有一个根节点 向下扩大两个子节点 两个子节点又能够向下扩大。相似于这样的构造成为二叉树 <img src="https://gitee.com/xiaoxiunique/picgo-image/raw/master/atips/image-20200318164309773.png" alt="image-20200318164309773" style="zoom:50%;" /> 下面这种就够就是二叉树,当然有二叉树就有三叉树、四叉树。 <img src="https://gitee.com/xiaoxiunique/picgo-image/raw/master/atips/image-20200318164534883.png" alt="image-20200318164534883" style="zoom:50%;" /> 树中相应节点的概念<img src="https://gitee.com/xiaoxiunique/picgo-image/raw/master/atips/image-20200318165011873.png" alt="image-20200318165011873" style="zoom:50%;" /> A 节点是 B 节点的【父节点】B 节点是 A 节点的【子节点】B、C、D 这三个节点的父亲节点是同一个节点,所以他们之间互称为【兄弟节点】E 节点没有父亲节点,所以咱们把它称为【根节点】G、H、I、J、K、L 没有子节点,所以咱们把它称为【叶子节点】节点的高度:节点到叶子节点的最长门路节点的深度:根节点到这个节点所经验的节点个数节点的层数:节点的深度 + 1二叉树的品种在二叉树之上,具备各种各样的其余属性,就会衍生出其余的树结构。 满二叉树<img src="https://gitee.com/xiaoxiunique/picgo-image/raw/master/atips/image-20200318170240608.png" alt="image-20200318170240608" style="zoom:50%;" /> 叶子节点全都在最底层,除叶子节点外,每个节点都有两个子节点,这种二叉树叫做【满二叉树】。 齐全二叉树<img src="https://gitee.com/xiaoxiunique/picgo-image/raw/master/atips/image-20200318170532465.png" alt="image-20200318170532465" style="zoom:50%;" /> 叶子节点都在最底下两层,最初一次的叶子节点都靠左排列,并且除了最初一层,其余层的节点个数都要达到最大,这种二叉树叫做【齐全二叉树】 二分搜寻树<img src="https://gitee.com/xiaoxiunique/picgo-image/raw/master/atips/image-20200318171007366.png" alt="image-20200318171007366" style="zoom:50%;" /> 若任意节点的左子树不为空,则左子树上所有节点的值均小于它的根节点的值; 若任意节点的右子树不为空,则右子树上所有节点的值均大于或等于它的根节点的值; 任何左子树或右子树也都为二分搜寻树。 堆<img src="https://gitee.com/xiaoxiunique/picgo-image/raw/master/atips/image-20200318195545250.png" alt="image-20200318195545250" style="zoom:50%;" /> 堆就是用数组实现的二叉树,所以它没有应用父指针或子指针。堆依据堆属性来排序。 堆的罕用办法 构建优先队列、反对堆排序、反对找出一个汇合中最小值(或者最大值) 堆分为两种:最大堆和最小堆,两者的差异在于节点的排序形式。 在最大堆中,父节点的值每一个子节点的值都要大。在最小堆中,父节点的值比每一个子节点的值都要小。这就是所谓的“堆属性”,并且这个属性对堆中的每一个节点都成立。 AVL红黑树线段树字典树并查集树的遍历前序 根左右中序 左根有后序 左右根DFS 深度优先遍历 代码模板(递归写法) visited = set() def dfs(node, visited): if node in visited: # terminator # already visited return visited.add(node) # process current node here. ... for next_node in node.children(): if next_node not in visited: dfs(next_node, visited)非递归写法 ...

November 30, 2020 · 1 min · jiezi

关于ide:为了学会-Charles我拼命了

简介Charles 是在 PC 端罕用的网络封包截取工具,在做挪动开发时,咱们为了调试与服务器端的网络通讯协定,经常须要截取网络封包来剖析。除了在做挪动开发中调试端口外,Charles 也能够用于剖析第三方利用的通信协定。配合 Charles 的 SSL 性能,Charles 还能够剖析 Https 协定。 Charles 通过将本人设置成零碎的网络拜访代理服务器,使得所有的网络拜访申请都通过它来实现,从而实现了网络封包的截取和剖析。 Charles 次要的性能包含: 截取 Http 和 Https 网络封包。反对重发网络申请,不便后端调试。反对批改网络申请参数。反对网络申请的截获并动静批改。反对模仿慢速网络。同类型的工具还有 赫赫有名的 Fidder 应用背景在与公司 App 端????共事 调试接口 时,有的时候可能会呈现一些十分 莫名其妙 的问题。有的时候可能难以定位这个问题到底是属于前端展现 Bug 还是说接口 数据异样。 通常这个时候,可能后端就须要去服务端看日志 而后联合日志数据进行排查。然而限于工具 网络等等简单的状况,这样的形式其实真的蛮低效的。 这个时候就须要这样的一个工具,能够实时的看运行 App 的接口返回状况。联合前端 视图 展现,能在很短的工夫内找到问题呈现的起因。这样就能够疾速的修复问题了。 下载、破解官网下载地址。 地址 Charles 是免费软件,能够收费试用 30 天。试用期过后,未付费的用户依然能够持续应用,然而每次应用工夫不能超过 30 分钟,并且启动时将会有 10 秒种的延时。因而,该付费计划对宽广用户还是相当敌对的,即便你长期不付费,也能应用残缺的软件性能。 然而,我抉择破解 ????,我用 Charles 是来晋升排查问题的工夫的。后果你给我搞这些货色 我就受不了了。。。。次要还是破解比拟容易 ????。哈哈哈哈 破解网站 抉择以后 本人的版本 下载一个 Jar 包就能够了。 Charles 配置当 Charles 装置好之后,这个时候就能够抓取 Http 的包了,然而咱们为 App 提供的接口 个别都是 Https 的。所以咱们须要装置证书。 ...

November 30, 2020 · 1 min · jiezi

关于ide:IntelliJ-IDEA-常用快捷键

说IDEA对老手来说难,可能其中一个起因就是快捷键组合多而且简单然而它也很全,根本所有性能都能够通过快捷键来实现,能够这么说,如果你把握了所有IDEA的快捷键应用,那么你齐全能够丢掉鼠标,而且不影响开发效率。 ????一、Ctrl 快捷键Ctrl + F 在以后文件进行文本查找 (必备)Ctrl + R 在以后文件进行文本替换 (必备)Ctrl + Z 撤销 (必备)Ctrl + Y 删除光标所在行 或 删除选中的行 (必备)Ctrl + X 剪切光标所在行 或 剪切抉择内容Ctrl + C 复制光标所在行 或 复制抉择内容Ctrl + D 复制光标所在行 或 复制抉择内容,并把复制内容插入光标地位上面 (必备)Ctrl + W 递进式抉择代码块。可选中光标所在的单词或段落,间断按会在原有选中的根底上再扩大选中范畴(必备)Ctrl + E 显示最近关上的文件记录列表 (必备)Ctrl + N 依据输出的 名/类名 查找类文件 (必备)Ctrl + G 在以后文件跳转到指定行处Ctrl + J 插入自定义动静代码模板 (必备)Ctrl + P 办法参数提醒显示 (必备)Ctrl + Q 光标所在的变量 / 类名 / 办法名等下面(也能够在提醒补充的时候按),显示文档内容Ctrl + U 返回以后光标所在的办法的父类的办法 / 接口定义 (必备)Ctrl + B 进入光标所在的办法/变量的接口或是定义处,等效于 Ctrl + 左键单击 (必备)Ctrl + K 版本控制提交我的项目,须要此我的项目有退出到版本控制才可用Ctrl + T 版本控制更新我的项目,须要此我的项目有退出到版本控制才可用Ctrl + H 显示以后类的层次结构Ctrl + O 抉择可重写的办法Ctrl + I 抉择可继承的办法Ctrl + + 开展代码Ctrl + - 折叠代码Ctrl + / 释光标所在行代码,会依据以后不同文件类型应用不同的正文符号 (必备)Ctrl + [ 挪动光标到以后所在代码的花括号开始地位Ctrl + ] 挪动光标到以后所在代码的花括号完结地位Ctrl + F1 在光标所在的错误代码处显示错误信息 (必备)Ctrl + F3 调转到所选中的词的下一个援用地位 (必备)Ctrl + F4 敞开以后编辑文件Ctrl + F8 在 Debug 模式下,设置光标以后行为断点,如果以后曾经是断点则去掉断点Ctrl + F9 执行 Make Project 操作Ctrl + F11 选中文件 / 文件夹,应用助记符设定 / 勾销书签 (必备)Ctrl + F12 弹出以后文件结构层,能够在弹出的层上间接输出,进行筛选Ctrl + Tab 编辑窗口切换,如果在切换的过程又加按上 delete,则是敞开对应选中的窗口Ctrl + End 跳到文件尾Ctrl + Home 跳到文件头Ctrl + Space 根底代码补全,默认在 Windows 零碎上被输入法占用,须要进行批改,倡议批改为 Ctrl +逗号 (必备)Ctrl + Delete 删除光标前面的单词或是中文句 (必备)Ctrl +BackSpace 删除光标后面的单词或是中文句 (必备)Ctrl +1,2,3...9 定位到对应数值的书签地位 (必备)Ctrl + 左键单击 在关上的文件题目上,弹出该文件门路 (必备)Ctrl + 光标定位按 Ctrl 不要松开,会显示光标所在的类信息摘要Ctrl + 左方向键 光标跳转到以后单词 / 中文句的左侧结尾地位 (必备)Ctrl + 右方向键 光标跳转到以后单词 / 中文句的右侧结尾地位 (必备)Ctrl + 前方向键 等效于鼠标滚轮向前成果 (必备)Ctrl + 后方向键 等效于鼠标滚轮向后成果 (必备)????二、Alt 快捷键Alt + ` 显示版本控制罕用操作菜单弹出层 (必备)Alt + Q 弹出一个提醒,显示以后类的申明 / 上下文信息Alt + F1 显示以后文件抉择指标弹出层,弹出层中有很多指标能够进行抉择 (必备)Alt + F2 对于后面页面,显示各类浏览器关上指标抉择弹出层Alt + F3 选中文本,一一往下查找雷同文本,并高亮显示Alt + F7 查找光标所在的办法 / 变量 / 类被调用的中央Alt + F8 在 Debug 的状态下,选中对象,弹出可输出计算表达式调试框,查看该输出内容的调试后果Alt + Home 定位 / 显示到以后文件的 Navigation BarAlt + Enter IntelliJ IDEA 依据光标所在问题,提供疾速修复抉择,光标放在的地位不同提醒的后果也不同 (必备)Alt + Insert 代码主动生成,如生成对象的 set / get 办法,构造函数,toString() 等 (必备)Alt + 左方向键 切换以后已关上的窗口中的子视图,比方 Debug 窗口中有 Output、Debugger 等子视图,用此快捷键就能够在子视图中切换 (必备)Alt + 右方向键 按切换以后已关上的窗口中的子视图,比方 Debug 窗口中有 Output、Debugger 等子视图,用此快捷键就能够在子视图中切换 (必备)Alt + 前方向键 以后光标跳转到以后文件的前一个办法名地位 (必备)Alt + 后方向键 以后光标跳转到以后文件的后一个办法名地位 (必备)Alt +1,2,3...9 显示对应数值的选项卡,其中 1 是 Project 用得最多 (必备)????三、Shift 快捷键Shift + F1 如果有内部文档能够连贯内部文档Shift + F2 跳转到上一个高亮谬误 或 正告地位Shift + F3 在查找模式下,查找匹配上一个Shift + F4 对以后关上的文件,应用新 Windows 窗口关上,旧窗口保留Shift + F6 对文件 / 文件夹 重命名Shift + F7 在 Debug 模式下,智能步入。断点所在行上有多个办法调用,会弹出进入哪个办法Shift + F8 在 Debug 模式下,跳出,体现进去的成果跟 F9 一样Shift + F9 等效于点击工具栏的 Debug 按钮Shift + F10 等效于点击工具栏的 Run 按钮Shift + F11 弹出书签显示层 (必备)Shift + Tab 勾销缩进 (必备)Shift + ESC 暗藏以后 或 最初一个激活的工具窗口Shift + End 选中光标到以后行尾地位Shift + Home 选中光标到以后行头地位Shift + Enter 开始新一行。光标所在行下空出一行,光标定位到新行地位 (必备)Shift + 左键单击 在关上的文件名上按此快捷键,能够敞开以后关上文件 (必备)Shift + 滚轮前后滚动 以后文件的横向滚动轴滚动 (必备)????四、Ctrl + Alt 快捷键Ctrl + Alt + L 格式化代码,能够对以后文件和整个包目录应用 (必备)Ctrl + Alt + O 优化导入的类,能够对以后文件和整个包目录应用 (必备)Ctrl + Alt + I 光标所在行 或 选中局部进行主动代码缩进,有点相似格式化Ctrl + Alt + T 对选中的代码弹出盘绕选项弹出层 (必备)Ctrl + Alt + J 弹出模板抉择窗口,将选定的代码退出动静模板中Ctrl + Alt + H 调用档次Ctrl + Alt + B 在某个调用的办法名上应用会跳到具体的实现处,能够跳过接口Ctrl + Alt + V 疾速引进变量Ctrl + Alt + Y 同步、刷新Ctrl + Alt + S 关上 IntelliJ IDEA 零碎设置 (必备)Ctrl + Alt + F7 显示应用的中央。寻找被该类或是变量被调用的中央,用弹出框的形式找进去Ctrl + Alt + F11 切换全屏模式Ctrl + Alt + Enter 光标所在行上空出一行,光标定位到新行 (必备)Ctrl + Alt + Home 弹出跟以后文件有关联的文件弹出层Ctrl + Alt + Space 类名主动实现Ctrl + Alt + 左方向键 退回到上一个操作的中央 (必备)Ctrl + Alt + 右方向键 后退到上一个操作的中央 (必备)Ctrl + Alt + 前方向键 在查找模式下,跳到上个查找的文件Ctrl + Alt + 后方向键 在查找模式下,跳到下个查找的文件????五、Ctrl + Shift 快捷键Ctrl + Shift + F 依据输出内容查找整个我的项目 或 指定目录内文件 (必备)Ctrl + Shift + R 依据输出内容替换对应内容,范畴为整个我的项目 或 指定目录内文件 (必备)Ctrl + Shift + J 主动将下一行合并到以后行开端 (必备)Ctrl + Shift + Z 勾销撤销 (必备)Ctrl + Shift + W 递进式勾销抉择代码块。可选中光标所在的单词或段落,间断按会在原有选中的根底上再扩大勾销选中范畴 (必备)Ctrl + Shift + N 通过文件名定位 / 关上文件 / 目录,关上目录须要在输出的内容前面多加一个正斜杠 (必备)Ctrl + Shift + U 对选中的代码进行大 / 小写轮流转换 (必备)Ctrl + Shift + T 对以后类生成单元测试类,如果曾经存在的单元测试类则能够进行抉择 (必备)Ctrl + Shift + C 复制以后文件磁盘门路到剪贴板 (必备)Ctrl + Shift + V 弹出缓存的最近拷贝的内容管理器弹出层Ctrl + Shift + E 显示最近批改的文件列表的弹出层Ctrl + Shift + H 显示办法层次结构Ctrl + Shift + B 跳转到类型申明处 (必备)Ctrl + Shift + I 疾速查看光标所在的办法 或 类的定义Ctrl + Shift + A 查找动作 / 设置Ctrl + Shift + / 代码块正文 (必备)Ctrl + Shift + [ 选中从光标所在位置到它的顶部中括号地位 (必备)Ctrl + Shift + ] 选中从光标所在位置到它的底部中括号地位 (必备)Ctrl + Shift + + 开展所有代码 (必备)Ctrl + Shift + - 折叠所有代码 (必备)Ctrl + Shift + F7 高亮显示所有该选中文本,按 Esc 高亮隐没 (必备)Ctrl + Shift + F8 在 Debug 模式下,指定断点进入条件Ctrl + Shift + F9 编译选中的文件 / 包 / ModuleCtrl + Shift + F12 编辑器最大化 (必备)Ctrl + Shift + Space 智能代码提醒Ctrl + Shift + Enter 主动完结代码,行末主动增加分号 (必备)Ctrl + Shift +Backspace 退回到上次批改的中央 (必备)Ctrl + Shift +1,2,3...9 疾速增加指定数值的书签 (必备)Ctrl + Shift + 左键单击 把光标放在某个类变量上,按此快捷键能够间接定位到该类中 (必备)Ctrl + Shift + 左方向键 在代码文件上,光标跳转到以后单词 / 中文句的左侧结尾地位,同时选中该单词 / 中文句(必备) Ctrl + Shift + 右方向键 在代码文件上,光标跳转到以后单词 / 中文句的右侧结尾地位,同时选中该单词 / 中文句(必备)Ctrl + Shift + 前方向键 光标放在办法名上,将办法挪动到上一个办法后面,调整办法排序 (必备)Ctrl + Shift + 后方向键 光标放在办法名上,将办法挪动到下一个办法后面,调整办法排序 (必备)????六、Alt + Shift 快捷键Alt + Shift + N 抉择 / 增加 task (必备)Alt + Shift + F 显示增加到收藏夹弹出层 / 增加到收藏夹Alt + Shift + C 查看最近操作我的项目的变动状况列表Alt + Shift + I 查看我的项目以后文件Alt + Shift + F7在 Debug 模式下,下一步,进入以后办法体内,如果办法体还有办法,则会进入该内嵌的办法中,依此循环进入Alt + Shift + F9 弹出 Debug 的可抉择菜单Alt + Shift + F10 弹出 Run 的可抉择菜单Alt + Shift + 前方向键 挪动光标所在行向上挪动 (必备)Alt + Shift + 后方向键 挪动光标所在行向下挪动 (必备)Alt + Shift + Insert 列编辑模式切换 (必备)Alt + Shift + 左键双击 按住不放,能够同时抉择其余单词 / 中文句 (必备)Alt + Shift + 左键单击 按住不放,同时设置多个光标 (必备)????七、Ctrl + Shift + Alt 快捷键Ctrl + Shift + Alt + V 无格局黏贴 (必备)Ctrl + Shift + Alt + N 返回指定的变量 / 办法Ctrl + Shift + Alt + S 关上以后我的项目设置 (必备)Ctrl + Shift + Alt + C 复制参考信息????八、其余快捷键F2 跳转到下一个高亮谬误 或 正告地位 (必备)F3 在查找模式下,定位到下一个匹配处F4 编辑源 (必备)F7 在 Debug 模式下,进入下一步,如果以后行断点是一个办法,则进入以后办法体内,如果该办法体还有办法,则不会进入该内嵌的办法中F8 在 Debug 模式下,进入下一步,如果以后行断点是一个办法,则不进入以后办法体内F9 在 Debug 模式下,复原程序运行,然而如果该断点上面代码还有断点则停在下一个断点上F11 增加书签 (必备)F12 回到前一个工具窗口 (必备)Tab缩进 (必备)ESC 从工具窗口进入代码文件窗口 (必备)连按两次Shift 弹出 Search Everywhere 弹出层

November 25, 2020 · 4 min · jiezi

关于ide:Charles-最强技巧

简介Charles 是在 PC 端罕用的网络封包截取工具,在做挪动开发时,咱们为了调试与服务器端的网络通讯协定,经常须要截取网络封包来剖析。除了在做挪动开发中调试端口外,Charles 也能够用于剖析第三方利用的通信协定。配合 Charles 的 SSL 性能,Charles 还能够剖析 Https 协定。 Charles 通过将本人设置成零碎的网络拜访代理服务器,使得所有的网络拜访申请都通过它来实现,从而实现了网络封包的截取和剖析。 Charles 次要的性能包含: 截取 Http 和 Https 网络封包。反对重发网络申请,不便后端调试。反对批改网络申请参数。反对网络申请的截获并动静批改。反对模仿慢速网络。同类型的工具还有 赫赫有名的 Fidder 应用背景在与公司 App 端????共事 调试接口 时,有的时候可能会呈现一些十分 莫名其妙 的问题。有的时候可能难以定位这个问题到底是属于前端展现 Bug 还是说接口 数据异样。 通常这个时候,可能后端就须要去服务端看日志 而后联合日志数据进行排查。然而限于工具 网络等等简单的状况,这样的形式其实真的蛮低效的。 这个时候就须要这样的一个工具,能够实时的看运行 App 的接口返回状况。联合前端 视图 展现,能在很短的工夫内找到问题呈现的起因。这样就能够疾速的修复问题了。 下载、破解官网下载地址。 地址 Charles 是免费软件,能够收费试用 30 天。试用期过后,未付费的用户依然能够持续应用,然而每次应用工夫不能超过 30 分钟,并且启动时将会有 10 秒种的延时。因而,该付费计划对宽广用户还是相当敌对的,即便你长期不付费,也能应用残缺的软件性能。 然而,我抉择破解 ????,我用 Charles 是来晋升排查问题的工夫的。后果你给我搞这些货色 我就受不了了。。。。次要还是破解比拟容易 ????。哈哈哈哈 破解网站 抉择以后 本人的版本 下载一个 Jar 包就能够了。 Charles 配置当 Charles 装置好之后,这个时候就能够抓取 Http 的包了,然而咱们为 App 提供的接口 个别都是 Https 的。所以咱们须要装置证书。 ...

October 1, 2020 · 1 min · jiezi

VSCode插件Path-Autocomplete高级技巧

曾经介绍过Path Autocomplete是一款非常不错的VSCode插件。当然出了最基本的路径补全提示,还有些高级技巧和使用中可能遇到的小问题,在此和大家分享下。 映射目录当你项目中的Webpack使用了resolve.alias,webpack.config.js配置如下: module.exports = { //... resolve: { alias: { Utilities: path.resolve(__dirname, 'src/utilities/'), Templates: path.resolve(__dirname, 'src/templates/') } }};那么项目之前引入的一个文件的方法假设是: import Utility from '../../utilities/utility';现在就可以写成: import Utility from 'Utilities/utility';问题来了,当你输入Utilities/的时候,编辑器根本不知道这里面有什么文件,无法实现补全提示。 这时候,只需要在这个项目添加一个插件的配置就可以了,配置如下: { "path-autocomplete.pathMappings": { "Utilities": "${folder}/src/utilities/", }}${folder}表示项目根目录,如果你的项目和示例略有不同,请根据具体情况修改。这样是不是很方便啊,同理很多脚手架或框架(比如Nuxt.js)自带了这种类似的依赖关系,都是可以通过插件的pathMappings设置来更好的写代码的。 该功能示例在官方文档Options - pathMappings,也有,可以参考。出现重复文件和目录补全提示比如,你可能会遇到路径补全提示中出现重复的目录名称或者是文件,如下图: 那我也是尝试关闭VSCode自带的补全功能结果没找到。后来仔细阅读了插件文档,google相关信息,总结了下: 设置插件选项该插件提供了一个选项path-autocomplete.ignoredFilesPatter,你可以通过添加一行设置如下: "path-autocomplete.ignoredFilesPattern": "**/*.{js,ts,scss,css}"参阅:Path Autocomplete Tips 意思是匹配到所有的js、scss、css、ts文件时,path-autocomplete将被忽略。 设置VSCode内置选项在现有版本的VSCode上,是有两个选项关闭js、ts的路径提示的,我们可以通过关闭它们,达到目的: "javascript.suggest.paths": false,"typescript.suggest.paths": false,这样的话也能解决重复提示的问题,当然缺点是,其他文件类型就无法解决了。 相关阅读: Folders are duplicated on sass import statementmultiple suggesion in js files失效总的来说,推荐使用第一种设置插件选项来解决这个问题。 快速跟踪文件抱歉,理论上来说这个是VSCode内置的取代该插件的方案,但是我总是发现不太好用。 理论上,进行了jsconfig.json配置,详细可阅读官方说明,也可以达到映射目录的能力,并且,根据插件内的这段Configure VSCode to recognize path aliases描述来看,他是可以解决文件关联打开的,但是我反复测试了好久,都无法正常实现。原因不明,有兴趣的朋友也可以试试这个哦~ ...

October 17, 2019 · 1 min · jiezi

IDEA中执行maveninstall时忽略找不到无关类的错误

IDEA中执行maven:install时忽略找不到无关类的错误package com.sun.org.apache.xml.internal.security.signature does not exist某些项目因找不到无关紧要的类而编译不过(如下图),其实只要在设置以下两步就可让项目顺利运行。 1.设置IDEA的编译器2.设置Maven为no error check

October 4, 2019 · 1 min · jiezi

charles-工具菜单总结

本文参考:charles 工具菜单总结 主要是下面的功能,具体可以点击对应菜单查看 工具菜单总结禁用缓存禁用Cookies远程映射到URL地址映射到本地重写工具黑名单白名单DNS欺骗镜像工具自动存储客户端进程修改请求新的修改请求批量重复请求高级批量重复请求验证工具发布Glist导入/导出设置界面Glist发布设置本文参考阿西河教程编写:https://www.axihe.com/

September 20, 2019 · 1 min · jiezi

charles-白名单

本文参考:charles 白名单 charles 白名单白名单工具,允许您阻止除选定位置之外的所有请求。 注意:如果一个请求与“黑名单”和“白名单”同时匹配成功,则会被阻止。 白名单工具 白名单是除了你设置的HOST以外,阻止所有请求。 当Charles收到与白名单不匹配的请求时,Charles会阻止该请求。 您可以选择Charles是否会简单地关闭浏览器的连接,或者向浏览器返回错误页面(具有403响应)。 黑名单工具,用于仅屏蔽选定的域名。 如果一个请求与“黑名单”和“白名单”都匹配,则会被阻止。 本文参考阿西河教程编写:https://www.axihe.com/

September 20, 2019 · 1 min · jiezi

charles-验证工具

本文参考:charles 验证工具 验证工具/validate 验证工具 Charles可以通过发送到W3C HTML验证器,W3C CSS验证器和W3C Feed验证器来验证记录的响应。 验证报告在Charles中显示,并显示出与响应源中相应行的警告或错误(双击错误消息中的行号可以切换到源视图)。 因为Charles测试它记录的响应,它可以测试不容易测试的场景,例如在提交表单后显示错误消息。 重新验证 验证后,您可以从验证结果中选择响应并重复,重复原始请求,然后重新验证结果。 您可以修复任何验证问题,并重新验证页面,而无需返回浏览器。 – -/这个目前还不会用;本文参考阿西河教程编写:https://www.axihe.com/

September 20, 2019 · 1 min · jiezi

charles-批量重复请求重复发包工具

本文参考:charles 批量请求 重复发包工具/repeat Charles 让你选择一个请求并重复,在测试后端接口的时候非常有用; Charles将请求重新发送到服务器,并将响应显示为新请求。 如果您进行后端更改并希望测试它们,用了charles后,你就没必要在浏览器(或其他客户端)中重复该请求,charles可以非常方便的完成。 特别是如果重新创建请求需要传一些列参数的时候(比如在游戏中获得分数,比如填写一大串表单的请求时候),这将节省大量的精力。 请求的重复在Charles内部完成,因此您无法在浏览器或其他客户端中查看响应; 响应只有在Charles才能看到。 高级重复发包/Repeat Advanced Advanced Repeat就是重复发包多次,这个功能用来测试短信轰炸漏洞很方便。 或者测试后端的性能; 这个在文件的邮件菜单上也是有的,在那里操作会更方便和明确; 本文参考阿西河教程编写:https://www.axihe.com/

September 20, 2019 · 1 min · jiezi

charles-重写工具rewrite-Srttings

本文参考:charles 重写工具 rewrite Srttings 重写工具/rewrite Srttings and rewrite rule 功能:在通过charles时修改请求和响应 重写工具 重写工具可以让你在有请求响应的时候,修改请求和响应的rule。 rule(规则):添加或更改标题或替换响应体中的一些文本,编辑相关的数据。 重写集重写集可以单独激活和停用。每个集合包含位置和规则的列表。这些位置选择规则将要运行的请求和响应。 重写rule:每个rule描述单个重写操作。rule可能会影响请求URL的标题,正文或部分内容;它可以根据请求或响应来操作; 那么它可以定义搜索和替换或者只是替换样式重写,重写rule编辑对话框中,提供了有关重写rule的更多文档,可以看下。 local匹配 每个local匹配可能包含协议,主机,端口和路径模式,以匹配特定的URL。local可以使用通配符。 调试 当重写操作无法正常工作时,重写工具可能难以调试。如果您有麻烦,请尝试添加一个基本的rule, 例如添加一个非常明显标题的rule,以便您可以看到您写的rule是否与请求匹配。 还可以在错误日志中打开调试,以获取从Charles窗口菜单访问的错误日志中打印的一些调试信息。 规则重写 rewrite rule 每个rule描述单个重写操作。 Type 类型 该类型指定要执行的重写操作的类型。重写规则类型有四种不同类别; 标题规则, URL规则, 查询参数规则, 响应状态规则和正文规则。 头和查询参数规则分别影响头字段和查询字符串参数;添加,修改或删除标头和参数。 URL和主体规则执行查找和替换URL和主体的不同部分。响应状态规则执行查找和替换响应状态代码和描述, 例如。 200 OK Where 选择应用重写规则的位置;在请求,响应或两者上。 Match 匹配字段包含请求或响应中要匹配的文本,以决定是否触发此规则。您可以将名称或值留空或同时保留,以匹配任何值。 如果您将名称和值字段都留空,您将匹配所有请求/响应。 可以启用正则表达式支持,为您的匹配提供Perl风格的正则表达式。如果您在正则表达式中包含组,则可以在匹配字段中使用它们。 除非正则表达式启用,否则名称字段是完全匹配字段,在这种情况下,它支持部分匹配。名称字段对于正则表达式和正常匹配都不区分大小写。如果要创建不需要的重写规则类型,则可能会禁用该名称字段。 值字段是部分匹配,除非您打开匹配整数值,在这种情况下,它是完全匹配的。值字段对于正则表达式和标头和查询参数规则的正常匹配都不区分大小写,并且对URL和正文规则区分大小写。 新建/替换 新/替换字段包含在触发此规则时在请求或响应中添加或替换的文本。将名称或值留空,以使它们与匹配的名称或值相同。 如果为匹配启用了正则表达式支持,则可以使用$1,$2等引用匹配组。 名称和值字段的行为取决于匹配。如果存在相应的匹配,则该字段将作为匹配文本的替代,否则如果匹配为空,则字段将替换整个名称或值。 值字段支持替换第一个或替换所有模式。如果名称匹配是正则表达式,则名称字段始终以替换优先模式运行,否则是完全匹配并替换整个名称。 如果要创建不需要的重写规则类型,则可以禁用名称或值字段。 建议 如果不按预期工作,重写规则可能难以调试。经常测试,最好慢慢建立一个rule。 我很少用到这个,一般都是在已经有的请求上再次修改的;然后repeat;本文参考阿西河教程编写:https://www.axihe.com/

September 20, 2019 · 1 min · jiezi

charles-帮助菜单总结

本文参考:charles 帮助菜单总结 charles的window和help的菜单介绍 其中window菜单的如下 这里我一般用到的就是 Active connections;可以用它来看charles进行了哪些访问/charles是否还在工作; help相关的; 别的我是用不到了;本文参考阿西河教程编写:https://www.axihe.com/

September 20, 2019 · 1 min · jiezi

charles-SSL代理

charles SSL代理 如果你需要抓包HTTPS/SLL协议的,就需要安装HTTPS的证书; 这时候可以在这里进行安装; 本文参考阿西河教程编写:https://www.axihe.com/

September 20, 2019 · 1 min · jiezi

完成钉钉小程序的开发

背景:之前做过一个支付宝小程序,领导要求用钉钉写个一样的出来.于是乎就开始了. 首先创建一个钉钉小程序 钉钉小程序有四个场景,我尝试了前三个场景,感觉就是发布的时候不太一样.最终选中了第三方个人应用开发.如果是公司开发的话记得找公司要管理账号.我是先自己创建了一个企业写的测试应用.下面的U_Gen价签小工具是我创建好的小程序. 下载小程序开发者工具,引入官网给的git上的代码.(我服务端和前端代码都下过,后面尝试了下,不能一起写.我这个项目需求也很简单不需要服务端做很多事,所以我就讲讲我主要写的前端页面吧.) 绑定小程序,修改页面小程序开发者工具里面可以开发很多版本的,你可以在这里选择你创建的小程序的类型.然后在旁边关联你创建好的小程序就可以了.我是写完了再截图的,所以目录东西可能有的多.给介绍一下,我引入了add-button.因为我要显示icon的,在这里写icon会方便一些.static文件夹下就是我的icon图标了.至于怎么导入icon图标我的文章里描述的很清楚了.不懂的可以再看一下这篇 引入阿里icon图标todos文件夹下就是我的页面样式,逻辑等了. 这里要连接后端接口的话一定要记得添加安全域名: 然后在js文件中去发请求 dd.showLoading()就是显示个loading出来.dd.httpRequest()就是发请求了.dd.alert()是弹框,里面的content是弹框内容,buttonText是弹框提示语. 修改主题色在app.acss里面.修改小程序标题在app.json里面,"pages"里面是一进页面加载的页面路径.如果你也引入了add-button的话记得在需要用的文件里导入,就像我这个todos.json里面导入的样子一样.add-button里面的样式和内容被我改了很多,我还是贴出来吧. 我的页面代码都是在todos里面.也一并附上主要就是axml里面的内容.其他的逻辑都是根据自己需求去写的.我的页面也只用到了钉钉的几个方法而已. 设置体验版,增加体验人员 再介绍下小程序开发者工具吧:1:可以更改机型,看样式的2:上传代码到钉钉开放平台的版本管理里面3:开启手机模拟器,右侧就会显示一个这样的模拟器出来4:修改样式的. 附上我的小程序效果图: 遇到的问题1:发请求参数一直不对,最后自己写了headers指定了格式,又加上了JSON.stringify转了一下才好.2:把服务端的方法用到了前端,我一直想在前端去生成签名,玩一下免登陆,获取个用户头像啥的.但是没成功.最后发现那些方法都是服务端的.前端用不了..我想应该不会有人跟我一样.. 但还是说一下..(其实签名我参数最后都写出来了的..应该是对的)3:icon加载比文字慢.我原来是写的button,然后写了个text把icon放到button旁边.但是加载特慢,扫描后回到页面图标就会消失一会儿.体验感很差,最后没办法,只能跟支付宝小程序写一样的,来个add-button.把icon放进add-button里面.然后在用到的todos文件里,引入add-button.让它先加载.就不会有这个问题了.4:如果有些问题网上你也没搜到答案,官网的api也没找到解决方法.可以去问人工服务.哈哈哈哈.我第一次问.还真的解决了问题的.就在钉钉开发平台的右下角,可以接入人工服务的.就是回的慢了点. 关于小程序,不管是微信的,还是支付宝的,还是钉钉的,我感觉都一样的.只是调用的方法名不一样而已.你会写了一个,其他的都是依葫芦画瓢而已.

September 10, 2019 · 1 min · jiezi

Message-前言中不允许有内容

使用Pycharm创建项目,创建前、后都没有问题,当项目关闭了,在打开之前的项目都打不开,屏幕只是闪一下,但是打不开项目,找到idea的日志(默认的日志文件路径在C盘,当前用户所属目录的根目录下.pytharm/system/log )显示: 点一次闪一次一个报错,那就慢慢恢复自定义的设置吧,最后调试找到了是字符集编码设置的地方出了问题: 图中红色方框中的地方改称NO BOM,然后将项目中已经存在的.idea文件夹删除重新导入项目,以后就无虑了;

September 8, 2019 · 1 min · jiezi

IOS-Resign-Upload-Tool-Error-replace-with-fastlane-resign

Resign your app with fastlane1.Setup fastlane environment:https://docs.fastlane.tools/g... 2.terminal sudo gem install fastlane 3.command: cd <<ipa path>> 4.Resign Commandfastlane sigh resign -g <<bundleId>> --signing_identity "<<distribution certificate full name>>" -p "<<provision file absolute path>>" --short_version 9.2 --bundle_version 1 --use_app_entitlements <<IPA name>> example:fastlane sigh resign -g com.test --signing_identity "iPhone Distribution: TestDemo (XXXXXXXXXX)" -p "/Users/abby/Documents/APP/TEST.mobileprovision" --short_version 9.2 --bundle_version 1 --use_app_entitlements wrapped.ipa ps:注意空格格式,ruby version>2.3.0成功提示‘ Successfully signed xxxx.ipa!' 验证是否重签名成功,打开ipa解压,Payload路径文件下有个文件,显示包内容 ,可以看到ipa包的所有内容。打开info.plist,找到Bundle identifier查看是否已经更改

August 21, 2019 · 1 min · jiezi

go-学习笔记之值得特别关注的基础语法有哪些

在上篇文章中,我们动手亲自编写了第一个 Go 语言版本的 Hello World,并且认识了 Go 语言中有意思的变量和不安分的常量. 相信通过上篇文章的斐波那契数列,你已经初步掌握了 Go 语言的变量和常量与其他主要的编程语言的异同,为了接下来更好的学习和掌握 Go 的基础语法,下面先简单回顾一下变量和常量相关知识. 有意思的变量和不安分的常量变量默认初始化有零值func TestVariableZeroValue(t *testing.T) { var a int var s string // 0 t.Log(a, s) // 0 "" t.Logf("%d %q", a, s)}int 类型的变量初始化默认零值是零 0,string 类型的变量默认初始化零值是空字符串 ,其他类型也有相应的零值.多个变量可以同时赋值func TestVariableInitialValue(t *testing.T) { var a, b int = 1, 2 var s string = "hello Go" // 1 2 hello Go t.Log(a, b, s)}其他主要的编程语言大多支持多个变量初始化,但极少数有像 Go 语言这样,不仅支持同时初始化,还可以同时赋值.多个变量可以用小括号 () 统一定义func TestVariableShorter(t *testing.T) { var ( a int = 1 b int = 2 s string = "hello go" ) // 1 2 hello Go t.Log(a, b, s)}用小括号 () 方式,省略了相同的 var 关键字,看起来更加统一变量类型可以被自动推断func TestVariableTypeDeduction(t *testing.T) { var a, b, s = 1, 2, "hello Go" // 1 2 hello Go t.Log(a, b, s)}Go 语言可以根据变量值推测出变量类型,所以可以省略变量类型,再一次简化了变量定义,但是变量类型仍然是强类型,并不像 Js 那样的弱类型.变量可以用 := 形式更加简化func TestVariableTypeDeductionShorter(t *testing.T) { a, b, s := 1, 2, "hello Go" // 1 2 hello Go t.Log(a, b, s) s = "hello golang" // 1 2 hello golang t.Log(a, b, s)}省略了关键字 var,转而使用 := 符号声明并初始化变量值且利用自动类型推断能力进一步就简化变量定义,再次赋值时不能再使用 := 符号.变量 var 声明作用域大于变量 := 声明var globalTestId = 2// globalTestName := "type_test" is not supportedvar globalTestName = "type_test"func TestVariableScope(t *testing.T) { // 2 type_test t.Log(globalTestId, globalTestName) globalTestName = "TestVariableScope" // 2 TestVariableScope t.Log(globalTestId, globalTestName)}var 声明的变量可以作用于函数外或函数内,而 := 声明的变量只能作用于函数内,Go 并没有全局变量的概念,变量的作用范围只是针对包而言.常量的使用方式和变量一致func TestConstant(t *testing.T) { const a, b = 3, 4 const s = "hello Go" // 3 4 hello Go t.Log(a, b, s)}常量声明关键字 const,常量和变量的使用方式一致,具备类型推断能力,也存在多种简化常量定义的形式.虽然没有枚举类型,但可以用 iota 配合常量来实现枚举func TestConstant2Enum(t *testing.T) { const ( java = iota golang cpp python javascript ) // 0 1 2 3 4 t.Log(java, golang,cpp,python,javascript)}iota 在一组常量定义中首次出现时,其值为 0,应用到下一个常量时,其值为开始自增 1,再次遇到iota 恢复 0 .效果非常像 for 循环中的循环索引 i,明明是常量,偏偏玩出了变量的味道,也是我觉得 iota 不安分的原因.常量 iota 有妙用,还可以进行位运算func TestConstantIotaBitCalculate(t *testing.T){ const ( Readable = 1 << iota Writable Executable ) // 0001 0010 0100 即 1 2 4 t.Log(Readable, Writable, Executable) // 0111 即 7,表示可读,可写,可执行 accessCode := 7 t.Log(accessCode&Readable == Readable, accessCode&Writable == Writable, accessCode&Executable == Executable)}定义二进制位最低位为 1 时表示可读的,左移一位表示可写的,左移两位表示可执行的,按照按位与运算逻辑,目标权限位若拥有可读权限,此时和可读常量进行按位与运算之后的结果一定是可读的,由此可见,iota 非常适合此类操作.总体来说,Go 语言中的变量很有意思,常量 iota 不那么安分,从上述归纳总结中不难看出,Go 语言和其他主流的编程语言还是有很大不同的,学习时要侧重于这些特殊之处. ...

August 17, 2019 · 8 min · jiezi

go-学习笔记之走进Goland编辑器

工欲善其事必先利其器,命令行工具虽然能够在一定程度上满足基本操作的需求,但实际工作中总不能一直使用命令行工具进行编码操作吧? 学习 Go 语言同样如此,为此需要寻找一个强大的 IDE 集成环境帮助我们快速开发,据我所知,市面上比较流行的可能有三个选择: LiteIDE X : LiteIDE 是一款简单,开源,跨平台的 Go IDE.GoLand : GoLand is a cross-platform IDE built specially for Go developers.第三方插件 : Idea, Sublime Text,VS Code ,等常见 IDE 一般均有 Go 的插件.萝卜青菜各有所爱,选择哪个 IDE 都可以,甚至不用任何 IDE 也可以,不过还是推荐下 GoLand 吧! Goland 下载安装官网地址: https://www.jetbrains.com/go/,如果无法访问,可能需要特殊手段绕过.Goland 并不像 Idea 那样分为专业版和社区版,目前只有收费版,提供 30 天免费试用,试用到期后可以选择购买正版也可以上淘宝购买激活码或网上寻求破解版等等. 直接点击页面中间的 Download 按钮后就会自动识别当前系统进行下载,也可以点击右上角的 Download 按钮自行选择目标平台进行下载. 安装过程比较简单,这里就不再赘述,简单的动图一闪而过看下大致过程吧! 其中安装位置,默认是 C 盘,可以自行选择合适的安装位置. 如果是 Mac 电脑,安装 Goland 更为简单,直接下载拖动到 Application 分类,连安装目录都不用选择,简单演示如下: ...

August 7, 2019 · 1 min · jiezi

GETPOST与后端接口详记

前言HTTP通信的7种方式在HTTP通信中主要分为GET和POST。如PUT,DELETE是类POST的传输方式,与POST没有实质区别。OPTION是查看服务器支持的请求方法。HEAD是测试服务器的该资源情况,不返回实体的主体部分。TRACE请求可以获取回服务器接收到的该请求的原始报文,从而判断路径中的代理和防火墙是否对该条请求进行修改。 HTTP请求报文发送格式不因请求方式不同而改变HTTP报文格式如下<请求方法> <请求路径> <协议版本><请求头> <主体body> 无论用任何请求方法,都可以发送这样的请求报文,报文结构是HTTP的协议规范,请求方法只是告诉服务器如何来看待这条请求。因为在有些文章中会提到GET请求不能传body数据,而真实的情况是有些服务端框架接收到GET请求后会自动将GET请求的body部分丢弃,所以大家要注意。所以为了规范,大家在使用GET请求时还是不要将请求数据放在body中。何时用GET请求为了规范,使用GET请求时就不要在主体body中放数据了,避免不必要的错误。所以请求中的数据是放在URL上的。 浏览器网址栏和页面跳转。为了获取信息且不需要传大量条件信息的接口。例如用GET做登录请求 GET /online/test/?name=haha&amp; password=miaomiao HTTP/1.1Host: 127.0.0.1:8080Content-Type: application/x-www-form-urlencodedcache-control: no-cachePostman-Token: 14a1347a-c540-48f0-9d49-6299f86c3a73何时用POST请求post请求可以在body中传送大量信息 以上传name=haha,password=miaomiao为例,查看不同body数据格式 form-data(表单,可以传文件)POST /online/test/? HTTP/1.1Host: 127.0.0.1:8080Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gWcache-control: no-cachePostman-Token: c6e21725-caec-4a40-841c-7b92f87f6999Content-Disposition: form-data; name="name"hahaContent-Disposition: form-data; name="password"miaomiao------WebKitFormBoundary7MA4YWxkTrZu0gW--若在表单中附加一张图片 POST /online/test/? HTTP/1.1Host: 127.0.0.1:8080Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gWcache-control: no-cachePostman-Token: 437207ba-e007-4de8-bbcd-bdc88db6e445Content-Disposition: form-data; name="name"hahaContent-Disposition: form-data; name="password"miaomiaoContent-Disposition: form-data; name="profile"; filename="C:\Users\Think\Pictures\profile.jpg------WebKitFormBoundary7MA4YWxkTrZu0gW--其中表单的每一项都有Content-Disposition描述。------WebKitFormBoundary7MA4YWxkTrZu0gW--是随机生成的分隔标记x-www-form-urlencoded(也是表单,但不可以传文件)POST /online/test/? HTTP/1.1Host: 127.0.0.1:8080Content-Type: application/x-www-form-urlencodedcache-control: no-cachePostman-Token: 35566466-0568-4731-9c1c-6eda7dfca105name=hahapassword=miaomiaoundefined=undefined因为不用传文件,所以不用单独描述,将表单信息拼凑在一起就可以了。application/x-www-form-urlencoded: 窗体数据被编码为名称/值对。这是标准的编码格式。multipart/form-data: 窗体数据被编码为一条消息,页上的每个控件对应消息中的一个部分。raw(text,json,xml...)(其它文本格式)以json格式为例 POST /online/test/? HTTP/1.1Host: 127.0.0.1:8080Content-Type: application/jsoncache-control: no-cachePostman-Token: 06a9f071-4424-428a-b17b-9b4fe6f209a2{ "name":"haha", "password":"miaomiao"}------WebKitFormBoundary7MA4YWxkTrZu0gW--binary(二进制)用作传输文件,包括前面的form-data上传文件,文件都是以一定的编码方式写在body中的,在服务器端获取该请求的输入流后,即可按行接收流中的数据信息。 在Spring Boot中接口的接收数据总结URL接收GET参数列表对于数字基本类型和包装类型都可接收,但是若前端并没传这个数字,那么包装类型可以在代码里判空,异常处理就好,但是基本类型是不能判空的,所以对于数字首选包装类型。 @RequestMapping(value = "/",method = RequestMethod.GET) @ResponseBody private ResInfo test(String name,String password){ return new ResInfo(200,"登录成功: "+name+" "+password); }PostMan接收 ...

July 2, 2019 · 2 min · jiezi

使用jeecgboot心得

使用jeecg-boot心得: Jeect-boot,采用主流最新的开发技术,是个强大的快速开发平台。 刚开始发现jeecg-boot时便对其精致美观的页面深深的迷住了。下载项目运行发现其中也有想要的按钮权限功能,同时jeecg-boot秉承了以前的一贯作风有强大的代码生成器,可谓是广大码农的福音。功能强大,用起来也是极其简单,同时有配套的技术文档和视频,从环境搭建到部署应有尽有,还有QQ技术群、案例,总而言之项目熟悉起来特别的方便。有什么问题也可以快速找到解决的方法。 值得一提的是jeecg-boot非常适合做后台管理系统,后台管理系统的一些用户、角色、菜单、站内信等基础模块都有。对于广大程序员来说除了代码生成器,jeecg-boot项目有大量的封装,比如说查询过滤器极大的便利程序开发,节省了不少时间与精力。jeecg-boot是前后端分离开发同时也提供在线文档的功能,减少了开发沟通的时间。对于公司来说,如果要赶进度,前端跟不上可以招前端人员,后端进度跟不上前端,可以找后端开发人员。 下面说一下,在使用该项目过程中遇到的一些问题和建议以及心得:1、 表格中数据过多,当数据竖列超过十五列,横向超过二十条时,点击表格前面的多选框进行单选和全选时出现卡顿。2、 在使用表格时用scopedslots属性时使用日期组件进行双向绑定时,无法切换年月,只能手输,在此基础上再进行设置默认值,得到的数据会错一天。一般使用和在表单里使用没有发现问题。希望这一点能够给出一个解决方案(备注:我在实际开发过程中只能进行双向绑定,不能依靠事件去获取值)。3、 建议jeecg-boot团队,能够封装一些代码实现单元格合并。就是竖列数据相同能够自动合并。有一些统计数据,合并单元格看起来比较好看一些。4、 我使用的过程中,需要单独做手机版页面,于是去技术交流群问有没有这方面的支持,答案是支持,不过要在页面进行加判断。可以设想一下,这样写的话每个页面都要加判断就很繁琐,而且页面也不好单独来拉出了。于是乎,就舍弃这样的操作。就改成在加载菜单时进行判断当前的设备类型,如果是手机就去后台请求手机版的菜单,如果是PC端就去请求PC版的菜单。首先是在菜单表增加标识,该菜单是属于哪种,当添加菜单时就按需选择。其他照旧,当用手机访问系统登录进去后就会只加载手机菜单,PC端访问系统就只加载PC端菜单了。5、 建议给出一些手机版页面的案例(就像vant中的业务组建),因为有的公司需要开发手机版方便客户使用。6、 建议代码生成器能够生成手机版样式的页面。7、 建议网址栏最好只显示域名,不显示其他地址

June 30, 2019 · 1 min · jiezi

让开发部署提速-8-倍我参与贡献这款-IDE-插件的全过程

如何像参与开源那样,去参与一款 IDE 插件的设计? 作为一款 IDE 插件的使用者,我是否能决定下一个版本的功能? 自从产品经理银时小伙和他的开发小哥们在去年12月发布 Cloud Toolkit(一款 IDE 插件)以来,已帮助数以万计的开发者们提高了业务的部署效率。期间,开发者们不仅是 Cloud Toolkit 的使用者,同时也作为设计者参与了插件的更新迭代。 本文来自开发者徐靖峰,分享了他和 Cloud Toolkit 的故事 遇见 Cloud Toolkit在与中间件小姐姐的一次聊天中,偶然间了解到这款插件,小姐姐跟我提到自己正在运营一款 IDE 开发者工具,能够使开发部署效率提高 8 倍,出于好奇心,我就上手体验了一下,看看究竟是一个什么样的产品。使用了一段时间之后,便迫不及待地向小姐姐分享了我作为开发者对插件的一些看法。 我对这款产品最直观的感受:这是一款发布工具,帮助用户在 IDE 中直接打包应用并部署到各种终端。一开始看到这款产品位于阿里云的页面中,原本以为是一款和阿里云服务强绑定的产品,但试用过后才发现,即使对于普通的云主机,也非常适用,还可以解决很多开发运维的痛点,非阿里云用户可以放心使用。 在 Cloud Toolkit 出现之前作为一个 Java 程序员,我们大多数会在 Intellij IDEA 中基于 SpringBoot 来开发 WEB 应用,所以本文中的测评将会基于以下几个架构来构建: 开发环境:IDEA项目组织方式:Maven开发框架:SpringBoot在接触 Cloud Toolkit 之前,用什么方法来部署一个 SpringBoot 应用呢?作为一个偏正经的测评人员,我不会为了凸显出 Cloud Toolkit 的强大而去翻出一些上古的部署工具来做对比,而是直接使用 Intellij IDEA 的内置功能与之对比。 第一步:配置服务器信息 在 Tools -> Deployment 中找到 IDEA 对项目部署支持的内置插件,我们可以在其中进行服务器信息的配置,包括服务器地址和权限认证,并且在 Mapping 选项卡中完成本地工程与服务器路径的映射。 第二步:配置 Maven 打包插件<build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins></build>由于是 SpringBoot 应用,配置专用的打包插件后,可以将整个工程打成一个 fatjar,示例工程非常简单: ...

June 28, 2019 · 3 min · jiezi

Linux下EDA工具首选Kicad

最近想制作点小东西玩一玩,需要画原理图和PCB,以前学生时代用过的一些软件如PADS、AD、Cadence这些,都存在版权问题,除cadence外很少有支持Linux的,而且Linux用习惯了,不想换到温倒死,所以在找一款Linux的EDA工具,放狗搜了一圈,发现提到Eagle和KiCAD的比较多,另外还有被AD收购的upverter这种网络EDA工具,都试用了一下,下面说下感受吧。 upverter:网络EDA工具,没有平台限制,电子设计中的Github,注册个账号就可以用了,使用也简单,各种原理图库/封装库比较丰富,画完后可以导出多种格式源文件和生产文件,但是毕竟是在网络端存储,总感觉有点不靠谱,而且有时候响应比较慢(和网络状态有关),尤其是在执行铺铜这种操作时,等的时间就更长了,如果不介意这些的话,可以尝试一下。 Eagle:有付费版和免费版,免费版有原理图页数/PCB面积/PCB层数的限制,看到这些限制后,就瞬间没兴趣了。 Kicad:没有版权限制,开源免费,支持Windows/Linux平台,Linux下安装方便有丰富的原理图库/封装库/3D库支持,有完善的用户手册,容易上手,国外还有公司有这个软件画电脑主板(应该算得上专业的EDA软件了) 随便画了个PCB,上两个图:

June 25, 2019 · 1 min · jiezi

sublime3配置pythonIDE

源码安装Sublime Text 31.下载解压。 进入解压目录:ln -s /usr/local/sublime-text-3/sublime_text /usr/local/bin/sublime3。 2.安装插件管理器。 从 Sublime Text 3 官方获取用于安装Package Control 的代码。依次点击 View > Show Console (快捷键Ctrl + `)打开控制台。在控制台中粘贴官方代码,然后点击回车。最后重启。 3.安装插件。 主题Flatland,Agila,Material Theme,Brogrammer;扩展侧边栏中菜单选项SideBarEnhancements;终极 Python 插件Anaconda;文件创建AdvancedNewFile;版本控制git;函数生成描述DocBlockr_python;代码静态检查工具框架SublimeLinter-pyflakes。 4.配置。 修改快捷键 Sublime Text > Preferences > Package Settings > 插件 > Key Bindings – User。 修改配置Sublime Text > Preferences > Package Settings > 插件 > Settings – User。 5.配置python3版本。 Sublime Text > Preferences > Package Settings >Anaconda> Settings – default。将"python_interpreter": "python"改为"python_interpreter": "python3"。 ...

June 8, 2019 · 1 min · jiezi

phpstorm-主题推荐

在日常的开发中发现IDE类型的开发工具对于提高我们的开发效率是大有帮助的。本文给大家分享的一个工具就是phpstorm。主要分享的是一些常用的快捷键以及较为好看的主题。后续持续更新。 主题安装material theme ui主题。先上传一个预览图。 第一步,打开设置,找到plugins的选项。 搜索框输入插件名称。 点击安装并重启phpstorm,下图看到的就是一个启动的引导页,我们可以针对该主题做定制化配置,也可以默认设置,这里我就是选择默认设置。 4.选择主题,同样的打开设置菜单,找到Editor->color scheme->general右侧的Scheme选项。

June 8, 2019 · 1 min · jiezi

Java四种引用简介

引语:    我们知道java相比C,C++中没有令人头痛的指针,但是却有和指针作用相似的引用对象(Reference),就是常说的引用,比如,Object obj = new Object();这个obj就是引用,它指向的是真正的对象Object的地址,不过今天要说的是java中的四种引用。有人可能比较懵逼,四种引用?是的,从JDK1.2之后,java对引用这块的概念进行了扩充,按照引用的强度分为了四种引用:强引用,软引用,弱引用,虚引用。下面就让我们来看看这四种引用都具体的情况吧。 1.强引用1.1介绍:我们平时代码中使用得最多的引用,对象的类是:StrongReference。就比如上面说的Object obj = new Object();我们再熟悉不过了,作为最强的引用,只要引用还存在着,垃圾收集器就不会将该引用给回收,即使会出现OOM(内存溢出)。就是说这种引用只要引用还一直指向的对象,垃圾收集器是不会去管它的,所以它被称为强引用。不过如果 Object obj = new Object();obj = null;obj被赋值为了null,该引用就断了,垃圾收集器会在合适的时候回收改引用的内存。还有一种情况就是obj是成员变量,方法执行完了,obj随着被栈帧被回收了,obj引用也是一起被回收了。强引用的使用就不介绍了,地球人都知道。 2.软引用2.1介绍:软引用是用来描述一些有用但是非必须的对象。对应的类是SoftReference,它被回收的时机是系统内存不足的时候,如果内存足够,它不会被回收,内存不足了,可能会发生OOM了,软引用的对象就会被回收。这样的特性是不是就像缓存?是的,软引用可以用来存放缓存的数据,内存足够的时候一直可以访问,内存不足的时候,需要重新创建或者访问原对象。 2.2使用:其实不管是软引用,弱引用,还是虚引用,代码中使用方式都是像下面这样,使用对应的Reference将对象放入到构造函数当中,然后使用的地方reference.get()来调用具体对象。 Object obj = new Object();SoftReference<Object> softReference = new SoftReference<>(obj);softReference.get();同时可以使用ReferenceQueue来把引用和引用队列给关联起来: Object obj = new Object();ReferenceQueue<Object> refQueue = new ReferenceQueue<>();SoftReference<Object> softReference = new SoftReference<>(obj, refQueue);__所谓关联起来,其实就是当引用被回收的时候,会被添加到ReferenceQueue中,使用ReferenceQueue.poll()方法可以返回当前可用的引用,并从队列冲删除__。简单来说就是引用和引用队列关联起来(引用的构造函数传入队列),然后引用被回收的时候会被添加到队列中,然后使用poll()方法可以返回引用。 3.弱引用3.1介绍:虚引用比上面两个引用就更菜了,只要垃圾收集器扫描到了它,被弱引用关联的对象就会被回收。被弱引用关联对象的生命周期其实就是从对象创建到下一次垃圾回收。对应的类是WeakReference。 3.2使用:public static void main(String[] args) throws InterruptedException { Object obj = new Object(); ReferenceQueue<Object> refQueue = new ReferenceQueue<>(); WeakReference<Object> weakRef = new WeakReference<>(obj, refQueue); System.out.println("引用:" + weakRef.get()); System.out.println("队列中的东西:" + refQueue.poll()); // 清除强引用, 触发GC obj = null; System.gc(); Thread.sleep(200); System.out.println("引用:" + weakRef.get()); System.out.println("引用加入队列了吗? " + weakRef.isEnqueued()); System.out.println("队列中的东西:" + refQueue.poll()); /** * 输出结果 * 引用:java.lang.Object@7bb11784 * 队列中的东西:null * 引用:null * 引用加入队列了吗? true * 队列中的东西:java.lang.ref.WeakReference@33a10788 */ }可以看到当强引用被清除,手动触发GC后,弱引用回收,被加入到队列中了。 ...

May 26, 2019 · 1 min · jiezi

Android云通信IM系列1集成与配置

前言因为项目中用到了腾讯云通信,网上云通信IM的文章很少,所以我打算详细写一下,希望对大家有所帮助。 什么是云通信IM 云通信 IM(Instant Messaging)承载亿级 QQ 用户即时通讯技术,数十年技术积累,腾讯云为您提供超乎寻常即时通讯聊天服务。针对开发者的不同阶段需求及不同场景,云通信 IM 提供了一系列解决方案,包括: Android/iOS/Windows/Web 的 SDK 组件、服务端集成接口、第三方回调接口等,利用这些组件,可以在应用中构建自己的即时通讯产品,解决开发者面临的高并发、高可用性的一系列问题。首先我们要知道云通信IM登录流程,直接看下面图: 不难看懂,说的简单一点就是我们调后台接口去获取Identifier 与UserSig。我们在测试阶段可以 获取测试 userSig,这点在下面会讲到。 集成一.配置1.创建应用2.配置应用-管理员3.获取UserSig 完成账号管理员配置后,单击下载公私钥的链接,即可获得一个名为 keys.zip 的压缩包。解压后可以得到两个文件,即 public_key 和 private_key,用记事本打开 private_key 文件,并将其中的内容拷贝到开发辅助工具的私钥文本输入框中。其中:identifier 即为您的测试账号(也就是 userId),私钥为 private_key 文件里的文本内容,生成的签名就是userSig。identifier 和 userSig 是一一对应的关系。具体操作可以看下面网址:https://cloud.tencent.com/doc...Android-demo下载地址:https://github.com/tencentyun... 二.集成SDK在项目中添加 IM SDK 的依赖 dependencies { api 'com.tencent.imsdk:imsdk:版本号'}版本号最好用当前最新的版本,我用的是4.3.118 dependencies {api 'com.tencent.imsdk:imsdk:4.3.118'}TUIKit集成TUIKit 是基于腾讯云 IM SDK 的一款 UI 组件库,里面提供了一些通用的 UI 组件,开发者可通过该组件库选取自己所需要的组件快速的搭建一个 IM 应用。IM 软件都具备一些通用的 UI 界面,如会话列表,聊天界面等。TUIKit 提供了这一类的组件,并提供了灵活的 UI 和交互扩展接口,方便用户做个性化开发。TUkit我们不一定要集成,只是说如何有需要的可以去集成集成的方式: 直接依赖它的aar包把aar源码文件拷贝到咱们项目中我建议用第二种方式,因为TUkit视图实在是过于简洁,很大程度上我们都需要修改,而且功能上我们也要去修改,用aar包方式的话我们不能去更改文件。 如果有朋友对aar不了解,可以看我之前的文章:https://mp.weixin.qq.com/s/_m... 基本操作1.初始化可以直接看官网址:https://cloud.tencent.com/doc...或者我们可以下载云通信IM的demo,然后仿照它的初始化配置也可以的。 2.登录// identifier为用户名,userSig 为用户登录凭证TIMManager.getInstance().login(identifier, userSig, new TIMCallBack() { @Override public void onError(int code, String desc) { //错误码 code 和错误描述 desc,可用于定位请求失败原因 //错误码 code 列表请参见错误码表 Log.d(tag, "login failed. code: " + code + " errmsg: " + desc); } @Override public void onSuccess() { Log.d(tag, "login succ"); }});先讲到这里,希望对大家有帮助,下节讲一下具体的功能!想多了解的朋友可以加我的微信,交个朋友:lengquele5311 ...

May 24, 2019 · 1 min · jiezi

leetCode第一题

leetCode第一题普通解决思路将数组变量两次,相加判断是否等于传过来的值,如果等于,返回下标自己写的代码,如果有错误请指出,谢谢 package com.leetcode.firstquestion.one;import java.util.Arrays;/** * @program: test * @description: 两数之和 给定一个整数数组 nums 和一个目标值 target, * 请你在该数组中找出和为目标值的那 * 两个 整数,并返回他们的数组下标。 * @author: Mr.Yang * @create: 2019-05-08 09:20 **/public class Solution { public int[] twoSum(int[] nums, int target) { int[] ints = new int[2]; int indexOne=0; int indexTwo=0; boolean flag=false; for(int x=0;x<nums.length;x++){ for(int y=x+1;y<nums.length;y++){ if((nums[x]+nums[y])==target){ indexOne=x; indexTwo=y; flag=true; break; } } if(flag){ break; } } ints[0]=indexOne; ints[1]=indexTwo; return ints; } public static void main(String[] args) { int[] ints = {1, 2, 3, 4, 5, 6, 7, 8, 9}; Solution solution = new Solution(); int[] ints1 = solution.twoSum(ints, 9); System.out.println(Arrays.toString(ints1)); }}网上流传思路,使用HashMap来处理将数组的遍历值当作key(为了存取好处理,所以将数组的遍历值当作key),索引当作value来存储。 ...

May 9, 2019 · 1 min · jiezi

window上小而美的软件推荐度按排名

Notepad++ 更好用更强大的笔记本QTranslate 本地翻译神器7-zip 解压缩软件Wox 程序/文件/快捷 神器 1!Everthing 搜索本地文件神器Clover 像浏览器一样打开文件夹Ditto 记录每次复制内容,黏贴时可选择,复制黏贴神器Listary 程序/文件/快捷 神器 2!火萤酱 程序/文件/快捷 神器 3!Q-Dir 多窗口资源管理器SPlayer 干净的射手播放器TrafficMonitor CPU 网络监控控件ScreenToGif.exe gif录屏软件gifcam.exe gif录屏软件geek.exe 更好用的卸载软件360极速浏览器 本的化的ChromeCmder window上更好用的shellcurl 配合cmder使用,代替postman设置全局快捷后,效率起飞!

April 27, 2019 · 1 min · jiezi

在che中增加EMF支持 - Day3:增加增加一个自定义的Workspace Stack

在上一篇中,我们达成了安装Eclipse和定义自定义指令等。虽然这一切很好,但我们希望这个工作是可扩展的,也就是说可以和我们的朋友或者同事分享这个环境。幸运的是,这个可以通过在che里面定义一个Stack来实现。Stack某种意义上像一个workspace的蓝图。如果你熟悉面向对象技术的话,stack可以比喻为一个java类,而一个类的实例被称为workspace。Che的Dashboard UI支持stack的定义。我们不需要自己写代码来完成这个工作。技术上说,一个Che的stack基于一或多个Docker文件。如果我们想提供一个实现装好Eclipse modeling Edition的stack,我们需要提供一个实际包含这个stack的docker image。无论何时,如果你想创建自己的docker image作为Stack的话,最好是使用一个Che的image作为你的base。这样,你不需要维护一些如Java之类的先决条件。在我们的例子中,我们将使用Java stack的base image。这里是我们使用的Docker文件,如你所见它很小。我们加了一些注释,使其可以让人理解。FROM codenvy/ubuntu_jdk8MAINTAINER Mathias Hansen mhansen@eclipsesource.comUSER root# Install Eclipse Modeling ToolsRUN echo “Installing eclipse…“cd /wget -q -O - https://ftp.fau.de/eclipse/technology/epp/downloads/release/neon/1/eclipse-modeling-neon-1-linux-gtk-x86_64.tar.gz | tar zx# Reset to the default userUSER user在你写完这段dockerfile之后,你需要build它。使用如下指令:docker build -t eclipsesource/emfneon_jdk8最后,你可以将你的新image推送进注册表或者储存库,比如Docker Hub。现在我们可以根据新的Docker镜像设置Che stack。通过Che的UI里面的按键添加新的stack。如下图如你所见,你可以给你的Stack命一个之后方便寻找的名字,定义你想启动的machine(比如default)以及要使用的docker镜像。除此之外,你可以添加命令(比如上一篇的Run EMF Code Generator)。最后,选择罗列Stack的目录。如果你滑到屏幕低端,你可以用json格式编辑你的Stack的配置。如果,你想将你的Stack的配置分享给好友的话,可以复制发送就行了。我们EMF stack的Json文件如下,你可以复制进去试试看。{ “name”: “EMF”, “description”: “EMF Stack”, “scope”: “advanced”, “tags”: [ “Java 1.8”, “EMF” ], “components”: [ { “name”: “Eclipse Modeling Edition”, “version”: “Neon.2” } ], “source”: { “type”: “image”, “origin”: “codenvy/ubuntu_jdk8” }, “workspaceConfig”: { “environments”: { “EMF”: { “machines”: { “dev-machine”: { “agents”: [ “org.eclipse.che.terminal”, “org.eclipse.che.ws-agent”, “org.eclipse.che.ssh” ], “servers”: {}, “attributes”: { “memoryLimitBytes”: “2147483648” } }, “EMF”: { “agents”: [ “org.eclipse.che.terminal”, “org.eclipse.che.ssh” ], “servers”: {}, “attributes”: {} } }, “recipe”: { “content”: “services:\n dev-machine:\n image: codenvy/ubuntu_jdk8\n EMF:\n image: eclipsesource/emfneon_jdk8\n mem_limit: 2147483648\n”, “contentType”: “application/x-yaml”, “type”: “compose” } } }, “name”: “default”, “defaultEnv”: “EMF”, “description”: null, “commands”: [ { “name”: “Run EMF Code Generator”, “type”: “custom”, “commandLine”: “/eclipse/eclipse -noSplash -data ${current.project.path} -application org.eclipse.emf.codegen.ecore.Generator -model -edit ${current.project.path}/org.eclipse.emf.ecp.makeithappen.model/model/task.genmodel “, “attributes”: {} } ] }}现在,我们就可以和其他的编程者共享我们的开发环境了。我们的工具已经捆绑进了一个Che的工作空间。你唯一需要的就是一个json文件。将Tooling装进Che的workspace是很简单的,利用强大又轻巧的扩展机制。基本上,每一个在Docker容器里面可以运行的工具都可以使用。通过这个我们可以扩展Che而不需要任何代码。但是,这里我们除了添加命令,还没有扩展过IDE。这将在下一篇中介绍。 ...

April 17, 2019 · 1 min · jiezi

在che中增加EMF支持 - Day2:生成代码

(略)在关注编辑支持和客户端模型的创建之前,我们先看为模板项目进行代码生成。这是我们目标的一个基础的需求,我们想使用现有的EMF code generator。所以在che里面复用已有的Eclipse架构是可行的吗?让我们快速的看一哈EMF代码生成器如何被触发。默认的方式是利用Eclipse IDE里的UI。除此之外,EMF提供就一个Java API来运行代码生成。这听上去很吸引人,因为Che的server构件也是用java编写的。也就是说我们可以为Che的server写一个封装的功能:由Che的浏览器IDE触发并调用EMF的API来生成代码。但,等一下,EMF是被设计运行在OSGi运行时环境的。此话,他使用了一些扩展点(如注册表打包)。虽然用Java可以直接调用EMF的代码生成器,但我们需要手动将这些东西连接起来。在这种场景下,在没有OSGi的情况下设置类的路径就像噩梦。另一个坏处是我们可能需要在我们的服务器端配置EMF库,这会使更新变得繁琐。幸运的是,有一个很简单的方式来整合现有的代码生成器。Eclipse的桌面IDE提供了一个在命令行执行的无头应用程序。用如下的指令,你可以为make it happen样例生成代码。$ /eclipse/eclipse -noSplash \ # do not show the eclipse splash screen-data /path/to/data/dir \ # the path to be our current project-application org.eclipse.emf.codegen.ecore.Generator \ # the application id to execute-model \ # generate EMF model classes-edit \ # generate EMF edit bundle/path/to/modelname.genmodel # the path to the genmodel file那么我们如何将这一段代码整合进Che里面?好消息是我们可以直接把Eclipse部署到一个工作空间里。Che里的工作空间不仅仅是托管代码的目录。它同样也是一个docker的容器并包含一些工具。因此如果我们将一个Eclipse Modeling Tools Edition安装进我们的工作空间。我们就能用命令行调用EMF的API生成代码。首先,我们需要在Che的工作空间容器中安装Eclipse。作为一个基于Linux image的容器,我们可以直接用shell去下载和提取最新的Eclipse Modeling Tools。下载链接可以由官网下载(复制Linux 32/64 bit的链接)。如果界面里没有shell的话,点击低端的terminal即可打开,实际的shell指令如下:$ sudo su # gain super user privileges (become root)$ cd / # switch to the root directory$ wget ${Download Link} -o eclipse.tar.gz # download eclipse$ tar xfv eclipse.tar.gz # extract the downloaded tar.gz file然后你就可以用下面的命令行出发EMF code generator了。$ /eclipse/eclipse -noSplash -data /projects/makeithappen -application org.eclipse.emf.codegen.ecore.Generator -model -edit /projects/makeithappen/org.eclipse.emf.ecp.makeithappen.model/model/task.genmodel下一张截图展现了代码生成器在shell里打印的log。我们然后就可以在IDE打开被生成的代码。这就意味着,我们成功在che里面复用了EMF的代码生成器!现在,我们完成了从命令行启动code generator。让我们为用户提供更便利的方式,而不是来自己输入这些复杂的指令。我们想要使得这个代码生成的过程只需由一个点击触发。Che允许我们自己定义一个‘custom command’。点击右上角的下拉菜单选择Edit commands。然后点击’+’,然后点Custom,如图所示填好右边的内容。你就可以看到Che里面多了这个指令(刚刚的右上角位置)。然鹅,最后一部分ganmodel的路径还是静态的,现在,我们就可以用一个click为一个模板项目生成代码了。我们复用了现有的EMF code generator,也没有写过一行代码。但是,存在很多开放的问题需要提升。比如,我们只可以为固定的项目生成代码,我们仍然是在指定的模板上修改,无法真正改变模型。这些问题都需要我们进一步优化,之后我们还会涉及。现在下一部分的内容,我们先关注如何创建一个custom stack是的我们的这一部分内容可复用。这个目的是使得我们这个下载了Eclipse实例的定义了自定义指令的工作关键可以从scratch获取。请期待~ ...

April 16, 2019 · 1 min · jiezi

在che中增加EMF支持 - Day1:运行che和引入现有的emf项目

在这一系列博客中,我们将分析有关扩展Eclipse Che的经历,并且描述我们如何在Eclipse Che中创建基础的EMF支持。在上一篇文章中,我们已经描述了我们的大致的目标和使用样例。在这篇文章中,我们会描述使用Che的第一步。在这扩展之前,我们需要运行它来看看它里面已经有了什么。然后,我们找一个最简单的途径来获取一个已存在的模型项目,将其加入Che的workspace里。这个模型项目还没有被che创建,但已经被Eclipse Modeling Tools IDE创建。通过引入这个项目,我们可以看这里已有哪些特性,我们需要去扩展什么。作为一个模板项目,我们将使用已有的Make it happen模型。这个样例是很多Eclipse IDE所有的。可以通过New->Example->“Make it happen:Example Model"创建。我们之后在che里进行的工作:创建一个没有已生成代码的"Make it happen"模型,makeithappen_blank作为准备,我们下载并执行了Che。因此,我们现在使用的是发布的未拓展的版本。当启动che并在浏览器中打开,你首先看到的会是Dashboard。你可以创建Workspaces,但不是项目。Che为每个工作空间启动一个独立的runtime。每个可以被定义为一个单独的Docker容器和一组相关的容器。默认情况是,一个工作空间一个容器,源代码和相关的运行时状态(JDK和其他工具包)都被密封在容器中,因此可以很容易的直接共享。正如你在dashboard里面看到的,stacks里有很多事先定义好的workspace。其中,stack里的java样例就可以作为我们任务的基础。在我们选择了workspace之后,Che会为我们启动它。技术上,一个docker容器启动了,某种意义上很像一个服务器端的虚拟机。在这里面,我们可以进行我们的开发。在我们启动了workspace之后,浏览器中IDE将会与这个展示的workspace相连接(暂时是空的)。让我们来为我们的崭新的workspace进入一个已有的模型项目吧!点击Workspace->Import Project,默认是引入git项目。我们引入https://github.com/eclipsesou… 的项目,并点击import。现在我们有一个完整的模板项目在我们的workspace里,我们可以看一下这些文件。因为我们还没有拓展custom editor,所以所有的文件都是以纯白的文本格式显示。修改纯文本格式的XML文件显然很费劲,这一点我们会在之后的工作中解决。另一件有意思的事情是,就这样这个项目就已经被加入这个workspace里面了,我们可以在下面的命令行对这些文件进行操作,所以我们通过vi /projects/makeithappen/org.eclipse.emf.ecp.makeithappen.model/model/task.ecore来修改文件。这就意味着,任何基于命令行的工具都可以直接访问我们的项目文件。这是一个很有意思的机制,我们将在之后运用到这点。现在,我们已经有的是一个简单的方法去创建一个模板文件来测试。然后我们开始思考接下来的在che中的EMF支持。很明显下面就是创建一个custom的模型项目和为Ecore的custom的编辑器。但是,在接下来的一部分,我们将首先实现代码生成,这主要是为了减少风险。我们相信,在Che的IDE中创建我们自己的UI插件是可能的。但是,为了代码生成,我们想要使用已有的EMF提供的生成器。那么是否存在一个简单的方法将Eclipse的特性集成到che里呢?请期待之后的内容。

April 16, 2019 · 1 min · jiezi

在che中增加EMF支持 - Day0:动机和第一步

在2016,eclipse che在2016被发布。作为eclipse生态环境中的基于云的IDE,乍一看它只是在浏览器中运行的一个IDE。然而,che有一个很有趣的特性:可共享的工作空间。一个工作空间是指一个工程以及他的编译、调试、执行环境。传统意义上,工作空间是一个属于本地的概念,开发者在本地确保源码所需的工具都安装完备。而che使用docker容器来支持工作框架的可执行性。使得一个工作空间可以被多个开发者共享。这就减少了新的开发者加入一个组时,需要的那些配置环境等等的复杂操作。可以通过访问 https://www.eclipse.org/che/ 来了解更多。毫无疑问,我们对这个新技术很感兴趣,其中一部分需要研究的就是“如何使用它以及和其他eclipse IDE相比它有多强大”。当然,作为技术开发者,我们更关心如何将che中没有的特性和框架加入并延伸至che中。我们是否能够将在eclipse里面创建的技术支持移植在che里面?因此,我们进行的尝试便是:为che增加一个新的插件。我们的目的是了解和使用这个平台并最后给核心开发团队提供相关的反馈。因此,我们选择了一个我们熟悉的但che还没支持的特性:EMF( Eclipse Modeling Framework)以及生成代码。EMF是一个很实用的生成java中实体类的框架工具,可以自行去了解。本文开始的一系列博客都将围绕在che中建立EMF支持展开。下图是我们目标的一个简单实例。将这个实例分为几个部分创建模型项目首先,我们想能够创建一个“样例项目”——一个由典型的Ecore包。主要包括一个.ecore文件描述模型和一个.genmodel文件进行代码生成。因此,我们需要扩展che使得它可以提供这个模板,让这个模板可以作为sample加载。在一开始,我们可能需要使用一个已有的模板项目,这样使得我们可以进一步实现接下俩的需求。编辑Ecore文件和GenModel当然,我们也会想要修改这些人工写的包,所以我们需要编辑器能支持.ecore和.genmodel文件。生成代码如题,为了这个目标,我们想找一个方法来将现有的生成器整合到che里面。最后,我们认为可以通过在che里加一个操作按键来触发代码生成。编辑器修改我们想在编辑器里面方便的编辑和修改Ecore和GenModels,所以需要一个可以支持树形/表单的编辑器。(如前面的图)好消息是Che所有这一切都是可能的,我们在Che中实现了EMF支持的原型,以满足所有描述的要求。代码在这个仓库。

April 16, 2019 · 1 min · jiezi

springboot实战(一)

最近在看《JavaEE开发的颠覆者 Spring Boot实战》,顺便写了一个小框架,在这里作为记录,供以后回顾github:源码地址当前进度描述core 核心模块aop定义(aop包)日志切面异常切面抽象(base包)controller抽象,封装返回结果对象|controler异常通知器service抽象,为业务模块提供通用的业务逻辑,如增、删、改、查等mapper抽象,为业务模块提供通用的持久化逻辑,如增、删、改、查等。通过反射技术结合Mybatis的注解,提供通用的SQLentity抽象,定义通用的字段,如创建人、创建时间、修改人、修改时间、删除标识等通用工具Spring上下文工具Spring属性文件工具配置Http请求过滤器条件注入,根据配置文件中定义的spring.http.encoding的配置,动态创建CharacterEncodingFilter通用配置druid数据源、监视器配置动态数据源注册器 引入bean扫描目录的定义,扫描范围是com.wt 下属的所有包多数据源(datasource包)核心代码是DynamicDataSource,通过继承Springboot提供的DynamicDataSource,来实现多数据源定义了aop切面DynamicDattaSourceInterceptor,拦截方法调用,发现有指定的@TargetDataSource注解,就会将当前线程的数据源指定为注解指定的数据源多数据源相关的配置类,利用了Springboot的动态配置特性,定义spring.factories文件指定DynamicDataSourceConfiguration配置类,根据配置文件中的slave.enable的值决定是否加载动态数据源的相关配置反射工具j2ee 依赖管理,添加必要的web项目依赖root maven构建方式定义version 管理依赖的版本

April 15, 2019 · 1 min · jiezi

免费申请 WebStorm 使用许可 - free JetBrains Open Source license(s)

闲聊步入前端切图仔行列的我曾多次纠结过「到底使用哪种编辑器写前端好用?」这样的问题,前前后后尝试过 Dreamweaver 、HBuilder 、Sublime Text 、Atom 和现在主要使用的 VSCode 。现在回过头来看,我发现这个问题有了答案,那就是「爱用啥用啥」。(笑……今天的主角 WebStorm ,是一款 powerful IDE ,我也是被一位前辈安利来的。由于每次下载使用都苦于到处搜寻激活码什么的,我觉得比较麻烦,也一直没怎么当作主力工具使用过,但是最近我偶然了解到可以使用自己的开源项目去向 JetBrains 公司申请免费使用许可,于是乎就试了一下,还真的成功了,所以总结一下心得,希望可以帮助到更多的小伙伴。毕竟比到处去找盗版激活码要好得多了。正文简单介绍申请要求是这样:你是项目的 leader 或者是核心开发者你的项目需要持续开发三个月或以上 (我的项目其实接近三个月,还不满三个月)符合开源项目的要求最好还有发布版本 (我的项目还没有,不过还是成功了)这里是 官方的申请链接 ,按照要求一直填完提交就可以了。这里是 我用于申请的项目 ,还处于开发和完善中。申请过程用于申请的表单虽然比较简单,但填写的时候我对其中几项还是比较疑惑的,所以这里简单提一下。Latest release URL这一项让我比较懵,因为我没有发布的版本,但还是厚着脸皮把项目的 release 链接放了上去 https://github.com/ximuli/learn-vue-gulu/releasesProject description填个短的英文我还应付得过来,但是写一段 description 就比较窘迫了,所以直接用中文写的……Email address请确保填写的邮件地址是你 Github 主页的邮件地址,并且是要对外可见的。遵守原则对了,在提交表单前会有几项拷问灵魂的宣言需要勾选。我确认获取的许可证:只用于非商业性的开源项目开发只会分享给此项目的贡献者偶然间我在公司想起来可以下载使用的时候,总是能想起勾选的这两项内容,所以目前只是在我自己学习和开源项目的开发过程中使用。期限提交表单过后就是坐等收邮件了。我这边是提交过一天后就收到了批准申请的邮件,效率还是很高的,不过我三天后才打开邮箱看到。邮件里说许可证的有效期是一年,到期前会发一个提醒邮件,如果项目还符合要求可以继续申请使用。结语对了,好像是 JetBrains 公司的全套开发软件都可以使用,没有亲测,有需求的试试吧。开源魅力无穷。致敬。(完)

April 14, 2019 · 1 min · jiezi

Spring Security 进阶-细节总结

关于 Spring Security 的学习已经告一段落了,刚开始接触该安全框架感觉很迷茫,总觉得没有 Shiro 灵活,到后来的深入学习和探究才发现它非常强大。简单快速集成,基本不用写任何代码,拓展起来也非常灵活和强大。系统集成集成完该框架默认情况下,系统帮我们生成一个登陆页,默认除了登陆其他请求都需要进行身份认证,没有身份认证前的任何操作都会跳转到默认登录页。默认生成的密码也会在控制台输出。简单页面自定义接下来我们可能需要自己控制一下权限,自定义一下登录界面@Overrideprotected void configure(HttpSecurity http) throws Exception { http.csrf().disable() .formLogin() .loginPage("/login.html") //自定义登录界面 .loginProcessingUrl("/login.action") //指定提交地址 .defaultSuccessUrl("/main.html") //指定认证成功跳转界面 //.failureForwardUrl("/error.html") //指定认证失败跳转界面(注: 转发需要与提交登录请求方式一致) .failureUrl("/error.html") //指定认证失败跳转界面(注: 重定向需要对应的方法为 GET 方式) .usernameParameter(“username”) //username .passwordParameter(“password”) //password .permitAll() .and() .logout() .logoutUrl("/logout.action") //指定登出的url, controller里面不用写对应的方法 .logoutSuccessUrl("/login.html") //登出成功跳转的界面 .permitAll() .and() .authorizeRequests() .antMatchers("/register*").permitAll() //设置不需要认证的 .mvcMatchers("/main.html").hasAnyRole(“admin”) .anyRequest().authenticated() //其他的全部需要认证 .and() .exceptionHandling() .accessDeniedPage("/error.html"); //配置权限失败跳转界面 (注: url配置不会被springmvc异常处理拦截, 但是注解配置springmvc异常机制可以拦截到)}从上面配置可以看出自定义配置可以简单地分为四个模块(登录页面自定义、登出自定义、权限指定、异常设定),每个模块都对应着一个过滤器,详情请看 Spring Security 进阶-原理篇需要注意的是:配置登录提交的URL loginProcessingUrl(..)、登出URL logoutUrl(..) 都是对应拦截器的匹配地址,会在对应的过滤器里面执行相应的逻辑,不会执行到 Controller 里面的方法。配置的登录认证成功跳转的URL defaultSuccessUrl(..)、登录认证失败跳转的URL failureUrl(..)、登录认证失败转发的URL failureForwardUrl(..)……以及下面登出和权限配置的URL 可以是静态界面地址,也可以是 Controller 里面对应的方法。这里配置 URL 对应的访问权限,访问失败不会被 SpringMVC 的异常方法拦截到,注解配置的可以被拦截到。但是我们最好不要在 SpringMVC 里面对他进行处理,而是放到配置的权限异常来处理。登录身份认证失败跳转对应的地址前会把异常保存到 request(转发) 或 session(重定向) 里面,可以通过 key WebAttributes.AUTHENTICATION_EXCEPTION 来取出,但是前提是使用系统提供的身份认证异常处理handler SimpleUrlAuthenticationFailureHandler。上面这种配置身份认证失败都会跳转到登录页,权限失败会跳转指定的 URL,没有配置 URL 则会响应 403 的异常给前端,前提是在使用系统为我们提供的默认权限异常处理handler AccessDeniedHandlerImpl。异步响应配置大多数开发情况下都是前后端分离,响应也都是异步的,不是上面那种表单界面的响应方式,虽然通过上面跳转到URL对应的 Controller 里面的方法也能解决,但是大多数情况下我们需要的是极度简化,这时候一些自定义的处理 handler 就油然而生。@Overrideprotected void configure(HttpSecurity http) throws Exception { http.csrf().disable() .formLogin() .loginProcessingUrl("/login") .successHandler(new AuthenticationSuccessHandler() { @Override public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException { System.out.println("****** 身份认证成功 "); response.setStatus(HttpStatus.OK.value()); } }) .failureHandler(new AuthenticationFailureHandler() { @Override public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException exception) throws IOException, ServletException { System.out.println(" 身份认证失败 "); response.sendError(HttpStatus.UNAUTHORIZED.value(), HttpStatus.UNAUTHORIZED.getReasonPhrase()); } }) .permitAll() .and() .logout() .logoutUrl("/logout") .logoutSuccessHandler(new LogoutSuccessHandler() { @Override public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException { System.out.println(" 登出成功 "); response.setStatus(HttpStatus.OK.value()); } }) .permitAll() .and() .authorizeRequests() .antMatchers("/main").hasAnyRole(“admin”) .and() .exceptionHandling() .authenticationEntryPoint(new AuthenticationEntryPoint() { @Override public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException, ServletException { System.out.println(" 没有进行身份认证 "); response.sendError(HttpStatus.UNAUTHORIZED.value(), HttpStatus.UNAUTHORIZED.getReasonPhrase()); } }) .accessDeniedHandler(new AccessDeniedHandler() { @Override public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException accessDeniedException) throws IOException, ServletException { System.out.println(" 没有权限 "); response.sendError(HttpStatus.UNAUTHORIZED.value(), HttpStatus.UNAUTHORIZED.getReasonPhrase()); } });}注意:没有指定登录界面,那么久需要至少配置两个 handler,登出失败 hander logoutSuccessHandler(..),登录身份认证失败的 handler failureHandler(..),以免默认这样两个步骤向不存在的登录页跳转。配置的登录身份认证失败 handler failureHandler(..) 和 没有进行身份认证的异常 handler authenticationEntryPoint(..),这两个有区别,前者是在认证过程中出现异常处理,后者是在访问需要进行身份认证的URL时没有进行身份认证异常处理。自定义身份认证过程开发的时候我们需要自己来实现登录登出的流程,下面来个最简单的自定义。@Overrideprotected void configure(HttpSecurity http) throws Exception { http.csrf().disable() .logout() .logoutUrl("/logout") .logoutSuccessHandler(new LogoutSuccessHandler() { @Override public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException { System.out.println(" 登出成功 "); response.setStatus(HttpStatus.OK.value()); } }) .permitAll() .and() .authorizeRequests() .antMatchers("/main").hasAnyRole(“admin”) .and() .exceptionHandling() .authenticationEntryPoint(new AuthenticationEntryPoint() { @Override public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException, ServletException { System.out.println(" 没有进行身份认证 "); response.sendError(HttpStatus.UNAUTHORIZED.value(), HttpStatus.UNAUTHORIZED.getReasonPhrase()); } }) .accessDeniedHandler(new AccessDeniedHandler() { @Override public void handle(HttpServletRequest request, HttpServletResponse response, AccessDeniedException accessDeniedException) throws IOException, ServletException { System.out.println(" 没有权限 "); response.sendError(HttpStatus.UNAUTHORIZED.value(), HttpStatus.UNAUTHORIZED.getReasonPhrase()); } }) .and() .addFilterBefore(new LoginFilter(), UsernamePasswordAuthenticationFilter.class);}注意:这里配置了登出,也可以不配置,在自定义登出的 Controller 方法里面进行手动清空 SecurityContextHolder.clearContext();,但是建议配置,一般登录和登出最好都在过滤器里面进行处理。添加自定义登录过滤器,相当于配置登录。记得配置登录认证前和过程中的一些请求不需要身份认证。自定义登录过滤器详情public class LoginFilter extends GenericFilterBean { @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest httpServletRequest = (HttpServletRequest) request; HttpServletResponse httpServletResponse = (HttpServletResponse) response; if ("/login".equals(httpServletRequest.getServletPath())) { //开始登录过程 String username = httpServletRequest.getParameter(“username”); String password = httpServletRequest.getParameter(“password”); UsernamePasswordAuthenticationToken authentication = new UsernamePasswordAuthenticationToken(username, password); //模拟数据库查出来的 User.UserBuilder userBuilder = User.withUsername(username); userBuilder.password(“123”); userBuilder.roles(“user”, “admin”); UserDetails user = userBuilder.build(); if (user == null) { System.out.println(" 自定义登录过滤器 该用户不存在 "); httpServletResponse.sendError(HttpStatus.UNAUTHORIZED.value(), HttpStatus.UNAUTHORIZED.getReasonPhrase()); } if (!user.getUsername().equals(authentication.getPrincipal())) { System.out.println(" 自定义登录过滤器 账号有问题 "); httpServletResponse.sendError(HttpStatus.UNAUTHORIZED.value(), HttpStatus.UNAUTHORIZED.getReasonPhrase()); } if (!user.getPassword().equals(authentication.getCredentials())) { System.out.println(" 自定义登录过滤器 密码有问题 ******"); httpServletResponse.sendError(HttpStatus.UNAUTHORIZED.value(), HttpStatus.UNAUTHORIZED.getReasonPhrase()); } UsernamePasswordAuthenticationToken result = new UsernamePasswordAuthenticationToken(user.getUsername(), authentication.getCredentials(), user.getAuthorities()); result.setDetails(authentication.getDetails()); //注: 最重要的一步 SecurityContextHolder.getContext().setAuthentication(result); httpServletResponse.setStatus(HttpStatus.OK.value()); } else { chain.doFilter(request, response); } }}注意:不是登录认证就接着执行下一个过滤器或其他。登录认证失败不能直接抛出错误,需要向前端响应异常。完成登录逻辑直接响应,不需要接着往下执行什么。 ...

April 9, 2019 · 3 min · jiezi

VSCode Mac实用快捷键、插件

背景:在 Build 2015 大会上,微软除了发布了 Microsoft Edge 浏览器和新的 Windows 10 系统外,最大的惊喜莫过于宣布推出免费跨平台的 Visual Studio Code 编辑器了!随着2019年的到来,Stack Overflow对2018年的IT生态调查显示:Visual Studio Code超过Visual Studio一跃成为榜首,成为“最受欢迎的开发环境”,没有之一!Visual Studio 与 Visual Studio Code 区别: Visual Studio 是集成开发环境, 只能运行在windows + mac OS;Visual Studio Code 是一款编辑器, 支持跨平台,在所有操作系统运行;本文档主要分享 VSCode 在Mac操作系统, React 技术栈开发的实用快捷键 及 插件;实用快捷键1.command + K, command + S 打开快捷键编辑页;说到VSCode 不得不提的快捷键指令,可以查看、设置快捷键;自定义快捷键:如我们写代码时定义常量需要用全大写, 快速切换选中变量的大小写的快捷键很实用,个人设置如下:command + K, command + U 变大写command + K, command + L 变小写2.command + P 快速打开文件;不用点击左侧树形菜单,键盘操作快速找到待编辑文件;3.command + = 和 command + -组合来进行缩放;快捷键调整字体大小, 快速切换到自己最舒服的字体尺寸;4.command + ,打开用户设置;VSCode 设置包括用户设置(全局), 和工作区(当前项目)设置, 因为我们开发项目对应的技术栈可能不同, 所以推荐使用工作区设置。React 开发推荐工作区设置:{ // 设置 react render 中 react 标签智能提示,快速补全html “emmet.includeLanguages”: { “javascript”: “javascriptreact” }, // 设置 react render 中 html 代码可折叠 “editor.foldingStrategy”: “indentation”}5.control + ~ 打开、关闭终端;React 前端开发, 编译脚本、样式等是必不可少的操作, 可在当前开发区中快速打开当前项目路径下的终端,输入指令完成前端文件编译。编辑器内打开终端编译, 不用切换窗口可大大提高开发体验:支持多终端窗口,前后端运行指令同屏显示:6.其他;其他日常编码常用快捷键:command + shift + N 打开新窗口;command + N 新建文件;command + 切出新编辑器(最多三个)command + W 关闭当前文件command + S 保存当前文件command + option + S 保存所有文件command + F 当前文件查找command + option + F 当前文件替换command + D 当前文件查找选中单词下一目标command + C 复制command + V 粘贴command + X 剪切command + Z 回退command + shift + Z 前进command + shift + K 删除当前行代码option + ↓ 当前行代码下移option + ↑ 当前行代码上移shift + option + ↓ 当前行代码整行拷贝到下一行shift + option + F 格式化代码强烈推荐的快捷键, 特别适用于统一前端小组成员代码风格。不同的人,写JS缩进、空格等不一样, 如果小组统一使用VSCode后每个人都习惯用该快捷键格式化代码,将更利于代码维护。前端代码不需插件就能支持 go to defination, 鼠标移动至变量名 或 文件名 , command + 单击 即可跳转至对应文件:实用插件VSCode的插件非常多, 但个人觉得真正实用的插件有:Auto Close Tag自动添加HTML / XML关闭标签(必备)Path Intellisense自动提示文件路径,在HTML 使用a标签的href 或者 require, import 新文件时能智能提示;参考链接:vscode: Visual Studio Code 常用快捷键在用VSCode? 看完这篇文章, 开发效率翻倍!vscode 前端插件推荐 ...

March 30, 2019 · 1 min · jiezi

开工大吉!简单的说说公司的开发规范!

大家好,好久没有写公众号了,最近有朋友参加面试被问到开发规范的问题,突然发现每天干着工作,却没有关注这个问题,就想着写篇文章,简单的说下自己公司的开发规范。关于规范,每个公司都有自己独特的开发规范,归根结底,好的规范才能提高一个团队的效率,接下来,简单的说下自己公司的开发规范,如果大家能在其中有所收获,就是值得的,欢迎评论区交流。接口规范:1、在开发之前必须要先定义接口,定义接口就必须要思考你的需求,逻辑,在写接口文档的时候其实你就已经在你的大脑中实现了一遍你的需求了。2、你定义的接口也是要有标准的,包括不包含多余的字段,正式环境和测试环境的数据格式必须一致,文档与真实开发出来的接口必须一致等等。3、在开发的过程中,如果接口有变化,需要及时和前端或者客户端沟通,避免因为信息的不同步问题而导致工期延误。4、还有前端和APP拿到你的接口数据之后不需要再次的进行逻辑处理,比如说,状态字段是int类型,你把所有的枚举类型给他,让他自己去循环判断应该显示哪个中文,如果接口定义成这样,那这个接口就是不太合格的,你可以在接口返回数据中添加一个字段来避免使用者的多余的工作量。上线规范:1、首先在开发完成后,我们需要自测,自测的标准并不是特别的高,只需要通过冒烟测试,能够把正常的流程走通就可以了,千万不要自测还没测好就交给测试,当测试辛辛苦苦的录完数据,走正常的流程的时候报个系统异常,这种心情应该是十分酸爽的。只有当这些常规的测试走通的时候,测试才会给你测那些比较不容易发现的问题,如果测试总是在这些显而易见的问题上兜兜转转,那么在有限的时间内,测出的产品可能质量也并不高。2、其次测试通过之后,关注下在正式环境上是否需要资源申请,比如说服务器,redis,数据库,这些东西需要提前的给运维提交工单,让运维能够从容不迫的去准备,避免在上线那天因为资源还没准备好而耽误太长的时间。3、在测试通过,运维准备好资源的时候,就可以部署到线上了,我们的代码现在应该是在dev分支上,我们需要把代码合并到master分支上(这里需要说明下,master分支上千万不要修改代码,我们要时刻保证master分支上的代码是和线上环境保持一致的),之后就可以通过Jenkins或者其他部署工具部署项目了。4、部署之后,我们不能直接通知测试来测试了,我们需要用我们的测试用例,自己先访问下我们的正式环境的接口,看下是否正常,之后在通知测试回测。等待着测试汇报答复(每次上线听到测试说没有问题,心里豁然开朗)上线完成。这里说下,在线上部署的同时需要注意的点,在dev和master分支合并代码之后要进行代码review,避免自己的误操作带来不必要的问题。当在正式环境遇到问题的时候,我们需要先通过自己的测试用例来定位问题,可以单点线上tomcat来确定服务是否存在代码问题,如果是代码问题,修改后第二次合并代码的时候要慎重,可以使用交叉review的方式。如果问题归属配置问题,及时找运维沟通解决。上线完成后,要对master分支上打tag,在tag中说明此次部署上线的主要内容。以上只是简单的说了下接口文档和上线的规范,接下来还会说数据库设计相关的规范,作为自己的知识总结,也希望能帮助到其他人。这里会长期的分享技术干货、日常工作总结与思考,你的点赞和分享是对我最大的支持,感谢。如果这篇文章让你有所收获,欢迎关注公众号 java技术情报局

March 26, 2019 · 1 min · jiezi

PHP标准化之路(一):使用 EditorConfig 实现语法统一

EditorConfig 有助于为跨越各种编辑器和 IDE 的同一项目的多个开发人员维护一致的编码样式。 EditorConfig 项目由用于定义编码样式的文件格式和一组文本编辑器插件组成,这些插件使编辑器能够读取文件格式并遵循定义的样式。 EditorConfig 文件易于阅读并且可以与版本控制系统配合使用。因此在团队项目里,我们可以用 EditorConfig 实现编码风格统一。除了 WordPress、Laravel、Symfony 等大型框架有自成一套的编码规范以外,我建议所有的 PHP 项目都应该遵循 PSR PHP 标准规范。目前 PSR 中与编码规范有关的项目有已定稿的 PSR-1 和 PSR-2,将来还会有正在草稿阶段的 PSR-12。现在我们只需要按照 PSR-2 来执行就可以了。在项目里我们可以在根目录建立一个 .editorconfig 文件,内容如下:# This file is for unifying the coding style for different editors and IDEs# editorconfig.org# PHP PSR-2 Coding Standards# http://www.php-fig.org/psr/psr-2/root = true[.php]charset = utf-8end_of_line = lfinsert_final_newline = truetrim_trailing_whitespace = trueindent_style = spaceindent_size = 4然后到 EditorConfig 官网现在对应的 IDE 插件即可。如果你开发的是类似 Laravel 的包含多种语言的项目,可以参考下面的设置,对各种类型的文件单独设置编码规则。# EditorConfig is awesome: http://EditorConfig.org# top-most EditorConfig fileroot = true# All PHP files MUST use the Unix LF (linefeed) line ending.# Code MUST use an indent of 4 spaces, and MUST NOT use tabs for indenting.# All PHP files MUST end with a single blank line.# There MUST NOT be trailing whitespace at the end of non-blank lines.[]charset = utf-8end_of_line = lfinsert_final_newline = truetrim_trailing_whitespace = trueindent_style = space# PHP-Files, Composer.json, MD-Files[{.php,composer.json,.md}]indent_size = 4# HTML-Files LESS-Files SASS-Files CSS-Files JS-Files JSON-Files[{.html,.less,.sass,.css,.js,.json}]indent_size = 4[.vue]# Gitlab-CI, Travis-CI[.yml]indent_style = spaceindent_size = 2 ...

March 25, 2019 · 1 min · jiezi

[Resolved] RAD项目代码与RTC无法同步

下午Accept其他人的code change时发现这个问题, 提示项目没有与rtc连接, 所以只能将改动accept到sandbox中.尝试将项目disconnect然后 share report, 报错, 提示.jazz5.jazzlock文件无法被lock (鬼知道这个文件是干什么的), 忽然想起来三天没有关电脑, 然后关机重启, 重启后发现问题修复. 神奇的问题.不过由此而来的问题是, 我在刚刚有这个问题的时候accept了两个项目的change, 当连接恢复后, 在pending change中提示project is out of sync. 之后尝试replace project.提示可以通过disconnect和reshare解决. 尝试disconnect API component.然后project 右键->team->Share project解决.2019年3月14日 16:48:52更新: 当项目与RTC不同步时, checkin 本地change, 提示可以通过reload解决: 右键点击项目, 选择load, 然后选择Reload

March 14, 2019 · 1 min · jiezi

8 个给前端的顶级 VS Code 扩展插件

翻译:疯狂的技术宅原文:https://1stwebdesigner.com/to…本文首发微信公众号:jingchengyideng欢迎关注,每天都给你推送新鲜的前端技术文章微软的 VS (Visual Studio) Code 是一个免费的开源代码编辑器,最近越来越受欢迎。它非常轻巧、灵活,同时也提供了很多强大的功能。它支持绝大多数流行的编程语言,包括PHP、JavaScript、C++ 等。VS Code 是跨平台的。它不仅能用于 Windows 平台,同时也提供 Linux 和 Mac 版本。下载地址:https://code.visualstudio.com/。但也许最酷的是 VS Code 提供了规模超大的扩展插件,在扩展 商店 有大量的免费扩展可用于支持新语言、调试代码或添加各种其他自定义功能。你可以灵活的配置自己的编辑器,更好地满足日常开发的需要。下面将给你介绍一些适合前端的顶级 VS Code 扩展插件。Git增强:GitLens虽然Git功能已内置于 VS Code 中,但 GitLens 能够提供更多的版本控制功能来“增强”你的编辑器。它提供了对代码的深入分析功能,可以向你显示更改时间以及更改后的代码。你甚至可以比较不同的分支、标签和提交。总的来说,这个扩展插件会让你拥有全新的视觉感受。更多详情:https://marketplace.visualstu…语法高亮:Beautify你是否非常依赖语法高亮显示?如果是的话,Beautify 正是你需要的。它利用了 VS Code 中已有的 Online JavaScript Beautifier,允许你轻松更改其样式。这意味着你可以根据内容设置缩进、换行和其他细节。更多详情:https://marketplace.visualstu…代码检查:ESLintJavaScript 可能很难调试。但 ESLint 扩展可以使这个过程更容易。它能够在执行代码之前帮你指出其中潜在的问题。更强大的是它允许你创建自己的 linting 规则。更多详情:https://marketplace.visualstu…调试器:Debugger for Chrome对于在运行时期间对代码进行调试的开发人员,Debugger for Chrome 将帮你更好的完成工作。它有许多方便的功能,包括在代码、watches 和控制台中设置断点的功能。另外你可以在 VS Code 中运行Chrome实例,或把调试器附加到单独运行的浏览器实例。更多信息:https://marketplace.visualstu…环境增强:React Native ToolsReact 是最引人注目的JS库之一 —— 以至于新的 WordPress 块编辑器(又名 Gutenberg)是基于它建立的。如果你是众多的 React 程序员之一,那么React Native Tools是必不可少的扩展。它增加了运行 react-native 命令的功能,还能帮助你调试自己的代码。更多信息:https://marketplace.visualstu…界面主题:One Dark Pro在敲代码时,有一个醒目且养眼的界面主题会很有帮助。毕竟编码过程可以持续好几个小时。 One Dark Pro 把Atom 编辑器中流行的 “One Dark” 主题带到了 VS Code。更多信息:https://marketplace.visualstu…代码增强:Bracket Pair Colorizer 2Bracket Pair Colorizer 2 是一个简单的扩展,可以使代码更容易阅读。它可以对匹配括号的对代码着色,使你可以非常直观地确定函数的开始和结束位置。还可以选择要使用的颜色。更多信息:https://marketplace.visualstu…视觉增强:vscode-icons也许 vscode-icons 是 VS Code 最有效的视觉调整扩展之一。它能够处理你项目中平淡的文件列表,并添加丰富多彩、表示特定语言的图标。这样可以很容易地让你知道代码文件的类型。能够给工作区添加个性化设置是非常受欢迎的功能。更多信息:https://marketplace.visualstu…按自己的方式编写代码VS Code 提供的扩展插件数量惊人,这使其成极具吸引力的编辑器。你可以自由的进行设置,来匹配自己使用的语言和设置喜欢的工作区视觉效果。此外,它还提供了企业和开源文化的有趣组合。 VS Code 得到了微软的支持,能够确保未来会得到更好的维护。开源社区围绕软件创建了一个欣欣向荣的生态系统,可以称作是企业与开源文化相结合的典范。欢迎继续阅读本专栏其它高赞文章:12个令人惊叹的CSS实验项目世界顶级公司的前端面试都问些什么CSS Flexbox 可视化手册过节很无聊?还是用 JavaScript 写一个脑力小游戏吧!从设计者的角度看 ReactCSS粘性定位是怎样工作的一步步教你用HTML5 SVG实现动画效果程序员30岁前月薪达不到30K,该何去何从7个开放式的前端面试题React 教程:快速上手指南本文首发微信公众号:jingchengyideng欢迎扫描二维码关注公众号,每天都给你推送新鲜的前端技术文章 ...

March 11, 2019 · 1 min · jiezi

Eclipse 配置 Tomcat 服务器和发布 Web 应用

步骤1:服务器运行环境配置依次点击:Window/Preferences/Server/Runtime Environments,选择已安装的Tomcat 版本,然后选择其安装路径,如图。出现下面这个就成功完成步骤一了。步骤2:设置发布位置双击这个:找到 Server Locations 按图中顺序设置:部署位置 webapps 文件夹在 Tomcat 安装目录里。 如果是灰色的不能更改,需要把 Tomcat 下的所有项目移除,并右击,clean 之后方可设置,启动后将可以更改。步骤2完成之后Tomcat的配置就完成了。发布Web应用右击项目—> Run As —> Run on Server —>选择服务器 —> 添加资源 —> 完成

March 9, 2019 · 1 min · jiezi

如何在线创建数据流图(DFD)?

想要创建数据流图(DFD)?我们将为您提供有关DFD的介绍,并告诉您如何使用在线DFD软件创建DFD。什么是数据流图?数据流图(DFD)是在软件设计中经常使用的图。它直观地表示给定系统中整个过程的数据流。DFD显示将输入到进程和从进程输出的信息类型以及将存储数据的位置。数据流图示例(由Visual Paradigm Online创建)[[在Visual Paradigm Online中打开和编辑此DFD]]数据流图的目的典型的信息系统涉及处理大量信息和过程。数据流图的目的是以系统的范围和边界来查看整个系统,同时说明组件之间信息的移动。DFD的重点是整个系统的数据流,而不是流程。DFD允许读者通过了解所涉及信息的种类和流量,轻松了解系统的运行方式。数据流图(DFD)软件[[在Visual Paradigm Online中打开和编辑此DFD]]DFD类型DFD有两种主要类型:物理和逻辑。物理DFD:通过显示系统的“实现方式”,重点关注系统的物理方面逻辑DFD:重点关注系统的更高级别视图以及它将实现的“内容”。数据流图级别与其他图表不同,DFD可以根据它们用于服务的目的在不同级别绘制。上下文数据流图上下文DFD有时被称为0级DFD。它是所有人中的顶级图表,它说明了整个系统与任何外部实体的关系。数据流图级别11级DFD是上下文DFD下的级别。它说明了系统中的主要功能。级别1通过包含更多详细信息来细分上下文级别。它表示数据如何进入和退出系统,存储位置以及基本过程如何将其从一种形式转换为另一种形式。数据流图级别22级DFD(或进一步)深入细节。它显示了数据如何在系统的主进程中流动。您应该根据需要创建多个级别的DFD,直到达到所需的详细程度。推荐的数据流程图软件Visual Paradigm Online是一个在线图表工具,支持广泛的业务和技术图表类型,如UML,流程图,ArchiMate,BPMN,ERD,DFD,Org。图表,思维导图,线框,平面图。为用户提供免费的在线工作空间,并允许创建无限数量的图表和形状。Visual Paradigm Online徽标优点支持多种图表类型:UML,ERD,流程图,组织结构图,线框图,影响图,平面图,网络,机架,电路,管道,SWOT,块允许点击使用 - 无需事先注册和下载。用于数据组织和可视化的仪表板跨平台:在Google Chrome,Safari,Firefox,Microsoft Edge和Internet Explorer 8等现代网络浏览器上运行良好;易于使用:通过拖放创建和连接形状。连接器连接到形状边框,永远不会分开(与许多其他工具不同!)。漂亮的绘图:应用不同的格式选项,包括形状和连接器颜色(填充/渐变),40 +连接器类型,背景颜色,RTF标题,字体选项,阴影效果等对齐指南可帮助您很好地定位形状。构建自己的形状库以创建具有自己形状的图表。使用预先开发的图表模板快速启动。提供了数百个模板。打印并将图形导出为文档和图像格式(PDF,PNG,JPG,SVG,GIF)来自Visio的进口添加文本,备注,外部图像,Web链接到图表Google集成 - 使用Google和Google Drive集成登录试用和价格免费版非商业用途 - 没有广告,允许创建无限制的号码。图表和形状,没有访问期限制以4美元/月和9美元/月的速度升级到Starter / Advance Edition,获得更多图表类型和高级功能如何绘制数据流图?在Visual Paradigm Online中打开数据流图编辑器。(无需注册。)从图表面板中,选择设计中涉及的DFD符号并将其拖放到画布上。用连接线排列并连接它们。完成后,您可以将图表(文件>另存为)保存到我们的云存储库以供将来访问。您还可以将作品导出为图像(JPG,PNG,PDF,SVG等),并与您的朋友或同事共享。

February 28, 2019 · 1 min · jiezi

IDEA常用插件整理

Lombok作用:帮使用者提高编码效率,减少重复与冗余的代码。使用教程下载地址阿里巴巴代码规范检测使用教程下载地址GsonFormat作用: json 格式的字符串转换成实体类参数使用教程下载地址Maven Helper作用:一键查看maven依赖,查看冲突的依赖,一键进行exclude依赖。使用教程下载地址Git flow作用:git工作流插件使用教程下载地址VisualVM Launcher作用:查看jvm情况,jvm调优必备工具使用教程下载地址Free Mybatis plugin作用:非常方便进行 Mapper 接口和 XML 文件之间跳转下载地址Codehelper Generator作用:自动生成MyBatis代码使用教程下载地址GenerateAllSetter作用:一键生成对象所有set代码使用教程下载地址Rainbow Brackets作用:彩色配对括号,代码块多看着会很舒服下载地址Translation作用:功能强大的翻译插件使用教程下载地址Iedis作用:Redis可视化插件使用教程(需翻墙)下载地址

February 13, 2019 · 1 min · jiezi

Idea插件使用

Ideaactivate-power-modeactivate-power-mode for IDEA.根据Atom的插件activate-power-mode的效果移植到IDEA上设置窗口在这里:我喜欢打开colorful关闭combo,你们呢?DownloadAtom Material IconsReplace Jetbrains’ icons with Atom File Icons and Material Design Icons! This is a both a port of the Atom File Icons (https://github.com/file-icons… and the Material Theme Icons (https://github.com/ChrisRM/ma… for Jetbrains products.它好像会随着Material Theme UI一起安装。DownloadMaterial Theme UIThis will add the Material Theme look to your IDE.很棒的一个主题设置在这里:DownloadRainbow BracketsRainbow Brackets / Rainbow Parentheses for IntelliJ based IDEs Supported languages:Java, Scala, Clojure, Kotlin, Python, Haskell, Agda, Rust, JavaScript, TypeScript, Erlang, Go, Groovy, Ruby, Elixir, ObjectiveC, PHP, HTML, XML, SQL, Apex language, C#, Dart …JavaWith Material Theme UIScalaKotlinClojureHtmlGifDownloadWakaTimeMetrics, insights, and time tracking automatically generated from your programming activity.InstallationInside your IDE, select Preferences -> Plugins -> Browse Repositories….Search for wakatime.Click the green Install Plugin button and confirm the installation.Re-launch your IDE.Enter your api key, then click Save.Use your IDE like you normally do and your time will be tracked for you automatically.Visit https://wakatime.com to see your logged time.Source Code: https://github.com/wakatime/j...chrome也有哦,附一张我的统计图:设置在这里:DownloadAndroid StudioAndroid WiFi ADBProvides an action which allow you quickly connect your Android device over WiFi to install, run and debug your applications without a USB connected by pressing one button. Connect your device using a USB cable and press the Android WiFi ADB button. Once the device be connected over WiFi you’ll see an IntelliJ/Android Studio notification. Now you can disconnect your USB cable and enjoy deploying, running and debugging your applications over WiFi. The version 2.0 enables a window to check which of your devices are connected or not and connect/disconnect it manually if needed.有了它就不用数据先连接调试了,需要在同一个局域网下哦。DownloadDatabase NavigatorDatabase development, scripting and navigation toolThis product adds extensive database development and maintenance capabilities to the IntelliJ IDEA development environment and related products. Along with a qualified and IDE-compliant SQL and PL/SQL editor, it provides advanced database connection management, script execution support, database objects browsing, data and code editor, support for database compiler operations, method execution and debugging, database objects factory, as well as various navigation capabilities between all its components.See features overview on the support page.Supported Databases:OracleMySQLSQLitePostgreSQLThis tool is free for personal and commercial usage. Donations are very welcome though.调试数据库有奇效。DownloadJSON To Kotlin Class (JsonToKotlinClass)Plugin for Kotlin to convert Json String into Kotlin data class code quicklyFast use it with short cut key ALT + K on Windows or Option + K on MacFeatures:Generating Kotlin data class from any legal JSON string or any URLs that returns a JSON string as response Generating Kotlin data class from any legal JSON text when right click on directory and select New -> Kotlin data class File from JSONSupporting (almostly) all kinds of JSON libs’ annotation(Gson, Jackson, Fastjson, MoShi and LoganSquare, kotlinx.serialization(default custom value))Customizing your own annotationsInitializing properties with default valuesAllowing properties to be nullable(?)Determining property nullability automaticallyRenaming property names to be camelCase style when selecting a target JSON lib annotation.Generating Kotlin data class as individual classesGenerating Kotlin data class as inner classesFormatting any legal JSON stringGenerating Map Type when json key is primitive typeOnly create annotation when neededCustom define data class parent classSort property order by AlphabeticalMake keyword property validSupport Loading JSON From Paster/Local File/Http URLSupport customize your own plugin by Extension ModuleFull Usage DocumentationDownload未完待续 ...

February 4, 2019 · 3 min · jiezi

idea无法下载插件

file>setting > system setting > updates 去掉这个勾勾

December 25, 2018 · 1 min · jiezi

从0到1,一步步构建Vue单页面应用

重新开始,独立完成 Vue 项目准备工作Node.js、Vue官方文档、ES6项目构建直接使用 Vue 官方提供的脚手架(Vue-cli),所以第一步首先是安装脚手架。在命令行或者 Webstorm 的 Terminal 窗口中输入以下命令即可自动安装:npm i -g vue-cli(全局安装之后,下次可以直接使用,不需要再次安装)安装完成之后,初始化应用的目录vue init webpack app(app为项目的根目录)回车之后会有几个初始化的选项需要你选择:项目名、描述、作者,直接回车即可vue build 选项,与配置相关的,直接回车即可是否安装vue-router,后面一般都会用到,所以推荐输入y语法检查、单元测试、项目测试,直接输n即可项目创建之后是否 npm install ,选择Yes回车之后,会自动生成项目结构和安装各种依赖文件。 下载之后输入 npm init -y 初始化项目 之后,输入 npm run dev 运行项目,稍等下完成后就能拿到URL地址,你可以在浏览器打开初始页面。到这里,一个基础的单页应用就算是创建完成了。

December 14, 2018 · 1 min · jiezi

VsCode 添加文件头部注释和函数注释[koroFileHeader]

以前发过这个插件,这回版本升级了一下,修复了以前默认配置项不能删除,顺序不能移动的问题,并且新增了光标处添加函数注释的功能,也重写了一遍readme,所以再推广一下这个插件,下一步计划是支持其他语言的注释。以下是readme正文。koroFileHeader一个读取用户自定义模板,通过快捷键添加文件头部注释、在光标处添加函数注释的VsCode插件language简体中文 | English项目地址:传送门简介文件头部添加注释:在文件开头添加注释,记录文件信息读取用户设置,生成注释模板保存文件的时候,自动更新最后的编辑时间和编辑人快捷键:window:ctrl+alt+i,mac:ctrl+cmd+i在光标处添加函数注释:在光标处自动生成一个注释模板,下方有栗子支持用户自定义文件注释模板快捷键:window:ctrl+alt+t,mac:ctrl+cmd+t安装在 Vscode 扩展商店中搜索koroFileHeader,点击安装即可。使用文件头部注释:在当前编辑文件中使用快捷键:window:ctrl+alt+t/mac:ctrl+cmd+t,即可生成文件头部注释。函数注释:将光标放在函数行或者将光标放在函数上方的空白行使用快捷键window:ctrl+alt+t,mac:ctrl+cmd+t,即可生成函数注释。事实上,函数注释在文件的任意位置都可生成,这里需要自己控制。注释模板的设置默认配置:在用户首选项中搜索fileheader,默认配置为: “fileheader.customMade”: {} // 头部注释 “fileheader.cursorMode”: {} // 函数注释 用户未设置的情况下,头部注释和函数注释模板为:自定义模板:在用户设置中,搜索fileheader复制默认配置+修改配置,重启生效如上设置,生成注释:// 文件头部注释/* * @Description: * @version: * @Company: BAT * @Author: OBKoro1 * @Date: 2018-10-15 20:59:57 * @LastEditors: OBKoro1 * @LastEditTime: 2018-10-15 20:59:57 / // 函数注释 /* * @name: * @test: test font * @msg: * @param {type} * @return: */自动更新最后编辑时间、编辑人:要开启这个功能,需要在首选项设置中填写对应的属性: “fileheader.customMade”: { “Date”: “Do not edit”, // 文件创建时间(不变) “LastEditors”: “OBKoro1”, // 文件最后编辑者 “LastEditTime”: “Do not edit” // 文件最后编辑时间 } // 不填写对应属性即关闭对应功能自动更新编辑时间示例:最后如果觉得还不错的话,就给个 Star ⭐️ 鼓励一下我吧~博客、前端积累文档、公众号、GitHub ...

October 17, 2018 · 1 min · jiezi