UEFI引导下的Win10与ubuntu14.04(16.04)双系统安装 1. 准备工作与重点 安装双系统的准备工具只有两个,一个软碟通(直接在百度上下载),还有一个是ubuntu的磁盘镜像(.iso,直接在官网下载)。之前有很多文章介绍了装双系统的方法,但是有一些比较老,所以使用的还是BIOS的方法,二新的机器都是UEFI的引导;另一方面,由于电脑的主板都不太相同,所以操作起来不太一样,比较麻烦。
这里我使用的硬件是微星的Z270小板,开机的引导是图形界面的,但是基本的功能都是一样的。整个大体的流程与其他教程基本相似,这里只说一下重点和不同的地方:
(1)在手动分区时要选择/efi而不是选择/boot (2)在选择安装引导的分区时要选择安装到刚才分的/efi的那个区,不要跟windows的efi引导放在同一个区里 (3)完成安装之后,开机进入引导界面,找到UEFI启动顺序(这个东西每个主板都不太一样,但是肯定都会有的,在微星Z270主板里与开机的硬盘启动项并不是一个东西,这也是我当时一直没找到的原因,而是在Setting里面的“启动”) (4)在UEFI启动顺序里面设置ubuntu为第一项 (5)千万不要使用EasyBCD或者EasyUEFI等工具
这里需要明白的一个概念是,我们在装ubuntu的时候单独分了一个512MB左右的efi分区,这就意味着同一个SSD下面有两个efi,但是最终我们的目的是把ubuntu的efi启动作为第一项,然后让ubuntu的引导去找window的引导,最终实现两个系统的并存。
2. 后记 即使在安装ubuntu的时候提示你已经找打了window boot manager了,也最好不要选择与windows共存,因为这样系统会自动找到一个剩余空间最大的硬盘并分配一定的空间,到时候想要删除就不太容易了。
ip详解: IP地址的分类,a,b,c三类,d和e不对普通用户开放。网络类别的“D、E”不对民用开放。IP地址范围是根据网段来划分。“127”网段只有一个IP(127.0.0.1)可用,代表当前计算机自己。
A类:第一位代表网段, 1.0.0.0 – 126.255.255.255
B类:前两位代表网段, 128.0.0.0 – 191.255.255.255
C类:前三位代表网段, 192.0.0.0 – 223.255.255.255
剩下的位数代表不同网段内的主机。私有IP地址(内网)不能直接访问公网,也就是不同的局域网内的计算机可以使用相同的IP地址。
1.IP的取值范围为1.0.0.0-223.255.255.255。
2.公网通信使用路由器,局域网通信使用交换机。
3.A类IP第一段为网段,B类IP前两段为网段,C类IP前三段为网段,其余的是网段内的主机。
4.同一网段内的首地址为网络本身不能被使用,同一网段内的末地址为当前网络的广播地址,拿A类IP地址举例,1.0.0.0为网络本身,1.255.255.255为广播地址。
子网掩码:
用连续1的表示,例如255.0.0.0 255.255.0.0
子网掩码的作用:用来区分不同网段的IP—-子网掩码与IP相与,得到的结果相同则在同一网段.否则不在,需要经过路由器转发。
只要子网掩码是合理的(连续的1)就可以指定,不一定A类就是255.0.0.0,B类就是255.255.0.0
IP和子网掩码必须一起配合使用。
网络号=IP&子网掩码
广播地址:主机号全为1
常见的端口:
1、FTP(文件传输协议):20、21;
2、SSH(安全shell协议):22;
3、telnet(远程登录协议):23;
4、DNS(域名系统):53;
5、http(超文本传输协议):80;
6、SMTP(简单邮件传输协议):25;
7、POP3(邮局协议):110;
查看本机启用的端口
netstat -an
选项:
-a :查看所有连接和监听端口
-n :显示IP地址和端口号,而不显示域名和服务名
1.hosts文件:做静态IP和域名对应,优先于DNS.
位置:C:\Windows\System32\drivers\etc\hosts
2.DNS服务的作用:将域名解析为IP地址
过程:客户机向DNS服务器发送查询IP请求
DNS服务器查询到web服务器的ip,告知用户
用户访问web服务器
3.域名空间结构
根域:.(13台服务器)
——>顶级域/一级域:包括组织域和地区域
(组织域:gov政府/edu教育部门/com商业部门/org民间团体/net网络服务机构/mil军事部门 地区域:cn 中国 hk 香港 jp 日本 Uk 英国 au 澳大利亚)
——>二级域:企业或个人自行购买的(imooc /microsoft/ibm/sina)
——>主机名/3级域:申请完二级域后自己定义的(www/news)
进行域名分级划分为了便于IP地址解析
5.客户—>本地域DNS服务器—>根服务器->CN服务器->COM.CN服务器->IMOOC.COM.CN->客户->web服务器
—-递归查询(给结果)—- ————-迭代查询(其他DNS服务器)——–
学习linux有也有快两年多了。从最初的基本命令到现在的服务搭建维护,再到自动化运维,再到系统架构。自己也是一步步走来。慢慢的发现,自己越来越离不开linux了。自己的暗下决心,已经打算在这条道上走到黑。做好自己的职业规化,系统管理员-系统工程师-架构师。一步步去实现自己的目标。
前一段时间,在从linux相关微信公众号上,看到关于linux大牛,王垠大咖发的《完全用linux工作》文章。 感触也很深。确实是linux的重要性不言而语。说来也很惭愧, 看着大咖的背景与文章,望期项背。后悔自己下手晚了,这么久了才接触到。从工作生活学习及科研等等方面, 仔细想一想确实如此。 亏自己还是学习linux的,这样大神级的人物,我都不知道。直是孤陋寡闻了。我也得扩展自己的知识面。 忍不好奇,搜索了一下有关其它的文章。 其中有一篇,《如何掌握所有程序语言》也是感触很多。写的也是十分到位。有如沐春风的感觉。自己的想法思路也开阔了不少。 现在就结合自己的学习经历也大家一起分享关于 linux服务搭建的总结。
很多人都觉得linux难学,不便于操作。命令如些,服务更是。特别是服务,不像windos一样,一键单击点到底,图型操作方便又快捷。 其实不然,linux也有很多提示。只是我们没有发现,没有去找对地方。对于linux服务搭建,通过《Linux就该这么学》中,我在学习当中,总结了一些心得。与大家分享交流一下。
Linux一个服务要装好多包,包名记不住;服务与包名有时也一样; 又很多配置文件要修改; selinux防火墙等等,很多很乱。刚开始的时候,没有自己的思路。 一股脑儿上去,东一下,西一下。都不知道自己的,做到那了。 出现了问题,更是无从下手。再网上找呢?也无从下手。很多情况下,一些基础环境与实现的情况不一样。 怎么都没有头绪。 这还是小部分,随着linux版本升级,服务变化,之前的那套又不管用了。 那时候,只能是照着,网上的文章一条条的敲。祈祷不要出错。。。呵呵。出了问题,困好久,最后实在没有办法,只好重置,重新来过。后来,朋友推荐linux就该这么学,跟刘遄老师一起做实验。慢慢的才一点点的明白一些思路。 眨看,确实是没有像windows那样方便。那是我们已经习惯了,那样简单的操作。看着你会了,其实里面很多东西原理、配置都不知道。通过一段时间的学习,通过一些简单的服务,自己的慢慢的明白了一些。原来linux配置服务当中,有很多提示。 从刚开始dns, ntp, ftp,smb,httpd等等,一步一步来。可以从所有服务搭建过程中,去总结分析。找一些共性、通性的问题。从中找一种通用的思路。然后再针对不同的服务,去具体的操作。 这样搭建服务就有地放失。
下面说一下自己配服务的思路想法:
1,网络通畅
大致包含IP、网关、DNS、主机名及各服务器与客户端之间,还有时间也得同步。各服务之前相互通信及认证等等。这些都十分重要的。这些没有做好一切无从谈起。
2,查软件包,安装软件包
跟据什么服务装什么软件。还得明确各软件版本之前的兼容性。可以通过 rpm命令配合参数查找。
3,查找修改配置文件
可以通过rpm命令查看配置文件。修改配置文件,一般都有案例模版。如果没有,也可以用man命令查看样例。
4,设置服务启动方式
这个也是相当重要的。考过rhce的朋友们一定很清楚它的重要性。设置服务启动方式,先设置开机自动启动,然后再启动服务。 这样可以充分使用linux强大的tab补全命令。从linux7之上的版本,支持更选项补全的操作。有些操作甚至可以用tab加提示,全补一气呵成。十分的方便。
5,防火墙
Linux7推出了更方便易管理的firewalld服务。在启动服务时,如里设置了防火墙了,还是有问题。这个可以查看linux强大的日志。有些时候,在日志里面你可以看到,如何操作的命令都可以看到。
6,selinux设置
Selinux我们可以配置的时间,先设置为警告。可以通过日志,或者配置文件的说明完全可以处理。也可以通过selinux工具提示来操作。
7,验证测试
一般本着先本地,后跨网络。
以上是我自己的一些总结心得。分享给大家。希望与大家一起交流学习有关linux的相关知识。
学习本专业时,出现了一个相对于物理来说的其他的不同学科,感觉还是可以学一下的,每次学不同的知识,下载软件是必不可少的,这里是从百度上下载的软件,仅供参考; 链接: http://pan.baidu.com/s/1jHVwa5S 密码:d1kn
1、 下载之后出现三个文件:
R2016b_win64_dvd1.iso(安装文件);
R2016b_win64_dvd2.iso(安装文件); Matlab2016b Win64 Crack.rar(破解文件)。
2、 下面进行破解【其实只要利用好以上的文件就可以了】:
3、 解压安装文件,安装文件为iso格式,但是不能通过虚拟光驱安装,需要将iso文件用解压软件解压。注意,R2016b_win64_dvd1.iso和R2016b_win64_dvd2.iso两个文件均需要解压,且必须解压到同一个文件夹,如图所示:
4、 点击setup.exe,进行安装。如图所示
5、点击setup.exe,之后稍等一会儿,MathWorks安装程序启动,启动后选择“使用文件安装密钥 不需要Internet连接”,如图所示:
6、点击下一步,是否接受许可协议的条款哪儿选择“是”,如图所示
7、点击下一步,选择“我已有我的许可证的文件安装密钥”,在下面输入秘钥:“09806-07443-53955-64350-21751-41297”,如图所示
8、选择要安装的目录。
9、选择需要安装的产品,建议全选,也可根据自己需要选择要安装的产品,我是全选的,选择之后点击“下一步”。如图所示:
10、进入“确认”页面,点击“安装”。
11,进入安装界面,有进度条显示安装进度,安装过程需要较长时间。
12, 安装完成之后,进入“产品配置说明”界面,点击“下一步”继续。
13,之后进入“安装完毕”界面,点击“完成”按钮,完成安装。
14,将下载的“Matlab 2016a Win64Crack.rar”解压,解压后文件如图所示,我见文件解压在桌面上,文件夹中的“license_standalone.lic”就是许可文件,如图所示:
15,之后打开MATLAB的安装目录D:\Program Files (x86)\bin\win64点击“activate_matlab.exe”进行激活,选择“在不选择Internet情况下手动激活”,点击“下一步”继续。如图所示:
16,选择“输入许可证文件的完成路径(包括文件名)”,点击“浏览”,选择刚才解压到桌面的Matlab 2016a Win64 Crack文件夹中的许可文件,点击选择。
17,之后进入“离线激活”界面,现在的许可证文件的路径已经填写完整,点击“下一步”。
18,之后提示“激活完成”,如图所示。此时不要打开软件。继续看下一步。
19,打开解压的Matlab 2016a Win64Crack文件夹中的MATLAB Production Server\R2016a\bin\win64,复制其中的四个dll文件,如图所示:
20,之后打开D:\ProgramFiles\MATLAB\R2016b\bin\win64文件,将复制的dll文件粘贴在这个文件夹中,系统会提示“复制文件”选项,所有文件都选择“复制和替换”即可
21,之后打开D:\ProgramFiles\MATLAB\R2016b\bin文件夹下的MATLAB启动图标,点击右键发送桌面快捷方式,就可以正常使用了。
22,之后打开软件,就拥有一个完全免费的matlab2016a中文破解版本了
很多时候我们使用ImagView显示图片,无论是Gilde,Fresco等图片显示框架,比如设置中心更换头像,网格相册点击预览,选择等情况,会遇到点击变暗的交互需求。
源码分析 我们想的办法是自定义一个ImageView,当点击图片时,是不是有回调方法来同时改变图片的滤镜或者蒙版等。 特意去看了View.java的源码(ImageView继承View),想看看View被点击之后是是否有回调函数可用。 View的onTouchEvent()方法 case MotionEvent.ACTION_DOWN: mHasPerformedLongPress = false; if (performButtonActionOnTouchDown(event)) { break; } // Walk up the hierarchy to determine if we're inside a scrolling container. boolean isInScrollingContainer = isInScrollingContainer(); // For views inside a scrolling container, delay the pressed feedback for // a short period in case this is a scroll. if (isInScrollingContainer) { mPrivateFlags |= PFLAG_PREPRESSED; if (mPendingCheckForTap == null) { mPendingCheckForTap = new CheckForTap(); } postDelayed(mPendingCheckForTap, ViewConfiguration.
Question15 3Sum
Given an array S of n integers, are there elements a, b, c in S such that a + b + c = 0? Find all unique triplets in the array which gives the sum of zero. Note: The solution set must not contain duplicate triplets.
For example, given array S = [-1, 0, 1, 2, -1, -4], A solution set is: [ [-1, 0, 1], [-1, -1, 2] ] 解法如下:
运行存储过程报错如下:
Compilation errors for FUNCTION AWCARGOWEBJMNEW.FUN_GETVSLVOY161110
Error: PLS-00103: Encountered the symbol “SELECT” when expecting one of the following:
( – + case mod new not null continue avg count current exists max min prior sql stddev
sum variance execute forall merge time timestamp interval
date pipe
Line: 1628
Text: SELECT NVL(SUM(Fun_GetWMSCount(SvcOrderBill.OrderBillID,
Error: PLS-00103: Encountered the symbol “)” when expecting one of the following:
* & – + ; / at for mod remainder rem and
方法一:单击选中原理图中元器件,然后单击tools>Seclect PCBcomponents,即可在PCB中看到该器件的高亮显示;
方法二:单击Tools>Cross Select Mode,或用快捷键Ctr+Shift+X键,然后在原理图中单击任意器件,在PCB中都可高亮显示。
如下原理图中选中P6的效果
1.lineedit不可修改,但内容不变成灰色
ui->lineEdit->setFocusPolicy(Qt::NoFocus); 2.lineedit不可修改,内容变成灰色
ui->lineEdit->setEnabled(false); 3.lineedit不显示边框
ui->lineEdit->setStyleSheet("background:transparent;border-width:0;border-style:outset");
最近闲得无聊,又把 stm32 拿了出来。之前学的时候是看的库函数版本,现在和寄存器版本的一起看感觉比一开始接触的时候看得顺畅多了,详细了解了底层寄存器的功能。之前用 stm32 只是调用函数,看了寄存器版本后对那些实现具体细节的库函数代码产生了兴趣,所以稍微看了看库函数的代码,同时把一些难理解的地方也记录下来。
我用的是 ALIENTEK 的战舰版,看的也是他们的开发指南,这里我就写对库函数代码的理解,寄存器种类和功能等指南里面有的我基本不写了。
一开始是 GPIO,学任何单片机一开始都是流水灯。stm32 的每组 GPIO 有 7 个寄存器,功能这里就不介绍了,网上很多。官方库里关于 GPIO 有 18 个函数,看了几个常用的,如下
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct); uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); uint16_t GPIO_ReadInputData(GPIO_TypeDef* GPIOx); uint8_t GPIO_ReadOutputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); uint16_t GPIO_ReadOutputData(GPIO_TypeDef* GPIOx); void GPIO_SetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); void GPIO_ResetBits(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin); void GPIO_WriteBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin, BitAction BitVal); void GPIO_Write(GPIO_TypeDef* GPIOx, uint16_t PortVal); 这些函数除了第一个初始化函数以外其他都很简单,了解一下寄存器的功能就能看明白代码了,这里只写一下初始化函数。 代码如下:
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct) { uint32_t currentmode = 0x00, currentpin = 0x00, pinpos = 0x00, pos = 0x00; uint32_t tmpreg = 0x00, pinmask = 0x00; /* Check the parameters */ assert_param(IS_GPIO_ALL_PERIPH(GPIOx)); assert_param(IS_GPIO_MODE(GPIO_InitStruct->GPIO_Mode)); assert_param(IS_GPIO_PIN(GPIO_InitStruct->GPIO_Pin)); /*---------------------------- GPIO Mode Configuration -----------------------*/ currentmode = ((uint32_t)GPIO_InitStruct->GPIO_Mode) & ((uint32_t)0x0F); if ((((uint32_t)GPIO_InitStruct->GPIO_Mode) & ((uint32_t)0x10)) !