- 博客(13)
- 资源 (1)
- 收藏
- 关注
原创 敏捷的理由
敏捷的理由1、专业性敏捷高度重视纪律而非形式,要把敏捷做对,需要结对编程、测试先行、重构并致力于简单设计,你必须在短循环周期内工作,每个周期都产出可以工作的软件,必须定期且持续地与业务部门保持沟通。极限编程的生命之环中的每一个实践都是一个承诺、一个保证,敏捷开发就是承诺要拼尽全力成为一名专业人士,并在整个软件开发行业倡导专业的行为。2、管理者、用户的期望不会交付一堆垃圾从技术上随时做好交付的准备敏捷要求系统在每个迭代结束的时候都应该是技术上可部署的——在开发人员看来,系统在技术上足够稳
2021-10-08 09:03:41
274
原创 线程池调优与监控
1、线程池的调优1.1 分析任务的特性任务的性质:CPU 密集型任务、IO 密集型任务和混合型任务。任务的优先级:高、中、低。任务的执行时间:长、中、短。任务的依赖性:是否依赖其他系统资源,如数据库连接。可以通过 Runtime.getRuntime().availableProcessors() 方法获得当前设备的 CPU 个数。1.2 具体策略(1)CPU 密集型任务配置尽可能小的线程,如配置N^cpu+1个线程的线程池。(2)IO 密集型任务则由于线程并不是一直在执行
2021-09-06 14:52:20
551
原创 线程池介绍
1、合理使用线程池的好处降低资源消耗通过重复利用已经创建的线程降低线程创建的和销毁造成的消耗。例如,工作线程Woker会无线循环获取阻塞队列中的任务来执行。提高响应速度当任务到达时,任务可以不需要等到线程创建就能立即执行。提高线程的可管理性线程是稀缺资源,Java的线程池可以对线程资源进行统一分配、调优和监控。2、线程池工作流程a、如果当前运行的线程少于corePoolSize,则创建新的工作线程来执行任务(执行这一步骤需要获取全局锁)。线程池在创建线程时,会将线程封装成工作线程Wok
2021-09-06 14:45:52
227
原创 线程 状态
(1)介绍New:新建状态Ready:就绪状态Running:运行状态Terminated:终止状态Waiting:等待状态TimedWaiting:超时等待状态Blocked:阻塞状态(2)新建实现Runnable接口或者集成Tread声明一个线程类,new一个实例,线程进入新建状态。(3)就绪线程对象创建成功后,调用该线程的start(),线程进入就绪状态。该状态的线程进入【可运行线程池】中,等待获取CPU的使用权。(3)运行线程调度程序正在从【可运行线程池】中选择一个线程
2021-09-03 13:44:02
187
原创 【04】事务
Redis事务就是一个命令执行的队列,将一系列预定义命令包装成一个整体,一次性按照顺序依次执行。1、基本操作(1)开启事务multi(2)执行事务exec(3)取消事务discard——终止当前事务的定义,发生在multi之后,exec之前2、注意事项(1)事务定义过程中,命令语法错误,整个事务中所有命令都不会执行。(2)事务定义过程中,命令执行错误,能够运行正确的命令,错误的不会执行。3、基于特定条件的事务执行(1)锁watch key1 key2 ……——对key添加监视锁,在
2021-09-03 10:20:35
128
原创 【03】持久化
含义:利用永久性介质将数据进行保存,在特定时间内将保存的数据进行恢复的工作机制。方式:(1)RDB将当前的数据状态进行保存,快照形式,存储数据结果,格式简单,关注点在数据。(2)AOF将数据的操作过程进行保存,日志形式,存储操作过程,格式复杂,关注点在操作过程。一、RDB1、savesave指令的执行会阻塞当前Redis服务器,直到当前的rdb过程完成,可能阻塞很长时间。2、bgsave发送bgsave指令后,Redis调用fork函数生成子线程,返回消息,后台子线程创建rdb文件。
2021-09-03 10:18:28
105
原创 【02】数据结构
一、string1、基本操作set、get、del、mset(同时设置多个key-value)、mget(同时获取多个value)、strlen(value的长度)、append(追加,若没有则新建)2、扩展操作incr、incrby、incrbyfloatdecr、decrbysetex、psetex3、注意事项(1)数据操作成功与不成功的反馈:0-失败,1-成功(2)数据未获取到:nil(3)数据最大存储容量:512M(4)数据计算的最大范围:Java中long型最大值二、has
2021-09-03 10:12:44
197
原创 【1】介绍
remote dictionary server——C语言开发的、高性能的键值对数据库。Redis所有操作都是原子性的,采用单线程处理所有业务,无需考虑并发。1、特征(1)数据之间没有必然的关联关系;(2)内部采用单线程工作;(3)高性能;(4)多数据类型支持:String/List/Set/Sorted Set/Hash;(5)持久化支持,可以对数据进行灾难恢复;2、应用(1)为热点数据加速查询(2)任务队列(3)即时信息查询(4)时效性信息控制(5)分布式数据共享(6)消.
2021-09-03 10:08:20
105
原创 Validation框架实现参数校验
1、常用注解2、分组校验==>> 将不同的校验规则分给不同的组,在使用时,指定不同的校验规则(1)定义分组接口定义一个分组接口,类似一个标识/** * 校验分组1 * @author */public interface Group1 {}/** * 校验分组2 * @author */public interface Group2 {}(2)注解增加分组属性groupsgroups = {Group1.class}@Datapublic cla
2021-09-03 10:02:51
580
转载 SQL优化
1、分页优化优化前select * from table where type = 2 and level = 9 order by id asc limit 999, 10;优化方案(1)延迟关联先通过where条件提取出主键,再将该表与原数据表关联,通过主键id提取数据行,而不是通过原来的二级索引提取数据行。select a.* from table a, (select id from table where type = 2 and level = 9 order by id asc
2021-08-06 16:47:32
195
原创 使用注解和XML完成注册bean
1、配置可选方案(1)在XML中进行显式配置(2)在java中进行显式配置(3)隐式的bean发现机制和自动装配尽可能使用自动配置的机制,显式配置越少越好==> 必须显式配置,使用JavaConfig==> 最后使用有便利命名空间的XML2、自动化装配bean两个角度实现:组件扫描:Spring会自动发现应用上下文所创建的bean自动装配:Spring自动满足bean之间的依赖2.1 创建可被发现的bean(1)@component注解——表明该类会作为组件
2020-12-09 18:48:42
769
原创 restful编码规范
1、HTTP动词动词描述GET(select) 从服务器取出一个/多个资源POST(create)在服务器新建一个资源PATCH(update)在服务器更新资源(客户端提供改变的属性)PUT(update) 在服务器更新资源(客户端提供改变后的完整资源)DELETE(delete)从客户端删除资源image.png2、swagger规范注解对象范围 使用位置 详细参数 例子@Api 协议集描述controller类上 value:URL路径值description:对ap
2020-12-09 18:29:11
441
原创 IDEA debug调试技巧基础+进阶汇总
IDEA调试技巧总结1、常用调试技巧(界面介绍)(1)*Step Over*(2)*Step Into*(3)*Force Step Into*(4)*Step Out*(5)*Run To Cursor*(6)*Resume Program*2、回退drop frame(0)frame说明(1)Drop Frame按钮(2)在调用栈方法上选择要回退的方法,右键选择Drop Frame注意3、条件断点4、热修改5、表达式求值(1)查看变量(2)修改变量6、新建变量监控7、多线程调试8、主动抛出异常1、常用
2020-08-31 13:17:34
1650
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅