
Java
文章平均质量分 95
hguisu
这个作者很懒,什么都没留下…
展开
-
架构师技能9-深入mybatis:Creating a new SqlSession到查询语句耗时特别长
确保后续如何智慧地绕开同类问题。以下是排查问题的过程和思路:二、定位问题。原创 2024-02-22 17:12:02 · 1950 阅读 · 0 评论 -
架构师技能4-深入分析java进程CPU飙高和长耗时
以前也经常遇到java进程cpu飙高的问题,但是解决这次问题找到一个新方法:调整jvm的垃圾收集器从CMS改为G1,cpu飙高问题降低效果明显,故而把历史草稿笔记整理,温故而知新。原创 2021-11-28 15:26:10 · 9415 阅读 · 7 评论 -
架构师技能3-彻底深入理解和分析Java中内存溢出OutOfMemoryError
java开发人员经常遇到OutOfMemoryError的问题。要解决这些问题,要有对java虚拟机的内存管理有一定的认识,甚至对linux系统也要有一定的熟悉。昨天遇到了OutOfMemoryError:unable to create new native thread问题,再次把之前的草稿文章整理,顺便总结发出来。如果对jvm虚拟机还不了解,请先看我之前的总结:《java(5)-深入理解虚拟机JVM》和《java(9)-深入浅出GC垃圾回收机制》第一种OutOfMemoryError:原创 2021-08-21 17:22:54 · 2272 阅读 · 6 评论 -
专栏总结java11:Spring MVC
专栏总结java11:Spring MVC原创 2020-08-18 17:18:32 · 593 阅读 · 0 评论 -
专栏总结java8:Socket编程nio—netty快速入门和运行原理
专栏总结java8:Socket编程 nio原创 2020-08-18 17:11:30 · 633 阅读 · 1 评论 -
专栏总结java7:容器tomcat相关
专栏总结java7:jdk原创 2020-08-18 17:08:25 · 478 阅读 · 0 评论 -
专栏总结java6:虚拟机jvm
专栏总结java6:jvm原创 2020-08-18 17:07:52 · 488 阅读 · 0 评论 -
专栏总结java5:并发编程
专栏总结java5:线程/多线程并发原创 2020-08-18 17:07:16 · 521 阅读 · 0 评论 -
专栏总结java4:线程和线程池
专栏总结java4:异常原创 2020-08-18 17:06:31 · 487 阅读 · 0 评论 -
专栏总结java2:集合
专栏总结java2:集合原创 2020-08-18 17:03:08 · 475 阅读 · 0 评论 -
专栏总结java1:JDK、类型、String、反射
专栏总结java1:类型和String、反射原创 2020-08-18 17:02:17 · 560 阅读 · 0 评论 -
Spring Boot(6) 原理和启动流程
SpringBoot是一个快速开发框架,快速的将一些常用的第三方依赖整合(原理:通过Maven子父工程的方式),简化XML配置,全部采用注解形式,内置Http服务器(Jetty和Tomcat),最终以java应用程序进行执行,它是为了简化Spring应用的创建、运行、调试、部署等而出现的,使用它可以做到专注于Spring应用的开发,而无需过多关注XML的配置。一、核心原理1.Spring...原创 2020-06-25 18:00:36 · 917 阅读 · 0 评论 -
Spring Boot(5) @Async异步线程池详解
一. Spring异步线程池的接口类 :TaskExecutorSpring异步线程池的接口类,其实质是java.util.concurrent.ExecutorSpring 已经实现的异常线程池:1. SimpleAsyncTaskExecutor:不是真的线程池,这个类不重用线程,每次调用都会创建一个新的线程。2. SyncTaskExecutor:这个类没有实现异步调用,只是一个同步操作。只适用于不需要多线程的地方3. ConcurrentTaskExecutor:Executor...原创 2020-06-11 14:14:05 · 8779 阅读 · 5 评论 -
java并发编程实战(7) 并发工具JUC之CountDownLatch
CountDownLatch 是多线程控制JUt(java.util.concurrent.CountDownLatch)的一个工具类,它被称为 门阀 、 计数器 或者 闭锁 。这个工具经常用来用来协调多个线程之间的同步,或者说起到线程之间的通信(而不是用作互斥的作用)原创 2018-10-09 22:09:22 · 262 阅读 · 0 评论 -
java并发编程实战(6) 乐观锁 CAS
在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有独占锁.我们在系列java并发线程实战(1)线程安全和机制原理,已经提到例子,原创 2018-03-06 10:13:46 · 265 阅读 · 0 评论 -
java并发编程实战(5) happen-before原则和彻底明白DCL的volatile作用。
应用场景:我们需要一个单例模式:一个类有且仅有一个实例,并且自行实例化向整个系统提供。原创 2018-01-25 20:34:47 · 251 阅读 · 0 评论 -
java并发编程实战(4) volatile实现原理
volatile特性:可见性:即当一个线程修改了声明为volatile变量的值,新值对于其他要读该变量的线程来说是立即可见的。有序性:volatile变量的所谓有序性也就是被声明为volatile的变量的临界区代码的执行是有顺序的,即禁止指令重排序。受限原子性:原创 2018-01-23 14:53:59 · 232 阅读 · 0 评论 -
java并发编程实战(3) Lock显示锁
jdk 1.5后新增的lock,在java.util.concurrent.locks包。synchronized是java中的一个关键字,也就是说是Java语言内置的特性。那么为什么会出现Lock呢?原创 2018-01-19 14:25:17 · 233 阅读 · 0 评论 -
java并发编程实战(2) 线程同步synchronized
1、synchronized特性原子性、内存可见性、有序性、重入性原创 2018-01-19 14:24:35 · 293 阅读 · 0 评论 -
java并发线程实战(1) 线程安全和机制原理
出现线程安全的问题本质是因为: 主内存和工作内存数据不一致性以及编译器重排序导致。原创 2018-01-19 14:19:51 · 456 阅读 · 0 评论 -
Spring Boot(3)-使用mysql详解
Spring Boot的Web应用中使用Mysq数据库,也充分展示Spring Boot的优势(尽可能少的代码和配置)。数据访问层我们将使用Spring Data JPA和Hibernate(JPA的实现之一)。1.Maven pom.xml文件要使用MySQL,需要引入对应的connector,因此,首先在pom文件中添加如下依赖:depend原创 2016-11-25 16:17:22 · 43534 阅读 · 2 评论 -
Spring boot(4)-应用打包部署
1、Spring Boot内置web Spring Boot 其默认是集成web容器的,启动方式由像普通Java程序一样,main函数入口启动。其内置Tomcat容器或Jetty容器,具体由配置来决定(默认Tomcat)。当然你也可以将项目打包成war包,放到独立的web容器中(Tomcat、weblogic等等),当然在此之前你要对程序入口做简单调整。对server的几个...原创 2016-08-18 15:35:40 · 141958 阅读 · 3 评论 -
Spring boot(2)-配置详解
Spring Boot 配置详解 Spring Boot 对于开发人员最大的好处在于可以对 Spring 应用进行自动配置。Spring Boot 会根据应用中声明的第三方依赖来自动配置 Spring 框架,而不需要进行显式的声明。比如当声明了对 HSQLDB 的依赖时,Spring Boot 会自动配置成使用 HSQLDB 进行数据库操作。原创 2016-08-18 15:16:17 · 31349 阅读 · 1 评论 -
Spring Boot(1)-构建应用实践
Spring 框架作为目前非常流行的一个 Java 应用开发框架,它所包含的内容是非常繁多的。Spring 框架包含几十个不同的子项目,涵盖应用开发的不同方面。要在这些子项目之间进行选择,并快速搭建一个可以运行的应用是比较困难的事情。Spring Boot 的目的在于快速创建可以独立运行的 Spring 应用。通过 Spring Boot 可以根据相应的模板快速创建应用并运行。Spring Boo原创 2016-08-18 15:07:00 · 30864 阅读 · 0 评论 -
java(10)-JVM性能监控和优化
jstack pid 堆栈信息 jstat -gcutil pid 1000 间隔1000ms采样GC信息 jmap -heap pid打印jvm heap的情况 jmap -histo pid 打印jvm heap的直方图。其输出信息包括类名,对象数量,对象占用大小。jmap -histo:live pid 同上,但是只打印存活对象的情况。原创 2013-07-01 00:09:12 · 19147 阅读 · 1 评论 -
java(9)-深入浅出JVM内存管理:分配和GC垃圾回收
1、本文了解GC垃圾回收机制,深入理解GC后才明白,为啥FGC会导致stop-the-world。 2、了解GC算法。原创 2013-01-28 16:02:05 · 9132 阅读 · 2 评论 -
java(5)-深入理解虚拟机JVM
在Java中引入了虚拟机的概念,即在机器和编译程序之间加入了一层抽象的虚拟的机器。这台虚拟的机器在任何平台上都提供给编译程序一个的共同的接口。编译程序只需要面向虚拟机,生成虚拟机能够理解的代码,然后由解释器来将虚拟机代码转换为特定系统的机器码执行。在Java中,这种供虚拟机理解的代码叫做字节码(ByteCode)(class文件的内容),它不面向任何特定的处理器,只面向虚拟机。每一...原创 2012-11-27 16:59:34 · 17599 阅读 · 0 评论 -
java(8)--线程ThreadLocal详解
一. ThreadLocal是什么1.1、ThreadLocal简介 在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。 在JDK5.0以后,ThreadLocal已经支持泛型,ThreadLocal类的类名变为ThreadLocal<...原创 2012-09-29 11:10:21 · 5821 阅读 · 2 评论 -
java(7)-多线程和线程池
关于线程的基础知识:《Java线程-基础知识》一.Java实现多线程的三种方式先简单看看java多线程如何实现的:1、继承Thread类让自己的类继承 Thread 类:public class Test extends Thread { public static void main(String[] args) { Thread t = n...原创 2012-09-05 14:53:17 · 7573 阅读 · 3 评论 -
Java(1)-Java中的Map List Set等集合类
Map List Set等集合类:一、概述在JAVA的util包中有两个所有集合的父接口Collection和Map,它们的父子关系:+Collection 这个接口extends自 --java.lang.Iterable接口├+List(接口 代表有序,可重复的集合。列表)│├ ArreyList (Class 数组,随机访问,没有同原创 2012-06-08 12:57:41 · 25188 阅读 · 1 评论 -
java(4)-深入理解java嵌套类、内部类以及内部类builder构建构造函数
一、什么是嵌套类及内部类 可以在一个类的内部定义另一个类,这种类称为嵌套类(nested classes),它有两种类型:静态嵌套类和非静态嵌套类。静态嵌套类使用很少,最重要的是非静态嵌套类,也即是被称作为内部类(inner)。嵌套类从JDK1.1开始引入。其中inner类又可分为三种: 其一、在一个类(外部类)中直接定义的内部类; 其二、在一个方法(外部类的方法)中原创 2012-06-08 09:42:26 · 39233 阅读 · 7 评论 -
UML图中类之间的关系:依赖,关联,聚合,组合,泛化,实现
类与类图 1) 类(Class)封装了数据和行为,是面向对象的重要组成部分,它是具有相同属性、操作、关系的对象集合的总称。2) 在系统中,每个类具有一定的职责,职责指的是类所担任的任务,即类要完成什么样的功能,要承担什么样的义务。一个类可以有多种职责,设计得好的类一般只有一种职责,在定义类的时候,将类的职责分解成为类的属性和操作(即方法)。3) 类的属性即类的数据职责,类的操作即类的行......原创 2012-06-07 18:34:44 · 90525 阅读 · 43 评论 -
Java(6)-java线程
线程是一个单独程序流程。多线程是指一个程序可以同时运行多个任务,每个任务由一个单独的线程来完成。也就是说,多个线程可以同时在一个程序中运行,并且每一个线程完成不同的任务。程序可以通过控制线程来控制程序的运行,例如线程的等待、休眠、唤起线程等。一. 线程的基本知识 线程是程序运行的基本单位,一个程序中可以同时运行多个线程。如果程序被设置为多线程, 可以提高程序运行的效率和...原创 2012-04-23 17:51:22 · 16588 阅读 · 5 评论 -
Java(2)-Java IO输入输出流
最详细的I/O介绍Java中I/O操作主要是指使用Java进行输入,输出操作.Java所有的I/O机制都是基于数据流进行输入输出,这些数据流表示了字符或者字节数据的流动序列。Java的I/O流提供了读写数据的标准方法。任何Java中表示数据源的对象都会提供以数据流的方式读写它的数据的方法。 Java.io是大多数面向数据流的输入/输出类的主要软件......原创 2012-04-01 11:28:55 · 204662 阅读 · 52 评论 -
java(3)-深入理解java异常处理机制
1. 引子 try…catch…finally恐怕是大家再熟悉不过的语句了,而且感觉用起来也是很简单,逻辑上似乎也是很容易理解。不过,我亲自体验的“教训”告诉我,这个东西可不是想象中的那么简单、听话。不信?那你看看下面的代码,“猜猜”它执行后的结果会是什么?不要往后看答案、也不许执行代码看真正答案哦。如果你的答案是正确,那么这篇文章你就不用浪费时间看啦。pa原创 2011-01-20 18:44:00 · 380492 阅读 · 188 评论