首页
友情链接
Search
1
centos 7 部署ollama 本地大模型并使用open-webui 可视化
2,047 阅读
2
利用calibre-web搭建私人书库
1,152 阅读
3
webStrom 通过electron创建第一个桌面程序
923 阅读
4
AdGuardHome 个人DNS服务器搭建记录
775 阅读
5
gitee 发了个人生第一个开源项目
715 阅读
默认分类
kafka
JavaScript
linux
java
vue
自建服务
spring
登录
Search
标签搜索
kafka
vue
docker
electron
JavaScript
spring
quartz
图床
Nginx
spring boot
宝塔
aria2
webUI
docker-compose
Python
小程序
SUI Mobile
k8s
html
PotPlayer
Abdulla
累计撰写
43
篇文章
累计收到
39
条评论
首页
栏目
默认分类
kafka
JavaScript
linux
java
vue
自建服务
spring
页面
友情链接
搜索到
4
篇与
的结果
2023-12-07
充电桩互联互通 AES 参数加解密(Hutool实现)
PileSignUtils 充电桩互联互通 AES 参数加解密import cn.hutool.crypto.digest.HMac; import cn.hutool.crypto.digest.HmacAlgorithm; import cn.hutool.crypto.symmetric.AES; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.Date; public class PileSignUtils { private static Logger logger = LoggerFactory.getLogger(PileSignUtils.class); /** * aes 加密 * @param params 待加密参数 * @param dataSecret 密钥 * @param dataSecretIV 密钥向量 * @return 解密结果 */ public static String signParams(String params,String dataSecret,String dataSecretIV){ AES aes = new AES("CBC","PKCS5Padding",dataSecret.getBytes(),dataSecretIV.getBytes()); return aes.encryptBase64(params); } /** * aes 加密 * @param params 待加密参数 * @param dataSecret 密钥 * @param dataSecretIV 密钥向量 * @return 解密结果 */ public static String decryptParams(String params,String dataSecret,String dataSecretIV){ AES aes = new AES("CBC","PKCS5Padding",dataSecret.getBytes(),dataSecretIV.getBytes()); return aes.decryptStr(params); } public static String getSign(String data,String signSecret,String platformId){ long timeStamp = new Date().getTime(); int nextSequence = SequenceGenerator.getNextSequence(); int len = 64-signSecret.length(); if (signSecret.length()<64){ for (int i = 0; i < len; i++) { signSecret = signSecret + "0"; } } logger.info(signSecret); byte[] key = signSecret.getBytes(); HMac mac = new HMac(HmacAlgorithm.HmacMD5, key); String str = mac.digestHex(data); return str; }
2023年12月07日
212 阅读
7 评论
0 点赞
2023-12-07
充电桩互联互通 hmac-md5加密算法
HmacMd5Signatureimport java.nio.charset.StandardCharsets; import java.security.MessageDigest; import java.util.Arrays; public class HmacMd5Signature { private static final byte IPAD = 0x36; private static final byte OPAD = 0x5C; public static String hmacMd5(String data, String sigSecret) throws Exception { byte[] keyBytes = sigSecret.getBytes(StandardCharsets.UTF_8); byte[] dataBytes = data.getBytes(StandardCharsets.UTF_8); byte[] paddedKey = Arrays.copyOf(keyBytes, 64); byte[] xorIpad = new byte[64]; byte[] xorOpad = new byte[64]; for (int i = 0; i < 64; i++) { xorIpad[i] = (byte) (paddedKey[i] ^ IPAD); xorOpad[i] = (byte) (paddedKey[i] ^ OPAD); } MessageDigest md = MessageDigest.getInstance("MD5"); md.update(xorIpad); md.update(dataBytes); byte[] hashIpad = md.digest(); byte[] finalData = new byte[64 + hashIpad.length]; System.arraycopy(xorOpad, 0, finalData, 0, 64); System.arraycopy(hashIpad, 0, finalData, 64, hashIpad.length); md.reset(); md.update(finalData); byte[] hmacMd5 = md.digest(); StringBuilder result = new StringBuilder(); for (byte b : hmacMd5) { result.append(String.format("%02x", b)); } return result.toString().toUpperCase(); }
2023年12月07日
140 阅读
0 评论
1 点赞
2022-08-03
Java 写Avi(烽火sdk)
public class OnCtsSdkCallBack implements CtsSdk.OnCtsSdkCallBack{ private static Logger logger = LoggerFactory.getLogger(OnCtsSdkCallBack.class); private static OnCtsSdkCallBack instance = new OnCtsSdkCallBack(); private byte[] G_buffer = new byte[0]; private Map<Integer,byte[]> G_bufferMap = new HashMap<>(); private static final String pcmFilePath = "/data/audios/"; private SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss"); private int devName=0; private String fname = devName + "_" + dateFormat.format(new Date())+".wav"; private String filename = pcmFilePath+fname; private KafkaSender kafkaSender; private int writeNum = 0; //采样率 private static float RATE = 16000f; //编码格式PCM private static AudioFormat.Encoding ENCODING = AudioFormat.Encoding.PCM_SIGNED; //帧大小 16 private static int SAMPLE_SIZE = 16; //是否大端 private static boolean BIG_ENDIAN = false;//true //通道数 private static int CHANNELS = 1; public OnCtsSdkCallBack() { } public static OnCtsSdkCallBack getInstance() { return instance; } public KafkaSender getKafkaSender() { return kafkaSender; } public void setKafkaSender(KafkaSender kafkaSender) { this.kafkaSender = kafkaSender; } public static byte[] byteMerger(byte[] a, byte[] b){ byte[] temp = new byte[a.length+b.length]; System.arraycopy(a,0,temp,0,a.length); System.arraycopy(b,0,temp,a.length,b.length); return temp; } @Override public int invoke(int eCbType, Pointer pParam, int dwSize, int usr_data) throws IOException, ClassNotFoundException { switch (eCbType) { case CB_Event_TermRegister: CtsSdk.TSdkEventTermRegister tSdkTermRegister = null; assert false; ToolKits.GetPointerDataToStruct(pParam, 0, tSdkTermRegister); break; case CB_Event_TermConnect: break; case CB_Data_TermMp3L: break; case CB_Data_TermMp3R: System.out.println("____________________"); break; case CB_Data_TermPcmL: CtsSdk.TSdkDataTermPcmL tSdkDataTermPcmL = new CtsSdk.TSdkDataTermPcmL(); ToolKits.GetPointerDataToStruct(pParam, 0, tSdkDataTermPcmL); Pointer pPcmData = tSdkDataTermPcmL.pPcmData; if (pPcmData == null){ return 0; } if (tSdkDataTermPcmL.dwTermID != devName){ devName = tSdkDataTermPcmL.dwTermID; fname = devName + "_" + dateFormat.format(new Date())+".wav"; filename = pcmFilePath+fname; } byte[] p_recive_buf = pPcmData.getByteArray(0, tSdkDataTermPcmL.nDataSize); //判断缓存数组是否超过2048字节,如果超出则写入队列,然后清空数组 byte[] G_bytes = null; if (null == G_bufferMap.get(devName)){ G_bytes = new byte[0]; }else { G_bytes = G_bufferMap.get(devName); } int p_gBufferLen = G_bytes.length; int p_reciveBufferLen = p_recive_buf.length; int p_totalLen = p_gBufferLen + p_reciveBufferLen; if(p_totalLen >= Constance.maxByte){ writeNum ++; logger.info("写入次数:{},文件路径:{}",writeNum,filename); byte[] temBuffer01 = new byte[Constance.maxByte-p_gBufferLen]; System.arraycopy(p_recive_buf,0,temBuffer01,0,Constance.maxByte-p_gBufferLen); G_bytes = byteMerger(G_bytes,temBuffer01); InputStream b_in = new ByteArrayInputStream(G_bytes); AudioFormat format = new AudioFormat(ENCODING,RATE, SAMPLE_SIZE, CHANNELS, (SAMPLE_SIZE / 8) * CHANNELS, RATE, BIG_ENDIAN); AudioInputStream stream = new AudioInputStream(b_in, format, G_bytes.length); File file = new File(filename); int writeResult = AudioSystem.write(stream, AudioFileFormat.Type.WAVE, file); JSONObject params = new JSONObject(); params.put("deviceId",devName); params.put("audioUrl",this.getKafkaSender().getAudioNginxFile()+fname); logger.info("kafka消息内容:{}",JSONObject.toJSONString(params)); this.getKafkaSender().send("audio-sensor-topic",JSONObject.toJSONString(params)); fname = devName + "_" + dateFormat.format(new Date())+".wav"; filename = pcmFilePath + fname; G_bytes = new byte[0]; byte[] temBuffer02 = new byte[p_totalLen-Constance.maxByte]; System.arraycopy(p_recive_buf,Constance.maxByte-p_gBufferLen,temBuffer02,0,p_totalLen-Constance.maxByte); G_bytes = byteMerger(G_bytes,temBuffer02); G_bufferMap.remove(devName); } else { G_bytes = byteMerger(G_bytes,p_recive_buf); G_bufferMap.put(devName,G_bytes); } return 0; case CB_Data_TermPcmR: break; case CB_Data_TermAudio://播放音频 break; } return 0; } /** * byte转对象 * * @param bytes * @return */ private Object ByteToObject(byte[] bytes) { Object obj = null; try { // bytearray to object ByteArrayInputStream bi = new ByteArrayInputStream(bytes); ObjectInputStream oi = new ObjectInputStream(bi); obj = oi.readObject(); bi.close(); oi.close(); } catch (Exception e) { System.out.println("translation" + e.getMessage()); e.printStackTrace(); } return obj; } public static void main(String[] args) { Map<Integer,byte[]> myMap = new HashMap<Integer,byte[]>(0); byte[] bytes = null; if (null == myMap.get(123)){ bytes = new byte[0]; } System.out.println("bytes = " + bytes.length); myMap.put(123,new byte[1024]); byte[] bytes1 = myMap.get(123); System.out.println("bytes = " + bytes1.length); } }
2022年08月03日
207 阅读
0 评论
1 点赞
2021-10-29
Spring Data Jpa 实现in查询
protected Specification<AitpModel> createSpecification(AitpModelCriteria criteria) { Specification<AitpModel> specification = new Specification<AitpModel>() { @Override public Predicate toPredicate(Root<AitpModel> root, CriteriaQuery<?> criteriaQuery, CriteriaBuilder criteriaBuilder) { List<Predicate> list = new ArrayList<Predicate>(); if (null!=criteria.getModelType()){ String modelType = criteria.getModelType().getEquals(); if (!StringUtils.isEmpty(modelType)) { if (modelType.contains(",")) { // in查询 String[] ids = modelType.split(","); CriteriaBuilder.In<Object> in = criteriaBuilder.in(root.get("modelType")); for (int i = 0; i < ids.length; i++) { in.value(ids[i]); } list.add(in); } else { // 普通查询 list.add(criteriaBuilder.equal(root.get("modelType").as(String.class), modelType)); } } } return criteriaBuilder.and(list.toArray(new Predicate[list.size()])); } }; if (criteria != null) { if (criteria.getId() != null) { specification = specification.and(buildRangeSpecification(criteria.getId(), AitpModel_.id)); } if (criteria.getUserId() != null) { specification = specification.and(buildRangeSpecification(criteria.getUserId(), AitpModel_.userId)); } if (criteria.getPicCover() != null) { specification = specification.and(buildStringSpecification(criteria.getPicCover(), AitpModel_.picCover)); } if (criteria.getModelName() != null) { specification = specification.and(buildStringSpecification(criteria.getModelName(), AitpModel_.modelName)); } // if (criteria.getModelType() != null) { // specification = specification.and(buildStringSpecification(criteria.getModelType(), AitpModel_.modelType)); // } if (criteria.getLanguage() != null) { specification = specification.and(buildStringSpecification(criteria.getLanguage(), AitpModel_.language)); } if (criteria.getFramework() != null) { specification = specification.and(buildStringSpecification(criteria.getFramework(), AitpModel_.framework)); } if (criteria.getType() != null) { specification = specification.and(buildStringSpecification(criteria.getType(), AitpModel_.type)); } if (criteria.getScope() != null) { specification = specification.and(buildStringSpecification(criteria.getScope(), AitpModel_.scope)); } if (criteria.getModelVersion() != null) { specification = specification.and(buildStringSpecification(criteria.getModelVersion(), AitpModel_.modelVersion)); } if (criteria.getModelUseInstructions() != null) { specification = specification.and(buildStringSpecification(criteria.getModelUseInstructions(), AitpModel_.modelUseInstructions)); } if (criteria.getOutputPath() != null) { specification = specification.and(buildStringSpecification(criteria.getOutputPath(), AitpModel_.outputPath)); } if (criteria.getCreateWay() != null) { specification = specification.and(buildStringSpecification(criteria.getCreateWay(), AitpModel_.createWay)); } if (criteria.getProjectId() != null) { specification = specification.and(buildRangeSpecification(criteria.getProjectId(), AitpModel_.projectId)); } if (criteria.getJobId() != null) { specification = specification.and(buildRangeSpecification(criteria.getJobId(), AitpModel_.jobId)); } if (criteria.getFilePath() != null) { specification = specification.and(buildStringSpecification(criteria.getFilePath(), AitpModel_.filePath)); } if (criteria.getAccuracy() != null) { specification = specification.and(buildStringSpecification(criteria.getAccuracy(), AitpModel_.accuracy)); } if (criteria.getModelFormat() != null) { specification = specification.and(buildStringSpecification(criteria.getModelFormat(), AitpModel_.modelFormat)); } if (criteria.getModelLabelType() != null) { specification = specification.and(buildStringSpecification(criteria.getModelLabelType(), AitpModel_.modelLabelType)); } if (criteria.getDelFlag() != null) { specification = specification.and(buildStringSpecification(criteria.getDelFlag(), AitpModel_.delFlag)); } if (criteria.getRemark() != null) { specification = specification.and(buildStringSpecification(criteria.getRemark(), AitpModel_.remark)); } if (criteria.getCreateBy() != null) { specification = specification.and(buildStringSpecification(criteria.getCreateBy(), AitpModel_.createBy)); } if (criteria.getCreateTime() != null) { specification = specification.and(buildRangeSpecification(criteria.getCreateTime(), AitpModel_.createTime)); } if (criteria.getUpdateBy() != null) { specification = specification.and(buildStringSpecification(criteria.getUpdateBy(), AitpModel_.updateBy)); } if (criteria.getUpdateTime() != null) { specification = specification.and(buildRangeSpecification(criteria.getUpdateTime(), AitpModel_.updateTime)); } if (criteria.getOrganizationId() != null) { specification = specification.and(buildRangeSpecification(criteria.getOrganizationId(), AitpModel_.organizationId)); } } return specification; }
2021年10月29日
216 阅读
0 评论
0 点赞