- STM32中的计时与延时
lupinjia
STM32stm32单片机
前言在裸机开发中,延时作为一种规定循环周期的方式经常被使用,其中尤以HAL库官方提供的HAL_Delay为甚。刚入门的小白可能会觉得既然有官方提供的延时函数,而且精度也还挺好,为什么不用呢?实际上HAL_Delay中有不少坑,而这些也只是HAL库中无数坑的其中一些。想从坑里跳出来还是得加强外设原理的学习和理解,切不可只依赖HAL库。除了延时之外,我们在开发中有时也会想要确定某段程序的耗时,这就需要
- 51单片机:P3.3口输入/P 1口输出实验
li星野
单片机
51单片机:P3.3口输入/P1口输出实验一、实验内容1P3.3口做输入口,外接一脉冲,每输入一个脉冲,P1口按十六进制除2(乘2)。2.P1口做输出口,P1口接的8个发光二极管L1—L8按十六进制除2(乘2)方式点亮。二、仿真图三、代码实现C语言实现:#include#includesbitKEY=P3^3;voiddelay10ms(void);voidmain(){charnum=0xfe;
- Android 用线程池实现一个简单的任务队列(Kotlin)
深海呐
Android#Android进阶#Kotlinandroidkotlin线程池延时任务队列线程池延时任务
关于线程池,Kotlin和java的使用方式一样在Android中,很多人喜欢用Handler的postDelayed()去实现延时任务.要使用postDelayed(),去实现延时任务队列,就不可避免要使用递归.但是这样做,代码的简洁性,和书写的简易,就远不如使用线程池.使用线程池的简单程度:privatevalmThreadPool=Executors.newSingleThreadSched
- 三点or多点的变换矩阵求解opencv & eigen
合工大机器人实验室
C++矩阵opencv线性代数
《Estimating3-DRigidBodyTransformations:AComparisonofFourMajorAlgorithms》,它使用SVD方法计算T和t。只要算出变换矩阵,就可以算出A坐标系的一个点P在坐标系B里的对应点坐标,即R为3x3的转换矩阵,t为3x1的位移变换向量,这里点坐标均为3x1的列向量(非齐次形式,齐次形式下为4x1列向量,多出的一个元素值补1而已)。理论上只
- 51单片机-AT24C02-实验2-秒表实验(可参考上一节)
Whappy001
51单片机嵌入式硬件单片机
利用定时器去对按键和数码管进行扫描(Whappy)main.c#include#include"LCD1602.h"#include"AT24C02.h"#include"Delay.h"#include"Timer0.h"#include"Nixie.h"#include"Key.h"unsignedcharKeyNum;unsignedcharMin,Sec,MiniSec;unsignedc
- vscode .vue文件 格式化配置
yangdongnan
编辑器前端
{"files.autoSave":"afterDelay","editor.renderControlCharacters":true,"workbench.iconTheme":"material-icon-theme","window.zoomLevel":0,"[html]":{"editor.defaultFormatter":"HookyQR.beautify"},"[javascri
- Redis实现延迟任务的操作流程
奔向理想的星辰大海
大数据架构redis数据库缓存
延迟任务(DelayedTask)是指在未来的某个时间点,执行相应的任务。也就是说,延迟任务是一种计划任务,它被安排在特定的时间后执行,而不是立即执行。延迟任务的常见使用场景有以下几个:定时发送通知或消息:发送定时短信、邮件或应用内消息,如注册确认、订单状态更新、促销活动通知等。定时推送新闻、天气预报、股票价格等实时信息。异步处理和后台任务:将耗时的操作安排为延迟任务,避免阻塞主线程或用户界面,提
- css3动画延迟运行 animation-delay
努力,加油,奋斗
笔记
1.语法animation:namedurationtiming-functiondelayiteration-countdirectionfill-modeplay-state;2.说明name指定要绑定到选择器的关键帧的名称duration动画指定需要多少秒或毫秒完成timing-function设置动画将如何完成一个周期delay设置动画在启动前的延迟间隔。iteration-count定义
- FPGA时序分析
远行者223
FPGAleariningfpga开发
FPGA时序分析1.1亚稳态FPGA中亚稳态【Tsu建立时间】【Th保持时间】【Tmet决断时间】【recovery恢复时间】【removal移除时间】1.2跨时钟域分析CDC跨时钟域处理及相应的时序约束【set_clock_groups】【set_max_delay】1.3全局复位Xilinx全局复位要点1.4数制与进制原码、反码、补码补码对于有符号负数是先取反再加一,勿弄反典型例题展示
- RTOS笔记--任务状态与调度
HUOHUAAARSGJKD
笔记
任务状态freertos中的任务分为四个状态:就绪状态(ready)、运行状态(running)、阻塞状态(blocked)、暂停状态(suspended)完整的任务状态转换图:在使用vTaskDelay函数后任务就会转换为阻塞态,阻塞态下需要等待某个时间或某个事件才可以进入准备态随时被调用。任务在除了暂停状态以外的任何状态都可以通过调用vTaskSuspend函数使得任务进入暂停状态,任务在运行
- python之异步任务
小鱼爱吃火锅
Pythonpython
在Python中,异步任务通常通过使用库如Celery来实现。Celery是一个简单、灵活且可靠的分布式系统,用于处理大量消息,同时提供操作控制。在Celery中,delay和apply_async是两种常用的方法来调度异步任务。delay方法delay是Celery提供的一个快捷方法,用于简化任务的调用。它会自动将任务标记为异步执行。fromceleryimportCeleryapp=Celer
- LeetCode题解:Word Ladder
CheeRok
LeetCodeLeetCode全题解leetcode
Giventwowords(beginWordandendWord),andadictionary’swordlist,findthelengthofshortesttransformationsequencefrombeginWordtoendWord,suchthat:OnlyonelettercanbechangedatatimeEachintermediatewordmustexistin
- 2024/9/7 英语每日一段
何事驚慌
笔记
PromisingfreedomtoBlackmenandwomenonlyafteraperiodoftimealsopermittedenslaverstosneakinstipulationsthatledtofurtherdelays.FitchHallsignedanagreementin1794tofreeawomannamedMaryandheryoungdaughteraftert
- stm32运行到delay停住不再继续运行
余~意
问题解决stm32单片机嵌入式硬件
在调试stm32的代码的时候运行到delay处停住。问题描述:在delay之前向串口打印可以,但是在delay之后向串口打印发现无任何现象或者在调试的时候运行到delay处停住解决方法主函数中没有对延时函数进行初始化
- STM32点灯-关于GPIO_Init问题
WfDal
stm32嵌入式硬件单片机
#include"stm32f10x.h"//Deviceheader//#include"Delay.h"intmain(void){//1.UseRCCtostarttheGPIO'sCLKRCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//2.UseGPIO_inittoinitialtheGPIOGPIO_InitTypeDefGPI
- 2020-03-04日常
时_飞
案例一.box{width:100px;height:100px;background:#f00;margin:0auto;/*animation-name:move;animation-duration:5s;animation-delay:1s;animation-timing-function:linear;animation-iteration-count:infinite;*//*ani
- flink---window
搞数据的小杰
flink大数据
Window介绍DataStream:https://nightlies.apache.org/flink/flink-docs-release-1.17/zh/docs/dev/datastream/operators/windows/SQL:https://nightlies.apache.org/flink/flink-docs-release-1.17/zh/docs/dev/table/
- Rust 操作符及示例
gqkmiss
rustrust开发语言后端rust操作符操作符
Rust操作符Rust提供了一系列操作符(operators),每种操作符都有特定的功能和应用场景。1.算术操作符这些操作符用于基本的数学运算:+:加法,用于两个数相加。示例:letsum=5+10;-:减法,用于两个数相减。示例:letdifference=10-5;*:乘法,用于两个数相乘。示例:letproduct=4*3;/:除法,用于两个数相除。示例:letquotient=10/2;%
- Python写UI自动化--playwright(点击操作)
电商人学python
playwright开发语言pythonuipytest
本篇介绍playwright点击操作,click()方法的常用参数目录0.selector(必需)1.modifiers(可选)2.position(可选)3.button(可选)4.click_count(可选)5.delay6.timeout(可选)7.force=True(可选)8.trial=True(可选)9.no_wait_after(可选)注意事项0.selector(必需)类型:s
- Kafka,构建TB级异步消息系统
Fern977
牛客论坛学习笔记kafkajava分布式
1.阻塞队列BlockingQueue解决线程通信的问题阻塞方法:put、take。生产者消费者模式生产者:产生数据的线程消费者:使用数据的线程实现类ArrayBlockingQueueLinkedBlockingQueuePriorityBlockingQueue、SynchronousQueue、DelayQueue等2.Kafka入门Kafka简介Kafka是一个分布式的流媒体平台应用:消息
- 仿论坛项目--Kafka,构建TB级异步消息系统
HUT_Tyne265
kafka分布式
阻塞队列•BlockingQueue解决线程通信的问题。阻塞方法:put、take。•生产者消费者模式生产者:产生数据的线程。消费者:使用数据的线程。•实现类ArrayBlockingQueueLinkedBlockingQueuePriorityBlockingQueue、SynchronousQueue、DelayQueue等。Kafka入门•Kafka简介Kafka是一个分布式的流媒体平台。
- 基于stm32f407的ch451l矩阵键盘控制源码(4*4,16个按键的矩阵键盘实际应用)
电赛张小七
stm32矩阵计算机外设
ch451l.c#include"ch451l.h"#include"sys.h"#include"delay.h"#include"usart.h"QuestionMy={0,//Q_Start;0,//My.Mode0,};intkey_num=20;voidch451_write(u16command){u8i;load_0;for(i=0;i>=1;}load_1;//¼ÓÔؽøÈ¥}v
- 【STM32项目设计】STM32F411健康助手--MPU6050陀螺仪驱动(6)
嵌入式crafter
STM32F4健康助手stm32嵌入式硬件单片机
硬件设计软件设计此项目使用的是软件I2C,MPU6050的SCL连接到STM32的PB10,SDA连接到STM32的PB9mpuiic.c#include"mpuiic.h"#include"delay.h"//MPUIIC延时函数voidMPU_IIC_Delay(void){delay_us(2);}//初始化IICvoidMPU_IIC_Init(void){GPIO_InitTypeDef
- ISP(图像信号处理器)是什么?
FoGoiN
嵌入式硬件单片机物联网
由于刚接触到开发版,认识到了图像处理器(imageprocessor),又名imageprocessingengine,imageprocessingunit(IPU),imagesignalprocessor(ISP)。和电脑的GPU类似,通常采并行计算。功能:Bayertransformation图像传感器(就是光电转换器)中的光电二极管(吸收光子产生电流)其实是无法识别颜色的,为了能够识别颜
- 51单片机-独立按键
Whappy001
51单片机嵌入式硬件单片机
时间:2024.8.28作者:Whappy目的:学习51单片机代码:#include#include"intrins.h"voidDelay1ms(unsignedintxms)//@11.0592MHz{unsignedchari,j;while(xms--){_nop_();i=2;j=199;do{while(--j);}while(--i);}}voidmain(void){//P2_0=
- Android之Handler的post方法和sendMessage的区别
追梦的鱼儿
androidjavaHandlerpostsendrunnable
目录post方法方法特点sendMessage方法方法特点使用场景区别总结Handler类在Android中用于在不同线程之间传递消息和执行代码。它提供了两种主要的方式来执行任务:通过post方法和通过sendMessage方法。这两种方法有不同的使用场景和特点。post方法方法post(Runnabler)postDelayed(Runnabler,longdelayMillis)postAtT
- rabbitmq 怎么实现延迟消息队列?
搬砖的小子
javajava-rabbitmqrabbitmq分布式
Rabbitmq本身是没有延迟队列的,要实现延迟消息,一般有两种方式:1.通过Rabbitmq本身队列的特性来实现,需要使用Rabbitmq的死信交换机(Exchange)和消息的存活时间TTL(TimeToLive)。2.在rabbitmq3.5.7及以上的版本提供了一个插件(rabbitmq-delayed-message-exchange)来实现延迟队列功能。同时插件依赖Erlang/OPT
- Docker学习系列(七):使用Kubernetes Operators进行应用的自动化运维管理
黄宝良
Docker运维docker学习
使用KubernetesOperators进行应用的自动化运维管理KubernetesOperators是扩展Kubernetes功能的强大工具,可以自动化复杂的应用运维任务。本篇文章将详细介绍KubernetesOperators的概念、工作原理,并通过实际案例演示如何创建和使用Operators进行应用的自动化运维管理。一、什么是KubernetesOperators?KubernetesOp
- 51单片机-LED闪烁
Whappy001
51单片机嵌入式硬件单片机
时间:2024.8.28作者:Whappy目的:学习51单片机代码:#include#include"intrins.h"voidDelay500ms()//@11.0592MHz{unsignedchari,j,k;_nop_();i=4;j=129;k=119;do{do{while(--k);}while(--j);}while(--i);}voidmain(void){while(1){P
- 什么是反应诱导重构
yl--炼气
重构材料科学
反应诱导重构(Reaction-InducedPhaseTransformation,RIPT)是一种材料科学中的现象,指的是在特定的反应过程中,材料的晶体结构或相发生了重构或转变。这种现象广泛应用于催化、材料合成和功能材料的研究中。下面是对反应诱导重构的详细解释:1.基本概念反应诱导重构指的是在化学反应过程中,材料的结构由于反应条件的影响而发生相变或结构重组。通常,这种重构是在反应物转化为产物的
- jvm调优总结(从基本概念 到 深度优化)
oloz
javajvmjdk虚拟机应用服务器
JVM参数详解:http://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html
Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。
- 【Scala十六】Scala核心十:柯里化函数
bit1129
scala
本篇文章重点说明什么是函数柯里化,这个语法现象的背后动机是什么,有什么样的应用场景,以及与部分应用函数(Partial Applied Function)之间的联系 1. 什么是柯里化函数
A way to write functions with multiple parameter lists. For instance
def f(x: Int)(y: Int) is a
- HashMap
dalan_123
java
HashMap在java中对很多人来说都是熟的;基于hash表的map接口的非同步实现。允许使用null和null键;同时不能保证元素的顺序;也就是从来都不保证其中的元素的顺序恒久不变。
1、数据结构
在java中,最基本的数据结构无外乎:数组 和 引用(指针),所有的数据结构都可以用这两个来构造,HashMap也不例外,归根到底HashMap就是一个链表散列的数据
- Java Swing如何实时刷新JTextArea,以显示刚才加append的内容
周凡杨
java更新swingJTextArea
在代码中执行完textArea.append("message")后,如果你想让这个更新立刻显示在界面上而不是等swing的主线程返回后刷新,我们一般会在该语句后调用textArea.invalidate()和textArea.repaint()。
问题是这个方法并不能有任何效果,textArea的内容没有任何变化,这或许是swing的一个bug,有一个笨拙的办法可以实现
- servlet或struts的Action处理ajax请求
g21121
servlet
其实处理ajax的请求非常简单,直接看代码就行了:
//如果用的是struts
//HttpServletResponse response = ServletActionContext.getResponse();
// 设置输出为文字流
response.setContentType("text/plain");
// 设置字符集
res
- FineReport的公式编辑框的语法简介
老A不折腾
finereport公式总结
FINEREPORT用到公式的地方非常多,单元格(以=开头的便被解析为公式),条件显示,数据字典,报表填报属性值定义,图表标题,轴定义,页眉页脚,甚至单元格的其他属性中的鼠标悬浮提示内容都可以写公式。
简单的说下自己感觉的公式要注意的几个地方:
1.if语句语法刚接触感觉比较奇怪,if(条件式子,值1,值2),if可以嵌套,if(条件式子1,值1,if(条件式子2,值2,值3)
- linux mysql 数据库乱码的解决办法
墙头上一根草
linuxmysql数据库乱码
linux 上mysql数据库区分大小写的配置
lower_case_table_names=1 1-不区分大小写 0-区分大小写
修改/etc/my.cnf 具体的修改内容如下:
[client]
default-character-set=utf8
[mysqld]
datadir=/var/lib/mysql
socket=/va
- 我的spring学习笔记6-ApplicationContext实例化的参数兼容思想
aijuans
Spring 3
ApplicationContext能读取多个Bean定义文件,方法是:
ApplicationContext appContext = new ClassPathXmlApplicationContext(
new String[]{“bean-config1.xml”,“bean-config2.xml”,“bean-config3.xml”,“bean-config4.xml
- mysql 基准测试之sysbench
annan211
基准测试mysql基准测试MySQL测试sysbench
1 执行如下命令,安装sysbench-0.5:
tar xzvf sysbench-0.5.tar.gz
cd sysbench-0.5
chmod +x autogen.sh
./autogen.sh
./configure --with-mysql --with-mysql-includes=/usr/local/mysql
- sql的复杂查询使用案列与技巧
百合不是茶
oraclesql函数数据分页合并查询
本片博客使用的数据库表是oracle中的scott用户表;
------------------- 自然连接查询
查询 smith 的上司(两种方法)
&
- 深入学习Thread类
bijian1013
javathread多线程java多线程
一. 线程的名字
下面来看一下Thread类的name属性,它的类型是String。它其实就是线程的名字。在Thread类中,有String getName()和void setName(String)两个方法用来设置和获取这个属性的值。
同时,Thr
- JSON串转换成Map以及如何转换到对应的数据类型
bijian1013
javafastjsonnet.sf.json
在实际开发中,难免会碰到JSON串转换成Map的情况,下面来看看这方面的实例。另外,由于fastjson只支持JDK1.5及以上版本,因此在JDK1.4的项目中可以采用net.sf.json来处理。
一.fastjson实例
JsonUtil.java
package com.study;
impor
- 【RPC框架HttpInvoker一】HttpInvoker:Spring自带RPC框架
bit1129
spring
HttpInvoker是Spring原生的RPC调用框架,HttpInvoker同Burlap和Hessian一样,提供了一致的服务Exporter以及客户端的服务代理工厂Bean,这篇文章主要是复制粘贴了Hessian与Spring集成一文,【RPC框架Hessian四】Hessian与Spring集成
在
【RPC框架Hessian二】Hessian 对象序列化和反序列化一文中
- 【Mahout二】基于Mahout CBayes算法的20newsgroup的脚本分析
bit1129
Mahout
#!/bin/bash
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information re
- nginx三种获取用户真实ip的方法
ronin47
随着nginx的迅速崛起,越来越多公司将apache更换成nginx. 同时也越来越多人使用nginx作为负载均衡, 并且代理前面可能还加上了CDN加速,但是随之也遇到一个问题:nginx如何获取用户的真实IP地址,如果后端是apache,请跳转到<apache获取用户真实IP地址>,如果是后端真实服务器是nginx,那么继续往下看。
实例环境: 用户IP 120.22.11.11
- java-判断二叉树是不是平衡
bylijinnan
java
参考了
http://zhedahht.blog.163.com/blog/static/25411174201142733927831/
但是用java来实现有一个问题。
由于Java无法像C那样“传递参数的地址,函数返回时能得到参数的值”,唯有新建一个辅助类:AuxClass
import ljn.help.*;
public class BalancedBTree {
- BeanUtils.copyProperties VS PropertyUtils.copyProperties
诸葛不亮
PropertyUtilsBeanUtils
BeanUtils.copyProperties VS PropertyUtils.copyProperties
作为两个bean属性copy的工具类,他们被广泛使用,同时也很容易误用,给人造成困然;比如:昨天发现同事在使用BeanUtils.copyProperties copy有integer类型属性的bean时,没有考虑到会将null转换为0,而后面的业
- [金融与信息安全]最简单的数据结构最安全
comsci
数据结构
现在最流行的数据库的数据存储文件都具有复杂的文件头格式,用操作系统的记事本软件是无法正常浏览的,这样的情况会有什么问题呢?
从信息安全的角度来看,如果我们数据库系统仅仅把这种格式的数据文件做异地备份,如果相同版本的所有数据库管理系统都同时被攻击,那么
- vi区段删除
Cwind
linuxvi区段删除
区段删除是编辑和分析一些冗长的配置文件或日志文件时比较常用的操作。简记下vi区段删除要点备忘。
vi概述
引文中并未将末行模式单独列为一种模式。单不单列并不重要,能区分命令模式与末行模式即可。
vi区段删除步骤:
1. 在末行模式下使用:set nu显示行号
非必须,随光标移动vi右下角也会显示行号,能够正确找到并记录删除开始行
- 清除tomcat缓存的方法总结
dashuaifu
tomcat缓存
用tomcat容器,大家可能会发现这样的问题,修改jsp文件后,但用IE打开 依然是以前的Jsp的页面。
出现这种现象的原因主要是tomcat缓存的原因。
解决办法如下:
在jsp文件头加上
<meta http-equiv="Expires" content="0"> <meta http-equiv="kiben&qu
- 不要盲目的在项目中使用LESS CSS
dcj3sjt126com
Webless
如果你还不知道LESS CSS是什么东西,可以看一下这篇文章,是我一朋友写给新人看的《CSS——LESS》
不可否认,LESS CSS是个强大的工具,它弥补了css没有变量、无法运算等一些“先天缺陷”,但它似乎给我一种错觉,就是为了功能而实现功能。
比如它的引用功能
?
.rounded_corners{
- [入门]更上一层楼
dcj3sjt126com
PHPyii2
更上一层楼
通篇阅读完整个“入门”部分,你就完成了一个完整 Yii 应用的创建。在此过程中你学到了如何实现一些常用功能,例如通过 HTML 表单从用户那获取数据,从数据库中获取数据并以分页形式显示。你还学到了如何通过 Gii 去自动生成代码。使用 Gii 生成代码把 Web 开发中多数繁杂的过程转化为仅仅填写几个表单就行。
本章将介绍一些有助于更好使用 Yii 的资源:
- Apache HttpClient使用详解
eksliang
httpclienthttp协议
Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且也方便了开发人员测试接口(基于Http协议的),即提高了开发的效率,也方便提高代码的健壮性。因此熟练掌握HttpClient是很重要的必修内容,掌握HttpClient后,相信对于Http协议的了解会
- zxing二维码扫描功能
gundumw100
androidzxing
经常要用到二维码扫描功能
现给出示例代码
import com.google.zxing.WriterException;
import com.zxing.activity.CaptureActivity;
import com.zxing.encoding.EncodingHandler;
import android.app.Activity;
import an
- 纯HTML+CSS带说明的黄色导航菜单
ini
htmlWebhtml5csshovertree
HoverTree带说明的CSS菜单:纯HTML+CSS结构链接带说明的黄色导航
在线体验效果:http://hovertree.com/texiao/css/1.htm代码如下,保存到HTML文件可以看到效果:
<!DOCTYPE html >
<html >
<head>
<title>HoverTree
- fastjson初始化对性能的影响
kane_xie
fastjson序列化
之前在项目中序列化是用thrift,性能一般,而且需要用编译器生成新的类,在序列化和反序列化的时候感觉很繁琐,因此想转到json阵营。对比了jackson,gson等框架之后,决定用fastjson,为什么呢,因为看名字感觉很快。。。
网上的说法:
fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师开发。
- 基于Mybatis封装的增删改查实现通用自动化sql
mengqingyu
DAO
1.基于map或javaBean的增删改查可实现不写dao接口和实现类以及xml,有效的提高开发速度。
2.支持自定义注解包括主键生成、列重复验证、列名、表名等
3.支持批量插入、批量更新、批量删除
<bean id="dynamicSqlSessionTemplate" class="com.mqy.mybatis.support.Dynamic
- js控制input输入框的方法封装(数字,中文,字母,浮点数等)
qifeifei
javascript js
在项目开发的时候,经常有一些输入框,控制输入的格式,而不是等输入好了再去检查格式,格式错了就报错,体验不好。 /** 数字,中文,字母,浮点数(+/-/.) 类型输入限制,只要在input标签上加上 jInput="number,chinese,alphabet,floating" 备注:floating属性只能单独用*/
funct
- java 计时器应用
tangqi609567707
javatimer
mport java.util.TimerTask; import java.util.Calendar; public class MyTask extends TimerTask { private static final int
- erlang输出调用栈信息
wudixiaotie
erlang
在erlang otp的开发中,如果调用第三方的应用,会有有些错误会不打印栈信息,因为有可能第三方应用会catch然后输出自己的错误信息,所以对排查bug有很大的阻碍,这样就要求我们自己打印调用的栈信息。用这个函数:erlang:process_display (self (), backtrace).需要注意这个函数只会输出到标准错误输出。
也可以用这个函数:erlang:get_s