- 博客(21)
- 资源 (3)
- 收藏
- 关注
原创 33、优先考虑类型安全的异构容器
在Effective Java一书中,这一条建议是指在设计容器类时,应该优先考虑使用泛型来确保类型安全。异构容器是指可以存储不同类型对象的容器,例如HashMap、ArrayList等。使用泛型可以在编译时捕获类型错误,避免在运行时出现ClassCastException等类型相关的异常。由于我们在定义容器时指定了键和值的类型,所以在编译时就会捕获到类型不匹配的错误,从而避免了在运行时出现类型相关的异常。通过使用类型安全的异构容器,我们可以在编译时发现潜在的类型错误,提高代码的可靠性和健壮性。
2024-08-22 15:49:20
20
原创 32、小心组合泛型和可变参数@
在Java中,泛型和可变参数是两种非常强大的特性,但是它们在一起使用时需要小心。当你将泛型和可变参数结合在一起使用时,可能会导致编译器生成的警告或者运行时异常。这是因为Java中的可变参数实际上是一个数组,而泛型在编译时会进行类型擦除,这两者结合在一起可能会导致类型安全问题。在使用时,也可以进行类型检查来确保传递的参数类型正确。为了避免这种情况,可以将泛型和可变参数分开使用,或者在使用时进行类型检查。总之,当组合泛型和可变参数时,需要小心处理,避免可能导致类型安全问题的情况发生。方法中,我们创建了一个。
2024-08-22 15:36:36
24
原创 设计模式 6、行为型模式(续)
自定义spring框架前,先回顾一下spring框架的使用,从而分析spring的核心,并对核心功能进行模拟。数据访问层。定义UserDao接口及其子实现类业务逻辑层。定义UserService接口及其子实现类定义UserController类,使用main方法模拟controller层//创建spring容器对象//从IOC容器中获取UserService对象//调用UserService对象的add方法编写配置文件。
2024-08-22 14:12:35
639
原创 设计模式 5、行为型模式
又被称为发布-订阅(Publish/Subscribe)模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己。一般来说,同事类之间的关系是比较复杂的,多个同事类之间互相关联时,他们之间的关系会呈现为复杂的网状结构,这是一种过度耦合的架构,即不利于类的复用,也不稳定。例如在下左图中,有六个同事类对象,假如对象1发生变化,那么将会有4个对象受到影响。如果对象2发生变化,那么将会有5个对象受到影响。
2024-08-22 14:11:20
997
原创 设计模式 4、结构型模式
运用共享技术来有效地支持大量细粒度对象的复用。它通过共享已经存在的对象来大幅度减少需要创建的对象数量、避免大量相似对象的开销,从而提高系统资源的利用率。在面向对象程序设计过程中,程序员常常会遇到这种情况:设计一个系统时知道了算法所需的关键步骤,而且确定了这些步骤的执行顺序,但某些步骤的具体实现还未知,或者说某些步骤的实现与具体的环境相关。
2024-08-22 14:09:43
697
原创 设计模式 3、结构型模式
由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。Java中的代理按照代理类生成时机不同又分为静态代理和动态代理。静态代理代理类在编译期就生成,而动态代理代理类则是在Java运行时动态生成。动态代理又有JDK代理和CGLib代理两种。如果去欧洲国家去旅游的话,他们的插座如下图最左边,是欧洲标准。而我们使用的插头如下图最右边的。因此我们的笔记本电脑,手机在当地不能直接充电。
2024-08-22 14:07:26
835
原创 设计模式 2、创建型模式
用一个已经创建的实例作为原型,通过复制该原型对象来创建一个和原型对象相同的新对象。将一个复杂对象的构建与表示分离,使得同样的构建过程可以创建不同的表示。分离了部件的构造(由Builder来负责)和装配(由Director负责)。从而可以构造出复杂的对象。这个模式适用于:某个对象的构建过程复杂的情况。由于实现了构建和装配的解耦。不同的构建器,相同的装配,也可以做出不同的对象;相同的构建器,不同的装配顺序也可以做出不同的对象。也就是实现了构建算法、装配算法的解耦,实现了更好的复用。
2024-08-22 14:06:06
1126
原创 设计模式 1、设计模式概述
类图(Class diagram)是显示了模型的静态结构,特别是模型中存在的类、类的内部结构以及它们与其他类的关系等。类图不显示暂时性的信息。类图是面向对象建模的主要组成部分。
2024-08-22 14:03:23
645
原创 HashMap底层原理以及源码分析
核心理论: Hash也称散列、哈希,对应的英文都是Hash。基本原理就是把任意长度的输入,通过Hash算法变成固定长度的输出。这个映射的规则就是对应的Hash算法,而原始数据映射后的二进制串就是哈希值。
2024-08-22 13:59:40
322
原创 创建线程的三种方法,线程池的创建方式
1、继承Thread类2、实现Runable接口,没有返回值,不抛异常3、实现Callable接口,有返回值,会抛异常。
2024-08-22 13:56:33
210
原创 Java JUC 基本使用及教程
是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竞争计算机系统资源的基本单位。是进程的一个执行单元,是进程内科调度实体。比进程更小的独立运行的基本单位。线程也被称为轻量级进程。wait/sleep的区别1、是的静态方法, 是的方法,任何对象实例都能调用2、不会释放锁,它也不需要占用锁。会释放锁,但调用它的前提是当前线程占有锁(即代码要在中)。3、它们都可以被方法中断并行和并发并发:同一时刻多个线程在访问同-一个资源,多个线程对一个点例子:春运抢票电商秒杀…并行:多项工作
2024-08-22 11:59:02
843
原创 java Stream操作 转换
这几个函数在日常开发中,也是可以灵活应用的,比如我们DAO操作完数据库,是会有个result的整型结果返回。joining可以将stream中的元素用特定的连接符(没有的话,则直接连接)连接成一个字符串。方法可以帮我们做元素转换,比如一个元素所有字母转化为大写,又或者把获取一个元素对象的某个属性,是一个功能转换型的接口,可以把将一种类型的数据转化为另外一种类型的数据。从数组集合中,过滤掉不符合条件的元素,留下符合条件的元素。是一个消费性接口,通过传入参数,并且无返回的操作。工作中,排序的需求比较多,使用。
2024-08-22 11:54:43
549
原创 Java 8 函数式接口使用示例及相关新特性
函数式接口(Functional Interface)是Java 8对一类特殊类型的接口的称呼。函数式接口下共有抽象方法使用default定义普通方法(默认方法),通过调用。实现接口后,因为默认方法不是抽象方法,所以可以不重写,但是如果开发需要,也可以重写。当然如果接口中的默认方法不能满足某个实现类需要,那么实现类可以覆盖默认方法。签名跟接口default方法一致,但是不能再加default修饰符。使用static定义静态方法,通过调用。
2024-08-22 11:50:07
845
原创 免费视频格式转换工具
视频转换网站支持 MP4 、 AVI 、 FLV 、 MKV 、 MOV 、 WMV 、 M4V 、 MPEG 、 VOB 、 WEBM 、 OGV 、 3GP 、 F4V 、 SWF 视频格式之间的互转。
2024-05-24 16:31:34
190
原创 PDF格式转换 PDF转Word
PDF工具集,包括格式转换、识别工具、屏幕录制、文件处理、教学办公,办公必备的小工具百宝箱。全部免费永久使用pdf工具集格式转换工具集图片处理工具集
2021-07-20 09:53:10
93
原创 nginx查看配置文件路径
1、ps查看进程ps -ef | grep nginx[root@VM-0-2-centos nginx]# ps -ef | grep nginxroot 1474 1 0 Mar16 ? 00:00:00 nginx: master process /usr/sbin/nginxroot 1478 1474 0 Mar16 ? 00:00:05 nginx: worker processroot 3687 1740
2021-07-15 14:40:50
480
原创 redis常用操作
查找命令官网:http://redis.cn/commands.html1、查看版本信息在linux环境下使用:redis-server -v在reids环境下使用:info2、redis 的五大基本数据类型string,list,hash,set,zset(有排序功能 sorted set)除了以上还有:bitmap HyperLogLog GEO Stream如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sor
2021-07-15 14:38:05
142
原创 rabbitmq安装步骤
由于rabbitmq是基于erlang语言开发的,所以必须先安装erlang。安装依赖重点yum -y installgcc glibc-devel make ncurses-devel openssl-devel xmlto perlwget gtk2-devel binutils-develerlang官网:https://www.erlang.org/downloads下载(会比较慢,请耐心等待)wget http://erlang.org/download/otp_src_22.0.t
2021-07-15 14:33:34
380
原创 离线安装mongodb
离线安装mongodb下载地址:https://www.mongodb.com/try/download/community配置文件# 普通配置文件# mongodb.confdbpath=/root/dev/mongodb/db#数据库日志存放目录logpath=/root/dev/mongodb/logs/tyh.log#以追加的方式记录日志logappend = true#端口号 默认为27017port=27017#pidfilepath=/root/mongod/mongo
2021-07-13 14:16:45
599
原创 MongoDB数据备份
1、MongoDB数据备份(mongodump)mongodump --help查看帮助命令-h,–host :代表远程连接的数据库地址,默认连接本地Mongo数据库;–port:代表远程连接的数据库的端口,默认连接的远程端口27017;-u,–username:代表连接远程数据库的账号,如果设置数据库的认证,需要指定用户账号;-p,–password:代表连接数据库的账号对应的密码;-d,–db:代表连接的数据库;-c,–collection:代表连接数据库中的集合;
2021-07-13 14:12:58
779
Maven跳过单元测试主要可以分为三种方法
2024-08-26
Linux shell语法学习文档 PDF文档
2024-08-23
数据结构和算法-学习文档 PDF教程
2024-08-23
城市天际线2 全DLC解锁
2024-08-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人