自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(388)
  • 资源 (22)
  • 收藏
  • 关注

原创 Java(六十)网络编程-TCP和UDP协议通讯

(1):public static InetAddress getByName(String host):可以通过主机名或者IP地址,获取的是InetAddress对象。为了使数据在网络上从源到达目的,网络通信的参与方必须遵循相同的规则,这套规则称为协议(protocol),所谓的端口,就好像是门牌号一样,客户端可以通过ip地址找到对应的服务器端,但是服务器端是有很多端口的,2.接收端 对 发送端 说: 好的,我知道了!协议,网络协议的简称,网络协议是通信计算机双方必须共同遵从的一组约定。

2025-02-26 08:17:43 603

原创 Java(五十九)类加载器

任何类都是由最下层的加载器来加载,既系统类加载器来加载的,由于Java具有委托机制,所以系统类加载器它不会马上加载,而是先委托给它的上一层类加载器来加载,既扩展类加载器来加载,如果扩展类加载器没有加载到,它在自己去加载。由于Java具有委托机制,扩展类加载器不会马上加载它所管辖的范围,它会先委托给上一层类加载器去加载,既引导类加载器来加载,如果引导类加载器没有加载成功,它在自己去加载,如果它也没有加载到,就去下一层继续加载。今天我们来学习类的加载器(很重要),那什么是类的加载器呢?最上层:引导类加载器。

2025-02-26 08:15:05 336

原创 Java(五十八)双列集合Properties

ss1.store(new FileOutputStream("aaa.txt"), "字节流写入");ss1.store(new FileOutputStream("aaa.txt"), "字节流写入");ss1.setProperty("潇寒", "18");ss1.setProperty("潇寒", "18");ss1.setProperty("潇寒", "18");ss1.setProperty("潇寒", "18");ss1.setProperty("潇寒", "18");

2025-02-24 09:17:01 315

原创 SpringCloud重制(一)整合分布式事务seata

3) AT模式:Seata默认模式,最终一致性的分阶段事务模式,无业务侵入,一阶段直接提交事务,减少了事务的锁定时间,提高了性能。2) TCC模式:最终一致性的分阶段事务模式,有业务侵入,需要业务方在 try、confirm、cancel 三个阶段进行编程,实现资源的预留、确认提交和回滚。1) XA模式:强一致性分阶段事务模式,牺牲了一定的可用性,无业务侵入,存在严重的资源独占和阻塞问题,对系统性能有较大影响。有好的建议,请在下方输入你的评论。再次启动项目,问题解决。

2025-02-24 09:13:24 855

原创 Java(五十七)对象操作流(序列化流和反序列化流)

今天来学习序列化流ObjectOutputStream,反序列化流ObjectInputStream。接下来,我们修改一下person类,增加一个sex属性。然后,我们再来读取aaa.txt文件,看会发生什么情况。这里需要注意一下,要想将对象写入文件对象需要实现序列化父类Serializable。很简单,就是制定这个类的serialVersionUID即可。执行上方的代码,我们将person类的对象就写入了aaa.txt文件。类修改了之后,就变成了一个新类。有好的建议,请在下方输入您的评论。

2025-01-18 15:57:51 276

原创 Java(五十六)打印流(PrintStream和PrintWriter)

本来以为转换流就是流部分的最后一个了,结果还是我年轻了,今天继续学习java的打印流PrintWriter,还是老套路,先学构造方法,再学成员方法。但其实区别不是很大,反正到最后都要释放资源,释放资源的时候是自己刷新文件的。(2):println()中可以接收任何数据类型的参数,write()中只能接收字符串,字符或者字符数组。(3):println()可以自动刷新,writer()不能自动刷新。(1):println()自带换行,write()不带换行。第一种方法和第二种方法的区别就在于,第二种方法的。

2025-01-18 15:54:58 356

原创 Java(五十五)转换流(InputStreamReader和OutputStreamWriter)

今天我们来学习流的最后一部分:转换流InputStreamReader和OutputStreamWriter,缓冲转换流:BufferedReader和BufferedWriter。这几个我们学一下构造方法就可以了。成员方法跟字符流的都一样。转换流是所有流中唯一能设置编码方式的流。有好的建议,请在下方输入你的评论。以上大概就是转换流的基本使用。可以将字节流转换成字符流。具体使用参见文件复制粘贴。具体使用参见文件复制粘贴。

2025-01-17 16:25:44 313

原创 Java(五十四)字符流的文件复制实现

字符流我们学习了FileReader和FileWriter,缓冲字符流我们学习了BufferedReader和BufferedWriter,接下来我们使用字符流来实现一下文件的复制粘贴。最后我们来总结一下,我们学习了这么多的文件复制方法,那么我们在使用的时候到底使用哪一种呢?这个五个方法算是对字符流部分学习的一个总结。比较简单,没有太难的部分。有好的建议,请在下方输入你的评论。

2025-01-17 16:24:35 305

原创 Java(五十三)字符缓冲流(BufferedReader和BufferedWriter)

(2):public void write(char[] cbuf):写出一个字符数组。(3):public void write(String str):写出一个字符串数据。qwertqwert凭君莫话封侯事,?(2):public int read(char[] cbuf):读取一个字符数组。(1):public void write(int c):写出一个字符数据。(3):public String readLine():读取一行的数据。(1):public int read():读取一个字符数据。

2025-01-16 09:35:54 236

原创 Java(五十二)字符流(FileReader和FileWriter)

(4):public FileWriter(String fileName,boolean append):创建一个追加字符输入流(追加写入文件)对象。(2):public FileWriter(File file,boolean append) :创建一个追加字符输入流(追加写入文件)对象。(3):public FileWriter(String fileName):创建一个字符输入流(写入文件)对象。(1):public FileWriter(File file):创建一个字符输入流(写入文件)对象。

2025-01-16 09:33:55 358

原创 Java(五十一)字符串的编解码

Unicode是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。上面我们学习了java中IO流和缓冲流的基本使用,这些都是字节流,下面我们接着来学习java中的字符流,但是在学习字符流之前,我们先来学习一下java中的字符串的编解码。1:ASCII:是所有编码表的最基本的编码表,里面主要是针对一些大小写英文字母,数字,和其他的少数标点符号进行编码的。常见的编码表有ASCII,utf-8,GBK等。

2025-01-15 09:39:25 347

原创 Springboot(五十八)SpringBoot3使用Redisson实现接口的限流功能

通过使用@RateLimiter 注解配置:count = 2, time = 10;即:每10秒钟产生2个令牌。对接口实现限流,主要使用了Redisson提供的限流API方法;第三步:试图获取一个令牌,获取到,返回true;否则,返回false。使用redission实现自定义限流注解成功。举例:5秒中产生2个令牌。有好的建议,请在下方输入你的评论。关于自定义注解,请移步《第一步:声明一个限流器;

2025-01-15 09:37:41 1553

原创 Java(五十)java-IO流-缓冲流(BufferedInputStream和BufferedOutputStream)

接下来我们学习一下java缓冲流中的读取和写入类BufferedInputStream(缓冲字节输入流)和BufferedOutputStream(缓冲字节输出流)类,这个两个类的使用方法和IO流中的FileOutputStream和FileInputStream类是差不多的。2.一次读取一个字节数组,一次写出一个字节数组的一部分 4562。通过上方的对比,我们可以发现,还是使用缓冲流的读取字节数组的方式效率最高。以上大概就是java缓冲流的基本知识,有好的建议,请在下方输入你的评论。

2025-01-09 07:37:19 600

原创 Java(四十九)java-IO流-异常处理

正常我使用的话,我就写一个catch就完事了,所有的异常都在这里捕获,有问题我就修改程序就好了,但是可能有的同学会有捕获不同异常通过不同的处理方式来解决异常的情况。那就按照上边的框架来写就可以,但是这里要注意,不要捕获不必要的异常,例如InterruptedException,它不可能发生在io流的操作中。正常我们写读取文件的代码就是按照上方的异常处理框架来写的,查看我之前的代码,其实都是有问题的。Java的IO流部分到这里我们基本上学习的就差不多了,最后我们再来了解一下java异常的处理方式。

2025-01-09 07:36:06 152

原创 Java(四十八)java-IO流-实现文件复制粘贴

我们学完了java.io流中的FileOutputStream类和FileInputStream类,那我们接下来使用他们两个来实现一下文件的复制粘贴。整个流程就比较简单了,从文件a.txt中读取文件内容,将内容暂存至java程序中,再将文件内容写入到b.txt中。以上大概就是使用FileOutputStream类和FileInputStream类实现复制粘贴的小例子。下面我们有两种方式来实现这个功能,文件就使用我们之前测试使用的aaa.txt和bbb.txt文件。有好的建议,请在下方输入你的评论。

2025-01-08 09:15:46 157

原创 Java(四十七)java-IO流-字节流(FileInputStream)

那现在有一个问题,我这每一次读一个字节的数据,我现在想读取整个文件的所有数据,该如何实现呢?现在还有一个问题,就是我不知道这个文件中有多少数据,我怎样使用上面的方式将其一次都读取出来呢?字节流我们来学习一下FileInputStream读取类,学习类嘛,就还是那些:先学习构造方法,再学习成员方法。但是我们的程序中输出的A之后还有一个?@,这是什么原因呢?以上大概就是FileInputStream类的基本使用。是因为我们是使用byte数组来装数据的。有好的建议,想在下方输入你的评论。

2025-01-08 09:14:54 250

原创 Springboot(五十七)SpringBoot3使用JVM调优工具Arthas Tunnel

Arthas 是一款线上监控诊断产品,通过全局视角实时查看应用 load、内存、gc、线程的状态信息,并能在不修改应用代码的情况下,对业务问题进行诊断,包括查看方法调用的出入参、异常,监测方法执行耗时,类加载信息等,大大提升线上问题排查效率。最后切记:arthas Tunnel是没有权限控制的,只要是知道地址,既可以访问,所以呢,使用的时候需要注意一下。到这里,你就可以启动你的项目了,应用启动后,spring 会启动 arthas,并且 attach 自身进程。有好的建议,请在下方输入你的评论。

2025-01-07 10:21:03 1539

原创 Java(四十六)java-IO流-字节流(FileOutputStream)

字节流我们来学习一下FileOutputStream写入类,学习类嘛,就还是那些:先学习构造方法,再学习成员方法。以上大概就是FileOutputStream类的基本使用。其实就是对应写入数据的ASCII码。有好的建议,想在下方输入你的评论。打开文件,发现其中是有内容的。文件中被写入了一个字符“7”

2025-01-07 10:18:43 267

原创 Java(四十五)java-IO流

因为数组容器和集合容器只能满足运行一次的时候可以对数据进行存储,但是运行完之后,容器中的数据就丢失了。即便学习了容器,也无法满足为了的开发需求,比如说我们在注册某宝账号,或者登录某宝账号的时候,使用容器就无法解决了。我们在写程序的时候,经常会用到各种数据,数据多了,就不方便管理和操作了,为了方便管理和操作,但是在做PHP的时候,也有文件上传,那时候叫文件流,其实也是IO流的一种。我们学习了容器,将很多数据存储容器,就方便管理和操作了。也就说可以将数据从内存,写出到,输出到本地磁盘中。

2025-01-07 10:17:13 765

原创 Java(四十四)file

Java中的file类:代表文件或者文件夹(目录)类,也就是说将文件或者文件夹通过File类来封装成对象。控制台输出:E:\camellia\doc\Java\aaaaa.txt。第一个参数是目录地址,第二个参数是这个目录下的某个文件名称。使用file类,需要通过构造方法创建一个file对象。这种构造就比较有意思了,他的第一个参数是file对象。传入一个文件地址,或者传入一个目录地址。以上大概是java中file的基本使用。有好的建议,请在下方输入你的评论。控制台输出:aaaaa.txt。

2025-01-03 21:59:28 822

原创 Java(四十三)递归

在书中提出了一个有趣的问题:假设一对刚出生的小兔一个月后就能长成大兔,再过一个月就能生下一对小兔,并且此后每个月都生一对小兔,一年内没有发生死亡,那么一对刚出生的兔子,在一年内繁殖成多少对兔子?自身调用:原问题可以分解为子问题,子问题和原问题的求解方法是一致的,即都是调用自身的同一个函数。递归这个玩意儿,老生常谈了,目前接触的几种语言中都是有的。没接触过的咱也不敢说。这个问题翻译一下就是使用递归计算 5 * 4 * 3 * 2 * 1 的结果。上方代码就是简单的实现了:5 * 4 * 3 * 2 * 1。

2025-01-03 21:54:24 264

原创 Java(四十二)可变参数

4:可变参数在编译为字节码后,在方法签名中是以数组形态出现的,如果两个方法签名编译后的是一致的话,是不能编译通过的,不可以作为方法的重载。5:可变参数作为参数的方法可以传入数组类型的数据或者直接传入多个数据,但是数组作为参数的方法只能传入数组类型的数据。3:可变参数只能做为函数的最后一个参数,前面有没有其他参数都可以,一个函数最多只能有一个可变参数。1:java可变参数是指在调用方法时传入不定长度的参数,本质上是基于数组实现的。那可变参数在调用那头是啥我不知道,在接受参数这边,他是个数组。

2025-01-01 22:46:24 358

原创 Java(四十一)HashSet

通过输出结果,我们可以发现,在存储的值是对象的时候,hashset也会为我们去重。以上大概是java中hashset的基本使用。有好的建议,请在下方输入您的评论。通过观察上方的输出结果,我们可以发现,HashSet是无序的且唯一的。HashSet是Set的实现类。和Set方法是一样的。

2025-01-01 22:45:29 180

原创 Springboot(五十六)SpringBoot3集成SkyWalking

Dskywalking.collector.backend_service:表示skywalking的collector服务的IP及端口。注意上图中红框标注的位置,我们可以根据启动Springboot项目启动时候控制台输出的ID进行筛选。注意上图中红框标注的位置,我们可以根据启动Springboot项目启动时候控制台输出的ID进行筛选。其他的版本的 APM 地址(这个我不需要,我们是在docker中部署的,留给有需要的同学)其他的java 版本的 Agents 地址。

2024-12-30 08:49:22 2118

原创 Java(四十)二叉树结构

在进行左旋的时候,我们当6这个子节点不存在,因此,根节点变成了8,再将6插入到平衡二叉树中,6比8小,在左边,6比5大,因此在右边,就形成了上边的图。4:如果一个节点没有子节点了,那它会默认指向的是名为Nil的节点,可以视为Nil节点为叶子节点,叶子节点一定是黑色的。如果叔叔节点是红色,父亲节点由红变黑,叔叔节点由红变黑,爷爷节点由黑边红,如果爷爷是根节点,再由红变黑。3:如果一个节点是红色的,那它的两个子节点一定是黑色的,也就是说不能有连续两个红色的节点连在一起。2:根节点一定是黑色的。

2024-12-30 08:46:21 242

原创 Java(三十九)Comparable和Comparator

运行结果报错,为什么呢?TreeSet是会对其中的元素进行排序的,java底层没有办法对Object类型的元素进行排序。需要我们做一下处理,那么如何处理呢?上方的代码在编写的时候没有报错,是在运行的时候编译报错,这个问题需要注意一下,TreeSet只能存储一种类型的数据。这就要使用到我们标题中的Comparable或者Comparator。有好的建议,请在下方输入你的评论。以上大概就是java中自然排序。那么我们如何实现自然排序呢?那么我们如何实现比较器呢?

2024-12-30 08:45:34 262

原创 Java(三十八)集合-set

通过控制台输出值我们会发现,TreeSet是有排序的。按照字典顺序进行由小到大排序。1:不保证顺序(存入的顺序和取出的顺序是不一样的)1:不保证顺序(存入的顺序和取出的顺序是不一样的)观察上方输出的结果。印证了set集合的三大特点。4:TreeSet是可以排序的(由小到大)以上大概就是java集合Set的基本使用。有好的建议,请在下方输入你的评论。和set中的方法是一样的。

2024-12-28 07:33:24 298

原创 Java(三十七)泛型

这个我们在之前学习ArrayList的时候是学习过的。强语法语言类型中是有泛型这个概念的,而在我之前使用的javascript以及PHP中是没有这个概念的。参数化类型,就是指在定义泛型的时候,就像定义形参一样,在使用泛型的时候,需要传递数据类型。就有点类似 typescript中的any了,就随意了,啥都行。下面我们分别尝试一下,一个类型的泛型类和多个类型的泛型类。这部分我同样使用了泛型接口来测试,这个应用的就比较多了。我们可以定义一种类型的泛型,也可定义多种类型的泛型。有好的建议,请在下方输入你的评论。

2024-12-28 07:32:04 324

原创 Java(三十六)集合-List ArrayList LinkedList接口

通过运行结果,我们可以发现,java会优先执行带索引的添加,在执行不带索引的添加,这里需要注意一下。以上大概就是集合List、ArrayList、LinkedList接口付饶基本使用。(1):有序的(存入的顺序和取出的顺序是一样的)(1)有序的(存入的顺序和取出的顺序是一样的)1:有序的(存入的顺序和取出的顺序是一样的)有好的建议,请在下方输入你的评论。(2):元素可以重复的。(2)元素可以重复的。

2024-12-27 08:45:06 1518

原创 Java(三十五)集合-Collection接口

通过上方代码,我们可以发现,removeIf是根据条件删除,运行的时候,会调用内部的test方法,返回true,则删除,返回false,则跳过。通过观察上方的代码,我们可以发现,集合中有两个bbbbb元素,我们执行remove方法,只删掉了集合中靠后的那个元素。ArrayList 实现类。3:一个集合容器中可以存储不同引用数据类型的数据,一个数组容器中只能存储同一种数据类型的数据。针对不同的集合容器,会有不同的迭代器,而且迭代器是以内部类的形式,定义在集合容器中的。

2024-12-27 08:42:53 1353

原创 Java(三十四)异常

解释一下上方代码:程序执行,先进入main方法,输出“程序开始执行”,进入method1方法中,输出“进入异常”,执行a/b报错,这里没有对错误进行处理,因此此段程序结束,回到main方法中。通过上方的代码,我们可以发现,try中的代码报错,进入catch中,最后进入finally中,也就是说,无论如何,代码最终都会进入到finally中。在子父类中,如果父亲没有抛,子类重写方法也不能抛,而且就算父亲抛异常了,子类抛的异常的类只能是父类异常的子类或者本身。运行时异常,多数 java.lang 异常的根类。

2024-12-26 10:55:11 764

原创 Java(三十三)BigDecimal类

通过观察,我们会发现不对啊,使用BigDecimal类运行的结果是比之前的结果精确了一些,但是也并不是我们想要的数据呀。Java中数字计算,都是从十进制转换成二进制再进行运算,运算结束之后,再从二进制转换成十进制,这个过程可能会产生精度丢失。以上大概就是Java中BigDecimal的基本使用。上方代码报错了,嗯……我们尝试一下下方的方法。我们可以使用BigDecimal类。那遇到上方的问题我们该如何处理呢。有好的建议,请在下方输入你的评论。

2024-12-26 08:51:42 267

原创 Java(三十二)日期时间类

Java中的calender是一个抽象类。抽象类不能实例化对象,在调用它的时候使用到了面向对象的多态。时期格式化是将变量的类型从Date转换成String。时期格式化是将变量的类型从String转换成Date。注意上方代码中,我们是需要指定日期格式的,否则SimpleDateFormat无法解析。(2):public long setTime()设置指定的毫秒值。我们下面以localDateTime举例子,他们三者的用法相同。以上大概就是java中日期时间类的基本使用。有好的建议,请在下方输入你的评论。

2024-12-25 09:10:28 502

原创 Java(三十一)包装类

以上几种数据类型中我们常用的只有Integer类,我们下面来看下Integer的基本使用。Java包装类就是指基本数据类型的4类8中所对应的8个引用数据类型。自动装箱就是java会自动的为我们从 int 转换成 Integer。自动拆箱就是java会自动的为我们从Integer转换成 int。(2):可以将int类型的数字转换成Integer类型的数字。(2):可以将字符串格式的数字转换成Integer类型的数字。(1):创建Integer对象。(1):创建Integer对象。

2024-12-25 09:07:56 450

原创 Java(三十)Math类

返回带正数的double值,该值大于等于0.0且小于1.0。Java中还有很多工具类,工具类具有以下两个特点。最后做一个小尝试,获取0-100的一个随机数。以上大概是java中math工具类的基本使用。有好的建议,请在下方输入你的评论。Math是一个工具类。

2024-12-24 08:47:44 194

原创 Java(二十八)String类常见成员方法

上方的例子中,两个字符串第一维都是a,则比较第二位,一个是a,一个是s,则ASCII码相减输出。上文我们了解了String类部分的构造方法,这里我们来看一下String类常用的成员方法。使用这个方法的时候,要注意索引长度不能超过字符串长度减一。两个字符串对位比较,如果对位相同,去下一位继续比。以上大概就是对String类常用方法的一些小尝试。有好的建议,请在下方输入你的评论。

2024-12-24 08:46:06 939

原创 Springboot(五十五)SpringBoot整合ELK实现日志可视化

这里需要注意一下,将文件中“你的ip”换成你服务器的ip,并且端口号5044要与Logstash服务器配置的监听端口一致。要先部署elasticsearch,在部署logstash,部署logstash需要用到es的账号和密码。我的es是有用户名密码的,如果你的es没有,那就不需要。到这里,Springboot就配置完成了,启动项目。ELK部署完成之后,下边我记录一下我在Springboot框架中集成的全过程。这里需要注意一下,ELK的版本需要一致,我这里使用的事7.17.3版本。关于他们的部署,请移步。

2024-12-23 09:15:22 2606

原创 Java(二十七)String类

超出索引了,byte数组只有9个元素,s2是从索引为1开始的元素开始取,取到索引为10的元素。初始化一个新创建的String对象,使其表示一个与参数相同的字符序列。初始化一个信创建的String对象,使其表示一个空字符序列。前面我们了解的java的基本数据类型中字符串是char。分配一个新的String,将字符数组一部分转换成字符串。分配一个新的String,将字符数组转换成字符串。通过直接赋值的对象,在内存中只有1个对象。通过new出来的,在内存中有2个对象。有好的建议,请在下方输入你的评论。

2024-12-23 08:58:23 266

原创 Java(二十六)Object类equals与toString

比较两个对象是否相等,我们可以在子类中重写他,让他来比较类中的某个属性是否相同等。让当前线程处于等待(阻塞)状态,直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法,或者超过参数设置的timeout超时时间。toString方法重写的功能大概就是输出类中的属性的值,方便我们检查类中的属性是否赋值成功。当 GC (垃圾回收器)确定不存在对该对象的有更多引用时,由对象的垃圾回收器调用此方法。当我们创建一个类,没有指定其继承的类的时候,他默认继承object类。

2024-12-21 14:12:31 687

原创 Java(二十五)final关键字

final 修饰的类叫作 final 类,final类通常是功能完整的,不能被继承,Java 中有许多类是 final 的,比如 String, Interger 以及其他包装类。final修饰引用数据类型的变量,不能改变的是变量存放的地址值,地址值上(对象)的。final修饰局部变量,该变量在定义的时候可以不被赋值,但是在使用之时,该变量必须。final 表示最终,也可以称为完结器,表示对象是最终形态的,不可改变的意思。使用final修饰的的类,是“断子绝孙”的。有好的建议,请在下方输入你的评论。

2024-12-21 14:11:38 1030

小程序(三)配置tabbar及自定义tabbar样式

关于tabbar部分,官方文档是有明确的说明的,当然,我这里是不存在把官方文档给你复制一遍的情况。我大概把我再看官方文档过程中遇到的坑,大概复述一下。 一:配置tabbar 这个主要是使用小程序自带的tabbar,在项目根目录下的app.json中配置,这个简单配置一下就可以了。

2020-09-26

blur-admin-master.zip

这个模板比较有现代感; 而且一次就给2套; 不过是为 Angular 量身定做的; 下面的 demo 链接需要才可正常浏览; demo1:http://akveo.com/blur-admin-mint/#/dashboard

2020-09-26

gentelella-master.zip

gentelella 则是一款黑色主题的模板; 这个模板我现在也在用; demo:https://colorlib.com/polygon/gentelella/index.html

2020-09-26

startbootstrap-sb-admin-2-master

大名鼎鼎的 sb 模板,这个我就不做太多的介绍了,用上就知道了。 demo:https://blackrockdigital.github.io/startbootstrap-sb-admin/

2020-09-26

startbootstrap-sb-admin-master.zip

大名鼎鼎的 sb 模板,这个我就不做太多的介绍了,用上就知道了。 demo:https://blackrockdigital.github.io/startbootstrap-sb-admin/

2020-09-26

ace后台模板ace-master

这套后台管理系统的模板,是我刚刚开始做开发的时候使用的。做的还是挺好的,就是样式可能有点老。demo:http://ace.jeka.by/

2020-09-26

设计模式(十六)之抽象工厂模式.zip

抽象工厂模式是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在抽象工厂模式中,接口是负责创建一个相关对象的工厂,不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。

2020-02-17

设计模式(十五)之观察者模式.zip

观察者模式主要应用于一对多的依赖关系,让多个观察者对象同时监听某一个主体对象,这个主题对象在状态发生变化时,会通知所有观察者。当一个对象改变需要同时改变其他对象,而且他不知道具体有多少对象需要改变的时候,应该考虑使用观察者模式。

2020-02-17

设计模式(十四)之建造者模式.zip

建造者模式精髓:建造者模式使得建造代码与表示代码的分离,可以使客户端不必知道产品内部组成的细节,从而降低了客户端与具体产品之间的耦合度。

2020-02-17

设计模式(十三)之外观模式.zip

外观模式(Facade)的定义:为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这个子系统更加容易使用。

2020-02-17

设计模式(十二)迪米特原则(最少知识原则).zip

迪米特(最少知识)法则:如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。

2020-02-17

设计模式(十一)之模板方法模式.zip

模板方法模式:定义一个操作中的算法骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。

2020-02-17

设计模式(十)之原型模式.zip

原型模式:就是从一个对象再创建另一个可定制的对象,而且不需要知道任何创建的细节。 重写抽象类中的Clone方法或者重写ICloneable中的Clone方法。 也就是说:要实现克隆的这个类,必须实现其Clone方法。

2020-02-17

设计模式(九)之工厂模式.zip

工厂模式:定义一个用于创建对象的接口,让子类来决定实例化哪一个类,工厂方法使一个类的实例化延迟到子类。

2020-02-17

设计模式(八)之静态代理模式.zip

静态代理总结: 优点:可以做到在符合开闭原则的情况下对目标对象进行功能扩展。 缺点:我们得为每一个服务都得创建代理类,工作量太大,不易管理。同时接口一旦发生改变,代理类也得相应修改。

2020-02-17

设计模式(七)之装饰模式.zip

装饰模式精髓主要在装饰类Decorate.cs及子类中的base(执行父类方法)关键字,这二者体现了设计模式的精髓。

2020-02-17

设计模式(六)之里氏替换原则.zip

里氏替换原则有如下特点: 代码共享,减少创建类的工作量 提高代码的重用性 提高代码的可扩展性 提高产品代码的开放性 继承侵入性 只要继承,必须拥有父类的内容 降低代码的灵活性,子类必须拥有父类的属性和方法 增强耦合性。

2020-02-17

设计模式(五)之依赖倒转原则.zip

依赖倒置原则的包含如下的三层含义: 1. 高层模块不应该依赖低层模块,两者都应该依赖其抽象 2. 抽象不应该依赖细节 3. 细节应该依赖抽象 就是面向接口编程,采用依赖倒置原则可以减少类间的耦合性,提高系统的稳定性,降低并行开发引起的风险,提高代码的可读性和可维护性。

2020-02-17

设计模式(四)之开放封闭原则.zip

软件实体(类、模块、函数等等)应该可以扩展,但是不可以修改。 也就是如果需求发生变化导致程序中多个依赖模块都发生了级联的改动,就说明这个程序是有问题的,程序变得相对脆弱、无法重用。开放封闭原则就相对的解决了这个问题,它强调的是你设计的模块应该从不改变(绝对不改变是不可能的,只能相对少改动)。当需求变化时,你可以通过添加新的代码来扩展这个模块的行为,而不去更改那些已经存在的可以工作的代码。

2020-02-17

设计模式(三)之单一职责原则.zip

软件设计真正要做的内容,就是发现职责并把那些职责互相分离。单一职责原则可以使类的复杂度降低,实现什么职责都有清晰明确的定义;类的可读性提高,复杂度降低;可读性提高了,代码就更容易维护;变更(需求是肯定会变)引起的风险(包括测试的难度,以及需要测试的范围)降低。

2020-02-17

设计模式(二)之策略模式.zip

策略模式:定义了算法家族,分别封装起来,让其之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。

2020-02-17

设计模式(一)之简单工厂模式

简单工厂模式,通俗点说,就是有一个基类(class abstract interface)以上三种类型都可以,在基类中定义方法,由子类来实现重写或者实现,那我们声明变量类型的时候,直接声明成这个基类的类型就好了。

2020-02-17

空空如也

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

TA关注的人

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