<iframe width=100% style=min-height: 260px;position: absolute;top: 0;bottom: 0;margin: auto 0; src=https://www.youtube.com/embed/FskRmY22jXqbY frameborder=0 allow=accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture allowfullscreen></iframe>
TL;DRs
这个错误的原因和HTTPS的代理配置有关,使用SSH方式连接可以避免这一问题 最近git pull和push的时候总是报错
fatal: unable to access 'https://github.com/xx/xx.git/': Proxy CONNECT aborted 试了几种方法,都不太行。但是发现了一个绕过的方法:把连接方式改为SSH 然后尝试
git pull
[email protected]/xx/xx.git/ 发现即使不连梯子也可以正常拉取和推送。 然后把.git隐藏文件夹下的config文件中的URL字段也改成SSH的连接,再使用
git pull 即可正常拉取
传送们 教程点击跳转
自行看教程
软件下载 JDK_11下载:百度云盘
怕引起不必要麻烦,不提供破解软件下载
写在前面 必须要先保证hadoop是正常启动的,hadoop安装配置见《CentOS7安装Hadoop集群》 HIVE是正常的,Hive安装配置见《CentOS7安装Hive》 Spark是正常的,Spark安装配置见《CentOS7安装Spark集群(yarn模式)》 其它配置 HDFS创建以下路径,用于存储相关jar包 解压缩spark-3.0.0-bin-without-hadoop.tgz并上传到上面目录 修改hive-site.xml
1.bean中新建一个实体类Category.java:
Category.java:
@Data @NoArgsConstructor @AllArgsConstructor public class Category{ private int categoryId; private String categoryName; private Integer categoryLevel; private Integer parentId; private String categoryIcon; private String categorySlogan; private String categoryPic; private String categoryBgColor; } 2.创建DAO: GeneralDAO.java: (一定不能放到mapperScan能扫描到的包中,要创建一个common包或general包放进去) public interface GeneraDAO<T> extends Mapper<T>, MySqlMapper<T>{ } UserDAO.java:
public interface UserDAO extends GeneralDAO<User>{ } CategoryDAO.java:
public interface CategoryDAO extends GeneralDAO<Category>{ } 3.测试(增删改):
CategoryDAOTest.java:
@RunWith(SpringRunner.class) @SpringBootTest(classes=TkmapperDemoApplication.class) public class CategoryDAOTest{ //添加 @Autowired private CategoryDAO categoryDAO; @Test public void testInsert(){ Category category = new Category(0,测试类别1,1,0,hehe,01.
农夫约翰建造了一座有 \(n\) 间牛舍的小屋,牛舍排在一条直线上,第 \(i\) 间牛舍在 \(x_i\) 的位置,但是约翰的 \(m\) 头牛对小屋很不满意,因此经常互相攻击。约翰为了防止牛之间互相伤害,因此决定把每头牛都放在离其它牛尽可能远的牛舍。也就是要最大化最近的两头牛之间的距离。
牛们并不喜欢这种布局,而且几头牛放在一个隔间里,它们就要发生争斗。为了不让牛互相伤害。John 决定自己给牛分配隔间,使任意两头牛之间的最小距离尽可能的大,那么,这个最大的最小距离是多少呢?
Solution 二分答案。当此时的距离所划分的区间多于 \(m\) 时,意味着我们可以再继续增大;否则就减小。
点击查看代码 int n,m; const int N = 1e5+5; int x[N]; int ans = 0; bool check(int ans){ int cnt=1; int st = x[1]; for(int i=2;i<=n;i++){ if(x[i]-st<ans)continue; else{ cnt++;st=x[i]; } } if(cnt>=m)return true; return false; } int main(){ //ios::sync_with_stdio(false); n = read(); m = read(); for(int i=1;i<=n;i++)x[i] = read(); sort(x+1,x+1+n); int l=1,r = x[n]; int mid; while(l<r){ mid = (l+r)>>1; if(check(mid)){ l = mid+1; ans = max(ans,mid); } else r = mid; } cout<<ans<<endl; }
虽然 Apache 的 httpd 也可以做反向代理。
但是在效率和配置上确实不如 nginx,因此我们也将我们的反向代理服务换成了 nginx。
在选择版本的时候遇到了:到底是选择 Nginx 还是 Nginx Plus 的问题。
简单来说就是: Nginx Plus 相当于付费版本的 Nginx。
提供了更多的功能,针对企业需要的一些服务进行了优化。
有关功能的比较页面,请参考: Compare Models - NGINX 上面的内容。
结论 对于一般的网站,一天也就几千个 IP 的这种,用不用 Plus 都差不多。
对于复杂网站和自己的网站或者 API 已经有比较明显的性能问题的话,还是可以考虑使用官方 Plus 提供的相关服务的。
https://www.ossez.com/t/nginx-nginx-plus/13950
堆 今天整理了一下Heap部分的一些笔记,小汇总一下 在程序运行过程中,堆可以提供动态分配的内存,允许程序申请大小未知的内存。堆是程序虚拟空间地址的一块连续的线性区域,由低地址向高地址上增长
堆题漏洞一般在delete()函数上,多半是指针未清空导致成为野指针,从而可以进行UAF等
实现堆利用的方法 ptmalloc2 - glibc dlmalloc - General purpose allocator jemalloc - Firefox and FreeBSD tcmalloc - Google libumem - Solaris ps:与系统交互的函数主要是(s)brk函数以及mmap,munmap函数,不是malloc或者free
malloc malloc(size_t n)
malloc返回对应大小字节的内存块的指针,此外,该函数对一些异常进行了处理 n = 0 , 返回当前系统允许的堆的最小内存块 当n为负数时,由于在大多数系统上,size_t是无符号常数,所以会系统会申请很大的内存空间,但通常来说都会失败,因为系统没有那么多的内存可以分配 free free(void* p)
free函数会释放由p指向的内存块,这个内存块可能是通过malloc得到的,也可能是通过相关函数realloc得到的 对异常的处理 当p为空指针时,函数不执行任何操作 当p被释放后,再次释放会出现乱七八糟的效果,即double free 除了被禁用mallopt的情况下,当释放很大的内存空间时,程序会将这些内存空间还给系统,以便于减小程序所使用的内存空间 (s)brk 操作系统提供了brk函数,glibc库提供了sbrk函数,我们可以通过增加brk的大小来向操作系统申请内存
堆的起始地址start_brk和堆的当前末尾brk指向同一地址,根据是否开启ASLR两者的具体位置会有所不同 不开启ASLR:start_brk和brk会指向data/bss段的结尾 开启ASLR:start_brk和brk,也会指向同一位置,只是这个位置会在data/bss段的结尾后随机偏移 chunk 结构其实就是header段+data段 size_alignment = 0x10的倍数(malloc 0x18 会拿到 0x20 的大小) 整个memory大小为header(0x10) + data 由malloc申请的内存为chunk,这块内存在ptmalloc内部用malloc_chunk结构体表示,当程序申请的chunk被free掉后,会加入到相应的空闲管理列表
题目:【深基16.例7】普通二叉树(简化版)
题目链接:https://www.luogu.com.cn/problem/T237469?contestId=68358
题目描述 您需要写一种数据结构,来维护一些数( 都是 10^9109 以内的数字)的集合,最开始时集合是空的。其中需要提供以下操作,操作次数 qq 不超过 10^4104:
查询 xx 数的排名(排名定义为比当前数小的数的个数 +1+1。若有多个相同的数,应输出最小的排名)。 查询排名为 xx 的数。 求 xx 的前驱(前驱定义为小于 xx,且最大的数)。若未找到则输出 -2147483647−2147483647。 求 xx 的后继(后继定义为大于 xx,且最小的数)。若未找到则输出 21474836472147483647。 插入一个数 xx。 输入格式 无
输出格式 无
输入输出样例 输入 #1复制 7 5 1 5 3 5 5 1 3 2 2 3 3 4 3 输出 #1复制 2 3 1 5解题思路:1.想到使用multimet2.熟悉multiset的各个函数功能参考代码: #include<iostream>#include<cmath>#include<algorithm>#include<set>using namespace std;multiset<int>q;int n,t,x,order;int main(){ q.insert( -2147483647); q.insert( 2147483647); scanf(%d,&n); while(n--) { scanf(%d%d,&t,&x); if(t==1) { auto it=q.
[NISACTF2022]ezpie checksec Arch: i386-32-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: PIE enabled OHHH!,give you a gift! 0x56573770 Input: main int __cdecl main(int argc, const char **argv, const char **envp) { setbuf(stdin, 0); setbuf(stdout, 0); puts(OHHH!,give you a gift!); printf(%p\n, main); puts(Input:); vuln(); return 0; } vuln ssize_t vuln() { char buf; // [esp+0h] [ebp-28h] return read(0, &buf, 0x50u); } vuln()有溢出