随笔分类 - java学习笔记
摘要:背景 关于如何避免写出慢SQL,我发现自己对这方面的认识比较浅薄,生产环境中,慢SQL一旦产生,其代价还是比较大的,就比如数据库宕机,这是我们一定要去避免发生的现象。所以,一定要结合数据库,结合业务数据量去学习如何避免慢SQL,而不浅浅地只拘泥在理论层面。 定量认识慢SQL 作为一个合格的程序员,我
阅读全文
摘要:背景 本篇将会讲一些文件读写的推荐使用姿势以及编码时的注意事项,便于新手更好地理解如何高效地进行大文件读写,比如利用好缓冲区避免出现OOM,或者及时地释放资源以保证资源被及时地关闭,避免资源泄露。 处理中文时读取到乱码 大家都知道,中文的编码和英文的编码使用的字符集是不一样的,字符集不匹配的时候读取
阅读全文
摘要:背景 大家都知道,使用对象的时候,由于对象的默认值为null, 如果没有及时判空就去调用对象的方法,可能会带来空指针异常的问题。本篇将会讲解空指针异常容易在哪些情况下出现,新手应该如何去避免无处不在的null值问题,又应该如何修复。主要举一些常见的例子来配合说明。 1、自动拆箱导致的空指针异常 首先
阅读全文
摘要:背景 本篇博文将会讲一讲Spring中使用@Transactional注解会出现的不生效问题。事务的生效与否,一般不是我们冒烟自测的范围,测试也不会去测,但是一旦上线后,事务出现不生效的情况,就可能引发较大的问题,甚至会带来损失。所以,使用好事务注解是非常重要的,尤其是注意哪些场景下会出现事务失效。
阅读全文
摘要:背景 我们都知道ThreadLocal实现了资源在线程内独享,线程之间隔离。 实际使用中,ThreadLocal适用于变量在线程间隔离,而在方法或类间共享的场景。比如用户信息,当用户信息需要在多个方法之间传递或者共享使用的时候,同时,每个Tomcat请求的用户信息是私有的。这时可使用ThreadLo
阅读全文
摘要:背景 本博文主要是创建了一个新的SpringBoot项目,实现基本的增删改查,分页查询,带条件的分页查询功能。是方便初学者学习后端项目的一个比较清晰明了的实践代码,读者可根据博文,从自己动手创建一个新的SpringBoot项目,到使用PostMan测试基本请求,完完全全实践一遍,写出自己的代码,或者
阅读全文
摘要:背景 分布式事务,后端开发中比较常见啦。因为在面试的时候,总是有interviewers让我给他普及一下分布式事务,虽然我会的也不多呀但是还是浅浅说一说; 今天心血来潮,好好地总结一下分布式事务,希望每一位后端工程师都能彻底理解分布式事务。 什么是分布式事务? 答:既然是分布式,首先必然是分布式系统
阅读全文
摘要:背景 本文将讲解单例模式-双重检验锁的实现。 代码实现 public class DCLTest { private volatile static DCL instance; private DCLTest () {}; public static DCLTest getInstance() {
阅读全文
摘要:背景 我们知道hashmap是一个线程不安全的数据结构,在多线程编程的时候,多个线程同时向hashmap中put元素的时候,会发生数据丢失。多线程put操作后,再get操作导致死循环。 多线程put非NULL元素后,get操作得到NULL值。 使用 为了保证并发安全,我们使用hashmap的时候,建
阅读全文
摘要:###代码实现 方法一:for循环 public static void main(String[] args) { ArrayList<String> list = new ArrayList<>(); list.add("a"); list.add("ab"); list.add("abc");
阅读全文
摘要:代码: import java.io.File; public class FileShow { static class Test12 { public static void main(String[] args) { File f = new File("C:\\Users\\19821\\D
阅读全文
摘要:代码 /** * 统计给定文件中给定字符串的出现次数 * @param filename 文件名 * @param word 字符串 * @return 字符串在文件中出现的次数 */ public static int countWordInFile(String filename, String
阅读全文
摘要:##多线程简单入门(Java)(下篇:多线程Java中的使用) ###目录 ###一、创建多线程 ###二、线程的安全 ###三、线程的通信 ###一、创建多线程 在Java中,多线程的创建有4种方式。 方式一:继承于Thread类; 方式二:实现Runnable接口; 方式三:实现Callable
阅读全文
摘要:##多线程简单入门(Java)(上篇:概念理解) 本篇文章会简单地介绍一下多线程的相关概念,多线程的实现方法(这里我将会用大量的代码实例来介绍),多线程的应用场景以及经典的生产者消费者问题。通过这篇文章,我们将会对多线程有初步的理解;本文中讲上篇,建议结合下篇学习。 ###一、什么是多线程?什么时候
阅读全文
摘要:一、Cplex的介绍 Cplex是一种专门用来求解大规模线性规划问题的求解工具。不仅仅是LP问题,对于二次规划 QP,二次有约束规划QCP,混合整数线性规划MIP问题,甚至Network Flow问题,都是很 好的求解工具。官网https://www.ibm.com/cn-zh/products/i
阅读全文
摘要:###一、数组的赋值: arr2=arr1;对于该赋值而言,地址值一样,所以arr1会随着arr2的变化而变化。这不能称作数组的复制,因为只是把地址赋过去了。地址一样,指向的是堆空间中唯一的数组实体(数值)。 ###二、数组的复制: arr2=new int[arr1.length]; for(in
阅读全文
摘要:###读取文件 读取文件第一行的内容显示出来放在列表中,并打印出第一个单元格的内容。 xlsx文件: ###代码 ''' import java.io.FileInputStream; import java.io.InputStream; import java.text.SimpleDateFo
阅读全文
摘要:''' package helloworld; //需要导入py4j.jar包 import py4j.GatewayServer; import java.util.*; import java.lang.reflect.Array; import java.math.BigDecimal; im
阅读全文