1、创建记录表:
1 | -- 用户登录记录表 |
2、启动事件调度器:
1 | -- 检查事件调度器是否启用 |
3、创建事件:
1 | create event delete_old_logs |
4、事件调度器基本操作:
1 | -- 查看事件 |
1 | -- 用户登录记录表 |
1 | -- 检查事件调度器是否启用 |
1 | create event delete_old_logs |
1 | -- 查看事件 |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 语法: |
1 | -- 语法: |
1 | -- 语法: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 语法: |
1 | -- 语法: |
1 | -- 语法: |
1 | -- 语法: |
1 | -- 语法: |
1 | -- 语法: |
1 | -- 语法: |
1 | -- 语法: |
1 | -- 语法: |
1 | -- 语法: |
1 | -- 语法: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 语法: |
1 | -- 语法: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 语法: |
1 | -- 语法: |
1 | -- 语法: |
1 | -- 语法: |
1 | -- 语法: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子,假设权限值是按位存储的(例如:user_id=permissions,7 = 0111,3 = 0011,5 = 0101),你可以使用 BIT_AND() 来计算这些权限的按位与结果: |
1 | -- 例子,假设权限值是按位存储的(例如:user_id=permissions,7 = 0111,3 = 0011,5 = 0101),你可以使用 BIT_OR() 来计算这些权限的按位与结果: |
1 | -- 例子,假设权限值是按位存储的(例如:user_id=permissions,7 = 0111,3 = 0011,5 = 0101),你可以使用 BIT_XOR() 来计算这些权限的按位与结果: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
1 | -- 例子: |
| –HTTP状态码– | –状态码名称– | 描述说明 |
|---|---|---|
| 100 | Continue | 继续。客户端应继续其请求 |
| 101 | Switching Protocols | 切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到 HTTP 的新版本协议 |
| 200 | OK | 请求成功。一般用于 GET 与 POST 请求 |
| 201 | Created | 已创建。成功请求并创建了新的资源 |
| 202 | Accepted | 已接受。已经接受请求,但未处理完成 |
| 203 | Non-Authoritative Information | 非授权信息。请求成功。但返回的 meta 信息不在原始的服务器,而是一个副本 |
| 204 | No Content | 无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档 |
| 205 | Reset Content | 重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域 |
| 206 | Partial Content | 部分内容。服务器成功处理了部分 GET 请求 |
| 300 | Multiple Choices | 多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择 |
| 301 | Moved Permanently | 永久移动。请求的资源已被永久的移动到新 URI ,返回信息会包括新的 URI ,浏览器会自动定向到新 URI 。今后任何新的请求都应使用新的 URI 代替 |
| 302 | Found | 临时移动。与 301 类似。但资源只是临时被移动。客户端应继续使用原有 URI |
| 303 | See Other | 查看其它地址。与 301 类似。使用 GET 和 POST 请求查看 |
| 304 | Not Modified | 未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源 |
| 305 | Use Proxy | 使用代理。所请求的资源必须通过代理访问 |
| 306 | Unused | 已经被废弃的 HTTP 状态码 |
| 307 | Temporary Redirect | 临时重定向。与 302 类似。使用 GET 请求重定向 |
| 400 | Bad Request | 客户端请求的语法错误,服务器无法理解 |
| 401 | Unauthorized | 请求要求用户的身份认证 |
| 402 | Payment Required | 保留,将来使用 |
| 403 | Forbidden | 服务器理解请求客户端的请求,但是拒绝执行此请求 |
| 404 | Not Found | 服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置 “您所请求的资源无法找到” 的个性页面 |
| 405 | Method Not Allowed | 客户端请求中的方法被禁止 |
| 406 | Not Acceptable | 服务器无法根据客户端请求的内容特性完成请求 |
| 407 | Proxy Authentication Required | 请求要求代理的身份认证,与 401 类似,但请求者应当使用代理进行授权 |
| 408 | Request Time-out | 服务器等待客户端发送的请求时间过长,超时 |
| 409 | Conflict | 服务器完成客户端的PUT请求是可能返回此代码,服务器处理请求时发生了冲突 |
| 410 | Gone | 客户端请求的资源已经不存在。410 不同于 404,如果资源以前有现在被永久删除了可使用 410 代码,网站设计人员可通过 301 代码指定资源的新位置 |
| 411 | Length Required | 服务器无法处理客户端发送的不带 Content-Length 的请求信息 |
| 412 | Precondition Failed | 客户端请求信息的先决条件错误 |
| 413 | Request Entity Too Large | 由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个 Retry-After 的响应信息 |
| 414 | Request-URI Too Large | 请求的 URI 过长( URI 通常为网址),服务器无法处理 |
| 415 | Unsupported Media Type | 服务器无法处理请求附带的媒体格式 |
| 416 | Requested range not satisfiable | 客户端请求的范围无效 |
| 417 | Expectation Failed | 服务器无法满足 Expect 的请求头信息 |
| 500 | Internal Server Error | 服务器内部错误,无法完成请求 |
| 501 | Not Implemented | 服务器不支持请求的功能,无法完成请求 |
| 502 | Bad Gateway | 充当网关或代理的服务器,从远端服务器接收到了一个无效的请求 |
| 503 | Service Unavailable | 由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的 Retry-After 头信息中 |
| 504 | Gateway Time-out | 充当网关或代理的服务器,未及时从远端服务器获取请求 |
| 505 | HTTP Version not supported | 服务器不支持请求的 HTTP 协议的版本,无法完成处理 |
1 | public class Car implements Vehicle{ |
1 | public class Car implements Vehicle{ |
1 | public class Ship implements Vehicle{ |
1 | public class VehicleProxyProvider { |
这样我们就能够通过给VehicleProxyProvider传入一个Car对象或则Ship对象来返回一个代理对象,AOP就是在反射调用目标方法的前后去执行你所定义的代码,如图:
1 |
|
1 |
|
1.获取到超链接传递的数据,请求http://localhost:8080/springmvc/vote/test01?name=xx
2.@RequestParam 表示会接收提交的参数
3.value = “name” 表示提交的参数名为name
4.required = false 表示该参数可以没有,默认是ture,表示必须要传这个参数
5.当我使用@RequestParam(value = “name”, required = false)后就可以让请求的的参数名和方法的形参名可以不一致
1 |
|
1.当VoteHandler的方法被标识@ModelAttribute就视为一个前置方法
2.当调用该VoteHandler类的其他的方法时,都会先执行该前置方法
3.类似AOP的前置通知
4.prepareModel前置方法,会切入到其他方法前执行
5.该用法一般用在用户管理
1 |
|
1.方法上需要标注@InitBinder springmvc底层会初始化WebDataBinder
2.调用webDataBinder.setDisallowedFields(“birthday”);表示取消指定属性的绑定即:当表单提交字段为birthday时,
就不会把接收到的birthday值填充到model数据good的birthday属性中
3.机制:springmvc在底层通过反射调用目标方法时,接收到http请求的参数和值,使用反射+注解技术,取消对指定属性的填充
4.setDisallowedFields支持可变参数,可以填写多个字段
5.如果取消某个属性绑定,验证就没意义了,应当把验证的@NotEmpty注解去掉,birthday属性会使用默认值null
1 |
|
获取提交的数据 -> 封装成java对象
1.方法的形参用对应的类型来指定即可,SpringMVC会自动的进行封装
2.如果自动的完成封装,要求提交的数据,参数名和对象的字段名保持一致
3.如果属性是对象,这里仍然是通过 字段名.字段名
4.如果提交的数据的参数名和对象的字段名不匹配,则对象的属性值就是null
5.该封装底层是反射+注解..来实现
1 |
|
1.通过Map<String, Object>设置数据到request域
2.通过map对象,添加属性到request中
3.原理分析:springmvc会遍历map,然后将map的k-v,存放到request域中
1 |
|
1 |
|
23年最后这三月真是闹腾,先是中耳炎再到甲流和支原体肺炎,真的是一波未平一波又起,搞得我学习心思都没了,进度也是一言难尽。不过该学的都学完了,正式进入下一个更重要阶段——实习。
1.完成最常见的Spring Cloud微服务组件学习并熟练使用,如Eureka、GateWay、Nacos、OpenFeign、Sleuth+Zipkin、Sentinel、Seata。
2.完成Linux操作系统学习,了解了命令的基本使用,能够维护我买的小服务器。
3.完成Nginx学习,知道正反向代理的区别,学会自定义Nginx的config配置文件,来实现负载均衡和请求转发。
4.完成Redis系统学习。
十月耳朵旧病复发,学习进度又拖延了,还要连续每周去趟医院,只能带一边耳机学习,不过现在好点了。在此之前完成了毕业设计项目并部署上线了,后面可以继续优化。SpringCloud微服务组件刚学完Eureka注册中心、GateWay网关、链路追踪Sleuth和Zipkin。继续往前冲~~~~
在服务器上使用Docker输入上面命令下载mysql5.7版本:
1 | docker run -d --name mysql -p 3306:3306 -e TZ=Asia/shanghai -e MYSQL_ROOT_PASSWORD=128 mysql:5.7 |
后端项目镜像搭建:
1 | docker build -t sixseven . |
后台运行后端项目:
1 | docker run -d --name sixseven -p 9090:9090 -v /root/docker/dist/src:/root/docker/dist/src sixseven:v1.1.3 |
前端项目镜像搭建:
1 | docker build -t sixseven-frontend:v1.1.1 ./docker |
后台运行前端:
1 | docker run -d --name nginx -p 80:80 -v /root/docker/dist/html:/user/share/nginx/html sixseven-frontend:1.2.3 |
包括了底层代码的解读和原理机制实现,比如:ioc容器的底层实现、aop的动态代理机制,还亲自动手写了SpringMVC底层实现,从前端发送url->DispatcherServlet->映射器->返回到DispatcherServlet->处理器适配器->Controller->正常自己实现的业务代码->返回到Controller->ModelAndView返回到处理器适配器->返回给DispatcherServlet->ViewResovler->再返回给DispatcherServlet->视图渲染->返回响应。属于是收获满满^_^
四月完成数据库复习,就进入了web[servlet+jsp那一套]学习。自己动手写了个简单版的小tomcat,运用到了dom4j、反射、网络编程、IO等java基础,加强了对tomcat的底层机制理解。原本计算机基础系统学习是在四月完成的,但里面大多数都是理论知识,太枯燥了,只能一天看一点,一步一步的往前推进。这个属于是考虑不全,临时改变计划,不过四月一边学web一边把前端的h5、c3、js、jquery、ajax学了,不过只是简单的学习了一下,前端对自己的要求是能看懂、能维护、会调api的一个层面。
每天坚持自学八小时以上!终于把Java基础复习完辣!!!
如梦初醒,醍醐灌顶。哈哈哈哈
给爷冲冲冲冲冲冲冲冲冲冲冲冲!!!!!!
高考已过两年之久,每次睡前都会回想,我整个中学生涯浑浑噩噩,全是在电脑游戏颓废中度过。有人会问我,你学习有没有目标,每次都只是敷衍过去,其实我根本不知道什么是目标,未来会怎么样,只是在温室里躺平,没有一点儿动力。有的人说现在大部分人都是这个状态,做好当下的任务就好了,不用考虑未来会怎么样,可我没得选了,就算不能证明我可以,那也要证明我不可以。
我绝对不能让自己这样继续懒散下去了,你会说没有考上好的大学会有遗憾吗,那当然是有,但我在高中的最后那段时间里学会了,如何去学习,如何去进步,这都比什么都宝贵。这何尝不是一种成长,加油!!!未来仍可握于手中。