首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

Tailwind CSS (可能)是名过其实的

Tailwind CSS 是一个工具集 CSS 框架,网上很多文章已对其有详尽的介绍。本文不是官方文档的复述,也不是系列优点的罗列,作者 Gerard 会从另一个角度出发,在尽力保持客观的前提下,立足于实际开发的场景,指出 Tailwind CSS 存在的一些问题。事实上,除了文中提及的,Tailwind CSS 还存在着不少缺点,比如对高度定制化的支持程度不足、记忆大量预定义类名带来的心智负担等。友情提醒,你不一定会赞同这篇文章的看法,因为我们的看法会受到自身认知和使用体验的影响,但更重要的是可能是作者对新兴技术的态度,用他的原话说,就是:“When everyone is shouting that it’s awesome, it’s usually a good moment to sit down and have a good look at it”

02

40个Java集合类面试题和答案

1.Java集合框架是什么?说出一些集合框架的优点? 每种编程语言中都有集合,最初的Java版本包含几种集合类:Vector、Stack、HashTable和Array。随着集合的广泛使用,Java1.2提出了囊括所有集合接口、实现和算法的集合框架。在保证线程安全的情况下使用泛型和并发集合类,Java已经经历了很久。它还包括在Java并发包中,阻塞接口以及它们的实现。集合框架的部分优点如下: (1)使用核心集合类降低开发成本,而非实现我们自己的集合类。 (2)随着使用经过严格测试的集合框架类,代码质量会得到提高。 (3)通过使用JDK附带的集合类,可以降低代码维护成本。 (4)复用性和可操作性。 2.集合框架中的泛型有什么优点? Java1.5引入了泛型,所有的集合接口和实现都大量地使用它。泛型允许我们为集合提供一个可以容纳的对象类型,因此,如果你添加其它类型的任何元素,它会在编译时报错。这避免了在运行时出现ClassCastException,因为你将会在编译时得到报错信息。泛型也使得代码整洁,我们不需要使用显式转换和instanceOf操作符。它也给运行时带来好处,因为不会产生类型检查的字节码指令。 3.Java集合框架的基础接口有哪些? Collection为集合层级的根接口。一个集合代表一组对象,这些对象即为它的元素。Java平台不提供这个接口任何直接的实现。 Set是一个不能包含重复元素的集合。这个接口对数学集合抽象进行建模,被用来代表集合,就如一副牌。 List是一个有序集合,可以包含重复元素。你可以通过它的索引来访问任何元素。List更像长度动态变换的数组。 Map是一个将key映射到value的对象.一个Map不能包含重复的key:每个key最多只能映射一个value。 一些其它的接口有Queue、Dequeue、SortedSet、SortedMap和ListIterator。 4.为何Collection不从Cloneable和Serializable接口继承? Collection接口指定一组对象,对象即为它的元素。如何维护这些元素由Collection的具体实现决定。例如,一些如List的Collection实现允许重复的元素,而其它的如Set就不允许。很多Collection实现有一个公有的clone方法。然而,把它放到集合的所有实现中也是没有意义的。这是因为Collection是一个抽象表现。重要的是实现。 当与具体实现打交道的时候,克隆或序列化的语义和含义才发挥作用。所以,具体实现应该决定如何对它进行克隆或序列化,或它是否可以被克隆或序列化。 在所有的实现中授权克隆和序列化,最终导致更少的灵活性和更多的限制。特定的实现应该决定它是否可以被克隆和序列化。 5.为何Map接口不继承Collection接口? 尽管Map接口和它的实现也是集合框架的一部分,但Map不是集合,集合也不是Map。因此,Map继承Collection毫无意义,反之亦然。 如果Map继承Collection接口,那么元素去哪儿?Map包含key-value对,它提供抽取key或value列表集合的方法,但是它不适合“一组对象”规范。 6.Iterator是什么? Iterator接口提供遍历任何Collection的接口。我们可以从一个Collection中使用迭代器方法来获取迭代器实例。迭代器取代了Java集合框架中的Enumeration。迭代器允许调用者在迭代过程中移除元素。 7.Enumeration和Iterator接口的区别? Enumeration的速度是Iterator的两倍,也使用更少的内存。Enumeration是非常基础的,也满足了基础的需要。但是,与Enumeration相比,Iterator更加安全,因为当一个集合正在被遍历的时候,它会阻止其它线程去修改集合。 迭代器取代了Java集合框架中的Enumeration。迭代器允许调用者从集合中移除元素,而Enumeration不能做到。为了使它的功能更加清晰,迭代器方法名已经经过改善。 8.为何没有像Iterator.add()这样的方法,向集合中添加元素? 语义不明,已知的是,Iterator的协议不能确保迭代的次序。然而要注意,ListIterator没有提供一个add操作,它要确保迭代的顺序。 9.为何迭代器没有一个方法可以直接获取下一个元素,而不需要移动游标? 它可以在当前Iterator的顶层实现,但是它用得很少,如果将它加到接口中,每个继承都要去实现它,这没有意义。 10.Iterater和ListIterator之间有什么区别? (1)我们可以使用Iterator来遍历Set和List集合,而ListIterator只能遍历List。 (2)Iterator只可以向前遍历,

03

java轻量级web框架_什么是框架

JEMSF框架 前言 今天我们准备向广大开发人员推荐一种新的框架,暂时取名JEMSF,如果您已经对Struts、Tapestry以及Spring和Hibernat有一些了解,那么应该可以更好的理解下面的文章,JEMSF是我在工作生涯中最大的一个创造,经历了很多考验和应用的试验,最后形成JEMSF。 序 一种新的事物的诞生需要经历很多的考验,我自认为JEMSF是一个很好的WEB应用框架,很久以前(2002年)JEMSF就已经出了第一个版本,定义为JEMSF Beta 1.0.0,回忆那一段美好的过程,其实是开创JEMSF艰苦的过程,我心情特别激动。我从2001年开始撰写JEMSF的基础库文件,通过和国外的一些工程师和一些学校的老师进行充分和长期的沟通,我得到了很多我以前从来没有的经验和知识;通过对Struts的研究,我领会到Struts的精神所在;通过日以继夜的撰写和修正,使我懂得新生物的创造过程的艰辛;通过不断的试验我得到了一种肯定,如果我放弃了JEMSF,那么我觉得我的生命可能会很没有意义。 今天,你看到的是JEMSF3.0的版本,已经在超过10个大中型项目进行实施。不凡有: http://xiamen.airchina.com.cn(中国国航厦门营业部) http://www1.widetrust.com.cn/AirAgent/Login.jsp (航空服务系统) http://www.vspd.cn:8081(TelAgent呼叫管理系统) http://www.vspd.cn:83(PID Manager预定系统) http://www.2617788.com(厦门大华假日同行网) 等电子商务网站和应用系统等这些大型电子商务应用网站。他们有的是在线预定系统,有的是实时销售系统,有的是大型运价文件发布系统。还有一些没有列入的系统,比如不能公开的航空公司的内部应用系统。这些系统每天要处理的数据量超过10000条,特别是前面几个,每天的订单量超过20000个。这些似乎不是我们要关心的数据,但是这些是证明了JEMSF诞生的必要性,是我准备向外界发布JEMSF的基础,没有得到很好的实验和考验之前我似乎没有什么底气拿出JEMSF,而现在,我可以大胆的拿出去了,和所有的开发人员共享我的创造。 1、JEMSF框架简介 JEMSF是一个J2EE应用开发基础框架,类似流行的Struts、Spring等实用框架。如果您已经对Struts框架有一些了解,那么开始JEMSF框架的学习将会变得更加容易。JEMSF简化了J2EE应用开发过程,为J2EE开发人员提供了基础组件,以便J2EE开发人员充分的发挥他们在业务逻辑上的才能,缩短基础组件的开发周期,从而缩短项目的开发周期。 JEMSF跨越MVC的3个层次(界面层V、控制层C、模型层M),不但提供基础的数据源的访问和界面简易标签,也提供控制逻辑的控制器,同时提供数据流与控制流分开控制,极大的方便开发人员进行应用系统的开发和设计。 JEMSF的基础组成部分:中央控制器组件,实现请求事件的综合控制,利用XML技术,采用配置文件方式实现控制请求;数据传输组件,实现层次间(比如MVC的控制层和模型层、表示层与控制层)或是对象间(比如一个控制类和一个显示页面)数据的有效传输和管理,在Web应用中可以结合Session和Application实现数据的有效转移,在普通应用中可以实现数据合理组织和分发;错误处理机制,有效的管理错误分类,实现错误描述统一性和程序的规范性;数据库操作组件,实现数据库操作的封装和保护,结合XML文件,摆脱了SQL语句和程序的紧耦合,实现数据库连接池的自动化管理,对于开发人员而言,数据库的操作变得极其的简单,代码可复用性极大的提高。数据库结果集操作也得到优化,对数据库的传入和传出参数有更好的对象给予支持;界面简易标签组件,把页面的基本对象全部封装成简易的对象,方便控制每个基本组件的特性,也支持验证过程;简单工具集合,提供对字符串、日期的操作,后期在不断的扩展中可以不断的增加工具内容,支持不断的扩张。 以下内容简要讨论Struts架构和Tapestry以及JEMSF框架对比。我们将看到这三个框架是如何清晰地区分控制,事务逻辑和外观,从而简化了开发应用程序过程的。我们还将介绍这三个框架提供的类如何使得开发工作更加简单,这些类包括: 控制程序流程的类 实现和执行程序事务逻辑的类 自定义的标记库使得创建和验证HTML表单更加容易 Struts框架具有组件的模块化,灵活性和重用性的优点,同时简化了基于MVC的web应用程序的开发。 JEMSF也是一个J2EE应用开发基础框架,类似流行的Struts、Tapestry等实用框架,并加入了数据库处理模块,是开发人员不必在Struts基础上结合Spring和Hihernat,JEMSF已经基本具备了他

01

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券