这是Python的函数装饰器!是一种比较高级的用法,学了PYthon一段时间才发现这一个高级特性。
里面有点绕,感觉本质上是一个衣服模板(装饰器),然后把它装饰到任何一个你想要装饰的人(函数)身上。
例如:我想在函数开始和结束时分别打印一些信息,只需要先给函数穿上“衣服”,返回给函数,接着便可以使用:
def decorate(func): def iner(num): print("start ---") ret = func(num) print("return is ",ret) return iner def glor(num): if num >5: return num else: return 0 glor = decorate(glor) glor(4) glor(8) 运行结果:
start ---
return is 0
start ---
return is 8
应用场景: 1.作为界面回调函数使用:
例如wxpython的:
self.Bind(wx.EVT_MENU, self.GenerateDeleteFolerMenu(123), id=new_id) 按照以下进行定义,可以使得回调函数灵活度提高,传递动态的参数。
def GenerateDeleteFolerMenu(self,aaa): def OnDeleteFolerMenu(event): print aaa pass return OnDeleteFolerMenu
查看一下表的编码
show create table user_table;
将其转成utf8,命令如下
alter table user_table convert to character set utf8;
当然还可以设置mysql的客户端和服务器的默认编码
vi /etc/mysql/my.conf
在[mysql] 下面 添加 default-character-set=utf8
在[mysqld] 下面添加 character-set-server=utf8
collaction-server = utf8-greneral-cli
修改完后重启mysql server
一、封装:使得代码模块化 通过:类内成员变量、成员函数的可访问性来体现
可访问性 通过public、protected、private来限制。
二、继承:扩展已存在的代码,提高代码重用性 体现在基类与派生类之间。
关于继承的难点问题:
(1)公有继承、受保护继承、私有继承后,基类中的成员在派生类中的可访问性。(2)多重继承中定义一个派生类对象后,如何为其分配内存(解答:逻辑上可以抽象成一个表格,顺序为:基类1中的虚表指针,其指向基类1中的虚函数;>>基类1中的数据成员;>>基类2中的虚表指针;>>基类2中的数据成员;>>...>>直到派生类数据成员。到此我们会发现一个问题:派生类中的虚函数排在哪呢?解答:在基类1的虚函数之后。由此我们可知:派生类指针与第一个基类指针所指的位置是相同哒)(3)派生类不继承基类中的哪些函数?(解答:构造函数、析构函数、拷贝构造函数;重载运算符;友元函数) 三、多态:目的是为了接口重用 C++多态性是通过虚函数来实现的,虚函数允许子类重新定义成员函数,而子类重新定义父类的做法称为覆盖(override),或者称为重写。(这里我觉得要补充,重写的话可以有两种,直接重写成员函数和重写虚函数,只有重写了虚函数的才能算作是体现了C++多态性)
最常见的用法就是声明基类的指针,利用该指针指向任意一个子类对象,调用相应的虚函数,可以根据指向的子类的不同而实现不同的方法。如果没有使用虚函数的话,即没有利用C++多态性,则利用基类指针调用相应的函数的时候,将总被限制在基类函数本身,而无法调用到子类中被重写过的函数。
因为没有多态性,函数调用的地址将是一定的,而固定的地址将始终调用到同一个函数,这就无法实现一个接口,多种方法的目的了。
开发中设计师所出的设计图描述字重的地方往往是这样的: 如上2图描述字重的地方用的是Regular,知道这对应的font-weight值是多少吗?
字体粗细:‘font-weight’属性 名称: font-weight 取值: normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 初始: normal 适用于: 所有元素 继承: 是 百分比: (不适用) 媒介: 视觉 计算值: 详见描述 动画: - ‘font-weight’属性执行字体中字形的重量,这取决于黑度等级或笔划粗细。 其值的意义如下: 100至900 这些有序排列中的每个值,表示至少与其起身拥有相同黑度的重量。其大致符合下列通用重量名称: 100 - Thin 200 - Extra Light (Ultra Light) 300 - Light 400 - Regular (Normal、Book、Roman) 500 - Medium 600 - Semi Bold (Demi Bold) 700 - Bold 800 - Extra Bold (Ultra Bold) 900 - Black (Heavy) normal、regular与'400'相同。 bold与'700'相同。 bolder指定外观的重量大于继承的值。 lighter 指定外观的重量小于继承的值。 详见W3C Fonts节章的规范标准
重装系统后只有一个盘是由于在ghost系统时,选择了错误的选项导致把整个硬盘当成C盘来装,装完之后自然就只剩下C盘。想要恢复丢失盘的资料,需要注意,别往现在的这个C盘存入新的文件(因为现在存入的文件可能会覆盖原先DEF盘的资料)。可以把硬盘拆下来挂到别的电脑当从盘或者接个移动硬盘,把数据恢复到移动硬盘里。具体的恢复方法看下文了解。 工具/软件:流星数据恢复软件
步骤1:先下载并解压软件运行后,直接双击需要恢复的分区,接着右击软件图标选择《以管理员身份运行》。 步骤2:程序打开后,直接双击需要恢复的物理盘,重装系统后只有一个盘需要从物理盘恢复文件。 步骤3:坐等软件扫描完毕平均需要几分钟到半个小时,稍微耐心等下即可。 步骤4:软件找到文件后,放到《恢复的分区》目录中。 步骤5:将想要恢复的文件勾选,右击选择《复制勾选的文件》,程序会将勾选的文件COPY出来。 步骤6:最后一步只需要坐等程序将文件COPY完毕就好了 。 注意事项1:想要恢复重装系统后只有一个盘需要注意,在数据恢复之前,不要往C盘存入新的文件。
注意事项2:重装系统后只有一个盘恢复出来的数据需要暂时保存到其它盘里。
用神经网络来训练语言模型的思想最早由百度 IDL (深度学习研究院)的徐伟提出[1],NNLM(Nerual Network Language Model)是这方面的一个经典模型,具体内容可参考 Bengio 2003年发表在JMLR上的论文。原文地址:
http://jmlr.org/papers/volume3/bengio03a/bengio03a.pdf
与传统的估算 p ( w t ∣ w t − ( n − 1 ) , . . . w t − 1 ) p(w_t|w_{t-(n-1)},...w_{t-1}) p(wt∣wt−(n−1),...wt−1)不同,NNLM模型直接通过一个神经网络结构对n元条件概率进行评估,NNLM模型的基本结构如下:
1. 模型原理 1.1 模型输入: 首先从语料库中搜集一系列长度为n的文本序列 ( w t , w t − 1 . . . w t − ( n − 1 ) ) (w_t,w_{t-1}...w_{t-(n-1)}) (wt,wt−1...wt−(n−1)),然后组成训练集D,我这里的理解是语料库就是我们在特定领域搜集的文本语料,同时还要有一个词典。有了训练数据和词典,下面就来看下模型是怎样进行前向传播的。
这里先对单个语句序列进行计算,也可以说是单个样本,比如: w 1 … w T w_1 …w_T w1…wT 其中 w t ∈ V w_t∈V wt∈V,这里的 V V V是所有单词的集合(即词典), V i V_i Vi表示词典中的第 i 个单词。
效果图如下:
<h2>Cars Select</h2> <div class="select"> <select name="cars"> <option value="volvo">Volvo</option> <option value="saab">Saab</option> <option value="opel" selected>Opel</option> <option value="audi">Audi</option> </select> </div> body { font-size: 20px; color: #090; background-color: #eee; text-align: center; } .select { display: inline-block; width: 300px; position: relative; vertical-align: middle; padding: 0; overflow: hidden; background-color: #fff; color: #555; border: 1px solid #aaa; text-shadow: none; border-radius: 4px; transition: box-shadow 0.25s ease; z-index: 2; } .select:hover { box-shadow: 0 1px 4px rgba(0, 0, 0, 0.
根据FPGA的封装不同,不同型号的FPGA的引脚多少和定义都有所区别,那么在工程中,管脚应该如何配置呢?不用的管脚又该如何设置呢?下面来总结一下。
FPGA的管脚一般分为两大类:专用管脚(占比20%-30%)和用户自定义管脚(占比70%-80%)
根据功能分为时钟,配置,普通IO,电源四种管脚。以下图为例(黑金AX301,EP4CE17C8)
不同颜色代表不同bank,三角形为电源管脚(正三角为VCC,倒三角为GND,三角中为O则是IO电源管脚,为I则为内核电源),圆形标记的管脚为普通IO管脚,可以随意使用,正方形且内部有时钟信号的为全局时钟管脚,五边形管脚为配置管脚。
管脚设置
点进去后“Device and Pin Options”在“Unused Pins”选项中"Reserve unused pins",设置为“"As input tri-stated",这里是把没有使用的管脚做为三态输入。 在“Voltage”选项,将“Default I/O standard:”设置为“3.3-V LVTTL”,这个设置是和 FPGA 硬件设计的 bank 电压有关,大部分开发板的 IO BNAK 电压为 3.3V,所以设置为“3.3-V LVTTL”。输出电压和设置没有关系,如果 BANK 电压是 3.3V,你这里设置 2.5V,也不会改变 IO 输出的电压幅度。这里设置完成以后 IO 的默认电压为“3.3-V LVTTL”,我们也可以根据需要为每个 IO 分配不一样的 IO 电平标准。
多用途管脚设置。在选项“Dual-Purpose Pins”中设置多用途 IO,全部做为普通 IO。这些多用途管脚,在 FPGA 配置阶段有特殊用途,配置完成后可以做为普通 IO。
学习参考文献 《quartus ii中fpga管脚分配策略》 http://www.docin.com/p-1505838804.html
占位图(兜底图): 真实图片太大还没有加载完之前先用一张占位图表示这个位置将来会有图片或者说明这个位置是有图片的但是不知道什么原因真正的图片没有加载出来用户只能看到这张占位图;
什么是图片懒加载: 懒加载也就是延迟加载,当访问一个页面的时候,先把img元素渲染出来,但是不给它真正的src地址,只有当用户需要看到真正图片的时候,才设置图片正真的路径,让图片显示出来。
为什么要使用懒加载: 在一个页面中,假设有20张图片,每张为100kb,用户在不点滚动条的时候看到的只有4张,如果这20张图片都设置了真正的src,那么当页面首次加载的时候浏览器会立即请求这20张图片资源,需要2000kb的流量; 但是我们做懒加载只请求用户看到的4张图片的话,浏览器只请求这4张图片资源,需要的流量只有400kb。这种手段可以大大减少首屏时间。
懒加载的实现步骤: 1)首先,不要将真正的图片地址放到src属性中,此时放到src中的是一张兜底图,而是放到其它属性(picAddress)中。 2)页面加载完成后,根据scrollTop判断图片是否在用户的视野内,如果在,则将picAddress属性中的值取出存放到src属性中。 3)在滚动事件中重复判断图片是否进入视野,如果进入,则将picAddress属性中的值取出存放到src属性中。
案例: index.html
<html> <head> <meta charset="utf-8"> </head> <body> <style> body{ text-align: center; } .game-detail-logo{ width: 750px; height: 430px; text-align: center; margin-top:30px; } </style> <img src="https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=4259389730,3152819071&fm=26&gp=0.jpg" class="game-detail-logo lazyLoadImg" picAddress="https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=4003935283,4035293154&fm=27&gp=0.jpg"> <img src="https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=4259389730,3152819071&fm=26&gp=0.jpg" class="game-detail-logo lazyLoadImg" picAddress="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1535003204948&di=7f297fc3bd01dcbca58f47c470ae9b9e&imgtype=0&src=http%3A%2F%2Fpic50.nipic.com%2Ffile%2F20141019%2F19104397_104929568000_2.jpg"> <img src="https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=4259389730,3152819071&fm=26&gp=0.jpg" class="game-detail-logo lazyLoadImg" picAddress="http://i1.hdslb.com/bfs/archive/062705867631af9f8e83aadf6d8a1f935b25cbc2.jpg"> <img src="https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=4259389730,3152819071&fm=26&gp=0.jpg" class="game-detail-logo lazyLoadImg" picAddress="https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=2390937513,1169699994&fm=27&gp=0.jpg"> <img src="https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=4259389730,3152819071&fm=26&gp=0.jpg" class="game-detail-logo lazyLoadImg" picAddress="https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6169699994&fm=27&gp=0.jpg"> <img src="https://ss1.bdstatic.com/70cFuXSh_Q1YnxGkpoWK1HF6hhy/it/u=4259389730,3152819071&fm=26&gp=0.jpg" class="game-detail-logo lazyLoadImg" picAddress="https://ss3.bdstatic.com/70cFv8Sh_Q1YnxGkpoWK1HF6hhy/it/u=3947968217,2342505746&fm=27&gp=0.jpg"> </body> <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script> <script type="text/javascript" src="
使用echarts时界面滑动时,图标不跟随滑动,浮在元素上方。 【 问题原因】该布局中含有position:fixed或absulote的元素,导致echarts图表无法滑动。 官方文件说明:canvas为原生组件故有一下的性质:
由于原生组件脱离在 WebView 渲染流程外,因此在使用时有以下限制: 组件的层级是最高的,所以页面中的其他组件无论设置 z-index 为多少,都无法盖在原生组件上。 后插入的原生组件可以覆盖之前的原生组件。 原生组件还无法在 scroll-view、swiper、picker-view、movable-view 中使用。 部分CSS样式无法应用于原生组件,例如: 无法对原生组件设置 CSS 动画 无法定义原生组件为 position: fixed 不能在父级节点使用 overflow:hidden 来裁剪原生组件的显示区域
【 解决方法】所有父级元素(有包含ec-canvas的所有view元素)的position不可为fixed或absulote,将其改为其他,另外兄弟元素可以为position:absulote或fixed,否在还是会有重叠 修改后效果如图所示 另外:在wx-charts也遇到同样的问题 也是这样的解决办法,所以这不是wx-charts和echarts的bug,是本身微信小程序canvas组件的bug,希望腾讯大牛们能优化~
1.css选择器有哪些,优先级如何计算 类别选择器、ID选择器、标签选择器、通用选择(*)、后代选择器、伪类选择器!important>行内样式>ID选择器>类选择器>标签>通配符>继承>浏览器默认属性同一级别中后写的会覆盖先写的样式。 子选择器和后代选择器的区别 子选择器是选择元素的直接后代,即作用于第一个后代;后代选择器则可作用于孙子代、曾孙子代等。 后代选择器通过空格来进行选择,而子选择器是通过“>”进行选择。 2.display: block, inline, inline-block的区别 行内元素:a,span,img,input,select,strong,em,b(标记性元素) 块元素:div,p,ul,li,ol,dd,dt,dl,h1-h6 空元素:hr,br,input,img,link,meta display:block将元素显示为块级元素,可以设置元素的宽高,每一个块级元素都是从新的一行开始(带换行符)。display : inline将元素显示为行内元素,高度,行高以及底边距不可进行设置,高度就是内容文字或者图片的宽度,不可以改变。多个相邻的行内元素排在同一行里。(不带换行符)display:inline-block将元素显示为行内块状元素,设置该属性后,其他的行内块级元素会排列在同一行。既有block的宽度高度特性,又有inline的同行特性。 3.用纯css实现底边为10px的三角形 position: absolute; width: 0px; border-bottom: 5px solid red; border-left: 5px solid transparent; border-right: 5px solid transparent 4.position值有哪些,分别相对于那个定位 absolute:生成绝对定位元素,相对于值不为static的第一个父元素进行定位fixed:生成绝对定位,相对于浏览器窗口进行定位relative:生成相对定位元素,相对于其正常位置进行定位static:没有定位,元素出现在正常的流中(忽略偏移声明:top、left、right、bottom、z-index)inherit:从父元素继承position属性的值 5.用js实现千分位分割(每3位用,隔开) /* 方式一 */ function formatNumber(num) { let array = num.toString().split(''); let length = array.length-1; while(length >= 3){ array.splice(length - 2, 0, ','); length = length -3; } let b = array.join(''); return b; } /* 方式二 */ function formatNumber(num) { /* 使用正则表达式,将数字转化为字符串后,全局匹配, * 看是否符合断言(?
用NodeMCU作为udp客户端访问udp服务端得c++代码。
#include <ESP8266WiFi.h> #include <WiFiUdp.h> //定义全局量 const char* ssid = "xxx"; const char* password = "xxxxxx"; //Udp param WiFiUDP Udp; unsigned int localUdpPort = 2333; // 本地端口号 char incomingPacket[537]; // 接收缓冲区 void setup() { // put your setup code here, to run once: Serial.begin(115200); Serial.println(); Serial.print("Connecting to "); Serial.println(ssid); WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); Serial.println(""); Serial.println("WiFi connected"); Serial.println("IP address: "); Serial.println(WiFi.localIP()); } //init udp UdpInit(); UdpSend(); } void UdpInit() { //https://www.
英文标点符号比较多,如,(逗号)、。(点号)、?(问号)、:(冒号)、;(分号)、‘’(单引号)、!(感叹号)、“”(双引号)、—(连接号)、——(破折号)、……(省略号)、()(小括号)、【】(中括号)、{}(大括号)、(顿号)、《》书名号等。以下正则表达式能够验证英文标点符号。
[,。?:;‘’!“”—……、]|(-{2})|(())|(【】)|({})|(《》) (64)
正则表达式(64)解释:
[,。?:;‘’!“”—……、]匹配,、。、?、:、;、‘、’、!、“、”、—、……符号。
-{2}匹配破折号。
()匹配省略号小括号。
【】匹配中括号。
{}匹配大括号。
《》匹配书名号。
英文标点符号比较多,如,(逗号)、.(点号)、?(问号)、:(冒号)、;(分号)、'(单引号)、!(感叹号)、"(双引号)、-(连接号)、--(破折号)、…(省略号)、()(小括号)、[](中括号)、{}(大括号)、`(所有格符号)等。以下正则表达式能够验证英文标点符号。
[-,.?:;'"!`]|(-{2})|(/.{3})|(/(/))|(/[/])|({}) (63)
正则表达式(63)解释:
[-,.?:;'"!']可以匹配-、,、.、?、:、'、"、!、`。
-{2}匹配破折号--。
/.{3}匹配省略号…。
/(/)匹配小括号()。
/[/]匹配中括号。
{}匹配大括号。
原文链接:http://blog.sina.com.cn/s/blog_6faf711d0101eeso.html
总线的概念 所谓总线(Bus),一般指通过分时复用的方式,将信息以一个或多个源部件传送到一个或多个目的部件的一组传输线。是电脑中传输数据的公共通道。 按照功能划分,大体上可以分为地址总线和数据总线。有的系统中,数据总线和地址总线是复用的,即总线在某些时刻出现的信号表示数据而另一些时刻表示地址;而有的系统是分开的。51系列单片机的地址总线和数据总线是复用的,而一般PC中的总线则是分开的。
什么是数据总线? 就是指主板上的桥段控制器 数据从一个地方传到另一个地方控制其传输速率的称谓数据总线
数据总线技术指标: 1、总线的带宽(总线数据传输速率) 程序总线总线的带宽指的是单位时间内总线上传送的数据量,即每钞钟传送MB的最大稳态数据传输率。与总线密切相关的两个因素是总线的位宽和总线的工作频率,它们之间的关系:
总线的带宽=总线的工作频率*总线的位宽/8
2、总线的位宽
总线的位宽指的是总线能同时传送的二进制数据的位数,或数据总线的位数,即32位、64位等总线宽度的概念。总线的位宽越宽,每秒钟数据传输率越大,总线的带宽越宽。
3、总线的工作频率
总线的工作时钟频率以MHZ为单位,工作频率越高,总线工作速度越快,总线带宽越宽。
数据总线作用: 数据总线是双向三态形式的总线,即他既可以把CPU的数据传送到存储器或I/O接口等其它部件,也可以将其它部件的数据传送到CPU。数据总线的位数是微型计算机的一个重要指标,通常与微处理的字长相一致。例如Intel 8086微处理器字长16位,其数据总线宽度也是16位。需要指出的是,数据的含义是广义的,它可以是真正的数据,也可以指令代码或状态信息,有时甚至是一个控制信息,因此,在实际工作中,数据总线上传送的并不一定仅仅是真正意义上的数据。“
什么是地址总线? 地址总线又称位址总线,属于一种电脑总线 (一部份),是由CPU 或有DMA 能力的单元,用来沟通这些单元想要存取(读取/写入)电脑内存元件/地方的实体位址。
地址总线作用: 地址总线AB是专门用来传送地址的,由于地址只能从CPU传向外部存储器或I/O端口,所以地址总线总是单向三态的,这与数据总线不同。地址总线的位数决定了CPU可直接寻址的内存空间大小,比如8位微机的地址总线为16位,则其最大可寻址空间为216=64KB,16位微型机的地址总线为20位,其可寻址空间为220=1MB。一般来说,若地址总线为n位,则可寻址空间为2n字节。“
数据总线和地址总线的区别: 数据总线:为个部件之间提供数据传送的通路。地址总线:控制器传送地址编码给存储器的通路.32位和64位指的是地址。
总线可分成CPU总线,存储器总线,I/O通道总线和外围接口总线四个层次。每个层次的总线又分为地址总线、控制总线、数据总线等三种。地址总线和控制总线上的信号是由执行总线操作的主设备产生的,CPU和DMA控制器都有权控制总线。数据总线是为各部件之间提供数据传送的通路。只有在控制总线和地址总线的作用下,数据总线才有意义。
if(){ throw new Exception(); }
这里是在发生中文路径错误的时候,修改C盘下中文文件夹的名称时的方法参考链接
https://www.cnblogs.com/skysowe/p/6855622.html
const time = { start: 1534212040000, //倒计时开始时间 end: 1534248000000 //倒计时结束时间 } page({ onload: function() { // 倒计时活动开始 let tm = this.getnow(); if (tm < time.start) { //活动未开始 console.log('活动未开始') let cd1 = setInterval(() => { let watch1 = this.countDown(time); if (watch1 == '00:00:00') { clearInterval(cd1) this.setData({ clock: '' }) } else if (watch1 == 'noStart') { this.setData({ clock: '' }) } else { this.setData({ clock: watch1 }) } }, 1000) } else if (tm > time.
解决分类问题中正负样本分布不均衡问题的解决方法:主要分重采样、欠采样、调整权值 1. 重采样。
A可视作重采样的变形。改变数据分布消除不平衡,可能导致过拟合。
2. 欠采样。
C的方案 提高少数类的分类性能,可能丢失多数类的重要信息。
如果1:10算是均匀的话,可以将多数类分割成为1000份。然后将每一份跟少数类的样本组合进行训练得到分类器。而后将这1000个分类器用assemble的方法组合位一个分类器。A选项可以看作此方式,因而相对比较合理。
另:如果目标是 预测的分布 跟训练的分布一致,那就加大对分布不一致的惩罚系数。
3. 权值调整。
D方案也是其中一种方式。
http://blog.csdn.net/ztf312/article/details/50893967
(转载源为:牛客网-嘻嘻兔 的回答)
1.首先在线安装Package Control插件
在线安装:打开sublime text ,点击菜单中的 “View”→“Show Console”(或快捷键 Ctrl + ` )打开命令行,把下面的代码粘贴进去后回车即可:
import urllib.request,os; pf = 'Package Control.sublime-package'; ipp = sublime.installed_packages_path(); urllib.request.install_opener( urllib.request.build_opener( urllib.request.ProxyHandler()) ); open(os.path.join(ipp, pf), 'wb').write(urllib.request.urlopen( 'http://sublime.wbond.net/' + pf.replace(' ','%20')).read()) 2.安装Rretty Json cmd + shift +p,输入"Package...."
选中“Package Control: Install Package”并回车,然后通过输入插件的名字pretty json找到插件并回车安装即可。
3.使用command + ctrl + j快捷键来格式化当前页面的内容
格式化之前
{"status":200,"data":{"pageInfo":{"current":1,"pageSize":5,"maxPage":1,"total":1},"list":[{"coreRefId":"1000147","positionUseRatio":"0.58","weightUseRatio":"-"}]}} 格式化之后
{ "status": 200, "data": { "pageInfo": { "current": 1, "pageSize": 5, "maxPage": 1, "total": 1 }, "list": [ { "
首先添加spring约束(原文https://blog.csdn.net/leisure_life/article/details/68483531) 添加了约束,却还没有绑定约束文件,所以没有提示,特别是在没有网络的情况下,从约束中可以看出约束文件的地址在http://www.springframework.org/schema/beans/spring-beans.xsd,还有一个在http://www.springframework.org/schema/context/spring-context.xsd,为了在没有网络的情况下也可以有提示,就需要绑定本地约束文件 先复制http://www.springframework.org/schema/context/spring-context.xsd这个地址 后续步骤如下Window—>Perferences—>MyEclips—>Files and Editors—>XML—>XML Files—>XML Catalog—>User Specified Entries—>Add 然后就会看到这个界面
然后,Key Type 选择URI,Key把你复制的内容粘贴进去,Location点击File System(绑定本地xsd) 然后找到对应的spring-context.xsd的位置,一般都是在你下载的Spring里 我的是4.2版本,根据自己的版本选择 点击ok,搞定,重新打开配置文件,提示就有了 这只是弄好了其中一个,另一个spring-beans.xsd也类似,只是它的本地位置不一样,其他操作一样 包名代码提示(原文https://blog.csdn.net/hh775313602/article/details/70176531) 第一步,先查看下自己的Eclipse是什么版本,步骤如下: 1.1 点击Eclipse菜单‘Help -> About Eclipse’,如下图:
1.2 点击Eclipse图标如下,看清楚哦,别点错了,如下图:
1.3 找到Eclipse Platform后面的Version,下图可以看出我的Eclipse是4.3.2版本的
第二步:安装Spring插件,这里以在线安装为例,想离线安装的可以自己上网查一下方法
2.1 点击Eclipse菜单‘Help ->Install New Software…. ’,如下图:
2.2 输入网址 http://dist.springsource.com/release/TOOLS/update/e4.3/,最后的4.3是Eclipse的版本号,然后按回车键,如下图:
2.3 选择需要安装的插件,建议只勾选SpringIDE即可,一共四个,如下图。然后点击‘Next’。如下图:
2.4 Eclipse会查找一下,稍等一会,然后继续点击‘Next’即可,如下图:
2.5 继续点击‘Next’ ,如下图:
2.6 选择I accepte the termsof the license agreements,然后点击’Finish’按钮,如下图:
2.7 这时候Eclipse会在后台安装,在右下角可以看到安装进度,请耐心等待。
Ps:如果安装过程中失败了,就多试几次即可,千万不要灰心哦
安装好后,会提示让重启Eclipse,点击确定即可。
第三步:
但是,到现在为止,可以出来类包名的提示,但是输入.不会自动出来,需要按Alt+/ 才行,所以还需要再设置一下,方法如下:
3.1 点击Eclipse菜单‘Window-> Preferences’ ,如下图:
3.2 依次点开菜单 ‘XML -> XMLFiles -> Editor -> Content Assist’,如下图: