1. 子模块无法加载父模块依赖:确定依赖可以下载下来的前提下,子模块点击maven的clean之后再点击maven的刷新按钮即可。
2. 看视频做项目要用视频提供的资料再对着视频做, 而不是评论区其他学员提供的成品代码。主做后端的话,成品的前端代码可以用。
3. resources里面创建目录,输入com/itheima/dao。显示出来的还是com.itheima.dao
4.powerdesign
①创建modal:workbranch 右键——>new——>physical data modal——>选择使用的dbms
②创建表:physical data modal 右键——>new——>table——>code就是表名——>点击columns增加字段——>右键行——>properties——>勾选identity设置自增,勾选primary key设置主键
也可以右边的图形点击table图标拖进来新建table,然后再添加字段。
③外键关联:点击右侧的reference,将有关联的表连接起来。双击连接线,进入外键关联编辑表。点击joins,修改对应的关联字段。
④导出sql:工具栏——>database——>gererate database——>修改保存位置,确定。然后保存为pdm文件。
⑤使用sql:打开navicate premium——>打开数据库——>将sql文件托进来,点击开始
⑥逆向工程:file——>reverse engeneer——>database——>创建model——>点击add file图标选择需要逆向的sql文件,点击确定生成pdm文件。
⑦报表:工具——>report——>report wizard——>默认下一步——>完成。
5. controller里面函数的参数要和请求通过param传递过来的参数名称一致,不然获取不到。
6. 云存储:七牛云
①七牛云 - 国内领先的企业级云服务商 注册、登录、个人用户、实名认证
②新建存储空间——>文件管理,查看外链域名
③服务与支持——>文档中心——>对象存储——>SDK——>javaSDK↓
④鉴权:ak/sk
⑤文件上传:服务器直传——>文件上传,其中bucket就是创建的空间存储名称。
⑥修改ak、sk、bucket、zone/region,为真实的值,编写文件上传工具类。
7. cron表达式在线生成:在线Cron表达式生成器
8. Apache poi:由Apache提供,对微软office文档读写,使用最多的是poi操作excel文件。
9. 短信发送平台:阿里云-登录控制台-云通信-短信服务
10. freemarker网页静态化技术:
①依赖
org.freemarker
freemarker
2.3.23
②模板文件:包括文本、注释、插值、ftl指令
freemarker入门
<#--注释-->
${name}你好,${message}
③生成文件
public class FreemarkerTest {
public static void main(String[] args) throws IOException, TemplateException {
// 创建配置类
Configuration configuration = new Configuration (Configuration.getVersion ());
// 设置模板所在目录
configuration.setDirectoryForTemplateLoading (new File ("D:\\PrJava\\2022\\ssm\\spring_demo\\"));
// 设置字符集
configuration.setDefaultEncoding ("utf-8");
// 加载在模板
Template template = configuration.getTemplate ("freemarker.ftl");
// 创建数据模型
Map map = new HashMap ();
map.put ("name","张三");
map.put ("message","欢迎");
// 创建writer对象
Writer out = new FileWriter (new File ("D:\\PrJava\\2022\\ssm\\spring_demo\\test.html"));
// 输出
template.process (map,out);
// 关闭writer对象
out.close ();
}
}
11.权限配置:SpringSecurity
org.springframework.security
spring-security-web
org.springframework.security
spring-security-config
org.springframework.security
spring-security-taglibs
12.echarts:
下载 - Apache ECharts 下载echarts.js
13.导出pdf文件
① itext:
com.lowagie
itext
4.2.2
pom
②jasperReports:
net.sf.jasperreports
jasperreports
6.18.1
对应软件是:Jaspersoft Studio
13. redis
①缓存穿透:数据查询首先进行缓存查询;如果数据存在则直接返回缓存数据;如果不存在,就对数据库尽心个查询,并把查询到的数据放进缓存;如果数据查询为空,则不放进缓存。
为了防止id=-1恶意攻击的查询,如果从数据库查询的对象为空,也放入缓存,key为查询过的键值,valu为null。
②缓存雪崩:是指在某一个时间段,缓存集中过期失效,在缓存失效的这个时间段对数据访问查询,都落到数据库上,对数据库访问造成周期性的压力波峰。
将缓存的设置不同的失效时间,热门数据缓存时间长一些,冷门的时间短一些,特别人热门的长期有效。
③缓存击穿:是指一个key非常热点,在不停的扛着大并发,集中到一个点进行访问,当这个key失效的瞬间,持续的大并发就击穿缓存,直接请求到数据库上。
热门数据设置长期有效。
④集群方案
(1)主从复制(Replication):master会将数据同步到slave,而slave不会将数据通道到master,slave启动时会连接master同步数据。典型的分布式读写分离模型:master来处理写操作,slave提供读操作。缺点是主节点就一个,宕机就会导致无法写操作(非高可用)。
要实现主从复制这种模式非常简单,主节点不用做任何修改,直接启动服务即可。从节点需要修改
redis.conf配置文件,加入配置: slaveof <主节点ip地址> <主节点端口号> ,例如master的ip地址为
192.1 68.200.129 ,端口号为6379 ,那么slave只需要在redis.conf文件中配slaveof 192.1 68.200.129
6379即可.
(2)哨兵(Sentinel)
高可用(HA)是分布式系统架构设计中必须考虑的因素之一, 它是通过架构设计减少系统不能提供服务的时间。保证高可用通常遵循下面几点:1.单点是系统高可用的大敌,应该尽量在系统设计的过程中避免单点。2.通过架构设计而保证系统高可用的,其核心准则是:冗余。3.实现自动故障转移。
哨兵(sentinel)用于监控redis集群的master状态,其本身也是一个独立运行的进程,是redis的高可用解决方案,sentinel模式继承到redis2.4之后的版本。sentinel可以监视一个或多个redis master服务,以及这些master服务的所有从服务;当某个master服务下线时,自动将该master下的某个服务升级为master服务,其余节点也会开始从新的主节点复制数据。当redis安装完成后,会有一个redis-sentinel文件,这就是启动sentinel的脚本文件,同时还有一个sentinel.conf,是配置文件。
(3)内置集群(redis cluster)
redis cluster去中心化,去中间件,每个节点都存在各自的数据和整个集群的状态,每个节点都和其他所有节点连接,而且这些连接保持活跃,这样就保证了只要连接集群的任意一个节点,就可以获取其他节点的数据。每个节点保存的数据并不是所有的数据,而只是一部分数据。数据分配规则是哈希槽(hash slot)方式。
redis cluster为了保证数据的高可用性,加入了主从模式. -个主节点对应一个或多个从节点,主节点
提供数据存取。从节点则是从主节点拉取数据备份。当这个主节点挂掉后.就会在这些从节点中选取一个来充当主节点,从而保证集群不会挂掉。
1. 前端页面放到resources里面。默认的是static、template可用。如果需要自定义,设置:
@Slf4j
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
/**
* 设置静态资源映射
* @param registry
*/
@Override
protected void addResourceHandlers(ResourceHandlerRegistry registry) {
log.info("开始进行静态资源映射...");
registry.addResourceHandler("/backend/**").addResourceLocations("classpath:/backend/");
registry.addResourceHandler("/front/**").addResourceLocations("classpath:/front/");
}
}
这样的话,resources下的backend和front文件夹下的文件都可以访问到了。
2.TheadLocal:客户端发送的每次http请求,对应的服务端都会分配一个新的线程来处理,在处理过程中,比如以下过程都属于同一个线程:LoginCheckFilter的doFilter方法,EmployeeController的update方法,MyMetaObjectHandler的update方法。
3.文件上传下载:
①文件上传:服务端要接收客户端页面上传的文件,通常使用Apache的组件:commons-fileupload和commons-io。spring康佳在spring-we包对文件上传进行了封装,执行在controller方法中声明一个MultipartFile类型的参数即可接收上传的文件,参数名要与前端的input的name一致。
②文件下载:附件下载/浏览器下载-----通过浏览器进行文件下载,本质上是服务端将文件以文件流的形式写回浏览器的过程。
4.DTO:Data Transfer Object ,即数据传输对象,一般用于展示层和服务层之间的数据传输。