
数据结构
文章平均质量分 64
肆〇
后端开发工程师,主攻Java、C#等后端语言及其主流技术生态,以及数据库SQL、算法。博客主要围绕后端开发、算法设计与开发、SQL编写与优化,也会穿插一些开发相关的新技术、新思想。为保证博客质量,采用周更的方式,每周二晚8:00进行更新,欢迎一起交流探讨、批评指正。
Let's code the world together!
展开
-
Java知识点笔记
因为StringBuffer很多方法都是synchronized 修饰的,所以StringBuffer是线程安全的,但是其运算效率较低,而StringBuilder没有synchronized 修饰,所以StringBuilder是非线程安全的,但是其运算效率较高。一般项目中对于String的运算一般是单线程的,所以在日常的使用中一般使用StringBuilder。原创 2022-05-24 18:44:05 · 323 阅读 · 1 评论 -
Java数字小游戏
最近看到网络视频上有一些有趣的小游戏,于是想到用Java代码实现一下:游戏玩法:由计算机随机产生1~100的整数。用户猜测计算机产生的数字(即答案),用户输入数字,如果输入的数字与答案相同则获胜。当输入的数字小于或大于答案,会出现关于输入数值与答案比较的提示信息,用户通过提示信息进一步猜测答案,直到指定次数后游戏结束。变量:输入数值 随机产生的答案 猜测回合(次数)逻辑流程:import java.util.Random;import java.util.Scanner;.原创 2022-05-05 19:18:24 · 550 阅读 · 0 评论 -
身份证编码与校验码计算规则
身份证编码规则根据《中华人民共和国国家标准GB11643-1999》(参考,可能有更新的)中有关公民身份号码的规定,公民身份号码是特征组合码,号码共18位,由17位数字本体码和1位数字校验码组成。1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 编码类别 编码位数 位次 描述 细分位次 细分描述 地址码 6 1-6 表示编原创 2022-04-28 22:32:54 · 3202 阅读 · 0 评论 -
信息检索——查全率和查准率
在信息检索领域,信息检索系统(Information Retrieval System,IRS)是指根据特定的信息需求而建立起来的一种有关信息搜集、加工、存储和检索的程序化系统,而在设计与开发IRS(如文献IRS、图书IRS等)时,需要考虑系统在使用过程中的实际效果,因此提出一些指标来体现IRS系统的信息检索效果,本博客将介绍查全率与查准率的概念与计算规则,二者是反映检索效果的重要指标。原创 2022-04-21 18:01:33 · 3985 阅读 · 0 评论 -
java中的值传递和引用传递
值传递(Pass By Value或者Call By Value)是对基本型变量而言的,传递的是该变量的一个副本,改变副本不影响原变量。一般java中的基础类型数据传递都是值传递。引用传递(Pass By Reference或者Call By Reference)一般是对于对象型变量而言的,传递的是该对象地址的一个副本, 并不是原对象本身 。一般java中实例(包装)对象的传递是引用传递。一、基本类型和引用类型在内存中的不同之处int num = 10;String str = "hello"原创 2022-03-02 23:16:39 · 4537 阅读 · 0 评论 -
LinkedList数组列表内部增删改查源码分析
本文对源码中的注释进行了翻译解读,源码注释需查阅源码一、增将指定的元素追加到此列表的末尾,这个方法相当于addLast。参数 e 要追加到此列表的E类元素 返回 boolean (由Collection.add指定) public boolean add(E e) { linkLast(e); return true; }将指定的元素插入到此列表中的指定位置。将当前位置的元素(如果有的话)和随后的元素向右移动(给它们的原创 2022-03-01 18:25:27 · 240 阅读 · 0 评论 -
ArrayList数组列表内部增删改查源码分析
对源码中的注释进行翻译解读,源码注释需查阅源码一、ArrayList1.增将指定的元素追加到此列表的末尾参数 e 将要添加到此列表的元素 返回 boolean as specified by {@link Collection#add} public boolean add(E e) { ensureCapacityInternal(size + 1); // Increments modCount!! elementDat原创 2022-03-01 17:17:12 · 378 阅读 · 0 评论 -
iteration报错ConcurrentModificationException测试
测试代码,仅作个人记录,请切勿盲目参考。1.public class IterationTest { public static Integer integer= 0; public static void main(String[] args) { List<Integer> list = new ArrayList<>(); for (int i = 0; i < 10; i++) { lis原创 2022-02-28 23:00:49 · 295 阅读 · 0 评论 -
解决Hash冲突四种方法
Hash算法只是一个定义,并没有规定具体的实现简述把任意长度的输入,通过Hash算法变换成固定长度的输出,这个输出就是Hash值。哈希值的空间远小于输入的空间,所以可能会发生“哈希碰撞”,即两个不同的输入,产生了同一个输出。Hash算法常用于消息摘要的场景 MD5、SHA都属于Hash算法的实现。简单使用凡是涉及到分布式的系统,就会有负载均衡和数据分布的问题。为了让连接(或者数据)能够分布得更均匀,很多时候会使用到Hash算法 Hash取模 (hash(request) % n)...原创 2022-02-24 11:24:41 · 3003 阅读 · 0 评论 -
HashMap源码解读(一)
本文对HashMap部分源码按照出现顺序进行翻译解读,绿色英文为HashMap源码中的注释,中文为注释对应翻译,代码段中为相应源码 *仅供参考原创 2022-02-23 22:31:27 · 396 阅读 · 0 评论 -
properties配置文件乱码问题
properties配置文件出现上面的乱码问题。问题原因:配置文件的编码方式不正确,应该是UTF-8:原创 2022-02-22 19:14:10 · 2367 阅读 · 0 评论 -
递归陷入死循环的判断方法与解决措施(java代码)
怎么及时发现程序陷入死循环?首先根据死循环的判断依据:周期性调用相同方法名传入相同参数。那么只需要判断这个方法连续或非连续(多线程)传入的参数是不是和之前一样就可以了,这里我定义了两个静态参数,一个是这个方法当前传入的参数(这里暂时定为一个),另一个参数是连续传入的参数的次数,只要传入参数和当前参数不一样,那么就将当前参数进行修改覆盖,计数置为0。这样在计数达到一定值(10或20或100,具体视业务的复杂程度)的时候就判定此方法陷入了死循环。发现死循环之后需要让程序执行什么操作呢?在发现死循环之后及时原创 2022-02-20 21:34:25 · 4736 阅读 · 1 评论 -
java创建与删除文件(文件夹)
创建文件夹并在文件夹下创建文件:public class CreateFileApplication { public static void main(String[] args) { //创建文件夹,这里写文件路径,如:"src/main/java/document" File folder = new File(""); //如果文件夹不存在 if(!folder.exists()){ //创建文件夹原创 2022-02-18 16:13:01 · 2003 阅读 · 0 评论 -
java字节流和字符流的实例练习(OutputStream、BufferedOutputStream、InputStream、BufferedInputStream)
一、字节流输入输出:下面是一个字节流的输入输出案例练习,包括的类有OutputStream(输出流)、BufferedOutputStream(缓冲输出流)、InputStream(输入流)、BufferedInputStream(缓冲输输入流):public class xxPutStreamTest { public static void main(String[] args) throws IOException { String currentPath = "s原创 2022-02-17 17:41:34 · 651 阅读 · 0 评论 -
java对象形参传递修改自定义对象与基本类型包装类型的不同
基本类型的包装类型的对象:public class Test { public static void main(String[] args) { String string = "冰墩墩"; System.out.println("==========String改变属性值==========="); System.out.println("原对象:" + string); System.out.println("方法返回值:"原创 2022-02-09 22:27:32 · 829 阅读 · 0 评论 -
java从文件读取String对象与将String对象写入文件
一、输出:从java对象输出到文件中:java对象可以是String、StringBuffer、StringBuilder类型等,文件的格式可以是.txt/.doc/.docx格式等。原创 2022-01-29 19:51:32 · 8466 阅读 · 0 评论 -
java中常见的日期和时间格式转换
Spring 面试题(一)1、一般问题.不同版本的 Spring Framework 有哪些主要功能?什么是 Spring Framework?列举 Spring Framework 的优点Spring Framework 有哪些不同的功能?Spring Framework 中有多少个模块,它们分别是什么?什么是 Spring 配置文件?Spring 应用程序有哪些不同组件?1.8、使用 Spring 有哪些方式?2、依赖注入(Ioc)2.1、什么是 Spring IOC 容器?...原创 2021-09-13 10:29:15 · 6054 阅读 · 1 评论 -
JVM系列——StringTable
1. String的基本特性:String就是字符串类型,定义方式有两种:String s1 = "hello";String s2 = new String("hello");String类是final修饰的,不可以被继承。JDK1.9之后String、StringBuffer、StringBuilder从char[]改成byte[]了。String代表不可变的字符序列,简称不可变性。字面量定义的方式,存储在字符串常量池中。字符串常量池是不会存储相同内容的字符串的。Str.原创 2021-11-27 17:14:37 · 2778 阅读 · 0 评论 -
重写equals方法时重写hashCode方法的重要性
为了提高效率,采取重写hashcode方法,先进行hashcode比较,如果不同就没必要再进行equals的比较了,这样就大大减少了equals比较的次数,这对比需要比较的数量很大的效率提高是很明显的,一个很好的例子就是在集合中的使用。java中的List集合是有序可重复的,而set集合是无序不能重复的,那么怎么能保证不能被放入重复的元素呢,但靠equals方法一样比较的话,如果原来集合中以后又10000个元素了,那么放入10001个元素,难道要将前面的所有元素都进行比较,看看是否有重复,欧码噶的,这个原创 2021-12-11 22:02:19 · 377 阅读 · 0 评论 -
BIO、NIO、AIO 的区别
BIO:Block IO 同步阻塞式 IO,就是我们平常使用的传统 IO,它的特点是模式简单使用方便,并发处理能力低。NIO:New IO 同步非阻塞 IO,是传统 IO 的升级,客户端和服务器端通过 Channel(通道)通讯,实现了多路复用。AIO:Asynchronous IO 是 NIO 的升级,也叫 NIO2,实现了异步非堵塞IO,异步 IO 的操作基于事件和回调机制。...原创 2021-12-18 21:05:52 · 707 阅读 · 0 评论 -
关于集合中的线程安全问题
关于集合中的线程安全问题原创 2021-11-16 21:10:28 · 4513 阅读 · 0 评论