自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 收藏
  • 关注

原创 java单与(&)、双与(&&)和单或双或

Java的&、&&和 |、||1、&和&&的异同public class TestOperator { public static void main(String[] args) { int a=5; if(a==0 & a++<10){ System.out.println("if===="+a); }else { System.out

2021-11-20 14:43:37 3057

原创 重视算法,提升性能

重视算法在日常写代码的时候,常常就想着跑代码,修复bug,尽快实现需求,完成任务。又有多少时候在想着优化算法、提升性能呢?若有时间好好地优化算法,可以锻炼自己的思维,降低迭代的难度。从力扣上第一道简单的算法题开始。给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。你可以按任意顺序返回答案。示例 1:输入:nums = [

2021-10-24 23:17:37 183

原创 Java位运算

Java位运算1、按位取反 ~public class TestBitOperation { public static void main(String[] args) { //~n: 按位取反,0 -> 1, 1 -> 0 System.out.println(Integer.toBinaryString(1)); //1 System.out.println(Integer.toBinaryString(~1));

2021-10-23 17:39:04 134

原创 Java字符集编码与解码

Java字符集编码与解码字符(Character)是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。字符集(Character set)是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同,常见字符集名称:ASCII字符集、GB2312字符集、BIG5字符集、 GB18030字符集、Unicode字符集等。计算机要准确的处理各种字符集文字,就需要进行字符编码,以便计算机能够识别和存储各种文字。1、ASCII字符集ASCII ((American Standard Code

2021-10-23 14:32:56 423

原创 基本数据类型与引用数据类型值的传递

基本数据类型与引用数据类型值的传递1、基本数据类型基本数据类型的变量之间用 =,是直接将该变量的值赋值给另一个变量。public class ParameterTransferTest { public static void main(String[] args) { int i = 1; int i1 = i; System.out.println(i);//1 System.out.println(i1);//1

2021-10-17 14:45:56 243

原创 Java的 == 和 equals

Java的 == 和 equals1、基本数据类型比较用 ==public class CompareTest { public static void main(String[] args) { int i = 999; int i2 = 999; int i3 = 9999; compare(i, i2);//相等 compare(i, i3);//不相等 } private static vo

2021-10-12 14:32:20 64

原创 Java类型转化

Java类型转化先随意写两个类public class User { private long id; private String name="zs"; private String password; //提供无参、有参构造方法。setter,getter方法。覆写toString方法。}public class Student { private Long id; private String name; private String pa

2021-10-11 22:31:34 61

原创 Java基本数据类型

Java基本数据类型1、Java数据类型2、Java基本数据类型所占位数、最小值、最大值public class BasicDataTypeTest { public static void main(String[] args) { //byte System.out.println(Byte.SIZE);//8位 System.out.println(Byte.MIN_VALUE);//-128 System.out.pri

2021-10-10 15:58:11 53

原创 Synchronized

Synchronized1、synchronized基本原理synchronized是基于JVM内置锁实现,通过内部对象Monitor(监视器锁)实现。基于进入与退出Monitor对象,实现方法与代码块同步。监视器锁的实现依赖底层操作系统的Mutex lock(互斥锁)实现,它是一个重量级锁,性能较低。当 然,JVM 内置锁在1.5之后版本做了重大的优化,如锁粗化(Lock Coarsening)、锁消除(Lock Elimination)、轻量级锁(Lightweight Locking)、偏向锁(B

2021-09-18 23:28:46 490

原创 悲观锁与乐观锁

悲观锁与乐观锁1、线程安全概述线程安全是多线程编程时,计算机程序代码中的一个概念。在拥有共享数据的多线程并行执行的程序中,线程安全的代码会通过线程同步或者乐观锁等机制保证各个线程都可以正常且正确地执行,不出现数据污染等意外情况。2、 线程安全的实现方法线程安全的保证一般使用锁来实现,锁的一种宏观分类方式可分为悲观锁和乐观锁。悲观锁与乐观锁并不是特指某个锁,而是在并发情况下的两种策略。2.1、悲观锁定义:就是悲观,每次去拿数据的时候都认为别人会修改。所以每次在拿数据的时候都会上锁。这样别人想拿数据

2021-09-18 22:58:26 55

原创 Java类的加载、连接和初始化

Java类的加载、连接和初始化以下摘抄自《疯狂Java》,因为转载和翻译都需要链接地址,所以只好写成原创,免得麻烦。1、类的加载当程序主动使用某个类时,如果该类还未被加载到内存中,则系统会通过加载、连接、初始化三个步骤来对该类初始化。如果没有意外,JVM将会连续完成这三个步骤,所以有时也把这三个步骤统称为类加载或类初始化。类加载是指将类的class文件读入内存,并为之创建一个java.lang.Class对象,也就是说,当程序中使用任何类时,系统都会为之建立一个java.lang.Class对象。

2021-09-08 00:12:25 316

原创 事务四大特性

事务1、什么是事务指作为单个逻辑工作单元(Service方法)执行的一系列操作(数据库操作),要么完全地执行,要么完全地不执行。事务可以看做是一次大的活动,它由不同的小活动组成,这些活动要么全部成功,要么全部失败。什么是本地事务(Local Transaction)?本地事务也称为数据库事务或传统事务(相对于分布式事务而言)。它的执行模式就是常见的:transaction begininsert/delete/updateinsert/delete/update…transaction co

2021-08-28 23:40:17 3443

原创 分布式事务

分布式事务1、什么是分布式事务针对于单数据库的事务我们叫本地事务/传统事务,在分布式环境中一个请求可能涉及到多个数据库的写操作(多数据源),要保证多数据源的一致性必须用到分布式事务。2、为什么需要分布式事务系统微服务化后,一个看似简单的功能,内部可能需要调用多个服务并操作多个数据库实现,服务调用的分布式事务问题变的非常突出。一个下单请求同时设计到订单库,优惠券库,库存库的写操作,需要保证三个库写操作的一致性,就要用到分布式事务 即:分布式事务就是要解决一个请求同时对多个数据库写操作的一致性注意

2021-08-28 15:43:22 128

原创 Mysql的执行原理

Mysql的执行原理mysql主要分为Server层和存储引擎层。Server层:主要包括连接器、查询缓存、分析器、优化器、执行器等,所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图,函数等,还有一个通用的日志模块 binglog日志模块。存储引擎: 主要负责数据的存储和读取,采用可以替换的插件式架构,支持InnoDB、MyISAM、Memory等多个存储引擎,其中InnoDB引擎有自有的日志模块redolog 模块。InnoDB 作为5.5.5版本默认引擎。连接器主要负责用户登录

2021-08-25 18:18:23 136

原创 JVM调优

JVM调优JVM调优目标:使用较小的内存占用来获得较高的吞吐量或者较低的延迟。程序在上线前的测试或运行中有时会出现一些大大小小的JVM问题,比如cpu load过高、请求延迟、tps降低等,甚至出现内存泄漏(每次垃圾收集使用的时间越来越长,垃圾收集频率越来越高,每次垃圾收集清理掉的垃圾数据越来越少)、内存溢出导致系统崩溃,因此需要对JVM进行调优,使得程序在正常运行的前提下,获得更高的用户体验和运行效率。这里有几个比较重要的指标:内存占用:程序正常运行需要的内存大小。延迟:由于垃圾收集而引起的程序

2021-08-25 11:31:34 73

原创 JVM内存溢出

JVM内存溢出1、堆内存溢出堆内存中主要存放对象、数组等,只要不断地创建这些对象,并且保证GC Roots到对象之间有可达路径来避免垃圾收集回收机制清除这些对象,当这些对象所占空间超过最大堆容量时,就会产生OutOfMemoryError的异常。常见原因:内存中加载的数据过多,如一次从数据库中取出过多数据;集合对对象引用过多且使用完后没有清空;代码中存在死循环或循环产生过多重复对象;堆内存分配不合理;网络连接问题、数据库问题等。改ide的堆空间,通过虚拟机参数修改该运行空间。修改所有2)

2021-08-25 10:06:08 64

原创 Java执行引擎

Java执行引擎执行引擎包含即时编译器(JIT)和垃圾回收器(GC),对即时编译器我们简单介绍一下,主要重点在于垃圾回收器。1、即时编译器(JIT,Just-In-Time Compiler)看到这个东西的存在可能有些人会感到疑问,不是通过javac命令就把我们的java代码编译成字节码文件了吗,这个即时编译器又是干嘛的?我们需要明确一个概念就是计算机实际上只认识0和1。这种由0和1组成的命令集称之为”机器码”,而且会根据平台不同而有所不同,可读性和可移植性极差。我们的字节码文件包含的并不是机器码,

2021-08-25 09:41:46 546

原创 Java类加载器子系统

Java类加载器子系统1、类加载的过程类加载的过程包括了加载,验证,准备,解析和初始化这5个步骤。①. 加载:找到字节码文件,读取到内存中。类的加载方式分为隐式加载和显示加载两种。隐式加载指的是程序在使用new关键词创建对象时,会隐式的调用类的加载器把对应的类加载到jvm中。显示加载指的是通过直接调用class.forName()方法来把所需的类加载到jvm中。②. 验证:验证此字节码文件是不是真的是一个字节码文件,毕竟后缀名可以随便改,而内在的身份标识是不会变的.在确认是一个字节码文件后,还会检查

2021-08-23 18:49:29 74

原创 jdk8内存模型

jdk8内存模型Java8的JVM内存模型包括,堆、栈、程序计数器以及元空间。栈可分为Java虚拟机栈和本地方法栈。其中堆和元空间是线程共享的,而Java虚拟机栈、本地方法栈、程序计数器是线程隔离的。元空间就是以前的方法区的实现。栈:Java虚拟机栈:Java虚拟机会为每个线程分配一个虚拟机栈,Java虚拟机栈是线程私有的。每个虚拟机栈中都有若干个栈帧,一个栈帧就对应Java代码中的一个方法。当线程执行到一个方法时,就代表这个方法对应的栈帧已经进入虚拟机栈并且处于栈顶的位置(先入后出),每一个J

2021-08-23 18:21:10 2809

原创 IO流——装饰器模式

IO流——装饰器模式装饰器模式就像是俄罗斯套娃,它的核心是在不改变原有类的基础上给类新增功能。例如IO流,一层套一层。import java.io.*;public class IOTest { public static void main(String[] args) throws FileNotFoundException { //FileInputStream字节流 //InputStreamReader转换流 //BufferedRea

2021-08-22 04:36:56 178

原创 Java文件拷贝

Java文件拷贝import java.io.*;import java.nio.ByteBuffer;import java.nio.channels.FileChannel;public class CopyTest { public static void main(String[] args) throws IOException { String src = "E:\\1.txt"; String target = "E:\\2.txt";

2021-08-22 03:23:04 88

原创 Java基础——线程

Java基础——线程1.创建线程的3种方式在Java中创建线程就是创建一个Thread类或者Thread子类的对象。方式一:继承Thread类public class MyThread extends Thread{ //线程的核心方法,写我们要让线程执行的任务 @Override public void run() { System.out.println("线程"+currentThread().getName()+"执行了。。"); }}

2021-08-18 01:36:00 54

原创 Java判断奇偶性

Java判断奇偶性public class Test { public static void main(String[] args) { /* * 可以通过判断余数是否为0来判断“奇数”和“偶数”。 * 不能用余数是否为1来判断“奇数”和“偶数”,因为还有负数。 */ int a =-2147483647; String str=a%2==0?"偶数":"奇数"; String str2=a%2!=0?"奇数":"偶数"; System.out.println

2021-07-30 23:56:53 4389

原创 Java单例模式

Java单例模式1、饿汉模式/* * * 单例模式---饿汉模式 * * 缺点:static修饰的成员在类加载的时候就已经存在于jvm中。即迫切加载,占用内存。 * 优点:不存在线程安全问题 */public class Single1 { //1、构造方法私有。禁止外部利用构造方法随意(new)创建该类的对象 private Single1(){} //2、创建实例对象,用private修饰,禁止外部随意调用字段创建对象。 //用static修饰使得该变量唯一,

2021-07-09 18:58:53 47

原创 Spring中常见Bean的注册&依赖注入

Spring常见Bean的注册&依赖注入一、Bean的注册public class Department { private Long id; private String name; /*提供无参构造,有参构造,setter和getter方法,覆写toString方法*/}public class Employee { private Long id; private String username; private String

2021-07-08 09:25:54 252

原创 内容管理系统

回想起之前写的项目,内容管理系统,写的第一个项目,现在对于该项目做简单的总结。需求(到底要完成什么样的功能)→实现思路(运用什么框架或者技术)→代码实现。内容管理系统先分为后台管理系统和前台展示。后台管理后台管理,对数据库中的数据进行增删改查,只允许管理员进入。所以要有登录,配置拦截器,判断是否有登录信息,在没有登录信息的时候拦截,重定向到登录界面,存在登录信息的时候,才可以进入后台管理界面。登录信息放在session作用域中。 该登录信息在session中存放时间为多久?暂时看以下三个方面。

2021-05-24 19:15:38 1669

空空如也

空空如也

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

TA关注的人

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