自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

爱锻炼的程序员

做一个懂技术有情调的文艺肌肉青年

  • 博客(119)
  • 收藏
  • 关注

原创 闲来无事,造了一个物联IOT平台

大家好,我是Baird~前段时间,我回到自己老家,是一个海边城市。靠海吃海是这边主要生意来源,很多海洋养殖户,养鱼,养虾,养生蚝。。。我家刚好也是养生蚝的海洋养殖有个特点就是对海洋环境比较敏感,比如海水盐度和温度,这些都会影响生物生长,进而影响养殖户能不能卖个好价钱。每年都会听说,谁谁谁的鱼挂了,谁谁家的虾没啦。大家对这个都习惯了,有些人有经验的,会买些检测仪器定时定点去测量看看海水的盐度温度看看有没有问题,更多的人只能祈祷今天风调雨顺,环境一切安好。

2022-08-23 17:43:48 2352

原创 如何使用C实现MQTT+TLS客户端程序(2)--实现MQTT Client

mosquitto_pub&mosquitto_subMQTT服务器订阅发布使用C语言实现MQTT Client代码分析初始化操作加载证书建立TCP连接TLS握手MQTT连接github linkmosquitto_pub&mosquitto_sub在实现MQTT client之前,我们可以先使用mosquitto_pub和...

2018-04-09 17:28:13 11853 6

原创 如何使用C实现MQTT+TLS客户端程序(1)--使用mosquitto搭建MQTT服务器

前言简单介绍MQTT简单介绍TLS搭建MQTT服务器1.配置用户名密码这里需要配置三个字段生成用户名密码生成acl_file文件2.使用openssl 生成服务器证书和客户端证书安装openssl创建CA证书生成服务器证书生成客户端证书完成mosquitto.conf文件运行mosquitto服务器前言这是一个使用C语言实现的MQ...

2018-04-09 15:13:06 17647 2

原创 ssprompt:一个LLM Prompt分发管理工具

自从OpenAI掀起了一轮新的AI革命,国内外众多玩家入场接受时代洗礼,一时间LLM相关技术井喷,而提示工程( prompt engineering )就在其中。它就像是为大语言模型(LLM)设计的"语言游戏"。通过这个"游戏",我们可以更有效地引导 LLM 来处理问题。在真正的通用智能到来前,基于当前的LLM范式,要充分发挥LLM的优势,Prompt设计越来越复杂化,进一步Prompt的代码化,模块化会越发明显,同时写prompt将会成为AI时代人的基本技能。

2023-09-07 10:07:23 823

原创 基于ChatGPT制作的一款英语口语练习应用SpokenAi

本文介绍了一款基于ChatGPT的英语口语练习应用SpokenAi,包括PortAudio的安装流程和核心代码,以及语音合成TextToSpeech的实现。同时提供了配置文件和部署运行示例。

2023-03-29 09:15:38 9887 4

原创 vscode强制退出后终端Python环境变量变成Mac默认解析器

一个奇怪的问题环境: mac os vscode anaconda今天使用vscode,不小心强制退出后.VSCode终端显示错误的python版本和路径,从anaconda启动终端工作完美解决:只要在配置中添加一些东西,terminal.integrated.env.osx,在shell初始化(source bash_profile或zshrc)之后,内容就会被附加到PATH中。在Mojave中,我只需在用户配置中添加以下空条目:"terminal.integrated.env.osx"

2022-04-01 17:27:17 4065

原创 SDWAN-虚拟网卡(最全详解)

一.虚拟网卡介绍虚拟网卡通常称为为tap/tun。tap/tun 是 Linux 内核 2.4.x 版本之后实现的虚拟网络设备,不同于物理网卡靠硬件网卡实现,tap/tun 虚拟网卡完全由软件来实现,功能和硬件实现完全没有差别,它们都属于网络设备,都可以配置 IP,都归 Linux 网络设备管理模块统一管理。二.物理网卡收发包流程1.收包:外界向该物理网卡发送数据包时,外界发送到网卡的数据包最终会传输到内核空间的网络协议栈中2.发包:本机要从物理网卡发送数据包时,数据将从内核的网络协议栈传输到网卡

2021-05-05 22:10:46 5340 1

原创 SDWAN安全--认证、加密和验证的基本原理

一.介绍在网络中,认证、加密、验证这3种技术手段是保证通信双方安全交互的基础。下面我们先介绍一下对称密钥机制、公钥机制(也称非对称密钥机制)和哈希算法,它们是实现认证、加密和验证的理论基础。对称密钥机制指的是通信双方使用相同的算法和密钥去加密和解密数据,在加密和解密过程中用到的密钥是双方都知道的,即双方的“共享密钥”。而公钥机制使用了两个 不同的密钥:一个可对外界公开,称为“公钥”;一个只有所有者知道,称为“私钥”。用公钥加密的信息是能用对应的私钥解密,反之,用私钥加密的信息也只能用相应的公钥解密,即用

2021-04-24 12:51:08 2022 2

原创 linux内核学习--准备环境

一.查找源码由于我用VB装的虚拟机是Centos 8的版本,为方便后续学习,所以就以当前我正在使用的这个版本内核为例。1.先查看当前Centos具体版本号# 查看Centos版本[root@localhost kernel]# cat /etc/redhat-release CentOS Linux release 8.2.2004 (Core) # 查看内核版本号[root@localhost linux-4.18.0-193.14.2.el8.x86_64]# uname -r4.18

2021-04-18 11:55:22 516

原创 HCNP路由交换学习指南(第一章)学习笔记

什么是路由?IP网络最基本的功能就是为处于网络中不同位置的设备之间实现数据互通。为了实现这个功能,网络中的设备需具备将IP报文从员转发到目的地的能力。以路由器为例,当一台路由器收到一个IP报文时,它会在自己的路由表中执行路由查询,寻找匹配该报文的目的IP地址的路由条目,如果找到匹配的路由条目,路由器便按照该条目所指示的出接口及下一跳IP地址转发该报文;如果没有任何路由条目匹配该目的IP地址,则意味着路由器没有相关路由信息可用于指导报文转发,因此该报文将会被丢弃,上述行为就是路由。直连路由路由器能够

2021-01-13 21:45:44 999

原创 如何管好“刺头”技术专家

孙悟空是取经项目团队中的技术骨干,取经之路全靠了他的技术能力降妖除魔,解决问题。但他个性突出,恃才傲物,野性难驯,是个典型的“刺头”员工。面对这样的员工,项目管理者该怎么办呢?1.给出路孙悟空学了一身的本事,以为天下无敌,自诩“齐天大圣”,大闹天宫,结果被佛道两家联手镇压。但毕竟孙悟空的技术还是难得,为避免人才浪费,观音菩萨就给他找了一条出路——保护唐僧去西天取经。这份新工作不仅能让他重获自由,还能发挥他的技能优势。在我们的职场中,对于能力强技能厉害但不服管理的骨干人员,如果不是价值观的根本性问题

2021-01-10 23:03:39 326

原创 SASE (安全架构)

SASE安全架构包括以下几个组件:PoP实例、边缘、安全即服务、威胁检测与响应管理(MDR)。一.PoP实例-流量处理引擎1.PoP结构核心云网络, 由地理上分布的PoPs(Points of Presence)组成,每个PoP运行多个处理服务器。每个PoP运行一个专门构建的软件栈,在所有流量上应用路由、加密、优化和高级安全服务。PoP由运行相同软件栈的多个功能强大的现有服务器(commodity off the shelf servers,COTS)组成。2.PoP的可扩展性和灵活性PoPs的设

2021-01-10 13:21:39 5612 1

原创 SASE(框架和能力)

为云原生构建统一管理的SD-WAN服务提供一个全局的、安全管理的SD-WAN服务。能够从遗留的MPLS(一组单点解决方案和昂贵的托管服务)转移到简单、敏捷和可负担得起的网络。自助服务还是托管服务取决于自己。用云原生网络架构取代传统的电信网络。将全球私有主干网、Edge SD-WAN、安全即服务(SaaS)、安全优化的云和移动访问聚合到一个云服务中。因此,云解决了组织的全球网络、安全、云和移动需求,以支持完整的WAN转换过程。SASE能力核心能力:即插即用可视化,优化与管控SASE体系结构由两个核

2021-01-09 23:07:21 1302

原创 SASE(什么是SASE)

SASE(Secure Access Service Edge),安全访问服务边缘SASE是做什么的?SASE用于从分布式云服务交付聚合的企业网络和安全服务。SASE克服了分散集成和地理位置约束解决方案的成本、复杂性和刚性。当SASE与全球私有骨干网相结合时,还可以解决WAN和云连接方面的挑战。SD-WAN和SASE的区别?SD-WAN是SASE平台的关键组件,它将分支位置和数据中心连接到SASE云服务。SASE扩展了SD-WAN,以解决包括全球范围内的安全性、云计算和移动性在内的整个WAN的转换过

2021-01-08 00:12:27 26577 2

原创 SASE(什么是SD-WAN)

大家访问互联网几乎是每天都在进行,而技术人员对于WAN应该都很了解了。就是广域网(Wide Area Network),或者叫公网、外网也行。世界各地的WAN组成了我们现在的互联网。但是传统WAN的架构设计是以数据中心为核心的集中式网络,所有末端数据最终都要回到核心处理,而后再返回到终端,这样的结构在如今的云计算/IoT环境下已经不再适用,而且也逐渐难以满足大家的需求。因此,SD-WAN出现了。SD-WAN(software define Wide Area Network)即软件定义广域网。思科对S

2021-01-06 22:35:19 883

原创 SDWAN正逢其时

企业广域网现状SDWAN核心能力

2021-01-02 22:43:33 145

原创 Goland IDEA项目多开设置

有两个项目需要一起跑起来调试,不知道如何打开多个,网上搜了下,答案都特别高深,看不懂。解决办法:点apply后再点ok然后再open打开新项目就可以了...

2019-06-23 17:27:27 10071 2

转载 Mac下Jetbrains快捷键

Mac键盘符号和修饰键说明⌘ Command⇧ Shift⌥ Option⌃ Control↩︎ Return/Enter⌫ Delete⌦ 向前删除键(Fn+Delete)↑ 上箭头↓ 下箭头← 左箭头→ 右箭头⇞ Page Up(Fn+↑)⇟ Page Down(Fn+↓)Home Fn + ←End Fn + →⇥ 右制表符(Tab键)⇤ 左制表符(Shif...

2019-03-03 22:05:29 2353 1

原创 迪杰斯特拉算法python实现--有向图

代码如下:# -*- coding: utf-8 -*-MAX_value = 999999def dijkstra(graph, s): # 判断图是否为空,如果为空直接退出 if graph is None: return None dist = [MAX_value] * len(graph) dist[s] = 0 # 记录最终的到...

2018-11-30 16:33:22 2215

转载 nginx 配置https 并解决重定向后https协议变成了http的问题

nginx 配置https 并解决重定向后https协议变成了http的问题配置如下:server {listen 80;server_name localhost; return 301 https://localhost$request_uri; charset UTF-8; location / { root html; ...

2018-11-26 11:57:21 21522 3

转载 Centos7安装mysql的步骤

CentOS7默认数据库是mariadb,配置等用着不习惯,因此决定改成mysql,但是CentOS7的yum源中默认好像是没有mysql的。为了解决这个问题,我们要先下载mysql的repo源。1.下载mysql的repo源$ wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm2.安装mysql-co...

2018-08-26 10:59:00 208

原创 Goland IDE 常用快捷键

文件相关快捷键:CTRL+E,打开最近浏览过的文件。 CTRL+SHIFT+E,打开最近更改的文件。 CTRL+N,可以快速打开struct结构体。 CTRL+SHIFT+N,可以快速打开文件。 代码格式化:CTRL+ALT+T,可以把代码包在一个块内,例如if{…}else{…}。 CTRL+ALT+L,格式化代码。 CTRL+空格,代码提示。 CTRL...

2018-05-30 14:23:21 8373

原创 Python 爬取yahoo天气

一.使用urllib和xml 这两个Python内建库实现from xml.parsers.expat import ParserCreatefrom urllib import requestdef fetch_xmldata(url): req = request.Request(url) req.add_header('User-Agent', ...

2018-05-10 11:05:45 638

原创 Python Struct读取bmp图片信息

一.struct内建模块Python提供了一个struct模块来解决bytes和其他二进制数据类型的转换。struct的pack函数把任意数据类型变成bytes:>>> import struct>>> struct.pack('>I', 10240099)b'\x00\x9c@c'pack的第一个参数是处理指令,’>I’的意...

2018-05-09 16:20:25 4057 2

转载 正则表达式

字符串是编程时涉及到的最多的一种数据结构,对字符串进行操作的需求几乎无处不在。比如判断一个字符串是否是合法的Email地址,虽然可以编程提取@前后的子串,再分别判断是否是单词和域名,但这样做不但麻烦,而且代码难以复用。正则表达式是一种用来匹配字符串的强有力的武器。它的设计思想是用一种描述性的语言来给字符串定义一个规则,凡是符合规则的字符串,我们就认为它“匹配”了,否则,该字符串就是不合法的。...

2018-05-08 17:41:27 135

原创 从烧录程序到设备加载运行

前言    在最近的一个项目中,突然想起以前学习嵌入式系统启动流程,所以借此机会复习一下从烧录程序到设备加载代码运行的过程,加深印象。一.程序的结构一个程序一般分为3段:text段,data段,bss段text段:就是放程序代码的,编译时确定,只读,data段:存放在编译阶段(而非运行时)就能确定的数据,可读可写就是通常所说的静态存储区,赋了初值的全局变量和静态变量存放在这个区域,常量也存放在这个...

2018-03-23 17:00:21 2099 1

原创 LinuxI2C总线驱动

一.概念 I2C总线:1.回顾相关的概念 串行传输: 一个时钟周期传输1bit 并行传输: 一个时钟周期传输多字节 "一个时钟周期":CPU在时钟的高电平或者下降沿将数据发送到数据线上,那么设备在同周期的低电平或者上升沿从数据线上获取数据; 总线:硬件上实实在在存在的总线,总线上可以挂接多个外设,将来CPU通过总线来访问具体的某个外设2.I2C总线概念:两线式串行总线 "两线式":...

2018-02-09 15:16:21 1596

原创 Linux内核platform机制

一.linux内核platform机制1.1.回顾ioremap实现开关灯驱动 需求: 硬件LED的GPIO由GPC0_3,GPC0_4更换为GPF1_4,GPF1_5 通过分析代码可知: 1.一个完整的驱动包括两部分:纯硬件和纯软件 2.之前的驱动如果硬件发生变化,代码几乎重头都要进行检查和修改,增大了驱动开发的工作量,可移植性非常差; 3.如果要优化此问题,内核提出分离思想,把纯软...

2018-02-09 15:10:11 494

原创 Linux内核mmap机制

1. 问:如何将物理地址映射到用户空间的虚拟地址上?2.linux内核mmap机制 2.1.回顾LED驱动数据流的操作过程 通过分析LED驱动,得出以下结论: 如果利用read,write,ioctl三个系统调用函数实现对LED硬件进行操作,这三个系统调用函数操作数据最终要经过两次数据拷贝, 分别是用户空间到内核空间,内核空间到硬件或者硬件到内核,内核到用户; 如果操作访问的数据量比较小,对系统性...

2018-02-09 15:07:11 3001

原创 Linux内核内存分配方法

linux内核内存分配的方法 用户变量:用户空间定义的变量,地址为前3G 内核变量:内核空间定义的变量,地址为后1G1.1 kmalloc / kfree void *kmalloc(size_t size, gfp_t flags) 函数功能: 1.内核空间分配内存; 2.从内核1G的直接内存映射区中分配内存 3.物理地址和虚拟地址都是连续的(...

2018-02-09 14:59:55 1406

原创 Linux内核内存

1.linux内核内存相关内容明确:用户空间占用4G虚拟内存的前3G 虚拟地址范围:0x00000000 ~ 0xBFFFFFFF 内核空间占用4G虚拟内存的后1G 虚拟地址范围:0xC0000000 ~ 0xFFFFFFFF明确: 不论在内核空间还是用户空间,看到的地址都是虚拟地址,只是虚拟地址空间不一样; 但是...

2018-02-09 14:57:16 523

原创 Linux等待队列机制

一.概念1.linux内核等待队列机制1.1.概念明确:等待分为忙等待和休眠等待"等待":期望某个事件发生“事件”:比如按键有操作,串口有数据,网络有数据;明确:阻塞一般是指休眠等待明确:进程的状态1.进程的准备就绪状态TASK_READY;2.进程的运行状态TASK_RUNNING;3.进程的休眠状态不可中断的休眠:TASK_UNINTERRU

2018-02-07 10:06:14 336

原创 Linux内核并发和竞态(3)

一.解决竞态的方法1.中断屏蔽避免竞态方法之中断屏蔽特点:1.能够解决进程与进程的抢占引起的竞态问题2.能够解决中断与进程的抢占引起的竞争问题3.能够解决中断与中断引起的竞态问题4.中断屏蔽保护的临界区不能做休眠操作,并且执行速度要快;长时间的屏蔽中断,会造成跟中断相关的系统机制会失效,严重影响系统的稳定,有可能会造成数据的丢失,甚至会造成操作系统的崩溃。

2018-02-05 17:53:33 252

原创 Linux内核并发和竞态(2)

一.并发和竞态相关的概念并发: 多个执行单元同时发生;执行单元包括进程和中断竞态:多个执行单元对共享资源的同时访问造成的竞争状态形成竞态条件:1.要有多个执行单元2.要有共享资源3.要同时访问共享资源:1.软件上的全局变量属于共享资源2.硬件资源 (寄存器都是共享资源)避免竞态的本质目的:一个执行单元在访问共享资源的时候,其他执行单元禁止访问共享资源

2018-02-05 17:45:41 206

原创 Linux内核并发和竞态(1)

分析案例:要求LED设备同一时刻只能被一个应用软件打开(open)访问操作;实施:  1.不管有多少个应用程序,只要访问LED设备,必须先open,最终都会调用到底层驱动的open函数;只需再底层驱动的open做相关的代码限定即可;static int open_cnt = 1; //全局static int led_open(struct inode *inode,

2018-02-05 17:44:19 207

原创 Linux定时器

1.硬件定时器一.硬件定时器特点:1.一旦上电,硬件定时器周期性的给CPU产生定时器中断信号;2.给CPU产生中断信号的周期和频率可以通过软件来设置;3.对应的linux内核定时器中断处理函数也将会被周期性的被内核调用;此函数由内核已经实现; 4.定时器中断处理函数将会做以下主要工作:1.更新系统的运行时间;2.更新实际时间(wall time);3.检

2018-02-05 17:37:39 1056

原创 Linux内核对中断函数的要求

1.linux内核对中断处理函数的要求明确:CPU资源给进程,软中断,硬件中断使用;明确:在linux系统中,硬件中断的优先级高于软中断,软中断的优先级高于进程;明确:优先级是指某个任务获取CPU资源的能力;明确:在linux系统,硬件中断无优先级;软中断有优先级;进程有优先级;明确:在linux系统,任务分中断和进程中断上下文:中断处理的整个流程,过程;进程上

2018-02-01 16:42:49 1020

原创 Linux中断

前言:一.问:CPU为什么有中断机制? (本质:外设的处理速度要远远慢于CPU的处理速度)明确:计算机系统除了CPU,还有各种外设;明确:外设的处理速度要远远慢于CPU的处理速度;以CPU读取串口为例,假如没有中断机制,CPU为了避免串口数据的丢失,只能采用轮询方式(CPU原地空转),等待串口数据的到来;采用这种方式,CPU只能做一件事情,大大降低了CPU的利用率;

2018-02-01 16:35:34 780

原创 linux驱动开发--一个驱动管理多个设备

一.通过程序流程管理二.通过struct file , struct inode 5.问:struct inode?struct file?如果做到一个驱动程序管理多个硬件设备个体,通过次设备号,共享一个主设备号;答:struct inode{dev_t i_rdev;struct cdev *icdev;...};作用:描述一个文件

2018-02-01 16:17:57 4190 2

原创 Linux内核混杂设备驱动

1.linux内核混杂设备驱动1.1混杂设备驱动特点:本质上还是一类字符设备,在驱动软件上,混杂设备的主设备号已经由内核指定主设备号为10;各个混杂设备个体通过次设备号来区分;1.2linux内核描述混杂设备的数据结构struct miscdevice{int minor;int name;const struct file_operatiions *f

2018-02-01 16:12:54 949

空空如也

空空如也

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

TA关注的人

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