如何实现spring的动态配置
主要是应用了Spring 中的 XML schema 扩展机制,可以参考这篇文章https://www.cnkirito.moe/spring-xsd/
0x00 自定义 XML 扩展
为了搞懂 Spring 的 XML 扩展机制,最直接的方式便是实现一个自定义的扩展。实现的步骤也非常简单,分为四步:
编写一个 XML schema 文件描述的你节点元素。
编写一个 NamespaceHandler 的实现类
编写一个或者多个 BeanDefinitionParser 的实现 (关键步骤).
注册上述的 schema 和 handler。
项目中一个shutter.xml的如下,xmlns:shutter 定义了schema的名字,xsi:schemaLocation定义了schema的位置。shutter(百叶窗)是一个动态配置中心,从早期的百度开源的Disconf演变而来。
shutter.xml
1234567891011121314151617<?xml version="1.0" encoding="UTF-8"?> ...
初始音视频编解码器
0x000 常见的视频格式
对大部分人而言最熟悉的视频格式为MP4。但生活中,视频格式远不止MP4,早些年,青春无敌,熬夜在网吧下载教育片,嗯,就是你想的那个教育片,视频格式大部分是RMVB和AVI。目前,我们也能看到其他格式的视频:FLV、MKV、TS等。
严格来说,这些视频格式是封装格式。什么是封装格式?就是把视频和音频合并打包在一起的规范。如果仅仅通过封装格式判断音视频编码技术,是很难看出的。
在Mac端,在视频文件上点击右键“显示简介”,则能清晰看到编解码器,该视频采用了ACC和H.264对音频和视频进行压缩编码。其中,AAC是音频编码标准,H.264是视频编码标准。
在Windows系统中,下载 MediaInfo 可以查看音视频媒体信息。MediaInfo 用来分析视频和音频文件的编码和内容信息,是一款是自由软件 (免费使用、免费获得源代码)。他除了提供DLL之外,本身也提供GUI工具用于查看视频信息。Mediainfo-GUI的安装文件可以从Sourceforge上面下载,地址:http://sourceforge.net/projects/mediainfo/。源码可 ...
maven打jar包的插件汇总
说明
Maven 打包 jar 包可分为两种:可执行 jar 包和不可执行 jar 包。顾名思义,可执行就是可以通过命令启动程序:java -jar xxx-demo.jar,不可执行则使用该命令会报no main manifest attribute, in xxx.jar错误。
maven 打包 jar 包的四种方式
可执行 jar 包的必要条件:
程序代码中必须要有 main 方法;
在 jar 包中META-INF/MANIFEST.MF中指定Main-Class;
要能加载到依赖包。
不可执行 jar 包:
程序代码中是否有 main 方法无所谓
打成的 jar 包中META-INF/MANIFEST.MF中不会指定Main-Class。
依赖根据需要而决定。
不可执行 agent jar 包:
程序中需要有 premain 方法
打成的 jar 包中META-INF/MANIFEST.MF中要指定Premain-Class 以及 Agent-Class。
依赖需要打包。
使用maven-shade-plugin插件打包
使用maven-shade ...
模型训练无语意数据采集脚本
模型训练是一个耗时费力的活,除了现有的业务数据还需要采集一些其他资源作为补充语料。该脚本主要抓取“多人运动罗志祥”形象代言视频网站X8X8,目的是提取无语意的音频。
什么是无语意?无语意是指发出的声音没有明确的含义,比如一些“嗯”,“啊”,“哦”之类的声音,大家应该明白了什么是无语音了吧。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154 ...
URL编码问题和解决方式
URL编码相关的知识
图片和视频的URL地址中,path和参数均未编码,虽然目前大部分Http客户端能默认处理一些特殊字符,但是类似空格、=、+、&这些字符(串),http客户端默认无法处理,需要客户编码传入。
一些不符合URL编码的URL:
空格:HTTPclient默认则会截断,浏览器则会编码,编码为**%20或者+**。
=:Httpclient和浏览器均不会做编码,虽然=是参数键值对的连接符,但目前也能通过判断=前面是否有”&key“的形式,编码为 %3D
+:http客户端则会认为是空格的编码,但实际的编码为**%2B** (如下图)
&:则认为是两个参数之间的连接符,编码为 %26。
问题URL比较
URL
Result
差异
说明
https://sit-iot-media.oss-cn-beijing.aliyuncs.com/upload-temp/pic/20210420/19:35:01/f2456a6129354dd8add2e78eb8c8d3f0.png?Expires=1618918561&OSSAcce ...
通过反编译破解MongoDB客户端工具Studio 3T
本次破解的版本是:Studio 3T for MongoDB 2020.7.1
Studio 3T 是 MongoDB 非官方开源客户端 Robo 3T的高级版。Studio 3T 集成了 MongoDB的开发环境,拥有全面的功能界面和客户端功能,以及便捷、快速的特点,适用于Windows, Mac, 和Linux操作系统。
Studio 3T 新安装则会免费试用30天,之后就需要收费才能试用。网上给出的大多数教程是的windows系统下的删除注册表延长试用。
经过常看反编译的代码发现,Studio 3T 会在安装的过程中使用用户树根节点,将配置信息以k-v键值对的形式写在/3t/mongochef节点下面。
小提示:反编译查看入口类,也就是main方法,需要在 META-INF/MANIFEST.MF 文件清单中查看。
123456789101112131415161718192021222324// 该类在 t3.common.lic.c 包下public class j extends f { private final Preferences bJ; // ...
2021最新版Mac快速搭建PHP开发环境
一、前言
首先恭喜选择了mac来做PHP开发环境,mac 对PHPer不错,内置了PHP的apache环境以及php开发语言;唯独缺少mysql数据库;所以只用安装mysql即可;
本文中的链接,该翻墙的还是要翻墙的;重要的细节说三遍:翻墙!翻墙!翻墙!
二、推荐软件
Homebrew是MacOS 缺失的软件包管理器,能在Mac中方便的安装软件或者卸载软件, 只需要一个命令, 非常方便。
这里介绍几个简单常用的brew的语法即可;
常用命令
1.安装Homebrew命令
1/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
2.简洁帮助命令
1brew --help
3.安装软件命令
1brew install 软件名称
4.卸载软件命令
1brew uninstall 软件名称
5.查看软件信息
1brew info 软件名称
6.搜索软件
1brew search 软件名称
7.查看已安装软件列表
1brew list ...
Ubuntu 16.04编译安装PHP7.4稳定版
安装
下载 php-7.4.10并解压:
123wget https://www.php.net/distributions/php-7.4.10.tar.gztar -zxvf php-7.4.10.tar.gz cd php-7.4.10
编译
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172./configure \ --prefix=/usr/local/php \ --with-config-file-path=/etc \ --enable-fpm \ --with-fpm-user=www \ --with-fpm-group=www \ --enable-pdo \ --with-mysqli \ --with-pdo-mysql \ --with-mysql-sock \ --with-pdo-sqlite \ --with-i ...
中数PaaS项目现场技术支持问题记录
ASR 授权问题
在未改变任务网络配置的情况下,服务器搬迁到中数办公室,网卡接口和@王**、@张**再三确认,插入网线启动服务,发现 ASR 授权出现问题。
错误信息显示:the license does not match the device。但由于此时已到下午四点钟,中数下班,更多错误的信息无法获取到。
当时(12.11,周五)的网络配置信息,实际启动的网卡是 eno1:
网线插口,一开始是插入的错误的,经过确认之后插入到正确的接口:
然而,在周一(12.14)重启服务器之后,ASR 授权正常,第一时间我对网络做了查看,发现启动的网卡是 eno2。
经排查发现,两次的网卡启动不一致。我们的服务器网络做了 bond 虚拟处理,会根据实际启动的网卡做“漂移”。所以两次网卡信息不一致,deviceName 也就不一致,造成了 ASR 授权失败的情况。
但问题是 12.11日当时已经把网线插入到网口1 了,但是授权还是失败。那么问题就在 asr 获取网卡信息的时候,会不会当第一次获取的设备信息会缓存,就算后续的网卡已经设置为正确的,依然从缓存中拿取设备信息,造成授权的失败。
此 ...