Web开发相关
Web访问流程
1、输入地址
2、浏览器查找域名的 IP 地址
3、浏览器向 web 服务器发送一个 HTTP 请求
4、服务器的永久重定向响应
5、浏览器跟踪重定向地址
6、服务器处理请求
7、服务器返回一个 HTTP 响应
8、浏览器显示 HTML
9、浏览器发送请求获取嵌入在 HTML 中的资源(如图片、音频、视频、CSS、JS等等)
TCP/IP协议
四个概念层
应用层:为用户提供所需要的各种服务;应用层协议包括HTTP(万维网服务)、FTP(文件传输)、SMTP(电子邮件)、SSH(安全远程登陆)、DNS(域名解析)以及许多其他协议。
传输层:为应用层实体提供端到端的通信功能,保证了数据包的传输顺序和数据的的完整性;TCP传输控制协议和UDP用户数据报协议。
TCP协议是一个面向连接的、可靠的传输协议,它提供一种可靠的字节流,能保证数据完整、无损并且按顺序到达。TCP尽量连续不断地测试网络的负载并且控制发送数据的速度以避免网络过载。另外,TCP试图将数据按照规定的顺序发送。
UDP协议是一个面向无连接的数据报协议,是一个**“尽力传递”和“不可靠”**协议,不会对 ...
点评项目
点评项目是前后端分离项目,前端部署在nginx服务器上,后端部署在tomcat上。
用户登录
权限认证方式
HTTP是无状态的;
Session(会话)认证:服务器为了保存用户状态而创建的一个对象。key-value形式存储;
Token(令牌):由服务端生成的一串字符串,作为客户端进行请求的一个凭证;当用户第一次登陆后,服务器会生成一个Token并返回给客户端,之后客户端再进行需要权限的请求时只需要带上这个Token即可,无需再携带用户名和密码进行认证;通过某种算法策略生成唯一的Token;
集群**session共享问题**:集群模式下多台tomcat服务器不共享session存储空间,当请求切换到不同tomcat服务时导致数据丢失的问题。
因为Redis满足数据共享,内存存储,k-v键值对结构,因此使用Redis替代session可以解决session集群共享问题;
登陆验证流程
前端提交手机号和验证码;
校验手机号,如果不符合,返回错误信息;
从redis获取验证码并校验,如果不一致,则返回错误信息;
如果一致,根据手机号查询用户;
判断用户是否存 ...
Ubuntu配置ssh
安装ssh服务器
1sudo apt install openssh-server
安装ssh客户端
1sudo apt install openssh-client
配置ssh客户端,去掉PasswordAuthentication yes前面的#号,保存退出;配置ssh服务器,把PermitRootLogin prohibit-password改成PermitRootLogin yes,保存退出。
1sudo vi /etc/ssh/ssh_config
重启ssh服务
1sudo /etc/init.d/ssh restart
启动ssh服务
1sudo /etc/init.d/ssh start
Ubuntu上安装anaconda
官网下载 https://www.anaconda.com/安装包
运行.sh 文件
12bash Anaconda3-2021.11-Linux-x86_64.sh/home/lm/anaconda3 # 安装路径
配置环境
123sudo vim ~/.bashrcexport PATH=/home/lm/anaconda3/bin:$PATHsource ~/anaconda3/bin/activate #修改终端的默认 python 为 anaconda
保存环境配置
1source ~/.bashrc
查看版本
1conda --version
虚拟环境
1conda create -n env_name python=3.8
激活环境
1conda activate env_name
查看环境
12345conda info --envs或conda info -e或conda env list
复制环境
1conda create --name new_env_name --clone copied_env_name
删除环境
1c ...
手写IOC容器
实现:Java 反射 + 注解
创建两个注解:
@Bean :创建对象
1234@Target(ElementType.TYPE) // 作用在类对象上@Retention(RetentionPolicy.RUNTIME) // 运行时生效public @interface Bean {}
@Di:属性注入
1234@Target(ElementType.FIELD) // 使用在属性上@Retention(RetentionPolicy.RUNTIME) // 运行时生效public @interface Di {}
创建Bean容器接口 ApplicationContext,定义方法,返回对象;
1234public interface ApplicationContext { // 返回Bean对象 Object getBean(Class clazz) throws NoSuchMethodException;}
实现Bean容器接口
返回对象
创建有参构造器,传递包路径,设置包扫 ...
Lucy in the Sky with Diamonds
1967年,甲壳虫乐队发行了一首单曲——《露西在缀满钻石的天空中》(Lucy in the Sky with Diamonds) ,被称作是他们最伟大的作品之一。这首歌曲最初的灵感来自于约翰·列侬 (John Lennon) 的儿子小朱利安 (Julian) 所创作的一幅肖像画,画上描绘的是一位女孩在缀满钻石的天空中。
1974年,在东非大裂谷附近的阿法尔地区科考队发现了一具完整度约40%的古人类化石,考古队员们通过初步观察,发现化石的骨骼属于女性。而在她刚刚被发现的当天晚上,大家为了庆祝这个伟大的发现,在营地上跳起舞来。这时录音机里正循环播放着披头士乐队的歌曲《露西在缀满钻石的天空中》 (Lucy in the Sky with Diamonds),故将其命名为“露西(Lucy)”。
2004年,哈佛史密森天体物理中心 (Harvard-Smithsonian Centre) 的天文学家们作出了一个惊人的发现,在我们已知的宇宙中存在着一枚巨大的“天然钻石”,这似乎与甲壳虫乐队那首预言般的标志性歌曲有着某种联系。这颗钻石星球是一颗白矮星,位于半人马座,编号为V886或BPM 37093 ...
Canon的故事
卡农Canon——复调音乐的一种,原意为“规律”。一个声部的曲调自始至终追逐着另一声部,直到最后的一个小结,最后的一个和弦,它们会融合在一起,永不分离。
卡农的作者帕卡贝尔(Pachelbel),德国人。在他十几岁的时候,战乱使他沦为孤儿。流浪到英国的他被一个钢琴师收养,此后他天天听琴师弹琴,耳濡目染也学会了钢琴。在他旁边的镇上有一个美丽的女孩叫Barbara,自从她在教堂听了Pachelbel弹的曲子,就爱上了他。害羞的Barbara不敢向Pachelbel表白,于是就找了个理由去Pachelbel那学钢琴。她对Pachelbel说自己热爱音乐,希望可以拜师学艺。之后的半年里,Barbara 为了证明自己的决心,努力练习钢琴,最终在一次比赛中获奖。而当她拿着奖杯想去和Pachelbel告白时,却得知Pachelbel被征去打仗。与此同时,同村一位心仪Barbara许久的男子为了让她对Pachelbel死心,令人从前线运来一具碎尸体并称这是Pachelbel。Pachelbel没有任何亲戚,所以Barbara无法求证,认为他已经战死。悲痛欲绝的她,最终在Pachelbel教她弹琴的教 ...
Spring学习笔记
Bean
spring中的 Bean 就是 java 对象
如何使用反射创建对象?
加载bean.xml配置文件
对xml文件进行解析
获取xml文件bean标签属性值:id值属性值和class属性值
使用反射根据类全路径创建对象
将创建的对象放到一个Map中(key:唯一标识,value:类的定义)
123456789101112131415161718192021222324public class TestUser { @Test public void testUserObject1(){ // 加载spring配置文件 ApplicationContext context = new ClassPathXmlApplicationContext("bean.xml"); // 获取创建的对象 User user = (User)context.getBean("user"); System.out.println(user) ...
Java学习笔记
Java
前言
Java特点:
面向对象(封装,继承,多态)
平台无关性(Java 虚拟机实现平台无关性)
可靠性(具备异常处理和自动内存管理机制)
支持多线程
Java工作方式:
源代码:demo.java文件
编译器:运行源代码检查错误,将demo.java编译为demo.class文件,由字节码组成
输出:输出demo.class
java虚拟机:运行demo.class文件,将字节码转换为平台能理解的形式
Java程序结构:
源文件(source file)
2. 类(class file)
3. 方法(method): 函数或过程
4. 语句(statement)
JDK(Java Development Kit):包含了 JRE,同时还包括了 javac、javadoc、jdb、jconsole、javap 等工具,可以用于 Java 应用程序的开发和调试。
JRE(Java Runtime Environment):Java 运行时环境,仅包含 Java 应用程序的运行时环境和必要的类库。主要包括 Java 虚拟机(JVM)、Java 基础 ...
Redis学习笔记
简介
Redis(Remote Dictionary Server)是一个基于内存的key-value的结构数据库,它可以用作数据库,缓存和消息中间件。
单线程,每个命令具备原子性
基于内存存储,读写性能高
适合存储热点数据(热点资讯,热点商品)
Redis是一种典型的NoSql数据库(非关系型数据库);
Redis所有的数据结构都以唯一的key字符串作为名称,然后通过唯一的key获取相应的value;不同数据结构之间的差异就在于value的数据结构的不同。
常用数据类型
字符串(string):普通字符串,常用;
哈希(hash):适合存储对象;
列表(list):按照插入元素顺序排序,可以有重复元素;
无序集合(set):无序集合,没有重复元素;
有序集合(sorted set):有序集合,没有重复元素;
常用命令
String操作命令
Redis中的字符串是动态的可以修改的字符串,类似于ArrayList;
1234SET key valueGET keySETEX key seconds value # 设置指定key的值,并将ke ...