后端-项目开发记录

一、ssm项目(黑马-传智健康)

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网页静态化技术:

①依赖

<!--pom.xml-->
<dependency>
   <groupId>org.freemarker</groupId>
   <artifactId>freemarker</artifactId>
   <version>2.3.23</version>
</dependency>

②模板文件:包括文本、注释、插值、ftl指令

<!--ftl模板文件-->
<html>
<head>
	<meta charset="utf-8"/>
	<title>freemarker入门</title>
</head>
<body>
	<#--注释-->
	${name}你好,${message}
</body>
</html>

③生成文件

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

<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-web</artifactId>
 </dependency>
 <dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-config</artifactId>
 </dependency>
 <dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-taglibs</artifactId>
 </dependency>

12.echarts:

下载 - Apache ECharts 下载echarts.js

13.导出pdf文件

① itext:

<dependency>
    <groupId>com.lowagie</groupId>
    <artifactId>itext</artifactId>
    <version>4.2.2</version>
    <type>pom</type>
</dependency>

②jasperReports:

<dependency>
    <groupId>net.sf.jasperreports</groupId>
    <artifactId>jasperreports</artifactId>
    <version>6.18.1</version>
</dependency>

对应软件是: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为了保证数据的高可用性,加入了主从模式. -个主节点对应一个或多个从节点,主节点
提供数据存取。从节点则是从主节点拉取数据备份。当这个主节点挂掉后.就会在这些从节点中选取一个来充当主节点,从而保证集群不会挂掉。

二、springBoot项目:瑞吉外卖

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 ,即数据传输对象,一般用于展示层和服务层之间的数据传输。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值