自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(60)
  • 资源 (1)
  • 收藏
  • 关注

原创 一次线程阻塞问题排查

oom异常排查

2022-09-25 22:52:55 1406 1

原创 operator-sdk流程分析

1.初始化logger// use zap logging cli options //set the controller-runtime logger opts := zap.Options{} //add the zap flagset to the operator’s command line flags opts.BindFlags(flag.CommandLine) //定义 监控暴露的端口 flag.StringVar(&metricsAddr, "metrics-.

2022-04-03 15:29:45 1997

原创 宿主机和虚拟机可以ping通telnet不通问题排查

问题描述宿主机win10,虚拟机ubuntu20,可以互相ping通,在虚拟机起了一个数据库进程,端口号26257,从宿主机无法访问,telnet不通wireshark抓包分析后,发现错误提示信息:Destination unreachable (Host administratively prohibited)推断是防火墙问题。宿主机防火墙已经关闭,虚拟机需要关闭防火墙。解决办法关闭防火墙。sudo iptables -P INPUT ACCEPTsudo iptables -P FORWA

2021-07-30 10:28:27 3104 3

原创 linux内核学习(3)-内存管理之虚拟内存管理

1.进程地址空间进程地址空间(Process Address Space) 指进程可以寻址的虚拟地址空间进程没有权限寻址内核空间的虚拟地址,只能通过系统调用间接访问用户空间的进程地址空间称为内存区域(memory area)。进程可以通过内核的内存管理机制动态地添加和删除这些内存区域,采用VMA数据结构来描述内存区域包含如下内容:a).代码段映射b).数据段映射c).用户进程的栈:用户空间的最高地址d)MMAP映射区域:mmap系统调用,如映射一个文件的内容到进程地址空间e).堆映射区域

2020-07-15 18:54:16 214

原创 linux内核学习(3)-内存管理之物理内存管理

1.物理页面物理内存管理的最小单位是页内核中使用struct page数据结构描述一个物理页面,简化后如下struct page{ unsigned long flags; //标志位集合 atomic_t _count; //内核中引用该页面的次数 atomic_t _mapcount; //内核中引用该页面的次数 unsigned long private; struct address_space *mapping pgoff_t index

2020-05-30 15:18:48 604

原创 Linux内核学习(3)-内存管理

1.分页机制虚拟内存通过CPU的硬件单元映射到物理内存中,物理内存也以页为单位进行管理,称为物理页面(Physical Page)或者页帧(Page Frame)。进程虚拟地址空间的页称为虚拟页(Virtual Page)操作系统为了管理这些页帧需要按照物理地址顺序给每个页帧编号,称为页帧号(Page Frame Numeber,PFN)CPU内部负责虚拟页面到物理页面转换的硬件单元称为内存管理单元(Memory Management Unit,MMU)ARM处理器的MMU包括TLB和Table

2020-05-25 16:23:52 222

原创 Linux内核学习(2)-系统调用

1. 概念系统调用是内核空间和用户空间的中间层。有如下作用:为用户空间程序提供一层硬件抽象接口保证系统稳定和安全可移植性2.系统调用表Linux的每一个系统调用都存在一个系统调用号,一旦分配不可更改。对于ARM32定义在arch/arm/include/uapi/asm/unistd.h文件中:/* * This file contains the system call numbers. */#define __NR_restart_syscall

2020-05-15 18:05:20 332

原创 Linux内核学习(1)-常用GNUC技巧

常用GNU C技巧GNU C对ANSI C进行了扩展,所以GCC有一些扩展的新特性(1)语句表达式括号里的复合语句可以看作一个表达式,并可以使用循环和局部变量等。通常用在宏定义中,可以让宏定义更加安全。#define max(a,b) \({int _a = (a), _b = (b); _a > _b ? _a : _b;})(2) typeof可用来获取类型来构造新的类型typeof (*x) y; //声明y是x指针指向的类型(3)零长数组允许使用变长数组<mm

2020-05-11 18:28:48 166

原创 Nginx学习(4)-代理服务

1.正向代理与反向代理区别代理的对象不一样,正向代理客户端,反向代理服务端2.配置语法语法:proxy_pass URL;上下文:location,if in location ,limit_except...

2019-04-04 11:12:52 134

原创 Nginx学习(3)——作为静态web服务

1.静态资源类型即非服务器动态运行生成的文件类型种类浏览器端渲染HTML,css,js图片JPEG,gif,png视频flv,mpeg文件txt等任意下载文件2.静态资源服务场景-CDN名词解释CDN(Content Delivery Network):内容分发网络3.配置语法文件读取:语法:sendfile on|off;de...

2019-04-02 16:37:27 119

原创 Nginx学习(2)——访问控制

访问控制基于IP的访问控制 - http_access_module语法:allow address|CIDR|unix:|all上下文:http,server,location,limit_except语法:deny address|CIDR|unix:|all上下文:http,server,location,limit_exceptlocation ~ ^ /admin.h...

2019-04-02 11:33:31 118

原创 Nginx学习(1)——模块

Nginx模块(1) stub-status编译选项 --with-http_stub_status_module显示Nginx客户端的状态在server和location下配置(2) random index编译选项 --with-http_random_index_modele目录中选择一个随机主页(3)sub_modulehttp内容替换欢迎使用Markdow...

2019-03-26 14:42:48 229

原创 Linux驱动开发(13)——并发与原子操作

并发并发的概念多个执行单元同时、并行被执行。Linux系统是多任务的,很多任务会同时执行。假如有三个执行单元ABC,共享了内存资源。执行单元A对Buffer写1000个“a”;执行单元B对Buffer写1000个“b”;执行单元C从buffer中读取数据。如果按照A写→C读→B写→C读,当然没有问题。但是如果A写→B写→C读,执行单元C就出问题了。当然比这个复杂更多,更加混乱的并发...

2018-11-01 09:40:34 143

原创 Linux嵌入式开发(12)——ioremap控制寄存器

ioremap函数可以实现物理地址到虚拟地址的转化void gpl2_device_init(void){ //物理地址起始地址0x11000100→0x11000108 phys_addr = 0x11000100; //0x11000100是GPL2CON的物理地址 virt_addr =(unsigned long)ioremap(phys_addr,0x10); //指定需要...

2018-10-31 14:57:26 661

原创 Linux驱动开发(11)——GPIO读

static int read_gpio_probe(struct platform_device *pdv){ int ret; printk(KERN_EMERG "\tinitialized\n"); //申请GPIO ret = gpio_request(EXYNOS4_GPC0(3),"SWITCH3"); if(ret &lt; 0){ printk(KERN...

2018-10-31 14:51:09 371

原创 Linux驱动开发(10)——生成字符类设备节点

static struct class *myclass;myclass = class_create(THIS_MODULE,DEVICE_NAME);/*创建设备节点*/device_create(myclass,NULL,MKDEV(numdev_major,numdev_minor+i),NULL,DEVICE_NAME"%d",i);/*释放设备class*/class_des...

2018-10-31 11:46:12 178

原创 Linux驱动开发(9)——注册字符设备

static int scdev_init(void){ int ret = 0,i; dev_t num_dev; printk(KERN_EMERG "numdev_major is %d!\n",numdev_major); printk(KERN_EMERG "numdev_minor is %d!\n",numdev_minor); if(numdev_major...

2018-10-31 11:40:31 166

原创 Linux驱动开发(8)——静态和动态申请字符设备

先贴一段demo#include &amp;lt;linux/init.h&amp;gt;/*包含初始化宏定义的头文件,代码中的module_init和module_exit在此文件中*/#include &amp;lt;linux/module.h&amp;gt;/*包含初始化加载模块的头文件,代码中的MODULE_LICENSE在此头文件中*//*定义module_param module_param_array...

2018-10-26 16:09:18 319

原创 Linux驱动开发(7)——驱动模块传参

头文件在include/linux/moduleparam.h传递单个参数:module_param(name,type,perm)- name:模块参数的名称- type: 模块参数的数据类型(支持int long short uint ulong ushort类型)- perm: 模块参数的访问权限(S_IRUSR参数表示所有文件所有者可读)例如:module_param(modu...

2018-10-26 15:44:17 174

原创 Linux驱动开发(6)——GPIO初始化

gpio-exynos4.c文件的最后一行core_initcall(exynos4_gpiolib_init);core_initcall代表在linux初始化过程中会调用exynos4_gpiolib_init函数中包括chip = exynos4_gpio_common_4bitexynos4_gpio_common_4bit为结构体,如下: .base = (S5P_VA...

2018-10-26 14:52:53 586

原创 Linux驱动开发(5)——生成设备节点

项设备可以说是对一部分字符设备的封装,还有一部分不好归类驱动也归到杂项设备杂项设备初始化部分源文件“drivers/char/ misc.c”,这一部分通过Makefile可知,是强制编译的。杂项设备注册头文件include/linux/miscdevice.h结构体miscdevice以及注册函数struct miscdevice { int minor;//设...

2018-10-18 14:42:33 286

原创 Linux驱动开发(4)——驱动注册

结构体platform_driverstruct platform_driver { int (*probe)(struct platform_device *);//初始化 int (*remove)(struct platform_device *);//移除 void (*shutdown)(struct platform_device *)...

2018-10-16 16:02:50 140

原创 Linux驱动开发(3)——以module方式注册设备

通过 s3c_device_leds_ctl-&gt;*smdk4x12_devices[]-&gt;platform_add_devices()-&gt;platform_device_register()可以直接使用“platform_device_register()”来注册设备#include &lt;linux/init.h&gt;#include &lt;linux/modul...

2018-10-16 15:40:57 283

原创 Linux驱动开发(2)——设备注册

结构体platform_device注册设备使用结构体platform_device,源码路径include/linux/platform_device.hstruct platform_device { const char * name;//设备名称,在sys/devices显示 int id;//设备id,用于插入总线并且...

2018-10-16 14:50:21 142

原创 Linux驱动开发(1)——最简Linux驱动

#include &lt;linux/init.h&gt;#include &lt;linux/module.h&gt;MODULE_LICENSE("Dual BSD/GPL");MODULE_AUTHOR("TOPEET");static int hello_init(void){ printk(KERN_EMERG "HELLO WORLD enter!\n"); retu...

2018-10-16 11:48:37 311

原创 折腾tftp和nfs服务器

关于折腾tftp和nfs传输文件前言tftp传输建立 TFTP 的配置文件搭建NFS服务器在最小局域网搭建tftp和nfs)前言由于没有多余的网线,没有将开发板连接到路由器,直接用网线连接到了笔记本的网口上,折腾了一天半终于调通了,真是费劲tftp传输首先搭建tftp服务器sudo apt-get install xinetdsudo apt-get install tftp t...

2018-09-19 16:05:24 271

原创 Linux串口编程

串口通信是指一次只传送一个数据位。虽然在通信的时候串口有 8 位或者 9 位等,但是在物理层面传输的时候,它仍然是以单个 bit 的方式传输的一般特指 RS232 标准的接口在 linux 下串口编程流程如下: 打开串口核心是用open函数打开串口if((fd = open(uart3,O_RDWR|O_CREAT,0777))&lt;0){ printf...

2018-09-17 14:59:01 135

原创 字符设备控制

main()函数的参数main 函数作为应用程序的入口,在头文件#include&lt;stdio.h&gt;中。main 函数需要传参数的时候完整的定义为int main(int argc,char **argv)参数 argc,表示参数的个数参数**argv,存储输入字符的数组argv[0]表示程序名称argv[1]——argv[n]输入的参数Led灯Led 灯...

2018-09-17 14:41:21 123

原创 Linux文件IO操作

Linux文件IO操作包括打开(open),创建(create),读(read),写(write)打开openint open(const char *path, int oflags);int open(const char *path, int oflags,mode_t mode); 参数path表示:路径名或者文件名。路径名为绝对路径名。参数oflags表示:打开文件所...

2018-09-13 15:54:12 574

原创 javascript学习笔记(2)

认识DOM文档对象模型DOM(Document Object Model)定义访问和处理HTML文档的标准方法。DOM 将HTML文档呈现为带有元素、属性和文本的树结构(节点树) HTML文档可以说由节点构成的集合,三种常见的DOM节点:元素节点:<html>、<body>、<p>等都是元素节点,即标签。文本节点:向用户展示的内容,如<li>...</li>中的JavaScript、DOM、C

2016-11-25 17:24:40 220

原创 Javascript学习笔记(1)

插入JS代码 放在<script></script>之间,<scrtipt type="text/javascript">表示插入的是文本类型。javascript代码可以写在.js文件当中,通过<script src="script.js"></script>嵌入Html。JavaScript代码可以放在html文件中任何位置,但是我们一般放在网页的head或者body部分。进行页面显示初始

2016-11-18 17:38:31 331

原创 Html学习笔记(4)-表单

表单标签<form>实现与用户交互 1.1. 语法 <form method="传送方式" action="服务器文件"> 1.2. 讲解         action表示浏览者输入的数据被传送到的地方,比如一个PHP页面         method表示数据传送方式(get/post)文本输入框与密码输入框 2.1 语法<form> <input type="tex

2016-11-17 10:10:05 221

原创 Html学习笔记(3)

认识标签<a>标签链接到另一个页面,语法:<a href="目标网址" title="鼠标滑过显示的文本">链接显示的文本</a>只要为文本加入a标签后,文字的颜色就会自动变为蓝色(被点击过的文本颜色为紫色),通过CSS可以进行设置。<a>标签在默认情况下,链接的网页在当前窗口中打开,如<a href="目标网址" target="_blank">click here!</a>使用<a

2016-11-16 10:17:29 228

原创 Html学习笔记(2)

了解标签<em>表示强调,在浏览器中以斜体显示;<strong>比<em>语气更强,以粗体显示;<span>没有意义,目的是为了单独设置样式,例如 <span style="color:blue">美国梦</span>,设置美国梦的字体颜色为蓝色;<q>表示短引用,浏览器自动对引用的文本加双引号<blockquote>表示长引用,浏览器对引用文本采取缩进样式;<br/>标签分行显示文本

2016-11-15 17:46:00 280

原创 Html基础学习笔记(1)

一个HTML文件是有自己固定的结构> … … 讲解1 为根标签,所有内容都包裹在内2 定义头部,是头部元素的容器。头部元素标签有,标签的作用文档的头部描述了文档的各种属性和信息,包括文档的标题等。绝大多数文档头部包含的数据都不会真正作为内容显示给读者。 …

2016-11-14 16:08:06 239

原创 配置MySQL时,遇到的一些问题和解决方法

Q1.配置好路径和环境变量以后,准备安装mysql,但是显示MySQL服务无法启动A:网上查了好多解决办法,最后解决办法是需要初始化,操作步骤为:mysql -removemysql -installmysql -initializeQ2.正常启动mysql后,输入mysql -uroot -p,出现password提示,没设置过密码所以直接回车,提示mysql ERROR 1

2016-09-08 17:12:34 353

转载 为什么要用单例模式而不是静态方法

我们在编程中最常用的模式就是单例模式了,然而单例模式都用在什么场合?为什么不用静态方法而要用单例模式呢?要搞清这些问题,需要从静态方法和非静态方法的区别和联系说起。 一、静态方法常驻内存,非静态方法只有使用的时候才分配内存? 一般都认为是这样,并且怕静态方法占用过多内存而建议使用非静态方法,其实这个理解是错误的。为什么会这样,先从内存分配开始说起:托

2016-08-19 00:16:42 7044

原创 用Java翻转一个英文句子

将一个句子翻转,例如I love you.翻转过后为 you. love Ipublic String reverse(String s){ int pos=0; StringBuilder sb=new StringBuilder(); for(int i=0;i<s.length;i++){ char c=s.charAt(i); if(c==' '){ pos=0

2016-08-17 00:40:50 2532

转载 contentprovider的作用

Android 应用程序能够将它们的数据保存到文件、SQLite 数据库中,甚至是任何有效的设备中。当你想将你的应用数据与其它的应用共享时,内容提供器就可以发挥作用了。因为内容提供器类实现了一组标准的方法,从而 能够让其它的应用保存或读取此内容提供器处理的各种数据类型。数据是应用的核心。在Android 中,默认使用鼎鼎大名的SQLite 作为系统DB。但是在Android 中,使用方法有点小小的

2016-06-30 03:08:10 1426

原创 链表的基本操

class Link{ public int iData; public Link next; public Link(int data){ iData=data; } public void display(){ System.out.print(iData+" "); }} class LinkList{ private Link

2016-06-20 04:55:58 320

pdfbox源代码

操作pdf文档的第三方jar包源代码,example下demo丰富!!

2018-01-15

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除