win10系统删除Microsoft帐户

Win+R打开运行,在运行输入框输入regedit,点击确定,打开注册表编辑器。找到路径HKEY_CURRENT_USER\Software\Microsoft\IdentityCRL 选择IdentityCRL项,右键删除。(注意:此操作将删除所有Microsoft帐户,若要删除指定帐户,需从UserExtendedProperties下进行选择)找到路径HKEY_USERS\.DEFAULT\Software\Microsoft\IdentityCRL选择IdentityCRL项,右键删除。(注意:此操作将删除所有Microsoft帐户,若要删除指定帐户,需从StoredIdentities下进行选择)重启计算机或注销帐户( Ctrl+Alt+Delete 注销)。重新登录帐户在设置-帐户-电子邮件和应用帐户下,单击Microsoft帐户,点击“删除”即可。

用Zybo调试CY7C68013A核心板的Slave FIFO模式

用Zybo调试CY7C68013A核心板 简介CY7C68013A核心板CY7C68013程序设计硬件连接主要代码 Zybo程序设计心得 简介 最近在调试CY7C68013A核心板的Slave FIFO模式时,因为电路板的丝印bug,绕了一大圈。最终不但调试成功,也发现了用Zybo调试其它电路板的便利之处。在这里分享下调试过程和心得。 CY7C68013A核心板 淘宝购买的最便宜的核心板,有两个用户LED,硬件版本为HW-274。实物如下图: 根据原理图和实物细节照片,发现丝印SLWR和SLRD搞反了。也即丝印RDY0实际上是RDY1引脚,丝印RDY1实际上是RDY0引脚。具体如下图所示: 红圈处的引脚实际为RDY1/SLWR,但是丝印错误,搞成了RDY0。 蓝圈处的引脚实际为RDY0/SLRD。 最开始是用STM32作为主控,读写CY7C68013的FIFO。但是因为开始没有发现这个错误,就转而使用Zybo调试了。用Zybo的原因是因为它在调试时能够很方便地使用ILA IP进行逻辑分析。正因为这个错误让我认识到了Zybo的额外利用价值。 CY7C68013程序设计 硬件连接 在调试CY7C68013的Slave FIFO模式时,为了简化硬件电路连接和控制端代码,采用了异步模式。根据EZ-USB的TRM文档,异步Slave FIFO读写硬件电路和时序为: 主要代码 CYPRESS提供了FX2LP的固件框架,使得固件开发只需修改TD_Init和TD_Poll(如果采用中断,那就修改中断函数)两个函数即可。针对CY7C68013 的固件程序,只需要修改bulkloop项目中的bulkloop.c文件里的TD_Init和TD_Poll函数。 void TD_Init(void) // Called once at startup { //设置8051的工作频率为48MHz CPUCS = 0x12; // CLKSPD[1:0]=10, for 48MHz operation, output CLKOUT SYNCDELAY; //Slave使用内部48MHz的时钟 IFCONFIG = 0xEB; //Internal clock, 48 MHz, output IFCLK, Slave FIFO ASYNC mode //IFCONFIG.3=ASYNC, 1=async, 0=sync SYNCDELAY; //配置FIFO标志输出,FLAG B配置为EP6 IN FIFO空标志 PINFLAGSAB = 0xE0; // FLAGB - EP6FF SYNCDELAY; //配置FIFO标志输出,FLAG C配置为EP2 OUT FIFO满标志 PINFLAGSCD = 0x08; // FLAGC - EP2EF SYNCDELAY; //PA7=FLAGD PORTACFG = 0x00; SYNCDELAY; FIFOPINPOLAR = 0x00; // set all slave FIFO interface pins as active low SYNCDELAY; //将EP2断端点配置为BULK-OUT端点,使用4倍缓冲,512字节FIFO EP2CFG = 0xA0; //out 512 bytes, 4x, bulk SYNCDELAY; //将EP6配置为BULK-OUT端点, EP6CFG = 0xE0; // in 512 bytes, 4x, bulk SYNCDELAY; EP4CFG = 0x02; //clear valid bit SYNCDELAY; EP8CFG = 0x02; //clear valid bit SYNCDELAY; //复位FIFO FIFORESET = 0x80; // activate NAK-ALL to avoid race conditions SYNCDELAY; // see TRM section 15.

读书笔记:求函数梯度的Python代码 numerical_gradient.py ← 斋藤康毅

由多元函数全部变量的偏导数汇总而成的向量称为梯度(gradient)。 梯度指示的方向是各点处的函数值减小最多的方向。 下文给出了求函数 的梯度的 Python 代码。 【求函数梯度的Python代码】 import numpy as np import matplotlib.pylab as plt def numerical_gradient_no_batch(f,x): h=1e-4 grad=np.zeros_like(x) for idx in range(x.size): tmp_val=x[idx] x[idx]=float(tmp_val)+h fxh1=f(x) x[idx]=tmp_val-h fxh2=f(x) grad[idx]=(fxh1-fxh2)/(2*h) x[idx]=tmp_val return grad def numerical_gradient(f,X): if X.ndim==1: return numerical_gradient_no_batch(f,X) else: grad=np.zeros_like(X) for idx,x in enumerate(X): grad[idx]=numerical_gradient_no_batch(f,x) return grad def fun_2(x): if x.ndim==1: return np.sum(x**2) else: return np.sum(x**2,axis=1) def tangent_line(f,x): k=numerical_gradient(f,x) b=f(x)-k*x return lambda t:k*t+b if __name__=='__main__': x0=np.arange(-2,2.5,0.25) x1=np.arange(-2,2.5,0.25) X,Y=np.meshgrid(x0,x1) X=X.flatten() Y=Y.

解决“VS 报No such file or directory“问题

今天在使用VS2015的calcOne工程,将工程由Debug版本改为Release版本,编译时弹出"无法打开包括文件: “addFunc.h”: No such file or directory"错误,如图(1)所示: 图(1) Release版本报"No such file or directory"错误 但是,将工程由Release版本改回到Debug版本,却编译成功。从而判断是Release、Debug这2个版本的编译环境有差异。 出现该问题的原因是:Release版本没有配置对应的头文件路径。 解决方法:右击"工程"–> 属性 --> 选择Release版本 --> C/C++ --> 常规–》附加包含目录,添加对应的头文件即可。 方法一 通过属性页进行修改 本例是addFunc.h的头文件路径: ..\myCommon要添加到C/C++ 附件包含目录里,如图(2)所示: 图(2)在属性页里,选中Release版本,并添加对应的头文件路径 编译时,选中Release版本进行编译,如图(3)、图(4)所示。 图(3) 编译时要选中Release版本 图(4) 工具栏里的版本要与属性页里的版本保持一致 效果如下: 图(5) Release版本编译成功 方法二 通过*.vcxproj进行修改 *.vcxproj是VS工程的路径配置文件,里面有Release、Debug的环境配置项,如下: // *.vcxproj <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'"> <ClCompile> //.. <AdditionalIncludeDirectories>..\myCommon;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> </ClCompile> </ItemDefinitionGroup> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <ClCompile> //.. <AdditionalIncludeDirectories>..\myCommon;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> </ClCompile> </ItemDefinitionGroup> AdditionalIncludeDirectories 是附加包含目录的配置项,在里面填写头文件路径即可。 2.1 判断include目录与*.vcxproj的路径关系 此处的include目录,特指myCommon,进入calcOne所在的项目根目录(*.sln目录),使用tree /f查看路径关系: ## 进入项目根目录 cd calcOne ## 查看路径关系 tree /f 图(6) 判断include路径与*.

9、断点调试

文章目录 9、断点调试9.1 为什么需要Debug9.2 Debug的步骤1 添加断点2 启动调试3 单步调试工具介绍 9.3 多种Debug情况介绍1 行断点2 方法断点3 字段断点4 条件断点5 异常断点6 线程断点7 强制结束 9.4 自定义调试数据视图9.5 常见问题 【尚硅谷】idea实战教程-讲师:宋红康 生活是属于每个人自己的感受,不属于任何别人的看法 9、断点调试 9.1 为什么需要Debug 编好的程序在执行过程中如果出现错误,该如何查找或定位错误呢? 简单的代码直接就可以看出来,但如果代码比较复杂,就需要借助程序调试来查找错误了。 在运行编写好的程序时,可能出现的集中情况: 情况1:没有任何bug,程序执行正确。 ===============如果出现如下三种情况,都有必要使用debug=============== 情况2:运行后,出现了错误或异常信息,但是通过日志文件或控制台,显示了异常信息的位置。 情况3:运行后,得到了结果,但是结果不是预先设计的。 情况4:运行后,得到了结果,结果大多数情况是我们想要的,但是多次运行,会出现不是预先设计的结果在其中。 比如:多线程情况下,处理线程安全问题。 9.2 Debug的步骤 Debug(调试)程序步骤如下 : 1 、 添加断点 2 、 启动调试 3 、 单步执行 4 、 观察变量和执行流程,找到并解决问题。 1 添加断点 在源代码文件中,在想要设置断点的代码行的前面的标记行处,单击鼠标左键就可以设置断点,在相同位置再次单击即可取消断点 。 2 启动调试 IDEA提供多种方式来启动程序(Launch)的调试,分别是通过菜单(Run 一 > Debug)、图标 " 绿色臭虫" 等等 3 单步调试工具介绍 :显示执行点(ALT + F10):点击查看断点位置 :步过(F8):进入下一步,如果当前行断点是调用一个方法,则不进入当前方法体内 :步入(F7):进入下一步,如果当前行断点是调用一个自定义方法,则进入该方法体内

老司机珍藏的130个网站,没人的时候偷偷看!

哈喽,各位读者老爷们,你们好,我是磊哥。 今天给大家分享一些宝藏学习资源网站,当然大家可以留言评论自己发现的优秀资源地址 搞学习 找书籍 冷知识 / 黑科技 写代码 资源搜索 小工具 导航页(工具集) 看视频 学设计 搞文档 找图片 搞学习 TED(最优质的演讲):https://www.ted.com/ 谷粉学术:https://gfsoso.99lb.net/scholar.html 大学资源网:http://www.dxzy163.com/ 简答题:http://www.jiandati.com/ 网易公开课:https://open.163.com/ted/ 网易云课堂:https://study.163.com/ 中国大学MOOC:www.icourse163.org 哔哩哔哩弹幕网:www.bilibili.com 我要自学网:www.51zxw.net 知乎:www.zhihu.com 学堂在线:www.xuetangx.com 爱课程:www.icourses.cn 猫咪论文:https://lunwen.im/ iData(论文搜索):www.cn-ki.net 文泉考试:https://www.wqkaoshi.com CSDN:https://www.csdn.net/ 找书籍 书栈网(极力推荐):https://www.bookstack.cn/ 码农之家(计算机电子书下载):www.xz577.com 鸠摩搜书:www.jiumodiary.com 云海电子图书馆:www.pdfbook.cn 周读(书籍搜索):ireadweek.com 知轩藏书:http://www.zxcs.me/ 脚本之家电子书下载:https://www.jb51.net/books/ 搜书VIP-电子书搜索:http://www.soshuvip.com/all.html 书格(在线古籍图书馆):https://new.shuge.org/ caj云阅读:http://cajviewer.cnki.net/cajcloud/ 必看网(人生必看的书籍):https://www.biikan.com/ 冷知识 / 黑科技 上班摸鱼必备(假装电脑系统升级):http://fakeupdate.net/ PIECES 拼图(30 个 CSS 碎片进行拼图,呈现 30 种濒临灭绝的动物):http://www.species-in-pieces.com/ 图片立体像素画:https://pissang.github.io/voxelize-image/ 福利单词(一个不太正经的背单词网站):http://dict.ftqq.com 查无此人(刷新网站,展现一张AI 生成的人脸照片):https://thispersondoesnotexist.com/ 在线制作地图图例:https://mapchart.net/ 创意光线绘画:http://weavesilk.com/ 星系观察:https://stellarium-web.org/ 煎蛋:http://jandan.net/ 渣男-说话的艺术:https://lovelive.tools/ 全历史:https://www.allhistory.com/ iData:https://www.cn-ki.net/ 术语在线:http://www.termonline.cn/ 写代码 GitHub:https://github.com/

对称矩阵的压缩存储、基于压缩矩阵的矩阵乘法

def disp(A):#输出方阵A n=len(A) for i in range(n): for j in range(n): print('%d'%(A[i][j]),end="") print() def compression(A,a):#压缩矩阵A到a中,A是一个对称矩阵 for i in range(len(A)): for j in range(i+1):#这两循环遍历了三角,可以理解为上三角或者是下三角 k=i*(i+1)//2+j#a中序号与A中序号之间的关系 a[k]=A[i][j] def getk(i,j):#求原矩阵中行号为i,列号为j在a中的位置 if i>=j: return(i*(i+1)//2+j) else: return(j*(j+1)//2+i) def Mult(a,b,C,n):#矩阵乘法,矩阵乘法的计算机形式的描述可以这样说,ij位置的元素的获得是这样操作的,第i行的所有元素*第j列的所有元素 for i in range(n): for j in range(n): s=0 for k in range(n):#这里是从a中获得相应的数字的 k1=getk(i,k) k2=getk(k,j) s+=a[k1]*b[k2] C[i][j]=s

在oracle中, date、datetime的区别

一、格式不同 1、date:date支持的范围是 '1000-01-01' 到'9999-12-31'。 2、datetime:datetime支持的范围是'1000-01-0100:00:00' 到 '9999-12-3123:59:59'。 二、存储空间不同 1、date:date型数值用于需要一个日期值而不需要时间部分,占用3个字节。 2、datetime:datetime型数值用于需要同时包含日期和时间信息的值,占用8个字节。 三、精度不同 1、date:date转换为datetime会增加精度,时、分、秒、毫秒数都为0。 2、datetime:datetime转换为date会丢失精度,约去时、分、秒、毫秒数。

Java内存溢出(outofmemory:Java heap space)更改堆大小

背景 在跑一个项目的时候需要构建大量对象,导致出现内存溢出错误。去网上查需要修改堆大小,于是按照网上80%的方法修改了配置,结果依然内存溢出。于是,开启了半天的刨根问底之旅。 过程 第一阶段 首先是按照网上说的方法,打开idea在上方找到help,然后点击edit custom vm options, 然后就打开了下面这个文件,然后修改-Xmx,-Xms等堆内存设置,这已经是我改的乱七八糟的结果了。 然后关闭idea重启,运行程序,不行。。。 第二阶段 我开始搜索其他方法,有一个教程说,可以改settings里面的一些关于jvm的配置,重复了几次,改完后依然没有效果。 这时我开始学习借助工具分析,在jdk的bin目录下有一个程序叫jvisualvm.exe,它是jdk自带的分析工具。打开它, 打开长这样, 在你的程序启动之后,左侧栏里会有你的程序名,双击它,在右面会出现它的概述,监视等,都可以点进去。 下面就是platform的概述,可以看到我刚刚改的乱七八糟的配置。 点击监视就可以看到cpu,内存等的运行情况。 接下来,我便开始实验,发现无论怎么改vmoptions中的配置,在platform的概述中都能更新为修改后的内容。但是监视我的运行程序时发现,我的堆内存大小一点也没有变。。。并且堆的大小还没扩容到最大堆大小便开始频繁gc,最后内存溢出(开始焦虑) 第三阶段 为了搞明白为啥没用完堆内存就溢出,继续学习工具。 在刚刚的软件中点击,工具->插件->可用插件->选择visual vm并开始下载安装。这个插件可以帮助我们看到新生代,老年代等具体的内存分配情况。 安装好后,再修改配置,跑几遍程序。发现了问题所在,无论我怎么修改配置,我的新生代,老年代的大小都没变,相当于修改无效。。。而在不断的创建对象和gc中,我的老年代满了。。。(无语) 我突然想到,还可以在程序的运行配置中添加参数,修改堆内存。于是,点击上方程序(xxxApplication)的小箭头,点击edit configurations, 然后在environment下的vm options中再加上你的修改,然后应用。 再运行程序,通过visual vm观察堆内存分配,发现okok,按照自己的配置分配内存了。完整的程序执行一遍,顺利顺利,没有内存溢出了。 至此,这个问题终于搞定了。。。(开心) 总结 之前遇到内存溢出问题的时候,也上网搜了好多答案,但是怕麻烦,所以一直拖着没有解决。今天逼着自己必须把它搞定,无论网上说的什么方法我都尝试,才有决心攻克难关。今天也学习了visual vm的使用,之前在网上看到相关用工具分析堆内存的帖子就退出去,还是畏难吧,今天按照教程打开了工具,下载了插件,发现也没有那么难,对jvm也有了新的理解。这次问题的排查过程,独立也不独立,希望以后遇到困难不要害怕,勇敢解决!

无法翻译此网页的解决办法 - GoogleTranslateIpCheck

2022年9月末,网页翻译工具谷歌翻译停止了中国区服务。 GitHub 地址:https://github.com/Ponderfly/GoogleTranslateIpCheck 我用的是win10系统,所以下载的是Windows版。下载后解压,以管理员身份运行: 输入Y: 网页翻译就可以使用了。

【已解决】Nacos2022.0.0.0-RC1 extension-configs无法注入@Value的问题

解决办法: data-id不要加yaml后缀! 正确: nacos: discovery: server-addr: 127.0.0.1:8848 config: server-addr: 127.0.0.1:8848 file-extension: yaml extension-configs: - data-id: a refresh: true - data-id: b refresh: true Spring依赖用的这三个版本: bootstrap.yml nacos: discovery: server-addr: 127.0.0.1:8848 config: server-addr: 127.0.0.1:8848 file-extension: yaml extension-configs: - data-id: a.yaml refresh: true - data-id: b.yaml refresh: true Controller @RestController @RequestMapping("/config") @RefreshScope public class ConfigClientController { @Value("${my.message}") private String message; @Value("${a}") private String a; @Value("${b}") private String b; @GetMapping("/query") public String getConfig(){ return message + a + b; } } Nacos SpringBoot无法启动 显示找不到字段

【亲测有效】删除ubuntu(ubuntu、windows双系统)后进入GNU GRUB version 2.02~beta2-36ubuntu3.28界面,手工进入ubuntu内并修复引导项

环境:ubuntu18.04和win10双系统 原因:安装双系统的时候将开机启动第一项改为ubuntu,然后在磁盘删除分区后,电脑重启无法找到开机启动第一项就会出现这个界面 输入exit即可解决问题 grub> exit 会直接进入windows 永久解决问题需要电脑重启长长按F2,进入BIOS选择boot,将开机启动第一项改为:windows boot manager(。。。) 按F10保存就可以,然后退出BIOS即可 —————————————————————————————————————————————————————— 上述方案若还不能永久解决说明引导项出现问题,下面提供两种方法1.修复引导项(ubuntu修复和windows修复均可)2.或者全部重装系统包括windows,下面提供推荐的方法修复引导项方法 进ubuntu系统 一、查找grub所在分区 我们要进ubuntu系统就要找到ubuntu所在分区,因windows没有grub,grub所在分区即ubuntu安装所在分区,在安装ubuntu系统时没有分区时是建在/boot/grub,若安装系统分区的话可能在/grub文件夹下。输入如下指令寻找 grub> ls # 查看所有硬盘及硬盘分区 显示:(hd0,gpt0),(hd0,gpt1),(hd0,gpt2),(hd0,gpt3) #显示有可能不同,hd代表硬盘,gpt0这种代表分区 #接下来一个一个查看分区内容如 grub> ls (hd0,gpt0)/boot/grub #可能会显示:error:unknown filesystem,这说明这不是我们要找的分区,接着修改硬盘号和分区号继续尝试 grub> ls (hd0,gpt0)/grub #直到显示一些代ubuntu或者linux或者内核版本信息的时候就是ubuntu安装的分区了 找到grub所在分区即找到ubuntu分区,下面进入ubuntu系统 # 以(hd0,gpt1)为ubuntu分区为例 grub> set root=(hd0,gpt1) grub> set prefix=(hd0,gpt1)/boot/grub grub> insmod normal grub> normal 下面就能进到ubuntu图像化界面了,再进行系统引导项修复 二、ubuntu系统修复引导项 # 任意打开终端输入 sudo update-grub sudo grub-install /dev/sda #这个sda不要添加任何数字如sda1或者sda0之类的,这里的sda就是指当前所在硬盘 这样就修复好了,如果有如下报错 Installing for i386-pc platform. grub-install: warning: this GPT partition label contains no BIOS Boot Partition; embedding won't be possible.

python定义字符数组

在 Python 中可以使用列表或者 numpy 数组来定义字符数组。 使用列表定义: char_array = ['a', 'b', 'c'] 使用 numpy 定义: import numpy as np char_array = np.array(['a', 'b', 'c']) 需要注意的是,numpy 默认会将数组中的元素视为数值类型,如果需要存储字符或字符串,需要指定 dtype 为 'U' 或 'S' 。 char_array = np.array(['a', 'b', 'c'], dtype='U') 如果你想要字符数组更类似c语言数组,可以使用c-types库中的c_char_Array_x来定义。 from ctypes import * char_array = (c_char *3)() char_array[0] = b'a' char_array[1] = b'b' char_array[2] = b'c'

基于ssm图书馆管理系统源码和论文

开发工具:idea (eclipse) 环境:jdk1.8 mysql5.7 演示视频: 【java毕业设计】基于ssm图书馆管理系统源码和论文 随着社会的发展,计算机的优势和普及使得图书馆管理的开发成为必需。图书馆管理主要是借助计算机,通过对用户管理、图书类型管理、图书信息管理、图书借阅管理、图书归还管理、公告信息管理等信息进行管理。减少管理员的工作,同时也方便广大用户对图书信息的及时查看以及管理。 图书馆管理系统的开发过程中,采用B / S架构,主要使用SSM技术进行开发,结合最新流行SSM框架技术。中间件服务器是Tomcat服务器,使用Mysql数据库和Eclipse开发环境。该图书馆管理包括用户和管理员。其主要功能包括管理员:首页、个人中心、用户管理、图书类型管理、图书信息管理、图书借阅管理、图书归还管理、公告信息管理、系统管理,用户:首页、个人中心、图书借阅管理、图书归还管理、我的收藏管理等功能。 本论文对图书馆管理系统的发展背景进行详细的介绍,并且对系统开发技术进行介绍,然后对系统进行需求分析,对图书馆管理业务流程、系统结构以及数据都进行详细说明。用户可根据关键字进行信息的查找自己想要的图书等。 关键词:图书馆管理系统,Mysql数据库,Java技术 package com.controller; import com.baomidou.mybatisplus.mapper.EntityWrapper; import com.baomidou.mybatisplus.mapper.Wrapper; import com.entity.TushujieyueEntity; import com.entity.TushuxinxiEntity; import com.entity.view.TushujieyueView; import com.entity.view.TushuxinxiView; import com.service.TushujieyueService; import com.service.TushuxinxiService; import com.utils.MPUtil; import com.utils.PageUtils; import com.utils.R; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import java.text.SimpleDateFormat; import java.util.*; /** * 图书借阅 * 后端接口 * * @author * @email * @date 2023-02-26 17:05:30 */ @RestController @RequestMapping("/tushujieyue") public class TushujieyueController { @Autowired private TushujieyueService tushujieyueService; @Autowired private TushuxinxiService tushuxinxiService; /** * 后端列表 */ @RequestMapping("

Leetcode:131. 分割回文串(C++)

目录 问题描述: 实现代码与解析: 回溯: 原理思路: 问题描述: 给你一个字符串 s,请你将 s 分割成一些子串,使每个子串都是 回文串 。返回 s 所有可能的分割方案。 回文串 是正着读和反着读都一样的字符串。 示例 1: 输入:s = "aab" 输出:[["a","a","b"],["aa","b"]] 示例 2: 输入:s = "a" 输出:[["a"]] 实现代码与解析: 回溯: class Solution { public: //判断是否为回文 bool isPalindrome(string s) { int head=0;//头指针 int end=s.size()-1;//尾指针 while(head<end) { if(s[head]!=s[end]) return false; head++; end--; } return true; } vector<string> path; vector<vector<string>> result;//记录结果 void backtrack(string s,int startIndex) { //起始位置大于字符串大小,说明已经找到了分割结果 if(startIndex==s.size()) { result.push_back(path); return; } for(int i=startIndex;i<s.

minikube 基础操作1

0 目录 1 基本概念(cluster,minikune) 2 一些概念(pod,eployment等) 3 常用命令 4 expose app 5 使用label 6 scale 20 问题 1 基本概念 1.1 架构 cluster指集群的意思,翻译过来就是你这套部署了kubernete的环境 图片链接 Using Minikube to Create a Cluster | Kubernetes 1.2 启动minikube minikube start 1.3 查看minikube 和minikube client server版本 kubectl version 1.4 查看cluster有哪些组件,和组件信息 kubelctl cluster-info 2 一些概念 2.1 创建deployment 创建deployment后,会有个deployment controller管理创建的deployment,创建deployment后,deployment coltroller会持续监控创建的deployment。比如当主机删除导致instance(注意是instance而不是pod,管理对象不同)删减时,deployment coltroller会检测到并重新schedule一个node,保持instance数量符合设定值。deployment的创建需要指定镜像。 kubectl create deployment kubernetes-bootcamp --image=gcr.io/google-samples/kubernetes-bootcamp:v1 创建完可以用kubectl get pods 或 kubectl get deployment查看创建结果 2.2 pods pod内的容器共享resource(volume、网络(如ip地址,port)等),也就是说,对外界来说,pod是最小操作单元,因为ip独立,pod再往里是container,container ip都一样外部难以操作,pod内部应该有管理container的机制,但对外,pod一般是最小操作单元

flowable流程变量

设置全局流程变量 流程变量 : 是跟当前 流程实例 绑定的 流程变量会存放在 act_ru_variable 和 act_hi_varinst 这两个表中 act_ru_variable的task_id_为null 启动时设置 HashMap<String, Object> map = new HashMap<>(); map.put("reason","no reason"); map.put("startTime","2023-1-20"); map.put("endTime","2023-1-21"); runtimeService.startProcessInstanceByKey("VariableDemo", map); public void test03(){ // 根据 执行实例id 查找变量 act_ru_variable List<Execution> list = runtimeService.createExecutionQuery().list(); System.out.println("list.size() = " + list.size()); for (Execution execution : list) { // 查找指定变量 Object startTime = runtimeService.getVariable(execution.getId(), "startTime"); System.out.println(execution.getName()+"==========="+startTime); Map<String, Object> map = runtimeService.getVariables(execution.getId()); System.out.println("map = " + map); } } 通过Task设置 public void test04(){ // task插入 也是 act_ru_variable 和 act_hi_varinst // 插入的时候 task_id 是 null,,, 设置全局流程变量 Task task = taskService.

Python中数组转换成字符串

python中数组转换成字符串 数组转换成字符串可以使用下面这种方式将一个数组转换成字符串,其中arr是数组的数组名。 ''.join(arr) 用上面这种方式需要确保数组里面的内容也是字符串的形式,比如: arr = ['北京','上海','广州'] 这样转换出来的结果是 '北京上海广州' 但是如果数组的内容是 arr = [1,2,3] 这种纯数字类型的数组,如果我们想将其转换成字符串的形式,我们需要通过下面这种方式转换成 '123'。 ''.join(str(i) for i in arr) 所以我们要区分数组里面原有的内容是什么样的数据类型!

CSS3技巧32:CSS3制作经典进度条

放假了,不想到处走亲戚。 窝在家里 coding 玩儿~ 看到一个很不错的进度条效果,很简单,但是很好看,就写写练练手。 HTML 结构: <!-- 进度条 --> <div class="jdt"> <div class="jd_title">HTML</div> <!-- 进度 --> <div class="jdbar"> <div class="jdper" per="50%" style="max-width: 50%; "></div> </div> <!-- 进度 end --> <div class="jd_title">CSS</div> <!-- 进度 --> <div class="jdbar"> <div class="jdper" per="40%" style="max-width: 40%; "></div> </div> <!-- 进度 end --> <div class="jd_title">JavaScript</div> <!-- 进度 --> <div class="jdbar"> <div class="jdper" per="60%" style="max-width: 60%; "></div> </div> <!-- 进度 end --> </div> <!-- 进度条 end --> CSS:

交叉编译(全志)

文章目录 一、交叉编译概念二 、香橙派交叉编译3.带WiringPi库的交叉编译 一、交叉编译概念 交叉编译,就是:在一种平台上编译,编译出来的程序,是放到别的平台上运行即编译的环境,和运行的环境不一样,属于交叉的。 例: 在进行嵌入式开发时手上有个嵌入式开发板,CPU是arm的然后在x86的平台下开发,比如Ubuntu的Linux,或者是Win 10然后就需要: 在x86的平台上,(用交叉编译器)去编译你写好的程序代码 编译生成的(可执行的)程序,是放到目标开发板,arm的CPU上运行的。 这就是所谓:在x86平台上编译,在ARM平台上运行。 二 、香橙派交叉编译 1.全志交叉编译工具链下载 交叉编译工具链下载地址 在上述网址中下载 gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz即为全志Orange Pi Zero 2 所用的应用程序的交叉编译工具链 2.交叉编译工具链的安装 (1)解压安装包 键入tar -xf gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu.tar.xz解压安装包 (2)设置环境变量 进入解压后的文件夹并进入bin目录下 aarch64-none-linux-gnu-gcc即为全志交叉的交叉编译工具 a.设置临时有效的环境变量 PATH 环境变量 export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/home/rm/tool-masters/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin games:后面为交叉编译工具链所在文件路径 b.设置永久有效的环境变量 修改工作目录下的.bashrc 隐藏文件 vi /home/RM/.bashrc 将配置的环境变量写到最后 保存退出后更新一下 source /home/rm/.bashrc 完成环境变量配置 3.交叉编译测试 在上位机编写test.c文件 并用交叉编译工具 编译 test.c #include <stdio.h> int main() { printf("hello world\n"); return 0; } ~ aarch64-none-linux-gnu-gcc ./test.c -o test 在全志下运行编译出的test可执行文件 3.带WiringPi库的交叉编译 1.下载WiringPi库wiringPi库 2.将所需的库从全志拷贝到上位机:

vue中利用ref实现更灵活的子向父传值

目录 前言一,基础代码二,层次递进的讲解用法2.1 给子组件设置ref2.2 自定义事件2.3 给子组件设置一个自定义事件 三,灵活性四,注意后记 前言 目前我们熟知的子向父传值有两种方式: 一种是在父组件中定义函数,然后将函数利用props传给子组件,子组件调用时父组件可以收到子组件的参数;另一种利用自定义事件,给子组件在父组件中绑定一个自定义事件,子组件利用$emit方式触发该自定义事件时可以将数据传给父亲。 今天介绍的是通过ref的方法实现子组件传值给父组件。这种方式比前两种方式用起来更加灵活。 这里附上涉及到的知识点链接,如有需要可以复习: Vue组件之间的数据共享讲解 Vue中ref引用操作DOM元素 其中,第一篇文章中有涉及到子向父传值的传统方式。 一,基础代码 这里放上我的App(父组件)和Son(子组件)的代码,后续所有的改动在此基础之上: (APP) <template> <div> <h2>子组件的msg:</h2> <Son></Son> </div> </template> <script> import Son from './Son.vue' export default { name: 'App', components: { Son } } </script> <style> </style> (Son) <template> <div> <h2>我是子组件</h2> </div> </template> <script> export default { name: 'Son', data() { return { msg: '巧克力小猫猿' } } } </script> <style> </style> 二,层次递进的讲解用法 2.1 给子组件设置ref 这里我们给子组件设置一个ref,并查看父组件中的this.$refs中有什么(在mounted钩子函数中打印):

Linux常用命令——telnet命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) telnet 登录远程主机和管理(测试ip端口是否连通) 补充说明 telnet命令用于登录远程主机,对远程主机进行管理。telnet因为采用明文传送报文,安全性不好,很多Linux服务器都不开放telnet服务,而改用更安全的ssh方式了。但仍然有很多别的系统可能采用了telnet方式来提供远程登录,因此弄清楚telnet客户端的使用方式仍是很有必要的。 语法 telnet(选项)(参数) 选项 -8:允许使用8位字符资料,包括输入与输出; -a:尝试自动登入远端系统; -b<主机别名>:使用别名指定远端主机名称; -c:不读取用户专属目录里的.telnetrc文件; -d:启动排错模式; -e<脱离字符>:设置脱离字符; -E:滤除脱离字符; -f:此参数的效果和指定"-F"参数相同; -F:使用Kerberos V5认证时,加上此参数可把本地主机的认证数据上传到远端主机; -k<域名>:使用Kerberos认证时,加上此参数让远端主机采用指定的领域名,而非该主机的域名; -K:不自动登入远端主机; -l<用户名称>:指定要登入远端主机的用户名称; -L:允许输出8位字符资料; -n<记录文件>:指定文件记录相关信息; -r:使用类似rlogin指令的用户界面; -S<服务类型>:设置telnet连线所需的ip TOS信息; -x:假设主机有支持数据加密的功能,就使用它; -X<认证形态>:关闭指定的认证形态。 参数 远程主机:指定要登录进行管理的远程主机;端口:指定TELNET协议使用的端口号。 实例 $ telnet 192.168.2.10 Trying 192.168.2.10... Connected to 192.168.2.10 (192.168.2.10). Escape character is '^]'. localhost (Linux release 2.6.18-274.18.1.el5 #1 SMP Thu Feb 9 12:45:44 EST 2012) (1) login: root Password: Login incorrect 一般情况下不允许root从远程登录,可以先用普通账号登录,然后再用su -切到root用户。 $ telnet 192.168.188.132 Trying 192.168.188.132... telnet: connect to address 192.

svg动画图形绘制

先介绍下绘制图形的标签 1:线段:line 2:矩形:rect 3: 圆形:circle 4:多边形:polyline(不会自动连接起点和终点) 5: 多边形:polygon (会自动连接起点和终点) viewBox 的后2值和svg的宽高设置一致即可 viewBox:‘0 0 width height’ 具体原因:看我其他关于他的讲解 1:线段:line案例 line的属性讲解: 1: x1,y1指的是第一个坐标点 2:x2,y2指的是 第二个坐标点 (二个坐标点连接为一条直线) 3: stroke-width:线段的宽度 4:stroke:线段的颜色 <template> <div class="container"> <svg width="100" height="100" viewBox="0 0 100 100"> <line x1="0" y1="10" x2="100" y2="10" stroke-width="2" stroke="blue" ></line> </svg> </div> </template> <script> export default { name: "SvgAnimation", }; </script> <script setup></script> <style lang="scss" scoped> .container { margin-top: 30px; text-align: center; svg { border: 1px solid red; } } </style> 2:矩形:rect

airflow安装及使用入门(linux)

目录 airflow 概述 安装 安装python环境 安装Airflow 修改数据库为MySQL 修改执行器 配置邮件服务器 常用命令 airflow 概述 Airflow是一个以编程方式编写,安排和监视工作流的平台 主要用于任务调度的安排;使用Airflow将工作流编写任务的有向无环图(DAG)。Airflow计划程序在遵循指定的依赖项,同时在一组工作线程上执行任务 安装 官网:Apache Airflow 安装python环境 1.首先安装anaconda/miniconda 下载地址: 可以从官网下载 :Anaconda | Anaconda Distribution 下载完成后在命令行中安装即可 bash Anaconda3-2022.10-Linux-x86_64.sh 二者的区别: conda是一种通用包管理系统,旨在构建和管理任何语言和任何类型的软件。举个例子:包管理与pip的使用类似,环境管理则允许用户方便地安装不同版本的python并可以快速切换。 Anaconda则是一个打包的集合,里面预装好了conda、某个版本的python、众多packages、科学计算工具等等,就是把很多常用的不常用的库都给你装好了。 Miniconda,顾名思义,它只包含最基本的内容——python与conda,以及相关的必须依赖项,对于空间要求严格的用户,Miniconda是一种选择。就只包含最基本的东西,其他的库得自己装。 随后加载环境变量配置文件,使其生效: source ~/.bashrc 2.创建python3.8环境 首先配置国内镜像: conda config --add channels Index of /anaconda/pkgs/free/ | 北京外国语大学开源软件镜像站 | BFSU Open Source Mirror conda config --add channels Index of /anaconda/pkgs/main/ | 北京外国语大学开源软件镜像站 | BFSU Open Source Mirror conda config --set show_channel_urls yes

cdh6 报错ClassNotFoundException: com.mysql.jdbc.Driver

/opt/cloudera/cm/schema/scm_prepare_database.sh mysql -hmaster -uroot -p'password' --scm-host master cdh6 root password 初始化数据库报错找不到驱动 java.lang.ClassNotFoundException: com.mysql.jdbc.Driver at java.net.URLClassLoader.findClass(URLClassLoader.java:387)[:1.8.0_321] at java.lang.ClassLoader.loadClass(ClassLoader.java:418)[:1.8.0_321] at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:355)[:1.8.0_321] at java.lang.ClassLoader.loadClass(ClassLoader.java:351)[:1.8.0_321] at java.lang.Class.forName0(Native Method)[:1.8.0_321] at java.lang.Class.forName(Class.java:264)[:1.8.0_321] at com.cloudera.enterprise.dbutil.DbProvisioner.executeSql(DbProvisioner.java:283)[db-common-6.3.1.96818eaab0a222aa84a7854b8d22c0c7.jar:] at com.cloudera.enterprise.dbutil.DbProvisioner.doMain(DbProvisioner.java:104)[db-common-6.3.1.96818eaab0a222aa84a7854b8d22c0c7.jar:] at com.cloudera.enterprise.dbutil.DbProvisioner.main(DbProvisioner.java:123)[db-common-6.3.1.96818eaab0a222aa84a7854b8d22c0c7.jar:] 网上说mysql驱动放在/usr/share/java/下,测试无效 最终驱动放在放在${JAVA_HOME}/jre/lib/ext 解决 驱动地址:wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.49/mysql-connector-java-5.1.49.jar

python对PDF文件操作

python对PDF文件操作 下载模块PyPDF2,以页为基本单位对PDF文件进行读写操作,无法直接操作每一页内容。 PDF文件读操作 导入函数 from PyPDF2 import PdfFileReader 1.打开文件创建reader对象,相当于PDF文件对象 reader = PdfFileReader(open('文件路径', 'rb')) 2.获取PDF文件的总页数 num = reader.getNumPages() 3.获取指定页,返回页对象 PDF文件对象.getPage(页的下标) 获取指定页, 下标从0开始,返回页对象。 PDF文件写操作 导入函数 from PyPDF2 import PdfFileWriter, PdfFileReader 1.创建writer对象; 会自动创建一个空的PDF文件 writer = PdfFileWriter() 2.添加页 writer.addPage(页对象) 3.添加空白页 writer.addBlankPage(x, y) 4.保存文件 writer.write(open('保存地址', 'wb')) PDF文件合并 1.打开两个需要合并的文件,并且创建一个空的PDF文件; 2.添加页,将两个文件的内容都取出来以需要的顺序添加到新文件中 3.保存文件 PDF文件页面操作 1.旋转 旋转的返回值是原页面旋转后的页面 页对象.rotateClockwise(旋转角度) 2.缩放 页对象.scale(x, y) 3.合并(添加水印) 需要添加水印的页对象.mergePage(水印的页对象) PDF文件创建水印 导入创建空的PDF文件的类 from reportlab.pdfgen.canvas import Canvas 导入注册字体的工具 from reportlab.pdfbase.pdfmetrics import registerFont 导入字体类 from reportlab.pdfbase.ttfonts import TTFont

powerdns 系列之二 PowerDNS Authoritative Server

PowerDNS Authoritative Server 权威服务器,直接查询数据库去尝试解析,数据库中若不存在此记录,则直接返回空结果。 os: centos 7.8.2003 pnds: 4.7.3 安装 pdns 安装 pdns auth yum install epel-release yum-plugin-priorities curl -o /etc/yum.repos.d/powerdns-auth-47.repo https://repo.powerdns.com/repo-files/el-auth-47.repo yum install pdns 安装 pdns backend 使用 postgresql 作为存储数据库,需要安装 pdns-backend-postgresql 这里有个小细节需要注意下 依赖安装 postgresql-libs 的版本较低,登录 pgsql 10 及以上会提示 SCRAM authentication requires libpq version 10 or above 。 需要 postgresql-libs 最低为 10 版本,可提前下载这两个 rpm 包 。 postgresql10.x86_64 10.23-1PGDG.rhel7 @pgdg10 postgresql10-libs.x86_64 10.23-1PGDG.rhel7 @pgdg10 安装 pdns backend yum install pdns-backend-geoip \ pdns-backend-ldap \ pdns-backend-lmdb \ pdns-backend-lua2 \ pdns-backend-mysql \ pdns-backend-odbc \ pdns-backend-pipe \ pdns-backend-postgresql \ pdns-backend-remote \ pdns-backend-sqlite \ pdns-backend-tinydns 登录数据库 创建 user、database,参考 https://doc.

如何解决Prometheus的数据回填问题

去年10月底的时候,我们的监控系统因为一个偶然的问题,出乎意料地发生了重大的故障,这次故障暴露了当前监控系统存在的一下重大隐患。 故障背景及现象 我们的监控系统基于Thanos构建,基本架构如下(箭头表示数据流向): 分布在各个区域的prometheus负责指标采集并通过远程写将数据发送给运维中心部署的Thanos套件,Thanos套件负责将指标数据持久化进对象存储并提供统一视图及统一告警能力。 某一次因为网络问题,A区域的prometheus与Thanos之间的发生了长时间中断,当网络重新连接时,A区域大量涌入的数据造成Thanos的distributor与receive组件反复崩溃重启CrashLoopBackOff,引发所有区域的prometheus远程写失败,整个系统处于瘫痪状态。 此时,prometheus端大量发生如下报错: msg="Remote storage resharding" from=1 to=200 msg="Skipping resharding, last successful send was beyond threshold" lastSendTimestamp=1673493925 minSendTimestamp=1673494034 msg="Failed to send batch, retrying" err="server returned HTTP status 503 Service Unavailable: 2 errors: backing off forward request for endpoint thanos-prod-receive-6.thanos-prod-receive-headless.thanos-prod.svc.cluster.local:10901: target not available; backing off forward request for endpoint thanos-prod-receive-7.thanos-prod-receive-headless.thanos-prod.svc.cluster.local:10901: target not available" msg="Failed to send batch, retrying" err="server returned HTTP status 500 Internal Server Error: context deadline exceeded"

(附源码)订餐app 毕业设计190711

摘 要 随着现在网络的快速发展,网络的应用在各行各业当中它很快融入到了许多学校的眼球之中,他们利用网络来做这个职位推荐的网站,随之就产生了“订餐app ”,这样就让用户订餐app更加方便简单。 对于本订餐app的设计来说,它主要是采用后台采用java语言、springboot框架,它是应用mysql数据库、Android等技术动态编程以及数据库进行努力学习和大量实践,并运用到了APP的建设中在整个系统的设计当中,具体根据网上订餐app的现状来进行开发的,具体根据用户需求实现网上订餐app网络化的管理,各类信息有序地进行存储,进入订餐app页面之后,方可开始操作主控界面,系统功能包括管理员服务端:首页、轮播图、公告栏、管理员、美食资讯、资讯分类、外卖商城列表、分类列表、订单列表、店铺展示、卖家、店铺分类、城市管理、订单配送、菜品收入、注册用户、配送员;用户客户端:首页、订单、购物车、美食资讯、我的等功能。 本论文主要讲述了订餐app开发背景,该系统它主要是对需求分析和功能需求做了介绍,并且对系统做了详细的测试和总结。具体从业务流程、数据库设计和系统结构等多方面的问题。望能利用先进的计算机技术和网络技术来改变目前的订餐app管理状况,提高管理效率。 关键词:订餐app;Android技术;Mysql数据库;Java语言 Abstract With the rapid development of the network, the application of the network is in all walks of life. It quickly integrates into the eyes of many schools. They use the network to do the website of job recommendation, and then produce the "ordering app", which makes the user ordering app more convenient and simple. For the design of this ordering app, it mainly adopts Java language and springboot framework in the background.

CentOS7安装MySQL8(超级详细图文安装)

环境介绍 : 服务器: 虚拟机 系统版本: CentOS 7 MySQL版本: 8.0 一、卸载MariaDB 1.1 查看版本:通过rpm -qa | grep mariadb 命令查看mariadb 的安装包 rpm -qa | grep mariadb 1.2 卸载:通过rpm -e mariadb-libs-5.5.56-2.el7.x86_64 --nodeps 命令装卸 mariadb rpm -e mariadb-libs-5.5.56-2.el7.x86_64 --nodeps 1.3 检查是否卸载干净:通过 rpm -qa | grep mariadb 命令再次查看 mariadb 的安装包 rpm -qa | grep mariadb 二、安装MySQL 2.1 创建安装目录 通过 cd /usr/local/ 命令进入根目录下的usr目录下的local目录,这个目录是放一些本地的共享资源的 通过 mkdir mysql 命令 在当前目录下创建一个名为 mysql 的目录 2.2 上传安装包 通过 cd mysql 命令进入 mysql 目录,

最优化期末复习

最优化期末复习 典型题型判断是否为局部最优解(非线性规划) 凸集与凸函数凸集的定义和性质定义性质 极点和极方向的定义极点方向、不同方向、极方向 表示定理凸集分离定理Farkas定理Gordan定理 凸函数定义性质判别一阶充要条件二阶充要条件 凸规划 线性规划基本概念基本性质 单纯形法两阶段法大M法 对偶原理不同形式的对偶问题对称形式非对称形式 对偶定理弱对偶定理最优性准则强对偶定理互补松弛定理 对偶单纯形法灵敏度分析价格系数改变非基变量基变量 右端向量改变增加新约束 最优性条件无约束问题的极值条件必要条件一阶二阶 充分条件充要条件 约束极值问题的最优性条件一些基础概念下降方向可行方向局部约束方向锥正则点切锥 不等式约束问题的一阶最优性条件KKT必要条件一阶充分条件 一般约束问题的一阶最优性条件KKT必要条件Lagrange版本KKT条件一阶充分条件 二阶条件必要充分 对偶问题Lagrange对偶问题对偶定理弱对偶定理及推论引理 算法闭映射二次终止性 一维搜索使用导数的最优化方法最速下降法牛顿法 共轭方向法共轭方向扩张子空间定理共轭方向法共轭梯度法 可行方向法Zoutendijk可行方向法求可行下降方向 Rosen梯度投影法正交投影矩阵梯度投影法原理 Wolfe既约梯度法 惩罚函数法外点法内点法 典型题型 判断是否为局部最优解(非线性规划) 1.写出 L ( x , w , v ) L(x,w,v) L(x,w,v)和 ∇ f ( x ) , ∇ g ( x ) , ∇ h ( x ) \nabla f(x),\nabla g(x),\nabla h(x) ∇f(x),∇g(x),∇h(x),求出 ∇ x L \nabla_xL ∇x​L和 ∇ x 2 L \nabla_x^2L ∇x2​L

Linux 环境部署 Nexus 服务

一 私服是什么? 一个特殊的远程仓库,它是架设在局域网内的仓库服务,供局域网内的开发人员使用。 当Maven需要下载构建的使用, 它先从私服请求,如果私服上没有的话,则从外部的远程仓库下载,然后缓存在私服上 ,再为Maven的下载请求提供服务。 环境: linux 系统、JDK8、Nexus 压缩包(unix)。 由于Nexus 是基于 Java 语言的,因此安装 Nexus 必须先安装好JAVA(JDK),注意: Nexus2 是基于 JDK7。 Nexus3 是基于 JDK8 。 对于 linux 系统上安装 JDK8 感兴趣的小伙伴,可以参考一下文章: 1.1 私服的作用 内网访问,节省外网带宽。 一次外网下载,内网所有用户就可以只下载私服缓存,加速 Maven 项目构建。 允许上传和下载私有库,并且不被外部访问,更加安全。 减少外部网络因素,提供项目构建的稳定性。 方便内部项目服务的依赖引用,而不需要其他项目的完整源代码。 有利于公共构件的维护 提高工作效率 等等 1.2 Nexus下载 我们选择使用最流行的开源 Maven 仓库管理软件 - Nexus,来快速搭建 Maven 私服 Nexus的官网 https://www.sonatype.com/products/repository-oss-download下载 下载方式2:百度云盘下载 下面介绍最亲民的下载方式,就是有大神下载成功的,并将资源上传到网盘后分享了出来,这样做的优点是免费、有效可用,缺点是资源有限(无法随意选择自己想要的版本),当然除了网盘之外,在CSDN本站中也有许多大佬上传了相关资源,感兴趣的小伙伴可以用积分去下载; 这里提供一个永久有效的下载地址: 文件名:nexus-3.25.1-04-unix.tar.gz 版本号:3.25.1-04 文件大小:156M左右 百度云链接:https://pan.baidu.com/s/1KzzpfA67En_nb59KQ7efEw 提取码:0000 解压: #进入 压缩包所在目录 cd /home/thp/public/nexus #解压 tar -zxvf nexus-3.25.1-04-unix.tar.gz nexus-3.25.1-04:用于实现 nexus 功能

【Nginx】使用Docker完成Nginx反向代理

本机是在CentOS7上面进行操作的 1.首先安装好Dokcer,这里不再赘述 2.Docker安装Nginx容器 2.1首先需要创建Nginx配置文件,之后完成挂载 启动前需要先创建Nginx外部挂载的配置文件( /home/nginx/conf/nginx.conf) 之所以要先创建 , 是因为Nginx本身容器只存在/etc/nginx 目录 , 本身就不创建 nginx.conf 文件 当服务器和容器都不存在 nginx.conf 文件时, 执行启动命令的时候 docker会将nginx.conf 作为目录创建 , 这并不是我们想要的结果 。 # 创建挂载目录 mkdir -p /home/nginx/conf mkdir -p /home/nginx/log mkdir -p /home/nginx/html # 生成容器 docker run --name nginx -p 9001:80 -d nginx 然后将nginx中的配置文件复制到外部环境 # 将容器nginx.conf文件复制到宿主机 docker cp nginx:/etc/nginx/nginx.conf /home/nginx/conf/nginx.conf # 将容器conf.d文件夹下内容复制到宿主机 docker cp nginx:/etc/nginx/conf.d /home/nginx/conf/conf.d # 将容器中的html文件夹复制到宿主机 docker cp nginx:/usr/share/nginx/html /home/nginx/ # 删除正在运行的nginx容器 docker rm -f nginx

vscode使用keil插件keil assistant无法编译问题

问题描述 点击编译后出现如下提示 原因分析: keil插件其实是通过命令行方式调用windows下已经安装的keil5软件,所以怀疑是git-bash终端调用不了keil的原因导致的。 解决方案: 切换vscode的默认终端为PowerShell,或Command Prompt都可以成功编译,不过需要.NET环境,如果未安装编译会自动提示安装,点击安装即可。

Dubbo——入门介绍

目录 1.概述1.1.什么是 Dubbo ?1.2.Dubbo 架构 2.Dubbo 快速入门2.1.Zookeeper 安装2.2.创建项目2.3.代码实现2.3.1.dubbo-service 模块2.3.2.dubbo-web 模块 2.4.本地启动2.5.使用 Dubbo 实现 PRC2.5.1.修改 dubbo-service 模块2.5.2.修改 dubbo-web 模块2.5.3.启动 dubbo-service 和 dubbo-web2.5.4.代码改进 3.Dubbo 高级特性3.1.dubbo-admin3.1.1.概述3.1.2.安装3.1.3.启动 3.2.序列化3.2.1.概述3.2.2.案例 3.3.地址缓存3.4.超时3.4.1.概述3.4.2.解决方案 3.5.重试3.6.多版本3.7.负载均衡3.8.集群容错3.9.服务降级 本文笔记整理来自黑马视频https://www.bilibili.com/video/BV1VE411q7dX?p=1,相关资料可在视频评论区进行获取。 1.概述 1.1.什么是 Dubbo ? (1)Dubbo 是阿里巴巴公司开源的一个高性能、轻量级的 Java RPC 框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,以及 SOA 服务治理方案。 RPC,即 Remote Procedure Call,指远程过程调用。有非常多的协议和技术来都实现了RPC的过程。比如:HTTP REST风格,Java RMI规范、WebService SOAP 协议、Hession 等等。 (2)Dubbo 官网:http://dubbo.apache.org。 1.2.Dubbo 架构 (1)Dubbo 架构如下图所示: (2)上图中的节点角色说明如下: Provider暴露服务的服务提供方Container服务运行容器Consumer调用远程服务的服务消费方Registry服务注册与发现的注册中心Monitor统计服务的调用次数和调用时间的监控中心 2.Dubbo 快速入门 2.1.Zookeeper 安装 (1)Dubbo 官方推荐使用 Zookeeper 作为注册中心,Zookeeper 的官方地址为 https://zookeeper.apache.org/,可以从中下载其安装包,这里使用的版本为 3.5.6: (2)Dubbo在 CentOS 7.

Linux系统审计详解

【推荐阅读】 浅谈linux 内核网络 sk_buff 之克隆与复制 深入linux内核架构--进程&线程 了解Docker 依赖的linux内核技术 什么是系统的审计? 审计的目的是基于事先配置的规则生成日志,记录可能发生在系统上的事件(正常或非正常行为的事件),审计不会为系统提供额外的安全保护,但她会发现并记录违反安全策略的人及其对应的行为。auditd(或 auditd 守护进程)是Linux审计系统中用户空间的一个组件,其负责将审计记录写入磁盘。 审计能够记录日志的内容 1.. 日期与事件以及事件的结果 1.. 触发事件的用户 1.. 所有认证机制的使用都可以被记录,如ssh等 1.. 对关键数据文件的修改行为等都可以被记录 使用auditd做系统的审计 使用audit监控/etc/ssh/sshd_config 当该文件发生任何变化即记录日志 通过手动和ausearch工具查看日志内容 配置audit审计系统: yum -y install audit systemctl start auditd cat /etc/audit/auditd.conf |grep log_file #查看配置文件,确定日志位置 log_file = /var/log/audit/audit.log #日志文件路径 审计规则: [root@proxy ~]# auditctl -s #查询状态 [root@proxy ~]# auditctl -l #查看规则 [root@proxy ~]# auditctl -D #删除所有规则 定义临时文件系统规则: 语法格式 auditctl -w path -p permission -k key_name path(路径) 为需要审计的文件或目录

把antd组件的英文切换为中文

默认是英文的 import { ConfigProvider } from 'antd'; import zhCN from 'antd/es/locale/zh_CN'; return ( <ConfigProvider locale={zhCN}> <App /> </ConfigProvider> );

transform三大属性

transform三大属性rotate、scale、translate 、 transform: 作用: 动画效果 优点: 执行速度 很更快 (模拟使用 GPU渲染) const [isbool, setIsbool] = useState(false) <div styleName={cs('tranform', {tranform2: isbool})}> tranform </div> <div styleName={cs('tranform-xy', {'tranform-xy2': isbool})}> tranform </div> //初始样式 .tranform, .tranform-xy { width: 100px; height: 100px; background: rgb(241, 241, 40); transform: translateX(0); } //第一个图形 .tranform2 { transform: translateX(500px); } //第二个图形 .tranform-xy { background: #F99; } .tranform-xy2 { // x, y 轴 都移动 transform: translate(100px, 50px); } rotate: rotate(angle)定义2D旋转 rotateX(angle) x 轴 横向移动

比较器的应用方法(二)

1、为什么比较器要加滞回 从下图中可以看到如果没有加滞回,当输入信号抖动较大在门槛电压Vth附近,那就回使输出电平跳动。 2、加上滞回避免输入噪声干扰 下图中输入信号在运放的反相端,当VIN从零开始增大时,由于同相端电压大于反相端,VO=VCC,此时Rf同上拉电阻并联,同相端电压VN=2.7V,当VIN电压增大超过2.7V时,VO由高电平变为低电平。 然后VIN电压减小的时候,注意减小到2.7V的时候并不能使VO从低电平跳到高电平,因为此时Rf电阻同下拉电阻并联,同相端电压VN=2.3V,所以VIN还需要继续减小,当减小到2.3V的时候,VO才会低电平跳到高电平。 这个实例中的滞回电压就是2.7V-2.3V=400mV 3、有些比较器本身就集成了滞回,查比较器手册可以注意一下。 4、上面都是说的反相端输入,同相端接门槛电压,下面介绍的是同相端输入,反相端接门槛电压。 4、同相比较器与反向比较器的阻值选择总结

实战渗透--一次对后台登录系统的简单渗透测试

某网站后台登录界面 发现有验证码框 猜想会不会存在验证码绕过的漏洞 首先随意输入用户名密码(用于抓包) 打开burp抓包 分析数据包后 找到对应的传参点 即输入的账号密码还有验证码 这里可以看到 账号和密码全都是明文传输 并没有进行加密 所以更改起来还是很容易的 把包发送至repeater 进行放包测试 先修改一下账号密码 然后放包 查看一下回显 报错信息提示了密码错误 修改一下用户名和密码 再次放包 用户名和密码均由admin改为adm 放包 查看回显结果 注意看 这时候报错信息提示账号错误 由此说明刚刚进行测试的admin账号是存在的 改回账号 再次修改密码 密码改为1111 放包查看回显结果 果然 这回报错的信息是密码错误 再修改一下验证码 看看是否能绕过 验证码由2522改为2523 报错信息提示验证码错误 此时改回验证码 改为2522 放包查看结果 此时报错信息变为密码错误 很明显此处的验证码只是在前端生成 所以可以绕过 既然验证码形同虚设 顺带想到了能否暴力破解进入后台 尝试一下是否有弱口令登录 暴力破解一下 设置爆破选区 字典设置好后直接跑 爆破出了密码 拿去登录一下 成功以管理员权限进入后台 后续还在后台中找到了文件上传点 猜测可以利用文件上传漏洞拿下服务器权限 

flowable编译

git clone -b flowable-release-6.7.2 https://github.com/flowable/flowable-engine.git 下载之后File-Open,打开工程,modules是核心代码模块 找到flowable-root.xml按下alt+f12 ,启动Terminal终端输入命令:mvn clean package -DskipTests -Pdeploy -Dmaven.javadoc.skip=true 我是先打包之后再引入的模块, 将modules中的模板全部引入,启动应用程序:flowable-ui-app 引用:https://blog.csdn.net/houyj1986/article/details/85725202 h2数据库: java编写的数据库 基于内存使用基于文件使用 使用mysql spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # &nullCatalogMeansCurrent=true 没有表会自动创建表 spring.datasource.url=jdbc:mysql://127.0.0.1:3306/flowable-demo?characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true 使用mysql,添加mysql驱动: 启动项目: 数据库中会创建对应的表: git使用 切换分支报错 : The following untracked working tree files would be overwritten by checkout 解决:git clean -d -fx git clean 参数 -d : 删除未被添加到git的路径中的文件 -f : 强制运行 -x : 删除忽略文件已经对git来说不识别的文件 -n : 显示将要删除的文件和目录 使用git clean -d -fx 会把一些程序必要的文件删除,会把git本来ignore的文件删除 https://blog.csdn.net/bencheng06/article/details/94389174 # 显示所有分支 git branch -a # 切换分支 git checkout -b 分支名字 远程分支名字

使用Sa-token实现单点登录

使用Sa-token实现单点登录 单点登录需求为何选择Sa-Token简单使用sa-token接口如何保持登录态使用拦截器实现鉴权聊聊Sa-Token的理解聊聊遇到的一些问题 单点登录需求 其实一直想写一个单点登录系统,现在的现状是公司内部有非常多项目的,然后每个项目一套登录系统,系统和系统之间存在单独的鉴权,每一个操作应用都需要登录一次的话,这样不仅仅用户体验不好,也会出现非常多重复的代码,于是单点登录的需求诞生了。 为何选择Sa-Token 轻量级且开箱即用,如果你说为何不用shiro,那么我只能说它比shiro更加轻量更加好用,只需要简单的配置和写几行代码,即可实现登录功能。 简单使用sa-token 1.往项目中引入sa-token依赖 <!-- sa-token鉴权模块 --> <dependency> <groupId>cn.dev33</groupId> <artifactId>sa-token-spring-boot-starter</artifactId> <version>1.34.0</version> </dependency> <!-- Sa-Token 插件:整合SSO 【sso单点登录依赖】 --> <dependency> <groupId>cn.dev33</groupId> <artifactId>sa-token-sso</artifactId> <version>1.34.0</version> </dependency> <!-- Sa-Token 整合 Redis (使用 jackson 序列化方式) 【后续版本管理改为父级】 --> <dependency> <groupId>cn.dev33</groupId> <artifactId>sa-token-dao-redis-jackson</artifactId> <version>1.34.0</version> </dependency> 2.编写配置文件 # 端口 server: port: 9000 # Sa-Token 配置 sa-token: # ------- SSO-模式一相关配置 (非模式一不需要配置) # cookie: # 配置 Cookie 作用域 # domain: stp.com # ------- SSO-模式二相关配置 sso: # Ticket有效期 (单位: 秒),默认五分钟 ticket-timeout: 300 # 所有允许的授权回调地址 allow-url: "

【Google Chrome浏览器离线安装包下载方法】

Google Chrome浏览器离线安装包下载方法 (谷歌浏览器离线下载方法) (谷歌浏览器离线下载方法) (离线安装包官网下载地址在最后) 1、打开 Chrome 浏览器主页:http://www.google.cn/chrome 2、地址栏最后的网址是这样的:http://www.google.cn/chrome/browser/desktop/index.html 3、在网址最后加上:?standalone=1&platform=win64,回车键后打开的是 64位下载页面,点击“下载Chrome”按钮,得到的就是 Google Chrome 64位离线安装包 其中 ?standalone=1 指离线安装包,platform=win64 指64位Windows 版本。 如果加上的只是“?standalone=1”可以用来下载32位的Chrome离线包。用“mac”替换“win”,就可以下载 Mac 版本的了。 https://www.google.cn/chrome/?standalone=1&platform=win64 (此链接为谷歌浏览器的官方下载地址,我已经添加好参数,点击直接打开页面,点击 下载Chrome 按钮,开始下载windows的64位浏览器的离线安装包,系统会默认是最新版本) ————————————————————————— 此后无正文 —————————————————————————

Java Socket官方文档学习(一)

Java Socket官方文档学习(一) 今天尝试用Java重写字节青训营的GO项目SOCK5代理 学习Java Socket包,部分内容取自Orcale官方文档由我翻译。 What Is a Socket? // 什么是Socket A socket is one end-point of a two-way communication link between two programs running on the network. Socket classes are used to represent the connection between a client program and a server program. The java.net package provides two classes–Socket and ServerSocket –that implement the client side of the connection and the server side of the connection, respectively. 一个Socket是两个运行在网络上的程序通讯链接的一个端点。Socket类被用于连接一个客户端程序和一个服务端程序。

vue3使用svg图标多种方式

方式1使用在线链接访问 在iconfont找到自己的项目的图标选择Symbol获取在线链接 2:在vue3项目中找到public的index.html进行script进行引入 打开浏览器看:这样就会自动注入到body下 在项目直接使用 //控制图标的大小 <svg style="width: 10px; height: 10px"> <use href="#icon-shanchu"></use> </svg> 显示出了删除的图标 封装的写法(上面的代码写着太重复下面进行封装) 1:新建一个专门获取svg图标的组件 icon.vue (svg/index.vue) <template> <div> <svg :style="style"> <use :href="names"></use> </svg> </div> </template> <script setup> import { defineProps, withDefaults } from "vue"; const props = defineProps({ name: { type: String, default: "", }, style: { type: Object, default: () => { return { width: 10, height: 10, color: "", }; }, }, }); const names = `#${props.

定义一个Student类,包含三个属性 学号、姓名、成绩(0-100),包含方法“构造方法”、“获得学号”、“获得姓名”、“获得成绩”; 定义一个测试类,在测试类中依次生成6个Student类型的学生...

这是一个示例代码: import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Random; class Student { private int id; private String name; private int score; public Student(int id, String name, int score) { this.id = id; this.name = name; this.score = score; } public int getId() { return id; } public String getName() { return name; } public int getScore() { return score; } public void setScore(int score) { this.score = score; } } class Test { public static void main(String[] args) { Random r = new Random(); List<Student> students = new ArrayList<>(); for (int i = 1; i <= 6; i++) { students.

创建函数getSum,封装计算1-100之间整数的和 ;计算任意两个数相加的和;计算任意两个年份之间的所有闰年数量;判断一个数是否为素数;计算1到任意数之间整数的和

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> </head> <body> <input type="text" placeholder="请输入一个数" id="num"> <button id="btn">查看</button> <script> // 创建函数getSum,封装计算1-100之间整数的和 最后多次调用 function getSum(){ for(var i=1,sum=0;i<=100;i++){ sum+=i } console.log(sum); } getSum() // 计算任意两个数相加的和 function add(a,b){ console.log(a+b); } add(3,5) // 计算任意两个年份之间的所有闰年数量 function getCount(n1,n2){ for(var i=n1,count=0;i<=n2;i++){ if(i%4===0 && i%100!==0 || i%400===0){ count++ } } console.log(count); } getCount(2000,2100) // 判断一个数是否为素数 btn.οnclick=function () { var n=num.value console.log(n); for(var i=2,count=0;i<n;i++){ if(n%i===0){ count++ break } if(count===0){ alert('素数') }else{

命令行 PDF 转换器:::fCoder 2PDF

命令行 PDF 转换器 2PDF 是一个专业的命令行实用程序,用于以批处理模式将办公文档和图像转换为 PDF。2PDF,基于命令行界面和语法,通过简单的标准命令提供对批量转换为 PDF 的完全控制。 从 Windows 命令提示符将文档和图像转换为 PDF 2PDF 可以将 PDF 和几乎任何图像文件或文档转换为可移植文档格式 (PDF) 格式。该工具主要面向开发人员和系统管理员,具有广泛的可定制转换选项。它是一个强大的命令行实用程序,可以在 PC、服务器上使用或内置到任何应用程序中。2PDF 是一款先进的 PDF 转换器,可以完全自动化您的日常任务。 从命令行创建 PDF PDF 是一种流行的格式,旨在呈现数据。使用 2PDF,您可以从 Word、图像和其他文件创建 PDF,也可以一次创建多个 PDF 文件。 拆分和合并文档,提取 PDF 页面 2PDF 提供各种参数,可以帮助您管理多页文档,以便合并文件、合并不同的文件类型或将多个文件拆分为单独的页面。 将水印添加到 PDF (文本或图像) 在您的文档或图像上放置水印可以保护您的项目免受未经授权的使用或添加一些额外的信息来输出 PDF 文件。 自动旋转和旋转 PDF 中的页面 2PDF允许您将页面旋转设置到一定程度,自动旋转(页面方向)。您还可以设置背景颜色和旋转方向:顺时针或逆时针。 使用 OCR 创建可搜索的 PDF 2PDF可以使输出的PDF文件可搜索,以便您可以查找和编辑文本。您可以从扫描、图像和其他不可搜索的文件中获取文本。可用语言包括英语和其他欧洲语言。 按计划或通过脚本运行文件转换 无需手动执行命令!只需通过 Windows 任务计划程序设置基于时间或事件的触发器。或者,使用简单的 BAT、CMD 或 VBS 脚本。 将 DOCX、XLSX、JPEG、TIFF、PNG、HTML 等保存为 PDF 2PDF通过命令行将各种格式转换为PDF:PDF文档包括PDF Portfolio、Microsoft Word DOC、DOCX、Microsoft XPS文件、Excel XLS、XLSX和XLSM文档、PowerPoint PPT、PPTX演示文稿、TXT和RTF文本文件、HTML页面、PostScript PS、EPS 文件、Visio 和 Publisher 文件;Photoshop PSD、TIFF 和 CorelDraw 图像、相机 RAW 照片等。

SocketCAN 命名空间 VCAN VXCAN CANGW 举例

文章目录 NAMESPACESocketCAN最新 can-utils 安装VCAN 举例VXCAN 举例CANGW 举例参考 NAMESPACE namespaces, 命名空间, 将全局系统资源包装在抽象中, 使命名空间中的进程看起来拥有自己全局资源的独立实例. 命名空间的一个用途是实现容器. Linux 命名空间类型及隔离物(Isolates): Cgroup, Cgroup根目录IPC, System V IPC, POSIX消息队列Network, 网络设备, 堆叠, 端口等Mount, 挂载点PID, 进程IDTime, 启动和单调时钟User, 用户和组IDUTS, 主机名和NIS域名 随着不断发展, 命名空间的类型也可能继续增删. SocketCAN 属于网络, 所以本篇主要是用到 Network 网络命名空间. SocketCAN SocketCAN, 是Linux的CAN协议实现, 使用 Berkeley socket API, Linux网络堆栈, 把 CAN 设备驱动实现为网络接口. CAN 的 socket API 设计与 TCP/IP 协议尽可能相似, 熟悉网络编程就能轻松的使用 SocketCAN. SocketCAN 网络层协议和帧处理 的参考示意图: 其中: CAN_RAW, 读取和写入 CAN 帧, 经过了接收过滤器(receive filters), Linux ns时间戳, 单个CAN口允许多个应用独立运行, 本地回显可实现网络透传, CAN_RAW 经常配合 bind 使用CAN_BCW, Broadcast Manager, 循环消息的计时器和过滤器支持, 收发路径功能, 逐位过滤 CAN 帧 payload, 检测超时, 多路 CAN 消息的即时数据更新, CAN_BCW 需要配合 connect 使用, 当使用 recvfrom() 而不是 read() 检索BCM套接字消息时, can_ifindex 提供了原始 CAN 接口.

Linux常用命令——usermod命令

在线Linux命令查询工具(http://www.lzltool.com/LinuxCommand) usermod 用于修改用户的基本信息 补充说明 usermod命令用于修改用户的基本信息。usermod 命令不允许你改变正在线上的使用者帐号名称。当 usermod 命令用来改变user id,必须确认这名user没在电脑上执行任何程序。你需手动更改使用者的 crontab 档。也需手动更改使用者的 at 工作档。采用 NIS server 须在server上更动相关的NIS设定。 语法 usermod(选项)(参数) 选项 -c<备注>:修改用户帐号的备注文字; -d<登入目录>:修改用户登入时的目录; -e<有效期限>:修改帐号的有效期限; -f<缓冲天数>:修改在密码过期后多少天即关闭该帐号; -g<群组>:修改用户所属的群组; -G<群组>;修改用户所属的附加群组; -l<帐号名称>:修改用户帐号名称; -L:锁定用户密码,使密码无效; -s<shell>:修改用户登入后所使用的shell; -u<uid>:修改用户ID; -U:解除密码锁定。 参数 登录名:指定要修改信息的用户登录名。 实例 将 newuser2 添加到组 staff 中: usermod -G staff newuser2 修改newuser的用户名为newuser1: usermod -l newuser1 newuser 锁定账号newuser1: usermod -L newuser1 解除对newuser1的锁定: usermod -U newuser1 增加用户到用户组中: apk add shadow # 安装 shadow 包, usermod 命令包含在 usermod 中 usermod -aG group user # 添加用户到用户组中 -a参数表示附加,只和-G参数一同使用,表示将用户增加到组中。