关于编程思想:编程和英语数学到底什么关系

前景总是有人说学习编程须要英语好,须要数学好,说这些好的人编程就会很容易,就会很快学会,然而,一些英语和数学不是很优异的人,他们却仍然能很好的学会编程,那么,到底编程和英语和数学到底什么关系呢,就着这个问题,对于其外部存在的问题和分割,这里进行了一次大胆的猜测假如和论证,心愿对于您扩大思维,思考这类问题有着新的前途和办法根据.个别认为数学和英语好对于编程无利的思维模式英语跟计算机关系狭义上的意识 代码都是英文的,英语好,便于学习.遇到的问题是英文的,英语好,便于查找问题的本源和答案便于官网英语的浏览,英语好,便于浏览本博主钻研及独到观点 编程学习上的专有名词记忆跟英语的学习办法和思维有着殊途同归之妙,比方英语须要大量的记忆,记忆名词和动词等词,而后,依据学习的词汇去看文章,计算机中存在大量的术语,计算机术语跟英语单词的名词一样,是一种独有的命名形式,学习计算机术语,要像学习英语的名词一样,有着记忆,在探讨问题的时候,专业人士也会采纳术语的交换模式,所以,术语的积攒和记忆,了解学习都是跟英语的记忆学习模式一样的.学习的模式跟英语是统一的,英语学习须要学习单词,语法,而后,造句,成文章,成书,这样的流程,计算机学习相似,学术语(单词),编程语言的格局语法(英语语法),函数体或者办法(造句),我的项目(就是作品).须要长时间,须要与日俱增,计算机常识博大,博大精深,须要每天都学习一点,重复学习,重复记忆,不是一天就能学的什么都会,提高也跟英语一样,不是一天英语就能全学会,是要长时间,迟缓进步的!说成白话文,很多计算机的我的项目,小例子理论是在做着跟英语翻译一样的工作,只不过,英语是将汉语翻译成英文,或者英文翻译成汉语(对于中国人来讲),而计算机的编程语音,是将自然语言,翻译成计算机语言,或者讲计算机语言转化为自然语言.数学跟计算机关系狭义上讲 数学好,能够更好的了解形象数学好,对于算法的帮忙比拟大本博主钻研及独到观点 计算机里很多概念是数学根底的名词在计算机换了名字,或者用计算机进行了新的定义,比方数这个概念在计算机里就会相似为数据类型,数据类型还是跟中学的数的概念存在类似的中央!很多计算形式也是根底数学的计算形式很多计算方法也是数学的解题办法和思路须要跟做数学题一样,变动的状况比拟多,要重复练习,反复研究,重复思考综上所述,计算机是一门文理综合的科目,须要理科记忆力记住概念,了解概念,同时,又须要文科的抽象概念和计算方法,所以,其实人都有文理科思维,所以,其实人人都能够学习计算机,都能够学习编程,就看你怎么使用本人的能力和可能保持多久,这才是问题要害!留神:版权:本站应用「CC BY 4.0」创作共享协定,未经作者批准,请勿转载;若经批准转载,请在文章显著地位注明作者和出处。

February 24, 2022 · 1 min · jiezi

关于编程思想:编程是什么

引言咱们为什么提出“编程是什么”这个问题,是因为咱们想要解决编程的相干问题。如果问题都了解谬误,那就难以解决问题了。那为什么不是提出别的问题?因为对于要探讨的主题做好定义是十分重要的,就像咱们学习任何一门语言的时候,根本就是先学“我是谁”的句式。做好了定义,那就分明接下来要用什么办法去解决问题。如果我说“我是Java程序员”,那听者必定会在脑海里找寻“Java程序员”相干的话题或者问题。但如果我明明是Java程序员却说“我是律师”,那就是坑骗别人了。因而,“编程是什么”这个问题搞不清楚的话,就会被误导。 咱们都晓得“编程”指代的是编程式解决方案的整个设计和实现流动。但这定义的档次过于宏观了,就像我说“我是中国人”一样难以了解到更多的信息。上面咱们将参考Peter Naur在1985年写了《Programming as Theory Building》(编程就是实践构建)一文,来具体解说。此文被收录在他的著述集《Computing:A Human Activity》(Naur 1992)。 编程是什么,Peter Naur的答案如下:编程就是实践构建。这句话是从解释流动的档次来看的,换句话说,就是程序员们通过编程,对手头的问题造成或达到某种见解、实践。而不是把编程当作是程序或某种其余文字资料的生产过程。 首先,咱们来看“把编程当作是程序或某种其余文字资料的生产过程”的观点。试想下理论开发进去的程序(就是本人写进去的代码)和本人一开始构想的需要阐明、设计等文档外面的是否统一。是不是总是要通过屡次的测试和代码修复才可能达到统一?而且就算统一了,这样的统一是绝对的,编程总是要思考得更多,例如编程语言的技术限度、数据库技术的限度、硬件能力的限度等等事实的因素。非功能属性(即品质属性)的文档阐明的观点更是难以与编程的后果(运行程序)相符的。因而,“把编程当作是程序或某种其余文字资料的生产过程”的观点是有问题的。接下来咱们从程序修改角度来分析“把编程当作是程序或某种其余文字资料的生产过程”的观点存在的问题。 程序修改置信有不少人会纳闷:为什么是先从程序修改的角度?因为承受一直变动的外部环境所要求的程序修改是编程的基本局部。通过程序修改的角度来看“把编程当作是程序或某种其余文字资料的生产过程”的观点,也是一种逆推的办法,即如果编程是生产过程,那么生产过程的成绩(程序代码、文档)应该能反对程序修改。就像工厂车间能够依据生产线的须要更换机器或者人员一样。上面咱们援用一些实在的案例来看程序修改的问题。 案例1讲是A组人员开发了一个编译器能够运行在X机器上,B组人员在这里根底上进行扩大开发使其能够运行在Y机器上,即使A组人员给B组人员提供了残缺的程序文本、补充文档和A组的集体倡议,并且B组人员具备很高的主动性,但B组人员并没有对设计有着深刻的见解,因为A组人员发现B组所倡议的解决方案捣毁了编译器原有的弱小能力和简略性。又过了几年,在没有A组的领导下,另一些程序员接管了B组开发的编译器,后果它变得毫无效率了。因而,咱们能够得出这样的论断:程序代码和文档不足以作为某些最重要的设计思维的载体。 案例2讲是一个监督工业生产流动的大型实时零碎的装置和故障诊断。零碎的每次交付都须要去适配非凡环境的机器设备。存在全职的程序员A组始终从设计到交付都亲密地关注这个零碎,而且在诊断故障的时候,简直排他地依赖这个零碎上已有的常识和写好的正文代码,而不能设想有任何文档可能对他们有用。简略来说,就是利用已有常识进行排除法去诊断故障。而负责零碎的非凡装置的程序员B组,只管他们收到来自程序员A组的文档和对于应用的齐全指南,但他们依然常常遇到一些问题,须要向程序员A组征询。起因在于程序员B组对已有文档的不充沛了解,但程序员A组却能够轻易地解决这些问题。 因而,论断就是:至多对于某种大型的程序来说,继续的适应、批改和纠正其中的谬误,在实质上依赖于某种常识,而只有那组严密地继续地放弃与这一零碎分割的程序员才领有这一常识。 那咱们先大胆地推论:至多从程序修改的角度来看,编程必须包含构建程序员的常识,并把它作为根底的局部。 程序员的常识是实践如果咱们认同“程必须包含构建程序员的常识,并把它作为根底的局部”,那么咱们应该把程序员的常识作为一个实践来正确地对待。 咱们先来看:程序员的常识是什么?置信通过下面对于程序修改的探讨,咱们应该分明程序修改其实就是一种实际。既然程序修改依赖于程序员的常识,那这种常识就是实际进去的常识,也就是晓得了“怎么做”。那实践是什么?实践的根本释义就是:由实际概括进去的科学知识的有零碎的论断。显然,程序员的常识是实践。当然,这里对于实践的解释相当浮浅,只是为了能阐明问题,更深刻的对于实践的概念的了解能够参考《心的概念》(Ryle 1949)一书。 依照Ryle对实践开发出的概念,简略来说,就是:如果一个人领有这个意义上的实践,那么他就不仅晓得如何做某些事件,而且还能通过对所关怀的流动进行解释、论证、答复询问,来反对理论在做的这些事件。 由程序员构建的实践表白那既然分明“程序员的常识是实践”,那这样的实践是否能够依照肯定的规定表达出来以便于大家了解?这里先给出的答案是:在原则上不能。因为实践依赖于抓住真实世界中的情景和事件之间的某种类似性,这种依赖关系导致了某些领有实践的人可能把握某些常识,但在原则上他们却不能用规定的词汇把这些常识表达出来”。实际上,类似性难以使用准则的词汇表达出来,就像咱们难以说出香味的类似性一样。如果咱们说香味像桃子,那就不是一个准则的词汇,除非咱们建设了一套用水果来形容香味的准则,就像冷热的掂量应用温度计一样。 因而,从“编程是实践构建”的观点来看,“由程序员所构建的实践”具备超过其余产品(比方程序代码、用户文档、还有规格阐明等额定的文档)的位置。程序员的常识(即由程序员所构建的实践)至多在三个根本畛域中超过了文档所给出的常识: 程序员能解释:解决方案与它可能帮忙解决的事实中的事件的关系。即对于程序代码的每一部分和它整体构造上的每个特色,它匹配了事实中的哪个方面或流动。反过来,对于事实中的任何一个方面或流动,它们是怎么映射到程序代码中的。程序员能解释:程序代码的每一部分的成因。最终根据肯定都是程序员的间接的、直觉的常识或预计。因为依据手头相干的状况进行准则和规定的抉择,必须依赖于程序员的间接常识。程序员能解释:如何更好地批改程序。因为程序员领有实践,让其能够感知到新需要或Bug修复与编程实践经验的相似性,从而能够更好地批改程序。程序修改的问题及老本提出“编程是实践构建”的观点有一个重要的理由,那就是:想要建设一个对于编程的见解,而这个见解反对对程序修改进行正当的了解。 软件总会被批改,并冀望以尽可能低成本来批改程序。如果把编程视作代码生产,则主导的老本是代码操作的老本。但在“编程是实践构建”的观点中,这种论据齐全是谬误的。如果假如程序的灵活性十分高,即程序可能解决某种类型的外部环境变动,以至于基本不必任何批改,这样的话,老本就是最低的。但事实是内置在程序中的灵活性不能解决“让程序适应与事实中变动的环境”的须要。 在“编程是实践构建”的观点中,程序修改并不是实践的批改。一个领有实践的人必须曾经筹备好了去响应各种可能产生程序修改的问题和要求。因为领有实践的程序员通过洞察新需要与程序曾经满足了的那些需要之间的类似性,可能更好地批改程序。 如果没有正确地体会程序所依赖的实践,程序代码就会消退成了程序员所做的批改的后果。因为只有从“编程是实践构建”的角度,能力真正了解诸如简略和构造良好之类的代码品质。 程序修改的生命周期咱们再从程序修改的生命周期来看老本的问题。程序修改的生命周期有生存、死亡、复活,具体解释如下: 程序处于生存状态就是把握了它的实践的程序员团队保留了对于该程序的被动管制,特地是保留了对于所有批改的管制。程序处于死亡状态就是把握了它的实践的程序员团队遣散了。程序的复活就是新的程序员团队从新建设了这个程序的实践。这里程序的复活是产生老本的要点。但严格来说,不可能仅依据文档就能使程序复活(也就是从新建设程序的实践),必须接管程序的新程序员团队有机会于那些已把握了这一实践的程序员们密切接触。因为只有这样能力相熟该程序在相干真实世界的更广阔的情景中的地位,能力理解“这个程序如何工作”和“如何在该程序的实践下解决那些非凡的程序反馈和程序修改”。因而,从“编程是实践构建”的观点来看:在程序复活之前,该当摈弃现有的程序代码,还该当给这个新组建的程序员团队一些机会去以全新的形式解决所给的问题。这样一个过程更可能产生一个可行的程序,而不是程序复活,而老本不会更高,反而可能会更低。即使是在用一个演进式的程序员团队来使这个程序始终放弃在生存状态的时候,也可能产生相似的问题,起因是:每个程序员的能力和背景教训不同,特地是当这个团队始终在不能防止人员流动的状况下运行的时候更是如此。 程序员的定位咱们从“编程是实践构建”的观点中能学到什么呢?集体认为最重要还是程序员本人的定位问题。编程流动的首要后果是“程序员们持有的实践”。而在真正的实质上,这一实践就是每个程序员精神财富的一部分,因而,咱们必须摈弃“程序员是程序生产流动中很容易替换的部件”的概念。相同,必须把程序员看作是这一流动的一个负责任开发者和管理者,而计算机只是这个流动的一部分。为了满足这种格局,作为企业雇主,必须给程序员一个业余的定位,因为编程依赖于程序员常识上的精通;作为程序员,必须以“进步对实践形成的理解能力”为主,以“精通概念、数据体现和数据处理等技能”为辅,来晋升本人的能力。 论断编程就是一种流动。从解释流动的档次来看,编程就是实践构建。这样一种观点引出了程序修改的生命周期的概念,探讨程序复活的不可取,倡议是从新构建新的实践。进一步推论是:必须把程序员定位为“有责任的永恒开发者和这一流动的管理者,计算机常识其中的一部分”,而程序员的自我的晋升重点在于实践构建的练习,次重点是精通概念、数据体现和数据处理等技能的学习。

January 27, 2022 · 1 min · jiezi

关于编程思想:面向过程与面向对象

面向过程了解一种以过程为核心的编程思维。剖析出解决问题所须要的步骤,而后用函数把这些步骤一步一步实现,应用的时候一个一个顺次调用就能够了。 特点自顶向下的编程 「函数是一等公民」,如下图所示 长处性能比面向对象高。 毛病没有面向对象易保护、易复用、易扩大。 利用场景性能要求较高且规模较小的问题。 面向对象了解一种以对象为根底的编程思维。把形成问题的事物分解成各个对象,建设对象的目标不是为了实现一个步骤,而是为了形容每个事物在整个解决问题的步骤中的行为和状态的变动。 特点高度实物抽象化 「对象是一等公民」。 长处易保护、易复用、易扩大,因为面向对象有封装、继承、多态性的个性,能够设计出低耦合的零碎,使零碎更加灵便、更加易于保护。 毛病性能比面向过程低(面向更高的逻辑形象层,使得面向对象在实现的时候,不得不做出性能下面的就义,计算工夫和空间存储大小的都开销很大)。 利用场景规模较大且对维护性、复用性及扩展性的要求较高。 三大特色封装将形象失去的数据和行为(或性能)相结合,造成一个“黑盒”,仅对外裸露一些可调用的公共办法。 继承继承机制容许创立分等级档次的类。继承就是子类继承父类的特色和行为,使得子类对象(实例)具备父类的实例域和办法,或子类从父类继承办法,使得子类具备父类雷同的行为。 多态同一个行为具备多个不同表现形式或状态的能力。一个类实例(对象)的雷同办法在不同情景有不同表现形式。多态机制使具备不同内部结构的对象能够共享雷同的内部接口。 五大准则繁多职责准则(SRP)一个类应该有且只有一个去扭转它的理由,这意味着一个类应该只有一项工作。 凋谢关闭准则(OCP)对象或实体应该对扩大凋谢,对批改关闭。 里氏替换准则(LSP)在对象x为类型T时f(x)成立,那么当S是T的子类时,对象y为类型S时f(y)也应成立(即对父类的调用同样实用于子类)。 依赖倒置准则(DIP)高层次的模块不应该依赖于低层次的模块,他们都应该依赖于形象(即具体实现应该依赖于形象,而不是形象依赖于实现)。 接口隔离准则(ISP)不应强制客户端实现一个它用不上的接口,或是说客户端不应该被迫依赖它们不应用的办法,应用多个专门的接口比应用单个接口要好的多。 异同点1.两者都是软件开发思维,先有面向过程,后有面向对象;2.封装性:面向过程是封装的是性能,而面向对象封装的是数据和性能,并且面向对象具备继承性和多态性;3.编程特点:面向过程是自顶向下的编程 「函数是一等公民」、面向对象是高度实物抽象化 「对象是一等公民」。 举个栗子造汽车汽车的组成有发动机、轮胎等诸多配件组成,造汽车的步骤假如个别是先造发动机、再造轮胎、再造车架等配件、最初实现汽车的组装。 面向过程将造汽车步骤别离封装成函数实现(如造发动机makeEngine()、造轮胎makeTyre()、组装汽车assembleVehicle()等),而后依照步骤顺次调用实现造车(makeEngine()->makeTyre()->assembleVehicle())。 面向对象剖析造汽车这个问题中波及的事物(汽车、发动机、轮胎等),别离为其封装构建一个类,如汽车Vehicle(属性:色彩、发动机、轮胎等,办法:启动、刹车等)、发动机Engine(属性:色彩、材质、分量等,办法:运行、进行等)、轮胎Tyre(属性:色彩、材质、分量等,办法:滚动、进行等)。造车的话就是先创立一个汽车对象,而后创立并赋值汽车组成部分(属性)须要的对象,一个汽车就造好了。 五子棋五子棋的根本游戏规则大家都理解,就不过多的赘述了。 面向过程首先剖析问题的步骤:1.开始游戏 2.白子先走 3.绘制画面 4.判断输赢 5.轮到黑子 6.绘制画面 7.判断输赢 8.返回步骤2 9.输入最初后果。把下面剖析进去的每个步骤用不同的办法来实现。 面向对象剖析五子棋这个问题中波及的事物(玩家、棋子、棋盘、规定),别离为其封装构建一个类,1.五子棋分为黑白单方且这两方的行为截然不同 2.棋盘零碎,负责绘制画面 3.规定零碎,负责断定诸如犯规、输赢等。第一类对象(玩家对象)负责接管用户输出,并告知第二类对象(棋盘对象)棋子布局的变动,棋盘对象接管到了棋子的变动就要负责在屏幕下面显示出这种变动,同时利用第三类对象(规定零碎)来对棋局进行断定。 Q&A面向过程和面向对象的区别是什么?问题剖析:该问题次要波及到面向过程和面向对象这两种编程思维的根本定义和异同点。 问题答复:面向过程是一种以过程为核心的编程思维,将问题分解成一个一个的步骤,而后用函数去封装各个步骤的性能,再依照顺序调用函数就行了。面向对象是一种以对象为核心的编程思维,将问题波及到的事物分解成各个对象,建设对象的目标不是为了形容某一个步骤,而是为了形容每个事物在解决问题的步骤中波及的行为和状态的变动。面向过程是一种自上而下的编程,函数是一等公民;但面向对象是一种高度抽象化的编程,对象是一等公民(特点)。面向过程封装的是性能,而面向对象封装的是数据和性能并且面向对象还具备继承性和多态性(封装性)。尽管面向过程和面向对象都是编程思维,然而先有面向过程才有面向对象,其实面向对象的行为封装的执行办法外部其实也是针对这个具体行为或步骤的面向过程实现。 用面向对象的思维谈一谈面试的“过程”?问题剖析:该问题次要想考查的是候选人对面向过程和面向对象这两种编程思维的了解并且是否灵活运用在实际场景,而不仅仅是背诵概念(这种面试题十分好,不仅能看到候选人对相干实践概念的了解还能考查其对相干概念的了解水平以及实际中对相干概念的利用状况如何)。首先必定是先要晓得面试的步骤(个别状况-电面)=>1.面试官打电话给候选人预约面试工夫2.在面试工夫面试官和候选人都已在线,开始面试3.候选人做一下集体的自我介绍4.面试官开始发问5.候选人依据面试官的问题作答6.返回第四部,循环执行直到面试官不再发问7.面试官会在正式的面试发问环节完结后提出候选人是否有什么问题的问题8.候选人发问9.面试官作答10.面试完结。 问题答复:用面向对象的思维剖析这个“面试过程问题”,波及的事物有面试官,候选人,通信工具(电话),面试官属性有名字、身份标识(面试官)、候选人(在此种场景下是一个面试官面试一个候选人),行为有应用通信工具、提出问题、解答问题、完结面试;候选人属性有名字、身份标识(候选人),行为有接听通信工具、提出问题、解答问题。整个过程就十分清晰了,面试官应用指定的通信工具分割候选人,候选人应答实现一对一连贯建设,面试官对候选人发问,候选人对面试官的指定问题作答,候选人对面试官发问,面试官对候选人的指定问题作答。面试官和候选人都没有新的发问后,面试官完结面试。 参考《Java核心技术·卷 I(原书第10版)》面向对象与面向过程的实质的区别深刻了解面向过程和面向对象编程思维

November 14, 2021 · 1 min · jiezi

缓存击穿-雪崩

缓存击穿:缓存中不存在key,大量访问穿透到DB造成系统崩溃     DB中不存在key,可能为恶意攻击         设置key = null 或 "",且较短的过期时间         设置bitmap,使用布隆算法过滤一定不存在的key     DB中存在key         高频访问的热点数据设置永不过期,可通过定时脚本更新         大量请求访问同一个key,通过锁控制只有一个请求读取DB,其他请求等待或直接返回 缓存雪崩:缓存中大量key同时过期,DB压力暴增     设置随机过期时间,确保key不会同一时间过期

June 28, 2020 · 1 min · jiezi

幂等

幂等操作的特点是其任意多次执行所产生的影响均与一次执行的影响相同。幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数。这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变 幂等的实现方案系统状态机控制幂等(旧状态无法提交) 页面通过 loading、跳页 控制无法重复点击 后台token校验 token由前端生成,存redis,校验token存在即为处理过或处理中的请求 setnx token校验,token由服务端生成,先申请,存redis,使用时删除成功为有效请求 del 参数校验 入参存redis,重点参数一致认定为相同请求(例如个人三要素验证) 在一定时间范围内,参数一致认定为想通请求(例如创建订单) DBselect & delete 天然幂等 insert 先查询是否存在再插入 使用联合唯一索引 使用中间去重表 update 业务场景并发低,set a = 123 认定为幂等 业务场景并发低,使用version来控制幂等 业务场景高并发 对于自减 where count - 1 > 0 对于自增 通过后端代码去重 或拆表使 count = select count(0) from table_b 由高并发引发的联想通过MQ进行削峰,引发重复消费问题 通过db或redis,存消息id解决重复消费问题 通过消息参数做业务去重(后台 参数校验)

June 28, 2020 · 1 min · jiezi

CAP

数据一致性强一致性在任意时刻,所有节点中的数据是一样的。同一时间点,节点A中获取到key的值与在节点B中获取到key的值应该都是一样的。 弱一致性:与强一致性需要同时保持所有节点的数据是一样的不同,弱一致性允许同一时间点在节点A与节点B上面读取的数据不一致,如多级缓存。 最终一致性是弱一致性的一种特例,保证用户最终能够读取到某操作对系统特定数据的更新。但是随着时间的迁移,不同节点上的同一份数据总是在向趋于一致的方向变化。简单的理解为在一段时间后,节点间的数据会最终达到一致状态。 CAP 在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition Tolerance(分区容错性),三者不可兼得。 一致性(C)在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本) 可用性(A)在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性) 分区容错性(P)以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。 Partition tolerance 分区容错 大多数分布式系统都分布在多个子网络。每个子网络就叫做一个区(partition)。分区容错的意思是,区间通信可能失败。比如,一台服务器放在中国,另一台服务器放在美国,这就是两个区,它们之间可能无法通信。 上图中,G1 和 G2 是两台跨区的服务器。G1 向 G2 发送一条消息,G2 可能无法收到。系统设计的时候,必须考虑到这种情况。 一般来说,分区容错无法避免,因此可以认为 CAP 的 P 总是成立。CAP 定理告诉我们,剩下的 C 和 A 无法同时做到。 Consistency 一致性 意思是,写操作之后的读操作,必须返回该值。举例来说,某条记录是 v0,用户向 G1 发起一个写操作,将其改为v1。 接下来,用户的读操作就会得到 v1。这就叫一致性。 问题是,用户有可能向 G2 发起读操作,由于 G2 的值没有发生变化,因此返回的是 v0。G1 和 G2 读操作的结果不一致,这就不满足一致性了。 为了让 G2 也能变为 v1,就要在 G1 写操作的时候,让 G1 向 G2 发送一条消息,要求 G2 也改成 v1。 ...

June 24, 2020 · 1 min · jiezi