02 2022 档案
摘要:工具一 IDEA工具 IDEA启动项目处,添加一个 Remote工具,服务器启动项目时添加下图选中的这段参数 工具二 Arthas 常用指令 watch , 观察函数调用链 profiler,服务器CPU压力图,压测的时候可用,观察哪些方法有瓶颈,压测图如下
阅读全文
摘要:Java常见的创建线程(线程池)有三个: Executors.newCachedThreadPool();Executors.newFixedThreadPool(10);Executors.newSingleThreadExecutor(); 查源码,都是new 的一个线程池类 ThreadP
阅读全文
摘要:JVM内存的YOUNG区和OLD都是使用G1垃圾收集器,G1收集器内存结构 每个region(区域)的大小 1~32M,是2的幂次方 对象储存: 0.5region <= 对象 <1 region,这个对象会直接存储在 O区,并标记为H区(超大对象区) 对象>1 region,会申请两个H区来存储这
阅读全文
摘要:指令 jps,查看Java进程概述,可用来查看有哪些Java进程,Java程序是否启动 jconsole,图形化查看Java程序的内存,线程,类,GC,bean信息 jstat,主要用来查看Java内存,常用参数 -gcutil、gc jstat -gcutil pid interval,显示的是百
阅读全文
摘要:GCROOT:栈、本地方法栈、方法区 直接或间接引用的,不能被删除,和GCROOT无关的对象可直接删除 垃圾回收算法: 标记-清理: 标记与GCROOT无关的对象,删除; 缺点:会产生内存碎片,如果下次进来的对象和GC掉的对象大小不同,就不会使用该块内存 标记-整理: 标记与GCROOT无关的对象,
阅读全文
摘要:本地方法栈,存放C++的native方法 程序计数器,指向程序当前运行的位置 栈(JVM栈),存放 函数、当前运行时的临时变量,存储的是对象的地址,最终指向堆存储的实际对象;如果一个对象在方法中new出来,并且只在这个方法中使用,这个对象会存放在栈中,当方法结束就会清理掉这个方法栈,减轻了GC的压力
阅读全文
摘要:volatil 可见性,强制刷新主存中的变量到各个CPU的缓存中,使各个CPU中缓存的变量与主存中一致,各个线程所使用的变量一致,读一致性【线程A写变量后刷新到主存中,线程B会刷新自己缓存中的变量=主存中的变量(即线程A写后的变量),如果变量没有用volatile修饰,线程B缓存中的变量不会刷新,即
阅读全文
摘要:Servlet规范 Servlet容器用来加载和管理业务类。HTTP服务器不直接跟业务类打交道,而是把请求交给Servlet容器去处理,Servlet容器会将请求转发到具体的Servlet,如果这个Servlet还没创建,就加载并实例化这个Servlet,然后调用这个Servlet的接口方法。因此S
阅读全文
摘要:HTTP协议 HTTP本质 HTTP协议是浏览器与服务器之间的数据传送协议。作为应用层协议,HTTP是基于TCP/IP协议来传递数据的(HTML文件、图片、查询结果等),HTTP协议不涉及数据包(Packet)传输,主要规定了客户端和服务器之间的通信格式。 下面我通过一个例子来告诉你HTTP的本质是
阅读全文
摘要:Web容器 Web技术的发展史 早期的Web应用主要用于浏览新闻等静态页面,HTTP服务器(比如Apache、Nginx)向浏览器返回静态HTML,浏览器负责解析HTML,将结果呈现给用户。 随着互联网的发展,我们已经不满足于仅仅浏览静态页面,还希望通过一些交互操作,来获取动态结果,因此也就需要一些
阅读全文
摘要:https://mp.weixin.qq.com/s/l9XzMbkoDI1EgKj49aAr8w
阅读全文
摘要:当客户浏览器打开后第一次访问Tomcat服务器,在编程调用request.getSession()方法后建立Session(一般是认证成功后,调用getSession(),其实在这之前Session并不存在,所以在登录之前一般是没有session的),存入一个ConcurrentHashMap,Ke
阅读全文
摘要:Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。 Docker Compose 将所管理的容器分为三层,分别是工程(project)、
阅读全文
摘要:方法一:使用Dockerfile构建 把项目打包成jar包,复制到服务器中 在服务器中新建Dockerfile文件(Dockerfile和jar在同一路径下),Dockerfile示例 FROM java:8EXPOSE 8080VOLUME /slmADD boot-docker-0.0.1-SN
阅读全文
摘要:@GeneratedValue:为一个实体生成一个唯一标识的主键,@GeneratedValue提供了主键的生成策略,@GeneratedValue注解有两个属性,分别是strategy和generator generator属性的值是一个字符串,默认为 "",其声明了主键生成器的名称,一般是@Ge
阅读全文
摘要:异步方法执行的线程池 默认情况下,Spring会查找一个关联的线程池:要么是一个org.springframework.core.task.TaskExecutor类型的bean,要么是一个类型是 java.util.concurrent.Executor名字是taskExecutor的bean。如
阅读全文
摘要:java8的流式处理极大的简化了对于集合的操作,实际上不光是集合,包括数组、文件等,只要是可以转换成流,我们都可以借助流式处理,类似于我们写SQL语句一样对其进行操作。java8通过内部迭代来实现对流的处理,一个流式处理可以分为三个部分:转换成流、中间操作、终端操作 关于list.stream().
阅读全文
摘要:Optional 类是一个可以为null的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。 Optional 是个容器:它可以保存类型T的值,或者仅仅保存null。Optional提供很多有用的方法,这样我们就不用显式进行空值检测。 Optional
阅读全文
摘要:springboot-quartz的依赖 spring-boot-starter-quartz Quartz的基本组成部分: 任务:JobDetail,定义一个job任务 触发器:Trigger,包括SimpleTrigger和CronTrigger,指定Job的执行时间,执行间隔,运行次数等 调度
阅读全文
摘要:JPA,在服务器启动的时候,jpa的启动管理类会自动扫荡继承了JpaRepository的接口,然后添加到动态代理管理中,然后注入到spring的容器中。 @Entity当实体类名和表名相同,实体属性和表字段相同时,会默认完成实体属性和表字段的映射,当表名和实体类名不同,表字段和实体属性不同时,需要
阅读全文
摘要:@ComponentScan扫描器 @Configuration表明该类是配置类 在配置类中使用@Bean修饰方法,蒋返回值加入到IOC容器中 使用@Bean来修饰方法,该方法返回一个对象。 不管方法体内的对象是怎么创建的,Spring可以获取得到对象就行了。 Spring内部会将该对象加入到IOC
阅读全文
摘要:IO 和 NIO 的区别 IO面向流,阻塞IO NIO面向缓冲,非阻塞IO,选择器 可简单认为:IO是面向流的处理,NIO是面向块(缓冲区)的处理 NIO主要有三个核心部分组成: buffer缓冲区(本质是数组) Channel管道 Selector选择器 Java NIO的选择器允许一个单独的线程
阅读全文
摘要:producer发布消息 写入方式 producer 采用 push 模式将消息发布到 broker,每条消息都被 append 到 patition 中,属于顺序写磁盘(顺序写磁盘效率比随机写内存要高,保障 kafka 吞吐率,关于磁盘顺序写入)。 消息路由 producer 发送消息到 brok
阅读全文
摘要:Consumer and Consumer group a.每个consumer客户端被创建时,会向zookeeper注册自己的信息; b.此作用主要是为了"负载均衡". c.同一个Consumer Group中的Consumers,Kafka将相应Topic中的每个消息只发送给其中一个Consum
阅读全文
摘要:ZooKeeper 是 Kafka 用来负责集群元数据的管理、控制器的选举等操作的。 Kafka在zookeeper中存储结构图
阅读全文
摘要:Replication(主从复制) 在Kafka引入Replication之后,同一个Partition可能会有多个Replica,而这时需要在这些Replication之间选出一个Leader,Producer和Consumer只与这个Leader交互,其它Replica作为Follower从Le
阅读全文
摘要:架构 一个典型的Kafka集群中包含若干Producer(可以是web前端产生的Page View,或者是服务器日志,系统CPU、Memory等),若干broker(Kafka支持水平扩展,一般broker数量越多,集群吞吐率越高),若干Consumer Group,以及一个Zookeeper集群。
阅读全文
摘要:简介 主要应用场景是:日志收集系统和消息系统。 Kafka主要设计目标如下: 以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问性能。 高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条消息的传输。 支持Kafka Server间的消息分区,及
阅读全文
摘要:https://mp.weixin.qq.com/s/0_5DLbBhA8MsgVAwXVv_Aw
阅读全文
摘要:工作区:即自己当前分支所修改的代码,git add xx 之前的!不包括 git add xx 和 git commit xxx 之后的。 暂存区:已经 git add xxx 进去,且未 git commit xxx 的。 本地分支:已经git commit -m xxx 提交到本地分支的。 gi
阅读全文
摘要:使用索引取决于where条件; select * 不建议使用:不需要的字段增加io消耗,失去MySQL优化器“覆盖索引”策略优化的可能性 https://www.cnblogs.com/happyflyingpig/p/7662881.html 磁盘预读机制和局部性原理:当计算机访问一个数据时,不仅
阅读全文
摘要:concurrentMap线程安全 速度慢 分段锁 不是整体锁,适合用于并发编程,其实就是在要求线程安全的时候用它 hashMap线程不安全 速度快 Hashtable 线程安全,速度最慢 因为是整体的锁,基本被淘汰了 https://my.oschina.net/hosee/blog/639352
阅读全文
摘要:Spring AOP与自定义注解Annotation的使用 @Pointcut()的execution、@annotation等参数说明 // 自定义注解 @Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) public @
阅读全文