swagger2 注解整体说明 @Api:用在请求的类上,表示对类的说明 tags="说明该类的作用,可以在UI界面上看到的注解" value="该参数没什么意义,在UI界面上也看到,所以不需要配置 :用在请求的类上,说明该类的作用 tags="说明该类的作用" value="该参数没什么意义,所以不需要配置" 例子: @Api(tags="APP用户注册Controller") 2、
Class文件是一个二进制字节流 · 数据类型:u1 u2 u4 u8 和_info(表类型) _info的来源是hotspot源码中的写法 · 如何查看16进制的Class File Sublime、 Idea插件 BinEd 观察Byte Code的方法 Javap、JBE(可以直接修改)、JClassLib-IDEA的插件 Class File的构成: · ClassFile{ u4:magic u2: minor_version u2:major_version cn_info_constant_pool[constant_pool_count -1] …….. } Magic Number: docs.oracle.com/javase/specs/jvms/se16/jvms16.pdf 主要查看6、7节 这个是Class文件的详细说明可将图片保存下来进行观看或者后台回复 Class二进制图片获取 本内容视频可参考
在网上冲浪时,意外发现一款自动生成解说的短视频的AI工具,已经有几千Star,支持多款AI大模型,我们来看一下这个名为NarratoAI的开源工具。 项目的简介如下: NarratoAI 是一个自动化影视解说工具,基于LLM实现文案撰写、自动化视频剪辑、配音和字幕生成的一站式流程,助力高效内容创作。
【access类型】 分别把sw1的E0/0/0与sw2的E0/0/0接口加入vlan2与vlan3就可以实现两vlan的通信 【trunk类型】 首先把sw1与sw2的E0/0/0 sw1中允许vlan2通过(port trunk permit vlan 2),sw2中允许vlan3通过。 然后设置sw1与sw2上从E0/0/0出去的vlan哪些是要去标记哪些是不需要的,sw1把vlan2去标记(porthybrid vlan 2 untagged),sw2把vlan3去标记。 最后处理没有标记的帧打上什么标记,sw1打上vlan2标记(port hybridpvid vlan 2),sw2打上vlan3标记。 在E0/1中Hybrid的一些属性为:vlan2与vlan6是不带标记的,而在E0/2接口中是vlan3与vlan6没带标记,在E0/24则是vlan2,vlan3和vlan6都没带标记。
顺便说句题外话,爬虫代码和工具在今天的另外一篇推送,如果有 Python 环境,运行爬虫代码,如果没有,直接双击工具,输入你想要爬取的视频的 BV 号就行,比如淄博烧烤、指鼠为鸭话题下的一些热门视频,可以同时爬取多个视频 标题:【木鱼微剧场】《三国演义》(全集) 链接:https://www.bilibili.com/video/BV1hx411e7KP BV 号:BV1hx411e7KP 三国演义解说视频 P1,抓取到 (P1高俅发迹) 链接:https://www.bilibili.com/video/BV16F411B7Ek BV 号:BV16F411B7Ek 水浒传解说视频 P1,也抓取到 3500 余条弹幕文本 标题:【木鱼微剧场】《红楼梦》(全集) 链接:https://www.bilibili.com/video/BV1CC4y1a7ee BV 号:BV1CC4y1a7ee 红楼梦解说视频 P1,亦抓取到 关于《漫长的季节》的解说,共抓取到 9500 余条弹幕。
接上篇文章《clock oscillator,generator,buffer选型杂谈》,今天我们来说下PCIE时钟的要求:
1, cur); } } } } 优化: //优化 public static void bubbleSort2( == false){ break; } } } 性能分析 时间复杂度: 最好:O(N) {数据有序} 平均:O(N^2) 最坏:O(N^2) {数组逆序} 空间复杂度: O(1) 稳定性: 稳定排序
虚拟内存与物理内存的映射关系是通过 页表 来关联的,如下图: 但 页表 并不是按字节来进行映射的,而是按照 内存页 为单位进行映射,一般一个 内存页 的大小为 4KB(为什么要加一般呢,这是因为除了4KB,还有其他大小的内存页,如2MB 的确是,因为进程很多虚拟内存地址并不会用到,为了节省页表使用的内存,x86 CPU 把页表分为 2 级,如下图: 如上图所示,把原来的 页表 划分为 页目录 和 页表,它们的大小均为 4KB。
思路分析 希尔排序的主要实现逻辑还是基于插入排序的,插入排序的过程在上一篇文章中讲过啦,如果有兴趣的老铁可以查看以下文章:插入排序详细解说 了解了插入排序后,希尔排序就可以迎刃而解了 可以将整个数组分为 gap组,这里的gap=array.length/2,然后进行插入排序,再将gap/2,再次进行插入排序,直到gap=1的时候,就可以得到最终的已排序数组 图解 代码实现 public static void shellsertSort(int[] array){ int gap = array.length/2; while (gap > 1){ insertGap(array,gap); gap = gap / 2; } insertGap(array,gap); } private 数据接近有序的时候,速度快 性能分析 时间复杂度: 最好:O(N) {数据有序} 平均:O(N^1.3) 最坏:O(N^2) {比较难构造} 空间复杂度: O(1) 稳定性: 不稳定排序
思路解析 1)取最右侧的值为基准值base,从数组的左右两边分别开始查找,先从左往右找比基准值大的值,再从右往左找比基准值小的数,找到之后,将两个找到的数进行交换 2)在继续刚才的步骤,继续进行交换 //当i和j重合的时候,最后一步,要把重合位置的元素和基准值进行交换 exchange(array,i,right); return i; } 2) stack.push(left); } } 性能分析 时间复杂度: 最好:O(n * log(n)) 平均:O(n * log(n)) 最坏:O(n^2) 2)效率和基准值的好坏相关:基准值的是一个接近数组中位数的元素,划分出来的左右区间比较均衡,此时效率就比较高,如果当前取到的基准值是最大值或者最小值,此时的划分就不均匀,效率就低。 优化分析 1.优化基准值的取法:三个元素取中(最左侧元素,中间未知元素,最右侧元素)取中间基准值,把确认的基准值交换到数组末尾或者开始,为了后面整理动作做铺垫 2.当区间已经比较小的时候,再去递归其实效率已经不高了
= array[bound]; array[bound] = array[cur]; array[cur] = tmp; } 性能分析 时间复杂度: O(N^2)
f56be70f3463daa659b1a5df2a571618.png f56be70f3463daa659b1a5df2a571618.png 三、 Service生命周期 Service的生命周期并不像 break; case R.id.stop: // stop music op = 2; case 1: play(); break; case 2: <activity 2. android:name=".service.PlayMusicService" 3.android:label="@string/app_name" /> 注册service 2 一个可用进程没有任何前台组件,但它仍然可以影响到用户的界面。下面两种情况发生时,可以称该进程为可用进程。
; } catch(e) { AgentACS = “http://agent.microsoft.com/agent2/chars/” + NewAgent + “ 你需要首先下载 MicroSoft 语音识别引擎 activex.microsoft.com/activex/controls/agent2/actcnc.exe (目前只支持美国英语),下面介绍一下语音参数的句法 ; } else if ((UserInput.Alt2Name ! msdn.microsoft.com/library/en-us/msagent/paface_73c5.asp Events: msdn.microsoft.com/library/en-us/msagent/paface_2xet.asp
int parent = index; int child = 2*parent + 1; while (child < size){ if (child }else { break; } parent = child; child = 2 } private static void creatHeap(int[] array) { for (int i = (array.length - 1 - 1)/2;
最近重新整理短视频解说项目时,发现自己前期在AI配音上踩过不少坑。一开始总觉得:只要音色够像真人,视频听起来应该就不会有问题。 但真正做了一段时间后才发现,很多播放数据差的视频,并不是剧情不行,而是:旁白让人听着“很累”。尤其影视解说、悬疑旁白、小说推文这种内容,一旦AI配音节奏不对,观众前几秒就会直接划走。 刚开始做影视解说时,我特别喜欢那种:激昂男声高能解说情绪爆发电影预告风格因为刚试听时会很炸。但真正放到长视频后,问题特别明显:观众会疲劳。尤其超过30秒后,会越来越像营销广告。 一开始为了省事,我会统一设置:speed=1.1整条视频全程一个速度。结果听久后,会明显感觉:特别机械。 尤其短视频解说,本身就是“情绪推进型内容”。很多时候,一个0.5秒的停顿,甚至比换一个更贵的模型更重要。
装完之后,你只需要对AI说"帮我做一个《飞驰人生》的电影解说视频",它会自动完成搜索素材、匹配风格、生成文案、合成视频的全流程,全程你只需要回复"确认"。 三步接入流程:Skill+CLI+APPKey全配置第1步:给AI助手导入Skill文件(装上"解说大脑")第2步:安装CLI工具(接上"操作双手")第3步:配置APPKey,开始对话出片简易版安装:把仓库地址丢给 第三步:直接下指令出片帮我做一个《飞驰人生》的电影解说视频AI会自动执行:搜索素材→匹配解说风格→选BGM→选配音角色→生成文案→合成视频→返回下载链接。简易版搞不定的,跟着下面详细版一步一步来。 Step2:安装Git(Windows/macOS双平台)Windows:打开git下载,安装过程所有页面全部点Next,最后点Install→Finish。 安装验证:一句话触发电影解说全流程在AI助手对话框输入:帮我做一个《飞驰人生》的电影解说视频想要更精确的效果,指令越具体越好:帮我做《飞驰人生》的解说,解说风格用爆笑喜剧,配音用男声热血风,BGM用轻快节奏
hello docker" // dockerfile1 FROM centos ENV name Docker ENTRYPOINT echo "hello $name" // dockerfile2 FROM centos ENV name Docker ENTRYPOINT "/bin/echo" ,"hello $name" 复制代码 dockerfile2中输出的结果为hello $name, 如果想要输出hello Docker,则可以dockerfile2中的 "/bin/echo","hello &name" 改为 "/bin/bash","-c","echo hello &name",
JVM & GC 详细解说图: Java虚拟机(JVM): [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hdUWhxrF-1692065823370)(https:
int outputIndex = 0;//记录当前output数组中被放入了多少元素 int cur1 = low;//第一个区间的起始下标 int cur2 < high){ output[outputIndex] = array[cur2]; outputIndex++; cur2++ //当gap为2的时候,就是[0,1]和【2,3】是一组。。。。 //当gap为4的时候,【0,1,2,3】和【4,5,6,7】是一组 for (int gap = 1; gap < array.length; gap *= 2){ //接下来进行具体的分组合并 for (int i = 0; i < array.length; i+= 2*gap){ int beg = i;
2. 实分析:在实数理论和测度理论上建立起现代分析 在19世纪中后期,不连续函数的可积性问题一直是分析的重要课题。对于定义在闭区间上的黎曼积分的研究发现,可积性的关键在于“不连续的点足够少”。 (2)Continuous function 连续函数 连续函数在微积分里面有个用epsilon-delta语言给出的定义,在拓扑学中它的定义是“开集的原像是开集的函数”。 我个人认为,它的第三个(等价)定义才从根本上揭示连续函数的本质——“连续函数是保持极限运算的函数” ——比如y是数列x1, x2, x3, … 的极限, 那么如果 f 是连续函数,那么 f(y) 就是 f(x1), f(x2), f(x3), …的极限。 2. 线性代数:“线性”的基础地位 对于做Learning, vision, optimization或者statistics的人来说,接触最多的莫过于线性代数——这也是我们在大学低年级就开始学习的。