禁止使用本文的知识进行违法犯罪活动!!学习这些内容是为了更好的防范钓鱼网站
详见我的github仓库
Setoolkit : Social-Engineer Toolkit(社会工程学工具包)
其作为一款开源的社工学套件,通常结合 metasploit 来使用。Social-Engineer Toolkit 专 门 用 于 社 会 工 程 的 高 级 攻 击 包 。SET 由 David Kennedy(ReL1K)编写,并在社区人员的大量帮助下,它包含了 以前从未见过的攻击工具集。渗透测试期间,工具包中内置的攻击工具可以进行有针 对性地集中攻击。SET 的主要目的是自动化并改进社会工程学攻击。它能够自动生成隐 藏了 EXP 的网页或电子邮件、木马文件、消息,同时还能使用 Metasploit 的 payload, 例如网页一旦被打开便会连接 shell。该版本的 SET 可植入多种 powershell 并进行任 意端口的转发,同时 SET 不会触及硬盘且使用已经进入白名单的进程,因此不会触发杀软的报警。
实验工具: 公网vps(不建议使用阿里腾讯等国内vps厂商)Ubuntu 20.10 x64物理机/虚拟机一台 购买国外vps时需要注意的一点是由于部分ip端被墙,因此导致无法ping通。此时应及时更换服务器ip
实验目标: 使用setoolkit套件完成钓鱼网站的搭建,并尝试将本地设备以dns污染的方式进行强制访问。
实验过程 首先需要在vps上部署setoolkit,官方开源项目点此进入
git clone https://github.com/trustedsec/social-engineer-toolkit/ setoolkit/ cd setoolkit pip3 install -r requirements.txt python3 setup.py 输入setoolkit进入工具包
此次钓鱼网站的搭建需要进入1(social-engineering attacks)–>2(web attack vectors)–>3(credential harvester attack method)
安卓Studio(AS)拷贝一个项目到其它计算机报错 (来自CSDN某个用户评论的回答)
一、
1.<应该(可能)是两台电脑的gradlel配置不同导致的。 先在自己电脑上的新建一个项目,将这个项目中的 .gradle gradle build.gradle local.properties 这几个文件复制下来。 替换导过来的项目中的这些文件。 然后再打开就可以了>
2.打开Android Studio报错“Error running ***: Please select Android SDK”
原文链接:
https://blog.csdn.net/aqi00/article/details/78858336/
说是由于Android Studio异常关闭,使得某些配置文件损坏,因此需要在线更新SDK才能恢复被损坏的文件。解决办法如下:
首先依次选择主菜单“File”——“Settings”,菜单路径如下图所示:
上述菜单操作打开设置窗口,然后依次展开“Appearance & Behavior”——“System Settings”——“Android SDK”,在右边的设置界面编辑SDK的路径。如下图所示,单击SDK目录输入框右边的“Edit”链接;
单击“Edit”链接之后打开SDK的设置界面如下图所示,这里SDK的目录保持不动,单击页面下方的“Next”按钮,在下一个页面继续单击“Next”按钮,等待Android Studio下载最新的编译工具,我这边是下载了最新的27.0.2版的build-tools。下载完成后单击页面右下角的“Finish”按钮完成更新操作。
回到Android Studio的主界面,此时会自动同步编译工具并重新编译,等待重编完成,即可正常执行Run app的操作了(或者关闭重新打开项目)。
二、
原文链接【AndroidStudio导入项目不报错技巧_RedKeyer的博客-CSDN博客】https://blog.csdn.net/RedKeyer/article/details/82751176
日常工作中,难免要导入别人的项目,进行参考(阅读学习)、研究(黏贴复制)。但导入过程往往异常曲折,经常各种报错。我们可以通过以下步骤,尽量减少报错的出现。(以下步骤,需要本机gradle版本 >= 要比导入项目gradle)
步骤1、
修改build.gradle 文件中, classpath的gradle版本与自身电脑中,AndroidStudio创建的新项目gradle的版本相同。
步骤2、
将自身电脑中,AndroidStudio创建新项目的gradle文件夹,替换要导入项目的gradle文件夹。
步骤3、
及时调整网络状态,科学上网。
项目导入时,AndroidStudio会检测要导入项目中需求的库文件,本机是否存在。不存在,则联网下载。这个下载过程,取决于网速。
02 对for循环的理解 理解下面两个代码运行之后的区别:
int main(){ int a, x; for(a = 0, x = 0; a <= 1 && ! x ++; a ++){ a ++; } cout << a << x << endl; return 0; } int main(){ int a, x; for(a = 0, x = 0; a <= 1 && ! x ++; ){ a ++; } cout << a << x << endl; return 0; } 解析:
01 名字的作用域 理解下面代码,尝试写出输入输出。
int reused = 42; int main(){ int unique = 0; cout << reused << " " << unique << endl; // #1 int resued = 0; // 如果该行是 int reused; 或者 int reused = reused; 呢? cout << resued << " " << unique << endl; // #2 cout << ::reused << " " << unique << endl; // #3 } 解析:
输出#1中,出现在局部变量的reused之前,因此这条语句使用全局作用域中定义的名字reused,故输出42 0;输出#2发生在局部变量定义之后,此时局部变量resueed正在作用域内,因此第二条输出语句使用的局部变量而非全局变量,故输出0 0;如果定义reused使用int reused;或int reused = reused;将是一个未定义的值,并不会报错,就意思当resued建立的那一刻,它就已经覆盖了全局变量。输出#3有使用作用域操作符来覆盖默认的作用域规则,因为全局作用域并没有名字,所以作用域操作符左侧为空,结果是第三条输出语句使用全局变量reused;
对效率工具感兴趣的可以看一看我的往期视频~
10个良心网站推荐第三期 10个良心网站推荐
10个良心网站推荐第二期 av76255938
13个逆天网站工具 av70359966
10个改变生活的网站 10个改变生活的网站
本期推荐:
1.VideoFK:在线视频抓取下载工具 [https://www.videofk.com/]
2.RRYSJ:人工智能字幕听译工具 [http://www.1sj.tv/]
3.全历史:历史内容聚合网站 [https://www.allhistory.com/]
4.设计师专属字体下载 +字体识别工具 +字体商用查询 [http://www.hellofont.cn/]
[http://www.qiuziti.com/]
[http://fonts.safe.360.cn/]
5.【已删除】
6.UzerMe云端办公工具[https://www.uzer.me/]
7 SoBooks 强大的电子书资源网站[https://sobooks.cc/]
8.最强大的全品类素材下载网站[http://www.aigei.com/]
9.一键式设计工具+智能抠图[https://www.gaoding.com/]
10 .虫部落 重度网络资源藏家社区[https://www.chongbuluo.com/]
【导语】2020年计算机软考备考已经启动,为了方便考生及时有效的备考,那么,无忧考网为您精心整理了2020年计算机软考《网络管理员》考点解析:局域网维护注意事项,希望大家及时查阅学习。如想获取更多计算机软考的备考资讯,请关注无忧考网的更新。
2020年计算机软考《网络管理员》考点解析:局域网维护注意事项
使用局域网办公的用户,经常会使用网络来打印材料和访问文件。由于某种原因,网络访问的速度可能会不正常,这时我们往往会错误地认为导致网速降低的原因可能是网络中的某些设备发生了瓶颈,例如网卡、交换机、集线器等,其实对网速影响的还是服务器硬盘的速度。因此正确地配置好局域网中服务器的硬盘,将对整个局域网中的网络性能有很大的改善。通常,我们在设置硬盘时需要考虑以下几个因素:
服务器中的硬盘应尽量选择转速快,容量大的那种,因为硬盘转速快,通过网络访问服务器上的数据的速度也越快;
服务器中的硬盘接口是SCSI型号的,因为该接口比IDE或EIDE接口传输数据时速度要快,它采用并行传输数据的模式来发送和接受数据的;
如果条件允许的话,我们可以给网络服务器安装硬盘阵列卡,因为硬盘阵列卡能较大幅度地提升硬盘的读写性能和安全性;
当然在这里大家还要注意的是,在同一SCSI通道,不要将低速SCSI设备(如CD)与硬盘共用,否则硬盘的SCSI接口高速传输数据的性能将得不到发挥。
一、正确使用“桥”式设备
“桥”式设备通常是用于同一网段的网络设备,而路由器则是用于不同区段的网络设备。
我们所在单位,曾经安装一套微波联网设备,物理设备联通以后,上网调试,服务器上老是提示当前网段号应是对方的网段号。将服务器的网段号与对方改为一致后,服务器的报警消失了。啊!原来这是一套具有桥接性质的设备。后来与另外一个地点安装微波联网设备,换用了其他一家厂商的产品,在连接以前我们就将两边的网段号改为一致,可当装上设备以后,服务器又出现了报警:当前路由错误。修改了一边的网段以后,报警消失了。由此可见,正确区分“路由”设备和“桥式”设备,在设置网络参数方面是很重要的。
二、按规则进行连线
连接局域网中的每台计算机都是用双绞线来实现的,但是并不是用双绞线把两台计算机简单地相互连接起来,就能实现通信目的的,我们必须按照一定的连线规则来进行连线。
我们曾经试图把两台相距100米以外的计算机用双绞线连接起来,从而实现通信,但无论怎么努力都没有连接成功,后来经行家指点,双绞线的连接距离不能超过100米。另外,我们如果需要连接超过100米的两台计算机时,必须使用转换设备,在连接转换设备和交换机时,我们还必须进行跳线。这是因为以太网中,一般是使用两对双绞线,排列在1、2、3、6的位置,如果使用的不是两对线,而是将原配对使用的线分开使用,就会形成串绕,从而产生较大的串扰(NEXT)。对网络性能有较大影响。10M网络环境这种情况不明显,100M的网络环境下如果流量大或者距离长,网络就会无法联通。
三、严格执行接地要求
由于在局域网中,传输的都是一些弱信号,如果操作稍有不当或者没有按照网络设备的具体操作要求来办的话,就可能在连网中出现干扰信息,严重的能导致整个网络不通;特别是一些网络转接设备,由于涉及到远程线路,它对接地的要求非常严格,否则该网络设备将达不到规定的连接速率,从而在联网的过程中产生各种莫名其妙的故障现象。
曾经无意将路由器的电源插头插在了市电的插座上,结果128KDDN专线就是无法和因特网联通。电信局来人检查线路都很正常,最后检查路由器电源的零地电压,发现不对,换回到UPS的插座上,一切恢复正常。另外一次,路由器的电源插头接地端坏掉,从而造成数据包经常丢失,做PING连接时,时好时坏,更换电源线后一切正常。由此可见,我们在使用网络设备时,一定要在设备规定的条件下进行,否则将会给我们的工作带来很大的麻烦。
四、使用质量好、速度快的新式网卡
在局域网中,计算机与计算机之间不能通信是很正常的事情,引起的故障原因可能有很多。
局域网中出现的故障大部分与网卡有关,或者是网卡没有正确安装好,或者是网络线接触不良,也有可能是网卡比较旧,不能被计算机正确识别,另外也有的网卡安装在服务器中,经受不住大容量数据的冲击,最终报废等。因此,为了避免上述的现象发生,我们一定要舍得投资,如果网卡是安装在服务器中,一定要使用质量好的网卡,因为服务器一般都是不间断运行,只有质量好的网卡才能长时间进行“工作”,另外由于服务器传输数据的容量较大,因此我们购买的网卡容量必须与之匹配,这样才能实现“好马配好鞍”。
五、合理设置交换机
交换机是局域网中的一个重要的数据交换设备,正确合理地使用交换机也能很好地改善网络中的数据传输性能。
我们曾经将交换机端口配置为100M全双工,而服务器上安装了一块型号为Intel100M EISA网卡,安装以后一切正常,但在大流量负荷数据传输时,速度变得极慢,最后发现这款网卡不支持全双工。将交换机端口改为半双工以后,故障消失了。这说明交换机的端口与网卡的速率和双工方式必须一致。目前有许多自适应的网卡和交换机,按照原理,应能正确适应速率和双工方式,但实际上,由于品牌的不一致,往往不能正确实现全双工方式。明明服务器网卡设为全双工,但交换机的双工灯就是不亮,只有手工强制设定才能解决。因此,我们在设置网络设备参数时,一定要参考服务器或者其他工作站上的网络设备参数,尽量能使个设备匹配工作。
2020年计算机软考《网络管理员》考点解析:局域网维护注意事项.doc
下载Word文档到电脑,方便收藏和打印[全文共2335字]
编辑推荐:
下载Word文档
First:的说明:
1、标签为input元素定义标注(标识)
2、label元素不会像用户呈现任何特殊的效果,仅作为显示
扩展:不过,它为鼠标用户改进了可用性。如果您在label元素内点击文本,就会触发此控件。就是说,当用户选择该标签是,浏
览器就会自动将焦点转到和标签相关的表单控件上
前提:label标签的for属性值应当与相关元素的id属性值相同Second:属性的详细说明:
3、for属性
规定与那个表单元素绑定
作用是:在点击label是会自动将焦点移动到绑定的元素上
例如:
boy
girl
用户名:
说明:特别是使用CheckBox,如果没绑定的话需要鼠标点击小方框,才可以选中或不选,绑定以后label就可以改变CheckBox的值,radio的值,以及让焦点聚集到文本输入框中
4、form属性(HTML5新增)
规定label字段所属一个或多个表单(位于表单之外的标签)
form的属性值必须是其所属表单的id值
如使用一个以上的引用,请使用空格分隔的列表
有些人抱怨说,当他们设法在win10专业版上创建或添加新用户帐户时,单击“ 将其他人添加到此PC”,Windows就不会将他带到任何地方,并且将其他人添加到此PC无法正常工作。还有其他用户找到了选项添加其他人到这台电脑已被灰色。
虽然他们对这个问题感到愤怒,但他们已经尝试了很多方法来修复它,例如重启PC和检查WIFI连接,但无济于事。
如果它与您相同,那么您最好参考本教程。
解决方案1:通过命令提示符将其他人添加到此PC
现在您无法在帐户设置中添加帐户,为什么不尝试使用命令来更改方式并充分利用命令提示符来执行此操作。您应该确保使用命令提示符作为管理员。
1.点击Windows + R打开Run。
2.输入net user / add,然后单击OK。这里以aaa为例。
弹出以下窗口的那一刻,您将在“常规”选项卡下单击“ 添加 ”。
然后通过这种方式,您将解决问题将其他人添加到此PC无法正常工作。您可以在Win10专业版中创建或添加新帐户。
解决方案2:从用户帐户向此PC添加其他人
至于这个添加其他人到这台PC不工作的问题,你很自然地改变帐户设置。你也可以认真地尝试这种方式。
1.按Windows + R进入运行。
2.将控制userpasswords2复制或输入到框中,然后单击“ 确定”。
3.在用户选项卡下,单击添加。如果您发现“添加”显示为灰色,建议您勾选选项用户必须首先输入用户名和密码才能使用此计算机。完成此步骤后,点击“确定”以在Win10专业版上执行此操作。
4.选择“ 登录而不使用Microsoft帐户”,这样您就可以在Windows上向计算机添加新帐户。
5. 依靠您的喜好单击Microsoft帐户或本地帐户。
然后,Win10专业版将在Win10专业版上拥有一个新帐户,也就是说,您已成功修复了未能将其他人添加到此PC的问题。
总而言之,从这篇文章中,您可以轻松得出结论,即解决此问题无法将新用户添加到此PC或说该选项将其他人添加到此PC不能在Win10专业版上运行,您有能力导航到命令提示符和用户帐户。
大专需要读几年
大学专科(高职专科),是以培养职业技能型高等职业人才为主要目标,即大学专科的目标是理论化,实用化,是在完全中等职业教育的基础上培养出一批具有大学专科理论知识的职业人才。以下是小编为大家整理大专需要读几年相关内容,文章希望大家喜欢!
一、大专要读几年
大专:也称专科,是指高职(专科)学历教育,是在完成中等学历教育的'基础上,再培养出一批具有高等学历教育文化知识专业知识技术的人。
大专学制可分为三种:两年、三年和五年。其主要还是看学校,每个学校的毕业时间也不一样,还要看所学专业。
1、两年制大专:就是在学校上一年,第二年就实习,只要交两年学费。但道是毕业证书都需要三年才能拿到,两年制大专一般比较少见,有一些两年制的大专专业,例如:计算机类、市场营销类、机械设计制造类、教育类。
2、三年制大专:主要是招高中毕业生,一般的大专都是3年制的,所以时间为3年,但是很多大专都会在两年半的时候就会让你出学校,而另外半年是属于实习期。
3、五年制大专:主要由高等职业技术学校承办,也称五年制大专,是初中毕业生上大学的最快途径、我国高等职业教育重要组成部分。也就是中专先要读两年,大专再读三年,五年制大专包括五年一贯制与三二分段制。
二、大专学制的划分
1、高等职业学校要先进一步优化面向初中应届毕业生的三二分段制和五年一贯制招生专业结构,一般是以艺术、护理、体育、学前教育和技术含量高、培养周期长的专业为主,再合理安排招生计划。
2、三二分段制学生完成中等职业教育阶段培养任务后,通过了省级高等学校招生委员会组织的考试,或者经省级高等学校招生委员会授权的高等职业学校组织的考试的,会被有关高等职业学校录取。
3、五年一贯制学生在完成了中等职业教育阶段学习任务,以及达到一定相关的要求后,就可以直接进入高等职业教育阶段学习。
【大专需要读几年】相关文章:
文章目录 前言一、Vue风格指南组件名为多个单词Prop 定义应尽量详细为 v-for 设置 key 值避免 v-if 和 v-for 一起使用为组件样式设置作用域模板中的简单表达式指令缩写组件/实例的选项顺序更多内容 二、JS规范1. 引用2. 对象3. 数组4. 解构赋值5. 字符串6. 函数7. 模块8. 对象属性9. 变量声明10. 比较运算符&相等更多内容 三. css规范1. 属性书写顺序2. 代码大小写3. 选择器4. 代码易读性5. 变量更多内容 四. HTML规范1. HTML代码大小写2. 元素属性3. 纯数字输入框4. 代码嵌套更多内容 五. 代码Commite规范格式type 规则(必填)scope 规则(必填)subject 规则(必填)body 规则(选填)footer 规则(选填)示例错误示例其他事项更多内容 前言 该文章旨在增强团队开发协作、提高代码质量和打造开发基石的编码规范。
一、Vue风格指南 组件名为多个单词 可以避免跟现有的以及未来的 HTML 元素相冲突,因为所有的 HTML 元素名称都是单个单词的 详情 // bad app.component('todo', { // ... }) // good app.component('todo-item', { // ... }) Prop 定义应尽量详细 prop 的定义应该尽量详细,至少需要指定其类型 详情 // bad props: ['status'] // good props: { status: String } // better props: { status: { type: String, required: true, validator: value => { return [ 'syncing', 'synced', 'version-conflict', 'error' ].
SCI回复审稿意见的模板(大修、小修回复模板) 1.模板 Dear Editors and Reviewers: Thank you for your letter and for the reviewers’ comments concerning our manuscript entitled “Paper Title” (ID: number). Those comments are very valuable and very helpful for revising and improving our paper, as well as the important guiding significance to our researches. We have studied comments carefully and have made correction which we hope meet with approval. Revised portion are marked in red in the paper.
不同于普通数据类型, 集合基于hash表存储, 而非连续存储.
集合的声明与字典一样, 都是大括号{}, 唯一不同的是, 字典内是键值对, 而集合内是多种数据类型.
声明空集合时使用empty_set = set(), 而不能用empty_set = {} {} 代表空字典
集合中只会保留不同的数据类型, 所以, 集合通常被用作去重
增 add 向集合中增加元素 pet_set = {"dog", "cat", "goose", "cat", "sheep"} pet_set.add("pig") print(pet_set) # {'dog', 'cat', 'pig', 'goose', 'sheep'} copy 复制一份集合 注意: 直接赋值时, 两个结合共享同一份内存空间, 一个集合改变会导致另一个集合改变
pet_set = {"dog", "cat", "goose", "cat", "sheep"} animal_set = pet_set.copy() pet_set.remove("dog") print(animal_set) # {'dog', 'cat', 'sheep', 'goose'} update 将另一个集合合并的当前集合中 pet_set = {"dog", "cat", "goose", "cat", "sheep"} animal_set = {"
更详细的库、功能块介绍文件,找BestMrRight交流。
ST程序自动校注工程
\TwinCAT_3_PLC_Lib_Tc2_DALI_EN.txt
4.1 POUs
4.1.1 High-Level commands
4.1.2 Low-Level commands
4.1.3 Third-party function blocks
4.1.4 Error codes
4.1.5 [obsolete]
4.2 DUTs
4.2.1 Enums
4.2.2 Structures
4.2.3 [Obsolet]
4.3 Integration into TwinCAT
4.3.1 KL6821 with PC system (CX5120)
5.1 Support and Service
\TwinCAT_3_PLC_Lib_Tc2_DataExchange_EN.txt
3.1 FB_ReadAdsSymByName
3.2 FB_WriteAdsSymByName
3.3 FB_WriteBoolOnDelta
3.4 FB_WriteByteOnDelta
3.5 FB_WriteWordOnDelta
3.6 FB_WriteDWordOnDelta
3.7 FB_WriteRealOnDelta
3.8 FB_WriteLRealOnDelta
4.1 FB_CheckWatchdog
4.2 FB_WriteWatchdog
5.1 E_AdsComMode
6.1 Library version
\TwinCAT_3_PLC_Lib_Tc2_DMX_EN.txt
在win10系统中,有自带远程桌面连接功能,可以方便小伙伴们远程控制其他计算机来进行各种操作,然而有不少
错误提示:
远程桌面时,出现由于以下原因之一无法连接到远程计算机的情况。
1)未启用对服务器的远程访问
2)远程计算机已关闭
3)在网络上远程计算机不可用
解决方法如下:
【Win+r】这是打开运行的命令,输入远程连接命令,mstsc打开远程桌面方法
1)看被远程机器是否勾选了“允许远程用户连接到此计算机”的选项。鼠标右键系统桌面的“计算机”便捷方式图标点选“属性”键值。
2)在“计算机属性”面板中点选“远程设置”一项。
3)点击“远程”选项卡,如下图所示。
4)开启“远程系统属性”后,就可看见“允许运行任意版本远程桌面的计算机连接”跟“仅允许运行使用网络级别身份验证的远程桌面的计算机连接”两项,按照个人需求勾选这两项中的任意一项,最后点“应用——确定”键值即可。
5)看被远程计算机的管理员账户是否设置了秘密,如果没有设置密码无法远程连接。
6)看被远程计算机自带防火墙是否关闭,没有关闭关了就行(右键右下角的网络连接——打开防火墙设置)。
上述给大家讲解的便是win10远程桌面提示由于以下原因之一无法连接的解决教程,碰到相同情况的小伙伴们可以学习上面的方法来进行解决。
对于cpu和芯片的问题,很多朋友搞不清楚它们的不同,有的认为cpu就是芯片,那么cpu是芯片吗?芯片和cpu有什么不同?它们的关系如何呢?今天就给大家具体介绍下这些问题,以供参考。
cpu是芯片吗?
CPU就是芯片,是作为计算机系统的运算和控制核心,是信息处理、程序运行的最终执行单元。
CPU一般由逻辑运算单元、控制单元和存储单元组成。在逻辑运算和控制单元中包括一些寄存器,这些寄存器用于CPU在处理数据过程中数据的暂时保存。一般在市面上购买CPU时所看到的参数一般是以(主频\前端总线\二级缓存)为格式的。例如Intel P6670的就是(2.16GHz\800MHz\2MB)。
cpu和芯片的关系
两者关系:CPU属于芯片的一种
很多电子设备中,主要的芯片,被叫做主控芯片=主芯片,往往都是CPU,或者是和CPU概念很类似的SoC,MCU。
二者的区别是芯片集成了上外围器件,CPU不带外围器件(例如存储器阵列),是高度集成的通用结构的处理器,CPU是一种数字芯片,只是众多芯片中的一类。
芯片和cpu区别通俗的讲就是,如果把中央处理器CPU比喻为整个电脑系统的心脏,那么主板上的芯片组就是整个身体的躯干。
cpu和其他芯片的区别
1、功能上的区别
cpu的功能是顺序控制、操作控制、时间控制、数据加工,解释计算机指令以及处理计算机软件中的数据。电脑中所有操作都由CPU负责读取指令,对指令译码并执行指令的核心部件。
而芯片的功能是提供对CPU的类型和主频、内存的类型和最大容量、ISA/PCI/AGP插槽、ECC纠错等支持。
2、构成不同
芯片是指将电子逻辑门电路用激光刻录到硅片上,从而构成各种各样的芯片,当今集成度最高、功能最强大的应该CPU芯片了。CPU是指所有时期,各种电子元件构成的计算机中央处理器的统称。
3、定义不同
芯片在电子学中是一种把电路(主要包括半导体设备,也包括被动组件等)小型化的方式,并通常制造在半导体晶圆表面上,集成电路块的代称,记忆不异常变化的意思是这种记忆类型是不需要不断保持能量。
cpu是电子计算机的主要设备之一,电脑中的核心配件。
4、制作组成不同
芯片的制备主要依赖于微细加工、自动化及化学合成技术,而CPU包括运算逻辑部件、寄存器部件,运算器和控制部件。
通过以上的内容,我们了解到,cpu其实就是芯片,只不过cpu是芯片的一种类型而已,它们之间的区别是表现在多个方面的。
先说两个原理:
1、计算机程序经过编译汇编后会生成二进制文件,就是所谓的010101之类的数值,这样的数据保存在计算机的存储器的某一个地址里面。
2、计算机有时钟脉冲产生电路,这个电路会不断的产生高低电平,这样计算机里面的电路元器件可以利用这些高低电平以及相应的存储空间里面的程序数据来进行相应的电平转换,这样经过转换产生出的高低电平就成了所谓的输出,也就是你所说的“工作模式”吧。
再解释你的疑问:
1、打开全是1到F得16进制,我想应该最基础是2进制吧?
--计算机里面处理的都是2进制,16进制是为了方便表示2进制。
2、请问这些简单的数字,为什么可以让电路有工作的模式呢?
--明白上面的两个原理,你就明白这个问题了。
3、比如一个笔记本内的BIOS,为什么可以通过这些数字实现电路的运作呢?
--明白上面的两个原理,你就明白这个问题了。
4、加了程序,有些3.3V就可以从EC自己产生?
--芯片自己当然不会产生电压,但是芯片是接了电源的,芯片里面的电路会根据程序的指令和相应的电路将电压转换后再输出来。
5、请问程序与硬件是如何实现的呢?
--程序实际上只是一个集成电路里面在脉冲作用下进行的一些电平转换动作时序。
6、但是在集成电路里,为什么只用命令就可以让类似这个MOS管在芯片内导通呢?
--芯片里面也是一些电路,命令只是指导芯片去进行一定的电平转换。
取消
评论
网络工程师考试属于全国计算机技术与软件专业技术资格考试(简称计算机软件资格考试)中的一个中级考试。那么网络工程师考试科目是什么呢?
网络工程师考试科目
(1)计算机与网络知识,考试时间为上午09:00-11:30共150分钟,笔试,选择题,满分75分,45分及格;
(2)网络系统设计与管理,考试时间为下午14:00-16:30共150分钟,笔试,问答题,满分75分,45分及格;
网络工程师考试难吗
网络工程师考试属于专业水平的国家品牌考试,试题注重岗位知识和技能(不是背书),综合性和灵活性强,创意多,但只要考生掌握了相应岗位所需的基本知识和技能,就会认为考试并不难。对于死记硬背书本的人来说,可能就比较难。由于考试向社会开放,不设学历资历条件。
知识和能力各个科目都及格才能合格,因此合格率并不高。各级别总平均合格率大约是25%,初级资格的合格率约40%,中级资格的合格率20-30%,高级资格的合格率约20%.社会开放 考试的报考者中水平差异很大,不象学校考试那样大家水平比较接近,所以,确实掌握了基本知识又有工作经验的人,没有必要担心合格率问题。软考并不是竞赛,只要成绩超过合格标准就能合格,没有预先规定合格人数界限。
网络工程师考试要求
(1)熟悉计算机系统的基础知识;
(2)熟悉网络操作系统的基础知识;
(3)理解计算机应用系统的设计和开发方法;
(4)熟悉数据通信的基础知识;
(5)熟悉系统安全和数据安全的基础知识;
(6)掌握网络安全的基本技术和主要的安全协议;
(7)掌握计算机网络体系结构和网络协议的基本原理;
(8)掌握计算机网络有关的标准化知识;
(9)掌握局域网组网技术,理解城域网和广域网基本技术;
(10)掌握计算机网络互联技术;
(11)掌握TCP/IP协议网络的联网方法和网络应用技术;
(12)理解接入网与接入技术;
(13)掌握网络管理的基本原理和操作方法;
(14)熟悉网络系统的性能测试和优化技术,以及可靠性设计技术;
(15)理解网络应用的基本原理和技术;
(16)理解网络新技术及其发展趋势;
(17)了解有关知识产权和互联网的法律法规;
(18)正确阅读和理解本领域的英文资料。
平方米符号多用于面积,在电脑中文字处理时有时候需要打㎡平方米符号,那么平方米符号怎么打m2 ?其实很简单,下面小编给大家介绍比较简单的几种方法。
方法一:输入法直接输入
其实很多朋友电脑中都安装有搜狗输入法或QQ输入法,在这2中输入法状态下,我们只需要输入pingfang 拼音即可找到平方米字符,如下图:
使用输入法快速打出平方米字符
方法二:直接复制
㎡
是啊,只要复制上面小编已经打出来的平方米符号就可以了。复制到Word等办公软件中,是通用的哦
方法三:使用键盘组合键
使用键盘组合键实现打出平方米其实是利用了软件的快捷键,这里需要用到word软件,目前我们电脑新装了系统都默认安装了word办公软件,所以大家都可以利用起来,首先打开word软件。然后输入一段文字,如果需要平方米,先在word中输入m2,然后利用“上标”快捷键,先光标选中“2”然后按键盘上的 Ctrl+Shift+“+”(按一下是加上标,重复按是取消,按Ctrl+“+”是下标)。
也可以先先按住键盘上的 Alt 键不松开,然后按数字键“0178”,再松开 Alt 键,平方米符号就出来了。
还有一种方法是,用鼠标选中“2”,选择菜单栏的“格式”中的“字体”,在弹出的“字体”对话框下面的“效果”里面将“上标”钩选,然后确定就OK了,设置方法如下:
以上就是Win7系统之家www.winwni7.com 和大家分享的几种平方米符号m2 的输入方法了,希望大家能从中学习到一些新的知识。
分享到:
学号:10161104 姓名:刘垚玲
计算机网络的未来发展趋——计算机网络与通信
随着现代社会的发展,网络的应用也进入新的时代。网络的变化,可以说是日新月异,很多从事于这方面的专家或者技术人员在计算机网络方面的贡献给社会和人民带来太多太多的好处。所以新时代的人们可能对于在现实生活中希望计算机网络的发展迈入新的阶段,以更好的服务于人民。
我们都知道计算机和通信系统是计算机网络中非常重要的基本技术,但计算机网络的并不简单是两者的结合,也不是计算机或者通信系统的简单扩展或者延伸,而是融合了各种先进技术和一些高效率的设备系统的。所以我们站在计算机网络系统这个整体的角度来理解,从计算机网络结构、性能以及网络工程技术和网络技术在现实生活中的应用这几方面来思考和研究。这样才能更好的促进未来计算机网络的新发展。
从计算机网络的系统角度来说,计算机网络是由单个结点和连结这些结点的链路所组成的,单个结点主要是由路由器和交换机等组成的,而这些相应的物理设备主要是由相应的电子技术来达成的,另一方面就是通信链路,而与通信链路及其有联系的就是光电子技术。光电子技术的完美应用可以在信息的传输方面实现大跃进。这仅是从物理组成方面分析的关于怎样提高相应的计算机网络系统设备的一个构想。未来计算机网络的发展方向将是从IP技术和光网络方面来发
我们打开台式电脑后发现主机正常、显示器却没信号,这是什么原因呢?该如何处理呢?碰到这类问题,一般都是电脑硬件的问题,我们要进行硬件排查,请看下文介绍。
电脑开机后显示器无信号怎么办?
首先我们要检查电脑主机的显示器信号线与主机接口位置,查看是否松动,如果线路松动,重新拔插即可。
2、将显示器信号线拔出,检查显示器信号线的接口和线路是否损坏。如果接口和线路损坏,更换一条新的显示器信号线即可。
3、检查主机后面的电脑主板上的显示器接口,是否完好。如果显示器接口生锈或者是接口针损坏进行除锈和矫正接口针即可。
4、将主机的侧盖打开,查看主板各个接口是否完好,有无老鼠咬线。
5、在电脑主板CPU旁边查看内存,插槽与内存条是否牢固。如有松动,重新拔插。
6、检查独立显卡与主板接口,是否松动。如有松动,请重新安装显卡。
7、如果电脑主机启动听见蜂鸣报警,请将电脑的内存拆下来进行查看,内存是否有烧毁的痕迹。
8、如果内存完好,请用橡皮擦进行擦拭内存金属部分。
9、电脑主机检查完毕后,检查显示器的显示输入接口是否损坏。主要检查接口的脚针是否变形。综上所述如发现硬件设置损坏,进行更换或到专业的维修点进行维修,显示器无信号的问题就解决了。
当你打开台式电脑遇到显示器无信号的情况,可以按照上述方法来处理。
前面我们讲了如何创建一个最简单的vue-ssr案例,相当于vue-ssr的一个Hello World。参见:从0-1学习vue-ssr
接下来我们开始深入学习一下 vue-ssr…
一、html模板 服务端渲染主要是在服务端这一块,完成页面模板和动态数据的拼接,所以我们需要用到html模板,然后将从数据库查询到的数据动态的和html模板进行拼接,然后发送给客户端浏览器,这一块我们就先完成一个html模板的学习。
1、首先需要创建一个model.html模板文件,不然也是巧妇难为无米之炊
PS: 使用{{}} vue会将动态数据处理为字符串输出,使用{{{}}} vue 将不作处理直接输出
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> {{{ desc }}} <title>{{ title }}</title> </head> <body> <!-- 下面这行注释,就是动态数据替换的地方 --> <!--vue-ssr-outlet--> </body> </html> 2、然后将模板文件读入到server.js中
3、在加载 vue-server-renderer 中的 createRenderer 方法的时候,可以传入一个可选参数,这个参数可以用来指定 上面创建的 html文件为 模板文件
4、读入上面创建的html模板文件的前提是,需要加载 fs 模块
5、然后我们在 res.send(html) 发送的这个html就会替换html模板中的占位符 server.js中具体代码:
// 加载 vue const Vue = require('vue') // 导入 fs 模块 const fs = require('fs') // 加载 vue-server-renderer 中的 createRenderer 方法 // 这里可以传入可选的参数,用来导入外部html模板 const renderer = require('vue-server-renderer').
雷达的分辨率是指在各种各样的环境下将将两个或两个以上的物体区别开来的能力。一般从四个方面进行区分-------距离、方位、速度、仰角。距离的分辨率取决于信号带宽,方位和仰角的分辨率取决与波束宽度。在实际环境中,只要以上四维中任意一维能区分目标,就认为具有目标分辨的能力。这里主要分析距离分辨率和速度分辨率。 关键词:时延分辨率,距离分辨率,时延分辨常数TRC,频谱持续宽度FSP,距离分辨常数,多普勒分辨率,速度分辨率,频率分辨常数FRC,时间持续宽度(有效相关时间)TSP,速度分辨常数
距离分辨率 假定两个目标在同一角度保持同一速度但处在不同距离时,可以用距离模糊函数来衡量分辨能力,见下式
根据上一篇博客中的讲述,距离模糊函数随着的增大下降的越快,说明分辨能力越强。
(因为下降的快意味着信号的主瓣尖锐,能量集中,对于两个时延小的目标有很好的分辨能力)
我们一般用距离模糊函数的主瓣宽度(通常取3dB带宽,但是遇到sinc函数时会取4dB带宽,因为sinc函数的4dB带宽是常数,方便计算)来定义固有分辨率,称为名义距离分辨率,简称距离分辨率。
在这里我们先引入时延分辨率,其定义式为
其中为有效带宽,该定义式的含义在下文中有解释。而时延分辨率所对应的距离分辨率为
可见,信号带宽越宽,脉冲宽度越窄,距离分辨率越高。
但是在实际环境中,我们需要全面考虑主瓣和旁瓣的分辨问题,因此定义时延分辨常数TRC来反映分辨特性,其表达式为
时延分辨常数是将主瓣、旁瓣或类似噪声的基地型旁瓣的能量全部相加再除以主板峰值的功率大小。可见,该常数越小,说明主瓣能量越集中,其宽度越窄,分辨能力越强。
在引入一个反映分辨特性的参数------频谱持续宽度FSP(或称有效相关带宽)。其反映的是模糊函数与冲激函数的相似程度(与冲激函数越相似,分辨能力越好)。其表达式为
因此距离分辨常数可以表示为
由上式不难看出,时延分辨常数TRC越小,或频谱持续宽度FSP越宽,距离分辨率越好。因此,信号只要具有大的持续宽度就能获得高的距离分辨力,而不必具有很窄的脉冲宽度。(注意将时延分辨率与脉冲宽度区分开来,与带宽有关)
速度分辨率 信号的速度分辨率由速度模糊函数决定
多普勒分辨率为
其中,是脉冲宽度。而相应的速度分辨率为
同样,在速度分辨率中,我们同样定义了两个用来表征速度分辨率大小的常数---频率分辨常数FRC和时间持续宽度(有效相关时间)TSP
由上式可得表征速度分辨率的速度分辨常数为
可见,频率分辨常数FRC越小或者时间持续宽度(有效相关时间)TSP越大,速度分辨率越好。
结论 距离分辨率取决于信号的频率结构,为了提高距离分辨率,信号就需要有大的带宽;而速度分辨率取决于信号的时间结构,为了提高速度分辨率,信号就需要有大的时宽。
但是,根据雷达模糊原理可知,我们无法在不断提高的距离分辨率的同时,提高速度分辨率,其中一种分辨率的提高必然会导致另一种分辨率的衰减。我们用时宽带宽积,即时宽与带宽的乘积(TB)表示信号的距离分辨率与速度分辨率的关系。对于系统设计而言,时宽带宽积越大越好,这意味着我们在提高距离分辨率的同时,不会影响速度分辨率。
如何使得时宽带宽积增大,就涉及到脉内非线性相位调制技术。
tomcat的安装目录下 双击startup.bat启动时却一闪而过了。这是为什么呢(tomcat启动失败)
方法/步骤 下面我先跟大家确认一下问题出现的前提条件(本机版本java:1.6.20,tomcat:6.0.32)
1)在eclipse里面启动tomcat时都是正常的。
2)在系统中配置了各种环境变量如下:
JAVA_HOME:H:\DevelopTools\Java\jdk1.6.0_20
CATALINA_BASE:H:\DevelopTools\apache-tomcat-6.0.32
CATALINA_HOME:H:\DevelopTools\apache-tomcat-6.0.32
CLASSPATH:.;%JAVA_HOME%;%JAVA_HOME%\jre\lib;
PATH:.;%JAVA_HOME%\bin;%CATALINA_HOME%\bin;
2.
我们来具体来分析一下问题出现的原因及解决办法:
进入tomcat的安装目录(即解压后放置的地方):
看到圈出红色的3个bat文件,一般通过startup.bat启动tomcat时流程是:startup->catalina->setclasspath->catalina
如果这3个bat文件里面有一个出现错误的话就是启动失败。为了找到一闪而过的原因得需要我们来看看这3个文件里面到底是什么了
3.
先记事本打开startup.bat,找到最后一句话::end,我们知道end表示结束的意思,:end是一个标记,我们在后面加上一句pause (暂停等待的意思);
再次执行startup.bat,就会看到如图,当我们按任意的键时cmd窗口又是一闪而过了。但是这已经确定了我们的环境变量都是正确的。
4.
为了更加详细的看到信息,我们再来更改一句:找到call "%EXECUTABLE%" start %CMD_LINE_ARGS% 把里面的start替换为run。
再来看看cmd窗口里面输出错误信息了:
error occurred during initialization of vm
could not reserve enough space for object heap
could not create the java virtual machine
我们大体可以理解为:因为程序初始化时请求不到足够的内存,导致vm程序退出。
我总结一下tomcat经常遇到的几个问题:
1.tomcat的配置文件中设置环境变量JAVA_HOME
一定要按照 上面的环境变量格式填写!!!!
2.,大致出现的问题就是这个下载的版本和tomcat的版本不相符:出现严重的警告:
然后把tomcat 的bin中的 tcnative-1.dll放到了C:/WINDOWS/system32/下面再进行启动就可以了。
或者删掉都可以解决!
VM虚拟机无法在共享文件夹(计算机/mnt/hgfs)中看到共享文件夹 关闭linux虚拟机,打开VM虚拟机设置界面的下的选项,禁用共享文件夹。然后启动linux虚拟机后,再启用共享文件夹后,可以在计算机/mnt/hgfs/下找到共享文件夹
1. RadioButton是javafx的单选按钮,同其他的编程一样,需要将单选条件的所有按钮放到同一个group内(ToggleGroup ),否则没有单选效果。
2.两种默认选中按钮的方式
3.两种监听方式,一种对单独的按钮进行监听,一种对按钮group进行监听。
package sample; import javafx.application.Application; import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.event.Event; import javafx.event.EventHandler; import javafx.geometry.Pos; import javafx.geometry.Side; import javafx.scene.Scene; import javafx.scene.control.*; import javafx.scene.image.ImageView; import javafx.scene.input.MouseEvent; import javafx.scene.layout.AnchorPane; import javafx.scene.layout.HBox; import javafx.scene.layout.VBox; import javafx.stage.Stage; public class Main extends Application { public static void main(String[] args) { launch(args); } @Override public void start(Stage primaryStage) throws Exception { AnchorPane ap = new AnchorPane(); ap.setStyle("-fx-background-color: #6d5c39"); ToggleGroup toggleGroup = new ToggleGroup();//单选组 RadioButton r1 = new RadioButton("
随着计算机技术的迅速发展,在计算机上处理的业务也由基于单机的数学运算、文件处理,基于简单连接的内部网络的内部业务处理、办公自动化等发展到基于复杂的内部网、企业外部网、全球互联网的企业级计算机处理系统和世界范围内的信息共享和业务处理。在系统处理能力提高的同时,系统的连接能力也在不断的提高。但在连接能力信息、流通能力提高的同时,基于网络连接的安全问题也日益突出,因此计算机安全问题,应该像每家每户的防火防盗问题一样,做到防范于未然。防火墙则是一个安全策略的检查站。所有进出的信息都必须通过防火墙,防火墙便成为安全问题的检查点,使可疑的访问被拒绝于门外。
防火墙对流经它的网络通信进行扫描,这样能够过滤掉一些攻击,以免其在目标计算机上被执行。防火墙还可以关闭不使用的端口。而且它还能禁止特定端口的流出通信,封锁特洛伊木马。最后,它可以禁止来自特殊站点的访问,从而防止来自不明入侵者的所有通信。
例如,防火墙可以限制TCP、UDP协议及TCP协议允许访问端口范围,当不符合条件时,程序将询问用户或禁止操作,这样可以防止恶意程序或木马向外发送、泄露主.机信息。并且可以通过配置防火墙IP 规则,监视和拦截恶意信息。与此通知,还可以利用IP规则封杀指定TCP/UDP端口,有效地防御入侵,如139漏洞、震荡波等。
设备
Windows XP 天网个人防火墙
步骤
1.局域网地址设置 ,防火墙将会以这个地址来区分局域网或者是INTERNET的IP来源;
2.管理权限设置 *,它有效地防止未授权用户随意改动设置、退出防火墙等;
3.入侵检测设置 ,开启此功能,当防火墙检测到可疑的数据包时防火墙会弹出入侵检测提示窗口,并将远端主机IP显示于列表中;
4.安全级别设置 ,其中共有五个选项;
低:所有应用程序初次访问网络时都将询问,己经被认可的程序则按照设置的相应; 规则运作。计算机将完全信任局域网,允许局域网内部的机器访问自己提供的各种服务(文件、打印机共享服务)但禁止互联网上的机器访问这些服务。适用于在局域网中提供服务的用户。
中:所有应用程序初次访问网络时都将询问,已经被认可的程序则按照设置的相应规则运作。禁止访问系统级别的服务(如HTIP.FTP等)。局域网内部的机器只允许访问文件、打印机共享服务。使用动态规则管理,允许授权运行的程序开放的端口服务,比如网络游戏或者视频语音电话软件提供的服务。适用于普通个人上网用户。
高:所有应用程序初次访问网络时都将询问,已经被认可的程序则按照设置的相应规则运作。禁止局域网内部和互联网的机器访问自己提供的网络共享服务(文件、打印机共享服务),局域网和互联网上的机器将无法看到本机器。除了已经被认可的程序打开的端口,系统会屏蔽掉向外部开放的所有端口。也是最严密的安全级别。
扩:基于“中”安全级别再配合一系列专门]针对木马和间谍程序的扩展规则,可以防止木马和间谍程序打开TCP或UDP端口监听甚至开放未许可的服务。我们将根据最新的安全动态对规则库进行升级。适用于需要频繁试用各种新的网络软件和服务、又需要对木马程序进行足够限制的用户。
自定义:**如果您了解各种网络协议,可以自己设置规则。注意,设置规则不正确会导致您无法访问网络。适用于对网络有一定了解并需要自行设置规则的用户。
5.IP规则 IP规则是针对整个系统的网络层数据包监控而设置的,其中有几个重要的设置
防御ICMP攻击:选择时,即别人无法用PING的方法来确定用户的存在。但不影响用户去PING别人。因为ICMP协议现在也被用来作为蓝屏攻击的一种方法,而且该协议对于普通用户来说,是很少使用到的。
防御IGMP攻击:IGMP是用于组播的一种协议,对于MS Windows的用户是没有什么用途的,但现在也被用来作为蓝屏攻击的一种方法。
TCP数据包监视:通过这条规则,用户可以监视机器与外部之间的所有TCP连接请求。注意,这只是一个监视规则,开启后会产生大量的日志。
禁止互联网上的机器使用我的共享资源:开启该规则后,别人就不能访问用户的共享资源,包括获取您的机器名称。
禁止所有人连接低端端口:防止所有的机器和自己的低端端口连接。由于低端端口是TCP/IP协议的各种标准端口,几乎所有的Internet服务都是在这些端口,所以这是一条非常严厉的规则,有可能会影响使用某些软件。
允许已经授权程序打开的端口:某些程序,如ICQ,视频电话等软件,都会开放一些端口,这样,才可以连接到您的机器上。本规则可以保证些软件可以正常工作。
在做poi相关练习时,我的实现目标是,需要将excel中主键列检索出来,之后使用主键列去做检索,获取某一字段的值,之后将检索到的值在追加到之前的excel中,操作过程中结果出现了一个问题。报的错误是java.io.EOFException: Unexpected end of ZLIB input stream。
原因是我在获取文件时使用的是
File file = new File("/Users/sy.w/Documents/文档/excel_test.xlsx"); 这样获取的文件对象,在将数据导入时就会报上面的错误,原因是使用File对象每次都会将之前的文件覆盖。这样就会报错。
解决方法就是
File file = new File("/Users/Documents/文档/excel_test.xlsx"); 换成 FileInputStream file = new FileInputStream("/Users/Documents/文档/excel_test.xlsx"); 这样的话每次写入数据时,都是在原来的文件中追加数据。而不是覆盖原来的文件。
Hadoop环境安装(HDFS-MapReduce)
Storm环境安装(Storm)
Zookeeper环境安装(Zookeeper)
Hbase环境安装(HBase)
Hive环境安装(Hive)
Kafka环境安装(Kafka)
Flume环境安装(Flume)
Hadoop2.0环境安装(Yarn)
Spark环境安装(Spark)
文章目录 前言一、项目概述1.项目需求2.总述3.技术栈选择4.环境介绍5.效果图展示 二、设计思路1.SSM项目(单体架构)示意图2.前后端交互示意图3.仓库管理系统架构图4.响应格式5.异常处理机制6.日志记录机制7.鉴权服务设计与实现8.业务功能简述 三、数据库设计1.数据库模型设计概览2.数据库表设计①depository②仓库调度记录(depository_record) 3、产品信息记录(库存)(material)4、material_type5、notice6、standing_book7、transfer_record8、 user 四、功能设计与展示1.鉴权认证2.仓库管理①出入库申请流程②出入库管理1.出入库查询2.可视化展示 ③库存管理1.库存查询2.可视化展示 ④其他管理1.材料种类添加2.仓库创建 3.个人管理①我的任务②我的申请③个人信息管理 4.网站管理①公告②人员管理 五、代码结构1.包结构 六、做项目时遇到的问题1.静态资源被拦截2.layui框架动态表格分页的坑3.部署的坑 七、心得体会 前言 此项目为仓库管理系统,是我大二下的实训课作业,虽然是从学期初开始写的,但是实际写项目的日子也就十多天(前面都没怎么动,果然只有临近ddl效率才高)。
到我写这篇博文的时候,实际上项目还有小部分功能未完成,当然如果你不是逐个试过去你是发现不了的(笑哭)。
说实话,我实在不想在未完成前写类似实验报告的文档,而且我也不喜欢写文档。我一直认为写项目根本不需要那么多死板的文档(反正也只是作业)。
有人可能又会奇怪我不喜欢写文档为啥写那么多博文?这个嘛,我写博文的目的也只是想把我彼时彼刻的情感和经验分享出来,我更倾向于那种随性的分享,不想循规蹈矩的写那些死板的文档。
挺不喜欢那些老师每次要做项目都得要我们交各种图,各种功能业务表。那些图对于那些简单的项目还可以,毕竟不复杂,但是对于一个稍微大点的项目,光代码就一大堆,画那些业务图要画到猴年马月去?
有时候,围绕着一个增删改查的小项目大谈架构,这并不是一个明智的选择。
…
好了,碎碎念了这么多,实在抱歉,下面是正文:
一、项目概述 1.项目需求 实现材料仓库的管理:提供材料出入库管理等实用功能。 材料入库管理:材料检验入库、入库查询、入库类别按月统计;
材料出库管理:材料库存查询、材料出库、出库查询、出库类别按月统计; 辅助管理:仓库系统的人员管理、基础表的管理。
当然啦,以上只是简单的需求,多的我也不展示了。
2.总述 此项目为Javaweb项目,前后端不分离,典型的单体架构,主要功能是对仓库转入转出等业务进行管理,并对数据进行可视化展示,同时有部分权限管理的功能(为什么这么说呢,因为我这部分做的并不严谨,如果后面有时间我会尽可能完善)。
3.技术栈选择 前端:layui、jquery、echarts、thymeleaf模板引擎
后端:mysql、maven、tomcat、mybatis、springMVC、spring、SpringBoot、logback
注意:这里的前端页面我拿了gitee上的开源模板layui-mini,地址。
4.环境介绍 数据库:mysql8.0
项目结构:maven
数据库连接池:Druid
前端框架:layui、jquery、echarts、thymeleaf模板引擎
后端框架:SpringBoot、SSM
语言:Java
jdk版本:8
编写的IDE:IDEA
5.效果图展示 为了更直观的展示项目,这里先放几张效果图
二、设计思路 在说明自己的设计思路之前,我们先来看看一般意义上的SSM项目的架构图
1.SSM项目(单体架构)示意图 由上图可以看到SSM项目中大致的组成。
一般的SSM应用都会分三层——数据库层,业务层,控制层,而我们这个仓库信息管理系统也是如此。
2.前后端交互示意图 有人可能不太明白SSMweb应用是如何进行前后端交互的,因此我又补充了交互的部分,如下图:
前后端的交互都以HTTP请求展开的。有些请求是请求页面的;有些请求是请求静态资源的,如css文件,图片等;有些请求是请求数据的,比如出入库记录。
下面是三层调用的细节示意图
上图中我们可以直观的看到SSM项目的基本运行流程。
当请求到来时,先会经过拦截器链,拦截器利用反射机制实现了对请求处理和返回的处理,可以利用它来实现鉴权服务和权限控制。
之后请求分发,对应的请求会有对应处理程序来处理,而这就是Controller控制层的工作,而控制层也会调用相应的业务层方法来进行操作或者返回对应的静态资源、页面等。
Service业务层专门处理业务层面的操作,比如入库,出库,出库成功会创建相应的申请记录同时改变库存数据,至于如何改变,如何增加这是数据库层的事情,在这层只需调用对应的Dao层方法即可。而有些操作需要保证失败回滚的机制,所以可以在Service层开启事务功能。
Dao层通常与数据库中的表一一对应,一般都是去实现增删改查,而mybatis框架将sql语句和程序分离,极大简化了我们的开发。
3.仓库管理系统架构图 在看完了SSM单体项目一般是如何架构之后,再来看看我们的系统架构图(由于业务比较少,所以这里可以直接把各个类写到上面)
和上面的大差不差,只不过这里利用拦截器实现了token机制来进行三级权限控制,同时多用了点spring的aop来处理日志信息,以及利用增强Controller来处理全局异常信息,返回对应的错误响应。
4.响应格式 对于前后端分离的项目,响应格式必定是前后端交流非常重要的一环。虽说这里并不是前后端分离开发,但为了规范,还是规定了请求响应的格式。
status:状态码 statusInfo:{ message:字段作为接口处理失败时, 给予用户的友好的提示信息, 即所有给用户的提示信息都统一由后端来处理 detail:字段用来放置接口处理失败时的详细错误信息.
类和记录的 helpers(助手) 前言一、关于类和记录的 helpers(助手)二、helpers(助手)语法定义三、定义Helpers(助手)总结附: helpers(助手)实际应用A、Delphi原生的JSON操作助手实现TJSONObject 的Helper 单元:使用样例: 前言 Delphi 从XE版本开始提供类和记录的 Helper(助手) 封装,这样就可以很方便的在不修改原来类或者记录的原始定义情况下,给类和记录增加新的功能。 本文简要介绍 Helper 的实现,最后实际举例实现了TJSONObject的Helper,让使用delphi原生的JSON对象也能像SuperObject一样书写方式操作。 一、关于类和记录的 helpers(助手) Helpers(助手)是一种不使用继承的方法来扩充类或者记录的功能,对于记录类型更是有用,因为类可以通过继承来增加功能二记录不可以继承。适用于一些没有源代码或者源代码不适合进行变更的类的扩展。对于自己原始设计的程序,不应该使用这种类的扩展方法,应该始终依赖于普通的类继承和接口实现。
二、helpers(助手)语法定义 type identifierName = class|record helper [(ancestor list)] for TypeIdentifierName memberList end; ancestor list 是可选的,而且只能适用于类Helpers;助手类型不能声明实例数据,但允许使用类字段(class fields);其他可见性范围规则和成员列表语法与普通类和记录类型相同。
例如:
type TJSONObjectHelper = class helper for TJSONObject 注意:类和记录Helpers不支持运算符重载。
可以定义多个辅助helpers(助手)并将其与单个类型关联。但是,只有零个或一个helpers(助手)起作用,这决定于助手定义的单元引入的位置。类或记录助手作用域是以正常的Delphi方式确定的(例如,在单元的uses子句中从右到左)。
三、定义Helpers(助手) 下面的代码演示类助手的声明(记录助手的行为方式相同):
type TMyClass = class procedure MyProc; function MyFunc: Integer; end; ... procedure TMyClass.MyProc; var X: Integer; begin X := MyFunc; end; function TMyClass.MyFunc: Integer; begin .
== 用于比较两者是否相等,忽略数据类型。
=== 用于更严谨的比较,值和值的数据类型都需要同时比较。
<div id="app">
<div v-if="text ==1 ">
1--值一样,类型不同,两个等号显示 </div>
<div v-if="text ===1 ">
2--值一样,类型不同,三个等号不显示
</div>
<div v-if="text ==='1' ">
3--值一样,类型同,三个等号显示
</div>
</div>
<script type="text/javascript">
/* text:"1" 这里的1是个字符串 */
var vm = new Vue({
el:"#app",
data:{
text:"1"
}
});
</script>
结果:
1–值一样,类型不同,两个等号显示
3–值一样,类型同,三个等号显示
不规整的(异形封装)就看上一章手动创建,这里是创建标准封装。
一、下载安装IPC组件 AD20不用再额外下载,安装的时候自带的。
二、IPC创建 我们参考规格书来创建一个SOP-8。
2.1 规格书 2.2 封装 上图的H对应规格书的E,上图的A对应规格书的A,上图的A1对应规格书的A-A2,上图的E对应规格书的E1,上图的D对应规格书的D,pin脚数是8,上图的B对应规格书的b,上图的L对应规格书的L。
我们来看看他3D的效果(打开和退出都是CTRL + D)。
• 由 青梅煮久 写于 2021 年 06 月 19 日
Hive 是基于 Hadoop 的一个数据仓库工具;提供Sql(hive Sql)查询功能;数据是存储在hdfs上,hive本身不存储数据,构建表的逻辑存在指定数据库(mysql )。本质是将 SQL 语句转换为 MapReduce 任务执行。离线大数据计算。可以将结构化的数据文件映射成为一张数据库表。 官方文档
流程图 HiveSql与Sql相比
Hive字段类型
1. 建表 三种方式
直接建表法: create table movies (uid string,iid string,score string , ts string) row format delimited fields terminated by '\t' tblproperties("skip.header.line.count"="1"); 查询建表法: create table movies_select as select * from movies limit 1000; like建表法 create table movies_like like movies_select ; 2. 执行顺序 在hive的执行语句当中的执行查询的顺序:这是一条sql:select … from … where … group by … having … order by …
目录
> > > 1 初始Node.js
1.1 Node.js简介
1.1.1 什么是Node.js
1.1.2 Node.js中的JavaScript运行环境
1.1.3 Node.js可以做什么
1.2 Node.js环境的安装
1.2.1 区分LTS版本和Current版本的不同
1.2.2 查看已安装的Node.js的版本号
1.2.3 终端
1.3 在Node.js环境中执行JS代码
1.3.1 终端中的快捷键
2 fs文件系统模块
2.1 什么是fs文件系统模块
2.2 读取指定文件中的内容
2.2.1 fs.readFile()的语法格式
2.2.2 代码示例
2.2.3 判断文件是否读取成功
2.3 向指定的文件中写入内容
2.3.1 fs.writeFile()的语法格式
2.4 fs模块-路径动态拼接的问题
2.5 完美解决路径动态拼接的问题
3 path路径模块
3.1 什么是path路径模块
3.2 路径拼接
3.2.1 path.join()的语法格式
3.3 获取路径中的文件名和扩展名
3.3.1 path.basename()的语法格式
3.3.2 获取路径中的文件扩展名部分
4 http模块
4.1 什么是http模块
4.2 进一步理解http模块的作用
4.3 服务器的相关概念
4.3.1 ip地址
今天在安装Mysql 8 的过程中,在初始化mysql的时候执行mysqld --initialize-insecure --user=mysql遇到一个报错 mysqld: Can't create directory 'D: oftware\mysql-8.0.25-winx64\mysql-8.0.25-winx64\data\' (OS errno 2 - No such file or directory)。
在网上搜了一遍,终于找到问题所在。
其实就是my.ini文件出了问题。
mysql 8 的配置文件中basedir 和 datadir 的路径格式不对!!!
网上贴的教程都是这样的:
# 设置mysql的安装目录 basedir=D:\software\mysql-8.0.25-winx64\mysql-8.0.25-winx64 # 设置mysql数据库的数据的存放目录 datadir=D:\software\mysql-8.0.25-winx64\mysql-8.0.25-winx64\data 然后就会出现报错如下:
实际应该是这样的:
需要用双斜杠
# 设置mysql的安装目录 basedir=D:\\software\\mysql-8.0.25-winx64\\mysql-8.0.25-winx64 # 设置mysql数据库的数据的存放目录 datadir=D:\\software\\mysql-8.0.25-winx64\\mysql-8.0.25-winx64\\data 执行mysqld --initialize-insecure --user=mysql 不会报错了。
这里顺便贴一下my.ini的配置文件。
[mysql] # 设置mysql客户端默认字符集 default-character-set=utf8 [mysqld] # 设置3306端口 port=3306 # 设置mysql的安装目录 basedir=D:\\software\\mysql-8.0.25-winx64\\mysql-8.0.25-winx64 # 设置mysql数据库的数据的存放目录 datadir=D:\\software\\mysql-8.0.25-winx64\\mysql-8.0.25-winx64\\data # 允许最大连接数 max_connections=200 # 允许连接失败的次数。 max_connect_errors=10 # 服务端使用的字符集默认为utf8 character-set-server=utf8 # 创建新表时将使用的默认存储引擎 default-storage-engine=INNODB
html:
<input type="number" id="qq"> <button onclick="huoqu()">获取头像</button> <br> <img id="img1" src="" /> JavaScript:
function huoqu(){ var value=document.getElementById('qq').value; img1.src="http://q1.qlogo.cn/g?b=qq&nk="+value+"&s=640";//&s是尺寸 有40 100 140 640 } 又来做笔记啦。
今天主要讨论一些组装电脑基础的内容,那些高端MOD毕竟只是小众群体。DIY组装电脑,简单说来就是把一堆硬件拼凑,组成一个完整的主机。而组装电脑其中,处理器、 板卡、内存等都是不太容出现问题的。一是由于产品规格严谨,二是产品数量丰富度不高,三是直接关系主机性能,更加被注重。组装电脑中主要容易出现问题还是在机电散热产品。
1、只看外观忽视兼容性
不少外观控的小伙伴们喜欢外形靓丽的机箱,而不少mini机箱外观都不错,很讨人喜欢。所以不少玩家就看重外观而忽视机箱的大小、兼容性。首先就是玩家们如果选择了标准ATX主板,那么mini机箱是不支持的,这一点玩家们要注意到。
说完主板在说显卡、硬盘,要想获得畅快的游戏体验,一块高端显卡的作用不言而喻,可是现在高端显卡都很长,能否支持产显卡也是一个重要考量条件。一部分中塔机箱要以牺牲硬盘位为代价从而支持长显卡,而有些mini机箱索性没法支持。
2、忽视散热性
机箱的散热性又是衡量一个机箱好坏的重要原因。全塔机箱拥有硕大的体积,散热XD非常 到位。而主流中塔机箱,同样配备多个风扇位,前置、后置风扇可以组建水平风道。不过个别mini机箱由于空间有限,根本没有风扇位,玩家们就要注意了。如 果喜欢mini机箱的外观,可以考虑如下的这种mini机箱。
来看看 组装电脑 电源的一些错误认知。
组装电脑 典型例子:
主流支持长显卡中塔机箱:游戏悍将刀锋系列、先马“战士”系列、鑫谷战机C、航嘉mvp
散热性出色mini机箱:Tt core v1、海盗船Air240
组装电脑 电源选择错误认知
1、盲目追求大功率
电源的功率可以说是最根 本的参数,主机的功率也要和电源的功率想匹配,不过不少DIY新手并不清楚自己的主机功率处于那个段位,所以盲目追求大功率电源,这样不仅仅浪费钱财,而 且转换效率反而会降低。经过中关村在线多次测评得出的结论,电源在40-60%负载的时候效率最高。
2、盲目追求效率
电源的转换效率也是一个重要的参数,按照80plus可以分为白牌、铜牌、银牌、金 牌、白金牌。不过有商家为了节约成本,没有进行认证,但是电源本身效率并不差。退一步说,500W左右的铜牌电源与金牌电源差价可能很大,而多出来的效率 提升也不显著,选金牌并不一定适合所有玩家。
3、忽视电源接口
电源接口虽然不能算电源的参数,可以却主机的硬件息息相关。而这其中最容易忽视的就 是显卡的接口。显卡最入门级靠PCI就可以供电的,而最高端的显卡则需要2个8pin接口。像影驰770名人堂就需要双8pin,而公版华硕290X则是 6pin+8pin。不但如此,即使是同样功率的500W电源,有的配备了双8pin,而有些则仅有8pin和6pin。这也是需要玩家们注意的。
4、盲目追求模组接口
模组化接口电源原来一直在高端电源上出现,而现在越来越普及到平民级电源,于是很多玩家就盲目的追随,非模组不买。同样参数的两款600W左右电源,模组于非模组价格要相差不少,而并没有带来任何品质的提升,所以选择模组未必适合。
小结:在这里笔者给玩家们总结了关于选电源的几个错误认知,虽然都不是什么大问题,可是玩家们如果都了解了,不但可以对电源有更加清晰的认识,选择的时候也能够更加有底气,避免被忽悠。接下来看下关于散热器的一些错误认知。
组装电脑 典型例子:
500W电源,双8pin:航嘉mvp500
500W电源,8pin+6pin:安钛克VP500P
散热器选择错误认知
1、忽视第三方散热器
玩 家们都知道,处理器分为盒装和散装,盒装带有散热器,可是这个自带的散热器散热效果十分一般,如果是入门级的处理器还好,不过玩家们入手的是高端处理器或 玩玩超频,那么还是在额外选择一款散热器更加适合。现在可以分为风冷、热管(风冷)、一体水冷等,一般来说散热能力是要逐步提升的。
2、 忽视散热器的尺寸
首先说下热管(风冷)散热器,一般可以分为侧吹式和下压式。侧吹式散热性散热性相对更优秀,不过由于体积较大,可能有些机箱就没法安装,会直接顶到机箱侧板。消费者选择还需要多注意,尤其是比较窄的机箱可能就没法兼容高塔侧吹风冷。
对于上面机箱无法兼容的情况,玩家们不妨选择下压式散热器,这样可以有效避免兼容性的问题。不过需要注意的是,选择下压式风冷,而且还是ITX主板的话,就要看看散热器是否挡住了内存条的位置,笔者的经验是马甲内存基本就没法装了。
然后就是一体水冷了,可以按照冷排尺寸分为120、240、360,一般来说,主流中塔机箱都是支持120水冷的,可以直接安装在机箱的后面风扇位,但是 240水冷可不是每个机箱都能装的。玩家们只要观察一下,主板的上边缘与机箱顶部的空间即可,如果很小的话,肯定是没法安装的。所以选择240水冷的用户 要慎重。
小结:这一部分主要谈到了关于选择散热器的一些注意事项,主要就是尺寸的问题,因为制约散热器尺寸的原因较多,所以笔者给大家列出来以供参考。至于如何选择风冷、水冷,每个人的需要不一样,而且相信也有部分玩家选择水冷只是为了好看而已,就不做讨论了。
典型例子:
高塔侧吹:九州风神玄冰400、超频三东海X4
下压式:九州风神加百利、酷冷至尊“鹰”系列
一体水冷:游戏悍将LC120、Tt water 3.0
装机错误认知
1、忽视硅脂
前面提到了关于机箱、电源、散热性 选择的一些错误认知,接下来看看装机时候的一些容易出错的问题。首先就是硅脂涂抹,笔者发现两个极端。一是涂抹厚厚的一层,二是无视硅脂的存在,不涂抹。这都 是不可取的。硅脂是弥补冷头与处理器的接触的间隙,所以只需要均匀涂抹薄薄一层就可以了。
2、 电源装反了
第二个就是电源的风扇位,因为机箱电源风扇是用来吸风的,如果将电源风扇朝上的话,它就会吸取上方显卡产生的热风,不利于电源散热。
3、 散热器方向不对
第三个就是散热器的方向,一般来说,机箱内的气流都是由前向后的,所以侧吹的散热器,风扇要放在冷排的前面,这样才能把冷风向后吹。
远程桌面到2003,运行一个程序,然后关闭远程桌面,一段时间后所运行的程序也被关闭了。
( 最近在弄服务器,远程桌面一关,项目服务也跟着一起关了.)
解决:
开始-->运行-->gpedit.msc
计算机配置->管理模板->Windows组件->终端服务->会话
把"为断开的会话设置时间限制"改为"未被配置"。
如果通过上面的操作,还会出现远程桌面连接断开过段时间之后,运行的软件自动关闭的话,就再进行以下操作:
开始-->运行-->tscc.msc
连接-->RDP-Tcp右键属性-->会话
把这里面的替代用户设置的设置都改为从不,并且把从不勾选。
需要说明的是:前述工作做完后,本人的远程服务器还是问题依旧,接下来:
取消开机按ctl+alt+del,这一点大家都会吧。
开始-->所有程序--> 管理工具-->本地安全策略-->本地策略-->安全选项:microsoft网络服务器:当登录时间用完后自动注销用户,改为“已禁用”。microsoft网络服务器:在挂起会话之前所需的空闲时间,改为99999,实际上是禁止了此策略。
最后,如果可能,到服务器上用administrator登录一次。
还有,最关键的一步:当您登录远程服务器后,在退出的过程中,不要直接点击远程桌面程序的那个“×”,也不能点注销了。而是在远程服务器的桌面上,点“开始--关机--断开”,这一点十分重要。
Windows Server 2003默认情况下允许远程终端连接的数量是2个用户,我们可以根据需要适当增加远程连接同时在线的用户数。
单击“开始→运行”,输入“gpedit.msc”打开组策略编辑器窗口,依次定位到“计算机配置(computer configuration)→管理模板(administrative templates)→Windows 组件(windows components)→终端服务(terminal services)”,再双击右侧的“限制连接数量(limit number of connections)”,再双击打开配置窗口(limit number of connections properties),选择enabled 将其TS maximum connections allowed
转载 http://wenwen.soso.com/z/q299733417.htm
DIY电脑攒机是指将选购零散硬件组装成为一台整机的过程,在挑选硬件的时候新手们容易忽略硬件选购细节。这些细节是需要新手用户日常积累与实际操作相结合的,攒机常识包括分析自己需求、合理选购硬件、均衡选择组装电脑硬件。这三大部分中硬件兼容性问题往往是新手们容易疏忽的,虽然兼容问题是老生常谈的一个问题,但依然有不少新手朋友不够重视。今天笔者就给新手们分析下选购硬件里硬件兼容需要注意的五大问题,希望对DIY装机爱好者有所参考。
菜鸟DIY装机必须注意的五大硬件兼容性问题
首先装机我们需要思考下电脑的用户以及预算等,如果预算充裕也没什么,挑好的上就是了,但现实中基本没有人会不在乎预算的,另外大多数人都相当在意预算,因为手头并不宽裕,组装DIY电脑一是图diy装机灵活性大,更重要的是可以节省预算。一般用户如果平日喜欢上网看视频、听音乐,那么组装一台简单实用的整合平台电脑足矣。购买整合平台的用户可以选择主流APU平台、Intel奔腾核芯显卡平台;用户如果平日喜欢跑游戏、偏重游戏对战,那么用户可以攒一台带有独立显卡的游戏配置,另外如果整合平台考虑未来升级的话,最好为整机电源选用额定功率大些的电源,以备未来升级之用。用户根据以上两种配置类型都涉及到整机兼容性问题,这也是新手朋友首先要关注到的。
DIY硬件兼容是攒机者必须需认真对待的,因为出现不兼容性,会导致电脑无法完成安装,或者后期出现各种各样电脑问题。整机兼容性包含了技术的支持与拓展。用户在使用支持新技术的产品时(例如:USB3.0优盘)其当插在原生支持USB3.0的接口时才能实现产品原有的USB3.0数据传输速度。当USB3.0优盘被用户插在USB2.0接口时该优盘只能向下兼容USB2.0规格,实现USB2.0的传输速度。
首先我们来看一网友对DIY兼容性的看法:
我算是个DIY老手了,帮朋友装机有小百十台了,谈谈个人体会吧。
⒈)首先需要具备一定的硬件知识
对于DIY装机如果对硬件都不了解,那么基本上谈不上兼容问题的考虑上了。装机首先对硬件要有基本了解,比如我们至少需要知道,CPU有两大阵营,一个是Intel平台,另外一个是AMD平台,相对而言Intel处理器技术要好些,AMD处理器则核心优势明显,性价比高些。如果装机的朋友要AMD平台,你给他弄Intel平台的话,不管怎么好,他当时肯定不会特感激你的,所以CPU知识是不可获取的。既然知道CPU有哪2大阵营,接下来就是主板的选择了,因为在兼容性方面,主板与处理器是需要匹配的,另外一个就是品牌的选择,一线主板主要有华硕、技嘉、微星等品牌,如果对品质要求很多,一般选用这几个品牌,不过价格相比主流二线的,华擎、七彩虹、昂达等主板要贵些,考虑性价比的话,二线品牌比较值得推荐。
⒉)另外还需要的就是电源与机箱
电源是整机的心脏,选用的时候一定要结合整机的功耗去选择,并且选用质量比较好的品牌产品比较靠谱。如果考虑后期升级,电源功率要适当留有余地。在攒机过程中:CPU、显卡、主板、内存、电源、机箱几大核心硬件都是需要用户考虑是否兼容的。硬件接口规格按产品型号不同有不同的支持设计,不兼容现象往往给用户带来使用不便。对于装机朋友来说兼容性是第一位的,尤其是新手朋友更是如此。
文章目录 一、动态sql语句1. 动态sql语句概述2. 动态 SQL 之 < if >3. 动态 SQL 之< foreach> 二、SQL片段抽取总结 一、动态sql语句 1. 动态sql语句概述 Mybatis 的映射文件中,前面我们的 SQL 都是比较简单的,有些时候业务逻辑复杂时,我们的 SQL是动态变化的,此时在前面的 SQL 就不能满足要求了。
2. 动态 SQL 之 < if > 我们根据实体类的不同取值,使用不同的 SQL语句来进行查询。比如在 id如果不为空时可以根据id查询,如果username 不同空时还要加入用户名作为条件。这种情况在我们的多条件组合查询中经常会碰到。
3. 动态 SQL 之< foreach> 循环执行sql的拼接操作,例如:SELECT * FROM USER WHERE id IN (1,2,5)。
foreach标签的属性含义如下:
< foreach>标签用于遍历集合,它的属性:
collection:代表要遍历的集合元素,注意编写时不要写#{}
open:代表语句的开始部分
close:代表结束部分
item:代表遍历集合的每个元素,生成的变量名
sperator:代表分隔符
二、SQL片段抽取 Sql 中可将重复的 sql 提取出来,使用时用 include 引用即可,最终达到 sql 重用的目的
总结 MyBatis映射文件配置:
:查询
:插入
https://open.weixin.qq.com/cgi-bin/index?t=home/index&lang=zh_CN
一、申请过程中,苹果应用要申请苹果APPID 这个需要在苹果开发者申请成为开发者,成为开发者先需要申请邓白氏码,之后才能申请成为苹果开发者 二、安卓APP,需要应用包名称和签名 1、找到应用包名称 打开软件HBuilderX 2、生成签名 工具在: https://download.csdn.net/download/mr_lihuijie/20243296 开发工具包(SDK) 使用微信分享、登录、收藏、支付等功能需要的库以及文件。 使用微信语音识别接口、语音合成接口。 使用微信图像识别接口。 使用微信卡券功能接口。 范例代码 包含了一个完整的范例工程。该范例的使用可以参阅Android平台上手指南:HelloWeixin@Android。点击下载 签名生成工具 用于获取安装到手机的第三方应用签名的apk包。点击下载 签名生成工具 在手机上面安装应用https://res.wx.qq.com/open/zh_CN/htmledition/res/dev/download/sdk/Gen_Signature_Android3b8804.apk 安装后,打包把刚才取得的应用包名称复制进去,生成签名 引用:https://www.cnblogs.com/ayanmw/p/3721858.html 打包APP做微信快捷登录测试,有时会出现缓存,就是你的签名和包名都正确,但是调试的时候就是不对。出现错误-2什么的, 这个可能是微信那边生效时间比较慢,需要一定的时间才能反应过来,时间多久生效不清楚,只能慢慢等
本公开涉及计算机主板领域,本公开还涉及计算机主机、机箱和计算机。
背景技术:
在台式计算机主板上,如ATX主板及其衍生主板,通常主板上有集成显卡输出接口或CPU核显输出接口,同时在主板上还提供有扩展插槽,可以连接独立显卡。目前插入式独立显卡的安装方式存在接触不良隐患和占用较大机箱空间问题,阻碍了机箱小型化发展。
技术实现要素:
针对前述问题,本公开提出了计算机主板、主机、机箱和计算机。
根据本公开实施例的一个方面,提出一种计算机主板,包括:主板上设有符合ATX主板标准或其衍生主板标准规定孔距的主板安装孔;主板上的集成独立显卡;主板上的台式机内存插槽。
可选地,所述主板还包括扩展插槽。进一步地,所述扩展插槽采用PCI或PCI Express接口。
可选地,所述ATX主板标准或其衍生主板标准为ATX2.1标准或其兼容标准。
可选地,所述台式机内存插槽为DIMM类型,即双列直插式存储模块。
可选地,主板上集成独立显卡的显存为1GB或以上。
可选地,所述主板还包括ATX主板标准或其衍生主板标准规定的电源连接口。
可选地,所述主板还包括CPU底座,所述CPU底座为台式机CPU底座。
可选地,所述主板还包括CPU底座,所述CPU底座为笔记本CPU底座。
可选地,所述主板包括与ATX主板标准或其衍生主板标准规定的堆叠输入/输出接口区域对应的主板输入/输出接口和不与所述堆叠输入/输出接口区域对应的集成独立显卡接口。
可选地,所述主板包括与ATX主板标准或其衍生主板标准规定的堆叠输入/输出接口区域对应的主板输入/输出接口和集成独立显卡接口。
可选地,所述衍生主板标准为microATX主板标准或mini-ATX主板标准。
根据本公开实施例的另一个方面,提出一种计算机主机,所述计算机主机包括任一上述主板。
可选地,所述计算机主机的机箱后板设有与主板的ATX主板标准或其衍生主板标准规定的堆叠输入/输出接口区域对应的窗口和与主板的集成独立显卡接口对应的窗口。进一步地,所述主机机箱后板两个所述窗口不重叠。
根据本公开实施例的另一个方面,提出一种机箱,所述机箱可以安装任一上述主板。
可选地,所述机箱后板设有与主板的ATX主板标准或其衍生主板标准规定的堆叠输入/输出接口区域对应的窗口和与主板的集成独立显卡接口对应的窗口。进一步地,所述机箱后板两个所述窗口不重叠。
根据本公开实施例的另一个方面,提出一种计算机,包括前述任一主板或主机或机箱。进一步地,所述计算机的主机和显示器分离。
根据本公开提出的主板,独立显卡集成在计算机主板上。与插入式显卡相比,集成的独立显卡与主板接触较稳固,且占用机箱空间较小。特别适合在小机箱中使用。在某些实施例中,主板上还有一部分扩展插槽如PCI-E插槽,可以将本公开主板当作普通主板使用,具有较好的兼容性。
附图说明
图1说明根据本公开某些实施例的主板100示意图。
图2说明根据本公开某些实施例的主板200示意图。
图3说明根据本公开某些实施例的主板300示意图。
图4说明根据本公开某些实施例的机箱400示意图。
图5说明从另一个视角观察的机箱400示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,以下示例性实施例所描述的实施方式仅用来说明本公开而非限制本公开的实施范围。应该理解,实施例可以包括更多或更少的细节或部件。为了更好描述本公开,一些细节被省略。
图1说明根据本公开某些实施例的主板100示意图。图中,主板100包括主板安装孔101和主板后置输入/输出接口(rear I/O interface)102、独立显卡接口103、独立显卡104、扩展插槽105、内存安装插槽106、CPU安装底座107。为图示说明方便,省略了电源线、信号线以及散热部件等。主板长度30.5厘米,宽度24.4厘米,在某些实施例中,主板的尺寸略有变化。主板安装孔101有9个,孔的布局以及孔距符合ATX主板标准。应当注意的是ATX1.1标准和ATX2.1标准对孔的实施要求略有不同,通常实施ATX2.1标准或其兼容标准。ATX主板标准定义了一个6.25英寸(158.75mm)长、1.75英寸(44.45mm)宽的堆叠输入/输出区域(stacked I/O area),主板后置输入/输出接口102对应堆叠输入/输出区域并和外设相连。主板后置输入/输出接口102包括键盘接口、鼠标接口、集成显卡的输出接口、网络接口、USB接口、音频接口。独立显卡104,包括显示芯片和独立显存,焊接在主板上。本实施例中,显存容量为1GB。独立显卡接口103位于所述堆叠输入/输出区域之外,不与所述堆叠输入/输出区域对应。外接显示器既可以连接在主板后置输入/输出接口102上的集成显卡输出接口,也可以连接独立显卡接口103。本实施例中设有符合ATX主板标准的两个扩展插槽105,采用PCI-E(PCI Express)接口,分别是PCI-E×16和PCI-E×1,可以插接显卡、网卡等适配卡。当然,扩展插槽也可以采用PCI接口或其他如ISA接口。本实施例主板既可以用于特定小型化机箱(如图4、图5),也可以用于普通机箱。在某些实施例中,没有扩展插槽105。内存安装插槽106为DIMM(Dual Inline Memory,双内联内存模块)类型,可以连接包括DDR2、DDR3、DDR4等台式机内存。CPU安装底座107可以安装台式机CPU,在某些实施例中,可以安装或焊接笔记本CPU。主板还包括电源连接口(未示出),电源连接口符合ATX主板及其兼容标准,包括24脚的主电源连接口(Main Power Connector)和其它电源连接口。
图2说明根据本公开某些实施例的主板200示意图。图中,主板200包括主板安装孔201、主板后置输入/输出接口202、独立显卡接口203、独立显卡204、扩展插槽205、内存安装插槽206、CPU安装底座207。为图示说明方便,省略了电源线、信号线以及散热部件等。主板长度24.4厘米,宽度24.4厘米。在某些实施例中,主板的尺寸略有变化。图中,主板安装孔201有9个,孔的布局及孔距符合microATX主板标准。microATX主板标准是ATX主板标准的衍生标准。microATX主板标准也定义了一个6.25英寸(158.75mm)长、1.75英寸(44.45mm)宽的堆叠输入/输出区域(stacked I/O area),主板后置输入/输出接口202通过堆叠输入/输出区域和外设相连。主板后置输入/输出接口202包括键盘接口、鼠标接口、核芯显卡的输出接口、网络接口、USB接口、音频接口等。独立显卡204,包括显示芯片和独立显存,焊接在主板上。在本实施例中,显存容量为2GB。独立显卡接口203位于堆叠输入/输出区域之外,不与所述堆叠输入/输出区域对应。外接显示器既可以连接在主板后置输入/输出接口202上的核芯显卡的输出接口,也可以连接独立显卡接口203。本实施例中设有符合microATX主板标准的扩展插槽205,采用PCI-E×16接口,可以插接显卡等适配卡。本实施例主板既可以用于特定小型化机箱(如图4、图5),也可以用于普通机箱。在某些实施例中,没有扩展插槽205。内存安装插槽206为DIMM(Dual Inline Memory,双内联内存模块)类型,可以连接包括DDR2、DDR3、DDR4等台式机内存。CPU安装底座207可以安装台式机CPU,在某些实施例中,可以安装或焊接笔记本CPU。主板还包括电源连接口(未示出),电源接口符合microATX主板标准,包括24脚的主电源连接口(Main Power Connector)和其它电源连接口。
图3说明根据本公开的某些实施例的主板300示意图。图中,主板300包括主板安装孔301、主板后置输入/输出接口302、独立显卡接口303、独立显卡304、扩展插槽305、内存安装插槽306、CPU安装底座307。为图示说明方便,省略了电源线、信号线以及散热部件等。主板长度17厘米,宽度17厘米,主板安装孔301有4个,孔的布局以及孔距符合Mini-ITX主板标准。Mini-ITX主板标准是ATX主板标准的衍生标准。Mini-ITX主板标准也定义了一个6.25英寸(158.75mm)长、1.75英寸(44.45mm)宽的堆叠输入/输出区域(在Thin Mini-ITX主板标准中宽度为1.005英寸),主板后置输入/输出接口302和独立显卡接口303与堆叠输入/输出区域相对应。主板后置输入/输出接口302包括键盘接口、鼠标接口、核芯显卡的输出接口、网络接口、USB接口、音频接口等。独立显卡304,包括显示芯片和独立显存,焊接在主板上。外接显示器既可以连接在主板后置接口302上的核芯显卡的输出接口,也可以连接独立显卡接口303。本实施例设有符合Mini-ITX主板标准的扩展插槽305,采用PCI-E×16接口,可以插接显卡等适配卡。在某些实施例中,没有扩展插槽305。内存安装插槽306为DIMM(Dual Inline Memory,双内联内存模块)类型,可以连接包括DDR2、DDR3、DDR4等台式机内存。主板还包括电源连接口(未示出),电源接口符合Mini-ITX主板标准,包括24脚的主电源连接口(Main Power Connector)和其它电源连接口。
图4说明根据本公开某些实施例的机箱400示意图。图中,机箱400包括顶板401、前板405。机箱一侧板处于打开状态。机箱内安装有主板、内存404、2.5英寸硬盘406、电源407。主板包括CPU安装底座402、扩展插槽403、独立显卡408(包括独立显存)、独立显卡接口409、主板后置输入/输出接口410。主板为microATX规格。为图示说明方便,省略了电源线、信号线和散热部件等。
图5说明从另一个视角观察的机箱400示意图。图中,机箱400包括顶板401。机箱一侧板处于打开状态。机箱内安装有主板、内存404、2.5英寸硬盘406和电源407。主板包括独立显卡接口409和主板后置输入/输出接口410。机箱后板包括主板后置输入/输出窗口411和独立显卡输出窗口412。机箱后板的主板后置输入/输出窗口411和microATX主板标准规定的主板堆叠输入/输出区域相对应,主板后置输入/输出接口410通过机箱后板的主板后置输入/输出窗口411和外设连接。独立显卡输出窗口412和独立显卡接口409相对应。独立显卡接口409可以通过机箱后板的独立显卡输出窗口412和外接显示器连接。为了图示方便,主板后置输入/输出接口保护挡板(I/O shield)和独立显卡接口保护挡板未示出。
凡在本公开的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围内。
sonar是一款静态代码质量分析工具,支持Java、Python、PHP、JavaScript、CSS等25种以上的语言,而且能够集成在IDE、Jenkins、Git等服务中,方便随时查看代码质量分析报告。
安装环境
HOST:10.129.4.43CentOS7.3Java-11PostgreSQL-13.3SonarQube - Community EditionVersion 8.9.1 1. 安装前准备 1.1 JDK 最新的SonarQube-8.9版本运行需要Java11+,CentOS7自带的Java8版本不够时,需要先升级。
# 先升级yum源 $ yum -y update # 查看是不是有可以在线安装的java11 $ [root@ac3-node03 ~]# yum list | grep java-11-openjdk # 查看并卸载旧版本的java $ rpm -qa | grep java $ rpm -qa | grep jdk $ rpm -e --nodeps jdk1.8-1.8.0_201-fcs.x86_64 $ rpm -e --nodeps ... # 安装Java11 $ yum -y install java-11-openjdk $ java -version openjdk version "11.0.11" 2021-04-20 LTS OpenJDK Runtime Environment 18.
1、首先你要检测看看自己的电脑是否已经开启了CPU虚拟化,进入任务管理器就可以查看是否开启的结果。
进入任务管理器(可以通过下面两种快捷键的方式快速进入任务管理器 1. CTRL+ALT+. ; 2.CTRL+SHIFT+ESC)
2、按照图示查看结果
如果你的电脑显示没有开启虚拟化,那么请耐心继续下面的操作
开启方法如下:
1、首先,你需要确认的是你的计算机型号和CPU、BIOS的型号,因为过老的计算机是不支持虚拟化技术的。以机械革命笔记本电脑为例,在开机的同时按F10进入BIOS,其他电脑是F1-F12之间选择,可以自己试一下。按F10进入如下界面,再按回车,进入第二步。
2、进入到BIOS后,找到Configuration选项或者Security选项或者system configuration选项或者Advanced选项,每个电脑不一样,我这里是选择Advanced选项,然后选择Virtualization Technology,或者Intel Virtualization Technology,就可以开始你的操作了。(电脑不同这一步的操作也不同,总之我们要找的就是Virtualization Technology,或者Intel Virtualization Technology,可以自己试试看)
3、接着界面会弹出选择选项的窗口,这里选择enabled选项,也就是启用的意思。
4、更改完成后,要记得保存才能生效,按键盘上的F10按键,然后在弹出保存更改的窗口选项yes选项,接着电脑就会重启,这个时候就成功启用了VT(CPU虚拟化)。
如果你操作的过程中遇到其他问题,希望能够在下方留言一起讨论!!!
1、重新启动计算机,在启动画面出现后马上按下F8键,选择“带命令行的安
全模式”。
2、选择没有密码的用户登陆,如果都有,那就用正常模式那个没有密码的用
户登陆吧。先运行cmd,键入命令netuser,看看一共有几个账户,有没有
administrator,
3、开始-运行-cmd然后键入命令:“netuser新账户名123456/add”,强制添
加一个新账户并将“新账户”用户的口令更改为“123456”。若想在此添加一新用户(
如:用户名为abcdef,口令为123456)的话,请键入“netuserabcdef123456
/add”,添加后可用“netlocalgroupadministrators新账户名/add”命令将用户提升
为系统管理组“administrators”的用户,并使其具有超级权限。
4、重新启动计算机,选择正常模式下运行,就可以用更改后的口令“123456”
登录刚才新建的那个用户了。
在安装WindowsXP过程中,首先是以“administrator”默认登录,然后会要求
创建一个新账户,以便进入WindowsXP时使用此新建账户登录,而且在Windows
XP的登录界面中也只会出现创建的这个用户账号,不会出现“administrator”,但实
际上该“administrator”账号还是存在的,并且密码为空。
当我们了解了这一点以后,假如忘记了登录密码的话,在登录界面上,按住
Ctrl+Alt键,再按住Del键二次,即可出现经典的登录画面,此时在用户名处键入“
administrator”,密码为空进入,然后再修改用户的口令即可。
三,对于比较熟悉windowsxp的人来说就不行了。他不会留下administrator这
个用户,而是把
administrator更为其他用户。这样的话就不行了。可以在dos下copy
c:windowsrepairsamc:windowssystem32config覆盖system32的sam文件
因为用户装系统时一般是进入系统后更该密码,所以repair中sam所包含的密码
为空,这样覆盖完以后用administrator用户进入,密码为空,确定即可。
目录 一:MySQL架构与历史1.1:MySQL逻辑架构优化与执行 1.2:并发控制1:读写锁2:锁粒度3:表锁4:行锁 1.3:事务隔离级别事务日志MySQL中的事务隐式和显示锁定 1.4:多版本并发控制 二:schema与数据类型优化1:选择优化的数据类型1.1:整数类型1.2:实数类型1.3:字符串类型1.4:枚举1.5:日期和时间类型 三:创建高新能的索引1:索引基础1.1:索引的类型 一:MySQL架构与历史 MySQL最重要,最与众不同的特性是它的存储引擎架构,这种架构的设计将查询处理及其他系统任务和数据的存储/提取相分离。
1.1:MySQL逻辑架构 优化与执行 MySQL会解析查询,并创建内部数据结构(解析树),然后对其进行各种优化,包括重写查询,决定表的读取顺序,以及选择合适的索引等。
优化器并不关心表使用什么存储引擎,但存储引擎对于优化查询是有影响的
1.2:并发控制 1:读写锁 2:锁粒度 问题是加锁也需要消耗资源。锁的各种操作,都会增加系统的开销。吴国花费大量的时间来管理锁,而不是存取数据,那么系统的性能会收到影响
mysql提供了多种选择,每种mysql存储引擎都可以实现自己的锁策略和锁粒度
3:表锁 4:行锁 1.3:事务 ACID
原子性,一致性,隔离性,持久性
隔离级别 事务日志 MySQL中的事务 隐式和显示锁定 1.4:多版本并发控制 二:schema与数据类型优化 良好的逻辑设计和物理设计是高性能的基石,应该根据系统要执行的查询语句来设计schema,这往往需要权衡各种因素。
例如反范式的设计 和计数表,汇总表的添加。
1:选择优化的数据类型 几个简单的原则:
更小的通常更好 一般情况下,尽可能的选择可以正确存储数据的最小数据类型。更小的数据类型通常更快,因为它们占用更少的磁盘,内存和CPU缓存,并且处理时需要的CPU周期也更少。但是要确保没有低估需要存储的值的范围。
简单就好 简单的数据类型的操作通常需要更少的CPU周期
尽量避免NULL 列属性可为NULL是一个默认的属性,但是最好指定列NOT NULL,除非真的需要存储NULL值,因为包含NULL的列,在查询中对于MySQL来说更难优化,因为可为NULL的列使得索引,索引统计和值比较都更复杂。
1.1:整数类型 有两种类型的数字:整数 和 实数。整数是其中之一
整数的数据类型:
TINYINT 8位SMALLINT 16位MEDIUMINT 24位INT 32位BIGINT 62位 它们可以存储的值的范围是-2(n-1)到2(n-)-1,其中n是存储空间的位数.
可选用的属性:UNSIGNED。表示不允许有负值,这可以使得正数的上限提高一倍。
1.2:实数类型 实数是带有小数部分的数字。
float和double类型支持使用标准(原生)的浮点近似计算。
decimal类型用于存储精确的小数
由于CPU不支持对DECIMAL的直接计算,所以MySQL5.0后,MySQL服务器自己实现了DECIMAL的高精度计算。相对而言,CPU直接支持的原生浮点计算更快一些。
指定精度:decimal(18,9)表示一共18位数字,小数点后9位。
1.3:字符串类型 在innodb中
varchar:
存储可变长字符串,比定长类型更节省空间。varchar需要使用1或者2个额外的字节记录字符串的长度:如果列的最大长度小于等于255字节,则只用一个字节表示,否则使用两个字节表示。
char:
BLOB与TEXT:
1.4:枚举 枚举:
1.5:日期和时间类型 日期和时间类型
本笔记记录从2019年3月份到12月份,准备计算机912考研相关内容与912考研进度历程。一方面是给后人提供一些参考,一方面方便自己消化咀嚼知识。本篇文章将探讨912考研的范围与复习计划如何安排。
传送门
912与408区别
每个专业都有考试代码,而408为全国计算机统考代码。关于408的考试范围和考试内容有很多。如下:
基本内容也都是围绕着四大专业课展开。四大专业课为:数据结构,操作系统,计算机组成原理,计算机网络。本科为cs的童鞋应该都熟悉这些专业课,包括理论课与实验课。
912为清华大学自己设定的计算机考研专业代码,912在408基础上要增加不少的难度,根据往年的分数与回忆真题可以看出。而且408有往年试题,而912没有,只有回忆版题目。912也同样没有像408一样有非常详细的考试大纲。只限定在四大专业课上。复习难度,可见一斑,如不是基础奇佳或天赋异禀,请不要轻易像博主一样头铁尝试。
top5学校分析
根据综合实力与名气,计算机考研top5学校,个人认为应该以下五所。
清华大学,北京大学,浙江大学,南京大学,上海交通大学。
针对这几所学校,以下分析以下对应的招生人数与考研难度。(后面补上)
复习(学习)计划
四大专业课:
数据结构
操作系统
计算机组成原理
计算机网络
时间安排
3月到7月,过一遍所有专业知识,线上课程至少走一遍,课本读过一遍,同时能自主掌握并做出对应的课堂课本习题。
7月到10月,针对不同的题型,进行知识点的融合突破
10月到12月,过几遍往年的真题,再重新快速复习回顾一遍所有知识点
今天花了很多时间试图把我的大脑围绕在处理Web表单数据的旧方式和如何用WebAPI完成之间的(重要但强大的)范式转换之后,我想我会把2美分添加到这个讨论。
我想做什么(这对于POST的Web表单处理来说很常见)就是能够以任何顺序获取我想要的任何表单值。 像你可以做,如果你有你的数据在System.Collections.Specialized.NameValueCollection 。 但事实certificate,在WebAPI中,来自POST的数据以stream的forms返回给您。 所以你不能直接做到这一点。
但是有一个叫FormDataCollection (在System.Net.Http.Formatting中)的很酷的小类,它可以让你做一次遍历你的集合。
所以我写了一个简单的实用程序方法,它将通过FormDataCollection运行一次并将所有值粘贴到NameValueCollection 。 一旦完成,您可以将所有数据跳到您的内容。
所以在我的ApiController派生类中,我有一个像这样的post方法:
public void Post(FormDataCollection formData) { NameValueCollection valueMap = WebAPIUtils.Convert(formData); ... my code that uses the data in the NameValueCollection }
我的静态WebAPIUtils类中的Convert方法如下所示:
/// /// Copy the values contained in the given FormDataCollection into /// a NameValueCollection instance. /// /// The FormDataCollection instance. (required, but can be empty) /// The NameValueCollection. Never returned null, but may be empty. public static NameValueCollection Convert(FormDataCollection formDataCollection) { Validate.
一、安装 1、安装pyqt5
方法1:python pip install pyqt5
方法2:PyCharm中依次点击File --> Settings --> Project:pythonProject --> Python Interpreter --> “+” --> 搜索pyqt5 --> Install Package
测试:
import sys from PyQt5.QtWidgets import QApplication, QWidget if __name__ == '__main__': app = QApplication(sys.argv) w = QWidget() w.resize(250, 150) w.move(300, 300) w.setWindowTitle('jsong') w.show() sys.exit(app.exec_()) 2、安装Qt Designer
pip install pyqt5-tools 安装完成后,designer.exe在Python安装目录下:xxx\Lib\site-packages\qt5_applications\Qt\bin\designer.exe
二、在PyCharm中配置Qt Designer,PyUIC,pyrcc 1、在PyCharm中依次点击File --> Settings --> Tools --> External Tools
1)在Name中添加自己能记住、看懂的名字;
2)Program选择designer.exe安装路径,Working directory选择自己设置的工作文件夹路径;
3)点击“OK”
2、配置PyUIC(.ui文件转换为.py)同1,PyUIC5的安装路径为xxx\Scripts\pyuic5.exe,Arguments输入代码:
$FileName$ -o $FileNameWithoutExtension$.
https://blog.csdn.net/qq_36667170/article/details/114239948
接下来,会出一系列文章,通过比较C++与Rust的异同点,更好的学习r和运用Rust语言!
我们都会在电脑中下载各种各样的软件,时间久了桌面的软件就会很多,而有些并不是我们主动下载的,而是绑定下载,所以我们可以将一些不需要的软件卸载,很多笔记本电脑用户还不知道怎样卸载软件,针对此问题,本文给大家带来笔记本桌面上的软件的详细卸载步骤吧。
具体步骤如下:
1、在卸载之前,我们可以通过桌面直观地查看到笔记本电脑安装的软件,当然,也有一些没有添加到桌面快捷方式,这个时候需要我们不定期查看自己电脑安装的软件,不过查看自己安装的软件和卸载软件是一样的方式。
2、第一种方式是通过控制面板卸载软件。
首先在桌面上找到我的电脑或者此电脑,然后右击此电脑后弹出可选项,此时点击属性进入到控制面板主页。
3、此时我们就可以看到程序卸载的选项,点击进去后我们可以看到电脑上安装的所有软件,这里以谷歌软件为例进行演示,我们可以右击也可以双击卸载,右击后出现卸载,点击即可,双击后也可以进入到是否卸载的界面。
4、虽然可以直接进行卸载,不过需要我们注意的是,双击卸载后界面会出现是否同时删除你的浏览记录,也有一些软件会提示是否删除本地记录,这些都可以根据自己的情况来进行选择,如果要删除,直接点击继续即可。
5、第二种方式,用到了第三方电脑管理软件。
1)首先电脑上要安装电脑管家或者其他软件管理工具,打开电脑管家之后,我们可以看到左下方的软件管理,然后点击进去。
2)此时我们可以看到各种软件,也可以分类查询自己电脑中不需要的软件,查找到自己要卸载的软件后,直接点击卸载按钮即可,同时也会出现是否清楚浏览记录或者本地记录等信息。
第三种方法是直接用win10系统自带的功能进行卸载。
1)此时我们在桌面右击,然后点击个性化,在界面右上方出现设置,然后点击进去;也可以在电脑左下角点击Windows标识,弹出的界面也可以找到设置。进入到设置界面后,我们可以在右边找到应用功能,在这里我们也可以看到电脑上所有的软件程序,点击某个程序,然后卸载即可。
上述给大家讲解的就是笔记本怎样卸载软件的详细步骤,有这个需求的用户们可以按照上面的方法来进行卸载吧,希望帮助到大家。
网页中的图片是使用base64编码后的字符串代替了,这个叫做Data URI scheme,下面有个不错的示例,大家可以参考下
最近来了一个网页,里面有图片,但是却没有引用外部的图片资源,很好奇.查看代码后发现,里面的图片是使用base64编码后的字符串代替了,这个叫做Data URI scheme.
Data URI scheme支持的类型有:
data:,文本数据
data:text/plain,文本数据
data:text/html,HTML代码
data:text/html;base64,base64编码的HTML代码
data:text/css,CSS代码
data:text/css;base64,base64编码的CSS代码
data:text/javascript,Javascript代码
data:text/javascript;base64,base64编码的Javascript代码
data:image/gif;base64,base64编码的gif图片数据
data:image/png;base64,base64编码的png图片数据
data:image/jpeg;base64,base64编码的jpeg图片数据
data:image/x-icon;base64,base64编码的icon图片数据
自己做了一个简单的页面,点击查看测试页面,大家可以看一下源码.整体上操作如下:
1 base64编码图片
linux下直接可以使用base64+图片路径就可以产生base64编码后的字符串
图片:
使用命令:
base64 android.png
产生的字符串为:
代码如下:iVBORw0KGgoAAAANSUhEUgAAAIAAAACACAYAAADDPmHLAAAgAElEQVR4nOy9d5xdVbnw/127nTbn
TJ9MSSaZdNIbCRAInQCCiIoiYkHFclX0JzbEhl7Ra8V6RbyKCqKAglKlSAgJKYY00nudPpOZ08ve
e71/nLPLOTNBmvd33897H5icstde5enPs561D/wv/D8N4hW0VYAgUAeE/zXT+V94jTBY+rNf7g0v
hwG02tq6c6qrY00zZsxY2D5+/DJNVRtG9iQA6etQgAQpXhmXAbSODxOrM9m1KY/TqxCy+PoK+/JN
EJDgm4+UojjtVzvRUpfua6lzIUtfl/rrmB5FKDkO7Mi/wv4FSA+nUpTWL6XXubsWGB4e2rx69erH
MplM/9GjR1fyMpjhpZashMPhc+bMmTN90aJFnxsYGBh7+PBhZbQehBRIIX2zKU1UONgBgSjhSCKk
izHKKFL6eM2XB0ikjmKkzufPPx/E6+VkqxiNMaSvb1FCWvFrIYT7sfxG4c5ZSOkRUYoK/vAzu0CW
1iKc9wKXVRcubabltKcBwcY/LabzUBJRIp4s3T2iZ+HnrVKf0httBM48NBAKhZkwoSObSMQfXL9+
/QM7dux4Ahg6GerUk3xvTJgw4Y1XXfXWWwqmef3+Aweqh4aGRQXTefJYWrDAeZUlbh1JGCGKSJZC
lN77l16EyZMno0W7EOEuZHwqAz0pHI3irN0lXokBS6Lhk2rhIkWUiC0cwghZZILK4V2se304cxS+
Zt6iS4zgrqX0vtTKCOgsfutWAGrDU1n1UKE0b3Fy4vsm47SltCbhLaISq+7NZsGkv79Piw/HZy0+
bfEb6mrrxL59+44DA5V3wegMYMyYMePNF1504U82bd4yJZNJlxABnhIuJ60oje6qKFci/f/6ubuc
mDgLLbXZuTnBovN1bGkyZko3O1ZVV2LfG9tHSFn6XH69+Oqfm1+iywnqMYyz5hHj+VYliuoEIUvk
dMcotn3b/6eS4zhCKDx5+wSymYI7qXLMeFh035dMnsNUFdP0zcWnKxzhKs29r69fr6+rW7ZkyZIx
mzZt2gH0Va5nBAO0trZevnz58ts3b97cIHyGzMeT7mfpfCvK1V5ZI3wSKQTClbASM/kW50odgv6D
LYydfRyJyez549i+vuBr4/RbrorLx69Art+H8A3rrc6RxlI/ZUvxPpf4x0eFkVoC4KyLxkHjSgQw
+OJ57N12oiTFI0nvzL4k4t56xEivp1JhCiHK+pVlPUA6naZQKMxcsmRJZMuWLVuoMAeVDDDj2ndd
+/PNW7a0F9XOSAl2p+tTR0VZGEXdO7iT3mI8IlTqX+9fKSAZzzCx7VSU2r3YWhcROZuuo0kcXehK
tm/BJYy4rOCS0y+WletwJN9d16jOQcWqHMYfTc9BrDrErMtfQABVylwe/V28pHFGzNaHB89v8hhw
tDn42gvh8xNGCqnTvlAwCYaC80LB0PbOzs5tgOVc9Tt1wXPPPfete3bvmVG0a9Jxml1wLVZJYIoD
jmwnvCbeFw6a/NIjhdvI/V54Xu8jf9xHULSha2EmnbMWQ1eL7aVESs/xGhVKDCrdsbx54Rur6MBJ
bw5eK69v4TGSy/dlGgR8q+WiD3QjJKhKkPtus3ztvNl6r9Jzmp0WoyzJxyfF9tJ3v39d3uJL/xcX
3tfXz+lnnPFNYLq/Xz8DTJ4yZconMpmM1+2IiZS+l0V7j3TsVHkriV9Khf9CRXfSVWFIgZSiLJAE
eOzn9aCoWNLiio/lXWw46t/FjoNcz2EuEl16ERq+78tULT5GGbFu4fbh2OSKq947ARdc2UZBdGHL
AodWL8Is2GVdSp/mcM2rKE20om8/QaVfyoUsu+ZChV9VXJenDffs2dNw/vnnvwkwnFscBlA6OjoW
7N+/v05K17JXTMYTezd2LmvlkxxnIQ6n+iK+SpB+rhjFJAydyNC1YQESC9PYx9mXdJSP6c7FWTJF
p8xhBD9C3PDUYRbhk2TfWqTvxQkLfSq8bP6uKEpaWmuJTHkWEGiZOWx6vt9tXo4CL3kgy9TkCEly
8e5h5CRBsSNs0hPeSnmzTJOZM2deB7Q732ml19iSJUsuOXL4cJnH6Q0tveSGi66KebjxvSiq50rv
1dep29dJGN6JrItaBlY93sW1c2eQFrtpXrCS6JqpJOIZRyy9teP0XSRYXX2EhlaNyVPGIUMHCMUk
dfVVSHUYhMQiCYBCBGErKHYtvb19mOlqkv0xjh0epK8zTypeKNFDlBFCQImAxe+XvWcfmTwYWjX3
/zTr0ctVx84NXi+jhhoOjoUsI7fvrnKkyaI2FkKWckQOm/k8s1K7TCYzFmgG9oHHADXV1dXzZIXT
V2TAEjGc7JObQRkxXW/Iky3KJw0ns3WeVSsqPVlS7/f9CN54o4GUNld8NMNd3yxNx+kQaGuPMnVO
mLHTswSiQ2QLx5BILGsXhhbFBtKyC0WqKFJFVXTAxrTj2NLCpovqMUFgmNj4HO2LA4CKoQbJDFXT
ubeKfVszdB1PuIpHlLjgkqubyeR3AQrbHpsN9Pt8o9KKfMQZmSTzzJmQDvmcQcrx5753rIa/L4cr
RZlOK3UjGRoa0oAa52uHAcJCiFiF6StKk7PICrtV0bTklHl22D8pt530EZ8KDnXaiGIyp3hduFKW
yxbY/8wiJp/zAjmOctoF81j75ACTZ9Qze6lN7dh+8tYRpJRIoZK3dDQthEABLQqIk2S9VFRFLV0L
ed+qodJCbEw7ixJN0ja3QNs8QcCoof9AHZtXFTh+MEvr2FoCY9eAEkT2L2TX1n4fYhxVL1zW9i7i
4gEXLx7Tjy5GDo6l07XfohSjjYrQWkpP7cbjcSju6QAeAyhSyvI0r+tllk92NJClkTzm8xHfVYOO
c1ZuBSuXJkvc70o3Hs9tfL6b8dOXEGzdwqTTDjBpsQHKfhAS0w6iq1X/dK6vDASgoggVRRigFLFt
默认情况下,我们在win10系统的安全模式中都是无法直接创建新账户的,只要点击新建窗口就会出现一闪而退的问题。不过,有部分用户反馈自己有时候又偏偏需要通过这种方式来解决问题。这该怎么办呢?其实,微软并未完全封死安全模式新建账户的套路,使用命令提示符就可以搞定。下面,小编就分享下安全模式创建新账户的具体步骤。
友情提示,要想进入Windows10安全模式,可以参照PConline之前提供的方法:
《 Win10系统怎么实现按F8进入Win7安全模式菜单 》
步骤如下:
1、单击开始按钮右键,选择“命令提示符(管理员)”
2、输入如下命令,按回车键(如下图):
net user 账户名 /add
3、如果想把账户提升到管理员,可以再接着执行如下命令(如上图):
net localgroup administrators 账户名 /add
通过上述步骤的简单操作,我们就能够在控制面板的用户账户中看到新建的账户,这个账户是本地账户,如果要使用微软账户,需要再登录。
Latitude5480的拆机和维护非常简单:拧松底盖螺丝(有防脱落设计)即可将合金底盖轻松卸下,该机的内部规整得令人吃惊!主板的集成度高,配件布局整齐规范,基本看不到飞线。
Latitude5480采用“半框架结构”----保留了部分区域的框架,比如电池下、HDD硬盘位下,更多的地方采用龙骨进行限位和功能区隔,抑或是将配件的接口压在龙骨下(比如内存插槽)。这种半框架结构,在保证机身整体强度和抗震性的同时,也有利于减轻机身重量。
笔记本有一天突然电池无法充电。于是网上买了一个电池,准备拆机更换电池。
网上买一个51Wh原装电池。
那笔记本如何进行拆机呢?
翻到D壳,把D壳所有螺丝都拧掉,然后找到背部的一个小缺口。
使用一字螺丝刀,轻轻往上敲。
敲起一点缝隙后,使用手,去将D壳往上搬,即可打开D壳。
该机内部的电池位置做工出色,电池被龙骨、螺丝、卡扣牢牢地限位,可靠性和安全性得到了最大限度的保障。
找到电池位置,准备将此不充电的电池拆下来。
电池右边缘一个小黑色螺丝,只要将此螺丝拧下来之后,电池就可以拿起来了,然后将电池排线拨出,就可以把电池拿下来。
将新买的51Wh电池更换到笔记本,排好电池排线。上好D壳后螺丝,更换电池完成。
开机后可以发现正常可以充电。
一、安装java和scala 1、安装java 安装java
sudo apt install openjdk-11-jre-headless 安装javac
sudo apt install openjdk-11-jdk-headless 测试是否安装成功:
java --version或javac --version 2、安装scala 1)下载
传送门:https://www.scala-lang.org/download/2.12.12.html
2)解压缩文件包,可将其移动至/usr/local/share下:
sudo mv /downloadpath/scala-2.12.12/ /usr/local/share # 下载目录需要按你实际的下载路径 3)修改环境变量,在profile文件的末尾加入下面第二行的内容:
sudo vim /etc/profile export PATH="$PATH:/usr/local/share/scala-2.12.12/bin" 4)保存退出
先按:esc键 然后按下::wq 5)重启
6)最后测试是否安装成功即可
二、安装sbt 依次执行以下命令:
echo "deb https://repo.scala-sbt.org/scalasbt/debian all main" | sudo tee /etc/apt/sources.list.d/sbt.list echo "deb https://repo.scala-sbt.org/scalasbt/debian /" | sudo tee /etc/apt/sources.list.d/sbt_old.list curl -sL "https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x2EE0EA64E40A89B84B2DF73499E82A75642AC823" | sudo apt-key add sudo apt-get update sudo apt-get install sbt 有一点需要注意的是,如果安装了sbt,我们其实就不需要安装scala了,也就是前面安装的scala压根就用不到,你可以理解为sbt会自动下载所需版本的scala!!!
插件 electron-is-dev
npm地址:https://www.npmjs.com/package/electron-is-dev
作用:判断electron是否在开发环境
安装:
npm install electron-is-dev --save-dev
使用:
main.js
const {app ,BrowserWindow} = require('electron') const isDev = require('electron-is-dev') let mainWindow app.on('ready',() => { mainWindow = new BrowserWindow({ windth:1024, height:680, webPreferences:{ nodeIntergration:true } }) const urlLocation = isDev ? 'http://localhost:3000':'kaifa' mainWindow.loadURL(urlLocation) }) concurrently
npm 地址:https://www.npmjs.com/package/concurrently
作用:我们在运行electron程序的时候需要用yarn start与electron .两个命令来执行。我们可以使用yarn start & elecreon . 来执行。 但这种办法很难跟踪不同的输出。此外,如果一个进程失败,其他进程仍会继续运行,我们甚至不会注意到其中的差异。 concurrently这个依赖就能解决这个问题
安装:yarn add concurrently --dev
使用:
改造package.json文件。以前的package.json文件:
"scripts": { "start": "react-scripts start", "build": "react-scripts build"
本系统分成了三个文件,main.c student.c student.h 功能: 实现对班级成员的增加、删除、修改、遍历、根据成绩排序。
增加 会检查,现在班级已有的人数,班级是否已满(没有学号重复检测)
删除(根据学号查询-->删除) 会判断 班级中是否存在这个学生
修改(根据学号查询) 可以修改学生的其他信息(除学号外),也有检测该班级中是否存在该学生ID的功能函数
遍历 会判断该班级中是否有学生,没有学生 会做出提示
排序 根据成绩,由高到低,本系统使用的是冒泡排序
注:没有调用数据库,所有的数据都是存在内存里
---代码中有详细注释--- main.c功能 主要包含文件的整体逻辑(子函数的调用),主要的逻辑代码
student.c功能 是子函数的功能实现的执行代码
student.h功能 是函数的所有的头文件,以及结构体的定义
代码 main.c #include "./student.h" int main(int argc, const char *argv[]) { //使用结构体之前需要定义一个结构体类型的变量 class_t my_class;//定义一个班级的结构体变量 my_class.count = 0;//初始化班级人数 int choose = 0; //循环等待客户操作 while(1){ //打印主菜单 print_menu(); printf(">>"); scanf("%d",&choose); switch(choose){ case 1://插入学生 insert_student(&my_class); break; case 2://遍历学生 print_student(&my_class); break; case 3://修改学生信息(没有学号) xiugai_student(&my_class); break; case 4://删除学生 rm_student(&my_class); break; case 5://根据成绩排序 PX_student(&my_class); break; case 6://退出系统 exit(0); break; default: printf("
model = model_class.creat_model()
modelpath =‘XXX.h5’
model = model.load_weights(modelpath)
加载后无法predict
报错 model没有predict属性
改用 keras.Model.load_weights(model,modelpath) 加载模型
已知log(12)7=m,log(12)3=n,试用m,n表示log(28)63=___
log是任意底数的对数。比如log2 4就是2为底,4的对数(lg是以10为底的对数,ln是以e为底的对数) loga b=lnb\ln a 比如log2 4=ln4\ln 2=2 (你写的log1不是一个完整的数.
我知道对数的定义,但比如log5 25这类自然是比较好计算的,可是如果是log2。
你把这些公式记住就行了1、a^log(a)(b)=b 2、log(a)(a)=1 3、log(a)(MN)=log(a)(M)+log(a)(N); 4、log(a)(M÷N)=log(a)(M)-log(a)(N); 5、log(a)(M^n)=nlog(a)(M) 6、log(a).
请详细列出关于log、lg的计算方法
1、a^(log(a)(b))=b 2、log(a)(MN)=log(a)(M)+log(a)(N); 3、log(a)(M÷N)=log(a)(M)-log(a)(N); 4、log(a)(M^n)=nlog(a)(M) 推导 1、因为n=log(a)(b),代入则a^n=b,即a^(log(a)(.
例如log10=1 log100=10 那么log2=? log5=? 请问log后面加数字是怎么计算结.
log是对数的符号,你所举例应该是以10为底的对数,对数其实就是指数的逆运算,log后面的数字叫真数,真数在指数运算中是值,比如10^2=100,则log100=2,10^3=.
你好:log的计算及其log的计算方法 log(ab)=loga+lgb log(a/b)=loga-lgb loga+lgb=log(ab) loga-lgb=log(a/b)
log(2)(0.4)等于多少过程怎么做? 2是在log的右下脚
log 0.001=log10^-3=-3 log 0.003=log3-3 约为-2.5(log3大约为0.5) log 0.115=log115-3 约为-1(log115大约为2) 其实你可以画对数函数图像!当底数大于1的时候,那么在log.
计算器上的log就是指常用对数lg 直接按lg3就行了。计算器上也有IN 键 直接按就行了 相反算log2^3这样的东西要麻烦点 需要利用换地公式 log2^3=lg3/log2 在计算器上 按lg3/(.
SPL=20lg(0.5x10的5次方)=20(-lg2+5lg10)=20(-0.3+5)=94
ln就是以e为底的log,lna可写成loge a lg就是以10为底的log1.log(c)(a*b)=log(c)a+log(c)b --相当于同底数幂相乘,底数不变“指数相加” log(c)(a/b)=log(c)a/log(c)b --相当于同.
lg=log10 由于在数学对数计算时,以10为底的对数非常常见,为了书写方便,提高书写效率,就简化为lg,省掉了中间的o和底数10。类似的还有ln,自然对数,是以e=2..
对数函数的换底公式 一共好像有5 6 条吧 是那几条 现在需要用到
搭建微服务框架 general-service服务
env.yaml 文件 general_service_port: 8080 general_service_address: localhost user_service_port: 8081 user_service_address: localhost src/config/env 文件 var fs = require('fs'); var YAML = require('yamljs'); module.exports = { /** * 初始化环境变量到process.env中 * 如果环境变量和config重复则取环境变量里配置的值 * @param {string} envPath 环境遍历路径 * @param {object} config 配置项 */ init(envPath) { let env = {}; try { if (!fs.existsSync(envPath)) { console.warn('File not exist: env.yaml'); } else { let envjson = YAML.load(envPath); Object.keys(envjson).forEach(function (k) { env[k] = envjson[k]; }); } } catch (e) { console.
最近手里有个项目要求使用的是迪文触摸屏,与从机直接通讯,使用的是modbus协议,记录一下使用笔记。 一、开发环境 屏幕型号:DMT48270C043_15WT
开发软件:DGUS Tool V7.388.exe
bin文件编辑软件:010Editor.exe
modbus 通讯:屏幕默认串口4,485
二、注意事项 1、DWIN_SET文件夹中应有的文件 特别注意需要有DWINOS_T5_Modbus_V7.bin这个文件,这可能属于一个app内核文件吧,可能资料发给我的太多了,挨个试,试到这个好用。
2、编辑22文件,配置modbus 手册中指的22文件,实际上是22_Config.bin文件,也有可能22_.bin都识别。使用010Editor.exe*这个软件打开bin文件。 编辑22文件按照如下表格式,更多参照该文档。
0xE000开始的第一行用来配置通讯参数;0xE008之后的每一行代表一条modbus指令,这一行中的200F这个位置(0xE00C)的值要特别注意,在0xE00B为0x0002时,在触摸屏工程中向200F这个地址写0x005A便会触发该条modbus指令数据,如下图。更多操作参照论坛及视频:
http://forum.dwin.com.cn/forum.php?mod=viewthread&tid=144&extra=page%3D1 3、编辑22文件,配置某些地址的初始值,用于发送modbus指令 编辑初始值,然后保存->生成工程,下载到屏幕中发现发出的数据并没有赋值上初始值0xFF00,打开22_Config.bin 0x1000这个位置也是没有值的,那就手动改了它,改完后别忘记把0xE000的数据重新写入一遍,再下载到屏幕就好用了。
数据通讯成功
题外: 迪文这款屏幕稳定性还是不错的,整明白整个流程下次开发就容易了,特别说明:无论是客服还是技术支持都是很客气的,可能需要等待点回复时间,但都会有回应。但不得不说,第一次使用该屏幕modbus功能,开发起来比较费事,毕竟做开发,一个细节没注意到都会导致通讯失败,费时费力,而导致开发难的主要原因是“使用手册”modbus这部分不完整,好多细节没有说清楚(比如对于出厂的屏幕使用modbus在DWIN_SET文件夹中需要放置哪些文件,22文件的命名规则,22文件是否允许放置多个等),好多步骤没有需要摸索,而且感觉上位机还隐藏着bug(比如工程生成完毕后,使用modbus的05写线圈功能,就需要给一个地址比如0x1000覆初值0xFF00,但每次生成的工程22文件的对应位置上并没有改动,只能手动将22文件的0x1000改为0XFF00,若这个地址超出了赋值范围,设置时至少在上位机上应该提示一下;还有工程改动后,每次生成的新工程都会将22文件上次编写0xE000位置的modbus指令给清空,需要重新复制过来,很费事),资料整体感觉很乱,应该有一个开发向导,至少让开发者按照步骤先搭建起一个能发数据的例程,幸亏参考视频帮助了不少,建议多录制更新。项目开发都追求时间,不可能将所有的文档的每个细节全看一遍,但要使用这个功能,应该尽可能的在这个位置详细内容,可能存在的不明确点标识出来。官网的资料最好按照屏幕型号分类,我要开发这款屏幕,我只想知道这款屏幕相关的全部资料。以上仅表示个人意见,所表达的内容存在个人开发疏漏的情况。
毕业工作越久越觉得学历重要,觉得高中校长在百日高考誓师大会上说的一句话:高考可能不是人生唯一的出路,但对大多数人来说会是最好的选择。
十年磨一剑一招试英雄。高考是几百万考生共同试炼的一场选拔考试,国家对他的重视足以显示。那对于同学们来说高考真的有那么重要吗?
一、高考的权威性决定了它的重要性
高考是全国认可度最高的考试,也是参与人数最多,普通人一生中公平的一场考试。国家对于高考的重视越来越突出,甚至于国外的大学也开始承认中国的高考成绩。在我们国家来说,大多数职位都有学历要求,这使得全民关注高考,同时高考也成为了大众的一次公平的晋升机会,重视高考所以才能把握高考。
二、高考人生的跳板
高考对于个人人生的影响决定了它的重要。对考得一个好成绩,不仅是对自己付出的回报也是能够进入重点大学的钥匙。进入重点大学意味着你有了一份不错的简历可能会进入一个不错的公司,并且好的大学提供给你了更多的机会、更好的平台、为你的未来提供了无数的更好的可能。一次高考可能会使你的生活、你的家庭、提高到一个更好的阶层。对于大多数人来说,一次高考好成绩使自己进入好的大学毕业后拥有一份好的工作,获得一份不错的收入。那高考可能就决定了将来女生用哪种价位的化妆品,男生买哪种价位的车,毕竟目前不错的企业家都是名牌大学毕业。
三、高考对于未来发展
每年高考都是在公平地选拔人才,为国家未来的发展储备人才,高考选拔出的人中大多数人将是国家未来三四十年的中坚发展动力。选择引领潮流还是被迫跟随潮流,创造更大的价值还是默默执行,也许就有高考决定。
在我们国家其实高考很大程度决定普通人的人生走向,个人前途真的就在于高考你发挥的怎么样,决定你有没有大学可以读? 去哪里读大学?在哪里找女朋友、以后会在哪里工作!
总之,加油!拼尽全力去努力!不不然以后要花更大的代价修复高考的失败。
更多高考资讯,请关注公众号:汉小哲状元课堂。
解决pyinstaller打包文件过大的问题(Anaconda) 前言过程记录关于pipenv创建的环境路径 前言 参考资料
pyinstaller基本操作
1、环境
anaconda、pycharm;
2、原因
网上说打包文件过大的原因是因为,anaconda环境下打包时引入了很多不必要的文件,一块打包,导致生成的exe文件过大。
3、最简办法
用pipenv创建纯净环境。在纯净环境下,pip安装程序所需要的第三方库,再打包程序。
4、结果
程序由300M变成30M。压缩效果显著。
过程记录 step1: pip install pipenv
step2:pipenv --python 3.9
1)在当前目录创建3.9版本的python环境,注意python3.9是利旧,利用旧有版本的python编译器,创建纯净的python3.9虚拟环境;
2)比如,当前python版本是3.9,pipenv --python 3.8就会报错,是利旧的方式,而不是新增的方式,创建虚拟环境。
step3:pipenv shell
打开pipenv的命令行
step4:pip install XXX
在pipenv shell下安装所要打包的程序用到的第三方库。
比如我用到:pandas、openpyxl、pinyin,以及打包所用的pyinstaller
step5:pip list
在pipenv shell下,查看已有的库文件
可以看到,环境很纯净,只有第三方库及其依赖文件
step6:pyinstaller -F -i E:\auto_v3\auto.ico E:\auto_v3\auto_V3.py打包
说明一下 第一个路径的.ico是图标,第二个路径的.py是要打包的程序。详见第二个参考链接
可以看见打包生成的exe文件,不超过30M。要想原来是300M,说明这个解决办法很好。
关于pipenv创建的环境路径 所有用pipenv创建的环境均能在C:\Users\lenovo\.virtualenvs找到
不同计算机不太一样,自己去查找。
1. 他是什么? A synchronization aid that allows one or more threads to wait until a set of operations being performed in other threads completes.
是一个多功能的同步辅助器, 允许一个或者多个线程等待, 直到其他线程的操作完成.
可以给定一个count进行初始化, 用await方法进行阻塞, 直到当前计数通过countDown方法减少至0之后, 所有等待线程被释放. 2. 他的作用 可以用于让一个线程等待N个线程完成某个动作(某个动作已经完成了N次)
初始化方法,其中count代表计数次数:
final CountDownLatch countDownLatch = new CountDownLatch(12); 计数方法,每调用一次计数一次:
countDownLatch.countDown(); 阻塞方法(带时间参数,代表兜底方案, 最多阻塞多少时间)
countDownLatch.await(5,TimeUnit.SECONDS); countDownLatch.await(); 3. 实战 3.1 需求 批处理每日推送消息: 每天某个时间轮训扫表3000万个用户进行推送消息
主页获取展示页面接口: 一次性调用12个接口封装前端参数, 一个接口返回
3.2 代码展示 批处理每日推送消息:
// 批次结束完才能进行下一波 final CountDownLatch countDownLatch = new CountDownLatch(users.size()); if (CollectionUtil.isNotEmpty(users)) { for (UserDo userDo : users) { ThreadPoolUtil.
1. B树 B树也称B-树,它是一颗多路平衡查找树。二叉树我想大家都不陌生,其实,B树和后面讲到的B+树也是从最简单的二叉树变换而来的,并没有什么神秘的地方,下面我们来看看B树的定义。
每个节点最多有m-1个关键字(可以存有的键值对)。根节点最少可以只有1个关键字。非根节点至少有m/2个关键字。每个节点中的关键字都按照从小到大的顺序排列,每个关键字的左子树中的所有关键字都小于它,而右子树中的所有关键字都大于它。所有叶子节点都位于同一层,或者说根节点到每个叶子节点的长度都相同。每个节点都存有索引和数据,也就是对应的key和value。节点的关键字数量范围:1 <= k <= m-1非根节点的关键字数量范围:m/2 <= k <= m-1 注意,描述一颗B树时需要指定它的阶数,阶数表示了一个节点最多有多少个孩子节点,一般用字母m表示阶数。
比如这里有一个5阶的B树,根节点数量范围:1 <= k <= 4,非根节点数量范围:2 <= k <= 4。
1.1 B树插入 规则: 判断当前结点key的个数是否小于等于m-1,如果满足,直接插入即可,如果不满足,将节点的中间的key将这个节点分为左右两部分,中间的节点放到父节点中即可。
例子:在5阶B树中,结点最多有4个key,最少有2个key(注意:下面的节点统一用一个节点表示key和value)
插入18,70,50,40
插入22
插入22时,发现这个节点的关键字已经大于4了,所以需要进行分裂,分裂的规则在上面已经讲了,分裂之后,如下。
接着插入23,25,39
分裂,得到下面的:
1.2 B树的删除 B树的删除操作相对于插入操作是相对复杂一些的,但是,你知道记住几种情况,一样可以很轻松的掌握的。
现在有一个初始状态是下面这样的B树,然后进行删除操作。
删除15,这种情况是删除叶子节点的元素,如果删除之后,节点数还是大于m/2,这种情况只要直接删除即可。
接着,我们把22删除,这种情况的规则:22是非叶子节点,对于非叶子节点的删除,我们需要用后继key(元素)覆盖要删除的key,然后在后继key所在的子支中删除该后继key。对于删除22,需要将后继元素24移到被删除的22所在的节点。
此时发现26所在的节点只有一个元素,小于2个(m/2),这个节点不符合要求,这时候的规则(向兄弟节点借元素):如果删除叶子节点,如果删除元素后元素个数少于(m/2),并且它的兄弟节点的元素大于(m/2),也就是说兄弟节点的元素比最少值m/2还多,将先将父节点的元素移到该节点,然后将兄弟节点的元素再移动到父节点。这样就满足要求了。
接着删除28,删除叶子节点,删除后不满足要求,所以,我们需要考虑向兄弟节点借元素,但是,兄弟节点也没有多的节点(2个),借不了,怎么办呢?如果遇到这种情况,首先,还是将先将父节点的元素移到该节点,然后,将当前节点及它的兄弟节点中的key合并,形成一个新的节点。
移动之后,跟兄弟节点合并。
2. B+树 B+树其实和B树是非常相似的,我们首先看看:
B+树所有的数据都存在叶子节点非叶子节点都是索引 相同点:
根节点至少一个元素非根节点元素范围:m/2 <= k <= m-1 不同:
B+树有两种类型的节点:内部结点(也称索引结点)和叶子结点。内部节点就是非叶子节点,内部节点不存储数据,只存储索引,数据都存储在叶子节点。内部结点中的key都按照从小到大的顺序排列,对于内部结点中的一个key,左树中的所有key都小于它,右子树中的key都大于等于它。叶子结点中的记录也按照key的大小排列。每个叶子结点都存有相邻叶子结点的指针,叶子结点本身依关键字的大小自小而大顺序链接。父节点存有右孩子的第一个元素的索引。 2.1 插入操作 规则: 当节点元素数量大于m-1的时候,按中间元素分裂成左右两部分,中间元素分裂到父节点当做索引存储,但是,本身中间元素还是分裂右边这一部分的。
下面以一颗5阶B+树的插入过程为例,5阶B+树的节点最少2个元素,最多4个元素。
插入5,10,15,20
插入25,此时元素数量大于4个了,分裂
接着插入26,30,继续分裂
2.2 删除操作 规则: 叶子节点有指针的存在,向兄弟节点借元素时,不需要通过父节点了,而是可以直接通过兄弟节移动即可(前提是兄弟节点的元素大于m/2),然后更新父节点的索引;如果兄弟节点的元素不大于m/2(兄弟节点也没有多余的元素),则将当前节点和兄弟节点合并,并且删除父节点中的key
初始状态
删除10,删除后,不满足要求,发现左边兄弟节点有多余的元素,所以去借元素,最后,修改父节点索引
发现父节点索引也不满足条件,所以,需要做跟上面一步一样的操作
这样,B+树的删除操作也就完成了,是不是看完之后,觉得非常简单!
python 项目运行时,抛出 ModuleNotFoundError: No module named ‘fcntl’
或 抛出 module 'fcntl' has no attribute 'LOCK_UN'
解决方法: 在 python 安装目录的Lib目录下创建 fcntl.py 文件,内容如下:
#fcnt1.py LOCK_UN=8 F_GETFD=1 FD_CLOEXEC=1 F_SETFD=2 def fcntl(fd, op, arg=0): return 0 def ioctl(fd, op, arg=0, mutable_flag=True): if mutable_flag: return 0 else: return "" def flock(fd, op): return def lockf(fd, operation, length=0, start=0, whence=0): return
前端规范大总结 规范目的:为了提高工作效率,便于后台人员添加功能及前端后期优化维护,输出高质量的文档,在网站建设中,使结构更加清晰,代码简明有序,有一个更好的前端架构。 规范基本准则:符合web标准,使用具有语义的标签,使结构、表现、行为分离,兼容性优良。页面性能优化,代码简洁、明了、有序,尽可能的减少服务器的负载,保证最快的解析速度。 一、文件规范 1.1 HTML部分 1.1.1 建包问题 文件均归档至约定的目录中,建包格式如下: 注意:所有的css文件放在css文件夹中,image放在images文件夹中,js放在js文件夹中 1.1.2 HTML头部编写 (1) 编码:所有编码均采用xhtml/html,标签必须闭合,编码统一为UTF-8,在多语言的网站建议添加<html lang="zh-CN">,说明内容是以中文显示和阅读为基础的 (2) 语义化:正确使用标签,充分利用无兼容性问题的html自身标签 (3) 文件头部head内容: • title: 需要添加标题 • 编码: charset=UTF-8 • meta: 可以添加description、keywords内容 1.2 CSS部分 1.2.1 CSS种类及其命名 可以将CSS样式表分为三类:全局样式表、模块通用样式表和独立样式表 • 全局样式表常用命名:public.css • 模块通用样式表命名:模块名_basic.css • 独立样式表:模块名_页面名.css 1.2.2 CSS引入 CSS文件引入可通过外联或者内联方式引入 • 外联方式 • 内联方式 注意:link和style标签都应该放入head中,原则上,不允许在html上直接写样式。避免在CSS中使用@import,嵌套不要超过一层。 二、注释规范 2.1 顶部文档注释(推荐使用) 1 /* 2 * @description: 中文说明 3 * @author: name 4 * @update: name(xxxx-xx-xx xx:xx) 5 */ 2.2 属性注释 1 /*Header*/ 2 /*Nav*/ 3 /*Container*/ 4 .
// 方式一 for($i=1; $i<=4; $i++){ $array[] = $i; } for($i=0; $i<count($array); $i++){ for($j=0; $j<count($array)-$i-1; $j++) { $array2[] = [$array[$i], $array[$i+$j+1]]; } } print_r($array2); // 结果 Array ( [0] => Array ( [0] => 1 [1] => 2 ) [1] => Array ( [0] => 1 [1] => 3 ) [2] => Array ( [0] => 1 [1] => 4 ) [3] => Array ( [0] => 2 [1] => 3 ) [4] => Array ( [0] => 2 [1] => 4 ) [5] => Array ( [0] => 3 [1] => 4 ) ) // 方式二 $arr = ['A', 'B', 'C', 'D']; $new_arr = []; while (count($arr) > 1) { $item = array_shift($arr); foreach ($arr as $value) { $new_arr[] = [$item, $value]; } } var_dump($new_arr); // 方式三 // 数组中任意两个元素之间都要组合一下 $r = []; $arr = array('A','B','C','D'); $num = count($arr); for ($i=0;$i<$num; $i++) { for($j=$num-1; $j>$i; $j--){ $r[] = [$arr[$i], $arr[$j]]; } } print_r($r); // 并非这种切数组 $input_array = array('a', 'b', 'c', 'd', 'e'); var_dump(array_chunk($input_array, 2)); // 结果 array(3) { [0]=> array(2) { [0]=> string(1) "
安装完qt5后显示如下
解决方案
在工具→选项→环境中将Enable high DPI scaling选项取消勾选,然后选择OK退出,重启Qt Creator即可。
参考:UG892 UG835
Vivado集成开发工具为设计者提供了非工程模式下的FPGA设计流程。在Vivado非工程模式下,FPGA开发人员可以更加灵活地对设计过程的每个阶段进行控制,从而进一步提高FPGA的设计效率。
非工程模式下基本命令列表
命令
功能
read_edif
将EDIF或者NGC网表导入当前工程的设计源文件集合中
read_verilog
读入用于非工程模式会话的Verilog(.v)和SystemVerilog(.sv)源文件
read_vhdl
读入用于非工程模式会话的VHDL(.vhd或vhdl)源文件
read_ip
读入用于非工程模式会话的已经存在的IP(.xco或者.xci)工程文件。使用来自.xco IP工程的.ngc网表。对于.xci IP,使用RTL用于编译;或者如果存在网表,则使用网表
read_xdc
读入用于非工程模式会话的.sdc或者.xdc文件
set_param
set_property
用于多个目的。例如,它可以定义设计配置和工具设置等
link_design
如果会话中使用网表文件,则对设计进行编译,用于综合目的
synth_design
启动Vivado综合,包含设计的顶层模块名字和目标器件参数
opt_design
执行高层次设计优化
power_opt_design
执行智能时钟门控,用于降低系统的整体功耗(可选)
place_design
对设计进行布局
phys_opt_design
执行物理逻辑优化,以改善时序和布线能力(可选)
route_design
对设计进行布线
report*
运行多个标准的报告,可以在设计过程的任何一个阶段运行它
write_bitstream
生成一个比特流文件,并且运行DRC
write_checkpoint
read_checkpoint
在设计流程的任何点保存设计。一个设计检査点由网表和约束构成,它们在设计流程的该点进行了优化,以及包含实现的结果
start_gui
stop_gui
调用在存储器中当前设计的Vivado集成开发环境
典型TCL脚本
为了方便读者从整体上了解在Vivado非工程模式下的基本命令的功能,下面将给出用于Vivado设计套件示例的非工程模式TCL脚本,该脚本可以说明使用设计检查点、用于保存设计流程中各个阶段的数据库状态和手工生成各种报告的方法。
通过下面的命令运行该Tcl脚本文件:
vivado -mode tcl –source create_bft_batch.tcl
Following is an example of a Non-Project Mode script, which reads in various source files:
# create_bft_batch.
普通计算器上百分号(%)有什么用?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
普通计算器上百分号(%)有什么用?
计算时方便些。比如计算25*40%,可以按2、5、*、4、0、%、=得到结果10
%的功能要与windows自带计算器中的%功能相同,需要有功能 1、可以按百分比形式显示乘积结果 例:输入一个数,然后点*,在输第二个数,然后按%,比如50*25%最后因该等于12.5 2、可以执行带百分号的计算例:输入一个数,然后选+-*/,然后点选%,最后点=号,比如50+25%(其中25%表示为50的25%)最后因该等于62.5
普通计算器上分号按哪个键
仔细观察就能解决
ms系列:[ALPHA][Pol(](:)
es系列(含PLUS):[ALPHA][x³](:)
其他请说明型号
CASIO计算器上哪一个键是百分号?
你问的是什么型号?CASIO fx-ES系列:SHIFT+(
fx-MS系列:SHIFT+=
fx-TL系列:SHIFT+=(无法单独输入%,按下SHIFT+=就会执行百分数计算)
计算器上的MRC键有什么用?
计算器上的“MRC”表示取回储存值然后进行综合运算。具体操作为:在计算器上输入某一个数字之后,点选M+或M-,就表示把这个数字储存起来了,可以再输入其他的数字,当需要前面的数字的时候,按一下MRC就把前面的数字调出来。
计算器上各个符号的含义:
上电/全清键(ON/AC):按下该键表示上电,或清除所有暂存器中的数值。
清除键(C):在数字输入期间,第一次按下此键将清除除储存器内容外的所有数值。
清除输入键(CE):在数字输入期间按下此键将清除输入暂存器中的值并显示"0"。
平方根√ :显示一个输入正数的平方根。就这样。
M+:把目前显示的值放在储存器中;中断数字输入。
M-:从储存器内容中减去当前显示值;中断数字输入。
MRC:第一次按下此键将呼叫储存器内容,第二次按下时清除储存器内容。
哪里有带百分号的计算器
你可以选择实用和虚拟的
实用的科学计算器,都有百分号,注意是科学计算器
另外,网路上,也有科学计算器,很方便,一搜就有
计算器上的clock键有什么用啊?
可以设定时间,有扩音器的话,应该还能设定闹钟。
1、计算器一般由运算器、控制器、储存器、键盘、显示器、电源和一些可选外围装置及电子配件,通过人工或机器装置组成。低档计算器的运算器、控制器由数字逻辑电路实现简单的序列运算,其随机储存器只有一、二个单元,供累加储存用。
2、高档计算器由微处理器和只读储存器实现各种复杂的运算程式,有较多的随机储存单元以存放输入程式和资料。键盘是计算器的输入部件,一般采用接触式或感测式。为减小计算器的尺寸,一键常常有多种功能。
3、显示器是计算器的输出部件,有发光二极体显示器或液晶显示器等。除显示计算结果外,还常有溢位指示、错误指示等。计算器电源采用交流转换器或电池,电池可用交流转换器或太阳能转换器再充电。
计算器上的+/-键有什么用处?
正负号切换键,比如说你输入-1,按下这个键就变为1
计算器上的CE键有什么用呢?
CE:清除输入键,在数字输入期间,第一次按下此键将清除输入暂存器中的值并显示“0”。(Clear Enter)
计算器上的DE键有什么用呢?
有的计算器,支援16进位制计算,就会有A等几个字母。
分页:123
本文向大家介绍拆卸机箱与安装电源具体步骤,教程介绍地很详细,也很实用,希望大家喜欢!
一、拆卸机箱
在组装计算机之前,先拆卸机箱。下面以一款ATX机箱为例说明如何拆卸机箱。拆卸机箱可以按照以下步骤。
①确定机箱侧板固定螺丝的位置,将固定螺丝拧下。
②转向机箱侧面,将侧板向机箱后方平移后取下,如图8—1所示。图8—2所示为拆卸后的主机箱。
③取出机箱内的零件包。
二、核对零件包
1.固定螺丝
固定螺丝主要用于固定光盘驱动器和板卡等硬件设备,如图8—3所示。
一般机箱所附带的螺丝分为细纹螺丝和粗纹螺丝2种,光盘驱动器、硬盘驱动器和挡板适合用细纹螺丝固定,机箱与电源适合用粗纹螺丝固定。
目前,市面上出现了一些免螺丝设计的机箱,机箱内的大多数配件都不用螺丝固定,例如:光盘驱动器、硬盘驱动器、机箱挡板等,而是用精巧的卡扣将配件固定在机箱中,但即使是免螺丝设计也无法完全避免使用螺丝,只是减少了螺丝使用数量。
2.铜柱
铜柱主要用于固定主板,并具有接地功能,如图8—4所示。
使用时,应使铜柱对准主板与底板上的螺丝孔位,然后将铜柱锁到底板上,用螺丝将主板锁到铜柱上。也有些机箱已经取消了铜柱设计,直接用螺丝将主板固定在机箱上。
3.挡板
如果安装的接口卡不是很多,则机箱后边将剩余几个扩展槽。这时需要挡板将这些扩展槽遮住,以防止灰尘进入机箱,挡板如图8—5所示。
三、安装电源
主机电源一般安装在主机箱的后部上端的预留位置。在将计算机配件安装到机箱时,为了安装方便,一般应当首先安装电源。安装的步骤如下。
①拆开电源包装盒,取出电源。
②将电源安装到机箱内的预留位置。
③用螺丝刀拧紧螺丝,将电源固定在主机机箱内,如图8—6 所示。
目前,从市场上购买来的机箱,很多都已经将电源安装好了,拆卸机箱后可以直接组装计算机了。希望这篇教程对大家有所帮助!
用户账户密码和计算机账户密码并不是一样的。用户账户密码主要用来登陆到系统和网络并拥有访问资源的权利和权限,而计算机账户密码主要用在AD域中安全通道的身份验证。
计算机账户和用户账户一样具有自己的密码,计算机密码则将这个自己的密码加密后记录在注册表里。我们可以使用PowerShell命令来查看计算机账户的属性。
在上面的截图中我们会发现PasswordLastSet、LastLogonDate等属性值;
根据微软官方说法和实际经验,计算机账户的密码如果过期90天,那么我们就可以认为该计算机账户和域的信任关系丢失,可以对这些账户进行清理;但有一种特殊情况,计算机90天未开机。在实际中,如果计算机90天未开机,那么这台计算机也可以认为是没有用的。因此我们可以通过PowerShell脚本将计算机账户密码过期90天的计算机禁用并移动到一个特定的OU,运行一段时间后,在将这些账户删除掉。
根据实际经验,我们清理计算机账户的原则:
AD中可能会存在退域的计算机,账号处于禁用状态,我们可以将这些计算机移动到特定的OU中,也可以直接删除掉。
将计算机账户密码过期90天的计算机,禁用并移动到一个特定的OU;实际执行后的截图如下:
根据LastLogonDate属性,将计算机账户多长时间(如30天)未登陆的计算机,禁用并移动到一个特定的OU中;根据企业的特点,如果员工长期出差,可能会被意外清理,所以需要认为管控,在收到用户的反馈后,将用户的计算机账户启用并移动到正常的OU;
根据经验我们建议间隔一段时间(比如每一个月执行1次,执行3个月)去执行一次这样的清理的工作,因为计算机账户密码过期90天,但是如果计算机已经无效,但是账户密码过期可能为达到90天;
完成清理之后我们可以导出所有的计算机账户,包含创建时间、最后登陆时间、上次密码修改等等属性为Excel文件,进行分类查询等操作。
此文出自东方瑞通陈未杰老师,转载需注明出处。
【我的UGUI笔记汇总】
一、可视化组件 这一类组件是用来给用户呈现内容的,如图片,文字等
1.Text组件 2.Image组件 3.RawImage组件 4.TextMeshPro组件 二、可交互组件 这一类组件是用来提供交互功能的,如点击、输入文字等
1.Button组件 2.Toggle组件 3.Slider组件 4.ScrollBar组件 5.ScrollView和ScrollRect组件 6.DorpDown组件 7.InputField组件 三、功能性组件 1.Rect Transform组件 2.Mask组件 3.Toggle Group组件 四、管理类组件 1.Canvas Scaler组件 2.Canvas 3.Graphic Raycaster组件 4.EventSystem和Input Module 五、其它 1.可交互组件的共有属性 2.为UI事件绑定函数 3.事件接口
大学有哪些与芯片制造有关?有哪些比较适合做芯片制造?中兴事件波澜定,芯片行业上热搜,国外行业走下坡,莫凭热血入神坑。前一段时间,中兴事件让我们明白,我们距离强国还有多远,也让我们的芯片行业,走上了被关注的前台。大学里,有哪些本科与芯片相关?芯片到底是什么?芯片行业的发展状况怎样?可不可以大胆投身进来?今天,小编就来答疑解惑。
跟芯片设计较相关的,有三个本科:电子科学与技术、电子信息科学与技术、微电子科学与工程。较对口的就是微电子科学与工程。只看名字就有点迷糊对吧?没关系,我来帮你。做芯片的设计,没有研究生学历,那是相当相当难的,所以你可以在研究生阶段,选择“集成电路设计”或者“微电子学与固体电子学”,是不是一下子就明白怎么回事儿了?
芯片是什么啊?芯片就是集成电路,Integrated Circuit,简称IC(不是IC卡,别误会)。就是因为芯片提及很小,上面的电路更小,所以微电子这三个字,跟芯片设计联系较紧密,是不是更容易理解了?
如果你想走芯片制造的方向,那所选的又有不同,除了上面所列的三个,你还可以选择计算机科学与技术(制造可离不开计算机)、机械设计制造及其自动化(总要机器来工作的嘛)、光电信息科学与工程、材料科学与工程等等,他们与芯片制造的关联也很密切。
小编再略做强调:较较适合做芯片的,只有一个:微电子科学与工程,如果本科可以学到这个,未来从事芯片行业,就可以少花很多力气(有些大学名称是电子科学与技术,但是学得是微电子方向,也完全可以)。
微电子科学与工程,主要就两个方向,一个是集成电路设计,一个是半导体工艺。这个,国内比较好的大学屈指可数,就清北交复,外加两电一邮(清华大学、北京大学、上海交通大学、复旦大学、北京邮电大学、电子科技大学、西安电子科技大学)。当然如果你本科能跑到MIT去读,那就再好不过。
对于未来从事芯片行业,如果你还不笃定,那要慎重选择微电子。为什么呢?小编说:微电子是电子信息类当中,一个细分领域,他所学很精,但是范围比较窄,后悔的成本比较高。如果不确定自己的兴趣,那还是选择电子科学与技术吧。
选择电子科学与技术,所学范围广一些,你可以在研究生阶段去研究微电子,也可以去搞嵌入式,去搞通信,甚至转去计算机方向,相对来说,后悔的成本比较低。
Color Space Physical Basis of Color(颜色的物理基础) 说道颜色,首先得从光说起,因为光具有真实的物理属性;
光是由不同波长的光照成分组成的,人眼能看到的光的范围称之为可见光谱;Spectral Power Distribution (SPD)为谱功率密度,表示一束光在不同波长下的功率分布;常用来测量真实的光;SPD具有线性叠加性; 说完光,再来说颜色,颜色是光在人眼感知下的结果;并不是光的通用属性,与人眼具有强关联性;
Biological Basis of Color(颜色的生物基础) 人眼球中分布着Rods cell(杆状细胞,用来识别亮度),Cone cells(锥状细胞,用来识别颜色);
锥状细胞分为三种类型:S、M以及L,三种细胞对于不同波长的光,具有不同的反映峰值,各拥有各的spectral response curve;
Tristimulus Theory of Color(颜色的三色理论) 前面已知不同锥状细胞具有不同的反映曲线,人的大脑处理的实际上是三种锥状细胞处理后输出的信号;即输入SPD与三种Response Function积分后得到的三个分量(S,M,L);
Luminosity Function(亮度函数) 锥状细胞感受颜色,杆状细胞感受强度;同样不同的波长,杆状细胞感受出来的强度是不同的,感官亮度可以表示为Luminosity Function亮度随波长变化的函数;
Metamerism(同色异谱) 由于是积分产生的结果,那么不同的输入积分后就有可能产生同样的结果;即人眼看到的同样的颜色,可能是由不同的SPD产生;
Color Reproduction / Matching(颜色匹配) 同色异谱机制使得颜色匹配得以进行;Color Matching首先指定三盏光(每盏拥有固定SPD),调整三盏光的强度,使得混合后的颜色能匹配制定测试光,三盏光得到的强度由RGB组成,即为测试光光强;
有时Color Matching的测试光需要进行补光,此时获取的RGB值可为负值;
CIE RGB Color Matching Experiment(CIE颜色匹配实验) CIE颜色匹配实验是CIE所推出的颜色匹配标准;
CIE使用red=700nm, green=546.1nm, blue=435.8nm三种波长的纯色光来进行匹配;对可见波长的纯色光进行匹配后,得到了三条颜色匹配曲线,称之为Color Matching Curves或Color Matching Function;有了颜色匹配曲线后,对于任意的SPD,只需将其与三条曲线进行积分,即可得到CIE rgb值,该值所在的空间,称之为CIE RGB空间; Color Space(颜色空间) LMS Space 此处LMS即为前面所说的眼睛内部的三种锥形细胞,以三种细胞的response curve作为积分曲线,积分后得到的颜色值位于LMS 空间;Unity中的白平衡既是在此空间下进行计算;
CIE RGB Space 前面提到将SPD与CIE color matching curves进行积分后即可得到CIE RGB空间下的值;
您可以将lodash.isequal作为单个模块安装,而无需安装整个lodash包,如下所示:
npm install --save lodash.isequal
使用ECMAScript 5和CommonJS模块时,您可以像这样导入它:
var isEqual = require('lodash.isequal');
使用ES6模块,这将是:
import isEqual from 'lodash.isequal';
导入后,您可以在代码中使用isEqual函数.请注意,如果以这种方式导入它,它不是名为_的对象的一部分,所以你
不要用_.isEqual引用它,而是直接用isEqual引用它.
注意:此问题的其他答案表明您也可以使用短划线而不是点,如下所示:
import isEqual from 'lodash/isequal';
这也有效,但有两个小缺点:
>你必须安装整个lodash包(npm install –save lodash),而不仅仅是小的单独的lodash.isequal包;存储空间很便宜且CPU速度很快,所以你可能不关心这个>使用像webpack这样的工具时生成的捆绑包会稍微大些;我发现使用isEqual的最小代码示例的包大小平均大28%(尝试使用webpack 2和webpack 3,有或没有Babel,有或没有Uglify)
计算器上每个键都有一个符号,那么“计算器上各个符号的含义是什么?”,又有着什么功能呢?所以国美小编总结了计算器各个符号含义的相关信息,现在和大家一起分享。
1. 上电/全清键(ON/AC):按下该键表示上电,或清除所有寄存器中的数值.
2. 清除键(C):在数字输入期间,第一次按下此键将清除除存储器内容外的所有数值.
3. 清除输入键(CE):在数字输入期间按下此键将清除输入寄存器中的值并显示"0".
4. 平方根√ :显示一个输入正数的平方根.
5. M+:把目前显示的值放在存储器中;中断数字输入.
6. M-:从存储器内容中减去当前显示值;中断数字输入.
7. MRC:第一次按下此键将调用存储器内容,第二次按下时清除存储器内容.
8. MR:调用存储器内容.
9. MC:清除存储器内容.
10. GT:按下GT键,传送GT存储寄存器内容到显示寄存器;按AC或C键消除GT显示标志.
11. MU(Mark-up and Mark-down键):按下该键完成利率和税率计算.
12. MRC:第一次按下此键将调用存储器内容,第二次按下时清除存储器内容.
13. MR:调用存储器内容.
14. MC:清除存储器内容.
15. GT:按下GT键,传送GT存储寄存器内容到显示寄存器;按AC或C键消除GT显示标志.
16. MU(Mark-up and Mark-down键):按下该键完成利率和税率计算.
(答案编辑:冰冰)
1.简介 ArrayList是实现List接口的,底层采用数组实现。
ArrayList 实现了Cloneable接口,即覆盖了函数clone(),能被克隆。
ArrayList 实现java.io.Serializable接口,这意味着ArrayList支持序列化,能通过序列化去传输。
方法:
2. 方法解释 (1)contains(Object o) 说明:判断该ArrayList中是否包含指定的内容。该方法内部调用indexOf(),如果indexOf()可以查找到该内容返回true,否则返回false。
注意:记得也要重写自定义类型的equals()方法。
private static void Test_contains(){ Persion p1 = new Persion("张三"); Persion p4 = new Persion("张12三"); Persion p2 = new Persion("张三3"); Persion p3 = new Persion("张三3"); ArrayList<Persion> list = new ArrayList<>(); list.add(p1); list.add(p4); list.add(p2); System.out.println(list.contains(new Persion("张12三"))); } (2)lastIndexOf(Object o) 说明:查找给定元素最后一次的位置。也就是说 倒序查找该ArrayList中第一次出现给定元素的位置。存在返回具体的位置,不存在返回-1。
实现:内容采用倒序遍历Object[]方式进行查找。
注意:与indexOf(Object o)方法描述的注意点一样,都需要重写自定义类型的equals()方法。
private static void Test_laseIndexOf(){ Persion p1 = new Persion("张三"); Persion p2 = new Persion("张12三"); Persion p3 = new Persion("
定义和调用求最大公约数和最小公倍数的函数
任务描述
相关知识
辗转相除法
相减法
编程要求
测试说明
任务描述
本关任务:编写程序,自定义两个函数分别求两个正整数的最大公约数和最小公倍数,用主函数调用这两个函数并输出结果。
相关知识
求最小公倍数算法:
最小公倍数 = 两整数的乘积 ÷ 最大公约数
根据求最小公倍数的算法,可以看出如果已知最大公约数,就能很容易求出最小公倍数。而通过辗转相除法和相减法,可以求得最大公约数,下面分别进行介绍。
辗转相除法
已知有两整数a和b,利用辗转相除法求它们的最大公约数,具体步骤如下:
① a%b得余数t;
② 若t=0,则b即为两数的最大公约数;
③ 若t≠0,则a=b,b=t,再回去执行①。
举例说明:
已知a = 21 b = 28,辗转相除法步骤如下:
① 执行t = a%b = 21%28 = 21, 则t = 21 ,此时t不为0,进入循环;
② 先执行a = 28 ,b = 21,再执行t = a%b = 28%21 = 7 ,则t = 7,此时t不为 0;
③ 先执行 a = 21 , b = 7,再执行t = a%b = 21%7 = 0 ,则t = 0 ,循环结束,b=7为最大公约数。
详细流程: 1. 官网下载安装包:2.安装3.调用 : 1. 官网下载安装包: http://www.vmtk.org/download/
我这边下载的是python3.6的
2.安装 点击安装包,选择合适路径,安装在vmtk文件夹里
3.调用 : 打开终端,输入:
vmtk&
在PypePad界面输入:
vmtkmarchingcubes --help
然后点击最上方的run即可(如下图)
最终结果如下:
OK!
在局域网中,尤其是办公室或学校机房,可以设置共享文件和共享打印机,方便电脑间数据快速传输,也方便其他人使用打印机功能。不过有时候共享也是会存在问题,比如主机已经设置了共享打印机,但是其他电脑无法连接,或者设置共享打印机时直接提示无法设置共享,出现这些问题,往往是系统设置不正确引起的 ,这边系统城小编跟大家整理无法访问共享打印机的一些解决方法,如果大家需要win10局域网共享打印机连接方法的话可以移步至:win10局域网共享打印机怎么连接
一、所有客户端电脑都无法访问主机打印机
1、右键【我的电脑】―【管理】―【本地用户和组】―【用户】,右键【guest】属性―取消【账户已停用】;
2、开始--控制面板―【管理工具】―【本地安全策略】―【用户权利指派】―【拒绝从网络访问这台计算机】右键【属性】,里面不要有【guest】和【everyone】。也不要有某一个客户端的计算机名,如果有,需要删除;
3、开始--控制面板―【管理工具】―【本地安全策略】―【用户权利指派】―【从网络访问这台计算机】右键【属性】,里面要有【everyone】。如果没有,需要添加;
4、控制面板――【管理工具】――【本地安全策略】――【安全选项】――【网络访问】――【本地用户的共享和安全的访问模式】(network access―sharing and security model for local accounts),选择成Classic经典模式。
5、桌面上网上邻居右键【属性】――【更改防火墙设置】――【例外】――【文件和打印机共享】选中。
二、主机文件夹可以共享,但是无法共享打印机
1、开始--设备和打印机,右键打印机图标【属性】-【安全】-指向【everyone】,且把权限放开;
2、文件夹【属性】-【安全】-指向【everyone】,且把权限放开。
三、只有一台客户端电脑不能访问主机
1、右键【我的电脑】-【管理】-【本地用户和组】-【用户】,右键【用户】―【新用户】将无法访问的那台客户端的用户名这些信息,以及密码都输入,点【创建】;
2、将无法访问的那台客户端的用户名及密码等信息全部输入,点【创建】;
无法访问主机共享打印机的常见解决方案就是这样子,大家可以尝试上面的方法来解决遇到的问题。
依次找出文中所有的当前选中的单词: Ctrl + D
一次性找出文所有的当前选中的单词: Ctrl + Shift + L
重命名变量: 选中变量名后按F2
转到变量名的定义处: 选中变量名后按F12
同时选择多个单词: Alt + Click
同时选择上一行 (Ctrl + Alt + Up) 或者下一行 (Ctrl + Alt + Down) 的相同位置:
拓展性 (Shift + Alt + Right) 或者收缩性 (Shift + Alt + Left) 的选中文本
矩形框的鼠标选择: 同时按住Shit和Alt并使用鼠标进行拖拽选择
切换编程语言语法: Ctrl + K M
在上方复制一行Shift + Alt + Up,在下方复制一行Shift + Alt + Down
keras-contrib crf报错 Tensors in list passed to ‘values’ of ‘ConcatV2’ Op have types [bool, float32] that don’t all match.
方法一:(未尝试) 原因是因为keras版本问题,低于2.2.4版本不会报错,故可将版本降为2.2.4版本。
另外,我的tensorflow版本是1.13.1
方法二:(亲试可用) 也可以更改keras-contrib源码
根据报错信息找到crf文件,在代码前面加上
修改文件位于D:\Anaconda\envs\pyt1k2\Lib\site-packages\keras_contrib\layers\crf.py
mask2 = K.cast(K.concatenate([mask, K.zeros_like(mask[:, :1])], axis=1), K.floatx()) 改为
import tensorflow as tf mask2 = K.cast(K.concatenate([tf.to_float(mask), K.zeros_like(mask[:, :1])], axis=1), K.floatx()) 方法三: 参考链接
0 用root登录linux 1 获取centos的网卡名 ip addr 标红处就是网卡名了
2 找到网卡的配置文件并编辑 vi /etc/sysconfig/network-scripts/ifcfg-ens33 按insert键,进入编辑
修改标红处
按esc,退出编辑
按shift+: 输入wq保存并退出
3 重启网卡 systemctl restart network 4 每次连接我的手机热点,centos的ip地址都会改变。。。,查看方式 ip addr 标红处就是你的ip地址了
原标题:忘记了电脑系统Administrator账户的密码?如何恢复?
前面和大家一起测试了下在忘记了Administrato账户密码的情况下,使用新建立的ABC账户无法重新创建Administrator账户的密码!由于这里的ABC账户不具备系统超级管理员的权限所以无法更改或者创建新的Administrator账户的密码!
那么有没有什么方法来恢复Administrator账户的密码呢?答案是肯定有的!
方法一:
首先要有一个PE盘也就是U盘启动盘,准备好U盘启动盘下面就来说说要如果操作了:
1、首先重启电脑,在进入开机界面的时候快速的按F12键或者Del键进入电脑的BIOS设置界面(当然不同的电脑进入BIOS设置界面的快捷键不同),然后找到USB Configuration选项点击(就是从U盘启动选项):
2、这时就会进入到下图的选择界面,这里选择第一个选项点击启动:
3、进入到PE盘的操作界面,然后在操作界面找到密码修改双击:
4、双击修改密码后进入到操作界面,点击右侧的打开按钮就能看到电脑系统提供的每个账户:
5、选中Administrator账户,点击下面的更改密码选项出现操作界面:
6、这里我们可以选择什么也不输入,直接确定那么Administrator账户就是没有密码的!或者输入新密码点击确定:
7、输入好新密码,确定后再点击保存更改然后退出,到这里我们就修改好了Administrator账户的密码:
重启电脑后,回到登录界面选择Administrator账户输入我们更改的新密码就可以登录电脑了!
方法二:
如果没有PE盘也就是U盘启动盘!这……就真的没啥好办法了。搬起你的主机去找个电脑维修部帮你吧!或者打电话找人上门维修……
其实说了这么多,最简单的方法就是大家拿支笔,拿个本子把我们经常用到的密码都记录下来,写清楚这样就不会出现忘记密码的情况了!当然你自己的笔记本一定要放好了!不然密码泄露就不好了!
最后附上不同型号的电脑进入BIOS界面的热键图:
笔记本进入BIOS界面和台式机差不多,一般都是由主板来决定的!
希望上面的图能帮助到大家!
今天的分享就到这里!谢谢大家耐心的看完!返回搜狐,查看更多
责任编辑:
<el-table-column align="center" prop="efficiency" sortable="custom" label="效率值" :render-header="renderHeader" show-overflow-tooltip min-width="130" /> renderHeader(h, { column, $index }) { return [ column.label, h( 'el-tooltip', { props: { content: (function() { return '效率值 = (周期内完成工单难度系数之和)/周期' // const label = column.label // switch ('1') { // case '1': // return '效率值 = (周期内完成工单难度系数之和)/周期' // break // case '提交数': // return '网站页面上访客在应用上完成提交的数量' // break // case '成交数': // return '网站页面上最终成功在应用上完成提交的数量' // break // } })(), placement: 'top' } }, [ h('span', { class: { 'el-icon-question': true } }) ] ) ] // return h("
【www.wzktys.com--生活文摘】
计算器也能够弹奏出美妙动听的音乐,那么今天给大家分享一下关于计算器弹奏简谱音乐有哪些,天涯招考网今天为大家精心准备了计算器弹歌曲谱子,希望对大家有所帮助!
计算器弹歌曲谱子
粉刷匠 5353531 24325 5353531 24321 2244325 24325 5353531 24321
小星星 1155665 4433221 5544332 5544332 1155665 4433221
用计算器弹《夜空中最亮的星》
教程:5+9888865x÷÷ 89+xx89 888865x÷÷ 889+xxx+9 +9888865x÷÷ 889+xxx+9 9+88886÷÷ 89+xx89
计算器弹歌曲谱子
1、体面
89+89+8×× ×+98 8678 6++ +765 8678×÷× ×+8 9+6 ++++98+ 89+89+ 8×× ×+98 8678 5++9+×8 8678 5÷×7 ++86 +678
2、成都
6888 68996 54 4566 68 8689 996 54 1564 124 4 55 86 689 8 98 56 45 4542 565 45555698
dispose()失效的原因可能是你代码的顺序问题,试着把setVisible(true)写在最后面
this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE); this.setModal(true); this.setVisible(true);
本次分享一个之前困扰很久的,跨页面之间的通信方式。
以前跨页面通信,就拿我们之前vue项目中多页面为例,每个页面都是一个独立的vue实例,通过main.js初始化,各个页面之间的数据不互通,而通信方式最常见的方式是往缓存中存储值,其他需要得到这个值的页面通过定时器去实时查询缓存中该值的变化,然后进行通信。
但是定时器终究不是一个好的实现方式,而定时器的时间长短设置多少都很有考究,时间太短太耗性能,时间太长的话,又会存在一段时间拿不到最新值的情况。
现在有一个很方便的方式,那就是 监听,其他页面正常像以前一样往 storage 存储值,如:localStorage.setItem(‘calling’, ‘55894’),然后需要获取该值的页面可以通过监听storage,就直接拿到变化后的值,示例如下:
// localhost:8080/pageOne 页面 localStorage.setItem('calling', '55894') // localhost:8080/pageTwo 页面 window.addEventListener('storage', event => { if(event.key === 'calling') { services.call(event.newValue) } }) 部分属性介绍如下:
event.key:属性值为在 sessionStorage 或 localStorage 中被修改/新添加的数据键值;event.oldValue:属性值为在 sessionStorage 或 localStorage 中被修改前的值;event.newValue:属性值为在 sessionStorage 或 localStorage 中被修改后的值;event.url:属性值为修改 sessionStorage 或 localStorage 中值的页面的URL地址,即该值在哪个页面被写入/被修改的; tips:只能监听 sessionStorage 或 localStorage 中值的变化,不能监听cookie中值的变化。
其余属性截图如下:
好了,以上就是跨页面之间通信的一种方式。
期待能够对你有所帮助~
如有问题,请指出,接受批评。
目录
一、什么是统计信息
二、统计信息如何生成
三、如何更新和删除统计信息
3.1、manager客户端
3.2、系统函数
3.3、系统包
3.4、SQL 四、动态更新统计信息
4.1、自动收集统计信息
4.2、manager客户端代理方式
五、统计信息的使用
5.1、数据库升级完需要更新统计信息
5.2、dts迁移工具迁移数据后需要更新统计信息
5.3、新建表或者新建表索引后需要更新统计信息
5.4、批量的DML操作后明显影响该表的执行效率
六、实例说明
6.1、没有统计信息
6.2、统计信息采样率10%
6.3、统计信息采样率100%
6.4、创建二级索引并更新统计信息
7、总结
一、什么是统计信息 对象统计信息描述数据是如何在数据库中存储的。统计信息是优化器的代价计算的依据,可以帮助优化器较精确地估算成本,对执行计划的选择起着至关重要的作用。 达梦数据库的统计信息分三种类型:表统计信息、列统计信息、索引统计信息。通过直方图来表示。
二、统计信息如何生成 统计信息生成过程分以下三个步骤:
1. 确定采样的数据:根据数据对象,确定需要分析哪些数据。
1) 表:计算表的行数、所占的页数目、平均记录长度
2) 列:统计列数据的分布情况
3) 索引:统计索引列的数据分布情况
2. 确定采样率
根据数据对象的大小,通过内部算法,确定数据的采样率。采样率与数据量成反比。
3. 生成直方图
有两种类型的直方图:频率直方图和等高直方图。根据算法分析表的数据分布特征,确定直方图的类型。频率直方图的每个桶(保存统计信息的对象)的高度不同,等高直方图每个桶的高度相同。例如,对列生成统计信息,当列值分布比较均匀时,会采用等高直方图,否则,采用频率直方图。在执行查询时,如果数据对象存在统计信息,代价算法可以根据统计信息中的数据,比较精确地计算出操作所需花费的成本,以此来确定连接方式、对象访问路径、连接顺序,选择最优的执行计划。用户也可以通过修改 OPTIMIZER_DYNAMIC_SAMPLING 参数值在缺乏统计信息时进行动态统计信息收集。
三、如何更新和删除统计信息 3.1、manager客户端 1、更新库的统计信息
2、更新和清理表的统计信息
3、更新和清理列的统计信息
4、更新和清理索引的统计信息
3.2、系统函数 通过查询系统表可查看有哪些系统函数
SQL> SELECT ID,NAME FROM V$IFUN WHERE NAME LIKE 'SP%STAT%INIT' ORDER BY NAME; 行号 ID NAME ---------- ----------- ---------------------- 1 708 SP_COL_CTL_STAT_INIT 2 394 SP_COL_STAT_DEINIT 3 387 SP_COL_STAT_INIT 4 384 SP_DB_STAT_DEINIT 5 383 SP_DB_STAT_INIT 6 709 SP_INDEX_CTL_STAT_INIT 7 392 SP_INDEX_STAT_DEINIT 8 381 SP_INDEX_STAT_INIT 9 1727 SP_INDEX_STAT_INIT 10 391 SP_SQL_STAT_INIT 11 1726 SP_SQL_STAT_INIT 行号 ID NAME ---------- ----------- ---------------------- 12 398 SP_TAB_COL_STAT_DEINIT 13 389 SP_TAB_COL_STAT_INIT 14 707 SP_TAB_CTL_STAT_INIT 15 386 SP_TAB_INDEX_STAT_INIT 16 2102 SP_TAB_MSTAT_DEINIT 17 399 SP_TAB_STAT_DEINIT 18 390 SP_TAB_STAT_INIT 以下是对重要的更新和清理统计信息系统函数的使用说明
记得大学学单片机的时候,也很想知道自己到底学的怎样了,到了什么水平,到处问人单片机开发怎么才算入门了,最后老师跟我说:能做一个万年历出来就算入门了
于是用单片机控制显示器做一个万年历就成了我的目标,通过按键进行日期设置与时间调整,能区分闰年闰月,设置后的时间需要断电保存等。后面终于做出来了,并且显示方面我用了两种实现方式(数码管与LCD1602),当时欣喜若狂,自己心里面终于有底了,总算是入门了。
这个万年历在今天看来,是挺简单的,不过在当时也确实是一个比较全面的练手项目,到现在为止我仍然认为这是单片机的一个入门标准,因为它包括了输入设备(按键)、输出设备(数码管/LCD)、外设(RTC)等,其中需要对月份天数与闰年进行处理,对编程逻辑与算法有一定的考量,是一个小型系统了
后面往linux驱动开发方面发展,看了linux方面的一些视频与书籍,但是一直不得要领,学了后面忘了前面,兜兜转转也不知道自己到底学了些啥,反正是只见树叶不见森林,也开始问linux驱动开发怎样才算入门,也同样想像当年那样有一个明确的衡量标准,但是我搜遍了整个网络,身边的大佬也问了个遍,答案五花八门、莫衷一是,今天虽然我仍然是linux驱动开发这条道路上的一个新手,但是我已经在森林中找到了着力点,我觉得自己可以定义一个像当年单片机一样linux驱动开发的入门标准。
linux下驱动90%以上的都是字符设备驱动,所以我今天在这里提的标准也只是针对字符设备驱动,这个入门标准就是:在linux下用一个按键控制一个LED灯亮灭,同时为上层应用提供接口,在adb下能通过echo与cat对led进行亮灭控制与状态读取。
就这么简单,但开发涉及到的内容也是不少的,需要熟悉设备树的修改、字符设备那一套(设备号申请、注册、创建类、创建设备等)、platform设备驱动框架、pinctrl子系统、input子系统、中断的上半部/下半部、sysfs文件系统等。
虽然内容比较多,但是只要理解了linux下的那些框架,实现起来还是挺简单的,因为大部分工作linux已经给你做了,你需要做的就是理解它的框架,然后在它的框架上进行开发,实际代码不过几十行,实现部分可以参考这篇博文:
https://blog.csdn.net/maodewen11/article/details/116305322
最后说一下学linux驱动需要些什么条件,因为我听到不少朋友问过这个,以及自己在学的过程中一头雾水,有可能就是某些条件还不具备
1.C语言要扎实,像指针、结构体要运用自如
2.要有面向对象思想,linux内核以及驱动虽然都是C语言(少量汇编)写的,但是很多实现方式都是面向对象的
3.要有框架思维,linux是分层的,驱动与设备是分离的,里面的各种子系统都有自己的框架
4.需了解linux下的基本操作指令以及makefile或building system等
实际中linux驱动开发确实不容易,需要掌握的知识特别多,尤其像TP 、sound、 camera等这些驱动每个框架都相当复杂,像一些大厂每一块都是单独作为一个岗位,linux驱动开发不仅需要懂驱动,而且也要懂应用,写了驱动你要测试,然后系统关机充电的时候如果需要做点什么,也得需要你底层的应用来实现,像多线程,进程间通信、信号量、互斥锁的使用等,坑很大…
但是万丈高楼平地起,再牛逼的技术也抵不住SB似的坚持,加油!
注:本文图片均来源于网络,如有侵权,请联系作者删除!
0. change buffer Change buffer的主要目的是将对二级索引的数据操作缓存下来,以此减少二级索引的随机IO,并达到操作合并的效果
https://blog.csdn.net/qq_36652619/article/details/89460786
The change buffer is a special data structure that caches changes to secondary index pages when those pages are not in the buffer pool. The buffered changes, which may result from INSERT, UPDATE, or DELETE operations (DML), are merged later when the pages are loaded into the buffer pool by other read operations.
当由于insert update delete等 dml语句导致修改数据时会引起 二级索引变更, 如果这些二级索引页面没在buffer pool中。写入会先写到 changebuffer 中。 当 后续的查询需要二级索引页面 而导致二级索引页面从磁盘缓存到buffer pool 中的时候,会合并chagebuffer 中的内容。
Ⅰ 计算器怎么算log,如何使用科学计算器中的对数log
科学计算机计算对数log的方法:
情况一:计算底为10的log(10)即lg:
一般的计算器都默认版log的底数为10,因此计算这类对数时,直接点击计算机的“log”键,再打上数字即可。
例如,求“ln(10)”可在科学计算器中按下:
“ln”,“10”,“=”即可。
情况三:计算以任意数为底数的权log,即logx(y)
例如求“log3(9)”,
由对数换地公式可知log3(9)=lg9/lg3,
故此,求“log3(9)”可在科学计算器中输入:
“log”,“9”,“÷”,“log”,“3”,“=“即可。
Ⅱ 这种科学计算器log和分数怎么按
输入某个数N,再按Log键,就得出以10为底N的对数;按Ln键,得到以e为底N的对数。
回如果要求任意数为底的答对数,可以用换底公式:Log以a为底N的对数=LogN/Loga=LnN/Lna。根据计算器的不同有几种按法:
一、CASIO fx-82ES等自然书写显示的计算器,有 log口口 键(口 代表方框),然后在第一个框输入6,第二个框输入36。
二、无自然显示计算器,一般只有log键,就直接输入log(6,36)。
三、对于无法指定对数的底数的计算器(默认底数为10),只能使用公式,log(a,b)=log(b)/log(a),即输入:log 36 除以 log 6,log 36、log 6可能要加括号。可按此对照
Ⅲ 怎么用计算器算以2为底的对数
假设是计算以2为底7的对数,log(2)(7)=2........
计算方法如下:
用换底公式把log(2)(7)=lg7÷lg2=2........
1、用科学计算器数字键输入:7,如下图:
(3)科学计算器对数扩展阅读:
在数学中,对数是对求幂的逆运算,正如除法是乘法的倒数,反之亦然。 这意味着一个数字的对数是必须产生另一个固定数字(基数)的指数。
在简单的情况下,乘数中的对数计数因子。更一般来说,乘幂允许将任何正实数提高到任何实际功率,总是产生正的结果,因此可以对于b不等于1的任何两个正实数b和x计算对数。
科学型计算器是电子计算器的一种,可进行乘方、开方、指数、对数、三角函数、统计等方面的运算,又称函数计算器。科学型带有所有普通的函数,所有的函数都分布在键盘上以致于你可以不用通过菜单列表来使用它们。
科学计算器支持显示24位数字,支持运算优先选择模式、进制转换功能、标准数学函数、百分比计算、方根计算、对数、次方、记忆等等功能。
Ⅳ 如何使用计算器计算对数
示例(使用Windows自带的计算器),这理假设要计算的对数是logaN,a=32,N=2。版
1、打开计算器(快捷键权WIN+R,输入calc,然后回车)
则有e(2k+1)πi+1=0,所以ln(-1)的具有周期性的多个值,ln(-1)=(2k+1)πi。这样,任意一
个负数的自然对数都具有周期性的多个值。例如:ln(-5)=(2k+1)πi+ln 5。
Ⅳ 科学计算器怎样按对数键
呵呵什么计算器都可以算的。
换底公式:logab(a是底数b是真数)=lgb/lga=lnb/lna,任何计算器上都有内log和ln键的,分别代表以10为底容的对数和以e为底的对数。可能更高级的计算器能直接算出来吧,反正我用换底公式算到现在:)
Ⅵ 如何使用科学计算器中的对数
呵呵什么计算器都可以算的。
换底公式:logab(a是底数b是真数)=lgb/lga=lnb/lna,任何计算器上都有log和专ln键的,分别代表以10为底的对属数和以e为底的对数。可能更高级的计算器能直接算出来吧,反正我用换底公式算到现在:)
Ⅶ 怎样使用科学计算器计算对数
计算机上的log都是默认以10为底的对数,因此log100 = 2,log1000 = 3。
如果需要计算以非10为底的对数,要使用换底公式,比如想计算以7为底12的对数,在计算器上的操作应该是 (log12) / (log7)。
从对数的发明过程可以看到,社会生产、科学技术的需要是数学发展的主要动力。建立对数与指数之间的联系的过程表明,使用较好的符号体系对于数学的发展是至关重要的。
实际上,好的数学符号能够大大地节省人的思维负担。数学家们对数学符号体系的发展与完善作出了长期而艰苦的努力。
1 顺序表的定义
静态分配:
#define MaxSize 100线性表最大长度 //数组静态分配 typedef struct { ElemType data[MaxSize];//ElemType为数量类型,可根据实际替换成想要的数据类型,如int int length;//当前长度 }SqList; 动态分配:
//数组动态分配 #define MaxSize 100线性表最大长度 #define InitSize 100//线性表初始分配量 typedef struct { ElemType *data int MaxSize,length;//最大容量和当前个数 }SqList; 如果是复杂类型,可以先将数据类型定义好:
//线性表P=((p1,e1),(p2,e2),,,(pm,em)) typedef struct//多项式非零项 { float p;//系数 int e;//指数 }Polynomail; //数组动态分配 typedef struct { Polynomail* elem;//存储空间基地址 int length;//多项式中当前项个数 }SqList;//多项式中的 顺序存储结构类型 SqList SqList L; L.data = new Polynomail[InitSize];//记得要手动释放 maxsize为最大长度,length记录当前长度
补充一下简单操作:
初始化:
Status Init_Sq(SqList& L)//Status为函数返回值类型 { L.data = new ElemType[MaxSize];//分配空间 if (!
<?php // PHP洗牌算法 每次从数组中剩余元素随机取数按顺序拼成新的数组 $card_num = 54; //牌数 function wash_card($card_num){ $cards = $tmp = array(); for($i = 0;$i < $card_num;$i++){ $tmp[$i] = $i; } for($i = 0;$i < $card_num;$i++){ $index = rand(0,$card_num-$i-1); $cards[$i] = $tmp[$index]; unset($tmp[$index]); $tmp = array_values($tmp); } return $cards; } // 测试: print_r(wash_card($card_num));
原标题:忘记电脑管理员Administrator密码?使用新建账户能否恢复密码?
之前和大家分享了忘记新建的账户登录密码要如何恢复账户密码或者删除新建账户的密码!其实操作起来还是很简单的是不是?由于被忘记的是我们建立的新账户密码而不是系统的管理员账户Administrator密码!所以恢复密码还是很简单的!
那么如果是把管理员Administrator的账户密码忘记了要怎么办呢?是不是还可以使用电脑开机后忘记了登录账户的密码?有什么解决方法?里的方法来解决呢?
这里来实际操作下看看是否可以:
一、首先使用新建账户ABC登录电脑(这里还是已ABC账户为例),通过开始→控制面板→用户账户→管理其他账户进入到选择希望更改的账户界面找到Administrator账户点击进入试试修改密码:
当我们点击创建密码,重新输入新密码并点击创建密码的时候会出现下面的情况:
提示Windows 不能更改密码!!!为什么呢?因为我们登录的账户ABC不具备管理员的权限所以是不能更改Administrator账户的密码的!
二、如果在开机的时候按F8键,进入到电脑的高级启动选项然后找到带命令提示符的安全模式下进行更改Administrator账户密码呢?
由于我们忘记了Administrator账户的密码,所以进入到带命令提示符的安全模式下只能使用ABC账户登录:
大家仔细看能发现一个问题,就是在使用ABC账户登录的时候无法进入管理员:cmd.exe界面,而是进入到普通的cmd.exe界面。这个时候在C:\Windows\system32>后面输入net uesr administrator 88888888按Enter键会出现这样的结果:
拒绝访问,看来这种方法也是无效的!
通过上面的操作可以发现,由于新建的ABC账户不具备管理员权限是无法恢复管理员Administrator账户的密码的!
那么有没有什么方法可以来恢复被忘记的管理员Administrator账户的密码呢?
当然方法肯定是有的,不然电脑岂不是废了!!!
我会继续和大家分享具体的方法操作方法,希望大家能继续关注谢谢!返回搜狐,查看更多
责任编辑:
现在大家都喜欢话里藏针,也就是说把很多的话都转化为代码,不让人一下子就能够明白,因此我们一定要学会一些代码,这样就不至于被别人整了还不知道是怎么回事,如果大家对这方面的内容也比较感兴趣的话,那就请跟上小编我的脚步一起来探讨和学习吧!
1、自动修复微信
点击微信首页右上角的➕号,选择“添加朋友”,然后在添加朋友界面中输入 :recover
(注意有冒号哟)。点击“搜索”即可进入下图的故障修复界面!
比如微信消息与通讯录,朋友圈,会话等等,都可以修复!举个栗子,点击修复朋友圈,重启微信之后,微信的异常故障就修复了,非常实用。
2、鉴别山寨iPhone
在微信任意聊天窗口输入 //getfpkey 并发送,可以看到关于手机的相关信息,包括制造商、型号、ROM的版本。
是的,这个功能只对安卓机开放,在iPhone上输入是无效的。所以如果你在“iPhone”上能查出相关的信息,很遗憾,你的iPhone就是山寨的。
其实Leo挖了下坟,发现安卓版的隐藏彩蛋还有很多,在以前的微信版本曾经出现过上百种种隐藏功能的代码!不过很可惜这些彩蛋已经被微信屏蔽了……不过现在仍保留了一些比较实用又好玩的代码!
4、整蛊TA,就让TA的微信闪退
在微信任意聊天窗口输入 //fullexit
,相当于退出功能,输入并发送后,微信会自动闪退到桌面!再次进入微信时,还需要输入登录密码!(专治基哥那种整天忘记密码的23333)。
5、解决连接网络失败
在微信任意聊天窗口输入 //traceroute 并发送,还可以调出“诊断网络”功能。当微信突然连接网络失败却又无法解决的时候,可以尝试一下。
6、快速发送定位
在微信任意聊天窗口输入 //pickpoi 并发送,可以快速定位自己当前的位置!当然这也与微信中的“发送位置”的功能是基本一致的。
大家在阅读完了上述的相关内容之后,我想不少的小伙伴们应该能够清楚的了解到了2018年微信整人代码了吧!当然了,微微风小编也会继续给大家解锁这方面的内容。当然了,大家也要继续去挖掘和积累这方面的内容,这样就能够让大家的知识面更广了。
推荐阅读:
目录 1.CC2530的串口资源1.1.CC2530的UART串口引脚的映射关系1.2.PERCFG外设控制寄存器 2.波特率的计算与设置3.串口0的UART初始化设置4.案例4.1.串口数据发送4.2.串口数据收发4.3.串口命令控制LED灯开关 1.CC2530的串口资源 CC2530有两个串行通信接口:异步UART模式: USART0和同步SPI模式: USART1
对于每个USART外设,有5个相关的寄存器(x时USART的编号,0或1)
UxCSR: USARTx 控制状态寄存器
UxUCR: USARTx UART控制寄存器
UxGCR: USARTx 通用控制寄存器
UxBUF: USARTx UART接受/发送数据缓冲区
UxBAUD: USARTx 波特率控制寄存器
1.1.CC2530的UART串口引脚的映射关系 两个USART接口具有相同的功能,通过PERCFG寄存器可以设置两个USART接口对应外部I/O引脚的映射关系
1.2.PERCFG外设控制寄存器 2.波特率的计算与设置 CC2530的波特率有BAUD_E和BAUD_M共同决定:
F为系统时钟频率,16MHz或32MHz
TI公司提供的数据手册中,给出了32MHz系统时钟频率下各种常用波特率的参数值
由计算公式可已计算出16MHz系统时钟频率下对应的参数值
16MHz下9600波特率的UxBAUD.BAUD_M:U0BAUD = 5916MHz下9600波特率的UxGCR.BAUD_E:U0GCR = 9 3.串口0的UART初始化设置 void Init_Uart0(){ //端口配置 PERCFG &= ~0x01; //将串口0的引脚映射到位置1,即P0_2和P0_3 P0SEL = 0x0C; //将P0_2和P0_3端口设置为外设功能 /*======使用CC2530的内部16MHz晶振产生9600的波特率====*/ //波特率配置 U0BAUD = 59; U0GCR = 9; //流控配置 U0UCR |= 0x80; //禁止流控,8位数据,清楚缓冲器 //串口模式配置 U0CSR |= 0xC0; //选择UART模式,使能接收器 //中断配置 UTX0IF = 0; //清除TX发送中断标志 URX0IF = 0; //清除RX接收中断标志 URX0IE = 1; //使能URAT0的接收中断 EA = 1; //使能总中断 } 4.