GoLang
标准库 : https://go-zh.org/pkg/
函数package mainimport "fmt"函数// 函数声明func add(x int, y int) int { return x + y}// 变量声明, var用于声明一个变量列表var c, python, java boolfunc main(){ fmt.Println(add(42, 13)) fmt.Println(add2(42, 13)) a, b := swap("Hello", "World") fmt.Println(a, b) // 变量声明 var i int // 变量的初始化, 省略了类型声明,变量自动从初始值中获取类型 var c, python, java = true, false, "no!" // 短变量声明,可以在类型明确的地方代替var声明 k := 3}// 省略声明相同的类型func add2(x, y int) int { retur ...
Java(一)
数据存储Java程序运行期间,有5个地方可以存储数据
寄存器:速度最快,Java没有直接控制器,根据需求进行分配
栈内存:存在于常规内存RAM中,仅次于寄存器,Java必须知道存在于栈内存中数据的生命周期,通常用于存储一些数据的引用(对象引用)
堆内存:通用的内存池,存在于RAM中,所有的Java对象都存在其中。Java不知道数据必须在堆内存中停留多长的时间,用new实例化对象的时候,会自动在堆中分配(分配与清理堆内存要比栈花费更多的时间)
常量存储:存在于程序代码中,如果需要严格保护,可以存在于ROM中
非RAM存储:数据完全存在于程序之外,在程序未运行或者脱离程序控制后依然存在。例子:① 序列化对象。② 持久化对象 。这种存储方式将对象存放于另一个介质中,并在需要时恢复成常规的,基于RAM的对象。Java 为轻量级持久化提供了支持。而诸如 JDBC 和 Hibernate 这些类库为使用数据库存储和检索对象信息提供了更复杂的支持。
基本类型存储基本类型不通过new来创建,而是使用一个自动的变量值,这个变量自动存储值,并且置于栈内存中。
基本类型
大小
最小值
最大值
包装 ...
MiME Type
Two Important Default MiME types
text/plain : the default value for textual files. A textual file should be human-readable and must not contain binary data.
application/octet-stream : the default value for all other cases. An unknown file type should use this type. Browsers are particularly careful when manipulating these files to protect users from software vulnerabilities and possible dangerous behavior.
Media Types (iana.org) IANA official registry of MIME Media Type
Some Importa ...
fileUploadAndDownload
Spring完成文件的存储和下载文件的存储
使用数据库存储文件本体
使用数据库存储文件的位置,文件存储在文件系统上
使用数据库直接存储文件,使用LONGBLOB类型保存文件的Byte数据
文件的接收前端使用form上传数据
ContentType : multipart/form-data 使用 @RequestPart 注解接收文件
@PostMapping("/upload")public ResponseEntity<Object> uploadFile(@RequestPart MultipartFile file) throws IOException { String fileName = file.getOriginalFilename(); String suffix = fileName.substring(fileName.lastIndexOf(".") + 1); fileName = fileName.substring(0, fileName.lastIndexOf( ...
Simply MVC FrameWork
使用反射简单模拟MVC对请求的处理过程
@WebServlet("/")public class DispatcherServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8"); resp.setCharacterEncoding("utf-8"); resp.setContentType("application/json;charset=utf-8"); String path = req.getServletPath(); System.out.println("path:"+p ...
Data Type Request Process
表单数据
application/x-www-form-urlencoded : enctype未指定属性时的默认值
multipart/form-data:当表单包含 type=file 的 input元素时使用此值
text/plain:出现于 HTML5,用于调试。这个值可被 button、input type=”submit” 或 input type = “image”元素上的 formenctype 属性覆盖
纯文本内容传输
自定义数据传输格式
跨域请求时的预检请求(CORS preflight)
处理方式application/x-www-form-urlencoded :
在 JavaEE 中,可以使用 HttpServletRequest.getParameter() 方法来获取 application/x-www-form-urlencoded 类型的数据
Spring 中,可以使用 @RequestParam 注解来接收 application/x-www-form-urlencoded 类型的数据。
multip ...
JSON_RPC
JSON-RPC是一个无状态且轻量级的远程过程调用(RPC)协议。
它允许运行在基于socket,http等诸多不同消息传输环境的同一进程中。其使用JSON(RFC 4627)作为数据格式。
JSON可以表示四个基本类型(String、Numbers、Booleans和Null)和两个结构化类型(Objects和Arrays)。
任何时候文档涉及JSON数据类型,第一个字母都必须大写:Object,Array,String,Number,Boolean,Null。包括True和False也要大写。
在客户端与任何被匹配到的服务端之间交换的所有成员名字应是区分大小写的。 函数、方法、过程都可以认为是可以互换的
请求对象发送一个请求对象至服务端代表一个rpc调用, 一个请求对象包含下列成员:
jsonrpc
指定JSON-RPC协议版本的字符串,必须准确写为“2.0”
method
包含所要调用方法名称的字符串,以rpc开头的方法名,用英文句号(U+002E or ASCII 46)连接的为预留给rpc内部的方法名及扩展名,且不能在其他地方使用。
params
调用方法所需要的 ...
CORS(跨域资源共享)
CORS:一种基于HTTP头的机制,该机制允许服务标示除了它自己以外的其他源(域、协议、端口),使得浏览器允许这些源访问加载自己的资源
对那些可能对服务器数据产生副作用的 HTTP 请求方法(特别是 GET 以外的 HTTP 请求,或者搭配某些 MIME 类型的 POST 请求),浏览器必须首先使用 OPTIONS 方法发起一个预检请求(preflight request),从而获知服务端是否允许该跨源请求。服务器确认允许之后,才发起实际的 HTTP 请求。在预检请求的返回中,服务器端也可以通知客户端,是否需要携带身份凭证(例如 Cookie 和 HTTP 认证相关数据)。
若请求满足所有下述条件,则该请求可视为简单请求:
使用下列方法之一:
GET
HEAD
POST
除了被用户代理自动设置的标头字段(例如
Connection、User-Agent或其他在 Fetch 规范中定义为禁用标头名称的标头),允许人为设置的字段为 Fetch 规范定义的对 CORS 安全的标头字段集合
。该集合为:
Accept
Accept-Language
Content-Language
...
Git command
在本地创建仓库,并覆盖旧的仓库rm -rf .gitgit initgit add .git commit -m .git branch -M maingit remote add origin git@github.com:MisakeMikoto/blog.git(地址)git push -u origin main -f
Git 常用命令git initgit clone git addgit config # 配置信息git status # 查看文件状态git diff # 查看更新的详细信息命令git commit # 提交命令git reset HEAD # 取消缓存命令git rm # 删除git mv # 移动或者重命名
git configgit config --global user.name '你的用户名'git config --global user.email '你的邮箱'
git statusgit add <文件名> # 暂存文件git checkout <文件名> # 放弃未暂存 ...
Java8新特性
Lambda表达式Lambda 表达式,也可称为闭包
Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)
使用 Lambda 表达式可以使代码变的更加简洁紧凑
语法
(parameters) -> expression或者(parameters) -> { statements }
重要特征
可选类型声明:不需要声明参数类型,编译器可以统一识别参数值
可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号
可选的大括号:如果主体包含了一个语句,就不需要使用大括号
可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定表达式返回了一个数值
// 1. 不需要参数,返回值为 5 () -> 5 // 2. 接收一个参数(数字类型),返回其2倍的值 x -> 2 * x // 3. 接受2个参数(数字),并返回他们的差值 (x, y) -> x – y // 4. 接收2个int型整数,返回他们的和 (int x, int y) -> x + y ...