自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(41)
  • 资源 (6)
  • 收藏
  • 关注

原创 Java实现数组去重复的18种写法

数组(含List)去重复在日常工作中经常遇到,很多时候用到Set数据结构,但有时候我们需要针对数据进行干预,这时候就需要用其他的实现方式了。以下列出各种的去重方式,基本含括了所有情况。

2023-07-21 13:49:32 5900

原创 C、Java、Python实现二分查找比较

【代码】C、Java、Python实现二分查找比较。

2023-07-06 14:47:31 244

原创 JavaScript实现归并排序算法详解

归并排序(Merge Sort)算法,也叫合并排序,是创建在归并操作上的一种有效的排序算法。算法是采用分治法(Divide and Conquer)的一个非常典型的应用,且各层分治递归可以同时进行。归并排序思路简单,速度仅次于快速排序,为稳定排序算法,一般用于对总体无序,但是各子项相对有序的数列。归并排序和选择排序一样,归并排序的性能不受输入数据的影响,但表现比选择排序好的多,因为始终都是O(n log n)的时间复杂度。代价是需要额外的内存空间。

2023-07-06 14:01:11 991

原创 【无标题】

访问者模式(Visitor Pattern)是一种行为型模式。它封装一个访问者类,把各元素类的操作集合起来,目的是将数据结构与数据操作分离。在不改变原有元素类数据结构的前提下,改变了元素类的执行算法。当某些较为稳定的东西(数据结构或算法),不想直接被改变但又想扩展功能,这时候适合用访问者模式。访问者模式的使用频率并不是很高,大多数情况下,你并不需要使用访问者模式,但是当你一旦需要使用它时,那你就是需要使用它了。

2023-05-04 11:04:41 451

原创 【模板方法设计模式详解】C/Java/JS/Go/Python/TS不同语言实现

模板方法模式(Template Method Pattern)也叫模板模式,是一种行为型模式。它定义了一个抽象公开类,包含基本的算法骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变算法的结构,只是重定义该算法的某些特定步骤。不同的子类以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。以此基于公共的模板,来实现实现不同的功能。模板模式适用于一些复杂操作进行步骤分割、抽取公共部分由抽象父类实现、将不同的部分在父类中定义抽象实现、而将具体实现过程由子类完成。

2023-04-29 21:51:57 689

原创 【策略设计模式详解】C/Java/JS/Go/Python/TS不同语言实现

策略模式(Strategy Pattern)属于行为型设计模式。将每一个算法封装到具有共同接口的独立类中,根据需要来绑定策略,使得具体实现和策略解耦。当你想使用对象中各种不同的算法变体,使用if...else 所带来的复杂和难以维护,可使用策略模式。或者当有许多相同类,它们仅在执行某些行为时略有不同,可使用策略模式。

2023-04-28 09:17:01 738

原创 【单例设计模式多种版本】Java/JS/Go/Python/TS不同语言实现

单例模式(Singleton Pattern)属于创建型设计模式,这种模式只创建一个单一的类,保证一个类只有一个实例,并提供一个访问该实例的全局节点。当您想控制实例数目,节省系统资源,并不想混用的时候,可以使用单例模式。单例有很多种实现方式,主要分为懒汉和饿汉模式,同时要通过加锁来避免线程安全。不同语言的单例实现略有差异,可以通过查看不同版本的源码来深入理解其中的差异。

2023-04-27 09:11:46 92

原创 【代理设计模式详解】C/Java/JS/Go/Python/TS不同语言实现

代理模式(Proxy Pattern)是一种结构型设计模式,用一个类来代理另一个类或几个类的功能。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。延迟初始化(虚拟代理)。如果你有一个偶尔使用的重量级服务对象,一直保持该对象运行会消耗系统资源时,可使用代理模式。访问控制(保护代理)。如果你只希望特定客户端使用服务对象,这里的对象可以是操作系统中非常重要的部分,而客户端则是各种已启动的程序 (包括恶意程序), 此时可使用代理模式。

2023-04-25 09:26:26 204

原创 【原型设计模式详解】C/Java/JS/Go/Python/TS不同语言实现

原型模式(Prototype Pattern)是一种创建型设计模式,使你能够复制已有对象,而无需使代码依赖它们所属的类,同时又能保证性能。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。如果你需要复制一些对象,同时又希望代码独立于这些对象所属的具体类,可以使用原型模式。

2023-04-24 11:14:32 188

原创 【观察者设计模式详解】C/Java/JS/Go/Python/TS不同语言实现

观察者模式(Observer Pattern)是一种行为型模式。它定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。观察者模式使用三个类Subject、Observer和Client。Subject对象带有绑定观察者到Client对象和从Client对象解绑观察者的方法。我们创建Subject类、Observer抽象类和扩展了抽象类Observer的实体类。

2023-04-21 21:00:00 94

原创 【备忘录设计模式详解】C/Java/JS/Go/Python/TS不同语言实现

备忘录模式(Memento Pattern)是一种结构型设计模式。这种模式就是在不破坏封装的条件下,将一个对象的状态捕捉(Capture)住,并放在外部存储起来,从而可以在将来合适的时候把这个对象还原到存储起来的状态。备忘录模式常常与命令模式和迭代子模式一同使用。备忘录模式的角色有三个:备忘录(Memento)角色、发起人(Originator)角色、负责人(Caretaker)角色备忘录模式是由发起人(Originator)对象负责生成状态快照,其他对象不可修改状态。

2023-04-20 11:46:05 225

原创 【中介者设计模式详解】C/Java/JS/Go/Python/TS不同语言实现

中介者模式(Mediator Pattern)是一种行为型模式。它限制对象之间的直接交互,它用一个中介对象来封装一系列的动作,以让对象之间进行交流。中介者使各个对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。当一些对象和其他对象紧密耦合以致难以对其进行修改时,或当组件因过于依赖其他组件而无法在不同应用中复用时,可使用中介者模式。

2023-04-19 18:53:00 75

原创 【迭代器设计模式详解】C/Java/JS/Go/Python/TS不同语言实现

迭代器模式(Iterator Pattern),是一种结构型设计模式。给数据对象构建一套按顺序访问集合对象元素的方式,而不需要知道数据对象的底层表示。迭代器模式是与集合共存的,我们只要实现一个集合,就需要同时提供这个集合的迭代器,就像Java中的Collection,List、Set、Map等,这些集合都有自己的迭代器。假如我们要实现一个这样的新的容器,就可以引入迭代器模式,给我们的容器实现一个迭代器。

2023-04-17 12:11:10 186

原创 【解释器设计模式详解】C/Java/Go/JS/TS/Python不同语言实现

解释器模式(Interpreter Pattern)是一种行为型设计模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式常被用在 SQL 解析、符号处理引擎等。解释器模式常用于对简单语言的编译或分析实例中,为了掌握好它的结构与实现,必须先了解编译原理中的“文法、句子、语法树”等相关概念。

2023-04-12 17:59:55 161

原创 【享元设计模式详解】C/Java/JS/Go/Python/TS不同语言实现

享元模式(Flyweight Pattern),是一种结构型设计模式。主要用于减少创建对象的数量,以减少内存占用和提高性能。它摒弃了在每个对象中保存所有数据的方式,通过共享多个对象所共有的相同状态,让你能在有限的内存容量中载入更多对象。当程序需要生成数量巨大的相似对象时,可能对内存有大量损耗,而对象中包含可抽取且能在多个对象间共享的重复状态,您可以采取享元模式。内部状态 vs. 外部状态。

2023-04-10 18:24:28 98

原创 【外观设计模式详解】C/Java/JS/Go/Python/TS不同语言实现

外观模式(Facade Pattern),也叫门面模式,是一种结构型设计模式。它向现有的系统添加一个高层接口,隐藏子系统的复杂性,这个接口使得子系统更加容易使用。如果你需要一个指向复杂子系统的直接接口,且该接口的功能有限,则可以使用外观模式。或者需要将子系统组织为多层结构,可以使用外观。

2023-04-08 00:00:00 58

原创 【过滤器设计模式详解】C/Java/JS/Go/Python/TS不同语言实现

过滤器模式(Filter Pattern)或标准模式(Criteria Pattern),是一种结构型模式。这种模式允许使用不同的标准条件来过滤一组对象,并通过逻辑运算的方式把各条件连接起来,它结合多个标准来获得单一标准。例子将创建一个 Person 对象、Criteria 接口和实现了该接口的实体类,来过滤 Person 对象的列表。Test 类使用 Criteria 对象,基于各种标准和它们的结合来过滤 Person 对象的列表。

2023-04-06 12:03:25 139

原创 【装饰器设计模式详解】C/Java/JS/Go/Python/TS不同语言实现

装饰器模式(Decorator Pattern)是一种结构型设计模式。将对象放入到一个特殊封装的对象中,为这个对象绑定新的行为,具备新的能力,同时又不改变其原有结构。如果你希望在无需修改代码的情况下即可使用对象,且希望在运行时为对象新增额外的行为,可以使用装饰模式。或者你用继承来扩展对象行为的方案难以实现或者根本不可行,你可以使用该模式。

2023-04-04 17:27:07 80

原创 【组合设计模式详解】C/Java/JS/Go/Python/TS不同语言实现

组合模式(Composite Pattern),又叫部分整体模式,是一种结构型设计模式。用于把一组类似的对象当作一个单一的对象来看。组合模式依据树形结构来组合对象,用不同组件来构建某个部分或整体对象。如果你需要实现树状对象结构,可以使用组合模式。如果你希望客户端代码以相同方式处理简单和复杂元素,可以使用该模式。

2023-04-03 18:13:23 100

原创 【命令设计模式详解】C/Java/JS/Go/Python/TS不同语言实现

命令模式(Command Pattern)是一种数据驱动的设计模式,也是一种行为型设计模式。这种模式的请求以命令的形式包裹在对象中,并传给调用对象。调用对象再寻找合适的对象,并把该命令传给相应的处理者。即把请求或操作封装成单个对象,并使其可以被参数化和延迟执行,这种方式将命令和执行者进行了有效解耦。如果你需要通过操作来参数化对象,可使用命令模式。如果你想要将操作放入队列中、操作的执行或者远程执行操作, 可使用命令模式。如果你想要实现操作回滚功能,可使用命令模式。

2023-03-30 21:30:00 110

原创 【JavaScript快速排序算法】不同版本源码分析

它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归或迭代进行,以此让整个数列变成有序序列。

2023-03-27 11:33:03 113

原创 【责任链设计模式详解】C/Java/JS/Go/Python/TS不同语言实现

这种模式为请求创建了一个接收者对象的链,允许你将请求沿着处理者链进行发送,每个处理者均可对请求进行处理,或将其传递给链上的下个处理者。当程序需要使用不同方式来处理多种类请求,且请求类型和顺序不可知,或者当必须按顺序执行多个处理时,可以使用责任链模式。避免请求发送者与接收者耦合在一起,客户只需要将请求发送到链上,而无须关心请求的处理细节和请求的传递。创建多个互不干涉的处理器,实现抽象类的next方法,以便不断执行链式检查。抽象处理器类可将各子类按任意组织为链式,以便调用。func.h 头文件函数。

2023-03-24 18:21:35 144

原创 【建造者设计模式详解】Java/JS/Go/Python/TS不同语言实现

当你希望使用代码创建不同形式的产品 (例如各种商品和订单) 时, 一些基本部件不会变,而其组合经常变化的时候,就可以考虑建造者模式。主管类隐藏了产品构造细节, 客户端只需要将一个生成器与主管类关联,就能从生成器处构造对象。客户端同时创建生成器和主管类,所有产品都遵循相同的接口,构造结果通过主管类获取。当需要创建复杂对象的时候,由各个部分的子对象来逐步构建,以适应复杂多变的情况。具体的建造者类之间是相互独立的,这有利于系统的扩展。为每个形式的产品创建具体生成器类,并实现其构造步骤。具体建造者类,可以多个。

2023-03-13 17:56:31 76

原创 【质因数分解算法详解】C/Java/Go/Python/JS/Dart/Swift/Rust等不同语言实现

但说实话OC的语法看起来不是很友好,从变量声明到对象调用,看起来与其他语言不是很一致,但总体上来也是类c的,所以本质上还是一样。Rust从语法上足够精炼,风格比较像普通的高级语言,提供的元组(Tuple)和动态数组(Vector)、切片(Slice)模式非常方便,没有C/C++操作数据那么繁琐,但同时其又保持了底层语言的优越性能,能看得出来Rust是牛人精心打造的。当全部分解后,有的情况下最后的得数刚好被质数除尽,最后的得数为1,有的情况则质数的平方大于得数,终止了循环,此时该得数大于1,就是最后的因数。

2023-03-11 11:17:21 1275

原创 【桥接设计模式详解】Java/JS/Go/Python/TS不同语言实现

桥接模式(Bridge Pattern)是一种结构型设计模式,它将一个大类或一系列紧密相关的类拆分为抽象和实现两个独立的层次结构,来实现二者的解耦。如果你希望在几个独立维度上扩展一个类,或者你想要拆分、重组一个具有多重功能的复杂类(例如能与多个数据库服务器进行交互的类),或者你想在运行时切换不同的实现方法,可以使用桥接模式。建立具体对象类,继承自基础抽象类,调用工具类里的方法来实现具体功能。建立多个具体工具类实现基础工具接口,这些工具是负责具体能力实现。定义一个工具接口,供不同工具类来实现。

2023-03-11 07:50:29 88

原创 【希尔排序算法详解】Java/Go/Python/JS/C不同语言实现

希尔排序(Shell Sort)是插入排序的一种改进版,也称递减增量排序算法(Diminishing Increment Sort),其实质是将数列分组,然后再按插入算法分别排序,因DL.Shell于1959年提出而得名。在希尔的原稿中建议的初始步长是N/2,就是将每一次排序分成两半,这样取步长在大多数情况下会比插入排序好,但也不是最好。步长序列:2i3j 最坏情况复杂度:O(nlog2n)步长序列:2k-1 最坏情况复杂度:O(n3/2)步长序列:n/2i 最坏情况复杂度:O(n2)空间复杂度:O(1)

2023-03-10 17:47:35 57

原创 【选择排序算法详解】Java/Go/Python/JS/C 不同语言实现

首先在待排序序列中找到最小(或最大)的元素,追加到已排序序列中,然后继续从待排序序列中寻找最小(或最大)的元素,追加到已排序序列的尾部。比较次数O(n^2),比较次数与关键字的初始状态无关,总的比较次数N = (n-1) + (n-2) +…选择排序的比较操作为n(n-1)/2次之间。在外循环中将第 1 项与最小值进行交换,然后以第 2 项作为最小值,再重复执行步骤 2,直到遍历完全部待排序区间。设第 1 项为最小值,在内循环中将其逐个与后项进行比较,如果遇到更小的值,则更新最小值,并记录下最小值的下标。

2023-03-07 19:21:03 52

原创 【基数排序算法详解】Java/Go/Python/JS/C不同语言实现

基数排序的方式可以采用LSD(Least significant digital)或MSD(Most significant digital),LSD的排序方式由键值的最右边开始,而MSD则相反,由键值的最左边开始。LSD使用计数排序或桶排序,MSD可以使用桶排序。计数排序:根据数组值设定若干个桶,每个桶对应一个数值,将这些桶的值分别存入下一个桶中用于排序,最后按顺序取出对应桶里的值。桶排序:根据情况分为若干个桶,每个桶存储一定范围的数值,每个桶再单独排序,最后按桶的顺序取出全部数据。

2023-03-05 20:07:08 114 1

原创 【快速排序算法详解】Java/Go/Python/JS/C不同语言实现

快排是一种通过基准划分区块,再不断交换左右项的排序方式,其采用了分治法,减少了交换的次数。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归或迭代进行,以此让整个数列变成有序序列。将基准点左侧全部项和基点右侧全部项分别通过递归(或迭代)方式重复第1项,直到所有数组都交换完成。空间复杂度:根据实现方式的不同而不同,可以查看不同版本的源码。平均时间复杂度:O(NlogN)

2023-02-23 17:34:34 48

原创 【合并两个已排序数组算法详解】Java/Go/Python/JS不同语言实现

从两个数组的第1项开始比较,将数值小的一项添加到新数组中,并将数值小的指针右移1位,继续两两比较,哪个小就添加到新数组中,并且右移小项的指针,直到遍历完其中一个数组,也就是把1个数组项全部添加到新数组时终止。策略三:将一个数组的长度扩展成两个数组之和,按照任意一种排序,将这个数组当成是已排序部分,遍历另外1个数组,将另外1个数组项逐个插入到这个数组中的位置中去。同时遍历数组1和数组2,比较数组1和数组2里的第一项,哪个小就追加到新数组中,小项的指针后移1位。新建1个空数组,长度为两个数组之和。

2023-02-20 18:12:57 137

原创 【归并排序算法详解】Java/Go/Python/JS/C不同语言实现

归并排序(Merge Sort)算法,也叫合并排序,是创建在归并操作上的一种有效的排序算法。归并排序思路简单,速度仅次于快速排序,为稳定排序算法,一般用于对总体无序,但是各子项相对有序的数列。归并排序和选择排序一样,归并排序的性能不受输入数据的影响,但表现比选择排序好的多,因为始终都是O(n log n)的时间复杂度。将上述两个序列递归合并,按照已排序数组合并,形成(n/4)个序列,每个序列包含4个数字。这里有多种语言的详细源码。

2023-02-19 18:09:13 43

原创 【堆排序算法详解】Java/Go/Python/JS/C不同语言实现

堆排序(Heap Sort)算法,是将数据看成近似完全二叉树结构,并根据完全二叉树的特性来进行排序的一种算法。完全二叉树要求每个节点的值都大于等于其左右子节点的值,称为大顶堆;或者每个节点的值都小于或等于其左右子节点的值,称为小顶堆。先将父节点的最大数取出,并构建最大堆,再将堆继续调整为最大堆,再次将堆顶的最大数取出,这个过程持续到剩余数只有一个时结束。

2023-02-18 16:34:06 57

原创 【计数排序算法详解】Java/Go/Python/JS/C不同语言实现

计数排序(Counting sort)是一种稳定的线性时间排序算法。计数排序使用一个额外的数组,数组的下标对应待排序的数字。就像给每个位置按数字顺序做好标记,然后把对应数组放入其中,最后把下标打印出来即可。计数排序适合数量较少的整数排序,对于浮点不太适合。遍历待排序数组,将数字与计数数组下标对应,按出现次数做标记;Java/Go/Python/JS/C 不同语言实现计数排序算法。新建一个计数数组,长度为最大与最小值的差值+1;平均时间复杂度:O(n + k)最佳时间复杂度:O(n + k)

2023-02-17 13:50:27 65

原创 【桶排序算法详解】Java/Go/Python/JS/C 不同语言实现

桶排序(Bucket sort)也称箱排序,是一个排序算法,工作原理是将数组分到几个桶里,桶的数量可由排序数组最大值与最小值关系决定,可以固定几个桶。确定每个桶的大小以及桶的数量,桶大小为可以最大项与最小的差值除以最小值,桶的数量是大小差值除以桶大小;新建一个桶二维数组,用于存放桶数据,桶的数量和每个桶的大小就是第 1 步得到的值;遍历原始列表,再将数组项除以桶的个数得到桶的下标,将当前数组项存入到对应桶中;在存入桶中时,按顺序插入,保持桶内的顺序;平均时间复杂度 O(n+k)最差空间复杂度 O(n。

2023-02-13 14:47:46 122

原创 【适配器模式(Adapter Pattern)】Java/JS/Python/Go不同语言详解

当你希望使用某个类,但是其接口与其他代码不兼容时,可以使用适配器类。当你需要复用类的共同方法,但是这些共同的方法不是所有子类的共性,你可以通过适配器模式来兼容。适配器模式(Adapter Pattern)是一种结构型设计模式,为两个不兼容的接口之间架设桥梁,使不兼容的对象能够相互合作。有一些可以重复使用的类,这些类不一定有一致的接口。通过转换类来实现(继承或依赖)不同接口的调用。建立接口转换类,将不同的类插入到转换类中。将一个类的接口转换成另外一个接口。使得原本不兼容的接口也能一同工作。

2023-02-08 17:40:43 85

原创 【抽象工厂模式(Abstract Factory Pattern)】Java/Python/JS/Go不同编程语言实现

在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。工厂方法是一个具体工厂,用来创建对象,而抽象工厂则是用来创建工厂的类。如果代码需要与多个不同系列的相关产品交互,但是无法提前获取产品信息, 出于对未来扩展的考虑,不希望代码基于产品的具体实现进行构建,这时可以使用抽象工厂。屏蔽复杂的对象创建逻辑,交由统一的工厂方法,工厂本身也由工厂创建。建立系列产品工厂类,继承自抽象工厂类,负责具体产品的创建。具体工厂类,可以多个,继承或实现基础工厂类。建立抽象工厂类,用于创建产品工厂类。

2023-02-06 12:01:59 53

原创 【冒泡排序算法详解】Java/Go/Python/JS/C不同语言实现

它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。即通过遍历待排序的数列,一次比较两个元素,根据大小调换位置,直到把最大的或最小的冒出来。内循环每次都从第一项开始,将该项与待排序的后项逐个进行大小比较,再两两交换,将大的数字冒出来。先建立两个循环,外循环用于遍历整个数组,内循环遍历待排序的区间。Java/Go/Python/JS/C 语言实现冒泡排序算法。平均时间复杂度:O(N^2)最差时间复杂度:O(N^2)最佳时间复杂度:O(N)空间复杂度:O(1)

2023-02-02 15:21:46 57

原创 【插入排序算法详解】Java/Go/Python/JS/C不同语言实现

插入排序(Insertion Sort)是一种简单直观的排序算法。它的工作原理是将数据分为已排序和未排序两个序列,对于未排序的数据,在已排序序列中从后向前逐个遍历,找到相应位置插入的方式,其原理跟打扑克牌按顺序插入牌很类似。从未排序序列中选取一项作为比较项,跟已排序列表项自后往前逐个对比,如果比较项小于列表成员,则将列表成员逐个右移,以便空出位置。将数组分为左右两个序列,分别表示已排序和未排序。外循环遍历未排序序列,内循环遍历已排序序列。当比较项大于等于已排序的成员时,将比较项放在该成员的后面。

2023-02-01 17:31:03 35

原创 【Design Pattern 23种经典设计模式】Java/JS/Python/Go不同语言详解

每一种语言都有自己的特色,设计模式首推用Java语言来实现,因为Java相对最全面,也非常规整。其他语言有自己的优势,并不需要像Java那么啰嗦就可以实现良好的设计模式。因此通过不同语言之间的对比,可以更好地理解各种语言的差异,真正理解编程之道。经典设计模式源码详解,用不同语言来实现,包括Java/JS/Python/TypeScript/Go等。结合实际场景,充分注释说明,每一行代码都经过检验,确保可靠。设计模式是一个程序员进阶高级的必然选择,不懂设计模式,就像写文章不懂得层次,盖房子没有结构。

2023-01-20 12:47:53 77

原创 前端工程化怎么做?Letjs工程体系介绍

前端应用的代码规模也越来越大,如何组织代码是个难题。模块划分、目录结构、分层职责以及数据流程等都需要清晰明了,否则随着时间积累代码就变得不可维护。那代码该如何组织呢?或者前端工程化应该怎么做呢?Letjs团队开发了前端工程化体系,定义了一套目录结构和分层体系,通过工具命令一键创建代码模板,专门解决前端工程化问题。

2022-12-07 18:19:36 174

2009_4_EMS MySQL Manager crack.rar

EMS MySQL 是强大的MySQL客户端工具,附件是2009版的破解文件

2011-12-08

如何才能学好英语?如何才能学好英语?

如何学好英语?这是一本电子书,告诉你如何才能学好英语,掌握方法,才能事半功倍。同时给出一些常用英语短句。

2010-03-12

C语言的科学和艺术-源代码

C语言的科学和艺术可以说是C语言真正的入门经典,不但介绍了C的一般语法与基本算法,同时还介绍了一种良好的编码、程序模块划分设计思想。这本书不只是适合C语言,而是一般普遍的程序设计思想。 附件是随书的源代码,非常推荐阅读!!!

2010-03-12

JSEclipse 好用的Eclipse下JS开发插件

一款 eclipse下的JavaScript插件,与spket、aptana功能差不多,用过的人都说好。是最早的eclipse JS插件,现在被Adobe收购,一般不好下载啊。

2009-09-10

jspSmartUpload

Java文件上传的一个开源代码库,出现的比较早。jspsmartupload与apache common fileupload 以及orellay upload齐名,我觉得jspsmartupload 挺好用的。感兴趣的可以下载使用。

2009-09-10

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除