快速的来一个hello world吧!假设你写了一个接口:lotto,访问路径是: [链接]:8080/lotto接口返回值是:
软件研发行业,新技术的出现日新月异,如何高效的学习,保持技术先进性?基于第一性原理:即 抓住事物的本质特征,按照事物本身的规律去推导,演绎事物在各种场景下的变化规律,东西技术在业务场景中的表现。物理学,几何学,马斯克等推崇第一性原理。软件研发学习方法:建立自己的技术思维体系,东西技术背后的核心原理...
从前有一个java工程师,梦想技术不断突破,设计理念不断创新,于是开始关注中台,对于中台一无所知的他,最快的方式找一个相关领域的专家,快速的累积起基础知识,形成完整的知识体系,然后结合工作中的实际问题,不断的应用进去,一下是经过一段时间的学习形成的中台的理论知识体系,输出来,先尝试使用自述的方式讲清...
从一个故事说起。从前,有个Java程序员非常喜欢写程序,喜欢研究源码,读英文文档。但是它在一家小公司里工作,公司的技术栈很陈旧。单个系统代码中含有很多的xml配置,配置各种中间件的入口适配器,而不同的业务系统中都是类似的配置。启动单个系统很慢。启动依赖web组件,无法快速部署。公共组件的依赖复杂,容易依赖...
为了更方便的书写和阐述问题,文章中按照第一人称的角度书写。作为一个以java为主要开发语言的工程师,我所描述的都是java相关的编码和设计。
场景的变化场景特点变化点老复杂的业务逻辑 新大量用户高并发访问软件开发方法,过程管理,组织架构变化垂直伸缩提高服务器的硬件配置来支撑;两个问题:物理服务器的硬件性能上限;投入的成本跟性能提升不成线性关系;水平伸缩使用更多的服务器形成集群来支撑分布式架构的演进22 缓存背景分布式架构中,使用缓存可以优...
最近团队中把只会做功能测试的测试岗位去掉了,那么软件质量的保证就落到了开发人员和产品人员的工作职责中了,不说这完全是一件坏事,这为开发岗位提出了更高的要求。为了适应团队的变化,找了一门小课程补充了一下关于接口测试的知识和思维。本文是学习完毕之后的一个小结。当成是学完之后的一个收货的输出,希望可以...
拦截器拦截器分同步拦截器和异步拦截器;HandlerInterceptor方法和执行时机可以看DispathcerServlet的原来确定它的三个方法的执行时机;AsynHandlerInterceptor看注释,主要用来清理在并发环境加清理ThreadLocal的数据;ResponseBodyAdvice对返回值备注了@ResponseBody或者返回ResponseEntity做了一些加工;会在使用消息...
需求maven依赖 {代码...} 打印sql配置要点:驱动配置 application.properties {代码...} psy配置 {代码...} aop打印持久层执行时间使用aop实现; {代码...} 启用aop注解: {代码...} 小结来个效果截图:通过本片文章,你可以学会:给代码添加aop切面,增加日志或者打印出方法执行总耗时;给你的数据持久层打印出所有的sq...
docker info : 查看docker服务端的信息,比如有多少容器,有多少镜像在本地;docker search xxx : 查找镜像仓库中的镜像docker pull imageName: 拉取镜像到本地docker run --name containerName -p containerport: dockerMachinePort imageName : 运行镜像到本docker;docker exec -it containerName bash 进入...
背景程序员的任务是写代码【软件】,代码【软件】本身无价值,代码【软件】运行起来才能实现价值。运行以java程序为例:首先把代码通过编译器编译成可执行代码。运行过程:冯洛伊曼模型操作系统从磁盘中加载 程序(代码)到内存,程序变成了进程;操作系统调度cpu给到进程,完成计算任务;操作系统协调io设备,输出计算...
redis是一种内存数据库,支持7种数据类型的存储,性能1S 10w次读写;redis提供的简单的事务保证了高并发场景下数的一致性。redis在2.6版本之后增加了lua支持,命令是原子性的;
客户端先向服务器端注册感兴趣的event,完成了事件订阅;客户端发生已经注册的事件,会触发服务器的响应,服务器存在一个selector线程,【轮询客户端发送过来的事件】但是并不实际处理事件,而是找到对应的Request Handler,启用另外一条线程运行处理。最终结果会转换成data stream,发送到客户端;
redis性能基准是10w次读写/秒;但是不适用于下面的场景:需要缓存,但是经常需要统计,分析和查询。这种场景适合使用Mongodb; 他是最接近关系数据库的NOSQL;
背景日志是一个系统或者说一个产品技术架构中重要组成部分。常见的日志框架如下:日志框架说明跟slf4j集成所需依赖slf4j日志门面,具体实现由程序决定 jclcommons-loggingjcl-over-slf4jjuljdk-loggingslf4j-apijul-to-slf4jslf4j-jdk14log4jlog4jslf4j-apilog4j-over-slf4jslf4j-log4j12log4j2log4j-api,log4j-coreslf4...
spring的内容比较多,常规的知识必须进行系统化的学习,但是一些边缘的技术点,在实际工作中也是非常适用的;下面一一介绍和实践一次。
springboot的部署测试监控部署基于maven打包JAR打包方式一般采用的jar包,使用springboot的默认方式即可;使用maven命令: {代码...} 执行成功之后,可以在对应的target目录下找到对应的包,比如: eg-zuul-0.0.1-SNAPSHOT.jar WAR运行内置容器运行springboot内置了web container容器 tomcat, 可以直接使用 java -jar命...
允许客户端创建一个实例的传统方法是:提供一个公共构造函数;有另外一个必须成为每个程序员的编程技巧:优先使用类提供的只简单返回实例的公共静态工厂方法来创建对象。这有一个简单的Boolean类的例子:这个方法转换一个原生的boolean类型的值为一个Boolean的实例。
背景互联网的金融和电商行业,最关注数据库事务。业务核心说明金融行业-金融产品金额不允许发生错误电商行业-商品交易金额,商品库存不允许发生错误面临的难点:高并发下保证: 数据一致性,高性能;spring对事物的处理:采用AOP技术提供事务支持,申明式事务,去除了代码中重复的try-catch-finally代码;两个场景的解决...
数据库开发是java的核心内容之一,基础就是jdbc了;然而直接使用jdbc,需要写大量的try-catch-finally模板代码;管理系统使用hibernate作为orm框架比较方便,遵循jpa规范;互联网时代使用Mybatis,因为灵活,方便进行sql优化;此外spring也提供了jdbcTemplate的访问数据库的模式,不过没有被大量的企业使用;使用这些ORM...