- 博客(39)
- 资源 (1)
- 收藏
- 关注
原创 Java并发编程 总结
《Java并发编程实战》总结线程安全、内存模型、内存可见性、并发容器、同步工具、Executor、线程池、锁、条件队列、原子变量
2022-06-17 16:11:26
384
原创 Netty4 总结
Netty-> Channel ChannelPipeline ChannelHandler ChannelHandlerContext NIO Bootstrap ByteBuf EventLoop
2022-05-04 15:37:24
651
原创 SpringSecurity中应用 权限控制模型ACL(AccessControlList)
访问控制列表 Access Control ListSpring Security ACL
2022-03-30 21:51:34
1246
原创 计算机网络-链路层-总结
链路层负责相邻节点之间**数据报(datagram)**的传输大部分实现在网络适配器(network adapter)(网络接口卡(network interface card(NIC)))差错检测和纠正技术 (Error-Detection and -Correction Techniques)奇偶校验(parity checks)校验和(checksumming methods)(多用于运输层)循环冗余检测(cyclic redundancy checks)(多用于适配器的链路层)
2022-02-07 23:45:15
1412
原创 SpringSecurity-从数据库查询用户信息用于验证
User Pojo//实现 org.springframework.security.core.userdetails.UserDetails接口,以便将用户信息返回给SpringSecurity的验证过程public class User implements UserDetails { private BigInteger id; private String username; private String password; private String ro.
2022-01-20 18:28:34
940
原创 如何实现可靠的传输 -《计算机网络:自顶向下方法》
如何实现可靠的传输rdt:要实现的可靠传输udt:rdt所使用的底层的不可靠传输rdt1.0-如果底层的通信完全无误rdt2.0-如果底层的通信会产生位错误,(假设ACK和NCK通知不会产生错误)。则需要错误检测(Error detection) : 校验和(Checksum)接收反馈(Receiver feedback)发生ACK(Acknowledgment)和NAK给发送者,以指示是否成功接收信息重发(Retransmission)rdt2
2022-01-12 21:56:58
1035
原创 SQL总结
模式 schemeCREATE SCHEMA schema_name_clause [ <schema_element> [ ...n ] ]<schema_name_clause> ::= { schema_name | AUTHORIZATION owner_name | schema_name AUTHORIZATION owner_name }<schema_element> ::= {
2022-01-11 19:29:58
128
原创 数据库概论-复习总结(5)
不一致性修改丢失(lost update) - 两个事务同时修改同一数据不可重复读 (non-repeatable read) - 不可重复读是指事务T1读取数据后,事务T2执行更新操作,使T1无法再现前一次读取结果。事务T1读取某一数据后,事务T2对其做了修改,当事务T1再次读该数据时,得到与前一次不同的值(幻影(phantom row)现象)事务T1按一定条件从数据库中读取了某些数据记录后,事务T2删除了其中部分记录,当T1再次按相同条件读取数据时,发现某些记录消失了事务T1按一
2022-01-11 19:29:01
295
原创 数据库概-复习总结(4)
事务一个数据库操作序列 ; 一个不可分割的工作单位; 恢复和并发控制的基本单位ACID原子性 Atomicity一致性 Consistency一致性状态: 数据库中只包含成功事务提交的结果独立性 Isolation并发执行的各个事务之间不能互相干扰持久性 Durability一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。故障事务内部故障系统故障恢复策略:强行撤消(UNDO)所有未完成事务。重做(REDO)所有已提交的事务介质故障
2022-01-11 19:28:32
176
原创 数据库概论-总结复习(3)
数据库设计阶段需求分析-> 数据字典方法:自顶向下的结构化分析方法(Structure Analysis SA) 自顶向下,逐层分解概念结构设计 -> ER图自顶向下-首先定义全局概念结构的框架,然后逐步细化自底向上-首先定义各局部应用的概念结构,然后将它们集成起来,得到全局概念结构逐步扩张-首先定义最重要的核心概念结构,然后向外扩充,以滚雪球的方式逐步生成其他概念结构,直至总体概念结构混合策略-将自顶向下和自底向上相结合,用自顶向下策略设计一个全局概念结构的框架,以..
2022-01-11 19:27:58
334
原创 数据库概论-复习总结(2)
数据库理论规范化关系模式可表示为一个五元组 R(U,D,DOM,F)R:关系名D:属性组U中的属性所来自的域DOM:属性到域的映射F:属性组U上的一组数据依赖数据依赖:一个关系内部属性与属性之间的约束关系。这些约束关系通过属性间值的相等与否体现出的数据间相关联系。函数依赖(Functional Dependency, FD) :设R(U)是一个属性集U上的关系模式,X和Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不
2022-01-11 19:27:19
889
原创 C++继承与派生总结
面向对象程序设计基于数据抽象、继承、动态绑定这三个基本概念。OOP的核心思想:多态性(polymorphism)继承(inheritance)基类(base class)直接基类(direct base)间接基类(indirect base)派生类(derived class)虚函数(virtual function) 其解析过程发生在运行时,而不是编译时类派生列表(class derivation list)动态绑定(dynamic binding) 使用基类的引用或指针调用一个虚成员
2021-06-22 22:18:52
1581
原创 C++动态绑定的实现-虚函数表
虚函数表C++多态的实现方式。演示:class B{public: virtual void func1(){cout<<"B::func1"<<endl;} virtual void func2(){cout<<"B::func2"<<endl;}};class D : public B{public: void func1() override {cout<<"D::func1"<<endl;
2021-06-22 00:18:37
183
原创 数据结构 C++:树、查找二叉树、平衡树(AVL树)、伸展树(SplayTree)总结
树相关术语:root 根edge 边child 子节点parent 父节点leaf 叶节点sibling 兄弟节点path 路径:从节点n1 到 nk的路径定义为:节点n1 n2 n3 … nk 的序列, 使得对于1<=i<k的节点ni是ni+1的父节点。路径的长(length)即为该路径上的边的数量, 即k-1.depth深度:从根节点到ni的唯一路径的长。特别的,根的深度为0.internal path length 内部路径长:一棵树的所有节点的深度的和称为内部路径
2021-04-06 23:22:36
364
2
原创 C++:类3-对象移动、移动构造、移动赋值
某些情况下,对象拷贝后就会立即被销毁,此时,移动而非拷贝对象会大幅度提升性能。右值引用(rvalue reference)int i = 42;int &&r = i * 42; //将右值引用绑定到一个右值上返回左值引用的函数,赋值,下标,解引用,前置递增/递减运算符->返回左值。返回非引用类型的函数,算术,关系,位,后置递增/递减运算符->返回右值。左值表示一个对象的身份,而一个右值表示对象的值。右值引用只能绑定到临时对象上去右值引用指向即将被销毁得分
2021-04-05 23:26:15
335
原创 C++:类-拷贝构造、拷贝赋值、析构
类通过5种特殊的成员函数:拷贝构造函数(copy constructor)、拷贝赋值运算符(copy-assignment operator)、移动构造函数(move constructor)、移动赋值运算符(move-assignment)和析构函数(destructor),来完成对象的拷贝、移动、赋值和销毁。class Foo(){ public: Foo(); ~Foo(); Foo(const Foo&); //拷贝构造函数
2021-04-05 23:25:43
2629
4
原创 C++:类-基本
类的基本思想是数据抽象(data abstraction)和封装(encapsulation)。数据抽象是一种以来于接口(interface)和实现(implementation) 分离的编程技术。接口与实现分离接口方在头文件中。 实现方在cpp文件中。使用预编译指令,避免多次引入头文件#ifndef ABC_H#define ABC_Hclass ABC{ };#endif构造函数默认构造函数如果没有显示定义构造函数,则编译器默认地隐式地定义一个默认构造函数。合
2021-04-05 23:24:47
241
原创 C++:动态内存 与 智能指针
静态内存:保持局部static对象、类static数据成员、定义在函数之外的变量栈内存:函数内非static对象自由空间(free store)或堆(heap): 储存动态分配(dynamically allocate)的对象智能指针 smart pointer头文件memory中shared_ptr 可多个指针指向同一个对象unique_ptr 一个指针独占所指向的对象weak_ptr 弱引用,指向shared_ptr所管理的对象shared_ptr 与 unique_ptrsh.
2021-04-05 23:23:50
169
原创 C++:运算符重载
不能被重载的::.*.?:一个运算符函数的成员至少有一个是类类型。重载运算符本质上是函数调用,运算符的求值顺序无法被保留。&&,||的短路求值属性也无法保留。应该使用与内置类型一致的含义:逻辑、关系运算符应返回bool算数类型返回一个类类型对象赋值运算符和复合赋值运算符返回对象的引用重载输入输出运算符>><<istream& operator>>(istream& is, Foo& foo){.
2021-04-05 23:22:43
160
原创 C++:运行时类型检查-关键字typeid
运行时类型检测(run-time type identification, RTTI)关键字 typeid 返回表达式的类型使用前应引用typeid(表达式\类型名)返回一个常量对象的引用,该对象的类型为标准库类型type_info或type_info的共有派生类。顶层const将被忽略作用于数组或函数时,不会执行指针的标准类型转换(即指针与数组区别对待,指针是指针类型,数组是数组类型。)当作用于某种类型的指针或引用时,如果该类型含有虚函数,运算符将使用指针或引用所绑定对象的
2021-04-05 23:21:53
429
原创 C++:顺序容器
顺序容器vector 可变大小数组,快速随机访问deque 双端队列,随机访问,首尾快速插入list 双向链表,快速任意插入/删除forward_list 单向链表array 固定大小数组 array<int,n> 声明时应加大小string 类似vector顺序容器操作类型:iteratorconst_iteratorsize_typedifference_type 带符号整数,足够保存两个迭代器之间的距离value_typereference 元素的
2021-04-05 23:20:29
213
1
原创 C++:关联容器
关联容器(associative-container)头文件map 关键字-值对multimap 允许关键字重复头文件set 只储存关键字multiset 允许关键字重复<unordered_map>头文件unordered_map 不保持关键字的顺序,使用哈希函数来组织元素。unordered_multimap<unorderer_set>头文件unordered_setunordered_multiset关联容器的迭代
2021-04-05 23:19:20
173
原创 C++:泛型算法
泛型算法 Generic Algorithm接收输入范围的算法总是使用前两个参数表示此范围常用findfind_if 传递谓词,找到第一个符合条件的count 查找元素出现的次数count_ifaccumulate 求和,numeric头中,传入范围,和的初始值equal 比较两个序列是否相同fill 填充copyreplace 替换元素replace_copy 替换元素,不改变原序列,结果输出到另一个序列(很多算法都有copy版本)sort 排序stable_sort
2021-04-05 23:15:27
236
原创 C++笔记:IO库-流整理
IO库类型头文件读写读写iostreamistreamostreamiostreamfstreamifstreamofstreamfstreamsstreamistringstreamostringstreamstringstreamwistream wcin wcout…前加w表示宽字符版,对应wchar_tfstream stringstream 继承自iostreamifstream istringstream 继承自istream
2021-04-05 23:13:31
212
2
原创 素数线筛-欧拉筛法 为什么i%primes[j] == 0时要break
//素数线筛-欧拉筛法int primes[100000]; //用来储存已获得的素数(当栈用)int num = 0; //已得到的素数的个数 (栈顶)bool getPrime(int n){ for(int i = 0; i<100000; i++) isNotPrime[i] = 0; isNotPrime[1] = true; for(int i = 2; i<=n; i++){ if(!isNotPrime[i]) primes[n
2021-01-18 21:54:32
500
树形图绘制器 C++&Qt项目.zip
2021-08-27
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人