- 博客(35)
- 资源 (1)
- 收藏
- 关注
原创 settimer的坑
如果不是整数倍关系,那么搞一个最小公约数,比如一个是2分钟,一个是3分钟,那么可以搞一个1分钟的定时器,再维持2个计数器:2分钟计数器和3分钟计数器,每次timer触发,计数器+1,2分钟计数器满足计数达到2则触发,3分钟计数器则是计数达到3则触发。方案一:如果是定时事件之间事件间隔是整数倍关系,则通过添加计数器完成,比如两个计时计时任务,一个1分钟,一个三分钟,那么设置一个1分钟的定时器,每次触发1分钟的任务每次都执行,三分钟的通过分析计数器,只有计数器达到了3次,才会执行,执行完毕后记得计数器清零。
2025-01-18 16:12:56
345
原创 Git旧文件覆盖引发思考
他会记录本地仓库合并后的文件和合并双方的差异(本地分支原来的文件,以及拉取分支之间的差异),所以当你把这个merge的commit推送到了Git服务器之后,Git的原则就是提交方为大,对于有差异的地方,按照提交方为准。所以就小王的push之后,将自己本地旧版的README.md文件成功的错误的推送到了git服务器。从好理解的角度来看,大家可以理解为,每次push行为是将要让远程服务器的“所有的”文件内容和本地分支的内容,完全一样。一天,我的同事过来找到我,和我讲:张叫兽,大事不好,我的文件被人覆盖了。
2024-11-24 12:47:34
341
1
原创 STM32(10):USART
概述今天研究一下USART模块,USART模块最常用的功能之一就是输出log,下面就研究一下利用USART模块来输出log的实验代码。USART,Universal Synchronous/Asynchronous Receiver/Transmitter,通用同步/异步接收/发送器;通过名字可以看出来,USART模块支持同步和异步模式,支持接收和发送操作。那么什么是同步/异步呢?同步通信:是指通信双方共享一个时钟节拍,一般情况需要发送方向接收方发送数据同时还要提供时钟;接收方根据发送方提供
2022-02-11 19:23:24
3632
原创 STM32(9):定时器
概述本章主要讲述一下定时器的实现,定时器顾名思义,就是到了指定的时间就触发中断,所以定时器本身是中断的一种应用。本节的例子中实现的每秒输出一个字符。代码概览 #include "stm32f10x_gpio.h" #include "stm32f10x_rcc.h" #include "stm32f10x_exti.h" #include "misc.h" #include "stm32f10x_gpio.h" #include "stm32f10x_rcc.h" #include "st
2022-01-28 19:29:30
845
原创 STM32(8):番外篇之“上升沿 vs. 下降沿”
D触发器的约定D触发器里面约定的时钟是上升沿敏感(postedge),reset(重置)是下降沿敏感(negedge);这种是约定俗称;如果时钟改成是下降沿敏感,就是反向D触发器;上升沿下降沿互换在绝大多数场景下是没有问题的,但是有些特殊场景是不建议使用的。而且建议尽量不要使用双沿触发,即对于时钟的触发最好同步设置为上升沿/下降沿触发。双沿触发的场景场景描述下面使用两个D触发器来说明双沿触发问题,如下图所示是两个D触发器,其中D(ata)口用于接收数去,Q口用于输出数据,clk口用于接收时钟脉冲;下
2022-01-20 22:23:26
4224
原创 STM32(7):中断方式让按键点亮LED
概述上一节“STM32(5):轮训方式让按键点亮LED”实现了基于轮训的方式,实现点亮LED灯,本节将基于另外一种通信方式:中断方式,来实现点亮LED。代码概览void delay(unsigned int time){ unsigned int i = 0; while (time--) { i = 1000000; while (i--)
2022-01-20 21:56:35
3776
原创 STM32(6):轮训方式让按键点亮LED
概述CPU和外设通信的方式有轮训和中断两种方式;所谓轮训就是主动询问某个状态,看看是否是某个值,如果是则采取行动;中断则是一旦发生了,会主动通知CPU;本章来研究一下通过如何轮训的方式来响应按键事件。代码概览#include "stm32f10x_gpio.h"#include "stm32f10x_rcc.h"#include "../lib/STM32F10x_StdPeriph_Driver/inc/stm32f10x_exti.h&quo
2022-01-11 06:36:17
2087
原创 STM32(5):番外篇之stm32固件库工程搭建
创建工程目录文件首先,创建好工程文件目录,比如task4_exit;然后在里面创建一个proj目录,创建工程选择的文件夹就选择proj,这样创建Keil工程文件都是放在proj里面;接着在task4_exit的根目录创建一个main.c(空文件即可);最后在task4_exit的根目录放入如下固件库文件:1)startup_stm32f10x_md.s,程序运行启动汇编文件;2)stm32f10x.h,微控制器专用头文件;3)stm32f10x_conf.h,固件库配置文件;4)system
2022-01-07 21:33:44
586
原创 STM32(4):基于构件库的点亮LED
概述第一、二章节中,STM32是纯裸开发,通过自定义地址来进行写寄存器;STM32其实提供了底层固件库,定义好了通用功能,所以如果是常规功能只需要调用固件库的API即可实现功能。所以我在番外篇说了,其实熬过了前两章,后面的内容反而要简单。从本章开始,我们的绝大多数的开发内容都是基于STM32的固件库进行的。从main函数说起用c编写函数,都知道入口函数是main函数,程序跑起来一定会找main函数;所以我们的编译器在编译的时候还会做强制的main函数重复检测,避免定义多个main函数执行的时候导致不
2022-01-06 21:18:50
227
原创 STM32(3):番外篇之STM32名字解析
Let's GO!能够看到这里的盆友,相信前面两个章节并没有劝退,我觉得前面两个章节可能是难度最大的两篇了,如果能够搞掂,后面的内容其实反而简单。但是前面两个章节是嵌入式开发"生存必要的技能"(理解寄存器以及查看手册),否则后面也是寸步难行。Go! Go! Go!让我们继续探索STM32的世界吧。番外:名字解析这一回我们番外一下,八卦一下STM32的名称,让你实现“管中亦可规豹”;我现在手头的这块板子是:STM32F103C8T6STM32:产品系列ST是STMi
2022-01-04 20:17:28
406
原创 STM32(2):点亮LED(下)
概述点亮LED表面看起来貌似很简单,但是如何想要搞清楚其背后牵涉的每一行代码的具体含义,还是需要花费一些功夫的,而且,只有把LED的背后只是搞清楚了,才算嵌入式开发的基础入门。今天我们就来研究一下LED的重头戏,RCC_Init;什么是RCC?上手册:RCCRCC,Reset and Clock Control,重置以及时钟控制;STM32手册使用了两个章节来对其进行描述,可见它的重要性;对于RCC的初始化也是比较复杂,里面包含了STM32对于时钟的相关机制,代码总览void RCC_init
2022-01-03 20:49:06
430
原创 STM32(1):点亮LED(上)
概述今天我们的开启了STM32开发的第一站:点亮LED,今天的内容包含了很多基础的知识,也有一些劝退的意味,不过,如果你能够扛得住这波攻势的,我觉得你高嵌入式方面真的是“风骨清奇,可造之材”。程序总览typedef unsigned short int uint16_t;typedef unsigned int uint32_t;#define __IO volatile#define PERIPH_BASE ((uint32_t
2022-01-03 19:51:52
970
3
原创 x264源码解读(三) - 编码前的准备工作(上)
今天开始进入到了x264的核心部分,编码。编码总体分析首先看一下encoder这个函数:staticintencode(x264_param_t*param,cli_opt_t*opt) { ... ... }很多行,但是,就是阅读源码的时候要学会大刀切,不要限于细节,要了解代码的总体结构是怎么样的,其实也就是那么几种,后面可以慢慢体会,比如对于encoder而言,其实总体来分成三部分,编码前的准备,编码进行以及编码收尾工作,一旦你体会到这一点,那么几百行,几千行代码都不...
2021-06-05 17:42:15
970
2
原创 x264源码解读(二)- VCL和NAL那些事
今天我们继续来说一下x264结构中非常重要的属性annexb。小贴士:在阅读这些经典的c库代码的时候,这些,这些大牛们都是会按照一些规范来进行编码,无论是ffmpeg(后面打算再开一个专栏)还是x264,他们结构体的成员还是变量,命名方式习惯采用“数据类型_变量名”,比如b_annexb,代表boolean型,即annexb是一个开关(flag)。annexb如果为true,代表一个NALU的开始3位或者4位是start_code,所谓start_code没有逻辑意义,只是代表一个NALU的起始,或
2021-05-28 07:09:54
1455
1
原创 x264源码解读(一)- 关于颜色空间
x264是h264的一个经典实现,x264其实不单单是对于h264的实现,里面包含了大量的视频相关知识,这个系列,我将和大家一起,通过研究x264的源码来探索音视频的世界。源码下载:git clone https://code.videolan.org/videolan/x264.git 闲言少叙,在根目录中找到x264.c,搜索一下“main(”定位到main函数,扫一眼这个main函数:REALIGN_STACK int main( int argc, char **argv ){
2021-05-26 06:15:55
722
2
原创 敏捷,scrum以及团队管理
最近翻看了《洞悉敏捷》《scrum敏捷游戏开发》以及《敏捷项目管理与PMI-ACP应试指南》,同时回顾了一下PMP先关的内容,主要是翻看了一下《从PMP到卓越项目经理》。什么是敏捷敏捷开发的名字叫敏捷,突出快速迭代,和传统的开发的最大的区别在于交互变得频发,这里交互包括和用户的交互(定义sprint时间盒子,时间盒子后就和用户展示成果),代码逻辑露脸频繁(持续集成,持续交付),团队内部交互...
2018-10-27 10:47:49
653
原创 质量全面管控
JDeploy,一键部署Sonar,类似于Findbugs,checkstyle的代码规范扫描工具Checkmarx,代码安全扫描工具
2018-10-17 06:49:08
294
原创 自动化运维软件设计实战-所感
今天利用了大概一小时的时间翻看完了《自动化运维软件设计实战》这本书在思路上面给我提供了很大的帮助和借鉴,最近打算搭建一套运维平台。这本书开篇前三章介绍了Ansible,Puppt以及SaltStack,这三个运维工具都是可以单点主机操作多点客户端,就是操作多个机器像操作单台主机一样。Ansible的思想即使无入侵式的,同时SSH协议,来操作目标主机,而且是主动通知各个目标主机做事情;Puppe...
2018-10-14 22:45:28
296
原创 概率(一)
概率的基础是由三个基本串接起来的:概率,概率分布以及分布函数以及概率密度。概率要讲清楚要说明几点:事件,样本空间,讲清楚事件要首先介绍一下随即事件,什么是随机事件,就是结果是短期看是不确定的,但是从长期看又是有一定统计性规律的,称之为随即现象。作为概率研究的大前提就是随机现象。然后随机现象呢需要随机试验来进行体现,我们知道,随机现象是不可能穷尽的,随机试验本身是获取随机现象全体(历史)子集的过程。...
2018-05-06 18:09:59
346
原创 MySql集群
两台机器,A(192.168.1.105):是管理节点,数据节点,Sql节点;B(192.168.1.110):机器数据节点和Sql节点;安装Mysql-Cluster,可以到官网下载;创建c:\mysql\bin,存放bin文件,cluster可以是mis,也可以是zip,zip直接解压缩接口,但是超级大,msi安装之后要比zip小得多;足够用了;创建
2017-03-06 19:28:14
317
原创 MyBatis惊艳
打算使用一个小工具用来批量生成产品信息;开始尝试使用MySql的循环语句,但是尝试了几次之后发现语法问题没有成功,而且sql的维护性,扩展性比较差;于是打算采用mybatis,之前使用过mybatis2,现在调查一下mybatis3,不禁有一种惊艳的感觉,我指的是Mybatis3增加了扫描功能;另外提供了一个注解功能(用以将xml的配置放置到类中)以及SQL对象(可以通过where,join等函数
2017-01-14 15:55:17
421
原创 图片服务器
对于电商网站而言,图片(网站商品图片展示)读写是一个IO很高的功能。所以需要将应用服务和图片服务器进行分离。这里有淘宝的TFS,这个工具专门针对小于1M的文件进行处理,具有很高的IO以及负载均衡。可以使用RSync或者FastDFS(Fast Distribute File system)进行硬盘数据同步备份。
2017-01-08 22:55:17
312
原创 js想到的
input的oninput和onkeydown,我选择的是后者,因为前者在输入法中文情况下,没敲一下键盘都会触发该事件,后者则是只有确认一个中文字符后,才会触发事件。js的纠错能力比较弱,比如之前一个问题就是因为$("#showText").html()后面“()”没有敲入,结果导致了多次执行异常,所以js对于Debug的要求能力更高一些,不要总是盯着代码看,F12跟一下很多时候能够快速定位问
2017-01-04 23:19:45
265
原创 ajax安全性问题
ajax类访问要注意一点:就是安全性问题。首先是身份验证,很多因为是ajax直接提供了功能,不要因为ajax而忽略安全性问题;其次是session过期问题,这些都是可以在过滤器中来进行控制。
2017-01-04 12:09:37
2238
1
原创 ajax乱码问题
在解决自动补齐的功能的时候碰到了一个问题,就是ajax的中文乱码问题,首先是前台提交本身就是乱码,然后后台返回到前台中文是"?",网上看了一些资料,诸如在requestMapping中通过指定produces = "text/html;charset=UTF-8"来解决,统统不好用。问题现在解决了,首先贴前台到后台的代码,在向后台传输数据之前要把数据进行编码,默认就是utf-8,如果有问题,可
2017-01-02 23:24:35
315
原创 自动填充-关于Redis和HBase取舍想到的
HBase的应用场景还是海量数据的存储;对于keywords自动填充这种场景还是不太实用。对于这部分数据曾经想到过使用MongoDB或者HBase存储,考虑的是如果数据全部放在Redis中,Redis的职责有些太重了。其实这里可以考虑使用多台Redis,每台Redis存储不同类型的数据。这就好比从1000万条数据中检索速度快,还是从10个百万条数据库中检索数据快的问题,对数据进行分开存储本身就
2016-12-29 07:31:14
2820
原创 自动填充-实现逻辑
自动填充数据有两部需要维护,首先是关键字列表,其次是关键字后补列表。每当用户查询关键字的时候,首先从关键字列表中进行查找,只要有匹配的就检索出来,其实这里还是需要进行关联度匹配和分析,这个可以留在后面实现。如果关键字列表中没有完全匹配的,后补的列表中也没有这个关键字,那么就将其放入到关键字后补列表中;如果已经存在,则检索次数中加1;当检索达到了5000次之后,就需要从关键字后补列表中提升到关键字
2016-12-28 23:09:12
728
原创 自动填充-SpringMVC和ajax
最近在研究自动填充,就类似于淘宝那种的,输入MP之后自动回感应出来mp3, MP3好音质,MP3套...jQuery有提供一种空间:autoComplete,今天先不讲这个,而是说说为了使用autoComplete,我首先需要实现ajax访问后台返回推荐类型,再绑定到下拉选项中。之前简单地搜了一下ajax+spring mvc,我之前一直认为这个是个很简单的东西;但是我整整调了一天,困扰我的是Re
2016-12-26 23:41:45
678
原创 美妙的秒杀架构
看到了微信公众号(架构师之路)的一篇文章,立即被征服了,里面主要介绍如何来设计秒杀架构。 秒杀程序问题根源在于:海量的请求在争抢有限的资源,秒杀其实和火车票非常像,都是对有限资源的抢占。这一点和微博不一样,微博不需要加锁,是客户端来拉去,资源是不受限的。 首先是要对于架构进行分层,最上面是展示层,其次是站点层,然后是服务层,最后才是数据层。秒杀架构的核心其实:
2016-12-23 21:59:23
435
原创 Keepalived以及yum那点事
安装keepalived的时候发现需要OpenSSL组件,在官网下了,后来,发现在make的时候有“ ‘SYS_setns’未声明”的异常,网调是因为glib不是最新导致;安装glib需要libffi包支持;需要到官网下载;安装完成后还要在/etc/profile中进行配置:exportLIBFFI_CFLAGS=-I/usr/local/glib-2.34.3/lib/libffi-3.0.
2016-12-17 19:20:25
3147
原创 spring的form提交以及JSTL
之前主要做的是后台应用的开发,Spring接触过几个项目,但是接触不深。此次平台开发打算相对深入研究一下Spring的MVC,有两点心得。首先是form页面处理。Spring提供了一种方式,就是可以通过form:form标签以及form:input标签来进行绑定,这个样整个页面将会显得更加的优雅;但是这个只适合提交页面,因为对于展示页面很多地方还是无法采用这种方式来显示,比如span标签内部显
2016-12-17 12:26:12
2554
原创 Git管理
最近在使用github来管理自己的一个电商项目,但是多地开发的时候,发现pull不好使。原来是要在preference中的Team-git-configuration中添加一个core.remote.url选项,value值为你的github地址。 但是这是网上的解决方案,还是没有解决。 但是在调查过程中发现了一个Git的view很重要:Git Repositories;Bra
2016-12-17 12:22:35
404
原创 电商手记-前站
打算搭建一个电商平台玩玩儿,做一个类似于京东的商城。功能简单一些,但是重点是要实现高并发的处理。首先是学习了一下git,git向往久已,一直没有实际使用过。此次项目中代码管理打算采用Git进行管理,放置到gitHub上面。Git在使用过程中,觉得和svn最主要的区别在于git可以实现二级提交,就是先提交到本地,然后再提交到服务器上面;这样即使在离线环境下,或者是在家办公也可以提交代码,想想好开
2016-12-09 19:04:30
332
原创 项目开发流程
这是一个烂得不能再烂的题目,但是也是一个核心的不能在核心的的主题,如果一个项目开发流程控制得好,事半功倍,同时开发过程紧凑而不至于流于松懈,其实真正的懂得开发流程的人,凤毛麟角,因为流程不是走形式,他其实包含的是对于软件开发的理解,只有真正理解软件开发才能真正的执行好,知道哪些流程可以删减,那些节点需要增加,著名的极限开发大家不要理解为告知一套流程,他其实是一个集合,根据项目的规模和性质进行合理剪
2012-07-09 23:16:55
671
原创 项目管理那些事儿
项目管理首相要讲的就是管理二字,其实更多的PM我所经历和接触的都还没有脱离技术圈子,于是产生了所谓的项目指导,或者本身对技术没有追求或者缺乏技术经历的,更应该被称为项目委派,前者细致到已经提开发人员想好了技术细节,后者则是搞懂需求后一股脑的告诉开发人员,至于实现细节—放羊。 当然,也还有一些人过于执着于一些形式化的东西,听说极限编程很好,于是极力按照细节行为去做云云。我抛出问题,
2012-06-25 23:17:00
912
Building Secure ASP.NET Applications Authentication, Authorization, and Secure Communication
2009-08-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人