
java
文章平均质量分 85
爱吃肉c
关关难过关关过,前路漫漫亦灿灿
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
设计模式 更新ing
定义了一个接口,并且有了一个实现类,且这里的Π定义的是3.14,目前有一个新的需求就是需要一个Π是3.1415926的计算圆形的类,我们不想修改之前实现的类,那么我们可以进行扩展,定义一个新的类去继承该开始的类,只扩展圆形的面积即可。比如一个视频软件,区分不同的用户级别 包括访客,普通用户,VIP用户,每个用户对应的方法具体实现是不同的,根据用户级别的不同,有不同的行为。这里只实现了一个,类比即可,我们可以看出,每个类都有了类似的行为,但是一个类型对应不同的类。就是分为小的接口,可以有不同的组合实现。原创 2024-12-01 18:00:40 · 1133 阅读 · 0 评论 -
wandb
Ultralytics YOLO 已经内置了对 wandb 的支持。如果 wandb 已安装并且已登录,YOLO 的 train 方法会自动将训练过程记录到 wandb 项目中。首先,确保您的 Python 环境中已经安装了 wandb 库。将 YOUR_API_KEY 替换为您在上一步中复制的实际 API 密钥。在“API Keys”部分,点击“Create New API Key”按钮。2. 获取 wandb API 密钥。登录到您的 wandb 账户。复制生成的 API 密钥。原创 2024-10-12 15:43:02 · 1763 阅读 · 0 评论 -
黑马点评(更新完毕 )
数据库数据变更时,我们选择删除缓存,而不是更新缓存,删除缓存的好处:数据库数据变更时,我们直接删除缓存,比如更新100次,只用删除一次就行了,查询时在更新缓存,但是如果更新缓存的话,就是导致,数据库数据变更100次那么缓存就要更新100次,如果中间没有读操作,就会导致无效的写操作。在这里,保存code时,首先数据类型使用的是String,在 redis中使用phone,刚好登录时,会提交phone和code,根据提交的code可以在redis中查找到code,然后验证。②如果存储键,方便我们后续的读取。原创 2024-10-10 17:52:38 · 1226 阅读 · 0 评论 -
韩顺平 集合
这里好像理解了老师前面说的,为什么不用数组,用集合,比如数组的话,它的容量是固定的,我们增加或删除都会比较麻烦,但是随机访问比较方便。任何一个实现Collection接口的对象,都可以通过iterator()方法获得一个迭代器对象,通过该迭代器对象可以遍历集合内容。在调用next()方法前,都要先执行hasNext()来判断是否有下一个对象,如果不判断,可能会出现空指针异常。Map实现 接口的实现子类是双列集合,存放的是K-V。有两个常用方法,hasNext()和next()原创 2024-08-15 19:30:11 · 911 阅读 · 0 评论 -
idea一些bug
push之后 我们可以在本地mater分支的基础上创建分支,然后在该创建的分支上修改我们的代码,做后续修改,如果后续发现修改没错,可以将该修改的代码merge到master上。链接: 点击下载:https://www.visualsvn.com/files/Apache-Subversion-1.9.2.zip.导致项目变成一个普通项目而不是maven管理的了,解决方法。如果我们在本地写了一个项目,想要上传到远端代码仓库比如github。看一下是否项目不受maven管理了…之后我们可以push我们的代码。原创 2024-07-03 17:15:52 · 467 阅读 · 0 评论 -
SpringMvc(2)RequestMapping注解
RequestMapping注解1 、RequestMapping的作用2、RequestMapping的出现位置3、类上与方法上结合使用4、RequestMapping注解的value属性4.1 value属性的使用4.2 Ant风格的value4.3 value中的占位符(重点)5、RequestMapping注解的method属性5.2衍生Mapping5.3web的请求方式6 、RequestMapping注解的params属性6.1 params属性的理解6.2params属性的4种用法6.3 测原创 2024-04-20 16:37:27 · 1303 阅读 · 0 评论 -
SpringMVC (1)第一个程序
MVC是一种软件架构模式(是一种软件架构设计思想,不止Java开发中用到,其它语言也需要用到),它将应用分为三块:M:Model(模型)V:View(视图)C:Controller(控制器)MVC将应用分为三块,每一块各司其职,都有自己专注的事情要做,他们属于分工协作,互相配合:Model:负责业务处理及数据的收集。View:负责数据的展示Controller:负责调度。它是一个调度中心,它来决定什么时候调用Model来处理业务,什么时候调用View视图来展示数据。原创 2024-04-16 09:31:38 · 565 阅读 · 0 评论 -
spring 集成 mybatis
○ Account,属性私有化,提供公开的setter getter和toString。○ mybatis-spring:mybatis提供的与spring框架集成的依赖。○ 该文件可以没有,大部分的配置可以转移到spring配置文件中。○ 如果遇到mybatis相关的系统级配置,还是需要这个文件。● 第九步:编写mybatis-config.xml配置文件。○ 在配置文件中配置命名空间,以及每一个方法对应的sql。● 第十一步:编写测试程序,并添加事务,进行测试。● 第六步:编写mapper配置文件。原创 2024-04-13 20:59:21 · 921 阅读 · 0 评论 -
mybatis(9)-逆向工程+PageHelper+注解方式开发
使用注解来映射简单语句会使代码显得更加简洁,但对于稍微复杂一点的语句,Java 注解不仅力不从心,还会让你本就复杂的 SQL 语句更加混乱不堪。因此,如果你需要做一些很复杂的操作,最好用 XML 来映射语句。所谓的逆向工程是:根据数据库表逆向生成Java的pojo类,SqlMapper.xml文件,以及Mapper接口类等。当然,使用注解式开发的话,sql语句是写在java程序中的,这种方式也会给sql语句的维护带来成本。mybatis中也提供了注解式开发方式,采用注解可以减少Sql映射文件的配置。原创 2024-04-13 09:53:35 · 811 阅读 · 0 评论 -
mybaits(8)-缓存机制
mybatis的缓存:将select语句的查询结果放到缓存(内存)当中,下一次还是这条select语句的话,直接从缓存中取,不再查数据库。第二种:第一次查询和第二次查询之间,执行了增删改操作。● 或者集成其它第三方的缓存:比如EhCache【Java语言开发的】、Memcache【C语言开发的】等。第二次并没有执行sql,而是从二级缓存中读取了,因为一级缓存关闭,会将其内容保存在二级缓存中。进行了增删改的操作,就会导致二级缓存清空,二级缓存此时会失效。缓存的作用:通过减少IO的方式,来提高程序的执行效率。原创 2024-04-12 11:27:41 · 1265 阅读 · 0 评论 -
mybatis(7)--高级关系映射
开启全局延迟加载之后,所有的sql都会支持延迟加载,如果某个sql你不希望它支持延迟加载怎么办呢?select 是我们接下来要执行的语句,而column 是我们传给sql语句的参数,column是我们查询出来的列名。● 第三种方式:两条SQL语句,分步查询。优点二是支持懒加载。多对一 所以 多的那个表为主表,一的那个为副表,即在Student主表中添加Clazz副表。● 第二种方式:一条SQL语句,association。此时班级是主表,学生是副表。● 第一种方式:一条SQL语句,级联属性映射。原创 2024-04-12 09:33:05 · 927 阅读 · 0 评论 -
mybatis-动态sql
需求:先根据品牌查询,如果没有提供品牌,再根据指导价格查询,如果没有提供指导价格,就根据生产日期查询。比如我们只更新提交的不为空的字段,如果提交的数据是空或者"",那么这个字段我们将不更新。主要使用在update语句当中,用来生成set关键字,同时去掉最后多余的“,”如果让第一个为空,此时不会出现错误,会自动帮我们去掉多余的and。● 所有条件都为空时,where标签保证不会生成where子句。● 自动去除某些条件前面多余的and或or。可以自动增加前缀,后缀,删除前缀,删除后缀。只有一个分支会被选择!原创 2024-04-10 20:55:01 · 1308 阅读 · 0 评论 -
mybatis(5)参数处理+语句查询
使用了param注解,底层也是帮我们封装成了map集合,但是是将我们自己定义的名字封装为key,且这里argx不能再用,但是paramx仍可以使用。比如 char 类 我们可以通过parameterType 来告诉mybatis 参数类型是什么,其他基本数据类型都一样,不在举例。注意:如果我们传的是实体类,则#{},{}里应该是实体类的属性名,不能是其他。传入多参数时,其实mybatis底层是帮我们封装成了map集合。我们也可以显示标注类型,省去mybatis的类型匹配。就相当于帮我们封装成。原创 2024-04-10 09:54:55 · 629 阅读 · 0 评论 -
mybatis(4) 代理机制以及小技巧
此时当我们插入时,就会将自动生成的主键值赋给id,如果为false,则我们输出时car的id为null,虽然数据库中car的id是有值的,但是由于没有回显,输出就为null。在上一篇mybtis的web项目中,我们最后有一个问题没有解决,就是dao的实现类,其代码很类似,只是具体执行的sql语句不同,那么我们是否可以只编写dao的接口,而不用编写其具体实现类呢?虽然我们插入的car id为null,但是当我们再次获取输出car时我们可以看到其id是有值的,当需要进行sql语句关键字拼接的时候。原创 2024-04-09 17:16:06 · 710 阅读 · 0 评论 -
spring(7)-事务
● 什么是事务○ 在一个业务流程当中,通常需要多条DML(insert delete update)语句共同联合才能完成,这多条DML语句必须同时成功,或者同时失败,这样才能保证数据的安全。○ 多条DML要么同时成功,要么同时失败,这叫做事务。○ 事务:Transaction(tx)● 事务的四个处理过程:○ 第一步:开启事务 (start transaction)○ 第二步:执行核心业务代码。原创 2024-04-05 09:12:25 · 968 阅读 · 0 评论 -
spring(6)-AOP
将与核心业务无关的交叉业务代码独立的抽取出来,形成一个独立的组件,然后以横向交叉的方式应用到业务流程当中的过程被称为AOP。AOP的优点:● 第一:代码复用性增强。● 第二:代码易维护。● 第三:使开发者更关注业务逻辑。原创 2024-04-02 11:30:13 · 965 阅读 · 0 评论 -
spring6-代理模式
它既可以代理接口,又可以代理类,底层是通过继承的方式实现的。通过引入一个新的对象来实现对真实对象的操作或者将新的对象作为真实对象的一个替身,这种实现机制即为代理模式,通过引入代理对象来间接访问一个对象,这就是代理模式的模式动机。并且这种方式要为每一个接口都实现一个类,如果我们的接口很多,就会导致类爆炸,使用动态代理可以解决这个问题,动态代理不要求我们写出代理类,而是会在内存中自动生成且实例化一个对象。在程序运行阶段,在内存中动态生成代理类,被称为动态代理,目的是为了减少代理类的数量。解决代码复用的问题。原创 2024-04-01 09:59:45 · 859 阅读 · 0 评论 -
mybatis(2)核心配置文件
这样就有了自己的数据源比如你可以写一个属于自己的数据库连接池(数据库连接池是提供连接对象的,所以数据库连接池就是一个数据源)。: 这是一个底层设置,如果获取连接花费了相当长的时间,连接池会打印状态日志并重新尝试获取一个连接(避免在误配置的情况下一直失败且不打印日志),默认值:20000 毫秒(即 20 秒)。:即我们的连接池中最多会有几个活跃连接数量,超过该连接数量之后,之后的连接就要等待之前的连接释放。连接池的优点:1每次链接都从池中拿,效率高2.每次只能从池中拿,连接对象的创建数量是可控的。原创 2024-03-31 17:06:43 · 659 阅读 · 0 评论 -
Mybatis(3) web项目
实现一个转账系统。原创 2024-03-31 16:49:29 · 697 阅读 · 0 评论 -
Mybatis (1)
如果我们有多个mapping.xml文件,且sql语句的id是一致的,此时命名空间就很重要了,因为我们将这个xml文件都配置到mybatis-config.xml文件中,此时如果我们只写id名来找该sql语句的话,就会出错,因为不知道是哪一个。我配置文件也没有开启驼峰式映射,不知道为什么我没有起别名,但是也是对的,他自动帮我匹配到了我的类属性名,好像是会自动开启驼峰式映射?如果我们使用的是一个对象传值,则#{},{}里填写的是getXxx,去掉get第一个字母变小写后的名字,而不是说就是属性名。原创 2024-03-29 15:44:51 · 665 阅读 · 0 评论 -
spring6(4) 注解开发
Spring IoC容器的实现原理:工厂模式 + 解析XML + 反射机制。原创 2024-03-29 11:48:31 · 829 阅读 · 0 评论 -
spring(3)
但是这种情况是两个对象都是propotype时才会出现的问题,只有一个时singleton,循环依赖就不会出现问题,因为比如上述例子,妻子是singleton,丈夫是propotype的,妻子在创建时只会创建一个,给妻子赋值时会去创建丈夫对象,此时丈夫对象又会去找妻子对象,由于妻子对象是单例的,只有一个所以该丈夫对象可以创建且成功赋值,妻子对象便也可以成功赋值。因为我们无法提前曝光,在构造时,就需要给属性赋值才能实例化,而由于依赖另一个对象,另一个对象又依赖于当前对象,无法进行实例化,会出现。原创 2024-03-28 17:23:05 · 880 阅读 · 0 评论 -
spring6 (2)
Spring IoC容器的顶级对象,BeanFactory被翻译为“Bean工厂”,在Spring的IoC容器中,“Bean工厂”负责创建Bean对象。(也就是说在Spring中为Bean对象的创建准备了多种方案,目的是:更加灵活)● 第二类:工厂Bean(记住:工厂Bean也是一种Bean,只不过这种Bean比较特殊,它可以辅助Spring实例化其它Bean对象。FactoryBean:它是一个Bean,是一个能够辅助Spring实例化其它Bean对象的一个Bean。仅限于在WEB应用中使用。原创 2024-03-27 16:40:27 · 764 阅读 · 0 评论 -
Spring6 (1)
自己的理解:spring其实就是一个容器,也可以说是一个框架,主要是控制反转和面向切面编程。是一种思想,就是把new对象的权力交给了spring,也把两个对象之间关系的连接交给了别人。依赖注入DI:是控制反转的一种实现方式,依赖就是指对象A和对象B之间的关系,注入就是就是一种方式将对象A和对象B关联起来。依赖注入DI,又包括常见的两种方式:第一种:set注入(执行set方法给属性赋值)第二种:构造方法注入(执行构造方法给属性赋值)注意术语:OCP:开闭原则(开发原则)原创 2024-03-27 10:46:51 · 881 阅读 · 0 评论 -
Java day16 filter
我们可以打断点尝试,在我们访问servlet时,会先经过dofilter方形之前的代码,然后执行我们的目标代码,之后再执行放行之后的代码。startup> 标签,标签中间填写的是整数,正整数表示在服务器加载时创建,值越小优先级越高,负整数或者不填表示第一次访问时创建。在web.xml 配置中 如果有多个多滤器就是按照filter-mapping的顺序执行的,哪个在前,先执行哪个filter。比如F1_filter,F2_filter,则就是F1 这个先执行。而filter 不能选择,都是在项目启动时创建。原创 2024-03-25 19:33:50 · 785 阅读 · 0 评论 -
Java Day16 Servlet(二)
Servletcontext对象有称呼为上下文对象,或者叫应用域对象(后面统一讲解域对象)。容器会为每个Servlet实例化一个Servletconfig对象,并通过Servlet生命周期的init方法传入给serviet作为属性。先运行UserServlet 设置值,之后运行UserServlet1获得属性值,如果先执行UserServlet1,会获得null。ServletContext 是最大的一个域对象,应用中所有的Servlet共享域对象中的内容。为Servlet提供初始配置参数的一种对象,原创 2024-03-25 14:55:54 · 919 阅读 · 0 评论 -
Day 15 Servlet(一)
资源包括静态资源和动态资源。对于服务器响应,有时候我们需要根据客户的不同请求返回不同的数据和页面。此时就需要一个java类来接收该请求,但是并不是所有的类都能接收,只有实现Servlet接口的java类才能接收和响应请求。Servlet运行在服务端。每当有请求时,Servlet会在服务端运行对应的java代码生成对应的数据返回给浏览器端。原创 2024-03-24 16:41:41 · 647 阅读 · 0 评论 -
Tomcat
Tomcat是一款服务器软件,我们的app项目,要在服务器跑起来,首先我们的项目是java写的,需要jre运行环境,其次只有jre运行环境也不行,还需要一个服务器软件,目前这里使用的是Tomcat。去官网里下载,注意解压时一定要配置好jdk,因为tomcat也是java写的,需要java运行环境。项目访问url:http:/[tomcat部署服务器的地址]:端口号/项目名。原创 2024-03-24 11:23:56 · 469 阅读 · 0 评论 -
Day 14 JDBC
如果我们在Serve层获得一个连接,这个连接还需要传给Dao层来获取,能不能让同一个线程,Serve层和Dao层获取的都是同一个连接,而不用使用参数传递呢?比如转账业务,我们可以在业务层获取一个连接,之后将该连接传入加钱和转钱方法,这样可以确保是一个连接。对于Dao层的封装,写一个基础BaseDao,对语句进行封装,可以分为DQL和非DQl两种。每次都去初始化连接池太麻烦了,我们封装一个工具类,对外提供一个获取连接和回收连接的方法。4、编写sql语句 并且发送sql语句获得结果集。从左到右 索引从1开始。原创 2024-03-23 17:34:50 · 1240 阅读 · 0 评论 -
Java Day13 高级篇
Target;@Myannotations(aaa="崔",ccc={1,2,3})@Myannotations(aaa="崔",bbb=2,ccc={1,2,3})//只有一个value属性 则value可以省略不写,如果除了value还有其他属性但是都有默认值,value也可以省略注解本质是一个接口,Java中所有注解都是继承了Annotation接口的。原创 2024-03-21 11:02:03 · 376 阅读 · 0 评论 -
Java Day13 多线程
①子线程一定要调用start方法,而不是run方法,调用run方法,还是相当于在main线程中创建了一个实例对象,在运行她的方法, 而已,是单线程的。pool-1-thread-2-1-200的和为:20100。pool-1-thread-3-1-300的和为:45150。pool-1-thread-3-1-400的和为:80200。此时就需要线程池,线程池可以复用线程,不用经常去创建线程。pool-1-thread-1-1-100的和为:5050。悲观锁:一上来就加锁,线程安全,性能较差。原创 2024-03-20 16:50:20 · 788 阅读 · 0 评论 -
Java Day12 特殊文件、日志技术
比如我们想要追踪 程序的错误信息,想要查看用户观看浏览器的情况,我们都需要日志,将其保存再一个日志文件中。使用解析器 将xml文件解析成一个文档 然后依次从根元素开始解析。查找 属性文件中 是否有崔 如果有 将年龄改为23。目前都是使用Logback框架,用SLF4J接口。就是限制XML文件只能按照某种格式进行书写。不仅限制标签 还限制标签内的属性值类型。经常利用Dom4j (第三方。只限制 标签 以及标签名。原创 2024-03-19 20:48:44 · 361 阅读 · 0 评论 -
Java Day11 IO流(二)
在上边User中,我们对pwd密码这一位加上了transient关键字,这个关键字代表我们在序列化时不需要对这个属性进行序列化,对密码进行序列化,可能有不安全的风险。当字节数组或者缓冲流的大小变大时,速度也会提升上去,但是当变大到一定程度,变化的幅度就很小了。而如果使用字节数组的方式,当字节数组大时,性能也是很好的,与使用缓冲流的效果差不多。首先用字节输入流读取,接着按照一定的编码,将字节输入流的数据,转换为字符流。不论是否用缓冲流,一个一个字节的方式复制都很慢,不推荐使用。输入流读取要和输出流一一对应。原创 2024-03-18 13:32:09 · 663 阅读 · 0 评论 -
Java Day 10 io流
每个字符一个字节,共128个字符,00000000-01111111(第一位都是0。文件字节输入流,是InputStream 字节输入流这个抽象类的一个实现类,英文,符号数字等仍然是一个字节,每个汉字的第一位都是1。一个中文字符占两个字节,兼容了ASCII编码。汉字占3个字节,数字这些占一个字节。每个字符占四个字节,但是这样太浪费空间了。Java提供了常用的编码和解码方法。close方法被执行。原创 2024-03-15 16:07:15 · 730 阅读 · 0 评论 -
Java Day9 File操作
【代码】Java Day9 File操作。原创 2024-03-15 10:39:42 · 229 阅读 · 0 评论 -
Java Day9 Stream流
【代码】Java Day9 Stream流。原创 2024-03-13 14:51:51 · 520 阅读 · 0 评论 -
java day8 Map集合系列
比如学生类,我们new出不同的对象,即使内容一样,但是由于哈希值不同,也会被认为是不同的对象。如果想要内容一样就去重时,就重写hashcode和equals方法。和Collection集合一样,我们先学习通用接口的方法,该接口的方法对于下面的类都是可用的。我们可以看到,即使name不同,由于我们比较的是age,当age相同时,就会被认为是一样的。,如果比较规则中的内容一样的话,这两条数据也会被认为一样。{巩义=[郑州, 洛阳], 江苏=[南通, 徐州]}巩义—>[郑州, 洛阳]江苏—>[南通, 徐州]原创 2024-03-13 10:48:09 · 526 阅读 · 0 评论 -
java Day8 单列Collection集合
如果一个集合我们在遍历时删除就很容易出现错误,比如list.add("崔");list.add("小李");list.add("小张");list.add("张");list.add("小王");if(s.contains("小")){这其实与我们之前讲的数组遍历删除是一样的,我们在删除时,后序元素往前移,就会导致删不完全。我们在遍历数组删除时,要么从前往后 删除一个之后i–,要么从后往前删除。集合也是如此我们应该使用iterator的remove方法。原创 2024-03-12 17:34:30 · 501 阅读 · 0 评论 -
java Day7 正则表达式|异常
在我们日常开发中,很多异常情况是java没有的,我们可以自己写一个异常类,注意 该类需要继承自运行时异常(runtimeException)或者编译时异常(exception)至于到底继承哪个,要看自己,如果你觉得这个问题很严重,需要在编译时就告诉程序员,需要其进行捕获或者抛出,就继承编译时异常,否则继承运行时异常。比如,我们需要保存一个合法的年龄。//编译时异常。原创 2024-03-11 19:49:41 · 679 阅读 · 0 评论 -
Java Day7 常用API
比如 有一个学生类 包含姓名,身高,年龄,如果我们直接使用sort 对该学生数组排序 会出现错误。让类的对象实现Comparable接口 重写compareTo方法。IntToDoubleFunction()是一个函数式接口。lambda 用于简化匿名内部类的书写。(被重写方法的形参)->{方法体};只能简化函数式接口匿名内部类的书写。函数式接口 我们可以在其上边添加上。操作数组的一个工具类。:只有一个方法的接口。如上边的setall。原创 2024-03-11 14:50:49 · 285 阅读 · 0 评论