我是一个软件开发工程师

乐观 积极 生活如此精彩

总有快乐的事情降临

这是一个精彩的世界,不是吗?

技术精要

这里是我的一些你可能需要的技术摘要

动画与效果

一些常见的动画和效果

算法与逻辑

常用的算法和逻辑推导

性能与技巧

关于性能和技巧方面的总结

Arm架构AI环境配置

机器人开发环境搭建

第1步:安装基本环境

apt install libcairo2-dev libpixman-1-dev libgoogle-glog-dev libgflags-dev libsuitesparse-dev libatlas-test libatlas-base-dev liblapack-dev libblas-dev libboost-dev libmetis-dev

第2步:安装说明文档

apt install libcairo2-doc libgoogle-glog-doc libgflags-doc libsuitesparse-doc libatla[......]

继续阅读

Arm架构服务器环境配置

Mysql

#安装
apt-get install default-mysql-server
#启动
#1.使用 service 启动:
service mysql start
#2.使用 mysqld 脚本启动:
/etc/inint.d/mysql start
#3.进入:mysql
进入:mysql
#4.修改密码:
set password for root@localhost = password('123456');

根据源的服务器不同,安装时长不同,尽量选择速度较好的服务器。

Mongodb

1、Mongodb官网下载安装文件,参考下面图片的内容下载,下载arm64位,[……]

继续阅读

Arm架构环境配置

Python3.7

一般自带或者自己安装,我的是系统自带的3.7.3。

Arm架构环境配置

Python3.8

1. 安装python3.8,但是不要卸载系统以前的python3.7.3版本,相当于新增一个python3.8版本在系统中。
#下载python3.8
wget https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tgz#解压python3.8
tar zxvf Python-3.8.0.tgz
#cd 到解压后的目录中
cd Python-3.8.0 
2. –prefix 执行编译后的安装路径,可以设定自己的安装目录,也可以不[……]

继续阅读

Arm架构系统配置

明天除夕,今年不回家,刚加完班。

ssh连接

不需任何配置直接用ssh root@192.168.110.3 -p9022命令连接,密码:123456

上面的IP地址替换设备IP地址,在命令行中输入ifconfig查看IP地址。

Arm架构系统配置

ssh已经配置好了,如果没有高级需求可以不用改动,修改ssh配置文件。

  • 修改ssh密码

设置root账号的密码

passwd

输入新的密码

New password:

再次确认密码

Retype new password:

Arm架构系统配置

  • 查看手机或Arm板卡的ip地址

命令:

ifconfig

假设i[……]

继续阅读

数学思想的代码实现

整理一下,以便以后查阅。

前言

数学符号可以表示不同的意思,这取决于作者,上下文和所学习的领域(线性代数,集合理论,等等)。

简单起见,这里许多的代码示例都操作浮点数值。

目录

双调排序

什么是双调排序

百度百科:

双调排序(bitonic sort)属于排序网络(Sorting Network)的一种。相较于传统的排序算法,排序网络真正的研究价值在于,假如有机器可以同时处理多个比较器,排序的速度将大幅度提高。简单来说,它是一种可以并行计算的排序算法。

very good的百度解释。

简单说:双调排序是比较顺序与数据无关的排序方法,特别适合做并行计算,例如用GPU、FPGA来计算。当要排序的数的个数不是2的幂时,处理时较为困难。

算法实现

以下是个简单实现:

function kernel(x, p, q) {
  const d = 1 << (p[......]

继续阅读

ES262 Map的简单理解

新版ES262的Map应该和HasMap类似,理解HashMap基本就能理解Map,以下所有代码均为逻辑代码。

Map数据结构

数据结构中有数组和链表来实现对数据的存储,但这两者基本上是两个极端。

数组方式

数组存储区间是连续的,占用内存严重,故空间复杂的很大。但数组的二分查找时间复杂度小,为O(1);数组的特点是:寻址容易,插入和删除困难;

链表方式

链表存储区间离散,占用内存比较宽松,故空间复杂度很小,但时间复杂度很大,达O(N)。链表的特点是:寻址困难,插入和删除容易。

哈希表方式

直接综合两者的特性,做出一种寻址容易,插入删除也容易的数据结构,就是哈希表。哈希表((Ha[……]

继续阅读

消息队列遥测传输

IoT 和M2M 相关技术需要使用一种传递和连接的方式来远程传递和接受信息。

我们希望这种协议满足以下要求:

  • 占用空间小
  • 功耗小
  • 带宽占用小
  • 延迟小
  • 发布-订阅

MQTT协议

百度百科的解释:

MQTT(消息队列遥测传输)是ISO 标准(ISO/IEC PRF 20922)下基于发布/订阅范式的消息协议。它工作在 TCP/IP协议族上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的发布/订阅型消息协议,为此,它需要一个消息中间件 。
MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这[……]

继续阅读

组件编程四

组件封装好后,与常用的框架或库类似。

当全局样式和组件内样式能够很好的控制后,下面对之前的自定义组件进行完善:

<template id="new-template">
    <div class="wrapper">
        <div class="overlay"></div>
        <div class="dialog" role="dialog" aria-labelledby="title" aria-describedby="content">
            <button clas[......]

继续阅读

组件编程三

样式覆盖

自定义组件的问题在于样式覆盖:

<style type="text/css">
    button {
      background: #8B008B;
      color: white;
      padding: 2ch 4ch;
      border: 0;
      font-size: 1.5ch;
    }
</style>
<wa-o>
  <button>WaO</button>
</wa-o>
class WaO extends HTMLElement {

  co[......]

继续阅读