# JavaCode **Repository Path**: CodeWaterStudy/java-code ## Basic Information - **Project Name**: JavaCode - **Description**: 记录学习Java的过程、知识点、bug等等。 有黑马和尚硅谷的代码 - **Primary Language**: Java - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2022-02-12 - **Last Updated**: 2022-08-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: Java, DesignPattern, Spring, MyBatis, Dubbo ## README [TOC] ## JavaCode 命名规则 **注意:** 包名小驼峰,类名大驼峰,方法名小驼峰 记录学习Java的过程、知识点、bug等等。 个人详细学习记录[博客](https://www.cnblogs.com/CodeWater404/) *** ## Algorithm 算法练习。 > 调试代码: > > 1. 一般**cout**输出中间变量; > 2. 遇到***\*Runtime Error\**** (RE)、segment fault一个个删除代码看那部分对结果有影响的。 ### [acwing](https://www.acwing.com/activity/) 注意类名要改为Main,去掉包路径;即可运行在acwing上。 *** *** ### leetCode力扣 提示:力扣上面的题目不需要处理输入,直接写思路在函数里面即可。 ### offer 题源:剑指offer ![image-20220728220843868](pictures/image-20220728220843868.png) > TODO: 用y总的代码重构,有些题目还是没懂 *** ## Basics Java基础复习(参考的是黑马) 1. collection集合 2. file类 3. io流 4. net网络编程 5. lambda函数式编程 6. stream流 7. reflect反射 8. annotation注解 ## cache_demo `SpringCache` 1. `#result.id`是从函数返回值中取 2. `#p0.id #user.id #arg.id`都是从参数中取,然后缓存 3. `condition`是满足条件才缓存 4. `unless`满足条件不缓存 ![image-20220627164236823](pictures/image-20220627164236823.png) ## Design Pattern 设计模式(参考尚硅谷) 笔记在notes中 ## Dubbo dubbo练习(参考尚硅谷) Apache Dubbo (incubating) |ˈdʌbəʊ| 是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。 官网: http://dubbo.apache.org/ ## Elasticsearch 练习(参考尚硅谷) ### FunctionProgram *** 函数式编程(参考B站,三更草堂) ## notes 各种代码笔记 ## SQL mysql语句练习,理论参考[博客](https://www.cnblogs.com/CodeWater404/p/15972099.html) ### sql 1. tab_user建表 2. multiTableExample多表例子 3. multiTableExercise多表查询练习 4. grantAndRevoke管理用户和授权 ### jdbc java连接数据库;db3.sql需要用到练习的sql数据 1. JdbcDemo01快速入门 2. JdbcDemo02-05 添加、修改、删除数据(DML)、创建表(DDL) 3. JdbcDemo06查询语句(DQL)if判断 4. JdbcDemo07查询语句(DQL)while判断 5. JdbcDemo08、09、10:封装数据、防止sql注入、事务 6. 除此之外的就是数据库连接池的练习和例子 *** ## Web Javaweb学习 ### bootstrap 一个前端框架练习 ### xml xml解析练习 *** ## WebTomcat Javaweb学习:涉及到服务器,需要Tomcat等新环境,开的模块。 Servlet是sun公司制定的一种用来扩展web服务器功能的一种组件规范,web服务器只能只能处理静态资源的请求;使用Servlet来扩展web服务器功能,web服务器收到请求之后就会调用相应的Servlet来处理请求。 1. servlet 2. request对象;test包下是个总和案例 3. response对象 4. cookie(客户端) 5. session(服务端) 6. el表达式 7. jstl jsp标准标签库 8. jspCase jsp、el、jstl的一个总和案例 9. filter 过滤器 10. filterCase 过滤器的案例练习(有错误) 11. listener 监听器 *** ## JQuery JQuery、Ajax暂时不做了解;了解一下json 1. ## JUC 参考的是尚硅谷 ## JVM 尚硅谷 ## Rabbitmq 消息队列练习 ## Redis nosql数据库练习,笔记在notes中 ## Spring5 spring学习 1. demo1入门 2. demo2依赖注入(对象属性的、属性是集合的、bean的单例多例) 3. demo3使用注解进行配置 4. demo4 Aop切面 5. demo5 jdbctemplate 6. demo6 事务、log4j2 ## SpringMVC 入门练习 ## SpringMVC-demo2 1. @RequestMapping的各种属性 2. @RequestParam请求参数 3. @RequestHeader头 4. @CookieValue值 5. 通过实体类参数获取请求参数 6. 解决乱码问题 ## SpringMVC-demo3 1. 使用servletAPI获取request域对象共享数据 2. 使用ModelAndView获取request域对象共享数据 3. 使用Model获取request域对象共享数据 4. 使用Map获取request域对象共享数据 5. 使用modelMap获取request域对象共享数据 6. 使用servletAPI获取session域对象共享数据 7. 使用servletAPI获取application域对象共享数据 8. thymeleafView视图 9. InternalResourceView转发视图 10. RedirectView重定向视图 11. 视图控制器spingmvc.xml中配置view-controller ## SpringMVC-jsp 1. 基本运行入门 ## SpringMVC-rest 1. 显示用户信息 2. 删除用户 3. 添加用户 4. 修改用户 ## Spring-demo4 HttpMessageController 1. requestBody请求体 2. requestEntity请求实体 3. responseBody响应体 4. responseEntity响应实体 5. 文件下载 6. 文件上传 ## SpringMVC-demo5 1. 拦截器 2. 异常处理 ## SpringMVC-annotation 全部采用注解来配置实现 ## MyBatis 1. 快速入门 ## MyBatis-demo2 1. 增删改查 2. 方法里有不同参数进行查询 3. 不同返回值类型进行查询 4. 添加主键自增 ## MyBatis-demo3 1. 实体类和数据库列名的自定义映射 2. 分步查询、延迟加载 3. 一对多的查询 4. 动态sql 5. 一级、二级缓存、整合第三方缓存 ## MyBatis-MBG 1. 逆向工程:根据数据库表生成具体的实现类 2. 使用分页插件 ## MybatisPlus 练习(尚硅谷) ## MyBatisPlusDataSource 多数据源练习(尚硅谷) ## SpringBoot 1. springboot-demo1 boot入门 2. springboot-helloworld 使用spring Initializer创建模板 3. springboot-web01 web方面的注解使用 ### boot项目创建的pom模板文件 ``` 4.0.0 org.springframework.boot spring-boot-starter-parent 这里的版本可以不同,!!!用模板创建的需要删除这里以外的就能运行 2.3.4.RELEASE com.codewater web 0.0.1-SNAPSHOT web Demo project for Spring Boot 1.8 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-devtools runtime true org.springframework.boot spring-boot-configuration-processor true org.projectlombok lombok true org.springframework.boot spring-boot-starter-test test org.webjars jquery 3.5.1 org.springframework.boot spring-boot-maven-plugin org.projectlombok lombok ``` # Git 1. git add添加文件的时候区分大小写的,不然会添加不成功。 2. git push远程分支的时候也是需要区分大小写,不然还是会push不成功。 3. *** # 遇到的问题及遗忘 1. comparator的排序规则如何定义([详情](https://www.cnblogs.com/CodeWater404/p/15922537.html)) > 规则: > 从小到大排序,当前对象-比较对象; > 从大到小排序,比较对象-当前对象。 > > > > 实现比较的两种方法: > > 1. Comparable:类继承接口的: > > ~~~java > public class Student implements Comparable{ > private int age; > @Override > public int compareTo(Student o) { > return this.age-o.age;//升序 > } > } > ~~~ > > 2. Comparator:排序时直接写规则如Collections.sort或 Arrays.sort > > ~~~java > Collections.sort(list, new Comparator() { > @Override > public int compare(Student o1, Student o2) { > return o2.getAge()-o1.getAge();//以学生的年龄降序 > } > }); > ~~~ > > 2. 泛型的上下限 > 1. 设置泛型对象的**上限**使用extends,表示参数类型只能是该类型或该类型的子类
> 格式:< ? extends 类>
> 2. 设置泛型对象的**下限**使用super,表示参数类型只能是该类型或该类型的父类:
> 格式:< ? super 类> 3. Java是向下取整(浮点数到整数) 4.