2022 08-12

async...await在tcp通讯中的正确用法

引言     编程能力在不断的总结中进步以及成长,最近的半年里,对之前的开源项目代码进行回归,在重构的过程中进行了很多思考,很多次都想放弃重构,毕竟一个已经在使用的项目,重构基础代码就相当于重新开发了,不过最终还是下定了决心,毕竟重构就是一个成长过程,要想进步,就要不断的发现原有代码的不足,使用新的思维去优化原来的东西,在重构的过程中,针对tcp网络通讯,我有了新的思路。 简介     无论是网上的tcp示例或者书本的示例,只要是异步方式,读写基本都是分离的,也就是说如果想通过tcp去和

2022 08-12

一个注解搞定SpringBoot接口定制属性加解密

前言 上个月公司另一个团队做的新项目上线后大体上运行稳定,但包括研发负责人在内的两个人在项目上线后立马就跳槽了,然后又交接给了我这个「垃圾回收人员」。 本周甲方另一个厂家的监控平台扫描到我们这个项目某些接口的一些敏感信息没有做加密,要求我们立马处理。 检查了一下发现还真是这样,手机、身份证号什么的都没脱敏,心里顿时一万头神兽在奔腾。 还好,我有长期应对这类突发事情的经验,直接写了一个自定义注解,然后在需要加解密的接口上加上,和前端一联调,欧克搞定,之后脸上保持沉重,但内心淡定摸鱼,好不潇洒。

2022 08-12

痞子衡嵌入式:聊聊i.MXRT1170双核下不同GPIO组的访问以及中断设计

  大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是i.MXRT1170双核下不同GPIO组的访问以及中断设计。   在双核i.MXRT1170下设计应用程序,有一个比较重要的考虑点是片内外设资源共享以及任务分配问题,同样一个任务既可以放在默认主核CM7下做,也可以放在默认从核CM4下去完成。如果这个任务跟片内外设有关,那就得考虑该外设是否在两个核下设计与使用一致,这样任务才可以在两个核下随意切换,这在项目开始前必须要调研清楚。   今天痞子衡和大家聊一聊i.MXRT1170的

2022 08-12

多环境配置 - SpringBoot 2.7.2 实战基础

优雅哥SpringBoot2.7.2实战基础-06-多环境配置 在一个项目的开发过程中,通常伴随着多套环境:本地环境local、开发环境dev、集成测试环境test、用户接受测试环境uat、预生产环境pre、生产环境prod。本节的内容有些脱离真实企业开发,因为在真实的企业开发中,不会只开发一个独立的服务,而是多个微服务。发展至今,云原生也越来越普遍。面对多套环境,通常是”一套代码+配置中心“的方式,将代码编译打包后,在启动服务时或服务运行过程中,从配置中心读取配置,保证各个环境代码完全一致,仅

2022 08-12

WebGPU的计算着色器实现冒泡排序

大家好~本文使用WebGPU的计算着色器,实现了奇偶排序。奇偶排序是冒泡排序的并行版本,在1996年由JKornerup提出。它解除了每轮冒泡间的串行依赖以及每轮冒泡内部的串行依赖,使得冒泡操作可以并行执行 目录 介绍奇偶排序算法 分析时间复杂度 需求 初步设计 代码实现 发现问题 改进设计 相关代码实现 改进设计 相关代码实现 限制 总结 参考资料 最终版本的代码在这里 介绍奇偶排序算法 假设待排序的数组为Arr1在奇数步中,Arr1中奇数项与相邻的右边一项比较和交换;在偶数步

2022 08-12

都说Dapper性能好,突然就遇到个坑,还是个性能问题

本来闲来无事,准备看看Dapper扩展的源码学习学习其中的编程思想,同时整理一下自己代码的单元测试,为以后的进一步改进打下基础。突然就发现问题了,源码也不看了,开始改代码,改了好久。 测试Dapper.LiteSql数据批量插入的时候,耗时20秒,感觉不正常,于是我测试了非Dapper版的LiteSql的批量插入,仅需100毫秒,速度差了200倍。同样的数据库、同样的Npgsql.dll、同样的测试代码,产生的SQL和参数集合也是一样的,最后不得不怀疑Dapper。引用Dapper的源码,修改调

2022 08-12

Java 注解及其底层原理

目录 什么是注解? 注解的分类 Java自带的标准注解 元注解 @Retention @Documented @Target @Inherited @Repeatable 自定义注解 自定义注解的读取 示例:注解模拟访问权限控制 尾语 作者:小牛呼噜噜|https://xiaoniuhululu.com计算机内功、JAVA底层、面试相关资料等更多精彩文章在公众号「小牛呼噜噜」 什么是注解? 当我们开发SpringBoot项目,我们只需对启动类加上@SpringBoot

2022 08-12

深入详解Mybatis的架构原理与6大核心流程

MyBatis是Java生态中非常著名的一款ORM框架,目前在一线互联网大厂中应用广泛,Mybatis已经成为了一个必会框架。 如果你想要进入一线大厂,能够熟练使用MyBatis开发已经是一项非常基本的技能,同时大厂也更希望自己的开发人员深入了解MyBatis框架的原理和核心实现。 从这个角度看,理解MyBatis原理,阅读MyBatis核心源码,这样更有利于提高职场竞争力。 在深入了解Mybatis的源码之前,我们先了解一下Mybatis的整体架构和工作原理,这样有助于我们在阅读源码过程中了

2022 08-12

详解ConCurrentHashMap源码(jdk1.8)

ConCurrentHashMap是一个支持高并发集合,常用的集合之一,在jdk1.8中ConCurrentHashMap的结构和操作和HashMap都很类似: 数据结构基于数组+链表/红黑树。 get通过计算hash值后取模数组长度确认索引来查询元素。 put方法也是先找索引位置,然后不存在就直接添加,存在相同key就替换。 扩容都是创建新的table数组,原来的数据转移到新的table数组中。 唯一不同的是,HashMap不支持并发操作,ConCurrentHashMap是支持并发操作的

2022 08-12

如何有效进行回顾会议(中)?

组织开展运行良好的回顾会议能帮助团队做出改进和进行下一步的行动,那么到底应该如何进行有效的回顾呢?以下是一些需要重点关注的事情,掌握以下要素不仅可以帮助团队提高效率、增加乐趣,逐步减小或消除人们对于Scrum的误解。 一、明确会议的基本规则 明确的会议规则应该成为团队工作协议的一部分。理想情况下,这些规则是针对具体行为的(例如“陈述观点并提出真正的问题”)而不是抽象的(例如“尊重”)。同时,这些规则应该由团队创建、维护并由团队所有。 那如何确定这些基本规则呢?可以让团队成员都试着回忆下自己最近