针对浅谈链接打开方式的优缺点以及怎么应用和打开链接的方式有哪四种这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展css样式引入方式的优缺点对比、golang的优点以及缺点、javascrip
针对浅谈链接打开方式的优缺点以及怎么应用和打开链接的方式有哪四种这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展css样式引入方式的优缺点对比、golang的优点以及缺点、javascript 中各种继承方式的优缺点、Java创建线程三种方式的优缺点等相关知识,希望可以帮助到你。
本文目录一览:浅谈链接打开方式的优缺点以及怎么应用(打开链接的方式有哪四种)
在浏览网站内容的时候,我们经常碰到链接,无论是内部链接还是外部链接,打开链接的时候一般都是以下三种方式,下面我就谈谈这三种链接打开方式各自的优缺点以及在实际应用中,我们需要怎么选择。*、当前窗口打开优点:可以一直在一个窗口内看内容,不会打开很多窗
在浏览网站内容的时候,我们经常碰到链接,无论是内部链接还是外部链接,打开链接的时候一般都是以下三种方式,下面我就谈谈这三种链接打开方式各自的优缺点以及在实际应用中,我们需要怎么选择。
*、当前窗口打开
优点:可以一直在一个窗口内看内容,不会打开很多窗口、占用太多资源。窗口只有一个,关闭容易;
缺点:当用户需要看几个页面的内容,或者需要对比着看的时候,就很麻烦。或者必须按住SHIFT点击链接,但很少人知道和使用该操作;
第二、新窗口打开
优点:用户点链接的时候,当前浏览的内容不会被替换,不需要通过前进、后退去看自己看过的内容;
缺点:访问一会,就会产生大量窗口,占用资源。每个窗口都需要手动关闭;
第三、有选择的使用新窗口和当前窗口
优点:可以比较人性化的解决以上两种方式所带来的不便。不会大量增加窗口数量,同时用户也可以在多个窗口切换阅读;
缺点:用户在点某个链接时的需求未必与设计人员的想法完全一样。用户无法确定到底现在这个链接是在新窗口还是当前窗口打开,给用户造成一定的心理“压力”。
那么,怎么选择链接打开方式呢?我们需要了解以下的情况:
1. 中国人更接受链接在新窗口打开的方式;
2. 对于同类型的信息,使用同样的链接打开方式;
3. 以下情况使用当前窗口打开:
新闻的分页标签、列表的翻页标签、新闻的上/下一篇新闻的链接、线性的任务(用户注册、发布信息等)、当链接属于用户线性的阅读/操作需要时。
4. 以下情况使用新窗口打开:
频道的内容链接、导航链接、新闻内延伸阅读的链接、新闻的相关内容链接、在用户需要对同类型产品进行比较时;
网站链接在做网站中地位特别重要,我们需要选择合适的链接打开方式,给顾客*好的用户体验。
本文章网址:http://www.ppssdd.com/info/17785.html。转载请保留出处,谢谢合作!css样式引入方式的优缺点对比
1、行内样式
优点:书写方便,权重高
缺点:没有做到结构样式相分离
<divheight:100px></div>
(视频教程推荐:
2、内部样式
立即学习“前端免费学习笔记(深入)”;
优点:结构样式相分离
缺点:分离不彻底
<style> div { color: violet; font-size: 16px; } </style>
3、外部样式
优点:完全实现结构和样式相分离
缺点:需要引入
<!-- 引入css初始化文件 --> <link rel="stylesheet" href="css/normalize.css" /> <!-- 引入公共样式 --> <link rel="stylesheet" href="css/baes.css"> <!-- 引入首页样式 --> <link rel="stylesheet" href="css/index.css">
推荐教程:CSS入门基础教程
以上就是
golang的优点以及缺点
golang 是一款高性能、并发处理强大的编程语言,语法简洁,跨平台。它的优点还包括高效并发、丰富的库和工具生态系统。不过,golang 也存在一些缺点,如面向对象编程有限、缺乏泛型、对低功耗设备支持有限、生态系统相对较小、编译时间长。
Golang 的优点
Golang 是一款由 Google 开发的开源编程语言,因其性能卓越、并发处理能力强大、语法简洁而备受推崇。具体优点包括:
- 高性能: Golang 采用并发模型,并提供 goroutine 机制,能够充分利用多核 CPU,实现高吞吐量和低延迟。
- 高效并发: Golang 内置并发支持,包括频道和同步原语,使开发人员能够轻松编写高并发代码,避免传统多线程编程中的复杂性。
- 语法简洁: Golang 采用 C 语法风格,简洁易读。它提供了一种类型安全、内存安全的语言,减少了错误发生的概率。
- 跨平台: Golang 是一款跨平台语言,编译后的程序可在多个操作系统上运行,包括 Windows、MacOS 和 Linux。
- 丰富的库和工具: Golang 拥有丰富的库和工具生态系统,涵盖了各种开发领域,包括 Web 开发、机器学习和数据分析。
Golang 的缺点
尽管拥有一些优点,Golang 也存在一些缺点:
立即学习“go语言免费学习笔记(深入)”;
- 面向对象编程有限: Golang 并不是严格意义上的面向对象语言,它不支持类继承和多态性等面向对象编程特性。
- 缺乏泛型: Golang 没有内置泛型支持,这可能会限制其在某些用例中的使用,例如泛型容器和算法。
- 对低功耗设备支持有限: Golang 主要用于服务器端开发,它对低功耗设备的支持相对有限。
- 生态系统相对较小: 与 Python 或 Java 等流行语言相比,Golang 的生态系统较小,在某些情况下可能缺少必要的库或工具。
- 编译时间长: 对于大型项目,Golang 的编译时间可能会比较长,这可能会影响开发效率。
以上就是
javascript 中各种继承方式的优缺点
javascript中实现继承的方式有很多种,一般都是通过原型链和构造函数来实现。下面对各种实现方式进行分析,总结各自的优缺点。
一 原型继承
let Super = functioin(name = ''eric'') {
this.name = name;
this.getName = function() {
return this.name;
}
}
let Sub = function(sex = ''male'') {
this.sex = sex;
}
Sub.prototype = new Super(''eric''); //通过改变原型对象实现继承
Sub.prototype.constructor = Sub // 保持构造函数和原型对象的完整性
let sub1 = new Sub(''male'')
sub2 = new Sub(''female'');
console.log(sub1.getName()); // eric
console.log(sub1.hasOwnProperty(''name'')) // false 说明是继承而来的属性
console.log(sub1.getName === sub2.getName) // true,复用了方法
优点:父类的方法(getName)得到了复用。
缺点:同理父类的属性(name)也是复用,即子类实例没有自己的属性。
二 构造函数实现继承
let Super = function(name = ''eric'') {
this.name = name;
this.getName = function() {
return this.name;
}
}
let Sub = function(name, sex) {
Super.call(this, name);
this.sex = sex;
}
let sub1 = new Sub(''eric'', ''male'');
let sub2 = new Sub(''ada'', ''female'');
console.log(sub1.name) // ''eric''
console.log(sub1.hasOwnProperty(''name'')) // true 说明不是继承而来,是自己的属性
console.log(sub1.getName === sub2.getName) // false 方法没有得到复用
优点:子类的每个实例都有自己的属性(name),不会相互影响。
缺点:但是继承父类方法的时候就不需要这种特性,没有实现父类方法的复用。
三 组合式继承
let Super = function(name = ''eric'') {
this.name = name;
}
Super.prototype = {
constructor: Super,
getName() {
return this.name;
}
}
let Sub = function(sex) {
Super.call(this, ''eric''); //继承父类属性
this.sex = sex;
}
Sub.prototype = new Super(''eric''); //继承父类方法
Sub.prototype.constructor = Sub;
let sub1 = new Sub(''male''),
sub2 = new Sub(''female'');
console.log(sub1.name); // ''eric''
console.log(sub1.hasOwnProperty(''name'')); // true 自己的属性
console.log(sub1.getName === sub2.getName); // true 复用了方法
console.log(Sub.prototype) // { name: "eric" }
console.log(sub1) // { name: "eric", sex: "male" }
优点:继承了上述两种方式的优点,摒弃了缺点,复用了方法,子类又有各自的属性。
缺点:因为父类构造函数被执行了两次,子类的原型对象(Sub.prototype)中也有一份父类的实例属性(name),而且这些属性会被子类实例(sub1,sub2)的属性覆盖掉(即通过sub1.name访问不到Sub.prototype上的name属性),也存在内存浪费。
四 寄生组合式继承
let Super = function(name = ''eric'') {
this.name = name;
}
Super.prototype = {
constructor: Super,
getName() {
return this.name;
}
}
let Sub = function(sex, name) {
Super.call(this, name);
this.sex = sex;
}
// 组合继承的缺点就是在继承父类方法的时候调用了父类构造函数,从而造成内存浪费,
// 现在只要解决了这个问题就完美了。那在复用父类方法的时候,
// 使用Object.create方法也可以达到目的,没有调用父类构造函数,问题解决。
Sub.prototype = Object.create(Super.prototype);
// 当然这个地方也可以使用Object.setPrototypeOf(Sub.prototype, Super.prototype)
// 因为更改一个对象的隐士原型(__proto__)对浏览器和js引擎都是很慢对操作,所以建议使用Object.create()创建一个具有指定原型对象的新对象
Sub.prototype.constructor = Sub;
五 es6中的class
class Super() {
constructor(props = { name: ''eric'' }) {
this.name = props.name;
}
setName(name) {
this.name = name;
}
getName() {
return this.name;
}
}
class Sub extends Super {
constructor(props) {
super(props = { sex: ''male'' }); // 创建实例,继承父类属性和方法
this.sex = props.sex;
}
}
let sub1 = new Sub({
name: ''eric'',
sex: ''male''
})
let sub2 = new Sub({
name: ''eric'',
sex: ''female''
})
sub1.setName(''ada'');
console.log(sub1.getName(),sub2.getName()) // ada,eric,属性没复用,各自实例都有自己的属性。
console.log(sub1.getName === sub2.getName) // true; 复用了父类的方法
console.log(Sub.prototype.sex) // undefined
// 子类原型对象上没有父类构造函数中赋值的属性,不是组合式继承
由以上结果可以看到es6中的class只不过是一种语法糖,通过上面的验证得知符合寄生组合继承的特点,但这只是猜测,class具体都做了哪些操作还不是很清楚,后面有时间,对class做一下研究。
Java创建线程三种方式的优缺点
今天小编就为大家分享一篇关于Java创建线程三种方式的优缺点,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
Java创建线程主要有三种方式:继承Thread类创建线程、实现Runnable接口创建线程和实现Callable和Future创建线程。
继承Thread类
public class Thread1 extends Thread { @Override public void run() { for (int i = 0; i
实现Runnable接口
public class Thread2 implements Runnable { @Override public void run() { for (int i = 0; i
实现Callable接口
FutureTask类包装Callable对象时,封装了Callable对象的call()方法的返回值。
class Thread3 implements Callable { @Override public Integer call() throws Exception { int i = 0; for (; i futureTask = new FutureTask(thread3); for (int i = 0; i
三种方式优缺点
采用实现接口(Runnable和Callable)的方式,线程类还可以继承其他的类。实现接口的线程对象还可以用来创建多个线程,可以实现资源共享。缺点是不能使用this指针来获取线程的名字等。
采用继承Thread类的方式,线程不能继承其他的类,但是Thread类中有getName方法,因为可以直接使用this.getName()来获取当前线程的名字。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对小编的支持。如果你想了解更多相关内容请查看下面相关链接
关于浅谈链接打开方式的优缺点以及怎么应用和打开链接的方式有哪四种的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于css样式引入方式的优缺点对比、golang的优点以及缺点、javascript 中各种继承方式的优缺点、Java创建线程三种方式的优缺点的相关知识,请在本站寻找。
本文标签: