自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Lock锁的等待唤醒交替打印

【代码】Lock锁的等待唤醒交替打印。

2023-02-19 23:49:03 97

原创 Cookie和Session关系

1.大家都清楚Http协议是无状态的,服务器并不知到两次请求是从同一客户端还是不同客户端发送而来的,这里就要用到会话跟踪技术Cookie和Session。2.Cookie数据存储在客户端因为C开头可以当作Client,Session数据存储在服务端,也类似Service这样比较好区分。3.Session依赖于Cookie实现,因为每当客户端第一次发送请求时,服务器的响应报文中会Set一个Cookie为JSESSIONID它的值为一个随机序列,服务器里会创建一个Map...

2022-06-03 10:17:48 182

原创 JavaBean的生命周期

调用无参构造器创建对象 set方法为bean属性设置值 把bean实例传递给后置处理器的方法执行postProcessBeforeInitialization 调用bean的初始化方法 把bean实例传递给后置处理器的方法postProcessAfterInitialization 获取bean的对象实例 容器关闭时,调用bean的摧毁方法 (ClassPathXmlApplicationContext 的实例调close 若使用多态需要强转)..

2022-05-23 21:40:00 381

原创 Spring Aop面向切面编程前置通知举例

1、Spring框架一般都是基于 AspectJ 实现 AOP 操作,AspectJ 不是 Spring 组成部分,独立 AOP 框架,一般把 AspectJ 和 Spirng 框架一起使 用,进行 AOP 操作2.、基于 AspectJ 实现 AOP 操作 (1)基于 xml 配置文件实现(2)基于注解方式实现(使用)3、引入相关依赖http://链接:https://pan.baidu.com/s/1z35cpopnjISXSd29TAlXUQ?pwd=8080 提取码:80804.切.

2022-05-23 21:16:40 274

原创 java TCP简易网络编程

1.IDEA中模块中有一张图片,建立客户端和服务端,客户端建立读写流读取照片的信息,然后通过Socket建立输出流,写出读写流读取的字节。2.服务端建立ServerSoket指定端口名,让客户端连接,服务端建立一个输出流,服务端调用accept建立输入流,输入流读写客户端发送过来的信息,然后输出流写出输入流读写的信息。3.确定服务端收到图片,给客户端一个反馈,与以上类似操作。4.要注意有反馈的情况下客户端输出图片会出现阻塞,需要在客户端读写图片下手动shutdownOutput(),才能结束。.

2022-04-25 11:29:08 249

原创 HashMap底层实现原理

jdk1.7之前Hashmap使用数组加链表实现。jdk1.8之后引入了红黑树。红黑树,左子树比结点小,右子树比结点大,提高了查询的效率。Hashmap的put操作(JDK1.8)1.计算添加对象的hashCode值(类中应该重写hashCode值和equals方法),若hashCode经过一定的算法计算与原数组已经有了的对象冲突,需要比较hashCode值,若hashCode值不同,原有对象以链表形式指向后添加的对象,添加成功。2.若hashCode值相同,再调用equals方法,比较是.

2022-04-19 19:19:41 81

原创 Java插入排序

1、建立一个哨兵(即临时变量temp),把要插入的数据赋给它。2、插入数据从后面开始比较,如果大于前面的就记录下标,并将数据后移,直到插入数据碰到比它小的。3、将临时变量赋值给当前记录下标。4、for循环即完成全部数据插入。import java.util.Arrays;//直接排序算法public class insert { public static void main(String[] args) { int []arr ={1231,321,321.

2022-04-12 20:32:28 409

原创 Java查找最长字符匹配子串

1.比较两个字符串,短的那一个先判断是否包含在长的字符串中2.如果不在,短的字符串子串长度-1,从前往后移判断是否包含,不包含继续此操作public class getMaxStringTest { public static void main(String[] args) { String s1 ="helloworld"; String s2 ="helloCHinahh"; String s = MaxString(s1..

2022-04-11 12:35:30 1278

原创 JAVA String指定字符串逆序,查找字符串子串个数

1.指定字符串逆序三种方式Ⅰ.转换为字符数组,指定开始位置和结束位置反转Ⅱ.String字符串拼接,分为三部分,第一部分和第三部分取子串用substring保持不变,中间部分反转Ⅲ.使用StringBuilder appen,方法添加字符串跟Ⅱ类似public class Stringreverse { public static void main(String[] args) { String s1 ="aaacccbbb"; String

2022-04-11 10:44:14 1257

原创 JAVA String常用方法

* int length():返回字符串的长度: return value.length * char charAt(int index): 返回某索引处的字符return value[index] * boolean isEmpty():判断是否是空字符串:return value.length == 0 @Test public void test1() { String s1 = " Helloworld"; System.out.prin..

2022-04-10 18:31:23 80 1

原创 JAVA四种线程创立

四种线程方法1.继承Treadle类2.实现Runable方法3.实现Callable方法4.线程池其中实现Callable的优点:1.有返回值。2.能抛出异常。3.可支持泛型。线程池优点儿:1.提高响应速度,线程池的线程建立后不会自动死亡,需手动shutdown才会死亡,线程一调用马上线程池的线程就可以响应。2.降低资源消耗,可以重复利用线程池之前调用过的线程,不需要每次都创建。3.便于线程管理,但是需要手动关闭线程池。public class PoolTest

2022-04-09 20:27:30 363 1

原创 JAVA简易线程通信

建立两个线程分别为生产销售,建立一个店员对象两个线程去共享店员productcount数据,以店员对象为锁,优化线程安全问题进行通信public class Product { public static void main(String[] args) { Clerk xxs = new Clerk(); Producer p1 = new Producer(xxs); Customer c1 = new Customer(xxs);

2022-04-08 10:31:32 409 1

原创 java死锁演示

两个线程分别拿到各自需要的锁不放增加Thread.sleep增加死锁概率,线程一运行拿s1锁,线程二运行拿s2锁,给上sleep阻塞,当两者继续运行时需要对方线程的锁,都拿着不放,造成了死锁。public class deadlock { public static void main(String[] args) { StringBuffer s1 = new StringBuffer(); StringBuffer s2 = new StringBuff

2022-04-07 17:25:58 116

原创 两种单例设计模式

饿汉式 和 懒汉式 饿汉式: 坏处:对象加载时间过长。 好处:饿汉式是线程安全的。 懒汉式: 好处:延迟对象的创建。 坏处:线程不安全。(可改善)。饿汉式单例设计模式public class SingletonTest1 { public static void main(String[] args) { Bank bank1 = Bank.getInstance(); ...

2022-04-07 16:00:51 440

空空如也

空空如也

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

TA关注的人

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