JS代理和模块
代理可以理解为进行某个操作前先拦截统一操作后再执行。
JS异步编程
1.同步和异步同步即按顺序执行。 异步即独立执行,异步就是从主线程发射一个子线程来完成任务。 就像这样: 2.回调函数js从设计之初就是只支持单线程的语言,如何做到异步编程呢?js使用回调函数来解决这个问题。 回调函数就是一个函数,它是在我们启动一个异步任务的时候就告诉它:等你完成了这个任务之后要干什么。这样一来主线程几乎不用关心异步任务的状态了,他自己会善始善终。 常用的异步操作实现方式: setTimeout定时任务12345678910111213141516171819<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>dmw</title> </head><body><p>回调函数等待 3 秒后执行。</p><p id="demo"></p><script>const print = () =>...
JavaScript_ES6
被js的各种语法困惑了很久,至今未能流程写出一个完整的js程序,痛心疾首,决定认真学一遍ES6语法。 本次学习了6部分内容,分别是: 1.变量和常量1234567891011121314//1.变量和常量let count=0console.log(count)const URL = 'https://2025521.xyz'console.log(URL)// URL = 'ddd'//独立作用域{ let num1=1; console.log(num1);}// console.log(num1) 2.模板字符串12345//2.模板字符串const str1 = 'abc'const str2 = 'def'const str3 = `${str1 + str2}`console.log(str3)...
Spring
数据库框架整合学习了Spring之后,我们已经了解如何将一个类作为Bean交由IoC容器管理,这样,我们就可以通过更方便的方式来使用Mybatis框架,我们可以直接把SqlSessionFactory、Mapper交给Spring进行管理,并且可以通过注入的方式快速地使用它们。 因此,我们要学习一下如何将Mybatis与Spring进行整合,那么首先,我们需要在之前知识的基础上继续深化学习。 了解数据源在之前,我们如果需要创建一个JDBC的连接,那么必须使用DriverManager.getConnection()来创建连接,连接建立后,我们才可以进行数据库操作。而学习了Mybatis之后,我们就不用再去使用DriverManager为我们提供连接对象,而是直接使用Mybatis为我们提供的SqlSessionFactory工具类来获取对应的SqlSession通过会话对象去操作数据库。 那么,它到底是如何封装JDBC的呢?我们可以试着来猜想一下,会不会是Mybatis每次都是帮助我们调用DriverManager来实现的数据库连接创建?我们可以看看Mybatis的源码: ...
Spring
Spring简介1.1历史2002年,首次推出了spring框架的雏形:interface21框架 2004年3月24日,悉尼大学音乐学博士Rod Johnson首次推出Spring框架1.0,解决企业应用开发的复杂性。 设计理念:使现有的技术更加容易使用,本身是一套大杂烩,整合了现有的技术框架。 SSH:Struct2(视图框架) + Spring(融合剂) + Hibernate(全自动持久层框架) SSM : SpringMvc(视图框架) + Spring(融合剂) + Mybatis(半自动持久层框架,可定制性更高) 1.2优点 Spring是一个开源的免费的框架(容器) Spring是一个轻量级的、非入侵式的框架 控制反转(IOC),面向方面编程(AOP) 支持事务的处理,对框架整合的支持 总结一句话:Spring就是一个轻量级的控制反转(IoC)和面向方面编程(AOP)的框架! 1.3组成 1.4拓展 Spring Boot 一个快速开发的脚手架 基于Spring Boot可以快速的开发单个微服务 约定大于配置 Spring...
刷题日记4.07-4.10
1.P1473 [USACO2.3] 零的数列 Zero Sum题目描述请考虑一个由 1 到 N 的数字组成的递增数列:1,2,3,…,N。 现在请在数列中插入 + 表示加,或者 - 表示减, (空格) 表示空白(例如 1-2 3 就等于 1-23),来将每一对数字组合在一起(请不要在第一个数字前插入符号)。 计算该表达式的结果并判断其值是否为 0。 请你写一个程序找出所有产生和为零的长度为N的数列。 输入格式单独的一行表示整数 N(3≤N≤9)。 输出格式按照 ASCII码的顺序,输出所有在每对数字间插入 +,-, (空格) 后能得到结果为零的数列。 输入输出样例 #1输入 #117 输出 #11234561+2-3+4-5-6+71+2-3-4+5+6-71-2 3+4+5+6+71-2 3-4 5+6 71-2+3+4-5+6-71-2-3-4-5+6+7 说明/提示翻译来自NOCOW USACO...
刷题日记4.04
继续stl 1.CF808D Array Division题目描述Vasya has an array $ a $ consisting of positive integer numbers. Vasya wants to divide this array into two non-empty consecutive parts (the prefix and the suffix) so that the sum of all elements in the first part equals to the sum of elements in the second part. It is not always possible, so Vasya will move some element before dividing the array (Vasya will erase some element and insert it into an arbitrary position). Inserting an element in the same position...
刷题日记4.03
今天继续stl的简单应用 1.CF4C Registration system题目描述题目背景一个名为 “Berlanddesk” 的电子邮件系统即将在 Berland 上线运营。该电子邮件系统的管理员希望整个系统的建设可以尽早完成,因此他们找到了资深程序员您,希望您能够为他们开发一个用户注册系统的原型产品。 该系统的运行遵循以下原则: 新用户注册时,他将向系统发送一则内容为其用户名的请求,如果该用户名尚未存在于系统数据库内,则将该用户名插入数据库,同时用户得到回应信息 OK 表示其已经成功注册。如果用户请求的用户名已经存在于数据库内,那么系统将产生一个新的用户名并将其加入数据库。新用户名由用户请求的用户名与正整数 $i$ 构成,$i$ 为使 “用户名i” 尚未存在于数据库内的最小的 $i$。 输入格式第一行一个整数 $n(1 \le n \le 10^5)$。接下来 $n$ 行,每行表示用户向系统发出的一则请求。每行内容均非空且均为由至多 $32$ 个小写拉丁字母组成的字符串。 输出格式$n$ 行,每行表示系统对一则请求做出的回应。如果该用户名尚未存在于系统数据库内,则输出...
刷题日记4.02
今天刷洛谷题基础stl题。 1.CF112A Petya and Strings题目描述输入两个字符串,大小写无关紧要,比较它们的大小。 输入格式两个字符串(保证长度相等) 输出格式如果第一个字符串小于第二个字符串,则输出“-1”。如果第二个字符串小于第一个字符串,则输出“1”。如果字符串相同,则打印“0”。请注意,比较字符串时不考虑字母的大小写。 输入输出样例 #1输入 #112aaaaaaaA 输出 #110 输入输出样例 #2输入 #212absAbz 输出 #21-1 输入输出样例 #3输入 #312abcdefgAbCdEfF 输出 #311 今日题解:题目大意是大小写无关的字符串字典序比较,需要我们先统一一下大小写。利用ASCII码进行大小写转换,A->65 a->97 1234567891011121314151617181920212223242526272829303132#include<bits/stdc++.h>using namespace std;using ll = long long;int main()...
刷题日记3.23
动态规划找状态转移方程。 今日题解: 12345678910111213141516171819202122232425#include<bits/stdc++.h>using namespace std;using ll = long long;const int N = 105;ll dp[N * N];int main() { ios::sync_with_stdio(0), cin.tie(0), cout.tie(0); int m, n; cin >> m >> n; for(int i=1;i<=n;++i) {//物品数量 int s, w, v;//对于每种物品而言 cin >> s >> w >> v; while(s--) { for(int j = m;j>=v;--j) { dp[j]=max(dp[j],dp[j-v]+w); } } } cout <<...