集合List是我们开发里最经常用到的容器类了,但是大家有想过根据对应特点采用对应的foreach方式吗?这里来简单总结讲解一下。其实foreach就是换了另一种形式的for(Iterator)形式,for循环更简便了,但是也不是什么情况下都推荐使用foreach,要根据不同的场景来进行选择,我个人总结的是:1.实现了自由存储randomAccess接口的例如Arraylist不要使用foreach
简述Java里的方法参数可以使用接口,实际在使用时可以将实现了接口的类传递给方法,也可以new一个接口进行传递,在接口的实现类里进行相关的业务实现, 这在实际开发里很多场景会遇到。再看看下面的例子,希望对各位同学有帮助!示例代码接口有返回值的模版Action接口public interface JedisAction<T> { T action(Jedis jedis);
缘起springboot是一个封装springMvc等相关功能的开发框架,如果要开展新项目,建议使用springboot,一些常用功能都进行了封装,省去了我们自己去做框架架构,另外springboot的开发效率还是很高的,有几个朋友还没有接触过springboot,恰巧最近有时间,所以做一个springboot的快速入门教程,几个系列,从spring基础到springboot整合mybatis,r
概述springboot为什么开发效率那么快,很大一部分是因为提供了自动化配置,相比之前的框架各种xml,各种properties文件,这种显示方式的声明是不需要的,采用默认配置就可以最轻量化的跑起一个应用程序,这一篇就讲讲springboot的配置默认配置springboot配置文件默认读取依赖包中resources目录下的application.properties文件,这里面配置了一些spr
前言前两篇文章介绍了springboot是什么东西,以及默认启动跟自定义配置,这一篇就开始正式的跟springboot开发项目使用相关了。 众所周知我们一个项目启动后,分析好需求以后就开始做数据库设计,数据库设计好了,程序就要开始操作数据库进行程序开发了,根据前两篇文章搭建好了springboot的开发项目,配置好了一些简单配置,然后跟着我学习一下springboot配置mybatis操作数据库吧
前言springboot默认使用thymeleaf模版,但是性能不如freemarker,对比两者freemarker语法更简单,所以在这里我们使用freemarker作为我们的页面渲染引擎配置使用教程引入pom <dependency> <groupId>org.springframework.boot</groupId> <a
前言在项目里redis作为缓存已经是国际惯例了,那springboot项目里如何能与redis集成进行使用呢?照着教程做吧配置引入pom<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis&l
1.缘起因为公司没有运维人员,每次发布项目都需要手动编译,手工发布,特别浪费时间,发布几次以后就烦了,就想着全换成自动化方式打包发布,经过几个筛选终于选定用ansible来做自动化打包发布。从此节约大把的时间来听听歌看看书喝喝茶了。。。经过实践表面,在没有运维岗的时候,ansible绝对是中小创业公司项目发布的最佳选择!2.介绍ansible其实就是一个可以通过SSH与远程服务器进行连接交互的工具
缘由最近公司里的一个项目由要发布到阿里云上,为了一劳永逸采用jenkins结合ansible做了自动化部署,期间各种小坑,都一一解决,唯一的一个大坑,伤神了一下午才解决掉!因为项目架构是基于springboot的,所以直接jar包运行,为了方便直接把运行jar包做成了centos的服务,但是自建服务的Type=forking 没有进行设置,倒是一运行启动正常了就关闭,之前还加了重试机制,导致服务一
缘起现在的项目都是springboot的了,相比之前的ssm或者ssh项目,springboot采用约定大于配置模式项目搭建特别简单,而且springboot项目的开发效率也提升了好几倍。只需在SpringApplication运行run方法,就可以运行springboot项目,但是很多人就只了解到这里了,完全不了解springboot背后是怎么做到的。所以就跟随着我根据源码来一起探索这背后的原理
缘起我司项目现在的java项目都是基于springboot开发,通过Jenkins与ansible直接把项目编译的jar在阿里云主机上部署运行,几台云主机的配置大都是通用型2核8G,java项目难免遇到诸如内存溢出这类错误,为了让程序在服务器上有最佳运行效果,需要对每个项目进行jvm调优,JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps
Object类介绍介绍Object类是所有java类的根基类,所有的类都是从它继承下来。方法组成getClass()用于获取运行时类对象toString()一种类型对象进行打印输出或者与字符串类型进行拼接的时候,这个类型的对象都会自动调用toString()方法转换成字符串类型再进行后续操作,如果这个类型没有自己实现toString方法,则调用Object类的,默认返回这个类的ClassName+
概述IT团队如何可以快速,高效的支撑公司业务与响应公司业务的变化成为IT团队管理的一个重点,尤其在这快速变化的商业环境,IT团队对公司扩展业务起了很重要的作用。根据我的工作经验,在敏捷开发思维下以下5点是提高IT团队效率的重要支撑点。1.代码管理代码管理工具介绍(SVN与GIT)现在流行的代码管理工具有SVN与GIT,svn是中央集中式管理,git是分布式管理,svn相比git来说有效率上的劣势,
Linux端运行项目命令java -jar -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms1024m -Xmx1024m -Xmn256m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGC springboot项目.jar参数
CPU缓存设计与工作机制 在介绍伪共享之前,先了解一下现在常用的CPU架构的缓存设计,如下图:我们常见的CPU架构里缓存都是L1 L2 L3多级缓存,其中L1 L2 在每个CPU内核中(每个Core都有L1 L2缓存), L3独立与所有核之外cpu核心读取数据总是从L1开始,L1不存在,再读取L2,L2中数据不存在再读取L3,L3数据不存在再读从内存中读取。根据网上的一些资料显示,CPU在L1缓
引子最近在重新梳理知识体系,在比较编程语言的时候,发现现在流行的lua go rust kotlin之类都有 协程的概念,而java在这块是比较迟钝的,而像go这类语言内置了协程,可以很容易写出高性能的程序。什么是”协程“众所众知,进程是OS用来分配资源的最小单位,线程是进行任务执行的最小单位,进程与线程都是OS级别的,两者的运行都依赖于cpu的调度与资源分配,进程与线程都属于内核态。而协程是在种
一文掌握Spring Cloud Eureka通过此程序你可以学到搭建高可用的eureka server服务提供者把服务发布到erueka server上消费者应用接入erueka Server进行服务调用消费方通过ribbon达到负载均衡的调用provider服务一、项目结构eurekserver ,两个server,构建高可用eurekaServer 端口:8800eurekaServer2
在某乎看到一个提问,怎样用Lambda写阶乘?由于Java的 Effectively final 特性,以下代码无法通过编译。Function<Integer, Integer> factorial = null;factorial = i -> i == 1 ? 1 : i * factorial.apply(i - 1);有位答主提供了一个方案:在构造函数中初始化:publi
这是一段RocketMq经典的consumer异步获取broker消息的代码: DefaultMQPushConsumer consumer = new DefaultMQPushConsumer("consumerGroup"); consumer.setNamesrvAddr(Constants.NameServerAddr); consumer.subscribe("top
什么是垃圾jvm中的垃圾就是指 没有任何引用指向的一个对象或者是多个对象(多个对象循环引用)如何定位垃圾引用计数法:标记对象引用次数,标记为0,就可以回收,但无法解决循环引用多个对象的垃圾情况根可达算法:只要对象没有跟对象引用,就可以进行垃圾回收Jvm里什么是根? 栈中的引用对象方法区的常量对象方法区中的静态成员nativie原生方法常见的垃圾回收算法有什么标记清除:对可以回收的垃圾进行清除,但清
JVM 2-classLoadJava编译过程JVM 可以跨平台执行,目前有很多语言都基于JVM进行执行,例如scala,grovy等,jvm只与class文件交互,只要一门语言编译后的结果是class文件,就能在jvm上进行执行。常用JVM实现HotSpot oracle官方TaobaoVmJ9 --IBMMicrosoft VMJDK JRE JVMjdk包含 JRE与JVM JRE包含
JVM 运行时数据区与指令PC:program counter:程序计数器Method Area:方法区:逻辑概念,1.7之前指的PermSapce(永久区)1.8之后的MetaSapce(原数据区)Native Method astacks:由c++等编辑的本地方法,一般没法进行调优Heap:堆内存:调优重点Run-time constant pool :运行时常量池。Direct Memory
什么是垃圾系统没有被使用的无用对象或者一组循环引用对象如何找到垃圾引用计数对引用进行计数,无法解决循环引用问题(java里已经抛弃了这种算法,python现在垃圾回收用的还是引用计数)根可达算法根对象有哪些?线程栈变量静态变量常量池JNI指针等垃圾回收算法mark-sweep:标记清除copying:拷贝mark-compact:标记压缩标记清除:不适合伊甸区先标记后清除,两遍扫描,容易产生碎片,
了解JVM常用命令行参数标准:-开头,所有HotSpot都支持非标准:-X开头,特点版本HotSpot支持特定的命令不稳定:-XX开头,下个版本可能会取消的命令java -versionjava -X调优代码:public class OomTest { public static void main(String[] args) { List<byte[]> bytes= n
前提本文使用的最新的spring5版本源码作为阅读基础。本文耗时四个半小时。希望按照我写的逻辑流程帮你迅速理解springspring初始化流程通过ClassPathApplicationContext(“application.xml”);读取xml文件ClassPathApplicationContext()的父类是 AbstractApplicationContextAbstractAppl
VS2012 hpp //GDI+的头文件 #include <gdiplus.h> using namespace Gdiplus; #pragma comment(lib,"gdiplus.lib") //定义两个变量 GdiplusStartupInput m_pGdiplusStartupI
npm version ^ meaning
视频网关是视频云系统下的一个边缘容器设备,它起着将视频数据承上启下的功能。 视频云 说到边缘视频网关就不得不提到云计算中的视频云,它是各领域的视频系统比如安防监控等向着智能化、物联...
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号