SpringBoot-监听应用启动
说明 场景:在 SpringBoot 应用启动后执行某些操作 以下提供 3 种方式,监听 SpringBoot 应用启动 方案一ApplicationListener<ApplicationReadyEvent> 1234567891011import org.springframework.context.ApplicationListener;import org.springframework.stereotype.Component;@Componentpublic class ApplicationEventListener implements ApplicationListener<ApplicationReadyEvent> { @Override public void onApplicationEvent(ApplicationReadyEvent event) { System.out.println("Application is now ready and...
程序员如何自我成长
发表于|成长
程序员如何自我成长反面示例 基础不扎实,编码效率低。网上复制粘贴代码,各种踩坑。对代码不能完全理解,碰运气,没问题万事大吉,有问题再复制粘贴。修改、调试成本很高,浪费大量时间 不知道使用工具,例如代码质量检测工具、代码生成器、AI 工具等。浪费大量时间在重复性、低价值的环节上 对业务的理解只考虑细节,不做抽象,编码层面上缺少设计,直接写具体代码。不具有复用性,耦合度很高,灵活性、扩展性很差 产品设计不到位的地方,编码层面上也完全不做灵活性、扩展性方面的考虑,哪怕是一定程度上的灵活性 代码不规范,团队每个人按照自己的习惯写。注释不准确、不清晰,可读性很差 开发完一个功能,除了代码成果,没有文档输出 正面示例 Java 基础方面多温习、多练习。例如常见的数据结构、算法,集合框架、异常处理、反射、注解、泛型、多线程等 借助工具提高开发效率,尽量少做重复性高、低价值的工作 编码前先整体设计,面向接口编程,而不是面向实现类编程。根据情况封装代码,把细节封装在内部,只暴露对外需要的接口。具备抽象能力,封装、复用思想,提高代码灵活性、扩展性。熟悉 SOLID...
SpringBoot-CommandLineRunner
说明 CommandLineRunner 是 Spring Boot 提供的一个接口,它定义了一个 run 方法 在应用启动完成之后执行。这个接口可以用来执行一些一次性任务或者初始化操作,比如填充数据库、加载静态数据等 用途 数据初始化:可以在应用启动后立即向数据库添加默认数据。 环境检查:检查应用运行所需的环境配置是否正确。 资源预加载:预先加载一些资源,如缓存数据等。 诊断信息输出:输出一些诊断信息,帮助调试和监控应用的状态。 使用要在 Spring Boot 应用中使用 CommandLineRunner,你可以创建一个实现了 CommandLineRunner 接口的类,并通过 @Bean 等注解将其注册到 Spring 容器中。例如: 12345678910111213import org.springframework.boot.CommandLineRunner;import org.springframework.stereotype.Component;@Component@Order(1)public class...
SpringBoot-注解
发表于|SpringBoot-注解
原文:SpringBoot 注解最全详解,建议收藏! (qq.com) SpringMVC 相关@Controller通常用于修饰controller层的组件,由控制器负责将用户发来的URL请求转发到对应的服务接口,通常还需要配合注解@RequestMapping使用。 @RequestMapping提供路由信息,负责URL到Controller中具体函数的映射,当用于方法上时,可以指定请求协议,比如GET、POST、PUT、DELETE等等。 @RequestBody表示请求体的Content-Type必须为application/json格式的数据,接收到数据之后会自动将数据绑定到Java对象上去 @ResponseBody表示该方法的返回结果直接写入HTTP response body中,返回数据的格式为application/json 比如,请求参数为json格式,返回参数也为json格式,示例代码如下: 123456789101112131415161718/** * 登录服务...
Ewebeditor
发表于|Ewebeditor
说明 ewebeditor 没有设置序列号,则编辑器不能正常加载 使用其它站点序列号,修改其中 ip 或域名为当前站点 ip 或域名,则编辑器能正常加载,但 word 粘贴功能受限 123456789ewebeditor 登录地址:http://ip:port/ewebeditor/admin/login.jsp账号密码「默认」: admin admin账号密码也可以在 ewebeditor/jsp/config.jsp 文件头部查看序列号示例「word 粘贴功能受限」2:48699:3:2:1::106.12.193.33:d6ac1d1248b005dfaa8bfd3ab5eb664b2:55353:3:2:1::172.16.166.53:fef77c57623fe2cd2bdd4ab8d52349e12:57303:3:2:1::192.168.1.112:79dc72b9100c39cac9ad5dcbc2bedd7a2:56502:3:2:1::106.13.39.73:32de418372e1907001c0c7c24c44f9ff 每个站点都需要...
Uniapp-接入企业微信客服
发表于|Uniapp-接入企业微信客服
参考uniapp接入企业微信客服 – 月半猪博客 (fatterpig.com) 步骤 打开企业微信-应用管理-微信客服 企业微信 (qq.com) 启用微信客服 客服账号-创建账号,选择公司 人工接待配置,添加人员 选择接入场景 在App中接入:在App中接入 (qq.com) 代码示例 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253//界面代码<u-tag :text="$t('联系客服')" shape="circle" class="u-m-r-30" @click="chat" type="info" />//方法chat() { //WORKWXCORPID 企业ID //WORKWXURL 企业客服链接 // #ifdef H5 //...
加密数据如何实现模糊查询
发表于|技术方案
解密后存储到内存「不推荐」准备 将数据加载到内存中,将密文数据解密得到明文 创建映射Map,例如明文—数据 ID,存储到内存 数据新增、修改【密文数据更新】、删除时,需要同步更新内存中的数据 使用 后端代码,从内存中取出映射数据,根据 key 模糊查询,筛选出满足条件的 value 即数据 ID 根据数据 ID 过滤数据 缺点 数据量大时,会出现 OOM 问题 需要保证数据一致性,也就是数据库数据变化时需要同步更新内存中的数据 多实例部署时,需要解决多实例服务内存中数据一致性问题。对于分布式系统来说,这会增加系统的复杂度,得不偿失 一个后端服务实例数据变化时,除了更新当前服务内存中数据,还要通知其它服务实例更新内存数据 通知会有延迟问题,还要保证通知必达,一定执行等 解密后存储到缓存「不推荐」与上述方案类似,但将解密后的数据放入 Redis 中,虽然解决了多服务实例时数据一致性问题,但解密后的数据放入 Redis,这本身就带来了数据泄露的隐患 使用数据库DES、AES 加密解密函数「不推荐」 在 MySQL 中使用DES_ENCRYPT或DES_DECRYPT...
Java全栈-上
发表于|Java全栈
Java 基础语法基础面向对象特性 封装:将数据和业务逻辑细节封装到类中,对外提供一些方法。1. 简化操作 2. 保护数据 3. 可复用性 继承:类是单继承,接口支持多继承。父类引用指向子类对象称为 向上转型 多态:编译时多态和运行时多态。编译时多态就是方法的重载:方法名一样,但参数不一致。运行时多态就是在运行期间才确定具体对象类型,三个条件:继承、重写、向上转型 访问修饰符 用来控制类、变量、方法和构造函数的可见性和访问权限 public:都可以访问 protect:同包和子类中可以访问 无修饰符:同一个包内的类可以访问 private:仅在类内部可以访问 如何理解private所修饰的方法是隐式的finalprivate 修饰的方法,子类无法继承,更不能重写,所以可以看成是 final 的 final 类如何拓展?final 类无法被继承,但可以使用外观模式进行拓展 final方法可以被重载吗?父类的final方法是不能够被子类重写的,那么final方法可以被重载吗? 答案是可以的,也就是编译时多态 Java 内存模型 JMMJava内存模型(Java Memory...
公告
风雨无阻,灯火为你,星光虽微,照耀夜空。
最新文章
归档
- 2025 1
- 2025 1
- 2025 1
- 2025 1
- 2025 1
- 2025 1
- 2025 1
- 2025 1
- 2025 1
- 2025 1
- 2025 1
- 2025 1
- 2025 1
- 2025 1
- 2025 1
- 2025 1
- 2025 1
- 2025 1
- 2025 1
- 2025 1
- 2025 1
- 2025 1
- 2025 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2024 1
- 2023 1
- 2023 1
- 2023 1
- 2023 1
- 2023 1
- 2023 1
- 2023 1
- 2023 1
- 2023 1
- 2023 1
- 2023 1
- 2023 1
- 2023 1
- 2023 1
- 2023 1
- 2023 1
- 2023 1
- 2023 1
- 2023 1
- 2023 1
- 2023 1
- 2023 1
- 2023 1
- 2023 1
- 2023 1
- 2023 1
- 2023 1
- 2023 1
- 2023 1
- 2023 1
- 2023 1
- 2023 1
- 2023 1
- 2023 1
- 2023 1
- 2023 1
- 2023 1
- 2023 1
- 2023 1
- 2023 1
- 2023 1
- 2023 1
- 2023 1
- 2023 1
- 2022 1
- 2022 1
- 2022 1
- 2022 1
- 2022 1
- 2022 1
- 2022 1
- 2022 1
- 2022 1
- 2022 1
- 2022 1
- 2022 1
- 2022 1
- 2022 1
- 2022 1
- 2022 1
- 2022 1
- 2022 1
- 2022 1
- 2022 1
- 2022 1
- 2022 1
- 2022 1
- 2022 1
- 2022 1
- 2022 1
- 2022 1
- 2022 1
- 2022 1
- 2022 1
- 2022 1
- 2022 1
- 2022 1
- 2022 1
- 2022 1
- 2022 1
- 2022 1
- 2022 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2021 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2020 1
- 2019 1
- 2019 1
- 2019 1
- 2019 1
- 2019 1
- 2019 1
- 2019 1
- 2019 1
- 2019 1
- 2019 1
- 2019 1
- 2019 1
- 2019 1
- 2019 1
- 2019 1
- 2019 1
- 2019 1
- 2019 1
- 2019 1
- 2019 1
- 2019 1
- 2019 1
- 2019 1
- 2019 1
- 2019 1
- 2019 1
- 2019 1
- 2019 1
- 2019 1
- 2019 1
- 2019 1
- 2019 1
- 2019 1
- 2019 1
- 2019 1
- 2019 1
- 2019 1
- 2019 1
- 2019 1
- 2019 1
- 2019 1
- 2019 1
- 2019 1