自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 资源 (2)
  • 收藏
  • 关注

原创 Git在IDEA中相关操作最详细解析

一、Compare with Local选择当前分支:比较的是当前分支 index暂存区(绿色新建,蓝色修改)和当前版本库的代码选择其他分支:比较的是当前分支 index暂存区(绿色新建,蓝色修改)+ 版本库 和其它任意分支任意版本,远程版本库任意分支任意版本的代码情况1:暂存区为空此处新建了两个TestStream2,TestStream3,并未加入暂存区(idea中为红色)git add --ignore-errors -A -- src/main/java/com/cx/d

2022-04-25 13:22:00 4993 1

原创 RedisTemplate使用最详解(五)--- opsForZSet()

1、add(K key, V value, double score)向指定key中添加元素,按照score值由小到大进行排列集合中对应元素已存在,会被覆盖,包括scoreredisTemplate.opsForZSet().add("zSet", "aaa", 1);redisTemplate.opsForZSet().add("zSet", "bbb", 2);redisTemplate.opsForZSet().add("zSet", "ccc", 3);2、add(K key

2021-10-31 18:20:14 34757 2

原创 RedisTemplate使用最详解(四)--- opsForSet()

1、add(K key, V… var2)向key中批量添加值redisTemplate.opsForSet().add("set", "aa", "bb", "cc");redisTemplate.opsForSet().add("set", "ee");2、members(K key)获取key中的值Set set = redisTemplate.opsForSet().members("set");System.out.println("set = " + set);3

2021-10-31 15:52:58 34400 7

原创 RedisTemplate使用最详解(三)--- opsForHash()

1、put(H var1, HK var2, HV var3)新增hashMap值var1 为Redis的keyvar2 为key对应的map值的keyvar3 为key对应的map值的值var2相同替换var3redisTemplate.opsForHash().put("hashValue","map1","value1");redisTemplate.opsForHash().put("hashValue","map2","value2");2、get(H var1, Ob

2021-10-31 14:19:42 55042 1

原创 RedisTemplate使用最详解(一)--- opsForValue()

1、set(K var1, V var2)新增一个字符串类型的值var1是keyvar2是值key存在就覆盖,不存在新增redisTemplate.opsForValue().set("BBB","你好");2、set(K key, V value, Duration timeout)新增一个字符串类型的值,同时设置过期时间var1是keyvar2是值key存在就覆盖,不存在新增redisTemplate.opsForValue().set("BBB","你好", D

2021-10-31 13:04:15 26542 6

原创 RedisTemplate使用最详解(二)--- opsForList()

1、leftPush(K key, V value)从集合左边插入值值重复无影响先进先出redisTemplate.opsForList().leftPush("list","a");redisTemplate.opsForList().leftPush("list","a");redisTemplate.opsForList().leftPush("list","b");2、leftPush(K key, V v, V v1)从集合左边开始在v值后边插入新值v1在集合中查

2021-10-29 18:14:28 59106 6

原创 Stream流式计算,各种实例!

一、stream()、collect()工厂方法返回类型用于toListList把流中所有元素收集到List中示例:List menus=Menu.getMenus.stream().collect(Collectors.toList())toSetSet把流中所有元素收集到Set中,删除重复项示例:Set menus=Menu.getMenus.stream().collect(Collectors.toSet())toCollection

2020-11-03 15:03:49 1418

原创 Synchronized关键字加在普通方法上和加在静态方法上有什么区别?

一、Synchronized关键字加在普通方法上和加在静态方法上有什么区别?synchronized修饰不加static的方法,锁是加在单个对象上,不同的对象没有竞争关系;synchronized修饰加了static的方法,锁是加载类上,这个类所有的对象竞争一把锁。Synchronized修饰非静态方法,实际上是对调用该方法的对象加锁,俗称“对象锁”。情况1:package com.cx.domain;public class Thread01 { public sta

2020-07-09 15:57:26 6061 1

原创 反射

一、反射反射机制:将类的各个组成部分封装为其他对象,这就是反射机制。反射的好处: * 可以在程序运行过程中,操作这些对象。 * 可以解耦,提高程序的可扩展性。Java代码在计算机中经历的三个阶段:Source源代码阶段:.java被编译成.class字节码文件。Class类对象阶段:*.class字节码文件被类加载器加载进内存,并将其封装成Class对象(用于在内存中描述字节码文件),Class对象将原字节码文件中的成员变量抽取出来封装成数组Field[],将原字节码文件中的构造函数抽取出

2020-06-29 17:38:16 129

原创 3.3、执行引擎

执行引擎概述虚拟机是一个相对于“物理机”的概念,这两种机器都有代码执行能力,其区别是物理机的执行引擎是直接建立在处理器、缓存、指令集和操作系统层面上的,而虚拟机的执行引擎则是由软件自行实现的,因此可以不受物理条件制约地定制指令集与执行引擎的结构体系,能够执行那些不被硬件直接支持的指令集格式。执行引擎作用JVM的主要任务是负责装载字节码到其内部,但字节码并不能够直接运行在操作系统之上,因为字节码指令并非等价于本地机器指令,它内部包含的仅仅只是一些能够被JVM锁识别的字节码指令、符号表和其他辅助信息那么

2020-06-26 13:41:48 139

原创 3.2、直接内存

直接内存不是虚拟机运行时数据区的一部分,也不是《Java虚拟机规范》中定义的内存区域,直接内存是Java堆外的、直接向系统申请的内存区间直接内存举例/** * IO NIO (New IO / Non-Blocking IO) * byte[] / char[] Buffer * Stream Channel * * 查看直接内存的占用与释放 */public class BufferTest { priv

2020-06-26 13:41:24 140

原创 3.1、对象实的实例化

对象的实例化创建对象的步骤类加载检查虚拟机遇到一条new指令,首先去检查这个指令的参数能否在Metaspace的常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已经被加载、解析和初始化。( 即判断类元信息是否存在)。如果没有,那么在双亲委派模式下,使用当前类加载器以ClassLoader+包名+类名为Key进行查找对应的.class文件。为对象分配内存首先计算对象占用空间大小,接着在堆中划分一块内存给新对象。 如果实例成员变量是引用变量,仅分配引用变量空间即可,即4个字节

2020-06-26 13:40:59 151

原创 2.2.5、运行时数据区-方法区

方法区概述方法区与 Java 堆一样,是各个线程共享的内存区域,它用于存储已被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。虽然 Java 虚拟机规范把方法区描述为堆的一个逻辑部分,但是它却有一个别名叫做 Non-Heap(非堆),目的应该是与 Java 堆区分开来。所以,方法区可以看作是一块独立于Java堆的内存空间。堆、栈、方法区的交互关系对象的新建对象的使用方法区特点与Java堆一样,是各个线程共享的内存区域方法区在JVM启动时就会被创建,并且它的实际的物理

2020-06-24 14:56:11 196

原创 2.2.4、运行时数据区-堆

堆空间概述堆空间的特点实例分析堆的调用堆的内存结构JDK7 及以前JDK8 及以后永久代、元空间与堆的关系堆内存大小设置设置内存大小查看堆内存大小年轻代与老年代新生代与老年代在堆的占比配置堆内存的分配机制堆内存分配过程对象分配的特殊情况Minor GC、Major GC、Full GC 简介年轻代GC(Minor GC)触发机制老年代GC(Major GC/Full GC)触发机制Full GC触发机制内存分配策略总结TLA.

2020-06-24 14:55:28 153

原创 2.2.3、运行时数据区-本地方法栈和本地方法接口

本地方法接口和本地方法一个Native Method 是特殊的一个java方法:该方法的实现由非Java语言实现,比如C。简单来讲,Native Method就是一个java调用非java代码的接口,它的作用是融合不同的编程语言为java所用,初衷是融合C/C++程序。这个特征并非java特有,很多其他的编程语言都有这一机制,比如在C++ 中,你可以用extern “C” 告知C++ 编译器去调用一个C的函数。在定义一个native method时,并不提供实现体(有些像定义一个Java int

2020-06-24 14:54:56 200

原创 2.2.2运行时数据区-虚拟机栈

虚拟机栈的概述背景由于跨平台性的设计需要,java的指令都是根据栈来设计的。不同平台CPU架构不同,所以不能设计为基于寄存器的。栈结构的优点是跨平台,指令集小,编译器容易实现,缺点是性能下降,实现同样的功能需要更多的指令。内存中的堆与栈栈管运行,即程序如何执行,或者说如何处理数据。栈空间存放基本数据类型的局部变量,以及引用数据类型的对象的引用堆管内存,即数据怎么放、放在哪儿。一般来讲,对象主要都是放在堆空间的,是运行时数据区比较大的一块虚拟机栈java虚拟机栈(Java Virtual M

2020-06-24 14:54:28 172

原创 2.2.1、运行时数据区-程序计数器

程序计数器(PC寄存器)程序计数器(Program Counter Register)中的Register,命名源于CPU的寄存器寄存器存储指令相关的现场信息,CPU只有把数据装载到寄存器才能够运行。JVM中的PC寄存器是对物理PC寄存器的一种抽象模拟程序计数器的作用PC寄存器是用来存储指向下一条指令的地址,也就是即将要执行的指令代码。由执行引擎读取下一条指令。特点它是一块很小的内存空间,几乎可以忽略不计。也是运行速度最快的存储区域在jvm规范中,每个线程都有它自己的程序计数器,它是

2020-06-24 14:53:52 196

原创 2.1、JVM内存结构概览

内存与线程内存内存是非常重要的系统资源,是硬盘和cpu的中间仓库及桥梁,承载着操作系统和应用程序的实时运行。JVM内存布局规定了JAVA在运行过程中内存申请、分配、管理的策略,保证了JVM的高效稳定运行。JDK8的元数据区(就是JDK8以前的方法区)+JIT编译产物分区java虚拟机规定了若干种程序运行期间会使用到的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁。另外一些则是与线程一一对应的,这些与线程对应的数据区域会随着线程开始和结束而创建和销毁。线程独立区域:独

2020-06-24 14:53:21 97

原创 1.2、类加载器

类加载器ClassLoader角色所有的类都由类加载器加载,加载的作用就是将 .class文件加载到内存。一个非数组类的加载阶段(加载阶段获取类的二进制字节流的动作)是可控性最强的阶段,这一步我们可以去完成还可以自定义类加载器去控制字节流的获取方式(重写一个类加载器的 loadClass() 方法)。数组类型不通过类加载器创建,它由 Java 虚拟机直接创建。类加载器分类JVM支持两种类型的加载器引导类加载器(BootStrap ClassLoader)自定义类加载器(User-Defin

2020-06-24 14:52:48 122

原创 1.0、JVM概览

Java 虚拟机简介Java 虚拟机是一台执行 Java 字节码的虚拟计算机,它拥有独立的运算机制,器运行的Java字节码也未必是Java语言编译而成JVM 平台的各种语言可以共享Java虚拟机带来的跨平台性、优秀的垃圾回收器,以及可靠的及时编译器。Java 技术的核心就是Java虚拟机功能:Java虚拟机就是二进制字节码的运行环境,负责装载字节码到其内部,解释/编译为对应平台上的机器指令执行特点:一次编译,到处运行自动内存管理自动垃圾回收机制JVM的位置J

2020-06-24 14:51:21 169

原创 1.1、类的加载过程

类加载子系统 概览类加载器的作用在JVM架构中的具体位置类加载的过程类的生命周期1. 加载2. 连接.验证3. 连接.准备4. 连接.解析5. 初始化类的卸载类加载子系统 概览类加载器的作用类加载子系统负责从文件系统或者网络中加载Class文件,class文件在文件开头有特定的文件标识;ClassLoader只负责class文件的加载,至于它是否可以运行,则由Execution Engine决定加载的类信息存放于一块成为方法区的内存空间。除了类信息之外,.

2020-06-24 14:47:14 185

原创 1.0、JVM概览

Java 虚拟机简介JVM的位置JVM 的整体结构Java 代码执行流程JVM 架构模型JVM 声明周期启动执行退出各类 JVM 的实现SUN Classic VMExact VMHotSpot VMJRockitIBM J9KVM & CDC/CLDC HotspotAzul VM & BEA Liquid VMApache HarmonyMicrosoft JVMTaobaoJVMDalvik VMGraal VMJava.

2020-06-24 14:46:03 116

原创 spring——bean的生命周期

一. bean的生命周期Spring IOC容器可以管理bean的生命周期,Spring允许在bean生命周期内特定的时间点执行指定的任务。Spring IOC容器对bean的生命周期进行管理的过程:通过构造器或工厂方法创建bean实例为bean的属性设置值和对其他bean的引用调用bean的初始化方法bean可以使用了当容器关闭时,调用bean的销毁方法在配置bean时,通过init-method和destroy-method 属性为bean指定初始化和销毁方法。be

2020-05-26 16:45:56 153

原创 spring——applicationContext.xml模板配置

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="h

2020-05-26 15:37:28 264

原创 spring——注入方式、bean的作用域

一. 配置文件注入bean对象如下:package com.cx.entity;public class Student { private String name; private Integer age; public String getName() { return name; } public void setName(String name) { this.name = name; } publ

2020-05-26 15:35:01 156

原创 XStream实例

工具类:/** * 将服务器回复的内容封装成xml * @return */ public static String messageToXml(Object object) {// xstream.alias("xml", object.getClass());// xstream.aliasField("ToUserNam...

2020-04-07 15:25:44 178

原创 SAX解析xml

// 将解析结果存储在HashMap中 Map<String, String> map = new HashMap<String, String>(); // 读取输入流 SAXReader reader = new SAXReader(); Document document = null; ...

2020-04-07 14:58:47 87

原创 JS闭包问题

因为你需要在事件内使用事件外的循环变量i。你的循环中只是为元素绑定事件,这时事件并没有触发执行。等到事件触发时,那个循环早已经结束了,那时的i的值已经是循环最大值加1了。所以需要用一些方式保存住当前循环的i的值。方案1为:用闭包保存住当前循环的i的值。for(var i=0;i<doms.length;i++) { (function(i){ doms[i]...

2019-12-27 09:49:08 76

原创 Spring Cloud笔记

单体应用存在的问题随着业务的发展,开发变得越来越复杂。修改、新增某个功能,需要对整个系统进行测试、重新部署。一个模块出现问题,很可能导致整个系统崩溃。多个开发团队同时对数据进行管理,容易产生安全漏洞。各个模块使用同一种技术进行开发,各个模块很难根据实际情况选择更合适的技术框架,局限性很大。模块内容过于复杂,如果员工离职,可能需要很长时间才能完成工作交接。分布式、集群集群:一台服...

2019-12-04 14:37:25 67

原创 oracle详解(2)

---视图---视图的概念:视图就是提供一个查询的窗口,所有数据来自于原表。---查询语句创建表create table emp as select * from scott.emp;select * from emp;---创建视图【必须有dba权限】create view v_emp as select ename, job from emp;---查询视图select * ...

2019-12-02 19:52:06 90

原创 oracle详解(1)

--创建表空间create tablespace itheimadatafile 'c:\itheima.dbf'size 100mautoextend onnext 10m;--删除表空间drop tablespace itheima;--创建用户create user itheimaidentified by itheimadefault tablespace ithe...

2019-12-02 19:49:49 80

原创 mybatis 查询List List.size()>0 但是值为空

一般是因为实体类的字段名以及字段的个数必须和数据库的字段名和字段个数一一对应,否则就会出现以上情况。

2019-11-28 11:36:06 3908

wangzhanmoban.zip

一些基本的网站模板....

2020-04-07

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除