Java实现国密Sm3算法

虽然国密算法SM3的官方文档只有短短四五页,但实现起来涉及的细节还是挺多的。特此,Milo将开发心得,以及源码和注解做个分享,希望读者能够轻松理解SM3。

  • 预备知识
    • Java基本数据类型大小byte:1个字节;short:2个字节;char:2个字节;int:4个字节;long:8个字节等等。十六进制:一个数代表4个二进制位。所以需要拿捏好数据长短。
    • Ascii码有区分十进制、八进制、十六进制。官方文档样例中使用的都是十六进制,“abc”=“616263”,而不是十进制Ascii码“979899”。计算和操作过程中,要留意数据类型转换的问题。
    • 左移和循环左移官方文档中提及的移位计算均为循环左移。即移出的高位放到该数的低位。
    • 左补0在转换数据类型时,除了关注溢出问题、Ascii码问题,还要关注转换结果的长度问题。SM3算法中,若二进制长度不足需要补全,否则拼接结果时会出现意想不到的错误。

继续阅读Java实现国密Sm3算法

本博客文章为原创内容,版权归作者所有。未经作者书面许可,不得擅自转载。如需转载,请注明原文链接和作者信息。违者将追究法律责任。

2020上半年问题总结

前言

工作的时候,因为是内网开发,所以遇到难题Milo都记在纸上。原本想一月一发,事实上却因为各种缘由拖了大半年,一下子整理起来问题还真有点多。以下内容可以说是问题集锦,或者大杂烩了。

继续阅读2020上半年问题总结

本博客文章为原创内容,版权归作者所有。未经作者书面许可,不得擅自转载。如需转载,请注明原文链接和作者信息。违者将追究法律责任。

Java实现常用排序算法

本文主要回顾了部分常用排序算法,包括冒泡排序,快速排序,选择排序,插入排序,希尔排序,以及归并排序。

  • 稳定性和算法复杂度

稳定性:飞机插毛,即归并排序,基数排序,插入排序,冒泡排序是稳定的。
平均算法复杂度:快堆龟,即快速排序,堆排序,归并排序是nlogn。
参考blog,含gif演示,注意:该文章中的算法有误。

继续阅读Java实现常用排序算法

本博客文章为原创内容,版权归作者所有。未经作者书面许可,不得擅自转载。如需转载,请注明原文链接和作者信息。违者将追究法律责任。

导入FaceNet的一些坑

简介

FacenNet是谷歌提出的一种新的人脸识别的方法,该方法在LFW数据集上的准确度已经达到了99.65%。

FaceNet论文

FaceNet实现

正文

上个周末,Milo在FaceNet的导入上踩了整整两天的坑,包括开发环境,源代码报错,运行异常等等。希望本文的粗糙填坑可以帮助到更多和Milo一样的人工智障爱好者和初学者。

继续阅读导入FaceNet的一些坑

本博客文章为原创内容,版权归作者所有。未经作者书面许可,不得擅自转载。如需转载,请注明原文链接和作者信息。违者将追究法律责任。

用CNN实现Digit Reconizer总结

背景简介

本文实现的是Kaggle竞赛平台上Getting Started级别的Digit Reconizer(即MNIST)。使用Tensorflow搭建了5层卷积神经网络(Convolutional Neural Network,简称CNN),最终取得测试成绩是0.98742。

继续阅读用CNN实现Digit Reconizer总结

本博客文章为原创内容,版权归作者所有。未经作者书面许可,不得擅自转载。如需转载,请注明原文链接和作者信息。违者将追究法律责任。

为什么梯度方向是函数局部上升最快的方向

谈机器学习,免不了要讲损失函数;讲损失函数,避不开梯度下降;运用梯度下降,必先确定梯度方向。为什么梯度方向是函数局部上升最快的方向?

继续阅读为什么梯度方向是函数局部上升最快的方向

本博客文章为原创内容,版权归作者所有。未经作者书面许可,不得擅自转载。如需转载,请注明原文链接和作者信息。违者将追究法律责任。

如何升级hexo的next主题

前言

自从毕业之后,Milo一直忙于工作,无暇管理独立博客。最近沉迷于机器学习实战,Milo想以博文的形式记录学习的心路历程,正好可以打理一下。

更新了一下Hexo,Milo发现Next主题都已经到了7.0的时代。怎么更新主题呢?

继续阅读如何升级hexo的next主题

本博客文章为原创内容,版权归作者所有。未经作者书面许可,不得擅自转载。如需转载,请注明原文链接和作者信息。违者将追究法律责任。

机器学习常用算法

前言

初学机器学习的时候,Milo毫无方向感。看过Ng的机器学习,看过《机器学习实战》,看过《西瓜书》,虽然对机器学习有个大概的了解,但仍无法很熟练地说出每个算法的具体内容,以及算法所属类别。

无意间,在CSDN上找到了一份大纲,感觉豁然开朗。特此转载,日后将逐渐完善每个算法的相关学习和介绍。

以下是算法大纲:

继续阅读机器学习常用算法

本博客文章为原创内容,版权归作者所有。未经作者书面许可,不得擅自转载。如需转载,请注明原文链接和作者信息。违者将追究法律责任。

八个步骤教你成功安装ArchLinux系统

本文实验环境

配件 配置
硬件 神舟笔记本K650D-i5 D3
硬盘 西数(WDC WD10JPLX-00MBPT0)
U盘制作软件 USBWriter
Arch系统ISO archlinux-2018.06.01-x86_64

注意:本文使用UEFI方式安装Arch Linux,所以首先请检查电脑是否支持UEFI启动。BIOS/MBR启动方式请不要继续往下看。

继续阅读八个步骤教你成功安装ArchLinux系统

本博客文章为原创内容,版权归作者所有。未经作者书面许可,不得擅自转载。如需转载,请注明原文链接和作者信息。违者将追究法律责任。