- 博客(103)
- 收藏
- 关注
原创 2021-04-06 GC调优记录
机器配置: 8C 16G设置GC参数一、采用CMS-Xmx6144m -Xms6144m //整个堆内存 6G-Xmn4096m // 年轻代 4G-Xss128k // 线程栈的大小-XX:SurvivorRatio=6 // 设置年轻代中 Eden 和 Survivor区的比值,6 表示 6:2:2新生代 4G:Eden- 2458M, S0: 819M , S1: 819M-XX:MaxPermSize=512m-XX:ParallelGCThreads=8...
2021-04-06 11:46:52
410
原创 常用超级链接
一、技术1、倒排索引: https://www.cnblogs.com/softidea/p/9851836.html https://zh.wikipedia.org/wiki/%E5%80%92%E6%8E%92%E7%B4%A2%E5%BC%95 https://segmentfault.com/a/11900000189279542、Swing:3、log4j2 https://logging.apache.org/log4j/2.x/javad...
2020-07-20 21:28:47
366
原创 Java多线程学习笔记(五)线程池
一、线程池的基本类: Executors -- 线程池工厂, 通过 Executors 可以取得一个拥有特定功能的线程池。 ThreadPoolExecutor -- 线程池,实现了Executor 接口,因此通过这个接口, 任何 Runnable对象都可以被 ThreadPoolExecutor线程池调度。二、 Executor框架的工厂方法:...
2019-05-18 14:16:48
265
原创 Netty笔记
Netty实现了哪些形式的Reactor模式了?单线程Reactor多线程ReactorMultiple Reactor主从ReactorEventLoopEventExecutor视图ServerBootstrapgroup - BossEventLoopGroupchildGroup - WorkerEventLoopGroupchannel - NioSer...
2018-11-02 22:29:36
226
原创 垃圾收集器
1、Serial (串行)收集器:单线程收集器,会停掉应用程序的线程。程序会假死新生代复制算法,老年代采用标记-整理算法。2、ParNew收集器:多线程收集器,还是会停止应用程序的线程3、Parallel Scavenge (JDK8 默认):Server 模式,内存大于2个G,2个cpu,关注点事吞吐量,高效率的利用CPUCMS关注点事用户线程的停顿时间(提高用户体验)吞吐量:...
2018-10-24 22:20:56
197
原创 Java多线程学习笔记(四)volatile StampeLock semaphore
一、基本概念1、原子性:操作不能被打断,要么成功要么失败。i++不是原子操作。2、可见性:一个线程修改了数据,其他线程立刻可见。3、顺序性:4、volatile 保证程序的可见性,和顺序性。不能保证对复合操作(如i++)的原子性。javap -vxxx.class利用了CPU的指令:ACC_VOLATILE (jvm) >cpu 指令场景:状态标记锁或cas可...
2018-09-12 22:44:38
359
原创 Spring AOP
Aspectj 可以实现 AOPSpring AOP 提供两种编程风格: AspectJ Support- 利用AspectJ 的注解。 Schema-based AOP support : xmlJoin Point (连接点):方法advice: 通知:前置,后置,环绕,异常, finally(after)aspect 要骄傲感point cut: 切点,链接点...
2018-09-05 23:11:42
188
原创 Spirng 事务底层原理分析
一、数据库事务的基本特性 1、select @@tx_isolation 二、Spring 对事务的支持与使用。3个接口: TransactionDefiniton 事务顶定义platformTransactionManager 事务管理TransactionStatus 事务状态事务传播机制:PROPAGATION_REQUIREDPROPAGATION_SUPPO...
2018-08-29 22:17:26
417
原创 Kafka学习笔记
Kafka 用Scala 语言编写一、基本概念1、Topic2、Producer3、customer4、Broker kafka的性能与保留的数据量的大小没有关系,因此保存大量的数据(日志信息)不会有什么影响。 kafka中的consumer对集群的影响是非常小的,添加一个或者减少一个consumer,对于集群或者其他consumer来说,都是没有影响的,因此每...
2018-08-23 15:04:50
206
原创 Mybatis学习笔记
核心概念:Configuration:管理mysql-SqlSessionFactory: Session 管理工厂接口Session:ExecutorMappedStatementStatementHandlerResultSetHandler方法调用链:DefaultSqlSession.selectOne().selectList() ...
2018-08-23 02:53:35
215
转载 设计模式实现 -- 单例模式
1、一般单例, 优点:实现方式简单,十分可靠。 不足:无法对 instance 实例做延迟加载。如果单例的创建过程很慢,而由于 instance 是 static 的, 因此在 JVM加载单例类是,单例对象就会被建立。如果此时,这个单例类在系统中还扮演其它角色, 那么在任何使用这个单例的地方都会初始化这个 public class Singleton { priva...
2018-07-04 10:37:42
188
转载 性能能优化的一般思路
1、有明确的性能指标,比如 qps 等,清楚的指出优化的对象和最终目标。2、需要在目标平台对软件进行测试,通过各种性能监控和统计工具,观测和确认是否达到相关指标。 若未达到优化目标,则需要查找当前的性能瓶颈。3、可能称为瓶颈的因素:磁盘 I/O, 网络 I/O,CPU,内存。4、找到瓶颈后,首先需要定位相关代码,确认是否在软件实现上存在问题或优化空间。若有,则进行代码优化; 若...
2018-06-28 11:56:40
383
原创 Java 虚拟机内存模型
一、JVM组成:程序计数器虚拟机栈本地方法栈Java堆Java堆方法区1、程序计数器:每一个线程有一个独立的程序计数器,用于记录下一条要运行的指令。各个线程之间的计数器互不影响,独立工作,是一块线程私有的内存空间。如果当前线程正在执行一个Java 方法,程序计数器记录正在执行的 Java 字节码地址。如果当前线程正在执行一个Native 方法,则程序计数器为空。2、Java 虚拟机栈: 也是线程私...
2018-06-02 22:53:35
287
原创 tomcat 配置
1、应用目录和 tomcat 目录分离 应用目录的结构:demoweb/conf, logs, temp, webapps, work 启动tomcat 的命令: startup.sh, catalina.sh start/ stop catalina.sh 的参数: a、catalina_home - 指定tomcat 在根目录 b、 catalina_base - 指定应用...
2018-05-27 22:52:11
243
原创 tomcat 线程模型
1、BIO: 每个请求都会创建一个线程。2、NIO: 多路复用选择器(select),由 select 分配线程给它,线程读取后立刻会被释放。3、APR:Apache Protable Runtime/Apache 可移植运行库4、AIO: 异步非阻塞式IO, jdk1.7后支持,Tomcat8 之后支持。...
2018-05-15 23:56:14
687
原创 Java 性能调优
一、CPU使用率: 可分为两类: 用户态时间:CPU执行应用代码所占时间的百分比。 系统态时间:CPU执行内核代码所占的时间百分比。 性能调优的目的: 在尽可能端的时间内让CPU使用率尽可能高。(该如何理解?) Linux上的命令:vmstat 1二、JVM常用调优工具: 1、 jmap -- histo <PID> >...
2018-05-01 22:37:31
304
原创 Spring AOP 底层实现
1、AOP: Java Proxy, CGLIB2、Spring AOP 定义组件,通知(Advice) 拦截组件、调用组件3、Spring IoC: ApplicationContext ClassPathXmlApplicationContext: 1.加载资源 xml,2、先创建beanFactory,解析xml 文件至 beanDefination 并注册到 fact...
2018-04-04 18:46:11
291
转载 如何在windows系统自带命令查看硬件信息
如何在windows系统自带命令查看硬件信息,怎样dos命令查看硬盘和内存/CPU信息?最直接的是:开始→运行→CMD打开命令提示符,在该窗口下输入systeminfo执行,即可看到几乎所有想知道的系统信息,甚至包括机器上已安装的网卡及其IP。 问题描述: 如何从系统中 查看主板上内存条的数量。最佳答案: 在cmd命令下 输入:wmic memorychip list brief 或者 wmic ...
2018-03-14 23:06:01
20170
原创 Java内存分析
一、浅堆和深堆的概念1、浅堆(Shallow Heap): 一个对象结构所占用的内存大小,即所消耗的内存。如:一个int 类型会占据4个字节。2、深堆(Retained Heap):一个对象被GC 回收后,可以真实释放的内存大小。...
2018-03-02 10:57:03
239
原创 Maven笔记
1、scope 的值: test - 在测试时生效 compile - (默认)编译和运行时都会生效 provided 编译的时候生效,打包的时候不生效。 runtime 编译时不生效,打包的时候生效。
2017-12-23 10:25:28
193
原创 Dubbo常规应用
1、入门 a)、consumer -- 客户端,服务消费方、应用程序。 b)、provider -- 服务端、服务提供者。2、架构与基本角色说明 (redis desktop manager )3、dubbo的配置 interface: 接口名称 group:接口分组 version:接口版本
2017-12-14 20:22:40
283
原创 JVM- 类加载过程
1、类加载过程 1)、加载 a)、类的信息加载到方法区。 b)、类对象放在堆里。 2)、链接 a)、验证:文件格式,元数据,字节码,符号引用。 符号引用转为直接引用。 b)、准备: 为静态变量分配内存(方法区)。并初始化成默认值元数据验证。 c)、解析: 常量池中的符号引用替换为直接引...
2017-12-11 00:00:52
303
原创 编写高性能的Java 程序
1、仅定义需要的实例变量,节省对象空间是一种方式,或使用更小的数据类型。能用一个字节就不用一个 int, 用float 代替 double 诸如此类。2、使用大小适当的集合类,或使用简单的实例变量代替集合类。3、对象对齐与对象大小。
2017-11-11 19:35:32
436
原创 Java中被保护的 package名称
偶尔编了段代码,随便起了个报名称:java.puzzlers.exception,结果报异常:java.lang.SecurityException: Prohibited package name: java.puzzlers.exception at java.lang.ClassLoader.preDefineClass(ClassLoader.java:480) a
2017-09-08 00:12:25
553
原创 Java多线程学习笔记(三)JDK的线程池框架:Executor
JDK的线程池框架:ExecutorExecutor + execute(Runnable command) ExecutorService + shutdown() + isShudown() :boolean + isTeminated() :boole...
2017-09-01 19:59:58
334
原创 关于方法名是否可以很详细的思考
在一些敏捷开发书籍中提到,详细的方法名会比注释更好。在一些开源软件比如 Spring中,会有很多长方法名。由于Spring 应用很广泛,所以关于这点似乎大家似乎也没有太多的意见。不过,我有点自己的想法: 1、这种编码方式是外国人提的,英语对于他们来说是母语,所有用长方法名哪怕是一句话,对他们来说理解起来,毫不困难,想象一下,如果我们能用中文写方法名,读代码就像读一篇文章一样,应该
2017-09-01 11:02:01
399
原创 Java Class类
1、Object 类的 getClass()方法返回 Class类型实例, Class类可以访问对象所属的类的类型信息。 一个 Class 对象描述了一个特定类的属性。 如: getName() -- 返回类的名称。 Class Class.forName(className) -- 返回指定类的Class对象, 用此方法时要处理异常。
2017-08-13 10:13:18
313
原创 Java动态代理
1、作用: 代理类在运行时创建崭新的类,实现指定的接口调用处理器:实现了 InvocationHandler接口,该接口只有一个方法。Objcect invoke(Object proxy, Method method, Object[] args)2、AOP的实现: 动态代理只能针对接口实现代理,不能针对类。 如果要针对java类提供代理,需要用动态字节码生成
2017-08-13 08:51:50
246
原创 Java多线程学习笔记(二)-各种锁
一、synchroinized 的功能扩展:重入锁jdk6.0以后,重入锁和synchronized之间的性能差距已经不大了。1、ReentrantLock的使用: lock.lock(); //加锁 ... lock.unlock(); //释放锁 优点: a、有明显的操作工程,开发人员手动指定何时加锁,何时释放锁...
2017-08-05 17:33:57
306
原创 写Java代码的小技巧
1、返回零长度的数组或集合而不是 null: 返回集合时可以用 Collections.emptyList()、 Collections.emptySet()、 Collections.emptyMap()。 返回零长度的数组: new Object[0]
2017-07-29 13:34:53
317
原创 Java多线程学习笔记(一)- 基本概念
一、基本概念1、并发与并行: 1)并发:多个任务交替执行。 2)并行:多个任务同时执行。如果系统只有一个CPU,那真实环境中不可能是真实并行,因为一个CPU一次只能执行一个指令。多核CPU有可能出现并行。2、临界区: 一种公共资源或共享数据,每一次只能有一个线程使用它。一旦临界区资源被占用,其他线程要想使用这个资源,就必须等待。3、阻塞(Blockin...
2017-06-28 20:39:37
520
原创 Java虚拟机学习笔记
一、Java 虚拟机架构:1、类加载子系统: 从文件系统或网络中加载 Class信息,加载的类信息存放在一个叫做 方法区 的内存空间。2、方法区: 类的信息,运行时常量池,包括字符串字面量和数字常量。3、堆:虚拟机启动时建立,存放java 对象实例。线程共享。4、直接内存:java 堆之外、直接向系统申请的内存区域,处于性能考虑,读写频繁的场合可以使用直接内存,如NIO库。
2017-05-18 12:02:59
377
转载 windows 下查看使用端口的进程ID和名称
查看455端口的使用进程ID节进程名称1、netstat -ano2、netstat -aon|findstr "445"3、tasklist|findstr "445"4、在任务管理中根据进程ID,找到相关进程名称。
2017-05-13 21:14:41
2244
原创 Json 数据处理时踩过得坑
1、json 数据转为java 对象时,原先的String 数组, 会变成 ArrayList, 而不会变为 String[]. json 字符串转换为对象时,不会转为数组,只会转为 ArrayList。
2016-10-09 22:00:46
523
原创 Http协议学习笔记
一、Http 首部1、首部结构: a、请求报文: 请求行, 请求首部字段 通用首部字段 ( 请求和响应都会使用的首部) 实体首部字段 其他 b、响应报文: 状态行 响应首
2016-07-26 23:50:49
350
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人