- 博客(126)
- 资源 (17)
- 收藏
- 关注
原创 计算机体系结构之cache
cache电路 cache模型 cache算法 与cache相关的系统调用0x00 cache简介高速缓存(cache)是CPU内部用来加快数据访问的缓存技术。高速缓存属于SRAM,主存储器属于DRAM,一般而言主存储器一般称内存,后续我们使用内存称呼主存储器。对于计算机程序而言,cache的存在是透明的,其含义就是在程序中可能找不到与cache相关的代码,但是对于带有cache...
2018-10-07 01:39:51 4501
原创 man命令使用
0x00 前言       最近发现CSDN博客编辑器有大改变,想想好久没有写博客了,正好结合最近的面试学到的东西尝试一下新的编辑器。最近去面试redhat的内核测试岗,学到了很多linux系统命令的使用,让我感到我的linux系统使用还不算很熟练,好多命令的强大功能,我基本没有察觉到,尤其是man命令,最近又对它做了一个简单的调研,发现了一些“新大陆”,...
2018-09-23 19:26:32 830
原创 一个由dynamic_cast导致的问题
0x00 dynamic_cast<>简介将指向基类的指针或者引用转换成指向这个基类派生类的指针或者引用,转换成功将会得到派生类的指针或者引用,如果失败,将会返回一个null。用法如下:dynamic_cast<type *>(msg)dynamic_cast<type &>(msg)0x01 问题描述 一个类成员函数中使用if-e...
2018-08-26 16:23:39 1092 1
原创 grep命令
0x00 前言&nbsp; &nbsp; &nbsp; &nbsp;前几天微博推送关于grep原作者Mike Haertel的采访视频,突然觉得grep是一个很强大的工具,以前在使用Ubuntu的工程中,一直使用find,但是我最近在使用grep中,发现借助–help选项并不能很好的驾驭这个工具,我一直可以通过原命令提供Usage来学习某一个命令总是一项必要的能力,尤其在linux系统下编程,...
2018-08-25 23:39:03 460
原创 函数指针void(*(*f[n])())()
0x00 函数指针 函数指针和指针函数对于大多数使用C语言的程序员来说都是容易搞混的两个概念,相似的术语还有结构体指针和指针结构体、指针数组和数组指针等等,其他的类型都可以和指针结合起来。 为了更好的理解函数指针的使用方法和本质,本文打算从汇编的数据访问方式说起,从一个简单的、普通的函数...
2018-07-30 17:18:46 1955
原创 粒子群优化算法
0x00 什么是粒子群优化算法粒子群优化算法提出与1995年,由Eberhart博士和kennedy博士1提出。该算法来源于受鸟群活动规律启发,通过观察动物活动规律,建立在动物活动信息共享的前提下,将实际求最优解问题转换成粒子群模型求解。 &amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;
2018-06-28 20:59:28 1181
原创 error LNK1120 and LNK2019:该符号在函数main中被引用
0x00 开篇&nbsp; &nbsp; &nbsp; &nbsp;昨天,本来是一个好日子的,然后我默默的随便拿出一本C++书随便练练语法写写代码的,找到一行关于C++内函数指针的例子,其功能就是将一个函数的地址作为地址传给另一个函数,以指针的形式在另一个函数章调用,然后写完了,出现了传说中的error LNK2019,但是就是那个一个不到三十行的代码,让我找bug找了一个多小时,今天早上才找...
2018-05-21 16:35:54 3616 1
原创 OMNeT++仿真软件笔记
0x00 Hello&amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;nbsp; &amp;amp;amp;amp;amp;nbsp;最近一直忙着赶实验室的项目,一个基于OMNeT++的仿真程序,从去年开始使用这个仿真软件,哎,我只想说这是我用过的最不好用的软件,这软件仿真就仿真吧,按常规,仿真程序一般都是拖拖元件,连连线就开始RUN,没想到
2018-05-12 15:37:25 12216 5
原创 vector的使用
0x00 简介C++中,vector变量类型是可以容纳多种数据类型的变量,头文件是vector。在使用过程中,可以直接通过成员函数向容器中加入元素,其访问方式既可以和数组的访问一样,同时也可以通过迭代器(iterator)进行访问,这种变量的存在的确节约了大量的编码时间,作者在这里总结一下C++中vector的使用技巧。0x01 vector的初始化一般使用...
2018-04-30 01:37:33 582
转载 每个程序员都应该了解的 CPU 高速缓存
[编者按:这是Ulrich Drepper写“程序员都该知道存储器”的第二部。那些没有读过第一部 的读者可能希望从这一部开始。这本书写的非常好,并且感谢Ulrich授权我们出版。 一点说明:书籍出版时可能会有一些印刷错误,如果你发现,并且想让它在后续的出版中更正,请将意见发邮件到lwn@lwn.net ,我们一定会更正,并反馈给Ulrich的文档副本,别的读者就不会受到这些困扰。] ...
2018-03-03 23:24:17 1465
转载 关于CPU Cache -- 程序猿需要知道的那些事
原文作者:卢钧轶(cenalulu)原文地址:http://cenalulu.github.io/linux/all-about-cpu-cache/本文将介绍一些作为程序猿或者IT从业者应该知道的CPU Cache相关的知识,先来看一张本文所有概念的一个思维导图:为什么要有CPU Cache随着工艺的提升最近几十年CPU的频率不断提升,而受制于制造工艺和成本限制,目前...
2018-03-03 22:45:54 1129
原创 每一个程序员都会经历的“烫烫烫”
0x00 说明“烫”这个汉字在计算机程序执行出错时老是出现,特别有意思,尤其在Windows环境下执行越界访问的程序,会打印出一串“烫烫烫…”,作者以前在VS下写程序的时候就出现过一直打印“烫”,当时没有去仔细研究研究为什么是“烫”这个汉字,现在特把这个原因说明。0x01 “烫”的GBK编码首先,不得不提到“烫”的GBK编码为“0xCCCC”,同时在x86系统中“0xCC”代表...
2018-02-26 00:39:33 12245 2
原创 ubuntu16.04常用软件安装
一. 传统的菜单添加仓库sudo apt-add-repository ppa:diesch/testing 更新并安装sudo apt-get update &amp;amp;&amp;amp; sudo apt-get install classicmenu-indicator二. 安装搜狗输入法官网下载deb包搜狗输入法Linux版下载deb包安装...
2018-02-19 22:30:47 536
原创 gdb+qemu联合调试linux-4.15
说明以前使用过eclipse调试过内核,最近又想用gdb调试内核,还是比较习惯使用命令操作,但是在搭建调试内核的gdb和qemu过程中,遇到一个问题,想了很多办法,最后直接感觉到官方下载最新的gdb和qemu源码安装,以为调试内核设置断点不成功是因为使用apt安装的gdb和qemu比较旧,安装新的gdb和qemu后,还是断点没起作用,折腾了还几天,终于找到原因了。下面是作者的环境:ubu
2018-01-30 16:21:50 1757
原创 安装qemu仿真器
说明作者直接使用apt install qemu安装方式,安装后的qemu不支持仿真,同时且版本不是太新,因此想直接从官方下载qemu源码安装,在这里记录相关操作,分析踩的坑。系统:ubuntu16.04qemu-2.11安装步骤阅读下载源代码目录下README 简单一点,一般在ubuntu下安装习惯就是先简单看一下目录下是否有readme文本,一般里边有简单的安装方
2018-01-27 02:50:57 725
原创 systemtap安装手册
说明systemtap是内核调试的一个利器,但是与其他内核调试工具相比,这款调试工具有自己的语法要求,相当于一个makefile一样。本文在阅读多篇博客后,折腾多时,成功出现“hello world”,在这里总结systemtap的安装心得。下面是我的安装环境:ubuntu16.04调试内核linux-4.15(此时最新的)systemtap安装方式一:sudo apt
2018-01-20 01:39:22 819
原创 ubuntu16.04下opengrok安装
系统环境ubuntu16.04安装步骤安装exuberant-ctags tomcat8 sudo apt-get install exuberant-ctags tomcat8 sudo /etc/init.d/tomcat8 restart测试是否安装成功 在浏览器输入http://localhost:8080/看到: 下载opengrok
2018-01-12 11:14:10 1636
原创 内核--b43驱动问题
问题在我的macbookpro8.1上,使用ubuntu16上的b43驱动成功实现连接wifi信号,但是编译新的linux4.15内核并在内核配置里边加了bcm4331的驱动,还是出现问题,只有wifi标识,没有wifi信号(似乎就是不能搜索wifi)。ubuntu16自带的内核说明 使用安装ubuntu16.04自己的内核4.10,可正常上网,但是编译新版本内核4.15,无法
2017-12-31 12:58:40 1502 2
原创 strace与gdb调试方法
linux下调试技巧这几天一直在找关于介绍linux下调试工具与调试方法的书,然后找到了《hack and debug》,这本书介绍特别多的工具对linux程序进行调试。对于驱动开发特别有用,最开始作者一直认为驱动调试与应用程序调试不一样,但是研究研究strace和gdb联合调试后,发现如果驱动程序出现Bug,调试它的测试程序时,会找到这个有bug的驱动接口。 当然这本书写作时间比较早,linux
2017-12-27 09:48:34 1644
原创 Git常用命令
总结常用的Git指令对于管理软件,使用git和github感觉就是不一样,不在担心换系统,或者找不到项目文件,尤其是一些长期的项目,通过使用git和github联合管理,压根就不在考虑代码存什么地方的。什么时候有了新的想法,更改提交一波就完事。下面是我常用的指令git add .git commit -m “xxxxx”git pushgit branch xxxgit checkout
2017-11-25 02:38:53 398
原创 Bochs调试内核
前言: 多少操作系统爱好者在自制操作系统过程中,参考例如《30自制操作系统》或者《一个Oranges操作系统的设计与实现》,又或者参考linux-0.1.1编写一个简单的内核时,一定要使用bochs的调试功能,其调试指令与gdb差不多。例如我三次尝试参考上面的书探索一下操作系统的实现过程,基本总是抄写书上的代码,一旦自己写几句汇编代码,就出bug了,然后然后就是把书上的代码看懂了,
2017-11-19 21:42:29 774 1
原创 C语言中#、##和do{}while(0)的高效用法
#的作用: 在宏定义前面都有一个#,例如#define、#if、#elif等等,看见这个,对#对认识还不够深刻,#符号后边单词被转化为字符串,例如:#define str(x) #x当使用str(abc)的的时候,str(abc)就相当于"abc"。##的作用:
2017-11-04 22:40:35 612
原创 C语言-实参到函数形参传递的理解
问题在C语言函数参数设置过程中,有些时候总是不能达到预期的效果。书上总是对这个C语言参数传递描述:传值方式、传到调用函数的是副本,然后就是常规的swap函数说明这个问题,但是还是不能以swap描述所有的问题,看了这个例子总是给人一种感觉:考虑到要在函数内部改变数据,在调用函数里边也真正改变了数据就用指针,这个感觉还是有漏洞,需要完善一下这个规则。C语言参数传递:传值方式有传值方式,还有
2017-10-14 12:08:11 1753
原创 KMP算法
KMP算法:在模式匹配中,C语言string.h里边有函数strstr(string,pat),其功能就是找到在string字符串里边与字符串pat匹配的,并返回开始匹配的字符在string字符串里边的下端,找不到返回-1。KMP算法是这种功能的更优的算法。KMP算法原理:如何计算失配函数:在string里寻找pat时,中间需要一个步骤:失配函数fail,这个函数需要根据pat字符
2017-10-11 19:32:40 497
原创 第五篇:卷积神经网络学习
简介:卷积神经网络,初学者最开始就是从这六个字理解,对卷积神经网络学习了快一个月了,从最开始只知道这六个字,到理解为什么叫卷积神经网络,然后具体又做了使用了tensorflow练习关于mnist和CIFAR10数据集的卷积神经网络,啊啊,最开始练习这些代码,只能从代码上理解到底干了什么,对卷积神经网络的思想还是不明白,云里雾里,前不久刚刚想懂里边的套路。卷积神经网络:这一段,就开始理解
2017-10-01 00:32:18 4295
原创 第四篇:对cifar-10数据集的读取
介绍:cifar-10数据集包括50000张训练用的32x32x3的图片和10000张最后测试用的测试集,包括data_batch_1、data_batch_2、data_batch_3、data_batch_4、data_batch_5等,这里展示一个简单的函数读取这个五个batch[10000,3,32,32],然后将五个张量整合到一个矩阵里边[50000,3,32,32]。测试程序:
2017-09-26 21:08:44 7419 4
原创 第三篇:显示cifar-10中的图片
问题因为在学习使用cifar-10的过程中,一直对着矩阵进行操作,不知道具体的图片是什么样的需要将三个32x32的矩阵转化为32x32x3矩阵因为最后会使用plt.imshow这个函数显示图片,imshow的参数需要是(n,m)or (n,m,3) or (n,m,4)的矩阵具体参考代码:# --coding:utf-8 --import tensorflow as tfi
2017-09-19 19:45:49 7318 4
原创 第二篇 对tf.reduce_sum的理解
这个函数一般使用如下:import tensorflow as tfx = tf.constant([[1,1,1],[2,2,2]])y1 = tf.reduce_sum(x,0)y2 = tf.reduce_sum(x,1)y3 = tf.reduce_sum(x,1,keep_dims=True) 从函数名字上理解,相当于一种减少维度的计算函数。那么上面这个函
2017-09-13 23:04:03 1306
原创 第一篇:tensorflow入门
一、计算图1、实现const + const用图形表示如下:其表示两个常量相加,与后边的placeholder相比,placeholder更加灵活:先贴出这种常量的代码:import tensorflow as tfnode1 = tf.constant(1.0,dtype=float32)node2 = tf.constant(2.0)add_two_node
2017-09-07 22:24:08 458
转载 vim命令
vi与vimvi编辑器是所有Unix及Linux系统下标准的编辑器,他就相当于windows系统中的记事本一样,它的强大不逊色于任何最新的文本编辑器。他是我们使用Linux系统不能缺少的工具。由于对Unix及Linux系统的任何版本,vi编辑器是完全相同的,学会它后,您将在Linux的世界里畅行无阻。vim 具有程序编辑的能力,可以以字体颜色辨别语法的正确性,方便程序设计;因为程序简单
2017-08-26 00:35:48 572
原创 第二篇 自制系统内核
为了学习一个操作系统里边具体的功能设计和思想,也参考的自制内核系列书籍:《30天~~~》和《orange一个操作系统的设计》还有网上等开源的内核,自制了一个简单的操作系统。 最开始从《30天自制操作系统》位主要参考书籍,但是到后面发现换到ubuntu系统下,想用nasm和gcc代替,做了大量的修改,最后还是觉的以《30天~~~》作为主要参考不好,选择以hurlex的文档作为参考比较
2017-08-23 22:40:32 880
原创 第一篇 自制内核的环境、汇编器、编译器选择
一、自制内核环境的选择在windows下自制操作系统,可参考《30天自制操作系统》,怎么评价这本书呢,1.汇编器、编译器是作者自制,有很多不透明的地方2.系统引导用了一些与其他系统不同的方法,比如从汇编跳转到C语言执行 当然,自制操作系统有很多方法也可以参考这本书,但是在ubuntu等linux操作系统下,使用这本书需要修改很多地方,劳力伤身,不可取。推荐...
2017-08-19 23:17:58 1927
原创 我的.vimrc备份
环境:ubuntu16第一:vim下使用Vundle管理vim插件:+++++++++Vundle使用链接How To Use Vundle to Manage Vim Plugins on a Linux VPS,下面是大致方法:安装vim很简单,直接使用sudo apt-get install vim即可,安装好vim以后,在~下有一个用户目录,使用CTRL+H可以看见一些以.开头
2017-08-15 16:43:23 530
原创 QT学习篇(三)总结界面设计相关类
一、问题:这几天开始学习使用QT设计一款简单的代码编辑器,目的主要是学习一些类的使用,然后逐渐完善编辑器的功能,但是模仿其他编辑器的时候,总是不知道同样的窗口或者功能该用什么类,想了想该知道些软件设计的常识,对于初学者来说,利用已知的一些软件界面选项来说明QT里边对应的相同功能或者相似的类的使用是一个不错的方法。二、编辑器1、参考一个尚未完成的编辑器界面上面是一个基本窗
2017-08-03 20:43:36 1973
原创 QT学习篇(二) 使用QPixmap显示一张图片
QT版本:5.9环境:ubuntu16代码如下:/* * 使用QLabel在一个窗口显示图片 */#include #include #include int main(int argc, char *argv[]){ QApplication a(argc, argv); QMainWindow *mainwindow = new QMain
2017-08-01 09:32:38 7425
原创 对C++保护成员的思考
这几天又考虑将QT好好学一下,由于C++学过,但很少用,对里边的好多理论忘记了不少。学习网上一个关于事件类型和处理的QT例子,对里边自定义的类继承QLabel类,并在自定义的类EventLabel里使用了QLabel的保护成员函数,代码如下:#include #include #include #include //声明了一个EventLabel类//mouseMoveEven
2017-07-31 18:30:12 730
原创 QT学习篇(一) 添加动作
qt版本:5.9一、代码总共三个文件:main.cpp、mainwindow.cpp、mainwindow.hmain.cpp#include "mainwindow.h"#include int main(int argc, char *argv[]){ QApplication app(argc, argv); MainWindow win;
2017-07-30 18:00:12 1124
原创 ubuntu下qt-creator不支持写中文注释
1.问题描述:在ubuntu16下使用搜狗输入法,在qt-creator下无法使用shift键切换输入法写中文注释。2.解决方法>>>寻找fcitx-frontend-qt5的安装目录,在终端输入:dpkg -L fcitx-frontend-qt5我的结果是:/./usr/usr/lib/usr/lib/x86_64-linux-gnu/usr/lib/x86
2017-07-30 10:03:12 2920 2
原创 ubuntu16搭建qt5.9环境
一、安装QT51.下载qt5.9https://www.qt.io/download-open-source/#section-2这个网站包括qt各版本下载2.如何安装?二、安装qt-creator1.下载qt-creator与上面下载地址一样2.安装>>>加权限:chmod +x qt-creator*>>>执行:./qt-creator*
2017-07-30 08:50:43 1674
原创 解决Smartgit中始终出现Please make sure you have the correct access rights问题
环境:ubuntu16.04问题描述:使用SmartGit开始没有什么问题,但是由于好几天没有打开电脑(不知道是不是有更新或者系统bug)导致SmartGit中pull或者push都出现Please make sure you have the correct access rights......如何解决:不知道具体原因,将Edit>>Preferences中Commands>>
2017-07-28 22:16:48 3518
点阵液晶取模
2016-04-15
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人