显卡型号中 RTX和GTX的区别

在NVIDIA显卡中,从2004年的Geforce 6800系列开始就有【GT】的代号,代表着中高端显卡或者是加强版显卡,比如6600GT和6800GT,到了2005年的7800系列之后便引入了【GTX】的代号,直接代表着高端或者顶级显卡。进入GTX400系列以后,当时还有象征中低端的【GTS】命名,后来就连【GTS】也没有了,全部的独立显卡统称为【GTX】,仅用后面的数字大小来区分性能等级,至今GTX1000系列显卡一直延续着这样的命名方式;

继续阅读“显卡型号中 RTX和GTX的区别”

关于 PHP 路由设计

一切路由器的设计均是基于需求的,没有需求,怎么写都没关系。

一般可能会有以下需求

  • 使URL更容易理解,对搜索引擎更友好?
  • 使URL更简洁?
  • 隐藏真实地址?
  • 生成最佳路径?

PHP关于 require和include

如果一个文件的引入是为了备用,那么使用 require,例如一个文件中包含了一个类,或者一堆可用的函数,我们引入它的目的是为了使用其中的类或者方法,就用用 require.

而如果一个文件中包含的是脚本 ,也就是执行的部分,那么使用 include.

解读 MVVM

关于 MVVM

MVVM是Model-View-ViewModel的简写,是一种软件架构模式。它本质上就是MVC 的改进版。

MVVM 就是将其中的View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。当然这些事 ViewModel 已经帮我们做了,它可以取出 Model 的数据同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑。

微软的WPF带来了新的技术体验,如Silverlight、音频、视频、3D、动画……,这导致了软件UI层更加细节化、可定制化。

同时,在技术层面,WPF也带来了 诸如Binding、Dependency Property、Routed Events、Command、DataTemplate、ControlTemplate 等新特性。MVVM(Model-View-ViewModel)框架的由来便是MVP(Model-View-Presenter)模式与WPF结合的应用方式时发展演变过来的一种新型架构框架。它立足于原有MVP框架并且把WPF的新特性糅合进去,以应对客户日益复杂的需求变化。

继续阅读“解读 MVVM”

运动疗法治疗肩周炎

 第一个方法:提重物旋转疗法。做个沙袋提在手中,沙袋的重量逐渐由轻到重,从1公斤开始,逐渐增加到10公斤。如果自己觉得能够承受还可以再重一点,逐渐加大,上身向前自然弯曲,肩膀自然下垂,手持沙袋向下旋转画圈摆动,先顺时针转,然后逆时针转,这就叫提重物牵引,起到牵拉肩膀的作用,一天做三四次,一次绕十几、二十几次。但应注意,重量不应过重,以免引起肩部肌肉的痉挛,也不应引起明显疼痛,否则可能导致外伤。

继续阅读“运动疗法治疗肩周炎”

vuejs 子组件调用父组方法的定义

很多时候,我们的子组件作用有所不同,因此我们需要用相同的数据结构,而使用父组件中的方法来进行执行。

它们之间的关系不是很复杂,我们需要进行以下设置,就可以做到了


1.首先,在引用子组件时定义 v-on 属性,假如我们的子组件名称为 am-operation,而父组件也就是当前组件中要给到子组件的方法为parentMethod,那么代码如下

<am-operation v-on:callback="parentMethod"></am-operation>

注意:parentMethod正是父组件中的方法。


2.然后,我们在子组件的模板部分需要调用的地方添加如下代码

<am-button type="success" lagel="提交" @click="childrenMethod( attr1,attr2 )"></am-button>

注意:此处 childrenMethod 为子组件中的方法。


3.最后,我们需要在子组件的 methods 中添加对应的 childrenMethod方法如下

Vue.component('am-menu-operation', {
   // ......
methods:{
  childrenMethod( attr1,attr2 ){
         this.$emit( 'callback',attr1,attr2 );  
  }
}
}

注意:重点就在 this.$emit,而callback 正是 v-on:后定义的方法名称

vuejs 中的数据变化监测

数据

data: function(){
return {
a: true,
b: {
c:1,
b:2
}
}
}

监测数据 a 的变化

watch: {
  a:function(newValue, oldValue) {
    console.log(newValue)
  }
},

监测数据 b.c 的变化 ,可以通过 computed 做中间层来指定对象属性

computed: {
bc() {
return this.b.c;
 }
},
watch: {
bc(newValue, oldValue) {
    console.log(newValue)
  }
},

其它方法,这是 vuejs api 中介绍的方法

// 键路径
vm.$watch('a.b.c', function (newVal, oldVal) {
 // 做点什么
})

am-vuejs 穿越型组件

穿越型组件,指在 element-ui 的组件基础上增加了一定的组装配置后形成的新的组件,一般都是表单,由于其v-model 模式中间需要一层组件过度,因此称为穿越型,特点是需要配置两个标准属性

  • dataObject:组件对应的是哪个表单数据对像
  • dataName: 对应表单数据对象的数据名称是。

vue请求数据放在created好还是mounted里好

建议放在created里 created:在模板渲染成html前调用,即通常初始化某些属性值,然后再渲染成视图。 mounted:在模板渲染成html后调用,通常是初始化页面完成后,再对html的dom节点进行一些需要的操作。

如果在mounted钩子函数中请求数据可能导致页面闪屏问题 其实就是加载时机问题,放在created里会比mounted触发早一点,如果在页面挂载完之前请求完成的话就不会看到闪屏了

一般使用 created 比较多,如果需要严禁的区别的话,我们可以这样理解,如果请求的数据,对结果 dom 是有影响的,那么建议放到 created 中,如果请求的数据是与 dom 无关的,那么可以话在 mounted 中

这样说,一个组件是通过某个数据来渲染 dom 的,那么必然应该将 数据放在 created中加载,但有一种情况,我们创建了一个 chat ,其中一些数据是需要 chat 渲染完毕后才产生作用的,就可以放在 mounted 中。