- 博客(49)
- 收藏
- 关注

原创 Java 运行时的内存划分
运行时数据区主要包括:方法区,堆,Java 虚拟机栈,程序计数器,本地方法栈。 其中方法区和堆所有线程共享,Java栈,程序计数器,本地方法栈线程私有。程序计数器 一块较小的内存空间,可以看做是当前线程所执行的字节码行号的指示器;字节码解释器工作时,通过改变计数器的值 选取下一条执行的字节码指令;(一些基本功能都需要依赖计数器来完成如:分支、循环、跳转、...
2018-08-29 11:49:05
206

原创 通过 HelloWorld 了解Java程序执行过程以及运行时内存
public class HelloWorld { public static void main(String[] args) { String s; s = "HelloWorld"; System.out.println(s); }}运行过程那么 Java 是如何执行这段代码的呢?1.调用 Java 的编译...
2018-08-29 11:47:10
1864

原创 Singleton单例模式
什么是单例模式?单例模式是一种常见的设计模式,可以使得某个类只有一个实例,自己创建该类实例并向外界提供该实力。单例的三要素:构造方法私有化,类的内部创建对象静态属性静态方法单例模式优缺点优点数据共享项目安全(配合同步实现)缺点并发性降低增加耦合为什么使用单例模式?在某些条件下,使用单例模式可以控制类实例的数量,达到节约资源的目的,同时由于只有一个实例,可以实现通信的功能以及资源共
2017-07-12 21:23:06
392

原创 Java中创建子类对象会创建父类对象么?
答案是否定的,在Java中创建一个子类对象是不会创建父类对象的。 通过一个实例来证明:实例:父类Base.javapublic class Base { private String str; public Base() { System.out.println("Base()"); System.out.println(this); }
2017-06-06 22:23:35
11770
4
原创 JUC集合总体框架
List & SetJUC 集合包中的 List 和 Set 实现类包括: CopyOnWriteArrayList, CopyOnWriteArraySet 和 ConcurrentSkipListSet(基于 ConcurrentSkipListMap实现)。CopyOnWriteArrayListArrayList 的线程安全变体,其中所有可变操作(添加、设置等)都是通过创建...
2019-03-02 21:43:19
588
原创 Java集合总体框架
Java集合主要可以划分为4个部分:List 列表、Set 集合、Map 映射、工具类(Iterator 迭代器、Enumeration 枚举类、Arrays 和 Collections)。ListLinkedList双向链表实现的双端队列;它不是线程安全的,只适用于单线程。ArrayList数组实现的队列,它是一个动态数组;它也不是线程安全的,只适用于单线程。Vector数组实现...
2019-03-02 21:39:32
257
原创 RabbitMQ 消息队列之队列模型
RabbitMQ提供如下5种队列模型1.“Hello World!”.简单模式2.Work Queues (又名: Task Queues) .工作队列,在消费者之间分配任务(竞争的消费者模式),一个消息只能被一个消费者获取。3.Publish/Subscribe.订阅模式,消息被路由投递给多个队列,同一个消息被多个消费者获取,以达到同时向多个消费者发送消息的目的。Exchange...
2018-11-13 17:57:47
339
原创 RabbitMQ 消息队列之 Exchange Types
写在前面RabbitMQ遵循AMQP 0-9-1协议 AMQP 0-9-1协议简介消息发布到交换站,这通常被比作邮局或邮箱。然后交换器使用称为绑定的规则将消息副本分发到队列。然后,AMQP代理将消息传递给订阅队列的消费者,或者根据需要从队列中获取消息。发布消息时,发布者可以指定各种消息属性(消息元数据)。这些元数据中的一些可能由代理使用,但是,其他部分对代理完全不透明,仅供接收消息的应用...
2018-11-13 16:57:18
257
原创 RabbitMQ 和消息传递常用一些术语
0.写在前面RabbitMQ 是一个消息代理:它接受和转发消息。你可以把它想象成一个邮局:当你把你想要投寄的邮件放在一个邮箱里时,你可以确定收信人先生或女士最终会把邮件寄给你的收件人。在这个类比中,RabbitMQ是一个邮箱、一个邮局和一个邮递员。RabbitMQ 与邮局的主要区别在于它不处理纸张,而是接收、存储和转发二进制数据块——消息。1.Producer生产就是发送,发送消息的程序...
2018-11-13 16:52:46
560
原创 MQ快速入门
什么是MQ?消息队列(MQ)是一种应用程序对应用程序的通信方法。应用程序通过写和检索出入列队的针对应用程序的数据(消息)来通信,而无需专用连接来链接它们。消息传递指的是程序之间通过在消息中发送数据进行通信,而不是通过直接调用彼此来通信,直接调用通常是用于诸如远程过程调用的技术。排队指的是应用程序通过队列来通信。队列的使用除去了接收和发送应用程序同时执行的要求。为什么使用MQ?使用场景解耦...
2018-10-22 16:31:14
368
原创 Java读取resources配置文件
通过classloader加载ClassLoader classloader = Thread.currentThread().getContextClassLoader();InputStream is = classloader.getResourceAsStream("generatorConfig.xml");
2017-11-22 16:57:33
3703
原创 attr('checked', 'checked')调用多次仅第一次生效
1.问题原因JQuery从1.6开始,使用attr()获取这些属性的返回值为String类型,如果被选中(或禁用)就返回checked、selected或disabled,否则(即元素节点没有该属性)返回undefined。并且,在某些版本中,这些属性值表示文档加载时的初始状态值,即使之后更改了这些元素的选中(或禁用)状态,对应的属性值也不会发生改变。2.解决方法使用prop(‘checked’,’
2017-11-09 10:22:50
1343
原创 Spring Aop拦截controller配置注意事项
Spring Aop拦截controller需要cglib生成代理方法springmvc配置文件 <!--通知spring使用cglib而不是jdk的来生成代理方法 AOP可以拦截到Controller--> <aop:aspectj-autoproxy proxy-target-class="true" />Spring配置文件<!-- 启动对@AspectJ注解的支持 --> <
2017-10-28 12:02:20
894
原创 byte[] 转换成String,再getBytes()之后byte[]内容与原数组不同
问题代码 byte[] bytes = new byte[]{40, -37, -96, 46, -75, -10}; byte[] myBytes = new String(bytes).getBytes(); System.out.println(Arrays.toString(bytes)); System.out.println(Arrays.toString(myBytes));输出
2017-10-24 11:04:05
35000
3
原创 IDEA环境gradle项目目录结构介绍
.gradlegradle执行信息.idea存放项目的配置信息。这个文件夹是自动生成,版本控制信息等,包括历史记录build项目输出路径,包括编译后的.class文件(classes文件夹下),资源文件(resourcer文件夹下)src项目源码,包含程序源码和测试源码build.gradle当前module的gradle配置文件.settings.gradle针对module的全局配置,它的作用域
2017-10-19 10:30:42
7191
1
原创 Gradle项目不会自动生成war包问题
记录一下自己遇到的问题,以备以后查阅问题描述在build.gradle配置文件中配置apply plugin: 'war'但是项目结构中没有对应的war包 解决方法该问题是由于gradle版本过低造成,下载新版本的gardle即可解决
2017-10-18 17:21:57
1860
1
原创 IntelliJ IDEA导入gradle项目,配置tomcat
一、导入项目1.选择导入项目2.选择导入Gradle项目3.选择Gradle以及JDK二、配置tomcat1.配置tomcat2.选择添加 3.配置tomcat信息4.添加对应的项目war包5.启动项目
2017-10-11 15:38:17
6779
原创 数据库三范式
第一范式(1NF)字段具有原子性,不可再分。所有关系型数据库系统都满足第一范式)数据库表中的字段都是单一属性的,不可再分。例如,姓名字段,其中的姓和名必 须作为一个整体,无法区分哪部分是姓,哪部分是名,如果要区分出姓和名,必须设计成两 个独立的字段。第二范式(2NF) 第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范式(2NF)必须先满足第一范式(1NF)。要求数据库表中的
2017-09-22 15:48:04
269
转载 数据结构与算法、Java多线程、Java集合(包括JUC)系统学习推荐博客
http://www.cnblogs.com/skywang12345/ 教科书般的博客!写的很详细很好
2017-09-16 15:26:44
317
原创 Maven项目导入jstl标签库jar包正确方式
自己遇到的问题,记录一下 细节决定成败问题描述在maven repository中找到jstl标签库配置,配置到pom.xml 配置后无效,导入jstl依然报错!解决方法使用jstl-impl pom.xml配置如下: 由于jstl-impl自带依赖的servlet-api版本过低,应该去除依赖,导入合适版本的servlet-api <dependency>
2017-09-14 21:30:58
11115
原创 mybatis动态sql参数为实体类时出现的问题
记录一下自己遇到的问题,以便以后查阅问题描述void add(@Param("cartitem")CartItem cartitem);<insert id="add" parameterType="cn.wang.bookstore.cartitem.doamin.CartItem">insert into t_cartitem(cartItemId,quantity,bid,u
2017-09-12 20:18:47
2650
2
原创 GET请求中文乱码解决原理
乱码确实是个令人头痛的问题!问题描述GET请求参数是跟在URL后面的:eg.http://localhost:8080/xxx/index.jsp?a=张三 在程序中通过request.getParameter(“a”)获取,但是由于是中文会出现乱码问题解决原理//获取到的中文乱码String a=request.getParameter("a");//对中文乱码进行回退重编a=new St
2017-09-12 10:45:49
574
原创 mybatis方法多个参数时报错:Caused by: org.apache.ibatis.binding.BindingException: Parameter 'xxx' not found
被这个问题坑到了,记录一下。问题描述:当在mybatis框架中使用的查询语句中包含多个参数 会出现找不到参数的情况!解决办法为方法中的参数加上注解指定参数
2017-09-07 15:06:32
21994
3
原创 SSM框架整合配置案例
一、SSM1.SpringMVC 它用于web层,相当于controller(等价于传统的servlet和struts的action),用来处理用户请求。2.Spring IOC容器,它可以装载bean,创建对象3.Mybatis 操作数据库二、配置案例1.导入jar包2.配置web.xml<?xml version="1.0" encoding="UTF-8"?><web-
2017-09-04 20:30:00
453
原创 spring整合mybatis完整案例(注解配置方法)
一.项目整体结构二.详细内容0.导入jar包1.domian(1)User实体类2. dao(1)IUserDaoUserDao层接口,定义crud接口方法 (2)IUserDao.xml注解方式配置不需要实现dao接口,会自动实现并创建对象 只需要配置实体类对应的SQL映射<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUB
2017-08-31 10:01:44
1948
原创 spring整合mybatis完整案例(配置文件方式)
一.项目整体结构二.详细内容0.导入jar包1.domian(1)User实体类 (2)UserMappser.xml User类对应SQL映射文件<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/
2017-08-31 09:27:09
1126
原创 Struts2配置入门案例
一、搭建环境1.导包: 2.web.xml配置StrutsPrepareAndExecuteFilter web.xml:<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.
2017-08-27 21:16:31
267
原创 Hibernate入门配置案例
一、什么是hibernate框架1 hibernate框架应用在javaee三层结构中 dao层框架2 在dao层里面做对数据库crud操作,使用hibernate实现crud操作,hibernate底层代码就是jdbc,hibernate对jdbc进行封装,使用hibernate好处,不需要写复杂jdbc代码了, 不需要写sql语句实现3 hibernate开源的轻量级的框架4 hibernat
2017-08-27 20:49:39
243
原创 mybatis入门配置案例
一、配置数据库0.导入jar包 1.在src下创建conf.xml 2.将数据库配置文件放到JDBC.properties中<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/m
2017-08-27 20:17:44
340
原创 超详细JVM学习笔记
1.什么是JVM? JVM(JavaVirtualMachine,Java虚拟机)是JRE的一部分。它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。JVM有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。Java语言最重要的特点就是跨平台运行。使用JVM就是为了支持与操作系统无关,实现跨平台。2.JVM原理 1.Java编译器只要面向
2017-08-17 17:25:57
531
原创 Java中LinkedList集合
一、LinkedList介绍1.LinkedList继承关系2.定义public class LinkedList<E>extends AbstractSequentialList<E>implements List<E>, Deque<E>, Cloneable, Serializable3.简介1. LinkedList实现了List、Deque接口,是一个双向链表,允许有空元素,它也可以被
2017-08-09 11:28:59
432
原创 Java中ArrayList集合
一、ArrayList介绍1.ArrayList继承关系2.定义public class ArrayList<E>extends AbstractList<E>implements List<E>, RandomAccess, Cloneable, Serializable3.简介1. ArrayList是一个可变数组,与Java中数组相比,它的容量是动态增长的,它继承自AbstractList
2017-08-07 20:32:52
1975
原创 Java中Collection集合简介
一、Connection概括1. ConnectionAPI2. Connection架构(图片来自网络)3.说明Connection是一个接口,是高度抽象的集合,它包含了集合的基本操作:对集合元素的增、删、改、查、判断是否为空,获取大小、遍历等操作;根据Connection接口规范的建议:Collection接口的所有子类(直接子类和间接子类)都必须实现2种构造函数:不带参数的构造函数 和 参
2017-08-07 19:31:44
8345
1
原创 解决Java程序向mysql数据库插入中文乱码问题的多种方式
方式一:设置编码统一1.设置eclipse环境编码2.设置mysql环境编码mydb为需要修改的数据库名称方式二:创建数据库时设置编码1.mysql创建database时设置编码create database mydb default character set utf8 collate utf8_general_ci;2.创建表时设置编码CREATE TABLE `type` ( `id` i
2017-07-26 10:20:37
24420
9
原创 Spring配置连接池和dao使用JdbcTemplate
Spring配置c3p0连接池导入jar包 除Spring基本jar包外,还需要导入c3p0相关jar包 创建Spring配置文件,配置连接池<!-- 配置c3p0连接池 --><!-- ComboPooledDataSource dataSource=new ComboPooledDataSource(); dataSource.setDriverC
2017-07-19 09:35:43
616
原创 Spring Aop
AOP概念aop面向切面变成,扩展功能不修改原代码aop采用横向抽取机制,取代传统纵向继承体系重复代码aop底层采用动态代理模式实现 (1)第一种情况:有接口情况,使用动态代理创建接口实现类代理对象 (2)第二种情况:没有接口情况,使用动态代理创建子类代理对象AOP原理底层使用动态代理实现 1.第一种情况:有接口情况 使用jdk动态代理,针对有接口情况public interface
2017-07-18 10:35:47
243
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人