- 博客(127)
- 收藏
- 关注
原创 cookie+session和token
(注意:base64编码可以被双向加解密,所以相当于明文发送)这些数据会被保存在浏览器中,每一次发送给服务器的时候,只需要验证签名是否相同即可。一开始是想要使用分布式存储,也就是一台机器放不下的数据,我就多拿几台机器来存储。所以session出现了,session-id是一段字符串,被保存在服务器和浏览器中,每一次通过比对和算法验证,来验证用户身份。一开始的cookie通过明文存储username和password,然后传递给服务器,但是这种方式可以将数据传递给服务器,也可以被黑客拦截。
2024-02-18 16:59:56
373
原创 小白快速上手maven【基础篇】
最常用的就是基于Java的Maven项目,需要选择quickstart模板。和基于Web的Maven项目,需要使用webapp模板。如果要修改maven获取资源的来源,即不从中央仓库中获取资源,可以使用阿里云的镜像仓库。但是为了解决网络资源和提高下载资源速度,所以可以建立一个私服仓库,提前将资源下载好。这样本地仓库在拉取资源的时候,可以直接从私服仓库中获取,而不是从中央仓库中获取。上面的项目是没有使用模板的maven项目,当然也会有带有模板的项目。根据功能的不同,仓库分成本地仓库,私服仓库,中央仓库。
2024-01-20 10:47:54
425
1
原创 智能指针的使用及其实现原理
- 目录 - 裸指针和智能指针 - 自己实现智能指针 - 不带引用计数的智能指针 - 带引用计数的智能指针 - 智能指针的循环引用(交叉引用)问题 - 多线程共享对象的线程安全问题 - 自定义删除器 - make_shared和make_unique - enable_shared_from_this类和shared_from_this()方法
2022-10-12 20:57:33
1231
原创 绑定器和函数对象的实现原理
- 目录 - C++ STL中的绑定器 - C++11中的bind和function - lamdba表达式使用及其原理
2022-10-11 08:23:58
264
原创 三个案例带你入门Thymeleaf。模板引擎,终于不用在后端拼接前端代码了。
三个案例带你入门Thymeleaf。模板引擎,终于不用在后端拼接前端代码了。
2022-08-23 08:42:01
1173
原创 技术层面上快速突破Servlet,带你快速上手HttpServlet,HttpServletRequest,HttpServletResponse
技术层面上快速突破Servlet,带你快速上手HttpServlet,HttpServletRequest,HttpServletResponse
2022-08-21 22:06:50
283
原创 【Java】使用FileInputStream和FileOutputStream进行文件操作(最后有小案例)
读完本文你能学会使用FileInputStream和FileOutputStream进行文件内容的输入输出。在本文的最后有小案例:在指定目录下递归查询该目录下的所有子文件,进行文件的复制等,这些操作都是使用FileInputStream和FileOutputStream类进行文件操作完成的使用File类来打开一个文件,并可以使用API打印出文件的信息// 获得文件的相关信息public static void main(String[] args) throws IOException {
2022-05-20 20:27:38
3290
原创 【Java】JDBC编程,从安装到背板子一条龙
学习SQL操作数据库不能满足业务要求,所以需要通过Java代码来操作数据库。数据库的种类有很多,并且每一个数据库提供的接口可能都是不同的,而在Java标准库中把操作各种数据库统一成了一组类来完成,这样就可以屏蔽各种数据库的差异,而可以直接通过Java代码来方便地操作各种数据库。如果想要使用JDBC的话,不仅需要JDBC软件也需要下载JDBC驱动包。JDBC驱动不是真正的驱动(运行在操作系统和硬件设备之间),而是只是使用JDBC所需要的一些文件而已。要下载JDBC驱动包,去maven中央仓库下载,注意J
2022-05-02 15:54:02
1408
原创 【前端框架】Vue中你必须要知道的基础语法~
学习一个框架,先去使用其中的知识,如果其中有不会的东西在去补充一些理论,然后再通过一些实践去巩固之前的实践和理论经验,这样最终才能真正掌握一门框架的知识。先使用Vue(其中可能会有很多不同的地方)再去补充其中的理论知识最后再用一个实战项目来巩固所学知识初识Vue我的第一个Vue案例不用安装Vue,直接使用Vue提供的cdn,https://unpkg.com/vue@next就可以直接编写vue代码了。注意:如果cdn不够快,这可以使用这个(我在网上找的) <script
2022-05-01 13:12:49
398
原创 【Linux】shell常用语法以及易错点
shell中(()),(()),(()),(),${}的区别$()和``(反引号)$()和``都是用来做命令替换的。``在所有的unix shell中都可以使用,所以移植性更高。${}的作用${}用于变量替换一般情况下$var和${var}是没有区别的,但是使用${}可以更加精确的表示变量的范围。例如:n="hello world"echo ${n}abc # 打印:hello worldabcecho $nabc # 打印:空,因为没有nabc这个变量注
2022-04-29 17:40:42
904
原创 模拟tcmalloc的小型高并发内存池项目
前言本项目仅为了学习并提升代码能力,不作为实际运用。项目完整代码地址:gitee仓库地址文章目录前言1.项目介绍2.什么是内存池2.1 池化技术2.2 内存池2.3 内存池主要解决的问题2.4 malloc3. 先设计一个定长的内存池4.高并发内存池整体框架设计5.`thread cache`整体设计6.哈希桶映射对齐规则7. TLS -- thread local storage8.`central cache`的整体设计9.`central cache`结构设计10.`central cache`
2022-04-11 17:12:36
1657
5
原创 【Linux】必须要掌握的进程间通信的方法
文章目录进程间通信进程间通信的目的进程间通信如何做到通信的发展进程间通信分类管道什么是管道匿名管道匿名管道的使用管道的读写规则命名管道管道的特点System VSystem V 共享内存共享内存的基本原理共享内存使用逻辑共享内存的特点system V 消息队列system V 信号量进程间通信进程和进程之间的关系,即进程间通信IPC。进程间通信的目的Q:为什么要有进程间通信?进程间通信的目的?数据传输:一个进程需要将它的数据发送给另一个进程资源共享:多个进程之间共享相同的资源通知事件:一个
2022-02-18 15:31:18
733
5
原创 【Linux】你一定要知道的31种进程间信号
文章目录1 总览信号2 产生信号的方式2.1 键盘组合键2.2 程序异常导致硬件问题2.3 系统调用函数killraiseabort2.4 软件条件3 保存信号4 处理信号4.1 捕捉信号4.2 处理信号的时机和流程5 补充了解5.1 可重入函数5.2 volatile5.3 SIGCHLD信号1 总览信号在信号还没有产生的时候,对于进程来说,应该知道信号产生之后应该有怎样的对应默认行为。信号产生的时候,进程应该知道信号对应的含义,操作系统中已经内置了信号的处理方案进程应该可以识别信号的种类,
2022-02-18 15:29:08
1111
7
原创 【Linux】任务管理,作业控制与守护进程
文章目录任务管理进程组作业会话守护进程任务管理在运行进程的时候后面加上&,表示让这个进程放在后台运行。每一个进程都是一个任务,都有一个作业号使用jobs命令可以查看所有的任务和其作业号使用fg 作业号可以让后台进程放到前台运行后台运行的进程的状态是R,而前台运行的进程状态是R+在bash中只允许存在一个前台进程,而bash也是一个进程,所以当前台已经有一个进程在运行的时候,bash就不能解析命令了,所以此时尝试运行命令是没有用的。使用ctrl + z组合将可以让进程以暂停的状态运行
2022-02-18 15:23:59
637
4
原创 【Linux】线程和进程?开始多线程编程喽
文章目录1 Linux线程概念1.1 什么是线程1.2 线程优点1.3 线程的缺点1.4 线程异常1.5 Linux进程和线程2 Linux线程控制2.1 POSIX线程库2.2 线程创建2.3 线程标识线程终止线程分离线程等待3 Linux线程互斥互斥相关概念互斥量互斥量相关的接口互斥量实现原理可重入和线程安全概念常见场景可重入与线程安全的联系与区别常见锁概念死锁死锁的四个必要条件避免死锁的建议避免死锁算法Linux线程同步同步概念与竞态条件条件变量条件变量相关接口生产者消费者模型POSIX信号量线程池线
2022-02-18 15:23:05
914
16
原创 【Linux】终于学会打动静态库啦
文章目录动静态库基本原理认识动静态库动静态库的优缺点如何制作和使用动静态库?动静态库基本原理动静态库时可执行程序的“半成品”。所有的库本质就是可重定向二进制文件的集合,即目标文件的集合,其中包含了大量的执行方法。使用ldd 可执行程序命令查看可执行程序依赖的动静态库文件认识动静态库在windows中动态库以.dll为后缀,静态库以.lib为后缀。在Linux中动态库以.so为后缀,静态库以.a为后缀。库的命名有规范,一个库的名字去掉前缀lib,去掉后缀.so或者.a剩下的就是库的名字。例如l
2022-02-18 15:18:33
846
12
原创 小狗钱钱中学会的法则
1、钱不是人生中最重要的事情,但是如果你缺钱的话,那么钱就会显得额外重要。所以你努力赚钱是为了钱以外更重要的事情。如果你不努力赚钱的话,那么我们只能一直陷入赚钱的困扰中。钱会占据我们生命中的绝大部分,我们会在做任何事情的时候从任何金钱的角度去思考。所以学会赚钱才是让自己”视金钱为粪土“的开始。2、写出你的10个愿望,然后选出3个最重要的,天天拿出来看看自己真正的梦想。成功的人会想象自己成功的那一天,然后用强烈的愿望去推动自己前进。准备梦想储蓄罐:3、你想要赚钱吗?1.为别人解决问题。(别人需要什么)2
2022-01-18 18:28:25
190
原创 【Linux】基础IO-IO接口,文件描述符,重定向
【Linux】基础IO文章目录【Linux】基础IO一、C语言中文件IO操作1.C语言中的开关读写文件1.1.fopen()1.2.fclose()1.3.fwrite()1.4.fread()2.stdin&&stdout&&stderr3.三个标准流和IO接口二、系统文件IO1.系统级别的开关读写文件1.1.open()1.2.close()1.3.write()1.4.read()2.系统文件IO VS C文件IO3.文件描述符fd3.1.什么是文件描述符3.2.如何
2021-10-31 22:08:25
510
7
原创 docker常用命令
docker常用命令将一个服务器的环境打包成一个镜像来达成可以迁移环境的目的。镜像相关命令(images)1.docker pull xxx:拉取一个镜像2.docker images:列出所有的镜像3.docker image rm xxx或者docker rmi xxx:删除一个镜像xxx4.docker [container] commit CONTAINER IMAGE_NAME:TAG:创建某个container镜像5.docker save -o xxx.tar xxx:将xxx镜
2021-10-21 08:11:05
389
原创 动态规划之背包DP
动态规划之背包DP文章目录动态规划之背包DP01背包问题分割等和子集(动规)(动规-空间优化)[1049. 最后一块石头的重量 II](https://leetcode-cn.com/problems/last-stone-weight-ii/)(动规)(动规-空间优化)目标和(递归)(记忆化搜素)(动规-加偏移量)(动规-转化为01背包问题)(动规-空间优化)一和零(动规-01背包-二维费用背包-朴素版)(动规-01背包-二维费用背包-空间优化)完全背包问题[零钱兑换 II](https://leetc
2021-10-17 10:57:18
262
4
原创 【C++】继承?组合?菱形继承?虚继承?虚基表?
【C++】第11章:继承文章目录【C++】第11章:继承一、继承的概念1、继承的初识2、继承的定义方式2.1.定义继承的格式2.3.派生类中成员变量在继承后的访问方式的变化3、总结二、基类和派生类对象的赋值转换(切片)三、继承中的作用域四、派生类中的默认成员函数五、在继承中友元六、在继承中的静态成员七、继承方式1.单继承2.多继承2.1.多进程的“祸害”菱形继承2.2.解决菱形继承的方法-虚拟继承2.3.虚拟继承的原理3.总结八、继承和组合常见笔试面试题一、继承的概念1、继承的初识在写有相同功能的同
2021-10-16 20:40:04
213
5
原创 【Linux】进程详解二:进程控制
【Linux】进程详解二:进程控制文章目录【Linux】进程详解二:进程控制前言一、进程创建1.fork()函数的认识1.1.利用系统调用fork()创建进程1.2.fork()在内核中都干了什么?1.3.父子进程的关系2.fork()函数的返回值1.`fork()`函数为什么会有两个返回值?2.为什么`fork()`函数中,子进程要返回0,而父进程要返回子进程的PID?3.写时拷贝4.fork()函数的使用场景5.fork()调用失败的原因二、进程终止1.进程终止的使用场景2.进程退出码2.1.进程退出
2021-10-08 12:11:15
801
9
原创 【linux】工作中常用git命令(建议收藏,方便查看)
【linux】工作中常用git命令文章目录【linux】工作中常用git命令git 关联账号git 仓库管理git 管理分支git 管理临时保存栈git 关联账号git config --global user.name xxx:设置全局用户名,信息记录在~/.gitconfig文件中git config --global user.email xxx@xxx.com:设置全局邮箱地址,信息记录在~/.gitconfig文件中git 仓库管理git init:将当前目录配置成git仓库,信息记录
2021-09-23 17:49:34
614
5
原创 【C++】第10章:类模板-模板的全特化和偏特化及模板的分离编译
【C++】第10章:类模板-模板的全特化和偏特化及模板的分离编译文章目录【C++】第10章:类模板-模板的全特化和偏特化及模板的分离编译一、非类型模板参数二、模板的特化1.为什么会有模板特化?2.模板的特化及偏特化2.1 函数模板的特化2.2 类模板的特化及偏特化三、模板的分离编译1.是什么分离编译?2.分析模板为什么不能分离编译3.如何解决模板不能分离编译的问题四、模板的总结一、非类型模板参数模板参数分类为两种:类型形参与非类型形参。类型形参:出现在模板参数列表中,标有关键字class或者type
2021-09-23 16:22:48
762
6
原创 动态规划之双序列DP问题题集
动态规划之双序列DP问题文章目录动态规划之双序列DP问题最长公共子序列(动规)正则表达式匹配(动规)通配符匹配(动规)编辑距离(动规)不相交的线(动规-LCS)交错字符串(动规)(动规2)(动规空间优化)不同的子序列(动规)两个字符串的删除操作(动规)最长公共子数组(动规)(动规-空间优化)最短公共超序列(动规)最长公共子序列(动规)最长公共子序列问题是最经典的双序列的DP问题,因为涉及到两个序列共同的部分,所以使用二维的DP数组来表示,而公共子序列的可以在循环的内部判断。1.状态定义dp[
2021-09-22 16:25:16
367
3
原创 【C++】第九章:IO流
【C++】第九章:IO流文章目录【C++】第九章:IO流一、C语言的输入输出二、流的概念三、C++的IO流1.C++标准IO流2.C++文件IO流①.定义文件流对象②.打开文件③.对文件进行读写操作④.关闭文件3.operator<< 和 operator>>写入和读取四、stringstream流一、C语言的输入输出在C语言中用到的输入输出方式就是scanf ()与printf()。scanf(): 从标准输入设备(键盘)读取数 据,并将值存放在变量中。print
2021-09-20 16:25:06
281
3
原创 动态规划之线性DP题集
动态规划之线性DP文章目录动态规划之线性DP(一)LIS问题最长上升子序列(朴素动规)(二分+贪心+动规)最大子序和(动规)(贪心)最长连续递增序列(动规)(双指针)俄罗斯套娃信封问题(二维LIS问题动规)(一维LIS问题)(一维LIS问题+二分贪心优化)堆箱子(三维LIS问题动规)无重叠区间(动规)(贪心1)(贪心2)用最少数量的箭引爆气球(贪心)最长数对链(动规)(贪心)(贪心右端点sort)最长字符串链(动规)(二)前后缀数组除自身以外数组的乘积(动规)(动规空间优化)数组中的最长山脉(动规枚举山顶
2021-09-18 23:04:54
767
3
原创 【C++】第八章:STL之priority_queue的使用和模拟实现
文章目录一、priority_queueu的使用1.priority_queue的介绍2.priority_queue的定义3.priority_queue的常用接口二、priority_queue的模拟实现调整堆算法-shiftUp()-shiftDown()shiftUp()算法shiftDown()算法模拟实现一、priority_queueu的使用1.priority_queue的介绍优先队列是一种容器适配器,默认情况下STL(头文件是<queue>)中使用vector作为其底层的
2021-09-18 22:52:29
779
6
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人