这个代码需要安装jdk8才行,安装9就不行.
●之后按照上面博客的方法,就可以跑了.其中如何加入命令点浏览器右边的outline点assist再点屏幕左边弹出来的importFiles就可以加入命令.或者直接点快捷栏最后一个圆圈问号图标也可以.
●h2o基本都鼠标操作就行了
●伯努利分布未必一定是0-1分布,也可能是a-b分布,只需满足相互独立、只取两个值的随机变量通常称为伯努利(Bernoulli)随机变量。二项分布就是n重伯努利分布
●随机森林效果不好,不如深度网络,最后用的gbm效果最好到百分之12
学习pytorch代码从github上.
clamp截断:
搜集除已有销量数据之外的额外信息(比如天气、地点、节假日信息等),
目前方法考虑:1.随即森林2.lstm
安装kerascuda版本:
condainstallpip
pipinstalltensorflow-gpu
继续使用windows自带的linux.
0.安装好后,输入账号,密码.这时设置的是普通用户,比如zhangbo
1.第一次运行需要设置root账号
sudopasswd
之后设置好后就suroot就可以切换root账号了.用这个账号就不用写sudo了很方便但是比较危险.就是展示和配置文件时候用,其他时候不用.
2.普通使用的时候最好使用普通账号:suzhangbo即可.
3.cmd改字体,标题上右键属性即可.
anaconda
Anaconda创建环境:
//下面是创建python=3.6版本的环境,取名叫py36
condacreate-npy36python=3.6
删除环境(不要乱删啊啊啊)
condaremove-npy36--all
激活环境
//下面这个py36是个环境名
sourceactivatepy36
退出环境
sourcedeactivate
●2018-07-09如何把代码封装成一个linux的服务.使用的是windows的子系统ubuntu16版本.
1.在/etc/init.d中vimmyservice输入:
#-*-coding:utf-8-*-"""CreatedonMonJul919:37:312018@author:张博"""#!/bin/bash#dcription:ademo#chkconfig:23458877lockfile=/var/lock/subsys/myservicetouch$lockfile#startstart(){if[-e$lockfile];thensh~/tmp.shecho"Serviceisalreadyrunning....."return5elsetouch$lockfileecho"Servicestart..."return0fi}#stopstop(){if[-e$lockfile];thenrm-f$lockfileecho"Serviceisstoped"return0elseecho"Serviceisnotrun"return5fi}#restartrestart(){stopstart}usage(){echo"Usage:{start|stop|restart|status}"}status(){if[-e$lockfile];thenecho"Serviceisrunning.."return0elseecho"Serviceisstop"return0fi}case$1instart)start;;stop)stop;;restart)restart;;status)status;;*)usageexit7;;esacViewCode2.在vim~/tmp.sh输入:
echo'dsfasdjlfs'
3.chmod+x/etc/init.d/myserver
4.servicemyservicestart
5.屏幕输出:也就是在服务里面运行了tmp.sh脚本,之所以把tmp.sh写在了~下,因为我测试过如果写在/etc/init.d/中会提示无法打开tmp
dsfffServiceisalreadyrunning.....
以上实现了把代码封装到一个服务里面,这样只需要输入第四步代码就能运行程序tmp.sh
ps:对于windows的子系统.他们的文件系统共享的.c盘=/mnt/c2个操作系统可以互相访问和修改文件
最后预测需要做的是
1.往服务器中装上需要的库包keras等
2..py封装成服务
●记录在linux系统中装keras环境.
4.
#1.更新系统包sudoapt-getupdatesudoapt-getupgrade#2.安装Pipsudoapt-getinstallpython-pip#3.检查pip是否安装成功pip-V
pipinstalltensorflow
pipinstallkeras
把上面服务的程序改成用python运行.
第一步改成
#!/bin/bash#dcription:ademo#chkconfig:23458877lockfile=/var/myservice.backtouch$lockfile#startstart(){if[-e$lockfile];thenpython3~/tmp.pyecho"Serviceisalreadyrunning....."return5elsetouch$lockfileecho"Servicestart..."return0fi}#stopstop(){if[-e$lockfile];thenrm-f$lockfileecho"Serviceisstoped"return0elseecho"Serviceisnotrun"return5fi}#restartrestart(){stopstart}usage(){echo"Usage:{start|stop|restart|status}"}status(){if[-e$lockfile];thenecho"Serviceisrunning.."return0elseecho"Serviceisstop"return0fi}case$1instart)start;;stop)stop;;restart)restart;;status)status;;*)usageexit7;;esacViewCode第二步改成:
在vim~/tmp.py输入:
print('3232423')
提示dpkg被中断,您必须手工运行sudodpkg--configure-a解决此问题:
python路径问题:
windows,linux都可以用
dataframe=read_csv(r'c:/nonghang/output998.csv',usecols=['Sum'])这种写法来写路径,都不会报错
技巧:用差分来替换数据来去除趋势性,预测的干扰因素
0,1背包变体:
#leecode461classSolution:defcanPartition(self,nums):""":typenums:List[int]:rtype:bool"""ifsum(nums)%2==1:returnFalsetmp=sum(nums)//2memo={}defmain(obj,list1):if(obj,tuple(list1))inmemo:returnmemo[(obj,tuple(list1))]ifobj!=0andlist1==[]:returnFalseifobj==0:returnTrueiflist1[0]>obj:returnFalseforiinrange(len(list1)):ifmain(obj-list1[i],list1[:i]+list1[i+1:])==True:memo[(obj,tuple(list1))]=TruereturnTruememo[(obj,tuple(list1))]=FalsereturnFalsereturnmain(tmp,nums)ViewCode非常好的linux课程:
TCP\IP协议
ubuntu设置代理的方法:
vi/etc/apt/apt.conf
输入
之后就可以用apt-get来通过代理下载软件了.ping网站是ping不通的,因为这个方法只有apt有上网权限.
好在:装keraslinux环境全用apt
这个方法在linux子系统里面可以使用.可能需要重新启动这个子系统让他生效.
sudoapt-getupdate运行下这个必须
在虚拟机ubuntu14厘米也成功了.
改源
安装显卡的tensorflow.
我用的版本:cuda_9.0.176_win10cudnn-9.1-windows10-x64-v7.1(7.1版本的cudnn)
装好后会出现,找不到xxx.dll
这时候用管理员权限打开cmd.激活上面的tensorflow-gpu这个conda环境.再测试就好使了.
cmd里面运行session程序就能看到是不是用gpu了.
同时不用设置keras,他自动会使用gpu版本的tensorflow
●如何用编辑器来使用这个环境.进入anacondanavigator里面
从环境进入cmd.然后输入spyder即可.------------------------2018-07-13
python追加写入:用a+即可
withopen('C:/Users/张博/Desktop/all.txt','a+')asf:f.write('77777777777777777777777777777777777777')f.write('\n')
1.要把数据stationary化:用差分法
●sublime多行编辑技巧:
1.ctrl+f输入要查询的内容再点find
2.alt+F3全选查询内容
3.鼠标在文本框中点右键
4.鼠标在标题栏上点左键这时就会出现很多个鼠标光标.就可以多光标输入了
试试云Gpu主机:floydhub
发现上不去:网络不行.并且他给的配置也非常水
解决运行cnn网络出现:couldnotcreatecudnnhandle:CUDNN_STATUS_NOT_INITIALIZED的bug解决:
后来是下载的:cudnn-9.0-windows10-x64-v7.1就可以了.把他解压缩到cuda9.0文件夹里面覆盖即可.
这个包前面写9.0是cuda的标号,后面7.1是cudnn的标号.一定要对应好9.0的安装才行.
总结:tensorflow-gpu的安装.用的是cuda9.0版本,和上面的cudnn就能跑了.配环境真是麻烦.
解决Proxifier和spyder冲突的问题:
用上proxifier后发现python全不好使了.spder也不能用了.所以卸载proxifier一切都好了.神奇一个代理软件居然能把python弄坏.
现在已经知道通过设置proxifier的代理规则即可,把一些软件设置为不用代理,比如spyder.这样就可以同时使用了.
●写bash脚本:
自己的ubuntu16上面
解决方案:用bash1.sh来运行脚本即可
把图片识别继续做下去:
1.多级文件夹的文件更名操作,为了名字不重复
#-*-coding:utf-8-*-"""CreatedonSunJul1517:48:362018@author:张博"""'''右键属性,我们发现每一个图报里面有760张图片.足够了.如果不够还可以继续用keras的图片生成器来随机对图片进行平移和旋转放缩操作来对图像进行提升.提升术语说的意思是把一个图片通过这3个变换来生成很多相类似的图片,把这些图片也作为数据集,这样训练效果会跟好更入帮性.'''fromosimport*importshutila='C:/Users/张博/Desktop/图片总结/all_pic'aa=listdir(a)print(a)a=[a+'/'+iforiinaa]print(a)foriina:#i是当前文件夹print(i)tmp=listdir(i)num=(760*2//3)test=tmp[:num]valid=tmp[num:]mkdir(i+'/'+'test')mkdir(i+'/'+'valid')foriiintest:shutil.move(i+'/'+ii,i+'/'+'test')#移动文件foriiinvalid:shutil.move(i+'/'+ii,i+'/'+'valid')#移动文件ViewCode3.跑到93正确率:当然还有正则化,bn层还没加入.
等训练好了,写一个调参总结,把参数大概取什么范围定下来.其中动态学习率非常重要.
mysql傻瓜式安装:
我选择的版本是:
安装步奏:狂next,运行:不过每次使用的时候,必须进入mysql的安装bin目录才可以通过mysql-uroot-p进入.成功进入.
如果发现进不去就是因为mysql的服务没有开启,开启即可.
不好使可以试试:C:\ProgramFiles\MySQL\MySQLServer5.7\bin\mysql.exe这个直接进
复习到逻辑回归的对数loss函数不是很理解.去找书看看怎么推导的.
发现周志华的书上推导错了,极大思然写的不对,推导其实就是极大思然的公式带进去就完了.一个2项分布的释然函数而已
似然函数=p1^(y1)*(1-p1)^y0就对了.
记录solr的使用方法:
2.接下来就是创建solrCore
在solrHome,我们创建一个空文件夹core1,
把solrHome里面有别人的账号,把他的conf文件夹贴到core1里面.
在solr的管理控制台界面--coreAdmin----AddCore
3.需要做的东西是把csv文件都放到solr服务器上.因为solr只能存.json所以这里用了pysolr这个库包.
下面实现了这个上传csv到solr的功能.ps:这个库包还可以维护solr
2018-07-17,10点52lstm继续做下去
1.处理数据,加入特征
sublime编辑技巧:
按住shift,鼠标右键拉框.就能多行编辑,想选哪里就选哪里
2018-07-17,20点10对lstm预测项目的总结:
通过学习积累了处理大数据基本方法
1.要把原始数据的图像画出来,做大体走势和噪音点的分析.
3.调参和模型:
数据初始要正则化,动态学习率,参数的初始化和正则化,通过history方法可以观察是否过拟合.提高gpu使用率:可以用不同ide同时跑python程序.
其实都用cmd来跑也可以.cmd可以同时运行多个python互相不干扰.这样gpu利用率高多了.能提高调参效率
这个应该试试.
windows里面安装\卸载子系统ubuntu.出错了就卸载重装
记录java:
Syntaxerrorontoken"InvalidCharacter",deletethistokenSyntaxerrorontokens,deletethesetokens这个问题是你的空格和tab用混了.
打算安装hadoop:
没成功,各种坑
还是实验楼好,直接用.他的剪贴板功能很有用.直接把windows里面的代码能贴到实验楼的试验环境中.在实验楼里面的代码互相贴不会出现垃圾信息.
这里我们介绍一种快速生成多个哈希函数的方法。
假如,你有一个哈希函数f,它的输出域是2^64,也就是16字节的字符串,每个位置上是16进制的数字0-9,a-f。
我们将这16字节的输出域分为两半,高八位,和低八位是相互独立的(这16位都相互独立)。这样,我们将高八位作为新的哈希函数f1的输出域,低八位作为新的哈希函数f2的输出域,得到两个新的哈希函数,它们之间相互独立。
故此可以通过以下算式得到1000个哈希函数:
在数据结构中,哈希表最开始被描述成一个指针数组,数组中存入的每个元素是指向一个链表头部的指针。
我们知道,哈希表中存入的数据是key,value类型的,哈希表能够put(key,value),同样也能get(key,value)或者remove(key,value)。当我们需要向哈希表中put(插入记录)时,我们将key拿出,通过哈希函数计算hashcode。假设我们预先留下的空间大小为16,我们就需要将通过key计算出的hashcode模以16,得到0-15之间的任意整数,然后我们将记录挂在相应位置的下面(包括key,value)。
注意:位于哪个位置下只与key有关,与value无关
例如我们要将下面这样一条记录插入哈希表中:
“shiyanlou”,666#key是shiyanlou,value是666首先我们通过哈希函数,计算shiyanlou的hashcode,然后模以16。假如我们得到的值是6,哈希表会先去检查6位置下是否存在数据。如果有,检查该节点中的key是否等于shiyanlou,如果等于,则将该节点中的value替换为666;如果不等于,则在链表的最后新添加一个节点,保存我们的记录。
由于哈希函数的性质,得到的hashcode会均匀分布在输出域上,所以模以16,得到的0-15之间的数目也相近。这就意味着我们哈希表每个位置下面的链表长度相近。
对于常见的几种数据结构来说,数组的特点是:容易寻址,但是插入和删除困难。而链表的特点是:寻址困难,但是插入和删除容易。而对于哈希表来说,它既容易寻址,同样插入和删除容易,这一点我们从它的数据结构中是显而易见的。
ubuntu下载地址:
开代理又没法用vmware了
使用的是:ubuntu-14.04.5-desktop-amd64.iso这个版本
就能上网了
更新vmtools就能在ubuntu里面设置分辨率了
ubuntu使用方法.按键盘win建,输入t,就会出现terminal,把他拖到左边的快捷栏里面,打开后,屏幕左上角有edit,perform设置字体.带图形界面的linux就是简单多了.
继续装软件:
装环境一定要先切用户,各个用户之间的环境不共享!!!
spyder设置默认模板:
tools-preference-editor-advance
django
1.pipinstalldjango
2.开启vs2017
3.新建项目-python-web项目-django
4.写好后,项目上启动cmd输入pythonmanage.pyrunserver127.0.0.1:8000
注:.用proxifier中设置代理规则,里面的输入127.0.0.1:65535,规则direct即可.就不会被proxifier改代理上不去这个网了.
win10激活
解决vs2017和proxifier的冲突.
把pythonanaconda里面的程序python.exe.pythonw.exe都放到proxifier的列表里面设置direct直连即可.
如何不用pycharm来建立python的一些项目:比如scrapy(pycharm要的配置太高)
我还是用vs2017,比spyder强大多了.调试更详细
如何用vs2017建立vs2017没有模板的项目:
1.d盘建立一个目录叫爬虫练习
2.在目录里面开powershell或者cmd输入scrapystartprojectArticleSpider
3.启动vs2017,点文件-新建-项目-python-从现有的python代码-文件夹选择上面的爬虫练习文件夹-确定-下一步-完成即可.自动把文件夹变成项目了.
网易云课堂:
linux高级系统管理:技术LVM:逻辑卷
软件测试:V模型,W模型,回归测试,冒烟测试,alpha,beta,pareto原则(8,2原则)
黑盒:等价类划分法,边界值法,因果图,正交表,场景法
什么事正交表:(1)每一列中,不同的数字出现的次数是相等的。(2)任意两列中数字的排列方式齐全而且均衡!也就是说只是考虑2个因素的全排列.而不考虑全部的n排列.
所以一个3因素*2特征的实验需要4行即可.怎么算的
白盒:逻辑覆盖,判定覆盖,语句覆盖
圈的复杂度:边-节点数+2=把平面分成几个区域
linux命令:
umask设置创建的默认权限(为什么叫这个,因为User'sMask默认权限就是一个面具)
chattrlsattr设置,查看权限set_uid:chmodu+sxxx#设置setuid权限
ln-s/tmp/yum.log/root/111/yum.log创立软连接.(注:如果你用软连接时候写的不是绝对路径,那么移动文件之后,可能会bug找不到源文件)
注:ln-s命令先写主文件目录,后写小的软文件目录
硬连接:不能对目录做,他是用anode来存储的.删除一个,另一个无所谓.硬连接也不能跨分区
ls-i就能看文件的anode了.他就是文件的本质存储的位置
软连接非常实用的一个技术:磁盘文件的一种移动扩容方法.!!!!!!!
比如/boot/aming.log这个目录/boot已经满了,/root里面还很大,但是我还是要往这个/boot地址写入,那么用软连接来实现这个功能
cp/boot/aming.log/root/aming.log
rm/boot/aming.log
ln-s/root/aming.log/boot/aming.log
只需要这3行命令就够了.非常牛逼,当然也可以用上面的LVM技术对逻辑分区扩容
讲的非常好的操作系统课程.
跟io有关的就一定跟阻塞太有关,否则无关.
变量自加,自减需要利用寄存器.所以翻译成机器语言是都3句话.
记录型信号量的使用:
这个记录型信号量非常有用:例子:
一个打印机,两个工作a,b
信号量是打印机这个资源的一个描述.
记作typer,他的属性一个value=1(2个打印机就初始化为2),一个L=[],方法一个wait,一个signal,
a先进来,一个进程进来,打印就就运行wait函数.这样信号量value变成0了.因为0不小于0所以a直接运行不用等.
b这时候才进来,还是运行wait函数,这时候value就变成-1了,所以触发block函数.b进入L中
这时候a打印完了,他出来,触发signal函数.value变成0,触发wakeup函数.所以b从队列中弹出.
这时候b可以进入了,并且不用wait函数.b直接运行.
(总结:进程从外界进入打印机就调用wait函数进程是被wakeup唤醒的就直接运行!!!!!!!进程运行完毕调用signal函数)
对上面的信号量作用到多个共享资源时候发生的死锁现象,继续做优化.就是下面的and型信号量
1.互斥
2.前驱:
3.合作,同时
云计算课程:
马哥linux讲bash脚本
讲的很细
AWK高级应用:
awk'NR==1'1.txt返回第一行
awk'END{print$0}'1.txt打印最后一行
python连接mysql:pymysql基本命令:这个mysql浏览器输入127.0.0.1:3306是没用的.只能用下面的py脚本连接
pymysql基本方法:
ccna网络精品课程:
局域网用交换机连
广域网用路由器连
上来ping127.0.0.1来看网卡是不是好的.所以127就给操作系统了
ip子网掩码网络位主机位
有效的子网掩码的范围到/30
vrsm:利用子网掩码再划分来吧网络继续分割
huffman编码:
给一个字符串aabbccde对他进行huffman编码
a频率2
b频率2
c频率2
d频率1
e频率1
那么需要5个节点.结论:每一个编码都可以表示成每个非叶子节点恰好有2个子节点的2茶树,树的边上左写1右写0.
那么叶子节点表示成根到叶子的编码就是要的码
1.画树2.给编码3.按照频率大的给短的编码即可.但是树的构造需要技巧才能让最后的码最短
使用哈夫曼编码来编码字符串"aaaabbcd"时,得到的编码长度为多少
如果写成平衡树就需要16个,非平衡树就14个.这个也是分问题的
比如对abcd编码,用平衡树就更短.这个需要试.
计算机题目:
递归函数最终会结束,那么这个函数一定?
理解就是左边是一个分类问题的概率.我们已经知道了A这个事件发生了,也就是A这个物体的符合这个特征已经知道了.那么他属于Bi这个类的概率是多少
理解右边公式:分子就是P(A交B)而已.分母就是全概率公式呗表示P(A)两个一除,显然表示当A已经发生了的时候再发生Bi的概率,也就是条件概率.证毕.
应用:朴素贝叶斯也就是上面说的A的特征已经知道了.求A属于Bi类的概率.朴素贝叶斯说的是各个条件之见的影响是没有的.也就是概率上独立.
A的特征是a1,...an则P(A|Bi)=P(a1|Bi)*...*P(an|Bi)也看做极大似然.道理都一样.感觉统计学思想本质就是一个极大似然.说一堆其实化简化简都一个.
然后我们的P(aj|Bi)这个概率是通过经验或者train集来获得的.获得方法count即可.(看Bi类里面属性为aj的有多少,然后除一下Bi里面元素个数)
●分布:0-1分布,伯努利试验(二项分布,也就是多重0-1分布),
连续分布:均匀分布,指数分布(无记忆性),正态分布(3sigma:1:682:95.43:99.7)标准正态分布:φ(-x)=1-φ(x)
2维正太分布的边缘分布与参数rho无关,所以可以证明:单由一个分布的边缘分布是不能决定这个分布的联合分布的.
分布概率独立=独立=边缘概率独立(证明显然)
核心定理:怎么证明
往证:F(h,g)=F(h,.)*F(.,g)
左边=sigma所有x的取值,y的取值s.t.h=h1且g=g1的取值
右边=(sigma所有x的取值取s.t.h=h1)(sigmay的取值s.t.g=g1)利用假设证毕.
●期望:设离散型随机变量的分布是P{X=xk}=pk,那么如果级数∑xkpk绝对收敛,那么他就定义为随机变量X的数学期望。
为什么这么要求绝对收敛而不是收敛。
●重要题型:
●样本的4个分位数,箱线图,修正箱线图,我们采用中位数来描述数据的中心趋势,因为他比平均数更不受异常值干扰.
●常用计算公式:
D(X)=E(X^2)-E(X)^2(方差=先平方再期望-先期望再平方)
E(X^4)=3
证明:
所以卡方分布自由度为n:期望是n,方差是2n
●点估计:
样本均值=(x1+...+xn)/n样本方差:sum(xi-x平均)/(n-1)
●极大似然估计:
设x1,...,xn是样本值,概率密度函数是f(x,θ).
那么答案是θ取值使得Πf(x,θ)最大即可.事实上更常用的是求左面式子取ln后的极值.(因为乘机爆炸问题)
●评价估计量:
无偏性,有效性,相合性.
●正太分布的抽样的均值和方差的分布:
所以有这个非常重要的公式:最重要的公式!
中心极限定理:一个完全相同的实验重复无穷次.那么观测值的平均值是一个正态分布.
统计学2个方法;1.估计2.假设检验
假设检验例子:
解答:首先套用最重要的公式.知道(xhat-miu0)/(σ/sqrt(n))是一个正态分布.假设检验成立,那么左边这个东西的取值不可能高于1.96,因为如果他高于1.96说明
题目都很类似:继续套用一个题目:
第一步:重要定理又来了:(xhat-μ0)/(sigma/sqrt(n))=标准正态分布
假设没有参水,那么上面正态分布就一定小于z(0.05).因为拒绝域是参水了,只可能往里面放水,只能让冰点提高,不能降低.所以预测
出来的只能是是否超过上0.05分点.所以比较上面的数根z(0.05)即可.超过就说明冰点变高了.说明参水了.
实际中:用的是t检验
解释:就是用S来替代sigma就得到了t检验.拒绝域是零件寿命过小.所以是单边拒绝域.所以直接带入t(0.05)(n-1)即可.
●验证方差:用卡房检验.
●分布拟合检验:当分布不知道的时候
马尔科夫过程定义:
2.统计学方法:1.谱分析:就是用sin,cos级数组合来逼近任意一个函数.
3.做假设检验来吧序列归类.
4.方法性工具:
1.p阶差分和k步差分.(我很好奇,为啥不用比分.就是t时刻数据/t-1时刻的数据)
说白了就是仿射函数.
1.判定模型的平稳性:看图像法,特征根法,平稳域(也就是用特征根来算的)
2.平稳性和可逆性条件.
3.建模调参即可.
6.非平稳:
这不就是lagrange定理么,多项式逼近任何函数,然后加一个误差函数e.核心就是算这个多项式.
数据预处理的方法:
1.趋势分析:线性拟合,曲线拟合.(都是out的方法,怎么可能这么简单的函数就拟合了!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!没卵用)
2.数据平滑法:移动平滑法,n期移动平均,指数平滑法,holt平滑法(都没乱用!!!!!!!!!!!!)
3.季节分析
4.X-11方法
随机分析方法:
1.线性趋势:用1阶差分
2.曲线趋势:用2阶
3.固定周期的序列:进行周期步长的周期差分
去除pdf的安全和加密:
下载后跑一下即可.
●xgboost就是改lossfunction改成mse+叶子结点个数+叶子节点的数值就是这3个部分了.(mse也就是上面回归树说的方差:因为预测值取的就是平均数)
实际使用xgboost:
实例:
分类
流程:假设错误率小于ε0,则计算后如果 inta;表示的是autointa;他是一个自动类型变量,表示的是你不给他赋值他就是一个随机的(也叫狗屎值),他的生命周期是他所在的括号的范围内. staticinta;表示的是静态变量.不给他赋值他就自动表示的是0. 头文件:建立一个文件叫t2.h然后cpp文件里面输入include"t2.h"即可引入这个文件. 下面的不对:因为str是常量不能放等号左边. charstr[20];str="ilovechina"; 下面的正确:因为str是变量可以放在等号左边. char*p;p="ilovechina"; char*p; scanf("%s",p);错误因为p初始化时候没有开辟空间. 数字转字符: 3+'0'得到的就是数字3的字符(本质就是ascii码加3) 结构体:把不同类型的数据组合在一起. 结构体直接赋值即可,结构体数组也一样:如: structs1{charname[20];charaddr[40];intid;};intmain(void){ s1first={"zhangsan","changzhou",3}; s1student[30];for(inti=1;i<=29;i++){student[i]=first;}printf("%s",student[10].name); } 链表: #include #include structnode{intval;node*next; };intmain(void){ node*p1,*p2;p1=(node*)malloc(sizeof(node));p2=(node*)malloc(sizeof(node));(*p1).val=1;(*p2).val=2;(*p1).next=p2;p2->next=NULL; printf("%s",(p1->next->next));//取内容的运算级别最低free(p1);free(p2);return0;} windows技巧:everything软件查询文件速度很快 忘记密码: 用大白菜u盘启动盘 angularjs教程: ng-app=""表示这个块归我angularjs管. ng-model="str"表示数据 ng-bind="str"表示显示绑定的位置比这个更高级的叫模板:{{}} 2句最重要的话: 1.angular和js不互通 2.开发只需要顶住数据即可. ng-init="a=0;b=0" ng-repeat的模板 arp投毒试验: 1.cmd里面arp-a可以看本地记录的ip-mac地址对应关系2 2.用arproof投毒,改两边mac地址,开启路由中间转发功能. 3.中间人开启抓包:账号密码就都抓到了. 4.单向绑定,双向绑定.来解决投毒攻击 DNS学习: 把郁闷转化到ip地址,用dns服务器.是典型的CS结构 流程:先给dns服务器里面A表示用的是ipv4地址.然后找根域,然后根域会给你分配给com服务区,之后又分配给baidu.com服务器. ipconfig/flushdns清楚windows的dns缓存. 防御dns攻击的方法: 1.免费wifi:都直接指定dns服务器,他可能会修改dns.不安全.或者他可以起跟免费wifi一样的名,这样手机也直接自动连这个wifi.(设置密码也一样) 2.手动配置dns服务器地址即可!避免别人篡改dns服务. 弱口令: 1.键盘组合,自己姓名生日,身份证号,学号. 2,可以用随机生成密码本即可. 破解: 1.看端口 2.口令从高到低概率排序 3.暴力 软件:hydra只能在linux上跑 源码安装:wget命令.这个命令在哪个文件夹里面运行就,下载到哪个文件夹里面 果断centos 下载 查看无限网卡: linux:ifconfig或者iwconfig(后者更详细) cmd命令: tab补全多按tab能循环 -可以帮助 netuser看用户 netuserdwl2321/add添加用户dwl密码是2321 cmd里面命令:%systemdriver%系统盘 嵌入式linux开发 arm芯片 配置环境变量:修改.bash文件./etc/bashrc/etc/profile 配置好后,命令在哪个目录输入都有效果了. du-h/etc看目录文件的大小 cat-n2015.log显示行号. 一起显示cat-n2015.log2016.log 一起输出cat-n2015.log2016.log>log得到一个带行号的合并文件. ps-ef|grepsshd查询进程 查看路由: route-n 添加 routedeldefaultgwIP地址 routeadddefaultgwIP地址 routeadd-net192.168.0.0netmask255.255.255.0gw192.168.0.1deveth0 routedel-net192.168.0.0netmask255.255.255.0gw192.168.0.1deveth0 嵌入式的服务: nfs:1.dpkg-l|grep-infs2.apt-getinstallnfs-kernel-server3.启动:servicenfs-kernel-serverrestart 看服务ps-ef 汇编: win10没法用debug功能:这么解决. 指令以16进制存在内存中,本质是2进制.我们看起来是16的.比如FFH表示255最后H表示结尾. 数据也一样,都放内存中. 内存中最小单元叫字节bytes=2个16进制数字.也就是8位 cpu的地址线能决定cpu能找到多少个地址.找到2的N次幂个地址 一个cpu的寻之能力8kb,那么他地址线多宽:2^n=8*1024=2^13所以n=13 一kb存储1024个Byte一个Byte存储8个bit就看有没有写e.写e的大,不写e的小. 1KB的存储器有1024个存储单元. ROM:只允许读取电没了还有 RAM:可以写入电没了就没了 寄存器里面数字的表示: AX=AH+AL BX=BH+BL CX=CH+CL DX=DH+DL 16位=8位+8位.所以既可以16位直接mov也可以移动上8位或者下8位. 实例:先-r然后-a回车movax,4E20回车再回车再-t再-r就发现ax数值变了(这里面的回车很烦). 挺乱套的,输入-a之后的命令,他会自己记录下来,不管输入多少,然后每一次-t就按顺序执行一个. 最后发现movah,al这种也一样能跑.随便位置都能随便mov 例子: 上面5条按顺序跑完就是下面对应5条.H表示的是16进制的数,闲麻烦就直接计算器.选16进制加法 把2个16进制的数7820相加即可. movax,8226H movbx,ax addbx,ax 那么结果是044C也就是最高位超过了表示范围自动扔掉.(真正敲的时候必须不输入H) 物理地址=段地址*16(也就是乘以10H)+偏移地址 例如:用1230H和c8表示饿了12300+c8=123c8H这个5个数位的16进制,一个16进制是4byte,所以一共可以表示20byte. 8080cpu就是20byte的地址.用的这种表示方法. cup是怎么区分指令和数据的 cpu把cs:ip这连个寄存器组成的地址里面的内容当成指令的 运行过程:非常重呀!!!!!!!!!!!!!!!!! 4个8进制是一个字节,2个16进制也是1个字节 CpremierPlus书: 1.字是设计计算机时给定的自然的存储单位.8位机表示一个字是8位,目前64位机表示一个字是64位.而字节是所有计算机都8位. 32位机就是说用32位的数来表示一个整数.也就是正负2^31次幂. 0前缀表示8进制的数,比如020 0x表示16进制的数. intcost=12.99结果是cost=12 floatpi=3.1415926结果是pi是float,只有前6位有精度. 所以定义类型的时候如果不符合会自动强转换成定义的类型,但是精度和数据会变化. 一般而言,根据%s转换说明,scanf()只会读取字符串中的一个单词,而不是一整句。 字符串常量"x"和字符常量'x'不同。区别之一在于'x'是基本类型(char),而"x"是派生类型(char数组);区别之二是"x"实际上由两个字符组成:'x'和空字符\0(见图4.3)。 win10安装redis: 按照这个可以进入. 输入redis-cli.exe 设置键值对setmyKeyabc 取出键值对getmyKey mseta30b20c10 mgetabc rpushmylistA rpushmylistB lpushmylistfirst lrangemylist0-1读取整个列表 rpushmylist12345"foobar" lrangemylist0-1 rpopmylist hmsetuser:1000usernameantirezbirthyear1977verified1建立一个user:1000哈希表 hgetuser:1000username读取哈希表 hincrbyuser:1000birthyear10 saddmyset123 smembersmyset autohotkey鼠标连点的代码:2018-08-11,13点16 $LButton::Loop{GetKeyState,State,LButton,PIf(State="U"){Break}Else{Send{LButton}Sleep50}}Return