- 博客(52)
- 资源 (5)
- 收藏
- 关注
原创 【无标题】
为帮助您在CSDN创作的文章获得更多曝光和关注,我们为您提供了专属福利:已注册且未在CSDN平台发布过文章的用户,9月1日—9月30日期间发布首篇文章可享大额首篇流量券扶持,且发布首篇文章后30日内,享连续每日流量券扶持;已注册且未在CSDN平台发布过文章的用户,在8月1日—8月30日期间发布过首篇,可自9月1日起,享连续30天每日流量券扶持;更多福利介绍详见https://mp.csdn.net/mp_blog/manage/traffic如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇
2023-09-14 14:11:07 532
转载 static和transient不能被序列化的原因
首先我们来说一下static修饰的变量。被static修饰的变量为类变量,其初始化是在类加载的时候就已经初始化赋值,当然也可以在构造方法中对其进行修改或重新赋值。static修饰的变量可以通过 类名.变量名 的形式进行调用,也可以通过 对象.变量名 进行调用,虽然两种方式都可以调用到static修饰的变量,但是推荐使用前者,这样也便于后续一些问题的理解。接下来说一下transient。transient是序列化和反序列化时用于标记属性是否可序列化反序列化的“标记”,带有transient修饰的成员变量,在
2021-10-11 22:04:26 2628 1
原创 git基本操作及IDEA的集成
1.git存储结构图2.git的基本命令1、初始化操作 2、创建新版本库 3、修改和提交 4、撤消操作 5、查看提交历史 6、分支与标签 7、合并与衍合8、远程操作1.初始化操作$ git config -global user.name <name> #设置提交者名字$ git config -global user.email <email> #设置提交者邮箱$ git config -global core.editor <editor>
2021-08-26 20:40:53 320
转载 Java方法内的局部变量是否线程安全问题
Q1:下面这个方法中的变量x是否线程安全呢?public static void method() { int x = 0; for(int i = 1;i<=10;i++) { x *= i; } System.out.println(x);}A:答案是安全的,当多个线程同时执行此方法时,每个线程都会产生一个自己的变量x,每个线程之间互不干扰,不会对其他线程的变量x有影响。Q2:如果x是一个静态变量,那变量x是否还线程安全呢?A:当变脸x是一个静态变量时,多个线程执行此方法时
2021-04-23 19:05:16 3140 2
转载 符号运算
**前言我们都知道对于有符号数据类型,二进制最左端的数字为符号位,0代表正,1代表负,这里先介绍几个概念逻辑左移=算术左移:高位溢出,低位补0逻辑右移:低位溢出,高位补0算术右移:低位溢出,高位用符号位的值补比如一个有符号位的8位二进制数10101010,[]是添加的数字逻辑左移一位:0101010[0]逻辑左移两位:101010[00]算术左移一位:0101010[0]算术左移两位:101010[00]逻辑右移一位:[0]1010101逻辑右移两位:[00]101010算术右移一位
2021-04-07 15:49:03 122
原创 解决线程安全的方式
方式一:同步代码块synchronized(同监视器){//需要被同步的代码}说明:1.操作共享数据的代码,即为需要被同步的代码。2.共享数据:多个线程共同操作的数据。3.同步监视器:俗称,锁。任何一个类的对象都可以充当这个锁4.在实现类Runnable中创建多线程的方式中可以考虑用this关键字来充当锁(同步监视器),实现线程安全问题(保证使用同一把锁)5.在Thread继承类实现多线程的方式中,慎用this关键字充当锁,可以考虑使用当前类充当同步监视器(保证使用同一把锁)例如:Run
2021-03-29 21:57:45 115 2
原创 程序、进程、线程的理解
程序:为了实现某个任务,用某种程序语言编写的一段指令称作为程序、程序是静态的代码块进程:程序的执行过程叫做进程,进程是动态的,从产生、运行、消亡是一个生命周期线程:进程可以细化为线程,线程是程序执行内部的一条执行路径,每个线程有自己独立的栈和程序计数器、多个线程共享进程的方法区和堆。内存结构...
2021-03-29 17:13:05 139
原创 线程的优先级
线程的优先级1.MAX_PRIORITY:102.MIN_PRIORITY:13.NORM_PRIORITY:5------>默认优先级如何获线程的优先级getPriority():获取当前线程的优先级setPriority(int p):设置当前线程的优先级高优先级的线程要抢占低优先级线程的cpu执行权,一般情况,优先级越高,被执行的概率就越高,并不意味着高优先级的执行完之后执行低优先级的...
2021-03-29 15:00:39 125
原创 多线程的创建及其Thread的主要方法
方式一:继承于Thread类1.创建一个继承于Thread类的子类2.重写Thread类的run方法,将此线程执行的操作声明在run()方法中3.创建Thread类的子类的对象4.通过此对象调用start()方法例如:package com.itweiting.exer;/** * @Description 多线程的创建练习 * @User Administrator * @Time 2021/3/29__9:32 * @ */class MyThread extends Th
2021-03-29 11:05:28 128 2
原创 内部类
1.如何实例化成员内部类的对象1.1静态成员内部类外部类.内部类 x=new 外部类.内部类对象1.2非静态成员内部类外部类 p=new 外部类对象外部类.内部类 s=p.new 内部类对象;2.如何在成员内部类中区分调用外部内的结构3.开发中局部内部类的使用返回一个实现了接口的对象,创建一个实现接口的类:局部内部类,然后将实现类的对象返回4.内部类的分类:成员内部类(静态内部类,非静态内部类)局部内部类(方法中,构造器内,代码块内)...
2021-03-28 17:17:29 59
原创 接口
interface1.接口使用interface来定义2.java中,接口和类是并列的结构3.接口的定义,定义接口中的成员3.1 jdk7及以前:只能定义全局常量和抽象方法全局常量:public static final 的,但书写时可以省略:例如:public static final int x=1;相当于 int x=1;抽象方法:public abstract的3.2jdk8,除了定义全局常量和抽象方法以外,还可以定义静态方法、默认方法4.接口中不能定义构造器!意外这不能实例化。
2021-03-26 21:00:48 97
原创 抽象类和抽象方法
一:abstract关键字1.抽象的2.可以修饰的对象:类和方法3.一旦类实例化,则不可实例化(即造对象)4.抽象类中一定有构造器,便于子类实例化时调用5.开发中都会提供抽象类的子类,让子类对象实例化6.抽象方法和抽象类的定义:public abstract Circle{}public abstract void show();7.抽象方法只有方法的声明,没有方法体8.包含抽象方法的类一定是抽象类9.若子类没有重写了父类中的所有抽象方法(包括间接父类的方法),则子类需要被定义为
2021-03-26 19:21:37 247
原创 单例设计模式
单例模式方式一:饿汉式package com.itweiting.staticdemo;/** * 单例模式 * 饿汉式 * @author Administrator */public class SingletonTest1 { public static void main(String[] args) { Bank bank=Bank.getInstance(); Bank bank1=Bank.getInstance(); System.out.println(ban
2021-03-25 20:27:03 86
原创 static关键字
1.static 静态的2.static用来修饰:属性、方法、代码块、内部类3.用static修饰的变量叫静态变量属性:是否使用static修饰,分为静态属性和非静态属性4.实例变量:创建了类的多个对象,每个对象都有一套非静态的属性静态变量:创建了类的多个对象,多个对象共享一个静态变量5.static 修饰属性的说明(1.)静态变量随着类的加载而加载(2.)静态变量的加载要早于对象的创建(3.)static变量存在与方法区的静态域中(4.)静态属性和方法随着类的加载而加载,故可以用对象调
2021-03-25 17:37:42 90
原创 包装类
1.为什么要用包装类原因: 为了使基本数据类型具有类的特征。2.基本数据类型对应的包装类特殊的:Integer, Character一般为:Bouble,Float、Long Byte 、Short、Boolean3.什么是自动装箱,什么时自动拆箱(jdk5.0的新特性)自动装箱:将基本数据类型转化为包装类例如:int num=10;Integer in1=num;num为基本数据类型,in1为类类型自动拆箱:将包装类转化为基本数据类型例如:int num=in1;num为基本数
2021-03-25 15:41:11 78
原创 值传递练习题
package com.itweiting.Object;public class ValueTransfer3 { public static void main(String[] args) { ValueTransfer3 test=new ValueTransfer3(); test.first(); } //定义方法 public void first() { int i=5; Value v=new Value(); v.i=25; secon
2021-03-18 20:05:00 190 1
原创 方法参数的值传递机制
package com.itweiting.Object;/** * 方法形参的传递机制:值传递 * 形参:方法定义时小括号里的值为形参 * 实参:方法调用过程中实际传递给形参的值 * 值传递机制的描述: * 参数时基本类型,此时实参给形参的是,实参真是存储的数据值 * * @author Administrator * */public class ValueTransfer1 { public static void main(String[] args) { int m=
2021-03-18 17:29:41 77
原创 二维数组与稀疏数组的相互转化
package com.weiting.sparsearray;public class SparseArray { public static void main(String[] args) { // 实现一个棋盘即二维数组 int cheesearray[][]=new int[11][11]; //0表示未落子,1表示黑子,2表示篮子 cheesearray[1][2]=1; cheesearray[2][3]=2; cheesearray[4][5]=1; //
2021-03-11 17:04:01 73
原创 演示文件输入输出流的基本用法
package IODemo;import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;public class FileInputStream { private static final String F
2021-03-09 21:20:13 118
原创 异常
一:异常类的结构层次Java把所有非正常情况分为Error(错误) 和 Exception(异常)。Error:Error类层次结构描述了Java运行时系统的内部错误和资源耗尽错误,应用程序不应该抛出此类型的对象。这种情况一般很少出现。VirtualMachineError(虚拟机错误)ThreadDeath(线程锁死)Exception:Exception类层次结构又分为两个分支 RuntimeException(运行时异常)和其他异常(代表:IOException )。派生于Runti
2021-03-09 09:30:44 90
原创 Cadendar用法
package Calendar;import java.util.Calendar;//日历类的常用方法public class CalendarDemo { public static void main(String[] args) { Calendar cal =Calendar.getInstance(); System.out.println(cal.getClass().getSuperclass()); int year=cal.get(Calendar.YEAR); i
2021-02-25 08:45:48 117
原创 多态的理解
多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作。程序实例:有个演员类,子类为歌手类和舞蹈类,导演类进行action方法操作子类。演员类package SpringFestival;/** * 演员类 * @author Administrator * */public abstract class Actor {//当一个类为抽象类时不可以实例化 即不可以 Actor 成龙=new Actor();abstract为抽象的意思
2021-02-11 09:07:22 199
原创 java变量的引用传递
package bianliang;public class Hero { public static void main(String[] args) { // TODO Auto-generated method stub Demo demo=new Demo(); Swap(demo); System.out.println(demo.attr1+"\t"+demo.attr2); } static class Demo{ int attr
2021-01-15 20:46:45 159
原创 中文乱码过滤器
<filter> <filter-name>characterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name>
2020-12-09 11:27:45 211
原创 linux批量创建用户及密码
第一步:创建student组群第二步:用vim编辑器创建student.txt的用户信息文件第三步:用vim编辑器创建名为“password.txt”的文件(vi password.txt)第四步:超级用户利用newusers命令批量创建用户账户(newusers < student.txt)批量创建成功第五步:利用pwunconv命令暂时取消shadow加密第六步:利用chpasswd命令为用户设置口令密码设置成功:第七步:l利用pwconv命令恢复shadow加密
2020-12-08 10:59:37 5822
转载 Spring的注解及其作用
https://blog.csdn.net/m0_48038376/article/details/108343497
2020-12-04 11:54:21 131
原创 Spring Aop的开发步骤
1.编写核心业务代码(目标类和目标方法)package com.itweiting.aop;public class Target implements TargetInterface{ public void save(){ System.out.println("这是一个目标方法......"); }}这是一个目标类接口package com.itweiting.aop;public interface TargetInterface {public
2020-11-29 09:54:57 347
原创 基于cglib的动态代理
1.创建增强器Enhancer enhancer = new Enhancer();2.设置父类enhancer.setSuperclass(Target.class);3.设置回调enhancer.setCalllback(new MethodInterceptor(){ public Object intercept(Object proxy,Method method,Object[] args,MethodProxy methodProxy) throws Throwable{ /
2020-11-28 17:11:12 77
原创 JDK动态代理
1.什么JDK是动态代理使用JDK的反射机制,创建对象的一种能力,即创建代理类的对象。动态:在程序运行过程中,调用jdk的方法才能创建代理类的对象。2.动态代理的类型JDK动态代理(没接口用不了)反射包:java。lang.reflect包中的三个方法:InvocationHandle , Method,Proxycglib(code Generation Libreay)动态代理一个第三方提供的工具库,创建代理对象。cglib的原理是继承,cglib通过继承目标类,创建它的子类,在子类中重写
2020-11-28 16:22:04 371
原创 实现静态代理的方式
实现 步骤:1.创建接口,定义方法,表示目标和代理要做的事情。package com.itweiting.service;public interface ThreeSquirrelSell { //定义方法 参数amount表示一次购买的数量 //返回值表示优盘的价格 float sell(int amount); //可以定义多个方法}2.创建目标类,实现接口package com.itweiting.factory;import com.
2020-11-28 10:31:35 410
原创 Spring配置数据源之抽取jdbc的配置文件
第一步:引入context的命名空间和约束路径//命名空间 xmlns:context="http://www.springframework.org/schema/context" //约束路径 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd第二部:写properties配置文件jdbc.driver=com.mys
2020-11-24 15:59:41 255
原创 import javax.activation.DataSource与import javax.sql.Datasource的区别
import javax.activation.DataSource:中定义的接口都跟I/O有关,其实现类 也打多与 网络、文件I/O相关,可以判断出,import javax.activation.DataSource是对资源文件的抽象,类似Reader、Writer等。import javax.sql.Datasourcede:是JDBC2.0标准中的规范,其目的是针对1.0标准中通过DriverManager.getConnection()方式获取到的数据库链接,消耗大、不可复用等缺点而推出的新
2020-11-24 15:43:19 1506 1
原创 Spring 相关API
一:applicationContext:接口类型,代表应用上下文,可以通过实例获取Spring容器中Bean的对象applicationContext的实现类:1.>ClassPathXmlApplicationContext从类的根路径下加载配置文件2.>FileSystemXMLApplicationContext从磁盘加载配置文件3.>AnnotationConfigApplicationContext当使用注解配置容器对象时,需要使用此类对象来创建Spring容器,
2020-11-21 17:13:20 120
原创 Spring Bean依赖注入的数据类型
1.普通数据类型(set方法注入)普通数据类型 的注入方式implement实现name和age的getset方法 String name; int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return
2020-11-21 16:18:54 290
原创 Spring Bean 的两种注入方式
1.set方法注入:.xml配置文件: <bean id="userDao" class="com.itlaobin.dao.impl.UserDaoImpl"></bean> <bean id="userService" class="com.itlaobin.service.impl.UserserviceImpl"> <property name="userDao" ref="userDao"></property>
2020-11-21 11:13:39 487
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人