自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 groupingBy生成Map<Long,List<XXX>>写法

111

2022-09-06 23:43:52 291 1

原创 Java与MySQL中的锁以及保证线程安全的方式

无论是存在硬盘里的数据还是存在内存中的数据,只要不是像Redis那样只支持单线程访问,就都存在线程安全问题。通常,在代码中,面对线程安全问题的态度,分为【悲观】和【乐观】。本文从这两个角度对Java与MySQL中的锁及保证线程安全的方式进行一个对比,尽量提炼出其中的相似之处。文中的某些地方会把Java中的【线程】与MySQL中的【事务】统称为【线程】。【悲观】认为,在当前环境下,极有可能发生线程安全问题,因此,需要把多线程共享的数据上一个重锁,在某个线程拥有这个数据的锁期间,其他线程无法对这个数据进行访问与

2022-06-16 00:02:14 1491

原创 SpringBoot+MyBatis菜单解决方案

1.建一个菜单表(menu),数据中除了常规字段之外,还有一个字段是parent,表示这个菜单的父菜单。建表语句如下:CREATE TABLE `menu` ( `id` int(11) NOT NULL AUTO_INCREMENT, `url` varchar(64) DEFAULT NULL, `path` varchar(64) DEFAULT NULL, `component` varchar(64) DEFAULT NULL, `name` varchar(64) DE

2022-03-02 13:09:56 464

原创 Vue-SpringBoot分页查询以及条件查询解决方案

前端写好页数和每页显示多少数据,如果搜索条件不为空的话,加上搜索条件。initEvaluations(){ let url = '/evaluation/?page=' + this.page + '&size=' + this.size; if (this.employeeName) { url += '&employeeName=' + this.employeeName; } this.getRequest(url).then(resp=>{

2022-03-01 20:18:44 1315

原创 解决方案:Java对DateTime的处理

在做SpringBoot项目的过程中,发现Java中没有DateTime这种数据类型,于是选用了这种方法处理:public class Evaluation { private Date evaluationTime; public String getEvaluationTime() { return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(this.evaluationTime); }

2022-02-19 21:16:38 1298

原创 Java校招面试,项目怎么聊

大家好,我是一个双非院校计算机专业的硕士研究生。在秋招期间,我获得了阿里、字节、携程、科大讯飞、用友的Java开发offer。在面试技巧方面,也是经历了从什么都不懂,面试官问啥我说啥到逐渐熟练,摸出门道的过程。这篇文章总结了我个人在面试过程中和面试官聊项目经验的体会。1.我的项目经历我在研究生期间,跟着导师给某糖厂做了管理项目,技术栈为asp.net。这个项目体量挺大的,里面包含了物流、仓储、招标、员工管理等业务模块。但是asp.net这个技术实在太老了,当我在面试过程中对面试官说出asp.net这个词

2022-01-23 15:02:55 1792

原创 Java单例模式的几种实现

就是说,有时候某个类需要频繁地创建对象、销毁对象,或者运行环境中只允许某个类只有一个对象存在。这时候就需要用到单例模式。单例模式有两个要点:1)构造器私有2)唯一的一个实例是静态变量几种实现:1.饿汉式1.1直接newpublic class Singleton { private Singleton(){} public static Singleton instance = new Singleton();}public class Test { public

2021-05-14 17:06:55 83

原创 static赋值、static块、实例变量赋值、实例代码块、构造方法执行顺序

预备知识:类加载的几个主要时机:1)new的时候,2)调用静态东西的时候,3)某类的main开始跑的时候,4)反射调用某类的时候实例加载的时机:new的时候上代码:public class Father { public Father(){ System.out.println("父类构方"); } private static int i = method(); static { System.out.println("父类静态块")

2021-05-14 10:52:55 169

原创 由++i和i++理解操作数栈和局部变量表

先上代码int a = 1;a = a++;System.out.println("a是"+a);//以为是2,但是是1int b = ++a + a++ + ++a;System.out.println("a是"+a);System.out.println("b是"+b);结果是:a是1c是1a是5b是11原因:a = a++;这一句,执行步骤为:1)操作数压栈,2)更新局部变量表,3)赋值在这个例子中,对应为1)把1这个数压到操作数栈,2)把a的值改为2,3)把栈里的1赋

2021-05-14 09:42:45 143

原创 二分法的“逼近”与“查找”

首先看leetcode33.搜索旋转排序数组。它是要在某数组中找到“具体的某个值”,那么模板为:while(left<=right){ int mid = left+(right-left)/2; if(nums[mid]==target) return mid; if(nums[mid]<target) left = mid+1; else right = mid-1;}这里之所以要用left<=right,是因为到最后left+1==right的

2021-05-12 09:26:27 241

原创 踩坑体会:程序计数器线程私有是有道理的

复习Java JUC的时候写一个消费者生产者模式,结果不对。生产者老是多生产。研究了原因之后发现我的代码是这样的:synchronized (this){ if(chickens.size()>=size){ System.out.println("鸡满~~~~~~~~~"); this.wait(); } chickens.

2021-05-03 16:15:54 99

原创 spring操作文档

Spring操作文档1.demo搭建1)创建maven项目,添加依赖2)编写实体类3)在resources里面写配置文件,叫啥无所谓4)冲2.依赖注入1)建地址类,在Student里面加入地址成员变量2)在ioc容器里面配一波3)开冲3.ioc容器仿写1)照葫芦画瓢,先写个接口2)写实体类,原理是先用无参构造方法,用反射的方式new一个对象,再用set方法给变量一一赋值,最后把对象装到HashMap里面4.给bean注入集合1)实体类里面搞个集合2)配io

2021-04-25 15:50:58 98

原创 Mybatis操作文档

Mybatis操作文档1.demo搭建1)创建maven项目,填写groupID、artifactId2)在pom.xml中添加mybatis和连接mysql的依赖3)在数据库中建表4)创建实体类,其中实体类的成员变量的属性和名称需要与数据库中的字段和名称匹配5)在resources里面建一个配置文件,用于连接数据库,叫啥无所谓。6)在pom.xml里面加这一段,不然程序不会去java文件里面加载配置文件。7)创建mian方法,开冲。2.mapper代理1)写相关接口2)写mapper

2021-04-21 10:57:04 93

原创 leetcode113.路径总和2和257.二叉树的所有路径联合分析:对递归这件事的理解

首先贴上这两道题的题解//113题解class Solution { //搞两个公用list,一个用来输出,一个用来缓存 List<List<Integer>> ans = new ArrayList<>(); List<Integer> temp = new ArrayList<>(); //套娃方法安排 public void fillAns(TreeNode root, int sum){

2020-10-04 21:07:46 83

原创 线程休眠sleep()是静态方法,专治当前线程,不要瞎折腾

做项目需要让一段代码无休止地每隔一段时间执行一次,我心想这在while(true)里面搞个线程休眠不就完了吗。结果没想过java多线程学得一塌糊涂,自己搞了个新类,在新类里搞了个方法,七搞八搞,一开始甚至把sleep写到了while循环体的外面。。。其实根本不用,所有的方法都可以被认为是一个线程,而sleep作为一个静态方法,直接在主方法需要休眠的地方加一个Thread.sleep(时间)就可以解决问题了。...

2020-09-07 16:53:43 421 2

原创 内连接真的坑,sql引入外连接是有原因的

做项目需要通过白班、夜班两张视图写出一张日合计视图。一开始用的是:SELECT 白班.字段 + 夜班.字段 AS “日合计_字段” FROM 白班,夜班 WHERE 白班.日期 = 夜班.日期;这样搞就很难受。当有一天有一个字段有白班没夜班或者有夜班没白班,这个字段就不会出现在日合计里面。这时候我明白了sql引入外连接这个东西的原因,太合理了。我需要连接白班夜班两个表,哪个班的数据为空就置为0。所以:SELECT NVL(白班.字段,0)+NVL(夜班.字段,0) AS "日合计_字段"FROM

2020-09-07 16:45:24 130

原创 别再用foreach赋值了

今天二刷leetcode某题,写的恨不得和以前提交成功的版本一模一样了,还是不行,而且最简单的测试用例都通不过。遂把代码复制到idea调试。发现两个用foreach赋值的数组赋值失败,全是0。 想想也是,java是一个按值传递的语言。所谓“按址传递”只是说引用里面存的值是某个对象的地址。用正常for循环给数组元素赋值是改变某地址指向的某对象的变量的值。而用foreach就相当于int i = list[0];i=100; 这样做根本就不会改变list[0]的值。 综上,foreach用来读数组元素即可.

2020-08-25 14:02:30 888 3

原创 oracle和vs系列软件安装

软件安装步骤1.安装windows系统安装软件和环境是一个非常玄学的过程,大家做好多次重装系统的准备。1.安装oracle服务器1)点击setup开始安装2)无脑下一步,到典型安装这一步自选基目录和软件位置,软件位置需要在基目录下。然后设置口令(密码)。这个密码别忘记了。3)点击安装2.安装vs2013这一步需要在ODAC之前做。安装过程比较简单,不赘述。3.安装DEV新控件(14/17两个版本)14版和17版不要混装,会引发冲突。我装的是14版。4.安装ODAC1)介绍

2020-07-10 17:47:13 393 1

原创 leetcode 516.最长回文子序列(的长度)和647.回文子串(的个数)的遍历方法的理解

前情提要:子序列是说字母顺序一样就行,中间不可以截断。子串就必须是原串抠下来的串,顺序不能动,字母间隙也不能改动。这两题动态规划的方式太像了,拿来对比聊聊。 首先,我们知道动态规划这个东西是由已知推未知,由小范围推大范围。对于这两个题目,我们已知的是什么?那就是每个字母自身是回文的。也就是说,dp[][]方阵中,左上-右下对角线的值是已知的。 那么遍历方式就是: for(int i=n-1;i>=0;i--){ for(int j=i+1;j<n;j++){ .

2020-07-06 22:47:46 172

空空如也

空空如也

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

TA关注的人

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