自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 SpringBoot NULL转“”(空字符串)

#SpringBoot NULL转“”(空字符串) 有时候前端的同学要求把String类型为NULL变成空字符串“”返回给他们,然而我们又不能简单的把全局的所有的类型为NULL的对象都这么去处理,而且也不能在非Http请求中这么返回,因为严格来说NULL并不等于“”,可能会引发意想不到的错误,所以...

2020-03-24 10:12:10 201 0

原创 JAVA实现简单的切面注解

背景 今天在分析同事遇到一个springboot的注解和方法锁一起用而导致的问题(@Transaction和synchronized用在同一个方法中由于事务先于锁进入后于锁释放而可能引发的数据问题)中而突然思考到spring的Aspect是怎么样的执行顺序,本文介绍java中其中一种(Invoca...

2019-08-22 00:31:07 2816 0

原创 本地调试微信公众号授权

如何在本地进行微信公众号授权调试 原因 最近前端同事开发微信公众号,接近后期,当涉及到授权登录,支付等等的时候js就会校验安全域名和ip,那么就意味每次同事做了更改都要把微信公众号打包部署到线上服务器才能调试了,来来去去很郁闷。于是我建议用内网穿透的方式来让他实现本地调试。 怎么做 首选需要一个n...

2019-07-18 19:20:34 2337 0

原创 微信公众号调试缓存的坑

微信调试缓存的坑 由于微信调试有时候我们需要真机调试看效果,但是有时候你会发现怎么刷新都刷不出来,特别是用react之类的框架,js死活改了没什么用。 为什么 原来是被浏览器缓存了 怎么解决 因为浏览器的缓存规则是服务器的头部定义的,所以改一下web服务器的定义就好了: expires 30s; ...

2019-04-01 15:43:48 2074 0

原创 SpringBoot Shiro Ajax的认证处理

吐槽 真是什么都做一点,最近撸主变成了一个web后端程序员去了,真是什么都弄一点,什么都不精通,八爪章鱼 问题 springboot用shiro来做ajax动静分离的方案的认证和授权的时候遇到一个特别为难的问题,那就是你访问未授权页面的时候,登陆未成功或者未登陆访问需要认证的接口的时候,服务...

2018-11-21 10:43:31 811 0

原创 Android应用开发之CPU优化

最近开发一个APK的时候遇到了一个问题,CPU动不动就占用到40%以上,而且是一个服务型的常驻内存APK,这样子肯定不行的,CPU发热可能会过高。这个APK需要优化,包括内存优化,结构优化,CPU优化等等 1.获取APK内存占用情况 使用top命令,确定自己是不是占用了比较高的cpu t...

2018-06-01 16:30:50 3376 0

原创 Android Studio使用aar

在Android Studio Gradle的compile给了我们很大的方便。不过题主最近遇到了一个问题,使用了一个封装了zxing的库(barcodescanner)时,发现好几个参数都是写死了,不可以设置。不得不下载源码,本来是直接把整个项目作为module引用,可发现和自己的代码一起编的时...

2018-05-30 09:50:54 1287 0

原创 GORM初次使用

GORM是中国人写的一个go语言的ORM,全世界都在用,下面我们用一段代码演示一下怎么用 文档地址:http://doc.gorm.io/crud.html 安装: go get -u github.com/go-sql-driver/mysql go get -u github.com/j...

2018-05-12 16:59:11 6908 0

原创 byte转int的问题,unsigned char和char

ps:其实这篇文章我是想不出叫什么名字了。。。。。。 事情是这样的,最近用java把一个4 byte转成int,于是写出了这种代码: int dataSize = ((dataSizeArray[3]) | (dataSizeArray[2]) 这段代码的问题是什么,上面的过程byte...

2018-01-19 11:00:34 631 0

转载 帧差法检测运动目标

转自:http://blog.csdn.net/tiemaxiaosu/article/details/51558830 一、原理     摄像机采集的视频序列具有连续性的特点。如果场景内没有运动目标,则连续帧的变化很微弱,如果存在运动目标,则连续的帧和帧之间会有明显地变化。     帧间...

2018-01-13 16:11:19 19533 0

转载 H.264 NALU语法结构(转载)

转自[http://blog.csdn.net/newthinker_wei/article/details/8748442](http://blog.csdn.net/newthinker_wei/article/details/8748442) 补充笔记: 关于...

2017-12-26 22:16:58 133 0

原创 java.util.NoSuchElementException

在一个android项目上用到List来作为RTP包的队列,一个线程入队一个线程出队,频率比较高,跑几秒钟就挂了,异常:java.util.NoSuchElementException这是什么原因呢,原因是一开始我就认为java的书结构是线程安全的,但默认情况下并不是这样的,有一部分数据结构并不是...

2017-12-13 22:04:57 199 0

转载 Android 摄像头后台采集

转自:http://blog.csdn.net/ak47zhangzhiwei/article/details/68483888 由于某些特殊要求,可能在Android视频采集是需要不回显,只在后台进行采集 传统做法需要使用SurfaceView,通过SurfaceView 获取SurfaceH...

2017-12-09 20:01:55 889 0

原创 android md5求hash值

重要的事情说三遍:“md5是hash算法,不是加密算法;md5是hash算法,不是加密算法;md5是hash算法,不是加密算法;“MessageDigest md5 = null; try { md5 = MessageDigest.getInstance("MD5")...

2017-12-06 15:32:49 708 0

转载 ubus实现进程间通信

上一篇文章介绍了ubus的组件和实现原理,本文通过代码实例介绍使用ubus进行进程间通信的三种方式。 1. invoke的方式实现端对端通信 最简单的情景就是一个提供服务的server端,一个请求服务的client端,client请求server的服务。 下面的例子中,server注册了一个名为“...

2017-12-02 10:45:52 1768 0

原创 Makefile编译当前目录下所有c文件到共享库

在编写c的项目的时候有时候把接口文件都放在一个目录下,并且需要打包成一个共享库,这时候我们充分的利用通配符和函数就可以不用把所有文件都一一写出来了。OBJS := $(patsubst %.c, %.o, $(wildcard *.c)) OUTLIB := libmyapi.soCFLAGS :...

2017-11-29 17:34:25 7908 0

原创 protocol buffers c语言的使用

以下源码示例来源于https://github.com/protobuf-c/protobuf-c/wiki/Examples 定义消息message AMessage { required int32 a=1; optional int32 b=2; }安装protobuf-c我...

2017-11-27 16:28:08 3027 0

原创 vagrind检测内存泄露

今天想检测自己写的一段代码有没有内存泄露,于是想到了googleperf和vagrind,对比了一下,vagrind能检测出一处内存泄露,而googleperf却没有,不知道是什么原因,这两个工具的原理也不太一样,vagrind的在自己的模拟环境下跑的,而googleperf是通过链接自己的tcm...

2017-11-23 11:02:17 1996 0

原创 分治法计算乘幂

如果直接重复相乘的方法需要n次乘法,如果利用递归的方法分解子问题,只要log2n的复杂度。#include <stdio.h> #include <stdlib.h> #include <string.h>int count = 0;unsigned long ...

2017-11-12 15:58:35 205 0

原创 perf之timechart(系统性能图形化分析工具)

perf record可以统计系统在一段时间内,进程的性能表现,但是其结果不适合直接阅读,有很多图形化工具可以把其结果转换成图形界面的方式,而perf自带了timechart分析工具,当然它只记录了进程粒度上的表现,还是替代不了火焰图这种可以在函数级别上进行分析的工具,最好可以配合使用。

2017-11-06 10:07:58 10957 1

原创 http进行wifi认证的设计思路

目前很多家庭的wifi被客人“万能钥匙”自动分享,导致家里wifi慢的可怜,这次回家就看到家里的wifi的dhcp服务器上挂满满的各种陌生的客户端,其实来了家里都是朋友肯定不会去主动分享密码的,于是我想wifi密码改来改去的还是被一些“小人软件”自动分享了,有没有什么方法来抵抗这个呢,当然一般路由...

2017-10-22 00:16:25 10126 0

原创 iperf点到点测速

iperf 是一个网络性能测试工具。Iperf可以测试最大TCP和UDP带宽性能,具有多种参数和UDP特性,可以根据需要调整,可以报告带宽、延迟抖动和数据包丢失。在嵌入式开发的过程中经常需要用到这个工具,下面我们演示一下如何利用这个工具来测两台机器之间的数据传输速度: 分别在两台待测机器中安装i...

2017-10-17 14:37:45 7142 2

转载 敏捷宣言遵循的原则

转自:http://agilemanifesto.org/iso/zhchs/principles.html 当在团队中或者平时和一些其它的程序员聊天中聊起了“敏捷开发”这个话题,但是问起敏捷开发是什么时,大多是不知所云,只知道敏捷开发”快速“的一面,而忽略了敏捷开发”可持续“的一面 我们遵循...

2017-09-25 00:08:12 210 0

原创 gRPC的使用(cpp)

gRPC是google开源的一套实现rpc调用的框架,支持多种语言,并且比较易用,其数据传输是通过google自家的protobuf来序列化的,下面我们通过改写gRPC的example来实现获取远程host内存的功能。 例子中的文件目录结构如下 ./examples/cpp/sysproc ....

2017-09-21 21:09:33 6598 0

原创 git使用代理

今天在git clone gRPC的时候boringssl卡住了,原因是boringssl的源是google source的,被墙了。但是本人木有可以全局代理的工具,只有一个可以本地代理http(s)的工具,所以让git走https代理,设置如下:git config --global http....

2017-09-20 09:53:26 11635 0

原创 一个换行符引发的“血案”

今天项目发生了一件很有意思的事情,案件很离奇。案件的经过是这样的:案件经过我们在写一个库对接硬件平台和第三方模块,库封装了一些平台有关的接口给第三方使用,但是当我们把对接第三方模块的时候对方服务器报错了,服务器方反馈上报的某个参数有误。然后我们发现参数的确有误://本来参数在终端应该是这么显示的 ...

2017-09-15 19:26:39 4546 0

原创 Linux FIFO (进程间通信,生产者消费者)

上一篇中我们写到了PIPE无名管道,的确是一种很方便的通信机制,但是其有一个缺点就是,PIPE是依赖于文件描述符的,并不在文件系统中维护,如果两个通信进程之间没有共同的祖先,他们就无法拿到相同的文件表项,所以没有共同祖先的两个进程是不能通过PIPE直接通信的。为此Linux提供一种称为有名管道称为...

2017-09-14 20:51:24 4750 0

原创 Linux Pipe (进程间通信,生产者消费者)

PIPE是Linux下可以用来实现进程间通信的一种手段,当我们调用pipe系统调用时,将会产生一对文件描述符,fd[0]可以用来读,fd[1]用来写,fd[1]写的数据将会在fd[0]中读到,我们称之为管道。进程之间可以依赖管道的方式实现进程间通信,pipe是半双工的,所以如果要实现pipe之间互...

2017-09-13 10:41:20 4962 0

原创 svn sqlite[S5]:database is locked

今天遇到一件比较奇葩的事情,在svn update的过程中直接ctr+z终端svn命令,结果再次svn update,报错“sqlite[S5]:database is locked”。sqlite被锁住了,svn cleanup没用了。解决该问题的方法如下:cd .svn mv wc.db wc...

2017-09-06 11:49:19 8053 0

原创 基数排序

基数排序是一种“非比较排序算法”,什么叫非比较排序算法呢,就是在实施排序的过程中,没有直接的比较元素之间的大小。其复杂度和被排序个数呈线性关系,原理是利用从小到大依次基于更小的已经排序的位的每一个十进制位进行排序,最后得到最优的结果(具体证明和过程请参考MIT 的《算法导论》书籍)。下面用c++代...

2017-09-01 10:29:20 5804 0

原创 JavaScript IP转INT(整形)

有时候我们需要在web页面中对ip进行一些和掩码相关的验证,由于掩码是二进制的概念(当然如果你字符串操作实在很溜,经历旺盛的话,那就可以不用往下读了,读到这里为止了)。JavaScript位操作和c差不多,但是JavaScript转成无符号整形我们需要一个“>>>”,否则最左边一...

2017-08-30 14:17:23 9406 0

原创 跳跃表的实现(c++)

这里不介绍跳跃表是什么东西了,如果没有推导过跳跃表或者索性不知道跳跃表是什么东西请看麻省理工大学公开课 算法导论 跳跃表。 代码中有一个容易误解的地方解释一下,randomLevel模拟抛硬币的过程比较不太直观,在插入过程中一个节点上升的次数实际上等价于连续出现“正面”的次数,所以我们直...

2017-08-28 00:27:36 6962 0

原创 Linux 动态装载库(dlopen)

Linux有时我们需要在运行时指定库的路径去加载库,而不是依赖于系统自动动态链接。比如说我们在需要做到动态加载库插件时就会用到动态装载库的特性(比如像lighthttpd和nginx的动态mod功能),Linux提供了函数来帮助我们做到这件事,主要的几个函数为:dlopen,dlsym,dlclo...

2017-08-21 23:26:37 6145 0

原创 dup2复制文件描述符

dup2是Linux下用来实现文件描述符复制的api,dup2(fd1, fd2)将会把fd1复制到指定的fd2下,如果fd2是一个已经打开的描述符,dup2会自动的先将其安静的关闭。我们知道Linux的进程表中会维护打开的fd的表项,每个fd指向一个文件表,复制的作用是使fd2指向了fd1所指向...

2017-08-21 16:46:31 5785 0

原创 c++11 thread

c++11在语言层面上提供了对thread的支持,由于不同的平台提供了不同线程API,在语言层面提供了对thread的支持可以大大的减小代码移植的工作量。 thread的构造函数参数为函数名和可变参数,请看栗子 thread的默认构造函数创建一个没有执行过程的线程,该线程既不可以被join,也没有...

2017-08-20 19:46:36 9357 0

原创 gperftools检查内存泄漏

上次,我们提到利用google gperftools定位程序cpu使用性能问题,这次利用同样的工具的heap checker的功能对程序进行内存泄漏的定位。安装请看之前的文章:#include <iostream> #include <vector> using names...

2017-08-18 15:27:39 6911 0

原创 用最大堆实现优先队列(c++)

关于最大堆,最小堆的概念这里不再介绍。#include <iostream> #include <vector> using namespace std;template<typename T> class PriorityQueue { private...

2017-08-18 00:42:11 6510 0

原创 VIM命令备忘录

本文仅仅是写给自己的备忘录,没有条理,请谨慎阅读 :ls 显示打开的文件我习惯vim用NerdTree打开一大堆文件,或者ctags跟踪跟踪着就一大堆文件了,这时打开的文件一般在buffer中,这时又记不起具体文件名,想看看打开过了哪些文件了,用”:ls”就可以了:bn 跳转到已经打开的某个...

2017-08-16 22:20:44 118 0

原创 c++11 for range

c++11带来了基于range的for循环,在仅仅遍历一个数组而不想关心下标的时候,终于可以不用羡慕javascript和世界上最好的语言php了。举个栗子:#include <vector> #include <string> #include <iostream&...

2017-08-16 21:47:59 8897 0

原创 C++右值引用的示例

解释通常来说左值是指非零时对象,而右值是指临时对象。我们知道c++在进行临时对象的拷贝时会调用拷贝构造函数:vector<string> v; v.push_back(string("1234");产生的行为就是先构造一个“1234”的临时string,然后调用拷贝...

2017-08-16 10:46:28 9114 0

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