java发送邮箱
引入依赖12345678910<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-mail</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency></dependencies>
配置文件123456789101112131415161718spring: mail: host: smt ...
计算机组成原理期末复习
计算机系统知识要点:√ 冯·诺依曼计算机核心思想与工作方式
冯诺依曼核心思想是基于硬件结构的计算机科学。他提出了冯诺依曼架构,这是一种通用的计算机硬件结构,以便可以执行任意的算法。他的工作方式是通过设计通用的硬件结构来实现计算,这样程序员就可以通过编写软件来使用该硬件结构。
可概括为 ‘存储程序’ 和 ‘程序控制’
冯诺依曼的核心思想对当今的计算机科学产生了深远的影响,并且被认为是计算机科学的基石之一。
基本思想:
1. 采用“存储程序”工作方式
2. 计算机由运算器、控制器、存储器、输入、输出设备组成
3. 存储器中存放指令和数据
4. 内部以二进制表示指令和数据
工作方式:
按地址访问指令并自动按序执行程序
√二进制的意义
二进制是一种表示数字的方式,其中数字是由0和1组成的。它是计算机科学的基础,因为计算机内部的运算和存储都是以二进制的形式进行的。
在二进制系统中,数字的每一位都代表一个特定的权值。例如,在一个8位二进制系统中,最左边的位代表2的7次方,第二位代表2的6次方,以此类推。每一位 ...
循环引用
问题的产生
代码出现两个bean在创建时都相互引用了12345678910111213141516171819202122232425@Componentpublic class A { private B b; @Autowired public A(B b){ this.b = b; }}@Componentpublic class B { private A a; @Autowired public B(A a){ this.a = a; }}public static void main(String[] args) { ConfigurableApplicationContext run = SpringApplication.run(Springboot.class, args); Object a = run.getBean("a"); }
...
读集合源码
Arraylist底层数据结构
1transient Object[] elementData; //元素数据底层数组实现
默认构造函数
12345public MyArrayList(){ //数组默认大小 elementData = new Object[10]; size = 0; }
简单实现增删改查方法
12345678910111213141516171819202122232425262728293031323334353637// add方法public void add(T t){ elementData[size++] = t;}// get方法public Object get(int index){ if(index > size){ throw new RuntimeException("数组没有"+index+"这个元素"); } return ele ...
牛客小白月赛65
题 A 题A
题目描述错解题 解牛牛带着 n 元钱去超市买东西,超市一共只有两款商品,价格为 a 元的篮球和价格为 b 元的足球,牛牛想把手里的钱尽可能花光,请问牛牛最少能剩多少钱?输入描述:输入一行,三个正整数 n,a,b(1 <= n,a,b <= 1000)n,a,b(1≤n,a,b≤1000),n 表示牛牛现有的钱数,a 表示一个篮球的单价,b 表示一个足球的单价。输出描述:输出一行一个整数,代表牛牛最少能剩下的钱数。案例1234输入 7 5 3输出 1考虑太多反而错了12345678910111213141516171819202122232425262728293031323334import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int money = ...
玩玩爬虫
urllib基本使用方法pip install urllib
测试1234567891011121314151617import urllib.request# 定义访问的urlurl = 'http://www.baidu.com'# 模拟浏览器发请求response = urllib.request.urlopen(url)# 获取状态码判断请求是否成功# print(response.getcode()) #200# print(response) # <http.client.HTTPResponse object at 0x0000017DC4629A30># 获取相应源码 read方法返回二进制 需要解码# content = response.read().decode('utf-8')# 按行读取content = response.readlines()print(content) # 输出网站源码
但是遇到https的网站还是会报错,加上UA就能正常读取了123456789101112131415161 ...
redis的基本使用方法
redis简介什么是RedisRedis是用C语言开发的一个开源的高性能键值对(key-value)数据库,官方提供测试数据,50个并发执行100000个请求,读的速度是110000次/s,写的速度是81000次/s ,且Redis通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止Redis支持的键值数据类型如下123451) 字符串类型 string2) 哈希类型 hash3) 列表类型 list4) 集合类型 set5) 有序集合类型 sortedset
redis的应用场景
缓存(数据查询、短连接、新闻内容、商品内容等等)
聊天室的在线好友列表
任务队列。(秒杀、抢购、12306等等)
应用排行榜
网站访问统计
数据过期处理(可以精确到毫秒
分布式集群架构中的session分离基本配置1234port 6379 ;指定的端口号requirepass foobared ;设置密码bind 127.0.0.1 ;只允许本机连接详细见官网 redis.net.cn
数据操作String字符串123456789101112131415161718192021222324# ...
暴力递归
暴力递归暴力递归就是尝试
把问题转化为规模缩小了的同类问题的子问题
有明确的不需要继续进行递归的条件(base case)
有当得到了子问题的结果之后的决策过程
不记录每一个子问题的解汉诺塔问题
打印n层汉诺塔从最左边移动到最右边的全部过程(大的塔牌不能在小塔牌上)
题解
123456789101112131415161718192021private static void hanoi(int n){ if(n > 0){ func(n,"左","右","中"); }}//1~i 圆盘目标是from->to other是另一个private static void func(int i, String start, String end, String other){ //base if(i == 1){ System.out.println("move 1 from " + ...
树形DP模板
三个经典例题
通过三个例题了解解题模板,让你用模板越用越爽判断一棵树是否是满二叉树
判断一棵树是否是平衡二叉树
判断一棵树是否是搜索二叉树
模板定义一个返回信息
12345678910private static class info{ // 需要的信息可以有多个 private int height; // 树的高度 private int nodes; // 树的节点个数 info(int n, int h){ this.height = h; this.nodes = n; } }
递归套路(认真看)
1234567891011121314151617private static info process(TreeNode head ){ // 判断空树情况 if(head == null){ return new info(0,0); ...
git基本用法
git 的三种状态
已修改表示修改了文件,但还没保存到数据库中。
已暂存表示对一个已修改文件的当前版本做了标记,使之包含在下次提交的快照中。
已提交表示数据已经安全地保存在本地数据库中。
已修改已暂存已提交修改文件但未添加和提交操作
12345678910echo 123 >> a.txt // 写入数据// 查看给i他状态$ git statusOn branch masterChanges not staged for commit: (use "git add <file>..." to update what will be committed) (use "git restore <file>..." to discard changes in working directory) modified: a.txt //已修改no changes added to commit (use "git add" and/or "git commit -a ...