代码可读性
一、可读性的重要性编程有很大一部分时间是在阅读代码,不仅要阅读自己的代码,而且要阅读别人的代码。因此,可读性良好的代码能够大大提高编程效率。
可读性良好的代码往往会让代码架构更好,因为程序员更愿意去修改这部分代码,而且也更容易修改。
只有在核心领域为了效率才可以放弃可读性,否则可读性是第一位。
二、用名字表达代码含义一些比较有表达力的单词:
单词
可替代单词
send
deliver、dispatch、announce、distribute、route
find
search、extract、locate、recover
start
launch、create、begin、open
make
create、set up、build、generate、compose、add、new
使用 i、j、k 作为循环迭代器的名字过于简单,user_i、member_i 这种名字会更有表达力。因为循环层次越多,代码越难理解,有表达力的迭代器名字可读性会更高。
为名字添加形容词等信息能让名字更具有表达力,但是名字也会变长。名字长短的准则是:作用域越大,名字越长。因 ...
登录(一) -- JWT
案例-登录认证登录认证。用户必须登录之后,才可以访问后台系统中的功能。
1. 登录功能1.1 需求
在登录界面中,我们可以输入用户的用户名以及密码,然后点击 “登录” 按钮就要请求服务器,服务端判断用户输入的用户名或者密码是否正确。如果正确,则返回成功结果,前端跳转至系统首页面。
1.2 接口文档我们参照接口文档来开发登录功能
基本信息
12345请求路径:/login请求方式:POST接口描述:该接口用于员工登录Tlias智能学习辅助系统,登录完毕后,系统下发JWT令牌。
请求参数
参数格式:application/json
参数说明:
| 名称 | 类型 | 是否必须 | 备注 || ———— | ——— | ———— | ——— || username | string | 必须 | 用户名 || password | string | 必须 | 密码 |
请求数据样例:
1234{ "username": "jinyong", "password": " ...
登录(二) -- 过滤器,拦截器
1. 登录校验-Filter1.1 分析使用过滤器Filter来完成 登录校验功能。
登录校验的基本流程:
要进入到后台管理系统,我们必须先完成登录操作,此时就需要访问登录接口login。
登录成功之后,在服务端生成一个JWT令牌,并返回给前端存储。
后续的每一次请求都会将JWT令牌携带到服务端,要想去访问对应的业务功能,必须先要校验令牌的有效性。
使用登录校验的过滤器,在过滤器当中来校验令牌的有效性。如果令牌存在,并且它是有效的,才会放行去访问对应的web资源,执行相应的业务操作。
所有的请求,拦截到了之后,都需要校验令牌吗?
答案:登录请求例外
拦截到请求后,什么情况下才可以放行,执行业务操作?
答案:有令牌,且令牌校验通过(合法);否则都返回未登录错误结果
1.2 具体流程完成登录校验,利用Filter过滤器实现,而Filter过滤器的流程步骤:
基于上面的业务流程,我们分析出具体的操作步骤:
获取请求url
判断请求url中是否包含login,如果包含,说明是登录操作,放行
获取请求头中的令牌(token)
判断令牌是否存在,如果不存在,返回错误结果 ...
私服配置
私服配置说明访问私服:http://192.168.150.101:8081访问密码:admin/admin
启动本地私服
下载解压: apache-maven-nexus.zip
进入目录: apache-maven-nexus\nexus-3.39.0-01\bin
启动服务:双击 start.bat
访问服务:localhost:8081 (将上述配置私服信息的 192.168.150.101 改为 localhost )
使用私服,需要在(本地的Maven)的settings.xml配置文件中,做如下配置:
需要在 servers 标签中,配置访问私服的个人凭证(访问的用户名和密码)
1234567891011<server> <id>maven-releases</id> <username>admin</username> <password>admin</password></server> <server> &l ...
JQuery基础
为什么要学jquery使用javascript开发过程中,有许多的缺点:
查找元素的方法单一,麻烦。
遍历数组很麻烦,通常要嵌套一大堆的for循环。
有兼容性问题。
想要实现简单的动画效果,也很麻烦
代码冗余。
体验jquery的使用123456789101112131415/** 1. 查找元素的方法多种多样,非常灵活* 2. 拥有隐式迭代特性,因此不再需要手写for循环了。* 3. 完全没有兼容性问题。* 4. 实现动画非常简单,而且功能更加的强大。* 5. 代码简单、粗暴。* */$(document).ready(function () { $("#btn1").click(function () { $("div").show(200); }); $("#btn2").click(function () { $("div").text("我是内容"); });}) ...
学成在线--前端设计
学成在线 — 前端01-项目目录网站根目录是指存放网站的第一层文件夹,内部包含当前网站的所有素材,包含 HTML、CSS、图片、JavaScript等等。
首页引入CSS文件
123<!-- 顺序要求:先清除再设置 --><link rel="stylesheet" href="./css/base.css"><link rel="stylesheet" href="./css/index.css">
02-版心居中
12345678.wrapper { margin: 0 auto; width: 1200px;}body { background-color: #f3f5f7;}
03-布局思路
布局思路:先整体再局部,从外到内,从上到下,从左到右
CSS 实现思路
画盒子,调整盒子范围 → 宽高背景色
调整盒子位置 → flex 布局、内外边距
控制图片、文字内容样式
04-header区域-整体布局
HT ...
Kafka消息队列
Kafka(一)Kafka简介消息队列
消息队列——用于存放消息的组件
程序员可以将消息放入到队列中,也可以从消息队列中获取消息
很多时候消息队列不是一个永久性的存储,是作为临时存储存在的(设定一个期限:设置消息在MQ中保存10天)
消息队列中间件:消息队列的组件,例如:Kafka、Active MQ、RabbitMQ、RocketMQ、ZeroMQ
Kafka的应用场景
异步处理
可以将一些比较耗时的操作放在其他系统中,通过消息队列将需要进行处理的消息进行存储,其他系统可以消费消息队列中的数据
比较常见的:发送短信验证码、发送邮件
系统解耦
原先一个微服务是通过接口(HTTP)调用另一个微服务,这时候耦合很严重,只要接口发生变化就会导致系统不可用
使用消息队列可以将系统进行解耦合,现在第一个微服务可以将消息放入到消息队列中,另一个微服务可以从消息队列中把消息取出来进行处理。进行系统解耦
流量削峰
因为消息队列是低延迟、高可靠、高吞吐的,可以应对大量并发
日志处理
可以使用消息队列作为临时存储,或者一种通信管道
消息队列的两种模型
生产者、消费者 ...
Kafka 环境搭建
搭建Kafka集群
将Kafka的安装包上传到虚拟机,并解压
123cd /export/software/tar -xvzf kafka_2.12-2.4.1.tgz -C ../server/cd /export/server/kafka_2.12-2.4.1/
修改 server.properties
12345678cd /export/server/kafka_2.12-2.4.1/configvim server.properties# 指定broker的idbroker.id=0# 指定Kafka数据的位置log.dirs=/export/server/kafka_2.12-2.4.1/data# 配置zk的三个节点zookeeper.connect=node1.itcast.cn:2181,node2.itcast.cn:2181,node3.itcast.cn:2181
将安装好的kafka复制到另外两台服务器
1234567891011121314cd /export/serverscp -r kafka_2.12-2.4.1/ node2.itcast. ...
Zookeeper 分布式锁
1.1 下载安装1、环境准备
ZooKeeper服务器是用Java创建的,它运行在JVM之上。需要安装JDK 7或更高版本。
2、上传
将下载的ZooKeeper放到/opt/ZooKeeper目录下
123456789#上传zookeeper alt+pput f:/setup/apache-zookeeper-3.5.6-bin.tar.gz#打开 opt目录cd /opt#创建zooKeeper目录mkdir zooKeeper#将zookeeper安装包移动到 /opt/zooKeepermv apache-zookeeper-3.5.6-bin.tar.gz /opt/zookeeper/
3、解压
将tar包解压到/opt/zookeeper目录下
1tar -zxvf apache-ZooKeeper-3.5.6-bin.tar.gz
1.2 配置启动1、配置zoo.cfg
进入到conf目录拷贝一个zoo_sample.cfg并完成配置
1234#进入到conf目录cd /opt/zooKeeper/apache-zooKeeper-3.5.6-bin/conf/# ...
Shell编程
走进 Shell 编程的大门为什么要学 Shell?Shell 编程在我们的日常开发工作中非常实用,目前 Linux 系统下最流行的运维自动化语言就是 Shell 和 Python 了。
学一个东西,我们大部分情况都是往实用性方向着想。从工作角度来讲,学习 Shell 是为了提高我们自己工作效率,提高产出,让我们在更少的时间完成更多的事情。
很多人会说 Shell 编程属于运维方面的知识了,应该是运维人员来做,我们做后端开发的没必要学。我觉得这种说法大错特错,相比于专门做 Linux 运维的人员来说,我们对 Shell 编程掌握程度的要求要比他们低,但是 Shell 编程也是我们必须要掌握的!
目前 Linux 系统下最流行的运维自动化语言就是 Shell 和 Python 了。
两者之间,Shell 几乎是 IT 企业必须使用的运维自动化编程语言,特别是在运维工作中的服务监控、业务快速部署、服务启动停止、数据备份及处理、日志分析等环节里,shell 是不可缺的。Python 更适合处理复杂的业务逻辑,以及开发复杂的运维软件工具,实现通过 web 访问等。Shell 是一个命令解释器, ...









