JRebel 远程热部署 Spring boot 项目

2023-08-02
阅读 2 分钟
568
一. 基础工作准备反向代理[链接]启动./ReverseProxy_linux_amd64下载 jrebel[链接]下载 jrebel-2022.3.1-nosetup.zip, 不要用太新的, 新版本激活方法还没出来, 激活不了解压unzip jrebel-2022.3.1-nosetup.zip解压后生成一个 jrebel 目录用 uuidgen 生成一个 UUID, 甚至可以手写任意一个 UUID {代码...} 进入 jrebel 目...

Rust: 使用 sccache 进行编译加速

2022-10-27
阅读 1 分钟
2.6k
项目产生的 target 目录非常占用磁盘空间, cargo clean 清理后, 又需要重新编译, 非常耗费时间, 为此, 使用 sccache 来加速编译过程.

Let's encrypt 通配域名DNS验证方式的证书自动更新

2018-12-24
阅读 2 分钟
8.1k
通配符域名不同于一般的单域名证书. 为了解决之前一篇短文中通配域名通过DNS方式验证的证书自动更新问题. 需要使用到第三方域名提供商的API, 用于自动添加域名的TXT记录, 实现自动验证并完成证书更新过程.

Spring Security: 认证架构(流程)

2018-09-25
阅读 5 分钟
7.8k
Spring security 定义了一个过滤器链, 当认证请求到达这个链时, 该请求将会穿过这个链条用于认证和授权. 这个链上的可以定义1..N个过滤器, 过滤器的用途是获取请求中的认证信息, 根据认证方式进行路由, 把认证信息传递给对应的认证处理程序进行处理. 下面的示例图显示了Spring security中常用的认证过滤器.

Elixir: 函数装饰器

2017-05-06
阅读 2 分钟
4.6k
通过符号注解的方式, 给被注解的函数或对象添加新功能, 重写现有的功能, 而又不对现有的代码做变化的一种方法. 它对使用者是透明的. 通过装饰器可以实现的常用功能包括:

Elixir: 多太(Polymorphism)

2017-04-17
阅读 2 分钟
2.8k
多态(Polymorphism)按字面的意思就是"多种状态". 在面向对象语言中, 接口的多种不同的实现方式即为多态. 多态性是允许你将父对象设置成为一个或更多的他的子对象相等的技术, 赋值之后, 父对象就可以根据当前赋值给它的子对象的特性以不同的方式运作. 简单的说, 就是一句话: 允许将子类类型的指针赋值给父类类型的指针. ...

Elixir Ecto: 在Postgres中使用UUID类型的主键

2017-03-22
阅读 2 分钟
6.7k
使用UUID作为主键的目的 降低Serial类型这种自增ID线性特征, UUID作为随机生成的字符串, 让ID更离散, 增强系统的反爬虫能力(至少避免通过ID的线性增加来爬取内容这种最简单的爬取方式)

Elixir: 作为Elixir函数的SQL查询工具库 - Defsql

2017-02-04
阅读 2 分钟
3k
Elixir的世界是函数的世界. 这里没有对象, 没有实例. 在这种情况下, 我问我自己一个问题. 我真的需要ORM吗? 我的答案是: NO. 我需要数据. 直接来自于数据库的纯粹的数据. 另一个我思考的问题是: 我需要一个查询数据库的DSL吗? 答案同样是否定的: NO. 其实, 我们已经有了一个现成的数据库查询语言, SQL, 记得么? 如果我创...

使用 Elixir 开发嵌入式系统: 使用DS18B20传感器测量体温

2016-12-20
阅读 4 分钟
3.6k
文本, 我会使用一个Elixir实现的模块函数去读取连接到树莓派的DS18B20温度传感器的温度数值. 文本假设你熟悉 数字电路基础 Elixir编程基础 视频演示 [链接] 原料 树莓派3, B型(图片省略, 下文有) DS18B20传感器 4.7KΩ 电阻(一分钱一颗) 面包板(图片省略, 下文有) 公母头杜邦线 连接温度传感器 接线图 面包板内部连通图 ...

嵌入式系统开发: LinkIt™ Smart 7688 Duo物联网平台简介

2016-12-19
阅读 4 分钟
6.7k
觉得文章还不错的, 右上角的推荐. LinkIt™ Smart 7688 Duo 平台主要针对如下两个应用场景: 智能家居的家电控制 办公室设备控制

使用 Elixir 开发嵌入式系统: 串口调试

2016-12-13
阅读 2 分钟
5.3k
问: 为什么需要串口调试?答: 因为显示器直连Respberry Pi的HDMI的启动信息无法向上滚动, 无法查看完整的启动信息, 非常不方便硬件调试.

使用 Elixir 开发嵌入式系统: 小试身手

2016-12-08
阅读 5 分钟
6.5k
有C下面的驱动开发经验. 你对Erlang或Elixir比较熟悉, 有Erlang/Elixir的项目经验. 你有硬件开发相关的经验. 原材料 清单 明细 Respberry Pi 3 Model B 一个 HDMI 转 DVI显示输出数据线一根 USB 电源一个 16G SD卡一张 SD 卡读卡器 过程 创建 Nerves 项目 第一步, 创建外层项目和子项目 {代码...} 配置 Nerves 项目 修改...

Elixir Cookbook: 生成伞状项目

2016-11-24
阅读 1 分钟
2.1k
App 是一个自包含的代码单元, 每个App都有一个名字 有时候, 一个应用程序可能是被引用的以其他语言实现的库. 这对代码的可重用和模块化是一个非常好的方式, 但有时把所有App放在一个项目作为一个整体纳入版本控制之下, 允许更加方便的进行测试, 集成等等. 伞状项目就是作为一个容器包含一个或多个App, 让他们就像一个单...

Elixir Cookbook: 管理应用程序配置

2016-11-24
阅读 2 分钟
1.9k
Mix 任务运行在一个特定的环境之中. 预定义的环境为产品,开发和测试(prod, dev, 和test). 默认环境为 dev. 在本节中, 我们为每个环境的相同配置赋予不同的值. 并基于特定的配置, 在不同的环境中调用相同的函数输出不同的配置值.

Elixir: Kitto, 一个创建仪表盘(Dashboard)的框架

2016-11-23
阅读 2 分钟
4.4k
Kitto 是一个用 Elixir / React 开发的, 帮助你创建仪表盘的框架. 用途 主要用作实时监控服务器的各个运行指标. 比如在一个游戏服务器中,Kitto 通过 SSE(服务器事件流) 连接到管理服务器获取服务器的运行状态指标. 达到实时监控的目的.

Elixir Ecto: 使用Arbor在Postgresql中实现邻接列表与树的遍历

2016-11-21
阅读 2 分钟
2.3k
Arbor 项目地址 什么是CTEs? 使用CTEs实现Ecto的邻接列表与树的遍历. Arbor 使用 parent_id 和 CTEs创建简单的树状结构. 使用 {代码...} 获取根级节点 {代码...} 获取兄弟节点 {代码...} 获取祖先节点 获取当前节点的先辈节点, 从下网上返回所有父辈节点. 主要用于显示一个分类导航路径(类似网站的Breadcrumbs面包屑功能...

Elixir: Supervision树的启动策略可视化

2016-10-26
阅读 1 分钟
2.2k
对于一个容错系统, Elixir(Erlang)的Supervision树提供了4种策略, 名称分别为: :one_for_one, :one_for_all, :rest_for_one, :simple_one_for_one.

Elixir Phoenix: 自定义布局模板文件

2016-10-16
阅读 1 分钟
2.7k
作用域范围 基于作用域范围, 可以在如下几个层次设置布局模板文件 基于Render函数的自定义 特定于某个render函数调用的自定义布局模板文件设置 {代码...} 控制器 在控制器级别设置布局模板 {代码...} 基于路由 在路由中设置模板 {代码...} 不使用布局 我们知道 put_layout 可以用于在不同的范围内设置模板使用的布局文件...

MTProto协议第一部分: 云聊天

2016-10-16
阅读 6 分钟
17.2k
[链接] 云聊天(服务器-客户端加密) 图例分析 共享秘钥(auth_key), 持久化的, 通过DH生成 实际的数据总是包含时间, 长度, 序列, 接收端应该在解密后检查这几个字段. msg_key 为 Server Salt, Session ID, 和实际的数据 Payload 的SHA1值的低128位. 整个协议包嵌入到传输层(TCP,HTTP) 解密后 msg_key 必须等于获取到的数据...

Elixir Ecto: 使用Geo库操作空间数据(地理坐标)

2016-10-16
阅读 2 分钟
4.3k
简介 数据格式 Abbr Fullname Description WKT Well Known Text 空间数据的文本标识 WKB Well Known Binary 空间数据的二进制标识 GeoJSON GeoJSON 基于Javascript对象表示法的地理空间信息数据交换格式GeoJSON Elixir 的 Geo 库提供了上述三种格式的相互转换函数. 配置 添加依赖 {代码...} 配置扩展 {代码...} 创建/删...

Collectd & InfluxDb & Grafana 之四: 在Elixir应用程序中收集度量信息

2016-09-28
阅读 4 分钟
6k
Elixir经常被称赞为一个跑的快的语言. 特别是在分布式, 并发应用程序方面. 但是 "快" 如果没有测量指标, 重构会变得异常困难, 也难于判断是否性能得到改善.

Collectd & InfluxDb & Grafana 之三: 应用程序运行指标统计

2016-09-23
阅读 2 分钟
3.8k
通过Elixometer搜集Elixir的运行时统计信息, 并存储到InfluxDB中, 提供给Grafana进行可视化. 应用程序统计 添加依赖 {代码...} 配置 config/config.exs, 内容如下: {代码...} 配置 config/dev.exs, 内容如下: {代码...} 在程序中使用 编写一个模块 {代码...} 运行它 {代码...} 到此, 你的应用程序会每隔5秒向你的InfluxD...

Collectd & InfluxDb & Grafana 之二: Postgresql 统计

2016-09-19
阅读 7 分钟
4.2k
2016-09-27 更新: 数据库统计指标说明 Postgresql 统计图表配置 下载配置文件并导入, 然后根据自己的Collectd配置进行调整 [链接] 最后的效果如下图 Collectd 统计项 查看types.db文件中定义的Postgresql统计规范 {代码...} 第二个字段为数据源类型, types.db规范参考types.db.5.shtml 关于 Collectd 的 types.db 数据规...

Elixir Ecto: 使用非持久化的Ecto Schema验证GET参数

2016-09-14
阅读 2 分钟
2.2k
HTTP是文本协议, 传递给服务器的参数全部都是字符串, 要在Elixir中使用, 需要转换为合适的类型. 本文使用Ecto Changset内置的cast/3函数对数据类型进行转换. 使用 validate_* 系列函数对参数的值进行验证. Ecto 相关函数文档为 [链接]

Collectd & InfluxDb & Grafana 之一: 常用系统统计

2016-09-10
阅读 3 分钟
14.5k
Collectd 安装 {代码...} 配置 {代码...} InfluxDB 安装 {代码...} 启动 {代码...} 运行客户端influx创建数据库 {代码...} 编辑 /etc/influxdb/influxdb.conf, 找到 [[collectd]]部分, 修改如下 {代码...} 重启 {代码...} Grafana 安装 {代码...} {代码...} 配置 [链接] 网络流量统计 切换编辑模式, 然后输入自定义SQL查...

Erlang/Elixir: 用Distillery替换Exam打包器

2016-08-19
阅读 2 分钟
4.8k
Distillery 是一个新的在未来用于替换Exrm的Elixir应用程序发布工具. 它有比Exrm更快的构建速度, 完全用Elixir开发, 更灵活的配置, 目标是成为MIX本身的一部分, 作为Elixir的标准工具.

Erlang/Elixir: 外部通信之-C节点

2016-08-13
阅读 10 分钟
5.2k
系列:Erlang/Elixir: 外部通信之-NIFErlang/Elixir: 外部通信之-端口驱动Erlang/Elixir: 外部通信之-C节点 C节点使用Erlang提供的 Erl_Interface 与 Erlang VM进行交互, 因此需要在C文件中包含头文件:#include "erl_interface.h" 2016-08-14 更新: C节点多线程示例 [链接]

Erlang/Elixir: 外部通信之-端口驱动

2016-08-12
阅读 9 分钟
5.3k
系列:Erlang/Elixir: 外部通信之-NIFErlang/Elixir: 外部通信之-端口驱动Erlang/Elixir: 外部通信之-C节点 本文是Erlang/Elixir和外部世界通信的第一篇, 阐述了端口驱动的基本概念以及和外部世界的通信方式, 目前主要有如下几种方式 NIF Port Port driver C node 这一篇文章从端口驱动开始讲起, 后续的文章我会介绍其他...

Elixir Ecto: 范围数据类型

2016-08-10
阅读 3 分钟
2.9k
从 PostgreSQL 9.2 以来, 可以用特定的操作符和函数存储和查询一个值的范围. 这是一个非常不错的特性, 比如在电子商务应用程序方面, 可以用一个字段 price_range 来替代 min_price, max_price 表示一个价格范围.

Elixir Plug: 配置HTTPS支持

2016-08-08
阅读 1 分钟
3.2k
基于 Elixir Plug: 使用Plug开发Web应用程序, 阐述了如何在配置Plug的SSL支持. 过程 第一步: 生成秘钥和证书 {代码...} 第二步: 生成DH参数 {代码...} 这里为了省时使用1024, 正式环境建议4096, 大概半个小时的生成时间. 配置 Worker {代码...} 启动 {代码...} 测试 [链接] [链接] 如何测试 {代码...}