
Java
文章平均质量分 83
Amazing_deron
绝知此事要躬行。
展开
-
G1垃圾回收器
简介G1 收集器是一款主要面向服务端应用的垃圾收集器,特点是以极高概率满足GC停顿时间的要求(可预测的停顿),同时具备高吞吐性能。堆内存划分虽然 G1 收集器也遵循分代收集理论,但其堆内存的布局与其他收集器有非常明显的差异:G1 不再坚持固定大小和固定数量的分代区域划分,而是把连续的 Java 堆划分为约2048个个大小相等的分区(Region),每个 Region 都可以根据需要,扮演新生代的 Eden 空间、Survivor 空间,或者老年代空间。Region 中还有一类特殊的 Humong原创 2022-04-13 22:58:57 · 1916 阅读 · 0 评论 -
深入理解java虚拟机中类加载机制
1.1 概述虚拟机把描述一个类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成被java虚拟机使用的Java类型。这就是虚拟机的类加载机制。Calss文件由类加载器加载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息可以获知Class的结构信息:如构造函数,属性和方法等,Java允许用户借由这个Class相关的元信息间接调用Calss对象的功能。编译器会把.java文件编译成.class文件,也就是字节码文件。1.2 类加载的生命周期类加载的整个原创 2022-04-09 21:37:31 · 1144 阅读 · 0 评论 -
Java线程池
借由《Java并发编程的艺术》,使用线程池能够帮助 :降低资源消耗。通过重复利用已经创建的线程,能够降低线程创建和销毁造成的消耗。提高响应速度。当任务到达时,任务可以不需要等待线程的创建就能立即执行。提高线程的可管理性。线程是稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。当核心线程数为 5 时,即使总共要运行的线程有 15 个,每次也只会同时执行 5 个任务,剩下的任务则会被放入等待队列,等待核心线程空闲后执行。执行步骤如下:原创 2020-11-12 01:20:52 · 122 阅读 · 0 评论 -
中台的概念
中台起源中台是由阿里在2015年提出的"大前台,小中台"战略中延申出来的概念,灵感源于芬兰的一家游戏公司-一家只有300名员工却接连推出爆款游戏,是全球最会赚钱的游戏明星公司。这家看似很小的公司,设置了一个强大的技术平台,来支撑小的游戏团队进行游戏开发,这样一来,他们就可以专心创造,不用担心基础又至关重要的技术支撑问题。中台的功能用一个强大的平台来对这些部门进行总协调和支持并为新业务新部门提供生长的空间,从而大幅降低组织变革的成本。中台提炼各业务线的共线需求,最大限度地减少"重复造轮子"。中台其实是原创 2020-08-03 23:47:50 · 2579 阅读 · 0 评论 -
Java反射机制
Java反射机制Java反射机制是在程序运行时,对于任意一个类,都能知道这个类的所有属性和方法,都能够调用它的任意一个方法和属性。这种动态的获取信息和动态调用对象的方法的功能称为Java的反射机制。反射机制很重要的一点就是“运行时”,其使得我们可以在程序运行时加载、探索以及使用编译期间完全未知的 .class 文件。换句话说,Java 程序可以加载一个运行时才得知名称的 .class 文件,然后获悉其完整构造,并生成其对象实体、或对其 fields(变量)设值、或调用其 methods(方法)。在原创 2020-07-07 15:13:33 · 337 阅读 · 0 评论 -
Java中Lambda表达式使用
Lambda表达式,(布兰达)λ表达式,也可称为闭包。java8发布的最重要的新特性。Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中)。Lambda表达式使用:// 不需要参数() -> 5// 当有两个参数时需要有小括号,返回两个传参直接的差值(x, y) -> x – y // 一个参数时可以不需要小括号,返回传参的5倍x -> 5 * x应用(使用jdk1.8以上版本):public class Java8Tester{ publ原创 2020-06-17 18:56:53 · 503 阅读 · 0 评论 -
MyBatis在xml文件中处理小于号和单引号
天天忘记,做个记录。XML转义字符:< < 小于号 ' ' 单引号 & & 和原创 2020-06-05 11:27:01 · 1589 阅读 · 0 评论 -
jps命令查看Java进程
jps是jdk提供的一个查看当前java进程的小工具,简单实用,通过这个命令可以查看当前系统所有运行中的java进程、java包名、jar包名及JVM参数等。命令格式:jps [options ] [ hostid ][options]选项:-q 只显示所有java进程的pid-m 输出所有的java进程pid和main method-l 输出所有的java进程pid和应用主类名,jar的完全路径名-v 输出所有的java进程pid和应用主类名,jar的完全路径名和启动的jvm参数...原创 2020-05-27 19:09:41 · 865 阅读 · 1 评论 -
Java 值传递和引用传递
Java中的值传递和引用传递从代码例子中思考//例11 public void method1(){2 int x=0;3 this.change(x);4 System.out.println(x);5 }6 public void change(int i){7 i=1;8 }很显然的,在mothod1中执行了change(x)后,x的值并不会因为change方法中将输入参数赋值为1而变成1,也就是说在执行change(x)后,x的值z依然是0。这是因为原创 2020-05-14 19:49:23 · 256 阅读 · 0 评论 -
请求注解
1.@ResponseBody@Responsebody 注解表示该方法的返回的结果直接写入 HTTP 响应正文中,一般在异步获取数据时使用,通常是在使用 @RequestMapping 后,返回值通常解析为跳转路径(返回一个页面),加上 @Responsebody 后返回结果不会被解析为跳转路径,而是直接写入HTTP 响应正文中(可以只返回字符)。2.@RequestBody当...原创 2019-10-23 18:06:04 · 481 阅读 · 0 评论 -
JUnit单元测试不支持多线程
在写一个多线程启动时,使用单元测试时子线程莫名其妙结束。网上找了一些资料发现问题所在:1.测试发现问题的demopublic class TestDoWork { class DoWork implements Runnable { @Override public void run() { for (int i ...原创 2019-05-16 18:01:50 · 253 阅读 · 0 评论 -
多线程实例之售卖车票
三个售票窗口同时出售20张票。简单实现:package com.example.demo.service;import java.util.concurrent.*;public class SellTicket extends Thread{ //为了保持票数一致,票要静态 static int tick = 20; //创建一...原创 2019-05-17 12:00:55 · 603 阅读 · 0 评论 -
银联网关支付demo
对接银联支付接口,通过一个例子向商家支付金额。1.首先在银联开放平台下载支付Demo,点击链接或者直接拿我修改好的demo,链接: https://pan.baidu.com/s/1FywgOf5j_EYj5NQYHPeGqg 提取码: d2hp建议拿我的现成版demo(修改了一些问题),解压后按照下面配置即可使用。2.下载好后,选择Java版导入到Eclipse或者IDEA。...原创 2019-05-29 19:24:00 · 2027 阅读 · 4 评论 -
Nginx配置
nginx安装后配置好配置文件即可使用nginx服务。Nginx的配置文件nginx.conf位于其安装目录的conf目录下。nginx.conf由多个块组成,最外面的块是main,main包含Events和HTTP,HTTP包含upstream和多个Server,Server又包含多个location:全局配置参数:user nobody;指定Nginx Worker进程...原创 2019-09-06 11:30:18 · 657 阅读 · 0 评论 -
HashMap原理笔记(JDK1.7)
HashMap是一个用于存储Key-Value键值对的集合,每一个键值对也叫做Entry。这些个键值对(Entry)分散存储在一个数组当中,这个数组就是HashMap的主干。HashMap数组每一个元素的初始值都是Null。HashMap通过put方法把元素插入到HashMap,HashMap的默认初始化长度为16(可显式指定),HashMap的默认负载因子为0.75(可显式指定)...原创 2019-09-09 13:10:47 · 233 阅读 · 0 评论 -
HashMap原理笔记(JDK1.8)
JDK1.8和JDK1.7相比差异不是很大,但是有几个重要的区别:JDK1.8的数据结构:JDK1.8是针对JDK1.7优化了查询,因为当哈希冲突严重时,在桶上形成的链表会越来越长,这样在链表上查询时效率就越来越低,时间复杂度为O(n).因此1.8中重点优化了这个查询效率。在哈希冲突时,数组上存储的结构可能是链表也可能是红黑树。staticfinalintTREEIFY_...原创 2019-09-09 16:45:09 · 229 阅读 · 0 评论 -
ConcurrentHashMap底层结构(JDK1.7)
HashMap不是线程安全的,HashTable虽然是线程安全,但是该类所有的方法都用synchronized进行线程安全的控制,在高并发的情况下,同一时刻只有一个线程可以获取对象监视器,其他线程阻塞或者轮询等待,在线程竞争激烈的情况下,这种方式的效率会非常的低下。HashTable在扩容的时候,newSize = 2 * oldSize + 1;ConcurrentHashM...原创 2019-09-24 17:49:13 · 661 阅读 · 0 评论 -
ConcurrentHashMap底层数据结构(JDK1.8)
ConcurrentHashMap在JDK1.7中存在的问题:在JDK1.7中以及解决了并发问题,可以支持N个Segment的并发,但是查询遍历链表时效率太低jdk1.7下数据结构在JDK1.8中底层数据结构调整如下:这看起来是不是跟JDK1.8的HashMap数据结构一样?其中抛弃了分段锁,采用了CAS+synchronized来保证并发安全也将 1.7 中存放数...原创 2019-09-24 17:51:47 · 1174 阅读 · 0 评论 -
java虚拟机
JVM的组成:类加载器运行时数据区执行引擎本地库接口1.JVM运行时数据区程序计数器:线程私有,它可以看作是当前线程所执行字节码的行号指示器;如果线程正在执行一个 Java 方法,这个计数器记录的是正在执行的虚拟机字节码指令的地址;如果正在执行的是 Native 方法,这个计数器的值则为 (Undefined)。此内存区域是唯一一个在 Java 虚拟机规范中没...原创 2019-10-10 22:48:52 · 308 阅读 · 0 评论 -
BeanUtils常用方法记录
这个依赖包,类名全称org.apache.commons.beanutils.BeanUtils1.BeanUtils用处:BeanUtils是Apache Commons组件的成员之一,主要用于简化JavaBean封装数据的操作。简化反射封装参数的步骤,给对象封装参数。好处: BeanUtils给对象封装参数的时候会进行类型自动转换。2.JavaBean://J...原创 2019-05-24 15:09:32 · 842 阅读 · 0 评论 -
SpringMVC添加定时器
添加SpringMVC上的定时器流程:1.首先添加一个定时器类,写好要执行的逻辑package org.hyena.dorm.publics.timer;import org.springframework.scheduling.annotation.Scheduled;import org.springframework.stereotype.Component;@Compo...原创 2019-04-23 17:20:56 · 1427 阅读 · 3 评论 -
编程语言的区别
标记语言标记语言,是一种将文本(Text)以及文本相关的其他信息结合起来,展现出关于文档结构和数据处理细节的电脑文字编码。与文本相关的其他信息(包括例如文本的结构和表示信息等)与原来的文本结合在一起,但是使用标记(markup)进行标识。如:HTML、XML 脚本语言脚本语言是为了缩短传统的编写-编译-链接-运行(edit-compile-link-run)过程而创建的计算机编...原创 2019-01-17 16:00:51 · 634 阅读 · 0 评论 -
Hiberante默认连接池换成c3p0
本文转自:http://77857.blog.51cto.com/67857/167502hibernate默认连接池有一个问题,不会自动检测数据库连接是否断开,MYSQL数据库一段时间(大约8小时)没有访问就会断开连接,连接池里的连接却还是存在,下次访问hibernate会继续使用这个连接,导致数据库连接异常。由于该问题需要在服务器长时间运行时才会出现,所以在平时测试很难发现。 解决方...转载 2018-12-25 16:19:28 · 188 阅读 · 1 评论 -
Hibernate Session和Jpa EntityManager
本文主要比较一下二者操作实体类的方法的关系和区别。本文适用 Hibernate:4.3.11.Final 和 spring-data-jpa:1.10.4.RELEASE 。创建方式Session:Configuration configuration=new Configuration().configuration();ServiceRegistry serviceReg...转载 2018-12-25 16:04:16 · 2126 阅读 · 1 评论 -
Hibernate工作原理
持久化:持久化是将程序数据在持久状态和瞬时状态间转换的机制.JDBC就是一种持久化机制,文件IO也是一种持久化机制。ORM:即Object-Relational Mapping,它的作用就是在关系型数据库和对象之间做了一个映射。从对象(Object)映射到关系(Relation),再从关系映射到对象。这样,我们在操作数据库的时候,不需要再去和复杂SQL打交道,只要像操作对象一样操作它就可以了(...原创 2018-12-25 15:43:07 · 177 阅读 · 0 评论 -
JDBC详解
一、相关概念1.什么是JDBC JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。2.数据库驱动 我们安装好数据库之后,我们的应...转载 2018-12-24 18:04:20 · 166 阅读 · 0 评论 -
Java持久化封装类
通过原生的java代码封装的类,这样每次数据库操作都要创建这个数据库操作的类,效率较低。demo:DBO类package test;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.ResultSetMetaData;...原创 2018-12-23 17:23:56 · 598 阅读 · 0 评论 -
Session详解
session详解什么是Session对Tomcat而言,Session是一块在服务器开辟的内存空间,其存储结构为ConcurrentHashMap;Session的目的Http协议是一种无状态协议,即每次服务端接收到客户端的请求时,都是一个全新的请求,服务器并不知道客户端的历史请求记录;Session的主要目的就是为了弥补Http的无状态特性。简单的说,就是服务器可以利用...转载 2018-12-17 18:21:03 · 201 阅读 · 0 评论 -
Java泛型
Java泛型的存在可以帮助我们减少写代码的工作量。下面是一个使用泛型的例子:public class GenericMethodTest{ // 泛型方法 printArray public static < E > void printArray( E[] inputArray ) { // ...原创 2019-01-21 15:15:09 · 174 阅读 · 0 评论 -
Java枚举enum
Java枚举一般用于有固定范围的变量,例如一周只有七个变量,星期一到星期日,星期八是不存在的。把相关的常量分组到一个枚举类型里,可以使我们的代码可读性更强,而且枚举提供了比常量更多的方法。用法1:public enum Direction { East, West, South, North}标识符East,South称为枚举常量。枚举常量隐式声明为Direct...原创 2019-01-21 17:03:17 · 209 阅读 · 0 评论 -
ECharts圆环图和饼图使用
ECharts是一个使用 JavaScript 实现的开源可视化库,可以流畅的运行在 PC 和移动设备上,兼容当前绝大部分浏览器(IE8/9/10/11,Chrome,Firefox,Safari等),提供直观,交互丰富,可高度个性化定制的数据可视化图表。ECharts是百度的产品。。ECharts使用十分简单,只要在页面引用js文件即可,然后在写一个给定长度和宽度的div装载图表,在使用...原创 2019-04-02 12:00:13 · 1965 阅读 · 0 评论 -
ArrayList和LinkedList的性能比较
ArrayList和Vector使用了数组的实现,LinkedList使用了循环双向链表数据结构。下面通过实际的例子对两者的性能、进行比较:package test;import java.util.ArrayList;import java.util.Iterator;import java.util.LinkedList;import java.util.List;/*...原创 2019-03-11 10:55:44 · 216 阅读 · 0 评论 -
java对象的排序
出处:http://blog.youkuaiyun.com/wangtaocsdn/article/details/71500500java中对象的排序思路是根据对象的某个属性进行排序。方法一:将要排序的对象类实现Comparable<>接口。首先,创建学生类,我们将根据学生成绩对学生进行排序:/*** 学生类*/class Student implements Com...转载 2019-03-07 18:01:58 · 309 阅读 · 0 评论 -
Map遍历的几种方法
记录一下Map遍历的几种方法。。public static void main(String[] args) { Map<String, String> map = new HashMap<String, String>(); map.put("1", "value1"); map.put("2", "value2");原创 2019-03-07 16:38:07 · 124 阅读 · 0 评论 -
设计模式六大原则——SOLID
转载:原文SOLID设计模式的六大原则有:Single Responsibility Principle:单一职责原则Open Closed Principle:开闭原则Liskov Substitution Principle:里氏替换原则Law of Demeter:迪米特法则Interface Segregation Principle:接口隔离原则Dependenc...转载 2019-03-08 16:50:59 · 163 阅读 · 0 评论 -
服务器端编码和浏览器端解码
在后台处理有中文的参数的时候,从后台代码中指定服务端的编码方式,并且指定浏览器端的解码方式:response.setCharacterEncoding("utf-8");//设置服务器端编码response.setContentType("text/html;charset=utf-8");//设置浏览器端解码这样在浏览器传过去的中文可以正常显示在浏览器页面上。如果是jsp处理,对于...原创 2019-01-30 16:41:04 · 601 阅读 · 0 评论 -
pom中build配置
1.分类 (1)全局配置(project build) 针对整个项目的所有情况都有效 (2)配置(profile build) 针对不同的profile配置<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xs...转载 2019-01-22 17:28:40 · 1611 阅读 · 0 评论 -
Java字符编码与解码
在Java中,URLDecoder和URLEncoder它的作用主要是用于普通字符串和application/x-www-form-rulencoded MIME字符串之间的转换,也就是编码和解码,在谷歌搜索中,搜索文段中有中文的话,会在地址栏被编码成application/x-www-form-rulencoded MIME字符串。在实际业务中,也会有很多业务需要处理流类信息,例如调用了Pr...原创 2018-12-12 19:17:32 · 365 阅读 · 1 评论