自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Java设计模式-工厂模式

Java设计模式-工厂模式

2022-09-08 14:19:03 253

原创 Java设计模式-代理模式

Java 代理分静态代理,动态代理,静态代理在运行前就已经生成代理类字节码,而动态代理是在运行期生成的代理类字节码假设一个场景,手机制造商(委托类)找一个店面(代理类)销售手机静态代理实现定义手机接口public interface Phone { void size(); void color();}手机制造商(委托类)public class Producer implements Phone{ @Override public vo

2022-05-13 13:24:03 218

原创 Java 泛型的使用

当代码逻辑不关注具体的数据类型时,只注重代码的逻辑的时候,可以考虑使用泛型。泛型可以很好的对类型参数化处理。泛型的使用泛型类public class java_day01 <T> { }泛型接口public interface java_day01 <T> { public T getData(T t);}// 实现类,指定具体参数类型class java_day01Impl implements java_day01<St

2022-05-11 21:21:22 298

原创 synchronized偏向锁、轻量锁、重量锁加锁原理

synchronized对应c++执行逻辑源码 case got_monitors: { // continue locking now that we have a monitor to use // we expect to find newly allocated monitor at the "top" of the monitor stack. oop lockee = STACK_OBJECT(-1); VERIFY_OOP(loc

2021-04-27 17:32:54 287

原创 java 公平锁与非公平锁区别

ReentrantLock默认为非公平锁,非公平锁比公平锁效率高非公平锁抢锁源码公平锁抢锁源码区别一:源码对比,发现非公平锁先cas一次自旋抢锁,自旋抢锁失败,会执行acquire(1)acquire方法源码非公平锁tryAcquire主要执行方法公平锁tryAcquire主要执行方法区别二:源码对比,发现公平锁考虑AQS锁队列中等待的线程,无队列才进行cas自旋操作...

2021-04-01 07:56:50 510

原创 intelli与github连接报错

实现分享代码,通过github上传提交自己的代码输入账户和密码出现报错,提示只能通过token的方式登录登录自己的github账户,找到setting设置通过用token登录即可。

2021-03-20 10:07:56 135

原创 简单的ssm项目搭建

mysql数据库中的数据,想通过web的页面展示,有多种方式,可以通过python的django,java的ssm,现在接触java多些,这章就利用ssm框架搭建一个web首先准备一个mysql数据库接着准备ssm框架,包含四个domain、dao、service、web 模块进行搭建domain准备javabean接收数据数据,需要保证mysql字段与javabean字段名一样package com.hacker.ssm;import java.util.Date;.

2021-03-19 21:51:51 677

原创 java 项目采坑Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired....

java的ssm项目采坑,ssm项目设计了多个maven模块包含domain、dao、service、web等四个模块maven项目启动的时候就报错Error creating bean with name 'StudentInfoController': Unsatisfied dependency expressed through field 'userService'; nested exception is org.springframework.beans.factory.NoSuch

2021-03-18 22:36:34 1984 3

原创 java join源码分析

子线程.join(),主线程会等子线程执行完再执行,上代码package qqqcloud.cn.Threads.JoinFunction;import java.util.ArrayList;import java.util.List;public class hacker_02_mutil_join { public static void main(String[] args) throws InterruptedException { List<Thr

2021-02-08 21:41:44 140

原创 leetcode_day03_字母异位词分组

https://leetcode-cn.com/problems/group-anagrams/给定一个字符串数组,将字母异位词组合在一起。字母异位词指字母相同,但排列不同的字符串。示例:输入: ["eat", "tea", "tan", "ate", "nat", "bat"]输出:[ ["ate","eat","tea"], ["nat","tan"], ["bat"]]说明:所有输入均为小写字母。不考虑答案输出的顺序。map的values()为list,...

2021-02-05 13:09:20 112 1

原创 leetcode_day03_有效的字母异为词(map)

https://leetcode-cn.com/problems/valid-anagram/给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。示例1:输入: s = "anagram", t = "nagaram"输出: true示例 2:输入: s = "rat", t = "car"输出: false方法class Solution { public boolean isAnagram(String s, String t)..

2021-02-04 10:01:54 116

原创 leetcode_day03柱状图中最大的矩形(单调栈思想)

https://leetcode-cn.com/problems/largest-rectangle-in-histogram/给定 n 个非负整数,用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。以上是柱状图的示例,其中每个柱子的宽度为 1,给定的高度为[2,1,5,6,2,3]。图中阴影部分为所能勾勒出的最大矩形面积,其面积为10个单位。示例:输入: [2,1,5,6,2,3]输出: 10...

2021-01-31 11:59:08 112

原创 leetcode_day03有效括号(栈最近相似思想)

https://leetcode-cn.com/problems/valid-parentheses/给定一个只包括 '(',')','{','}','[',']'的字符串 s ,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。示例 1:输入:s = "()"输出:true示例2:输入:s = "()[]{}"输出:true示例3:输入:s = "(]"输出:false示例4:输入:s = "(...

2021-01-26 00:27:56 87

原创 leetcode_day02反转链表(迭代思想)

https://leetcode-cn.com/problems/reverse-linked-list/反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL方法class Solution { public ListNode reverseList(ListNode head) { ListNode prev=null; //.

2021-01-23 17:01:40 104

原创 leetcode_day02旋转数组(反转思想)

https://leetcode-cn.com/problems/rotate-array/给定一个数组,将数组中的元素向右移动k个位置,其中k是非负数。进阶:尽可能想出更多的解决方案,至少有三种不同的方法可以解决这个问题。你可以使用空间复杂度为O(1) 的原地算法解决这个问题吗?示例 1:输入: nums = [1,2,3,4,5,6,7], k = 3输出: [5,6,7,1,2,3,4]解释:向右旋转 1 步: [7,1,2,3,4,5,6]向...

2021-01-23 15:54:59 113

原创 leetcode_day01_三数之和(双指针思想)

https://leetcode-cn.com/problems/3sum/方法classSolution{publicList<List<Integer>>threeSum(int[]nums){List<List<Integer>>list=newArrayList<>();//if((nums.length==3)&&(nums[0]+nums[1...

2021-01-21 13:34:59 93

原创 leetcode_day01_爬楼梯(枚举思想)

https://leetcode-cn.com/problems/climbing-stairs/假设你正在爬楼梯。需要 n阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶 + ...

2021-01-17 20:37:06 160

原创 leetcode_day01_盛最多的水(双指针思想)

https://leetcode-cn.com/problems/container-with-most-water/给你 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点(i,ai) 。在坐标内画 n 条垂直线,垂直线 i的两个端点分别为(i,ai) 和 (i, 0) 。找出其中的两条线,使得它们与x轴共同构成的容器可以容纳最多的水。说明:你不能倾斜容器。示例 1:输入:[1,8,6,2,5,4,8,3,7]输出:49解释:图中垂直线代表输入数组 ...

2021-01-17 20:09:37 149

原创 leetcode_day01_移动零(双指针思想)

https://leetcode-cn.com/problems/move-zeroes/给定一个数组nums,编写一个函数将所有0移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入:[0,1,0,3,12]输出:[1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。 尽量减少操作次数。最简单的做法就是,遍历数组,非零的第一种做法第二种做法0位中间值...

2021-01-17 19:26:19 97

原创 java回调函数

java调方法的方式有三种一种同步方法调用第二种异步方法调用第三种回调

2020-12-30 13:49:09 198

原创 java -jar 运行springboot项目存在的坑

第一种情况 找不到main入口解决方法pom文件添加maven插件 <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId.

2020-12-28 12:56:10 187

原创 java多线程:获取线程返回的值

实际业务中,主线程调用子线程,主线程需要等待子线程执行完后,获取执行完后的结果多线程参数获取方法一:join多线程参数获取方法二:CountDownLatch多线程参数获取方式三:FutureTask+Callable接口main 方法结果:...

2020-12-24 18:29:02 643 1

原创 java多线程:向线程传递参数的方法

同步开发下,我们调用一个函数的时候,通过函数的入参方式进行传入,函数的rerurn返回获取的结果;然而多线程的异步开发下,由于线程的运行和结束是不可预料的,导致数据的传递和返回有所不同。多线程传递参数方法一:利用构造方法多线程传递参数方法二:利用实例方法多线程传递参数方法三:利用回调方法 ===> 另一篇:java回调方法介绍...

2020-12-24 12:54:13 2046

原创 java基本类型与引用类型

基本类型在方法之间是值的传递,引用类型在方法之间是地址的传递案例一:结果:案例二:结果:你可能会疑惑,为什么第二次的结果不是null?首先需要明确的是,对象都是放在堆里面的,main方法与changeUser方法的user都是对象的一个名称,都是保存着new User()对象的引用地址;changeUser方法的user名称为null,表示断开new User()对象的连接。...

2020-12-23 14:40:43 101

原创 CountDownLatch并发案例

CountDownLatch这个类,这个工具可以让我们的线程在一开始都处于“同一起跑线”代码:public class hacker_01_CountDownLatchDemo { final List<Integer> datas= new ArrayList<>(); final ExecutorService TASK_POOL= Executors.newFixedThreadPool(20); final CountDownLatch c

2020-12-21 18:32:15 114

原创 java类加载

java类加载进方法区七个阶段加载、验证、准备、解析、初始化、使用、卸载JVM类加载器种类启动类加载器、扩展类加载器、应用程序类加载器java类加载双亲委派机制应用程序类加载器的父为扩展类加载器 ,扩展类加载器的父为启动类加载器;采用向上询问父是否加载过,向下尝试加载的方式,实现了JRE自定义类只能加载一份不能被修改,解决项目安全问题SPIJDBC就是采用的SPI的机制破坏双亲委派机制,JRE内部仅定义了JDBC接口,实现JDBC接口是通过引入mysql jar...

2020-12-03 16:37:35 164

原创 java折半查找算法实现

折半查找算法:public class hacker_01_zheban { public static void main(String[] args) { int[] arr= {12,10,7,6,2,100}; kuaipai(arr,0,arr.length-1); // 参考我的java快速排序算法 for (int i : arr) { System.out.println(i);

2020-11-05 09:12:13 555

原创 java快速排序实现

快排代码:public class hacker_02_kuaipai { public static void main(String[] args) { int[] arr= {12,10,7,6,2,100}; kuaipai(arr,0,arr.length-1); for (int i : arr) { System.out.println(i); } }// 快速排序

2020-11-05 09:09:43 157

原创 java冒泡排序算法实现

冒泡代码:public class hacker_01_maopao { public static void main(String[] args) { int[] arr= {12,10,7,6,2,100}; maopao(arr); for (int i : arr) { System.out.println(i); } }// 冒泡排序 public static void

2020-11-05 09:02:53 109

原创 java 反射后的成员变量对象、构造方法对象、成员方法对象

知识背景:java文件加载阶段反射:将类的各个组成部分封装为其他对象,这就是反射机制* 好处:1.可以在程序运行过程中,操作这些对象。2.可以解耦,提高程序的可扩展性。* 获取Class对象的方式:1.Class.forName("全类名"):将字节码文件加载进内存,返回Class对象* 多用于配置文件,将类名定义在配置文件中。读取文件,加载类2...

2020-10-26 20:59:04 205

原创 java Session缓存

Session原理1.原理:服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中。HttpSession2.快速入门:1.获取HttpSession对象:HttpSession session = request.getSession();2.使用HttpSession对象方法:Object getAttribute(String name)...

2020-10-20 17:28:32 1156

原创 java Cookie缓存

Cookie原理图1.设置及获取Cookie :1.创建Cookie对象,绑定数据* new Cookie(String name, String value)2.发送Cookie对象* response.addCookie(Cookie cookie)3.获取Cookie,拿到数据* Cookie[]r...

2020-10-20 17:27:06 342

原创 java volatile与Synchronized知识点了解

java多线程下,如果对一个共享变量进行并发操作的话会引发线程安全问题前提了解volatile关键字: 并发环境下,每个线程都会有自己的工作内存,每个线程只能访问各自的工作内存,而共享变量会被加载到每个线程的工作内存中,所以这里面就有一个问题,内存中的数据什么时候被加载到线程的工作内存中,而线程工作内存中的内容什么时候会回写到变量内存中去。这两个步骤处理不当就会造成数据的不一致,比如某个共享变量被线程A修改了,但是没有回写到内存中去,而线程B在加载了内存中的数据之后读取到的共享变量是脏...

2020-10-15 17:50:16 176

原创 java自定义注解案例详解

注解有三种分类:注解本质上是一个继承Annotation的接口第一种为jdk预定义注解* @Override:检测被该注解标注的方法是否是继承自父类(接口)的* @Deprecated:该注解标注的内容,表示已过时* @SuppressWarnings:压制警告* 一般传递参数all@SuppressWarnings("all")第二种为元注解* @Target:描述注解能...

2020-10-15 12:08:52 457 1

原创 mysql事务隔离级别案例讲解

开启A、B两个客户端,将A客户端的隔离级别修改为读未提交set session transaction isolation level read uncommitted;A客户端查看当前事务隔离级别select @@tx_isolation;A客户端B客户端开启事务,A客户端查询数据,B客户端start transaction;update account set money=5000 where name="aaa";B客户端执行修改操作,不提交,再

2020-10-13 11:07:19 1841 4

原创 高并发下,spring框架中dbutils.QueryRunner可以单例存储

1:了解单例与多例的区别2:了解子类对象中对父类成员变量的存储方式 抽象父类父类是不可能new3:了解QueryRunner类3:从spring容器中获取对象4:countDownLatch高并发验证百度网盘资源获取连接:...

2020-10-11 12:16:50 393

原创 java 多线程创建及应用

java 多线程创建的三种方式1:estends Thread 类2:implements Runnable 接口3:new Thread(Runnable接口实现类)最常用第二种方式,类可以实现多个接口,类只能继承一个父类实现Runnable接口的实现对象,当被多次start会创建多个多个线程执行,共享成员变量,造成线程不安全问题。解决方式:一种同步代码块,一种同步方法,一种锁对象...

2020-09-30 11:28:57 213

原创 ThreadLocal的详解

前提条件知道强、软、弱、虚引用的区别及作用;强引用:软引用:应用场景在缓存弱引用:应用场景在事务虚引用:应用场景在直接内存管理ThreadLocal是线程隔离的,每个线程间互不干扰;import java.util.concurrent.TimeUnit;public class hacker_01_ThreadLocalDemo { public static ThreadLocal<User> th=new ThreadLocal&l..

2020-09-29 13:16:12 209

原创 java 左移<< 与右移 >>

针对正整数<<左移按二进制形式把所有的数字向左移动对应的位数,低位的空位补零。>>右移按二进制形式把所有的数字向右移动对应位移位数,低位移出(舍弃),最高位则移入原来高位的值。举例:如:a = 00110111,则a>>2=00001101,b=11010011,则b>>2 = 11110100 public static void main(String[] args) { int a=53; .

2020-09-11 10:58:35 445

原创 js与jquery入口函数

//执行比jq的入口函数执行晚;window.onload = function () { console.log("我是js的入口函数,最后执行内部代码!"); }; //jq在页面标签加载完成就执行。 $(document).ready(function () { console.log("我不用等待图片等资源加载。。。"); }); //js最后开始执行。 $(function () { console.log("我需要等待图片等资源加...

2020-09-09 17:38:17 211

空空如也

空空如也

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

TA关注的人

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