musl pwn 入门 (1)
近年来,musl libc作为一个轻量级的libc越来越多地出现在CTF pwn题之中,其和glibc相比有一定的差距,因此本文我们就musl libc最常考的考点——内存分配,进行musl libc的源代码审计。
不同于glibc多达四五千行代码,大小超过10w字节的malloc.c,musl libc中的malloc.c大小甚至都不到1w字节,其轻量级的特性也使得我们更加容易去阅读它的代码。
musl libc在内存分配上经历过一次大的改动(1.2.0->1.2.1),本文针对发文时的最新版本1.2.3进行分析。
参考文章:传送门
1. 主要数据结构
malloc_context
struct malloc_context {uint64_t secret;
#ifndef PAGESIZEsize_t pagesize;
#endifint init_done;unsigned mmap_counter;struct meta *free_meta_head;struct meta *avail_meta;size_t avail_meta_count, avail_meta_area_count, meta_alloc_shift;struct meta_area *meta_area_head, *meta_area_tail;unsigned char *avail_meta_areas;struct meta *active[48];size_t usage_by_class[48];uint8_t unmap_seq[32], bounces[32];uint8_t seq;uintptr_t brk;
};
这个结构体是musl libc的堆管理最上层结构,其中字段的含义分别为:
uint64_t secret
:一个随机生成的数,用于检查meta
的合法性,也即一个check guardsize_t pagesize
:页大小,在x86_64下一般为为0x1000int init_done
:判断malloc_context
是否初始化完成,在alloc_meta
函数中进行检查,如果没有则进行初始化,否则跳过初始化流程unsigned mmap_counter
:mmap计数器,通过mmap分配了多少次空间用于内存分配struct meta *free_meta_head
:被释放的meta
结构体构成的链表表头,meta
结构体是musl libc内存分配的低一级结构,后面会提到struct meta *avail_meta
:空闲的meta
结构体构成的链表表头size_t avail_meta_count, avail_meta_area_count, meta_alloc_shift
:size_t avail_meta_count
:空闲meta
的数量size_t avail_meta_area_count
:空闲meta_area
的数量,meta_area
是meta
的控制结构size_t meta_alloc_shift
:<暂缺>
struct meta_area *meta_area_head, *meta_area_tail
:meta_area
链表表头,链表表尾unsigned char *avail_meta_areas
:<暂缺>struct meta *active[48]
:可以继续分配的meta
size_t usage_by_class[48]
:对应大小的缓存的所有meta
的group
所管理的chunk个数uint8_t unmap_seq[32], bounces[32]
:<暂缺>uint8_t seq
:<暂缺>uintptr_t brk
:记录目前的brk(0)
其中有一些字段无法通过简单查看代码得到,需要进一步代码审计获取其含义,我们后面再进行补充。
meta_area
struct meta_area {uint64_t check;struct meta_area *next;int nslots;struct meta slots[];
};
这个结构用于管理一页内的所有meta
结构,属于malloc_context
的下级结构,meta
的上级结构。
uint64_t check
:检查字段,与malloc_context
中的secret
字段对应,检查该meta_area
是否可能被修改struct meta_area *next
:下一个meta_area
的地址,构成链表int nslots
:该meta_area
中管理的meta
数量,一般为固定值struct meta slots[]
:管理的meta
数组
meta
struct meta {struct meta *prev, *next;struct group *mem;volatile int avail_mask, freed_mask;uintptr_t last_idx:5;uintptr_t freeable:1;uintptr_t sizeclass:6;uintptr_t maplen:8*sizeof(uintptr_t)-12;
};
meta
中保存有group
结构体指针,后者直接保存有需要分配的内存块。即meta
和其管理的内存块可能不在同一个page中。
struct meta *prev, *next
:前后meta
,构成双向链表struct group *mem
:管理的group
结构体指针volatile int avail_mask, freed_mask
:掩码的形式,用一个bit表示存在与否uintptr_t last_idx:5
:该meta
中最后一个chunk的索引freeable:1
:该meta
中的chunk是否能够被释放uintptr_t sizeclass:6
:管理的group的大小。如果mem是mmap分配,固定为63uintptr_t maplen:8*sizeof(uintptr_t)-12
:如果管理的group是mmap分配的,则为内存页数,否则为0
group
struct group {struct meta *meta;unsigned char active_idx:5;char pad[UNIT - sizeof(struct meta *) - 1];unsigned char storage[];
};
group
中即保存有需要分配出去的chunk。
struct meta *meta
:所属的meta
的地址unsigned char active_idx:5
:5个比特,表示还有多少可用chunkchar pad[UNIT - sizeof(struct meta *) - 1]
:手动16字节对齐unsigned char storage[]
:要分配出去的内存空间,chunk
以上就是musl libc中主要的数据结构,下面我们通过代码审计彻底搞清楚musl libc的内存分配机制。
2. 代码审计
我们首先从内存分配相关的函数开始看起。对于辅助性的较为复杂的函数使用小标题的形式进行分析,辅助性的较为简单的函数只在第一次出现时直接写到主要函数分析代码中进行简单解释。
malloc(/src/malloc/mallocng/malloc.c line 299
)
void *malloc(size_t n)
{if (size_overflows(n)) return 0;struct meta *g;uint32_t mask, first;int sc;int idx;int ctr;if (n >= MMAP_THRESHOLD) {size_t needed = n + IB + UNIT;void *p = mmap(0, needed, PROT_READ|PROT_WRITE,MAP_PRIVATE|MAP_ANON, -1, 0);if (p==MAP_FAILED) return 0;wrlock();step_seq();g = alloc_meta();if (!g) {unlock();munmap(p, needed);return 0;}g->mem = p;g->mem->meta = g;g->last_idx = 0;g->freeable = 1;g->sizeclass = 63;g->maplen = (needed+4095)/4096;g->avail_mask = g->freed_mask = 0;// use a global counter to cycle offset in// individually-mmapped allocations.ctx.mmap_counter++;idx = 0;goto success;}sc = size_to_class(n);rdlock();g = ctx.active[sc];// use coarse size classes initially when there are not yet// any groups of desired size. this allows counts of 2 or 3// to be allocated at first rather than having to start with// 7 or 5, the min counts for even size classes.if (!g && sc>=4 && sc<32 && sc!=6 && !(sc&1) && !ctx.usage_by_class[sc]) {size_t usage = ctx.usage_by_class[sc|1];// if a new group may be allocated, count it toward// usage in deciding if we can use coarse class.if (!ctx.active[sc|1] || (!ctx.active[sc|1]->avail_mask&& !ctx.active[sc|1]->freed_mask))usage += 3;if (usage <= 12)sc |= 1;g = ctx.active[sc];}for (;;) {mask = g ? g->avail_mask : 0;first = mask&-mask;if (!first) break;if (RDLOCK_IS_EXCLUSIVE || !MT)g->avail_mask = mask-first;else if (a_cas(&g->avail_mask, mask, mask-first)!=mask)continue;idx = a_ctz_32(first);goto success;}upgradelock();idx = alloc_slot(sc, n);if (idx < 0) {unlock();return 0;}g = ctx.active[sc];success:ctr = ctx.mmap_counter;unlock();return enframe(g, idx, n, ctr);
}
其中MMAP_THRESHOLD
等于131052。第一个判断如果为真,说明要分配一块很大的内存。首先计算一共需要的内存大小,这里IB
等于4、UNIT
等于16。然后使用mmap
函数分配一块内存。如果分配成功,上读写锁。后面使用alloc_meta
分配一个meta
给这块大空间,之后设置这个meta
的一些基本信息。
从这个if语句我们可以知道,如果一次内存申请的大小过大,musl libc会为这块空间专门分配一个meta和group,这个meta和group只管理这一个空间。
如果申请的空间较小,则进入下面的代码。
sc = size_to_class(n);
这条语句是为了计算这个大小的chunk应该被分到哪一个class。
在musl中定义有如下内容:
// /src/malloc/mallocng/malloc.c, line 12
const uint16_t size_classes[] = {1, 2, 3, 4, 5, 6, 7, 8,9, 10, 12, 15,18, 20, 25, 31,36, 42, 50, 63,72, 84, 102, 127,146, 170, 204, 255,292, 340, 409, 511,584, 682, 818, 1023,1169, 1364, 1637, 2047,2340, 2730, 3276, 4095,4680, 5460, 6552, 8191,
};
size_to_class
的代码如下:
static inline int size_to_class(size_t n)
{n = (n+IB-1)>>4;if (n<10) return n;n++;int i = (28-a_clz_32(n))*4 + 8;if (n>size_classes[i+1]) i+=2;if (n>size_classes[i]) i++;return i;
}
其中经过试验可知a_clz_32
这个函数返回的是n的最高位是32位中的倒数第几高位(最高位为0)。如a_clz_32(1)=31
,a_clz_32(2)=30
,a_clz_32(4)=29
,以此类推。由此我们可以计算出不同大小的chunk对应于哪一个索引。这个部分实际上是将chunk的大小按照数组来进行分组,数组的每一项表示这一组中chunk右移4位的值不能超过多少。如索引为10的数组元素值为12,前面一个元素为10,则第10组chunk的大小范围应该在0x100-0x11F之间。同理,第11组chunk的大小范围为0x120-0x14F。
紧接着,上读写锁。后面g = ctx.active[sc];
中的ctx
指的是全局__malloc_context
,其active
数组长度与size_classes
的相同,均为48。由此可见,malloc_context将meta以管理的chunk大小进行分组,分组依据size_classes
进行。
再往下的一个if语句有很多的判断条件,在某些条件成立时会修改meta
指针的值,对整体影响不大,先向下看。
下面是一个循环。first = mask&-mask;
是取mask
的最低1位,即lowbit,这里的avail_mask
实际就是选中的meta
所管理的group
中chunk的可用位,这里是通过可用位来查找第一个可用的chunk。内部的if-else语句是针对读写锁进行的检查,无需关注。如果在这里能够找到可用的chunk,则将chunk的索引保存到idx
变量中。
如果在这个循环中没有找到合适的idx
,则在循环外调用alloc_slot
函数:
static int alloc_slot(int sc, size_t req)
{uint32_t first = try_avail(&ctx.active[sc]);if (first) return a_ctz_32(first);struct meta *g = alloc_group(sc, req);if (!g) return -1;g->avail_mask--;queue(&ctx.active[sc], g);return 0;
}
其中try_avail
函数尝试从该大小的meta
中分配出一个可用的chunk并返回索引,如果该可用chunk不是由位于链首的meta
所提供,则会将这个chunk所在的meta移动至链首。如果尝试分配成功,则这里直接返回。否则,后面调用alloc_group
函数创建一个新的meta
,创建成功后将其中的第一个chunk的索引(即0)返回,并将该meta
放在链首。不论如何,最终只要能够执行到标号success
,就一定能够获取到idx
的值。
最后返回调用了enframe
函数:
static inline void *enframe(struct meta *g, int idx, size_t n, int ctr)
{size_t stride = get_stride(g);size_t slack = (stride-IB-n)/UNIT;unsigned char *p = g->mem->storage + stride*idx;unsigned char *end = p+stride-IB;// cycle offset within slot to increase interval to address// reuse, facilitate trapping double-free.int off = (p[-3] ? *(uint16_t *)(p-2) + 1 : ctr) & 255;assert(!p[-4]);if (off > slack) {size_t m = slack;m |= m>>1; m |= m>>2; m |= m>>4;off &= m;if (off > slack) off -= slack+1;assert(off <= slack);}if (off) {// store offset in unused header at offset zero// if enframing at non-zero offset.*(uint16_t *)(p-2) = off;p[-3] = 7<<5;p += UNIT*off;// for nonzero offset there is no permanent check// byte, so make one.p[-4] = 0;}*(uint16_t *)(p-2) = (size_t)(p-g->mem->storage)/UNIT;p[-3] = idx;set_size(p, end, n);return p;
}
这个函数的主要作用是从指定meta
中取出指定索引的chunk
。
try_avail(/src/malloc/mallocng/malloc.c, line 114
)
static uint32_t try_avail(struct meta **pm)
{struct meta *m = *pm;uint32_t first;if (!m) return 0;uint32_t mask = m->avail_mask;if (!mask) {if (!m) return 0;if (!m->freed_mask) {dequeue(pm, m);m = *pm;if (!m) return 0;} else {m = m->next;*pm = m;}mask = m->freed_mask;// skip fully-free group unless it's the only one// or it's a permanently non-freeable groupif (mask == (2u<<m->last_idx)-1 && m->freeable) {m = m->next;*pm = m;mask = m->freed_mask;}// activate more slots in a not-fully-active group// if needed, but only as a last resort. prefer using// any other group with free slots. this avoids// touching & dirtying as-yet-unused pages.if (!(mask & ((2u<<m->mem->active_idx)-1))) {if (m->next != m) {m = m->next;*pm = m;} else {int cnt = m->mem->active_idx + 2;int size = size_classes[m->sizeclass]*UNIT;int span = UNIT + size*cnt;// activate up to next 4k boundarywhile ((span^(span+size-1)) < 4096) {cnt++;span += size;}if (cnt > m->last_idx+1)cnt = m->last_idx+1;m->mem->active_idx = cnt-1;}}mask = activate_group(m);assert(mask);decay_bounces(m->sizeclass);}first = mask&-mask;m->avail_mask = mask-first;return first;
}
经过查找,这个函数只在alloc_slot
这一处被调用,参数填的是一个meta
链表的链首地址指针。
这个函数的参数是meta
的二重指针,首先解引用一层获取到meta
指针,如果这个meta
指针无效,则返回0。
如果该meta
存在,则取出其avail_mask
。如果这个值为0,说明这个meta
中已经没有可以用来分配的chunk了。这就进入到大if语句体内:
free_mask
与avail_mask
相同,以比特位标识,每一个比特位表示一个chunk是否被释放。如被释放则比特值为1。如果free_mask
为0,而此时avail_mask
也为1,说明这个meta
中既不能分配chunk
,也没有已经释放的chunk
,这种情况下应该将这个meta
从链表中移除,即调用dequeue
函数脱链。脱链之后pm
应该指向新的链首meta
指针。如果链表中没有其他meta
,就返回0。如果free_mask
不为0,则找到下一个meta
,并将链首修改为这个meta
。
之后检查新链首meta
中的chunk是否全部被释放且该meta
不是不可释放的。这里的mask == (2u<<m->last_idx)-1
就是在判断free_mask
的所有有效的比特是不是全为1,如果是则跳过该chunk并再次修改链首的meta
为下一个meta
。
下面是if (!(mask & ((2u<<m->mem->active_idx)-1)))
,mask
是释放chunk的掩码,后面是全1的掩码,如果两者相与等于0,说明这个meta
中没有chunk被释放。这个if语句是想要尽可能地使用已经有chunk被释放的meta
而尽可能保留全部chunk都可以使用的meta
,这样做的目的是减少脏页面的产生。内部判断如果这个meta
不是仅有的一个meta
,则使用下一个meta
,否则没办法就只能使用这个“干净的”meta
,else中所做的是在group
中选择一个可以使用的chunk并设置相应控制位。
循环外面,是设置meta
的avail_mask
位,并返回将要分配出去的chunk索引。
free(/src/malloc/mallocng/free.c, line 101
)
void free(void *p)
{if (!p) return;struct meta *g = get_meta(p);int idx = get_slot_index(p);size_t stride = get_stride(g);unsigned char *start = g->mem->storage + stride*idx;unsigned char *end = start + stride - IB;get_nominal_size(p, end);uint32_t self = 1u<<idx, all = (2u<<g->last_idx)-1;((unsigned char *)p)[-3] = 255;// invalidate offset to group header, and cycle offset of// used region within slot if current offset is zero.*(uint16_t *)((char *)p-2) = 0;// release any whole pages contained in the slot to be freed// unless it's a single-slot group that will be unmapped.if (((uintptr_t)(start-1) ^ (uintptr_t)end) >= 2*PGSZ && g->last_idx) {unsigned char *base = start + (-(uintptr_t)start & (PGSZ-1));size_t len = (end-base) & -PGSZ;if (len) {int e = errno;madvise(base, len, MADV_FREE);errno = e;}}// atomic free without locking if this is neither first or last slotfor (;;) {uint32_t freed = g->freed_mask;uint32_t avail = g->avail_mask;uint32_t mask = freed | avail;assert(!(mask&self));if (!freed || mask+self==all) break;if (!MT)g->freed_mask = freed+self;else if (a_cas(&g->freed_mask, freed, freed+self)!=freed)continue;return;}wrlock();struct mapinfo mi = nontrivial_free(g, idx);unlock();if (mi.len) {int e = errno;munmap(mi.base, mi.len);errno = e;}
}
free用于释放chunk,首先需要找到该chunk所在的meta。这个功能是如何实现的呢?
每一个chunk的前面都保存着这个chunk在group
中的索引,通过get_slot_index
函数我们就可以知道:
static inline int get_slot_index(const unsigned char *p)
{return p[-3] & 31;
}
可见索引值保存在索引为-3的位置。
对于索引值不为0的chunk,其还有一个offset
保存在索引为-2的位置,它记录了当前chunk与第一个chunk首部的偏移量(右移4位的结果),因此通过这个值我们可以计算出该chunk所在group
的首地址,由group
中保存的meta
地址找到meta
。在get_meta
函数中,找到meta
后又找到了该meta
所在的meta_area
并进行了多项检查,防止group
被伪造,如果我们想要通过伪造group来进行漏洞利用,就需要特别注意这里,这个我们以后再说。
// /src/malloc/mallocng/meta.h, line 129
static inline struct meta *get_meta(const unsigned char *p)
{assert(!((uintptr_t)p & 15));int offset = *(const uint16_t *)(p - 2);int index = get_slot_index(p);if (p[-4]) {assert(!offset);offset = *(uint32_t *)(p - 8);assert(offset > 0xffff);}const struct group *base = (const void *)(p - UNIT*offset - UNIT);const struct meta *meta = base->meta;assert(meta->mem == base);assert(index <= meta->last_idx);assert(!(meta->avail_mask & (1u<<index)));assert(!(meta->freed_mask & (1u<<index)));const struct meta_area *area = (void *)((uintptr_t)meta & -4096);assert(area->check == ctx.secret);if (meta->sizeclass < 48) {assert(offset >= size_classes[meta->sizeclass]*index);assert(offset < size_classes[meta->sizeclass]*(index+1));} else {assert(meta->sizeclass == 63);}if (meta->maplen) {assert(offset <= meta->maplen*4096UL/UNIT - 1);}return (struct meta *)meta;
}
anyway,拿到了meta
地址之后,通过get_stride
函数获取到其中保存的chunk的大小。
后面定义了一系列的变量,看到第一个if语句:if (((uintptr_t)(start-1) ^ (uintptr_t)end) >= 2*PGSZ && g->last_idx)
。前面一个判断条件是判断这个chunk的大小是否大于2页(PGSZ
就是一页的大小),后面的则是判断这个chunk是否是由malloc
通过mmap
分配出来的。记得在分析malloc
时提到当分配的chunk过大时会使用mmap
直接分配且last_idx
的值会被设置为0。这个if语句的主要目的是在释放一个较大的chunk时,将该chunk内含的一些页在内核层面上释放,这通过madvice
系统调用来实现。
往后是一个循环。如果该chunk所在的meta
的free_mask
为0(表示当前的chunk是该meta
中唯一一个释放的chunk)或该chunk释放后该meta
中所有chunk都被释放,则跳出循环。否则修改free_mask
位后返回。这里面的if-else语句不用管,因为涉及锁的问题,一般Linux系统都会加锁,因此else基本不会执行到。
如果释放的chunk既不是第一个,也不是最后一个,则会执行循环后面的代码。后面的调用nontrivial_free
是关键操作,也是我们利用的突破点。
nontrivial_free(/src/malloc/mallocng/free.c, line 72
)
static struct mapinfo nontrivial_free(struct meta *g, int i)
{uint32_t self = 1u<<i;int sc = g->sizeclass;uint32_t mask = g->freed_mask | g->avail_mask;if (mask+self == (2u<<g->last_idx)-1 && okay_to_free(g)) {// any multi-slot group is necessarily on an active list// here, but single-slot groups might or might not be.if (g->next) {assert(sc < 48);int activate_new = (ctx.active[sc]==g);dequeue(&ctx.active[sc], g);if (activate_new && ctx.active[sc])activate_group(ctx.active[sc]);}return free_group(g);} else if (!mask) {assert(sc < 48);// might still be active if there were no allocations// after last available slot was taken.if (ctx.active[sc] != g) {queue(&ctx.active[sc], g);}}a_or(&g->freed_mask, self);return (struct mapinfo){ 0 };
}
大多数的chunk释放请求都会执行到这个函数,第一个参数是meta
,第二个是该meta
内需要释放的chunk的索引。
mask
是free_mask
和avail_mask
相或的结果,二者都是比特位标识的控制位。第一个判断if (mask+self == (2u<<g->last_idx)-1 && okay_to_free(g))
中第一个条件指的是该meta
中所有chunk是否都处于被使用或被释放的状态,第二个条件通过一个函数判断这个chunk是否可以释放,一般都为真。进入if语句体中判断该meta
是否有下一个meta
,如果有,将当前meta
出链表,且如果该meta
在出链表之前是链首且此时该链表中还有meta
,则激活链首的meta
。这里的激活(activate_group
)是修改了avail_mask
值,函数内强制要求该meta
在修改前的avail_mask
为0。然后调用free_group
并返回。
如果进入了else语句体,说明mask=0
,即free_mask
和avail_mask
均为0,该meta
中所有chunk均正在被使用。如果该meta
不是链首,则将该meta
链入链表。最后更新free_mask
并返回。
至此,有关于musl内存分配与释放的相关函数已经基本分析完毕,下一篇文章将重点介绍musl libc的利用方式。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.exyb.cn/news/show-4504577.html
如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!
服务器系统日志怎么拷贝,Windows系统如何将日志发给日志审计服务器?
您好,请知:使用Nxlog将Windows日志以syslog形式发送至日志Syslog服务器nxlog下载地址:https://download.csdn.net/download/c1052981766/10299741下载之后进行安装;查看服务:修改配置文件:C:\Program Files (x86)\nxlog\conf\nxlog.conf## Th…...

ModuleNotFoundError: No module named ‘rospkg‘(手动下载)
参考:Python pip 安装与使用 | 菜鸟教程 问题:ModuleNotFoundError: No module named rospkg 解决: 1. ubuntu 先安装pip: curl https://bootstrap.pypa.io/pip/2.7/get-pip.py -o get-pip.py # 下载安装脚本 sudo pytho…...

Oracle如何查看表空间的大小及使用情况
Oracle如何查看表空间的大小及使用情况 注意存在表空间不存在于dba_free_space 中(可能是因为表空间过大已爆掉) –1、查看表空间的名称及大小 SELECT t.tablespace_name, round(SUM(bytes / (1024 * 1024)), 0) ts_size FROM dba_tablespaces t, dba_…...

C# 源码反码补码换算
网上找的资源,可直接运行,给大家分享一下 链接:https://pan.baidu.com/s/1TZyHXsATHdN36lYxZ4Fgvw 提取码:s2q0...

oracle查询undo表空间使用率,检查Undo表空间使用情况
######脚本###########SELECT TABLESPACE_NAME, ROUND ( (USED / TOTAL_SIZE) * 100, 2) USED_RATEFROM (SELECT A.TABLESPACE_NAME, TOTAL_SIZE, USEDFROM ( SELECT TABLESPACE_NAME,ROUND (SUM (BYTES) / 1024 / 1024 / 1024, 2) TOTAL_SIZEFROM DBA_DATA_FILESWHERE 1 1 A…...

如何去除图片背景变透明?透明背景图片怎么做?
如何去除图片背景变透明?使用压缩图的图片去底色功能在线一键去背景,轻松完成图片转化透明底,用起来也简单,一起来看看具体步骤吧。 1、打开压缩图选择图片去底色功能。 2、上传图片,设置参数后开始处理。 3、处理…...

回撤率 python_求问怎么用python求夏普比率和最大回撤率呢
作者:知乎用户 链接:https://www.zhihu.com/question/27264526/answer/147672695 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 同一个资产,不同周期频率收益率,算出来…...

在服务器上搭建个人网盘
本篇通过 filebrowser 在服务器上搭建个人网盘。 首先,在终端运行以下代码: curl -fsSL https://raw.githubusercontent.com/filebrowser/get/master/get.sh | bash进行网盘系统安装。 其次,进入你需要建立网盘的目录,运行 fil…...

RocketMQ消息短暂而又精彩的一生
核心概念 NameServer:可以理解为是一个注册中心,主要是用来保存topic路由信息,管理Broker。在NameServer的集群中,NameServer与NameServer之间是没有任何通信的。Broker:核心的一个角色,主要是用来保存消息…...

MATLAB plot 画折线图的常用命令总结
MATLAB plot 画折线图的常用命令总结 目录MATLAB plot 画折线图的常用命令总结写在前面的话1 plot的数据内容1.1 希望画的数据1.2 折线图的点(空心实心)、颜色、线条2 x、y坐标轴的显示设置2.1 x、y坐标轴的显示范围2.2 横坐标标注从 横向 变为 竖向2.3 …...

URL解码
URL解码 decodeURI() 函数可对 encodeURI() 函数编码过的 URI 进行解码。 url decodeURI(url); url decodeURIComponent(url); 摘要: 本文章就是介绍两个解码的函数,他们就是decodeURI()和decodeURIComponent()函数,这两个函数可以对特…...

前端css高频使用的属性总结
1,link和import的区别 link属于html标签,而import是css中提供的 从范围,加载,兼容以及js控制来看 两者都是外部引用css的方式,它们的区别如下: link是XHTML标签,除了加载CSS之外,还…...

【验证码输出】利用时间戳实现永远不重复的刷新
package web.response;import javax.imageio.ImageIO; import javax.servlet.*; import javax.servlet.http.*; import javax.servlet.annotation.*; import java.awt.*; import java.awt.image.BufferedImage; import java.io.IOException; import java.util.Random;WebServl...

查看oracle已使用表空间,查看Oracle的表空间的使用情况
1. 查看所有表空间大小 SQLgt; select tablespace_name,sum(bytes)/1024/1024 from dba_data_files 2 group by tablespace_na1. 查看所有表空间大小SQL> select tablespace_name,sum(bytes)/1024/1024 from dba_data_files2 group by tablespace_name;2. 查看空闲的表空间大…...

jquery html解码字符串,jquery如何编码和解码url?
jquery如何编码和解码url?下面本篇文章给大家介绍一下用jquery编码和解码url的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。在jQuery中,我们可以使用以下方法实现URL的编码和解码:encodeURI…...

【Python】基金/股票 最大回撤率计算与绘图详解(附源码和数据)
如果你想找的是求最大回撤的算法,请跳转:[Python] 使用动态规划求解最大回撤详解 【Python】基金/股票 最大回撤率计算与绘图详解(附源码和数据)0. 起因1. 大成沪深300指数A 519300 最大回撤率分析0. 基金走势图 2007 - 20201. 以…...

hive中将文本拆分为键值对str_to_map()
str_to_map(字符串参数, 分隔符1, 分隔符2) 分隔符1将文本分成K-V对,分隔符2分割每个K-V对。对于分隔符1默认分隔符是 ,,对于分隔符2默认分隔符是 。 举例 user_idtag_value1622021-11-282922021-11-28#932021-11-293982001-1-17 select user_id,str_…...

springboot+vue人事管理系统(免费分享)
源码配套论文获取,文章底部,回复001 绪论 项目开发背景 随着经济改革开放的发展,企业之间的竞争也越来越激烈,在这样的大环境下,企业要想立于不败之地,不仅要有好的商品,更要有一支强有力的…...

基于opencv计算机视觉开发环境搭建
1 下载的安装包 2 源码目录 1 环境搭建配置参考 文献VS2019OpenCV安装与配置教程_Creama_的博客-CSDN博客_opencv安装教程vs2019 2 代码实现 3 遇到的问题 解决方法,复制dll文件到该目录下 4 运行效果...

图论综合练习
还是整了一版这一周大致刷的题目,稍有些水了 Contest Balloons CodeForces - 725D 题意: 给一堆队伍,然后每个队伍有气球数和重量数,如果气球数大于重量数,这个队就会起飞(被淘汰)࿰…...

【前端指南】Promise从入门到自定义
文章目录Promise理解Promise的状态改变Promise对象的值Promise基本使用Promise的基本流程为什么要使用Promise指定回调函数的方式更加灵活支持链式调用,可以解决回调地狱问题解决方案?如何使用PromiseAPIPromise的几个关键问题自定义Promise定义整体结构async与awaitasync函数…...

Redis(四) - Redis的Java客户端
文章目录一、Redis的Java客户端二、Jedis客户端1. 快速入门(1)引入依赖(2)创建jedis对象,建立连接(3)测试,方法名与Redis命令一致(4)释放资源2. Jedis连接池三…...

用openMVS自带InterfaceCOLMAP接口生成openMVS需要的位姿文件.mvs
vincentvincent-X556UQK: vincentvincent-X556UQK:~/Desktop/code/MVS/openMVS_build/bin$ ./InterfaceCOLMAP -i /home/vincent/test/pipes/sparse -o /home/vincent/test/pipes/scene.mvs --image-folder /home/vincent/test/images 首先进入openMVS_build下的bin目录&…...

oracle空间查询
表空间使用情况: SELECT UPPER(F.TABLESPACE_NAME) "表空间名",D.TOT_GROOTTE_MB "表空间大小(M)",D.TOT_GROOTTE_MB - F.TOTAL_BYTES "已使用空间(M)",TO_CHAR(ROUND((D.TOT_GROOTTE_MB - F.TOTAL_BYTES) / D.TOT_GROOTTE_MB * 100,…...

【redis客户端登录】
远程登录客户端正确方式 不用要 redis-cli -h 192.168.37.80 -p 6379 -a 123456 这样会提示不安全 redis-cli -h 192.168.37.80 -p 6379auth 123456...

Netty Epoll API 支持 ARM aarch64 架构
Netty 4.1.50.Final 提供了对 ARM aarch64 结构的 Epoll API 支持。 我们在使用 Netty 的过程中,可能会使用 netty-transport-native-epoll 提高部署在 Linux 服务器的性能。 <dependency><groupId>io.netty</groupId><artifactId>netty-t…...

BFS?DFS?想都想疯了
大家好,我是你们的大白,一位小学森萌新; 我要崩溃了!! 用dfs不行,bfs,又不知咋写,啊------ 先看题吧 题目描述 在一个被分割为N*M个正方形房间的矩形魔鬼之城中,一个探险者必须…...

ISCC 2022 部分
目录web冬奥会popfindme爱国敬业好青年-2Easy-SQL让我康康!这是一道代码审计题MISC隐秘的信息真相只有一个单板小将苏翊鸣藏在星空中的诗-1藏在星空中的诗-22022冬奥会降维打击REVERSEGetTheTableBobs Codeweb 冬奥会 <?phpshow_source(__FILE__);$Step1False…...

PatchCore原理与代码解读
paper:Towards Total Recall in Industrial Anomaly Detection code:GitHub - amazon-science/patchcore-inspection 存在的问题 目前无监督缺陷检测常用的一种方法是直接利用在ImageNet上预训练的模型中的表示,而不专门进行目标分布的迁…...

达梦数据库,查看表空间使用情况
1使用DM管理工具进行查询 在有图形化界面的情况下,我们可以右键点击表空间名,查看属性。 即可看到表空间的总大小以及当前使用情况: 2使用SQL语句进行查询 如果想用SQL语句查询表空间的可用空间,我们需要用到视图dba_data_files…...

Docker基础之 ImageStore初始化
ImageStore,根据所有layer来构建image,维护所有image的元数据。 ImageStore 创建一个type fs struct对象 ifs根据StoreBackend ifs和 layerStore来创建一个imageStore // /var/lib/docker/image/${graphDriverName}/imagedb 这个目录是用来记录镜像元数…...

python读取运动捕捉的.trc格式文件 2021-11-11
1、安装支持包 1、参考链接 https://pypi.org/project/trc-data-reader/#files 2、安装包的安装方式 pip install trc-data-reader(我没成功)下载压缩包【我的放置路径 C:\Python39\Lib\site-packages\trc-data-reader-0.1.4.tar.gz】 采用本地安装的方…...

AI中Deepfake的部分研究前沿与文献综述
AI中Deepfake的部分研究前沿与文献综述一、研究现状二、典型算法:三、存在问题四、未来的研究热点参考文献:一、研究现状 由于Deepfake其潜在的安全威胁,它已经引起了学术界和工业界的研究兴趣。为了减轻这种风险,人们提出了许多…...

高斯勒让德(Gauss-legendre)求解多重积分(python,数值积分)
第四十四篇 高斯勒让德求解多重积分 多重积分 在工程分析中,经常需要在一个面积或体积上对函数进行积分。多重积分的解析方法在有限的情况下是可能的,但在这一篇中使用数值积分去求解。一维的函数积分详见重复牛顿-科特斯积分,重复高斯勒让…...

yarn 安装
安装yarn之前先安装node.js 1、安装node.js node.js官网下载地址:http://nodejs.cn/download/ 下载后一直下一步安装即可。 安装完成后,node.js的环境变量会自动添加,命令行输入path查看: node -v 命令查看其版本号ÿ…...

iscc——海市蜃楼
题目描述: 或许你看到的只是海市蜃楼…下载附件,是个docx文档,看到了压缩包文件头PK 分离文件,得到一个压缩包,解压后发现一堆文件夹,直接搜索flag ,找到一个文件,用excel打开,直接得…...

Keras与Tensorflow2.0入门(7)层与自定义层
文章目录0.前言1. 层1.1 python语法背景知识1.2 全连接层(Dense)1.3 卷积层(CNN)1.4 循环层(RNN)1.4.1 SimpleRNN1.4.2 GRU1.4.2 LSTM1.5 小结2. 自定义层2.1 MyDense层2.2 MyRNN层2.3 多输入,多…...

最大回撤算法代码实现
一、问题概述 做基金数据分析时,最大回测是一个很重要的参考指标。他有别于一个区间内的最大值和最小值,这是一个阶段性的统计数据,这个数据可以衡量一个基金经理对风险的把控程度。 二、简单粗暴的方法 算法实现有很多,简单粗…...

Java高级:条件队列与同步器Synchronizer的原理+AQS的应用
Java类库提供了丰富的类库来实现同步机制,但如果没有你需求的功能,那么可以通过JDK底层机制来构造自己的同步机制,包括内置的条件队列、显式的 Condition 对象以及AbstractQueuedSynchronizer 框架,实现状态依赖性的各种选择,以及在使用平台提供的状态依赖性机制如何遵守各…...

svn 服务器日志位置,svn服务器查看日志
svn服务器查看日志 内容精选换一换使用自定义脚本实现应用一致性备份完成后,可以通过如下操作验证应用一致性备份结果是否成功。本章节以SQL_SERVER数据库为例进行验证。本小节主要介绍态势感知与其他云服务之间的关系。态势感知从企业主机安全(Host Security Servi…...

JavaScript中countinue和break的区别
Continue: continue用于跳过循环中的一个迭代,并继续执行循环中的下一个迭代。 continue 与break语句的区别是,break是结束整个循环体,continue是结束单次循环。但是,在执行continue语句时,表现出了两种不同类型的循环: 在whil…...

Python HTML编码解码
>>> import HTMLParser>>> h HTMLParser.HTMLParser()>>> h.unescape("")u\u59d3\u540d\uff1a>>> s h.unescape("")>>> print s姓名:>>>...

Html编码(#数字型)解码
template<typename IN_TYPE>// IN_TYPE : std::string 或 std::wstring std::wstring decodeHtml(const IN_TYPE &s) {std::wstring sRet;std::wstring tmp;bool b1 false;bool b2 false;int nLen s.size();for (int i 0; i < nLen; i){wchar_t c s[i];if (!...

h264js解码直播解码显示
h264 解码前端显示 下载该前端代码 h264 分为几种,一种为baseline,一种为main,一种为pro 这里前端使用js解码的库只能支持baseline方式,因此必须在摄像头里面如海康或者大华的编码设置h264成为baseline模式才能正确解码。 1、准…...

查看oracle空间使用情况,Oracle 查看数据库空间使用情况
1、查看Oracle所有表空间大小 select tablespace_name,sum(bytes)/1024/1024 from dba_data_files group by tablespace_name; 2、1、查看Oracle所有表空间大小select tablespace_name,sum(bytes)/1024/1024 from dba_data_files group by tablespace_name;2、Oracle未使用的表…...

001 手把手用Git,Git从入门到上传本地项目到Github,看这篇就够了
安装git 下载Git 下载好后,一路next即可 安装好后,打开Git bash,进行配置 首先配置自己的身份 git config --global user.name "Name" git config --global user.email "name@gmail.com" 检查是否配置成功: git config --global user.name git confi…...

oracle表空间使用情况查看
select b.file_id 文件ID号, b.tablespace_name 表空间名, b.bytes/1024/1024||M字节数, (b.bytes-sum(nvl(a.bytes,0)))/1024/1024||M 已使用, sum(nvl(a.bytes,0))/1024/1024||M 剩余空间, 100 - sum(nvl(a.bytes,0))/(b.bytes)*100 占用百分比 from dba_free_space a…...

华为设备推送syslog到日志服务器配置
方法步骤:推送交换机syslog到日志服务器;其他设备类似操作; 配置交换机日志推送到日志主机: eg:日志主机IP地址:10.10.10.1system-viewinfo-center channel 6 name loghost(名称随意࿰…...

从汇编的角度了解C++原理——类的储存结构和函数调用
本文用到的反汇编工具是objconv,使用方法可以看我另一篇文章https://blog.csdn.net/weixin_45001971/article/details/128660642。 1、类的储存结构和函数调用 以这段代码为例。 编译后对obj文件反汇编,得到以下汇编代码,配合常量的值来分…...

计算机网络 王道考研2021 第三章:数据链路层 -- PPP协议 HDLC协议(这2个协议常用于广域网当中)
1. PPP协议 & HDLC协议 1.1 广域网 1.2 PPP协议的特点 1.2 PPP协议应满足的要求 1.3 PPP协议无需满足的要求 纠错流量控制序号不支持多点线路 1.4 PPP协议的三个组成部分 1.5 PPP协议的状态图 1.6 PPP协议的帧格式 1.7 HDLC协议 1.8 HDLC的站 和 数据操作方式 站ÿ…...

ISCC
ISCC客服冲冲冲 这里肯定是写一个脚本去自动化点击左边那个按钮,我本来想不会,百度一下发现还是很简单的一串js,果然还是要去学习脚本语言 console里添加 setInterval(function(){document.getElementById("按钮id").click();},1)…...

windows11 数字键无法使用 修复办法 已解决
长按Num Lock键 该方法包括:只需按下Num Lock键为5秒,它应该帮助解决问题。您需要做的就是先按一次Num Lock键将其关闭。现在,再次按下Num Lock键并保持5 秒。只要5秒已经结束,您将听到蜂鸣声,这是你应该释放的关键时…...
最大回撤率 和 移动数组零元素到末尾
最大回撤率 将数组中零元素移动到末尾,要求算法时间复杂度为O(n),空间复杂度为O(1) 最大回撤率: 在选定周期内任一历史时点往后推,产品净值走到最低点时的收益率回撤幅度的最大值。最大回撤率用来描述买入产品后可能出现的最糟糕情…...

l深入JavaScript高级语法-coderwhy
## download:深入JavaScript高级语法-coderwhy java数据库衔接(JDBC)由一组用 Java 编程言语编写的类和接口组成。JDBC 为工具/数据库开发人员提供了一个规范的 API,使他们可以用纯Java API 来编写数据库应用程序。但是各个开发商的接口并不…...

html base64在线解码,HTML5原生支持Base64编码解码
该方法仅支持IE10、chrome、等现代浏览器。适合用于原生支持的(function(){var Base64 {encode : function(str){return window.btoa(unescape(encodeURIComponent(str)));},decode : function(str){return decodeURIComponent(escape(window.atob(str)));}};window.BASE64 B…...

查看表空间大小和使用率,增加表空间大小的四种方法
** 查看表空间大小和使用率** 查看当前用户使用的表空间情况,使用命令select * from user_users即可,其中username标识用户名,default_tablespace表示默认的表空间。如果我们想查看表空间的使用情况,比如表空间利用率等指标&…...

Andorid中对HTML格式数据进行解码
WebView是Android开发中常用的组件之一,用来加载网页数据,可以直接传入URL,也可以传入Html格式字符等。并且我们可以通过WebView中相关方法对加载的内容进行处理,如js交互,获取加载的网页链接地址信息等。今天在开发中…...

【vue】vuex常见面试题
【vue】vuex常见面试题 文章目录【vue】vuex常见面试题一、vuex简介对vuex的理解各模块在流程中的功能:Vuex实例应用二、常见面试题1.Vuex 为什么要分模块并且加命名空间2.Vuex和单纯的全局对象有什么区别?3.为什么 Vuex 的 mutation 中不能做异步操作&a…...

附录A:SDC
文章目录A.1 基本命令(Basic Commands)A.2 对象访问命令(Object Access Commands)A.3 时序约束(Timing Constraints)A.4 环境命令(Environment Commands)A.5 多电压命令(Multi-Voltage Commands)本附录将介绍1.7版本的SDC(SynopsysDesignConstraints)SDC(Synopsys\ Design\ Con…...

uniapp 解析后端返回的 html
需求 由于6.18活动到期,需要修改文案信息,这就得前后端都得再跑一遍流程。为了减少人员使用,所以将前端静态界面,全部给后端,然后将后端返回的数据,前端通过特定格式来解析。这样,以后单纯文案…...

计算机病毒 重启6,电脑病毒删了重启后又有了
故障、速度、木马、系统漏洞、病毒等综合性影响,常规解决办法:1、解决杂乱文件影响(减少电脑负担)。清理杂乱文件有三个方法,第一是点网页上的“工具”,点“Internet选项(0)”,在新页面分别点“删除Cookies(I)”“删除…...

防止黑客入侵:DLL后门完全清除方法(转)
前言 后门!相信这个词语对您来说一定不会陌生,它的危害不然而欲,但随着人们的安全意识逐步增强,又加上杀毒软件的"大力支持",使传统的后门无法在隐藏自己,任何稍微有点计算机知识的人,都知道…...

质心标准差和分散程度
( A, B )---1*30*2---( 1, 0 )( 0, 1 ) 让网络的输入只有1个节点,AB各由9张二值化的图片组成,在前述的实验中得到了A全是0,B中有3个1的迭代次数数据。 0 1 2 3 4 5 6 7 8 迭代次数 A-B 1b 1b 1b 0 0 0 0 0 0 54269.648 …...

Jetson Nano 卡在开机的nvidia界面,无法开机
现象:长时间没有使用国Jetson Nano后,无法开机,一直卡在Nvidia的界面 原因:tf卡的问题 解决措施:将tf卡取下,多次插拔,如果还是不能解决的话,擦拭一下tf卡和卡槽,有可能…...

Jetson Nano/NX系统拷贝
TF卡系统拷贝系统卡准备新卡拷贝镜像系统卡准备 TF卡镜像拷贝节省了新设备反复安装配置环境的时间,依据配置好的TF卡,直接进行完整的系统,文件配置。 将准备好的系统卡装载到Linux系统下,本文导入虚拟机中(ubuntu20.…...

Jetson 系列——jetson nano Ubuntu18.04修改用户名和密码
如果是jetson nano,你刚开始的时候可能没有root用户,因此需要设置一下root用户和密码 1.设置root用户和密码 首先用快捷键crtlaltT 打开终端,显示的是用户名电脑名:~$,符号$就表示现在处于普通用户权限。 然后输入&…...

Jetson nano开机自启动程序
目录前言1.介绍2.创建开机自启动程序2.1 创建一个bash文件2.2 创建一个service文件2.3 添加权限2.4 移动service文件2.5 启动服务2.6 停止/重启服务2.7 取消开机自启动服务结语参考前言 最近有个需求,需要在jetson nano开机自启动一个应用程序,最近看了几…...

nvidia jetson nano 操作指南
硬件购买以及注意点 购买硬件之后在网卡后面有个短路帽要加上,否则无法开机。 系统安装 nvidia jetson nano系统安装在SD卡中,请预先准备一个32G的SD卡 系统安装步骤请参考官网 Getting Started With Jetson Nano Developer Kit | NVIDIA Developer …...

编程穿衣法
搭配好7套服饰,按周一到周日的顺序挂起来。每天对照日期进行依次穿着即可。 目的是为了解决每天纠结穿什么好,怎么搭配好的问题,大幅提高了穿衣效率,省下宝贵的时间用于写代码。...

穿衣风格搭配
衣服的风格: 大小 动静 直曲 如果你穿小号的衣服显得穿小孩的衣服那么就不合适。如果你穿大号的衣服显得不合身 小亮感适合小而精致的装饰 大亮感适合大装饰 小亮感偏静的人适合样式较为传统样式的衣服, 偏动的人适合较为夸张款式 皮肤颜色偏淡的…...

怎么像刘亦菲一样穿衣搭配打扮?玩转多彩风格变换 ?
穿衣的密秘是一本厚厚的书,时时刻刻都在变换,时时刻刻都在更新。风格的变换,色彩的叠加,亦或是韵味的不同,须细细琢磨,认真体会。 【华丽】 万物复苏的季节,娇艳的桃花和明媚的迎春花都开的热热…...
女孩们的男装穿衣法则 用Prada打造时髦男友风穿搭
Prada 2020春夏男士系列以青春色调及拼接细节,打造复古文艺的时尚质感。经典廓形衬衫上,Prada标志性三角形logo被重新诠释,更增添几分个性与酷感。周雨彤选择Prada牛津布拼色衬衫搭配黑色阔腿裤及Prada Re-edition 2005手袋,潇洒…...

程序员4月乱穿衣指南
进入四月份也就表示春天正式官宣来到啦!全国各地的樱花桃花也忍不住寂寞开始freestyle然而现实总是格外残忍春天的大风分分钟把你吹到怀疑人生让你从梦想跌进现实在春天你可以谈诗词歌赋谈人生哲学谈代码bug但是!!千万不能谈天气前不久中国天…...

面试穿衣搭配
首先是外套 从你的服装调色盘中挑出件中性色系、质料较好的外套,不要搭配有花边的衬衫,这会让你看起来稚气未脱、不够庄重,最好能与外套、裙子搭配,并有剪裁简洁的衬衫,七分袖西装外套适合初入社会的新鲜人,…...
穿衣的搭配--装饰模式
前言 穿着有那么重要吗?当然,人靠衣装马靠鞍嘛。大话设计模式以穿衣搭配的方式来讲面向对象的装饰模式,真的是通俗易懂,感谢作者程老师! 下面就和小编一起来看看什么是装饰模式吧。 内容 简单的写一个控制台程序&#…...

淘宝穿衣搭配算法_方案四
用户购买记录user_bought_history.txt中第二项产品id是有序的,我们由test_items.txt中需要被预测的商品,到用户记录中查找,(可能查找不到,后期考虑将其替代为test_item分词结果相似的产品库中的商品)定位到…...
装饰模式实现穿衣搭配 C++
装饰者模式,是可以用来动态的给一个对象添加一些额外的职责, 就增加功能而言, 装饰者模式比生成子类更加灵活。 他是一种为已有功能动态添加更多功能的方式, 新添加的代码, 主要用来装饰原有类的核心职责或者主要行为…...

瘦子穿衣搭配
1 、绝对不要穿黑色和近乎黑色的上装,否则人越发显得干瘦,应穿膨胀色的服装,颜色可选用灰色、灰褐色、浅灰色等,用以增加扩张感。 2 、衣料以斜纹路花型的比较好,大格的柔软质地的也不错,毛质地的衣…...
淘宝穿衣搭配算法_赛制描述
关于用户历史购买数据:举个简单例子可能会存在用户买了上装A后又买了与之搭配的下装B,配饰C等等。 关于terms:淘宝的商品标题大部分为有规律性的,其中可能会包含风格,款式等信息。 1:最终需要预测的是商品与其他商…...

淘宝穿衣搭配算法_方案二
test_item预测的item由id变成它对应的分词结果,代表的是预测的商品是怎么样的一个商品 (test_IdToItem.java)IdToItem.txt ToTerms.txt将dim_fashion_matchsets中各搭配的item由id变为dim_items.txt中的对应的分词 上面两者做相似度匹配,记…...

大学男生的穿衣搭配
今天,给大家总结一下大学里校园传统男生的穿着。©著作权归作者所有:来自51CTO博客作者280441589的原创作品,如需转载,请注明出处,否则将追究法律责任学习 穿着 穿衣 0 分享 微博 QQ 微信 收藏 上一篇:…...
世上竟有此女子,她把自己的穿衣搭配都画了下来
她的作品把街拍和插画完美的结合在一起,每套服饰搭配都会配上自己的插画形象与思考方式。 主题是“枫叶上的记忆”。在炎夏中有些秋意。完全男性化的装束,那就爷们到底吧。 主题是"午后的猫"以猫的元素为灵感的暖色系搭配。 依然是…...

天池竞赛-淘宝穿衣搭配(数据预处理部分)
赛题简介 淘宝网是中国深受欢迎的网购零售平台,其中服饰鞋包行业占据市场的绝大部分份额,围绕着淘宝诞生了一大批优秀的服饰鞋包导购类的产品。穿衣搭配是服饰鞋包导购中非常重要的课题,它所延伸出的技术、算法能广泛应用到大数据营销几乎所…...

胖mm如何穿衣搭配
一、掩盖缺点穿法 其实一些女孩儿总体来说并不胖,只是一些部位脂肪多了一些,如胳膊、腰、腿比较粗,修饰这些毛病就更简单。可以用视线转移的方法,穿浅色衣服的同时佩带一些小饰品、如小丝巾、胸坠等,或夸张一下身上较…...

淘宝穿衣搭配算法_方案三
ReplaceItem1.java将原先的matchsets中的产品替换为它的分词结果,分词结果以空格隔开,产品与产品间用逗号隔开,输出结果ToTerms1.txt。为了之后比较每个产品与预测产品的相似度,排除方案二中出现多可替代产品,而造成该…...

穿衣搭配
活着,一定要做自己喜欢的事。要知道自己喜欢什么,要知道自己适合穿什么,穿什么舒服。要学会照顾自己。要让自己快乐,要学会处理人际关系——让自己快乐。不要走错了方向。自己对自己负责。谁也没有责任为谁付出所有,正…...

nodejs女生穿衣搭配系统vue
目 录 第一章 绪论 1 1.1 研究的背景和意义 1 1.1.1网站的研究背景 1 1.1.2 网站研究的意义 1 1.2 研究现状 2 1.3 论文的主要内容 2 1.4 论文主体结构 2 第二章 开发工具和相关技术介绍 4 2.1 平台开发工具 4 2.2 平台开发相关技术 4 2.2.1…...
【天池竞赛系列】淘宝穿衣搭配算法第二赛季12名思路
给的数据集有4部分 达人搭配组合 商品信息 购买记录 线上测试集 在第一赛季中的思路和阿里星小江分享的差不多 http://datartist.cn/?p5 第二赛季自己实力不够,思路陷入迷信模型中,导致被干出了前10 那么我就来讲讲12名的思路吧 首先根据达人搭配…...

PINN学习记录(2)
PINN学习记录(2) PINN基于解物理的方程的应用,所以我自己学习了一段时间,参考了网上很多的开源项目,末尾会贴出一些,自己总结了一下思路 解微分方程 1、ODE f′(x)f(x)f(x)f(x)f′(x)f(x) f(0)1f(0)1f(0…...

PDE方程模拟冰花(雪花)生长
公众号→【COMSOL仿真交流】←更多精彩内容 COMSOL模拟结果: comsol模拟过程: 1、选择物理场: 2、建立几何模型 3、调整物理场(建立数学模型) 模型PDE方程: 其中的p表示为theta,即有…...

【图像去噪】基于偏微分方程(PDE)实现图像去噪附matlab代码
1 简介 在工程应用中,图像信息通过数字图像系统进行处理、存储和传输等加工变换时,由于不可避免地受到噪声干扰,使得原始图像信息产生偏差和失真,给图像的后续处理带来不便,进而影响人们对图像视觉特性的认知程度。因…...

matlab pde热传导,有限差分和Matlabpde求解一维稳态传热问题
《有限差分和Matlabpde求解一维稳态传热问题》由会员分享,可在线阅读,更多相关《有限差分和Matlabpde求解一维稳态传热问题(8页珍藏版)》请在人人文库网上搜索。1、有限差分和pde函数求解一维定态热传导方程分别用有限差分方法和pde函数求解一维定态热传…...

Google Professional Data Engineer(PDE)考试
在国内参加PDE考试的人比较少,导致资料也很少。我在19年1月30号去上海参加PDE考试,参加前也是完全没底,因为时间短资料少,但幸运的是顺利通过了。回过头来看,其中有些技巧和重点,在此做一些总结,…...

Windows保护模式学习笔记(七)—— PDEPTE
Windows保护模式学习笔记(七)—— PDE&PTECr3PDE(页目录表项)PTE(页表项)物理页的属性10-10-12分页的补充实验1:证明PTE的特征1第一步:选择一个进程的Cr3第二步:查看…...

论文精读之PDE-Net: Learning PDEs from Data
论文精读之PDE-Net: Learning PDEs from Data1.Introduction1.1. Related Work1.2. Our Approach2. PDE-Net: A Flexible Deep Archtecture to Learn PDEs from Data2.1. Convolutions and Differentiations2.2. Architecture of PDE-Net2.3. Initialization and training2.4. …...

matlab的PDE工具箱的简单使用
matlab的PDE工具箱的简单使用 问题选择 在一个二维的有界区域Ω\OmegaΩ上,matlab的PDE工具箱主要使用有限元方法解决下面四类问题: 椭圆形方程(elliptic) −∇⋅(c∇u)auf-\nabla\cdot(c\nabla u)auf−∇⋅(c∇u)auf抛物型方程…...

偏微分方程I PDE的例子1 一维波动与热传导方程
偏微分方程I PDE的例子1 一维波动与热传导方程一些著名的偏微分方程(partial differential equations, PDE)的例子: 波动方程(一维的wave equation是d‘Alembert、Bernoulli导出的,Euler导出了二维的wave equation)热传导方程&am…...

PDE抛物型方程数值解法总结与例题分析
抛物型方程 例题及解答 例题: 构造抛物型方程 {∂u∂t∂∂x(x∂u∂x),0.5<x<1,0<t⩽T,u(x,0)φ(x),0.5⩽x⩽1,u(0.5,t)0,∂u∂x(1,t)−13u(1,t),0⩽t⩽T,\left\{\begin{aligned} &\frac{\partial u}{\partial t}\frac{\partial}{\partial x}\left(x\…...

PDE第三章 波动方程 大纲内容
波动方程问题从不同角度出发可以进行不同的分类,为了使得整章节脉络更加清晰,现打算从不同角度对波动方程问题进行分类和分析。 按维度分类 维度可使用的方法一维d′AlembertdAlembertd′Alembert公式方法 反射法 特征线法 延拓法 双侧反射法 分离变量法…...
19-PDE-PTE
不知在《分页》文章里,你有没有搞懂什么是页,同时还延伸出了页表的概念。另外,还解释了逻辑地址、线性地址和物理地址之间的关系。我知道你脑子可能是一团浆糊,这只能怪我的语言表达能力还不够强。 大段大段的文字让人读起来有时…...

软件测试最常用的 SQL 命令 | 通过实例掌握基本查询、条件查询、聚合查询
本文为霍格沃兹测试学院优秀学员学习笔记,汇总了软件测试人员经常使用,必须掌握的 SQL 基础命令1、DML核心CRUD增删改查缩写全称和对应 SQL:* DML 数据操纵语言:Data Manipulation Language* Create 增加:insert* Ret…...

图像修复之基于PDE的正则化或扩散基础
最简单的公式涉及各向同性正规化(或扩散),它源于线性热(或热流)方程 其中F是原始图像I的退化版本。∆𝐼表示图像拉普拉斯式。用时间变量t对偏微分方程的演化进行参数化,t描述了函数i的连续级数。各向同性扩散,使这些变化在所有方向…...

一阶线性PDE用特征线法求解
[1]Method of Characteristics: How to solve PDE [2]特征线法 [3]First-Order Equations: Method of Characteristics 一阶线性PDE, 假设我们找到了方程的解,由绘制曲面S 一阶线性PDE也可写作向量点乘的形式, 曲面S的法向量为 由点乘为0得…...

matlab pde工具箱解最优化控制,MATLAB PDE工具箱在半导体器件中的应用研究
1. 引言半导体是近代发现的一种新型材料,其在常温下的导电性能介于导体与绝缘体之间,是制作电子器件的重要材料。半导体材料独特的导电性能为计算机和电子设备的发展提供了更加广阔的可能性,并且被广泛运用在日常生活之中。随着21世纪科学技术…...

oracle导入pde文件出错,oracle安装与pde文件导入.doc
oracle安装与pde文件导入一、安装说明1.下载Oracle 10g 地址/technology/global/cn/software/products/database/oracle10g/index.html2.解压缩后就可以安装了。执行SETUP.EXE ,在DOS下运行片刻进入ORACLE 10G3.安装-安装方法界面在这里你要指定自己的安装方法&…...

神经网络求解PDE
原理 https://en.wikipedia.org/wiki/Universal_approximation_theoremhttps://www.youtube.com/watch?vLQ33-GeD-4Yhttps://arxiv.org/abs/1711.10561https://arxiv.org/abs/physics/9705023 问题: Universal approximation theorem:浅层前馈神经网…...

matlab求解pde,matlab求解pde问题
第4 章 数值计算 Hamilton 算子: i j( , ) x y x y Laplace 算子: 2 ( x 2 2 y 2 ) MATLAB 的 PDE 工具箱能解的方程类型: 椭圆型 PDE: (cu)......(2) ?0 x ?1 解:分别编写pdefun函数、pdebc函数、pdeic函数: 69 MATLAB的pedpe函数——pedpe函数的实例 %% 目标PDE函数 functi…...

【计算机图形学】流体模拟渲染基础
流体模拟渲染基础 前言矢量微积分Naiver-Stokes偏微分方程组N-S方程的分步求解对流算法 前言 本文主要参考文献《FLUID SIMULATION SIGGRAPH 2007 Course Notes》,结合我的理解单纯地讲述一下流体渲染的一些基础知识,本人水平有限,如有错误…...

【华为OD机试真题2023 JAVA】红黑图
华为OD机试真题,2023年度机试题库全覆盖,刷题指南点这里 红黑图 知识点枚举 时间限制:1s 空间限制:256MB 限定语言:不限 题目描述: 众所周知红黑树是一种平衡树,它最突出的特性就是不能有两个相邻的红色节点。 那我们定义一个红黑图,也就是一张无向图中,每个节点可能…...

将html字符串格式化成自己想要的格式
快速将html格式的文本字符串,解析为自定义格式的字符,为了解析改字符串,尝试过用正则,生成虚拟dom等方法,用正则解析出来感觉不是自己想要的,生成虚拟dom有感觉太重了。后面从想到用这方法,算是…...

Djanog 模板层
文章目录1、模板语法传值2、过滤器3、模板语法之标签4、自定义过滤器,标签以及inclusion_tag5、模板的继承6、模板的导入1、模板语法传值 变量相关:{{ }} 逻辑相关:{% %} #views.pydef index(request):# 模板语法可以传递的后端数据类型n …...

js 截取字符串类型 标签中的值
function labelString(str) {// 简单(单纯标签,不带任何属性)的正则表达式// 正则一// replace(/\<[a-zA-Z]\>|\<\/[a-zA-Z]\>/ig, )// 复杂的正则表达式// 正则二str str.replace(/\<[^>]*\>(([^<])*)/gi, functio…...

AutolabelHeight
// // ViewController.m // AutoLabelHeight // // Created by pjyin on 12-8-30. // Copyright (c) 2012年 __MyCompanyName__. All rights reserved. // #import "ViewController.h" #import <QuartzCore/QuartzCore.h> interface ViewController () end...

图自监督表征
1、综述 数据挖掘领域大师俞士纶团队新作:最新图自监督学习综述图自监督学习综述:Graph Self-Supervised Learning A Survey图自监督学习(Graph Self-supervised Learning)最新综述Github代码汇总图自监督学习在腾讯Angel Graph中…...

ASP.NET Core 3.1系列(28)——ASP.NET Core中使用Autofac替换内置IoC容器
1、前言 前面的博客主要介绍了一些Autofac的使用方法,示例代码都是基于控制台程序。本文就来介绍一下如何在ASP.NET Core中使用Autofac代替内置的IoC容器。 2、创建接口和类 这里搭建了一个简易的项目,如下图所示: Service层代码如下&…...

TradingView入门
项目背景 因需要做金融交易证券类系统,所以需要选择比较强大的金融图表 目前市面上功能完善比较出名的图表 chartiq tradingview都是不错的选择 综合考虑本人选择了tradingview 申请 使用tradingview之前,需要先进入tradingview官网去申请他的char…...

opencv 4快速入门_vn.py快速入门4 - 海外市场IB
本文原载于vn.py社区微信公众号(vnpy -community)。IB,全称Interactive Brokers,中文名盈透证券,是全球公认第一的全品种零售经纪商,提供的金融品种包括:股票:美股、港股、欧股、A…...
TiDB入门
1.1. 数据库技术发展简史 数据库技术产生于20世纪60年代末70年代初,其主要主要研究如何存储,使用和管理数据。随着计算机硬件和软件的发展,数据库技术也不断地发展。数据库技术在理论研究和系统开发上都取得了辉煌的成就。 从数据管理的角度看…...

python入门经典100题单选题_(完整版)Python100经典练习题
#!/usr/bin/env python #coding: utf - 8【程序 1 】 题目:有 1 、 2 、 3 、 4 个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1. 程序分析:可填在百位、十位、个位的数字都是 1 、 2 、 3 、 4 。组成…...

NOIP提高组初赛模拟赛赛后感想
记录:2018.9.25日,山大华特卧龙学校信息队进行了一次初赛的模拟考… 没错,就是2012年的 结果蒟蒻考了48 44 (批错分了QAQ)分,勉强过了当年的线…(SD) 单选题目错了2道题,其中一道是红黄蓝…(好吧,我是zz) 但是填空题却一倒也没对QAQ… 总结: 要加强填空题的训练 PS:特地再次水…...

基于BP神经网络的图像跟踪,基于BP神经网络的细胞追踪识别
目录 摘要 BP神经网络的原理 BP神经网络的定义 BP神经网络的基本结构 BP神经网络的神经元 BP神经网络激活函数及公式 基于BP神经网络的细胞识别追踪 matab编程代码 效果 结果分析 展望 摘要 智能驾驶,智能出行是现代社会发展的趋势之一,其中,客量预测对智能出行至关重要,…...

day11-Python-函数
Python-函数 一.函数作用 """ 在实现某个功能对应的代码的时候,如果将实现功能对应的函数放到函数中,那么下一次再需要这个功能的时候,就可以不用再写这个功能对应的代码了, 而是直接调用这个功能对应的函数 &qu…...

总线(六)SPI通信协议介绍
文章目录SPI背景知识SPI特征SPI总线的物理层SPI标准协议SPI背景知识 SPI(Serial Peripheral interface)是串行外设接口,是一种高速、全双工、同步的通信总线。是Motorola首先在其MC68HCXX系列处理器上定义的。 SPI特征 1、全双工串行通信&a…...

国产化替代浪潮下,企业该如何保障电子邮件安全?
电子邮件,是日常工作到会经常用到的联系方式。但也正因为此,邮件攻击也成了网络攻击的主要手段之一,特别是带有恶意病毒、网页木马程序、特制木马程序以及利用软件漏洞的邮件木马在互联网上泛滥成灾,邮件安全已经成为一个安全领域…...

ChatGPT能够改变时代吗?一点点思考
都知道ChatGPT的出现对整个世界产生了剧烈的影响,前不久出的ChatGPT4更是在ChatGPT3.5的基础上展现了更强的功能。比如说同一个问题,ChatGPT3.5还是乱答的,ChatGPT4已经能给出正确解了。当然这只能说明技术是进步的。 虽然如此,很…...

十四届蓝桥杯青少组选拔赛Python_2023.03.12
十四届蓝桥杯青少组选拔赛Python_2023.03.12 未完 待更新...... T4. 编程实现: 假设果园中有N(1<=N<=100)种水果,猴子想要采摘一些水果带回家,但猴子采摘水果的总重量不能超过W(1<=W<=1000). 已知每种水果的最大采摘数量Ni(1<=Ni<=100)、每种水…...

桌面出现白色图标的恢复办法
前几天装了一个软件,在桌面生成了快捷方式,用着用着这个图标突然变成了白色的,如下图所示。 这对有强迫症的人来说是难以接受的,所以就在网上找了很多解决办法,本来觉得重启电脑会解决,但是也没能够&#…...

1052 Linked List Sorting PAT甲级真题
A linked list consists of a series of structures, which are not necessarily adjacent in memory. We assume that each structure contains an integer key and a Next pointer to the next structure. Now given a linked list, you are supposed to sort the structure...

RK3588平台开发系列讲解(NPU篇)NPU调试方法
平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、日志等级二、NPU 支持查询设置项沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇我们一起来看一下NPU的调试方法。 一、日志等级 NPU 的运行库会根据开发板上的系统环境变量输出一些日志信息或者生成…...

SpringMVC框架详解(学习总结)
目录 什么是MVC SpringMVC概述 SpringMVC常见开发方式 SpringMVC执行流程 SpringMVC核心组件介绍 快速构建Spring MVC程序 SpringMVC参数绑定 SpringMVC跳转方式 SpringMVC处理json请求和响应 SpringMVC静态资源处理 SpringMVC操作session和cookie SpringMVC拦截器 …...

Java 基于 JAVE 库 实现 视频转音频的批量转换
文章目录 Java 基于 JAVE 库 实现 视频转音频的批量转换Maven:方案一:代码优化:方案二:示例代码:代码优化:结语Java 基于 JAVE 库 实现 视频转音频的批量转换 实现视频转音频的功能需要使用到一个第三方的 Java 库,叫做 JAVE。JAVE 是一个开源的 Java 库,提供了视频和音频转换…...

为何在 node 项目中使用固定版本号,而不使用 ~、^?
以语雀 文档为准 使用 ~、^ 时吃过亏希望版本号掌握在自己手里,作者自己升级(跟随官方进行升级,就算麻烦作者,也不想麻烦使用者)虽然 pnpm 很好用,但是不希望在项目中用到(临时性解决问题可以选…...

Blazor JWT登录退出、身份控制、定时检测账户管理示例项目
本示例项目为.Net Core 7.04 Blazor Server 版本。功能:适合企业内部的账户分发(非开放公众注册)的App。1、身份控制:分发账户为初始密码,使用初始密码登录后必须修改密码才能使用相应身份的功能;根据身份提…...

聊一聊java程序中的换换符
常见的换行符Java程序中的换行符一般使用“\n”表示,它是一个转义字符,表示换行符。根据操作系统的不同,换行符的实际表示可能不同:在Windows系统中,换行符由两个字符“\r\n”表示,即回车符和换行符。在Uni…...

【Hive基础】-- 常见面试题目
一、请描述一下数据倾斜,并提供解决方案? 定义:由于数据分布不均匀,导致大量数据集中到一点,造成数据热点。现象是100个 task, 有一个运行了 1个小时,其他99个只有 10分钟。本质是数据量太大。原因:key 分布不均匀、sql倾斜join、建表时类型有问题算子:count、dist…...

VNC 远程登录树莓派 zero 2w
就两步 开启树莓派的 VNC server在电脑上安装 VNC viewer sudo raspi-config哇,竟然能在终端进入GUI交互 到此就成功开启树莓派的 VNC server 了 在电脑上安装 VNC viewer https://www.realvnc.com/en/connect/download/viewer/ 挺好,比单独再给树莓派配…...

如何巧妙应用JMeter的Dummy Sampler
很少人知道Dummy Sampler这个采样器(扩展插件里带的),也不知道它的妙用。Dummy Sampler 可以比较方便地模拟测试场景,自定义Request Data和Response Data,在学习测试脚本编写的过程中非常有用。另外如果巧妙应用它,可以在开发人员出接口文档后(接口还没实现)就可以同步…...

Elasticsearch 设置最低安全性
Elasticsearch 设置最低安全性 您启用 Elasticsearch 安全功能,然后为内置用户创建密码。您可以稍后添加更多用户,但使用内置用户可以简化为集群启用安全性的过程。 最小安全场景对于 生产模式集群是不够的。如果您的集群有多个节点,您必须…...

leetcode:66:加一
给定一个由 整数 组成的 非空 数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。 你可以假设除了整数 0 之外,这个整数不会以零开头。 示例 1: 输入:digits…...

DirectX12(D3D12)基础教程(二十一)—— PBR:IBL 的数学原理(5/5)镜面反射积分项2及光照合成
这里写目录标题3.5.4、根据 Epic 近似假设进一步拆分积分项为两部分之积3.5.5、镜面反射预过滤积分贴图的重要性采样实现3.5.6、菲涅尔近似项 FSchlickF_{Schlick}FSchlick 中菲涅尔常数 F0F_0F0 的分离3.5.7、预积分 BRDF-LUT贴图3.6、最终光照合成4、总结5、参考资料3.5.…...

本科课程【移动互联网应用开发(Android开发)】实验3 - Activity及数据存储
大家好,我是【1+1=王】, 热爱java的计算机(人工智能)渣硕研究生在读。 如果你也对java、人工智能等技术感兴趣,欢迎关注,抱团交流进大厂!!! Good better best, never let it rest, until good is better, and better best. 近期会把自己本科阶段的一些课程设计、实验报…...

一口一口吃掉yolov8(2)
前面介绍了训练的第一个部分,也是大部分人在网上找得到的文章,但是后面2个部分应该是网上没有的资料了,希望大家喜欢。 0.数据 我的数据是一些栈板,主要是检测栈板的空洞,识别出空洞的位置和偏转角度。原图如下 我的…...

springboot静态资源解析失效处理
继承WebMvcConfigurationSupport导致默认配置失效问题描述问题分析解决问题方式1:WebMvcConfigurationSupport补充静态资源【不推荐】方式2:改写mvc自定义配置实现【推荐】总结问题描述 我们开发了一个基于SpringBoot的工具(starter封装),可以提供通用的功能和管理…...

kafka-manager配置及安装Kerberos(Ambari-HDP)认证
目录 一、概述 二、环境 三、部署kafka-manager 3.1下载 3.2 配置修改 3.3kafka开启JMX 3.4启动CMAK 3.5登录 3.6添加kafka cluster配置 3.7 问题 3.8Topic和Broker信息查看 3.9Topic创建 一、概述 为了简化开发者和服务工程师维护Kafka集群的工作,yaho…...

【手把手教程】MacOS 安装Multipass一款更轻量级的虚拟机 保姆级安装教程
【手把手教程】MacOS 安装Multipass轻量级虚拟机 📔 千寻简笔记介绍 千寻简笔记已开源,Gitee与GitHub搜索chihiro-notes,包含笔记源文件.md,以及PDF版本方便阅读,且是用了精美主题,阅读体验更佳,如果文章对你有帮助请帮我点一个Star~ 文章目录 【手把手教程】MacOS …...

C - Candy Machine 二分
传送门 题意 JB非常喜欢糖果。 有一天,他发现了一台糖果机,里面有 N里面有糖果。看完机器的说明书后,他知道他可以选择一个子集 N糖果。每颗糖果都有一个甜味价值。JB 选择子集后,假设所选糖果的平均甜度值为 X,所有甜…...

一起来学5G终端射频标准(EVM均衡器频谱平坦度-2)
上一篇一起来学5G终端射频标准(EVM均衡器频谱平坦度-1)中的测试图例,这里补一下: 01 — EVM均衡器系数的计算 由上图红框可知,结果由四部分组成,那么这四个结果是如何计算的呢?我们曾在一起来学…...

火遍全网的chatGPT怎么使用
类别 描述 学术论文 它可以写各种类型的学术论文,包括科技论文、文学论文、社科论文等。它可以帮助你进行研究、分析、组织思路并编写出符合学术标准的论文。 创意写作 它可以写小说、故事、剧本、诗歌等创意性的文学作品,能够在描述情节和角色方面…...

Selenium:找不到对应的网页元素?常见的一些坑
目录 1. 用Xpath查找数据时无法直接获取节点属性 2. 使用了WebDriverWait以后仍然无法找到元素 2.1. 分辨率原因 2.2. 需要滚动页面 2.3. 由于其他元素的遮挡 1. 用Xpath查找数据时无法直接获取节点属性 通常在我们使用xpath时,可以使用class的方式直接获取节…...

Linux的诞生过程
个人简介:云计算网络运维专业人员,了解运维知识,掌握TCP/IP协议,每天分享网络运维知识与技能。座右铭:海不辞水,故能成其大;山不辞石,故能成其高。个人主页:小李会科技的…...

arcpy基础篇(6)-制图脚本
arcpy.mapping模块可以实现地图制图的自动化,它的具体功能包括管理地图文档、数据框架、图层文件以及上述元素中的数据。此外,还可用于地图自动化打印和输出。 1.地图文档 地图文档(MXD)在磁盘中的后缀名是.mxd。ArcPy制图模块可…...

基于RBF神经网络的机械臂运动控制算法(Matlab代码实现)
目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨💻4 Matlab代码 💥1 概述 在信号处理、模式识别等系统中,多层前馈网络是应用较为广泛的模型。但是大部分基于反向传播的多层前馈网络的学习算法必须基于某…...

Android原生集成友盟SDK
2021.09记录,2023发布,如有不对,还请包含。发晚了 Android原生集成友盟SDK 版本: Android Studio 4.2.1 (以下简称AS) UMeng 9.4.0 (2021.06.24当天用的版本) 参考文档&am…...

Thread的小补丁
Thread小补丁线程状态NewRunnableWaitingTimed_waitingBlocked线程安全线程的抢占式执行同时对同一个变量进行修改指令重排序操作不是原子的解决方案万恶之源优化我们自己的代码Synchronized和Volatile上一篇博客中,我们简单介绍了线程Thread的一些知识,一些基本的使用,但是单单…...

复数的实部虚部与幅值相角之间的转换及python代码实现
一、复数定义 复数 zabizabizabi 的实部为 aaa,虚部为 bbb。复数的模长 ∣z∣|z|∣z∣ 定义为 ∣z∣a2b2|z|\sqrt{a^2b^2}∣z∣a2b2,即复数在复平面上的长度。复数与正实轴之间的夹角 θ\thetaθ 称为辐角。 二、实部虚部转换为模长幅角 公式 从实…...

从一致性/debias角度考虑推荐优化问题(排序部分 四 《参数的一致性》)
在排序工作中,我们也经常遇到不同的一致性需求,关于排序一致性,我们往往需要考虑几个方面:《样本的差异》,《特征的差异》,《模型参数差异》,《目标差异》,《场景融合的差异》。当然…...

状态机引擎选型
状态机引擎选型 概念 有限状态机是一种用来进行对象行为建模的工具,其作用主要是描述对象在它的生命周期内所经历的状态序列,以及如何响应来自外界的各种事件。在电商场景(订单、物流、售后)、社交(IM消息投递)、分布式集群管理(分布式计算平台任务编排)等场景都有大规…...

怎么压缩图片大小到50kb以下?照片怎么压缩到50kb?
随着现在摄影设备的升级,我们拍摄的许多照片都比较大,有时候在上传使用的时候,都会因为被限制大小无法上传,这时候就需要用到图片压缩指定大小(https://www.yasuotu.com/imagesize)工具,去将压缩…...

如何实现用pillow库来实现给图片加滤镜?
使用Pillow库可以非常容易地给图片加滤镜。Pillow库是Python图像处理的一个强大库,提供了多种滤镜效果,如模糊、边缘检测、色彩增强等。 下面是使用Pillow库实现给图片加滤镜的简单步骤: 安装Pillow库:首先需要安装Pillow库。可…...

中国上海人工智能企业CIMCAI世界港航人工智能领军者,成熟智慧港航AI产品,自动化港口数字化航运中国上海人工智能企业智慧港航
CIMCAI全球港航人工智能/集装箱人工智能垂直领域领军者,工业级成熟港航人工智能AI产品行业顶尖,人工智能产品与人AI核心科技全球绝对顶尖水平。中国上海人工智能独角兽CIMCAI高度成熟产品全球规模化落地,CIMCAI ENGINE集装箱检测云服务全球40…...

探索css渐变-实现饼图-加载图-灯柱
文章目录linear-gradient()线性渐变radial-gradient()圆形渐变conic-gradient() 锥形渐变锥形渐变实现加载动画渐变实现发廊灯柱css的渐变分为三种: 线性渐变:linear-gradient() 圆形渐变:radial-gradient() 锥形渐变:conic-gradi…...

C++ , STL常用容器
STLSTL初识STL的诞生STL基本概念STL六大组件STL中的容器、算法、迭代器容器算法迭代器初识STL — 常用容器string容器vector容器deque容器stack容器queue容器list容器set/ multiset 容器map/ multimap 容器C 模板. STL初识 STL的诞生 长久以来,软件界一直希望建立…...

【Selenium自动化测试】下拉框处理
在Web自动化测试过程中,有时会遇到类似下面的情景。 这就是下拉框,对于下拉框,WebDriver同样有提供Select类来处理这类的下拉框,常见方法如下: select_by_value():通过value 值定位下拉选项。select_by…...

【华为OD机试真题JAVA】磁盘容量排序问题
标题:磁盘容量排序问题 | 时间限制:1秒 | 内存限制:262144K | 语言限制:不限 磁盘的容量单位常用的有 M G T 他们之间的换算关系为 1T =1024G 1G=1024M 现在给定n块磁盘的容量,请对他们按从小到大的顺序进行稳定排序 例如给定5块盘的容量 5 1T 20M 3G …...

vue3 多标签的界面里 不同组件之间进行动态切换实例
1、首先创建三个vue 分别为left.vue, midder.vue, right.vue其内容如下: <script > export default {name:"midder" // 注意这里边的name必不可少 } </script><template><div>midder</div> </template> <style…...

DJ2-4 进程同步(第一节课)
目录 2.4.1 进程同步的基本概念 1. 两种形式的制约关系 2. 临界资源(critical resource) 3. 生产者-消费者问题 4. 临界区(critical section) 5. 同步机制应遵循的规则 2.4.2 硬件同步机制 1. 关中断 2. Test-and-Set …...
如何基于 Apache Doris 与 Apache Flink 快速构建极速易用的实时数仓
随着大数据应用的不断深入,企业不再满足离线数据加工计算的时效,实时数据需求已成为数据应用新常态。伴随着实时分析需求的不断膨胀,传统的数据架构面临的成本高、实时性无法保证、组件繁冗、运维难度高等问题日益凸显。为了适应业务快速迭代…...

Vuex由浅入深详细讲解
目录前言一,理解Vuex1.1 Vuex是什么1.2 Vuex概述1.3 Vuex统一管理状态的好处1.4 什么时候使用Vuex二, Vuex的配置2.1 安装vuex依赖包及vuex版本问题2.2 导入vuex包2.3 创建store对象2.4 在main.js中挂载store三,Vuex的核心概念3.1 demo3.2 St…...

2023.3.20
文章目录算法部分2:前缀和数组3:Math.random( ):等概率的返回[0 , 1)之间的数4:从a~b随机到c~d随机5:01不等概率随机到01等概率随机语法部分8:局部变量必须初始化9:同一个类,类的加载只加载一次…...

Ubuntu18.4安装petalinux
Ubuntu18.4安装petalinux 本文介绍安装petalinux的步骤,最近在学习ZYNQ的驱动开发,简单记录一下,以备不测,哼哼哼。。。。。。。。。。。 1. 下载准备必须的文件 啥都不说啦,先自行下载,链接如下&#x…...

计算机体系结构(校验码+总线)
校验码计算机系统运行时,为了确保数据在传送过程中正确无误,一是提高硬件电路的可靠性;二就是是提高代码的校验能力,包括查错和纠错。通常使用校验码的方法检测传送的数据是否出错。这里的校验码主要是指循环冗余校验码࿰…...

三角函数的局限和改进思路
1. 三角函数的局限 1.1 三角函数概算 三角函数(trigonometric function)是从直角三角形发展起来的一种角度和边的对应关系。常见的三角函数有sin、cos、tan三个函数,反三角函数有arcsin、arccos、arctan三个反三角函数(反三角函数…...

spark第三章:工程化代码
系列文章目录 spark第一章:环境安装 spark第二章:sparkcore实例 spark第三章:工程化代码 文章目录系列文章目录前言一、三层架构二、拆分WordCount1.三层拆分2.代码抽取总结前言 我们上一次博客,完成了一些案例的练习࿰…...

javaEE初阶 — JavaScript WebAPI
文章目录什么是 DOMDOM 树获取元素1. querySelector2. querySelectorAll事件1. 事件三要素2. 代码案例获取 / 修改元素内容1. innerHTML获取 / 修改元素属性获取 / 修改表单元素属性获取 / 修改样式属性1. 修改内联样式(修改 style 属性的值)2. 修改元素…...

【C++】C++11新特性——可变参数模板|function|bind
文章目录一、可变参数模板1.1 可变参数的函数模板1.2 递归函数方式展开参数包1.3 逗号表达式展开参数包1.4 empalce相关接口函数二、包装器function2.1 function用法2.2 例题:逆波兰表达式求值2.3 验证三、绑定函数bind3.1 调整参数顺序3.2 固定绑定参数一、可变参数…...

Phoenix基础命令_视图映射和表映射_数字存储问题---大数据之Hbase工作笔记0036
然后我们再来看看,用Phoenix来操作hbase,的基本用法 具体的其他的命令在官网都能找到,这里就说几个 https://phoenix.apache.org/language/index.html 首先是创建表,这里注意,默认表名给弄成大写的 这里的varchar对应的其实就是hbase中的string 然后这里的id表示行的rowkey 可…...

SAP 批量修改采购订单
现在有一个需求,我们需要冻结一批采购订单,但是由于批量冻结的后果无法预知,我们打算用一个折中的办法。 利用采购订单行项目中的“最近收货日期”字段,下面我们先看一下它的解释。 最近可能的收货 这是收货(GR&…...

AntDB-M数据库锁分析,不要错过!
AntDB数据库始于2008年,在运营商的核心系统上,为全国24个省份的10亿多用户提供在线服务,具备高性能、弹性扩展、高可靠等产品特性,峰值每秒可处理百万笔通信核心交易,保障系统持续稳定运行近十年,并在通信、…...

Android开发之给apk签名
前言最近360加固助手签名突然收费了,加固完后要自己签名了。在此记录一下自己使用命令行签名步骤。正文首先在安装Android Studio的情况下找到SDK安装目录,在build-tools目录下有自己下载的SDK版本,随便打开一个版本,找到apksigne…...

设计模式快速复习
文章目录设计模式快速复习创建型模式结构型模式行为模式设计模式快速复习 对 Design Pattern Explanation with C Implementation(By K_Eckel) 的阅读总结 创建型模式 Factory :提供一个专门用来创建对象的工厂类,而不是直接使…...