- 博客(24)
- 收藏
- 关注
原创 设计模式——单例模式
有些对象控制大量的共享资源(如数据库或者文件)的访问权限,如果同时存在大量对象进行访问,可能会造成混乱引起安全问题,有些对象本身占用大量的资源,存在过多实例会造成资源的浪费,如果应用中某个类对于所有使用者而言只有一个可用的实例则可使用单例模式。单例模式是一种创建型的软件设计模式,在工程项目中十分常见。通过单例模式的设计,使得创建的类在当前进程中只有一个实例,并提供一个全局性的访问点,这样可以规避因频繁创建对象而导致的内存飙升情况。按唯一实例创建的时机可分为懒汉式和饿汉式两种单例模式。
2024-10-21 17:19:05
658
1
原创 设计模式笔记
使用设计模式的目的是在设计大型项目时,保证所设计的模块之间的代码灵活性和可复用性,但毫无疑问的是,这两个特性都有增加复杂性的代价。解耦合:通过修改程序代码,切断两个模块之间的依赖关系,使得对于任意一个模块的更改都不会影响另一个模块,这就说明两个模块已经解耦合了。耦合:两个模块相互依赖,修改其中的一个模块,则另外一个也要修改,这两者之间存在的互相影响关系就叫作两个模块之间存在耦合关系。抽象的原则是把比较稳定的,不怎么变化的内容作为一个模块,单独定义出来。模式:事务的标准样式或者针对特定问题的可重用解决方案。
2024-10-21 17:12:08
449
原创 Redis服务搭建
为了安全起见,不要在生产环境中公开Redis实例。Redis的日志文件通常可以提供有关启动失败的详细信息。默认情况下,Redis日志文件可能位于 /var/log/redis/redis.log。系统日志中也可能包含有关服务启动失败的详细信息。使用redis-cli命令行工具连接到Redis服务器并执行一些命令以确保其正常工作。如果你的服务器有防火墙,你需要允许Redis端口(默认是6379)通过防火墙。确保Redis在系统启动时自动启动,并检查其状态。如果返回PONG,表示Redis服务器正在运行。
2024-07-24 15:15:17
396
原创 RPM打包笔记
RPM打包使用的是rpmbuild命令,这个命令来自rpm-build包,由于rpmdevtools还包含一些其他的工具,同时它依赖rpm-build,所以直接安装rpmdevtools更方便,在安装同时也会将rpm-build安装。%preun(%preun 段落中的脚本会在软件包卸载之前执行)%preun(%preun 段落中的脚本会在软件包卸载之前执行)%post(%post 段落中的脚本会在软件包安装完成后执行)%post(%post 段落中的脚本会在软件包安装完成后执行)一、安装rpm打包工具。
2023-11-28 16:30:38
589
1
原创 Codeforces Round #733 E题
题意:给你一个字符串s,定义f(s)为s字符串在从i位置的子串为i位置前的子串的前缀和后缀的最大值,求你对s字符串的字符重新排序,使f(s)最小,输出字典序最小的方案。思路:当存在的字符有字符个数为1时,可以构造f(s)=0,取其中最小的字符充当首字符,其余字符从小到大排列.当存在的字符个数全部大于等于2时,可以构造f(s)=1(如果全部字符不为同一种),如果s中字符中最小的字符个数小于等于(总字符数-2)/2时可以构造以两个小字符开头的字符串,然后一个大一点的,一个最小字符排列,即如aababab
2021-07-20 00:06:33
139
原创 AtCoder Regular Contest 123
C - 1, 2, 3 - Decomposition题意:给你一个数,让你分解成不含0的四进制之和,求最少分解成多少个?思路:从高位到低位思考,每一位有两种情况,一种借一给低位,另一种不借。含高位构造数数目小于等于含低位的构造数数目.代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;const int N=5e5+7;const ll inf=1e9+7;int fun(ll n)
2021-07-19 21:58:15
259
原创 计算几何学习笔记(二)
一、已知两条线段,判断线段是否相交?首先用叉积判断两线段不平行和共线。然后:(1)如果对于一条线段而言另一条线段的两端在该线段的同一端,则两线段一定不相交。(2)如果两线段作为对角线形成的矩阵不相交则两线段一定不相交。如果经过了(1)和(2)的删选,则两线段相交。二、求两线段的交点。判断完两直线相交后:三、求点到线段的最近距离...
2021-06-22 21:01:22
141
原创 计算几何学习笔记(一)
一、已知直线的两点坐标(x1,y1)和(x2,y2)求该直线的一般式方程Ax+By+C=0解方程(y-y1)/(x-x1)=(y2-y1)/(x2-x1)得:(y2-y1)x+(x1-x2)y+(y1 * x2-x1 * y2)=0;所以:a=y2-y1 b=x1-x2 c=y1 * x2-x1 * y2二、已知直线的两点坐标(x1,y1)和(x2,y2),求点(x0,y0)到直线的距离和求在直线上的垂足,以及关于直线的对称点。先求出直线的一般式垂足:求解两个方
2021-06-21 21:17:50
291
原创 huffman树
一、定义:k叉Huffman树是包含着n个带权值的叶子节点,使所有的叶子节点到边的距离与权值之积的和最小并且分支不超过k的一种构造树二、构造方法:首先我们知道权值最大的点应该放在最下方,所以我们可以从底部往根节点方向构造,每次我们可以合并最多k个节点,也就是说每次合并我们减少了(k-1)个节点,我们需要正好剩一个节点,所以我们可以添加0节点使(节点个数-1)被(k-1)整除,此时每次合并k个权值最小的节点生成他们的一个父节点,父节点权值为子节点权值之和,直到只剩一个节点,此节点为根节点。所求值等于所有
2021-05-26 23:29:45
183
原创 深度优先搜索dfs的简单应用
一、深度优先搜索概念:深度优先搜索是按照自己设置的方式在解空间中遍历搜索满足条件的解,如果将解空间视为一棵树,则深度优先搜索可以说是先序遍历解空间.当解空间过大时,我们可能不能在规定的时间内完成对答案的搜索,所以需要对不可能为答案的枝叶进行剪枝.二、题目1.小猫爬山(AcWing165)思路:我们先定义解空间是什么,这题解空间是将n只猫放入m个缆车中,状态转化是第i只猫该怎么放,我们可以将其放入已启用的其中一辆缆车,也可以放入一辆新的缆车中.当n只猫放完后的状态就是解空间的一个节点,由于复杂度过
2021-05-14 16:28:32
469
1
原创 AC
题意:思路:用可返回堆即通过双向链表和小根堆(可以用STL的优先队列)实现.代码:#include <bits/stdc++.h>using namespace std;typedef long long ll;typedef unsigned long long ull;const ll inf=1e9+7;char s[1000005], t[1000005];int head=-1, pre[1000005], Next[1000005], val[10000
2021-05-13 22:24:20
141
原创 bitset的基本用法
一、概念bitset可以说是一个多位二进制数,每八位占用一个字节,因为支持基本的位运算,所以可用于状态压缩,n位bitset执行一次位运算的时间复杂度可视为n/32.二、基本操作1.定义:bitset< n > s;表示一个n位的二进制数,<>中填写位数;2.位运算操作符:~s: 返回对s每一位取反后的结果;&,|,^:返回对两个位数相同的bitset执行按位与、或、异或运算的结果;<<, >>:返回把一个bitset左移,右移若干
2021-05-13 12:16:45
40529
5
原创 二叉堆知识总结及相关题目题解
一、二叉堆性质:1.数据结构是一颗完全二叉树2.任意一个节点小于父节点称为”大根堆“,任意节点小于父节点称为”小根堆"二、使用数组实现的小根堆二叉堆操作:1.向上调整:此时该节点不满足二叉堆性质,则通过与父节点交换来满足二叉堆性质,然后调整父节点,不断向上调整,使其满足性质为止.void Up(int v){ while(v>1) { if(a[v/2]>a[v]) { swap(a[v/2],a[v]);
2021-05-12 21:23:00
316
原创 poj---3126---Prime Path---详细题解
原题链接题意描述:给出二个四位数的素数,由第一个数经过不断改变其中一位数变成另一个新的素数,直至变成第二位数,求变化次数(原题说的是更换数字数,由于一次只变一位数,所以相当于求变换次数);思路:先打个1~10000的素数表,然后bfs搜索;代码:...
2019-08-08 16:38:16
489
原创 牛客假日团队赛8----C-----阶乘之和
链接:https://ac.nowcoder.com/acm/contest/1069/C来源:牛客网题目描述 :用高精度计算出S=1!+2!+3!+…+n!(n ≤ 50)其中“!”表示阶乘,例如:5!=54321。输入描述:输入正整数N输出描述:输出计算结果S输入3输出9**思路:**由于50的阶乘比较大,long long 也无法储存,所以用字符串进行储存,进行大数加...
2019-07-28 20:24:26
265
原创 红魔馆爆炸了---湖南科技大学oj1975---尺取法
**红魔馆爆炸了**题目描述红魔馆最近迎来了两块陨石,由于防范不到位,第一块陨石从天而降,红魔馆爆炸了。馆主蕾米莉亚有着强大的力量,她决定阻止第二块陨石,方法是将陨石打爆,使其分裂成若干个小石块。为了简化问题,我们可以将一块陨石看作由连续的n个石块组成,每个石块包含了一定能量,蕾米莉亚需要毁掉其中某一段连续的石块...
2019-07-27 22:18:28
1011
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人