自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 资源 (1)
  • 收藏
  • 关注

原创 二分查找算法

最简单的二分查找算法该部分算法只需要查找出数组中值等于value的元素,数组中不存在重复的元素,因此是最简单的一类二分查找,后续会在此基础上进行拓展。public int bsearch(int[] a, int n, int value) { int low = 0; int high = n - 1; while (low <= high) { int mid = (low + high) / 2; if (a[mid] == value) { re

2022-05-30 17:54:58 215

原创 EasyExcel导出工具类

EasyExcel导出工具类

2022-02-22 16:42:39 494 3

原创 JUC读书笔记(五)

文章目录Java中的13个原子操作类原子更新基本类型类原子更新数组原子更新引用类型原子更新字段类Java中的13个原子操作类原子更新基本类型类使用原子的方式更新基本类型,Atomic包提供了以下3个类。AtomicBoolean:原子更新布尔类型。AtomicInteger:原子更新整型。AtomicLong:原子更新长整型。此处仅以AtomicInteger为例进行讲解,AtomicInteger的常用方法如下。int addAndGet(int delta):以原子方式将输入的数值与实

2021-04-17 22:42:53 163

原创 JUC读书笔记(七)

文章目录使用线程池的好处线程池的实现原理ThreadPoolExecutor执行excute方法分下面4种情况。线程池的使用线程池的创建向线程池提交任务关闭线程池线程池的监控使用线程池的好处降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。提高线程的可管理性。线程时稀缺资源,如果无限制地创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一分配、调优和监控。线程池的实现原理线程池判断核心线

2021-04-17 22:41:43 179

原创 JUC读书笔记(六)

文章目录等待多线程完成的CountDownLatch同步屏障CyclicBarrier控制并发线程数的Semaphore线程间交换数据的Exchanger等待多线程完成的CountDownLatchCountDownLatch的构造函数接收一个int类型的参数作为计时器,如果想等待N个点完成,这里就传入N。每调用一个CountDownLatch的countDown方法时,N就是减1,CountDownLatch的await方法会阻塞当前线程,直到N变成零。由于countDown方法可以用在任何地方,所以

2021-04-17 22:41:07 54

原创 JUC读书笔记(四)

Java并发容器和框架ConcurrentHashMap为什么要使用ConcurrentHashMap在并发编程中使用HashMap可能导致程序死循环。而使用线程安全的HashTable效率又非常低下,基于以上两个原因,便有了ConcurrentHashMap的登场机会。线程不安全的HashMap在多线程环境下,使用HashMap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发情况下不能使用HashMap。示例代码如下:final HashMap<String, S

2021-04-13 23:35:16 93

原创 JUC读书笔记(三)

文章目录Lock接口队列同步器(AbstractQueuedSynchronizer)代码同步器的接口和示例队列同步器的实现分析同步队列独占式同步状态获取与释放共享式同步状态获取与释放独占式超时获取同步状态重入锁实现重进入公平与非公平获取锁的区别读写锁读写锁的接口读写锁的实现分析读写状态的设计写锁的获取与释放读锁的获取与释放锁降级LockSupport工具Condition接口Condition接口与示例本章将介绍Java并发包中与dang锁相关的API和组件,以及这些API和组件的使用方式和实现细节。内

2021-04-13 12:43:19 147

原创 JUC读书笔记(二)

线程为什么要使用多线程:更多的处理核心更快的响应时间更好的编程模型线程优先级Java线程中,通过一个整型成员变量priority来控制优先级,优先级的范围从1~10,在线程构建的时候可以通过setPriority(int)方法来修改优先级,默认优先级是5。针对频繁阻塞的(休眠或者IO操作)的线程需要设置较高优先级,而偏重计算(需要较多的CPU时间或者偏运算)的线程则设置较低的优先级,确保处理器不会被独占。但程序正确性不能依赖线程的优先级高低,因为操作系统完全可以不用理会Java线程对于优

2021-04-08 23:30:35 156

原创 JUC读书笔记(一)

内存语义、重排序规则与实现原理死锁产生的原因避免死锁的四个常用方法VolatileVolatile实现原理Volatile的两条实现原则Synchronizedsynchronized实现同步的基础(同步锁,锁的到底是谁?)原子操作的实现原理Java内存模型内存屏障类型表happens-before规则数据依赖性as-if-serial 语义顺序一致性内存模型未同步程序的执行特性Volatile的内存语义Volatile的特性重排序规则基于保守策略的JMM内存屏障插入策略锁的内存语义final域的内存语义f

2021-04-04 11:46:39 490

原创 RedisConfig

@Configurationpublic class RedisConfig {@Bean@SuppressWarnings("all")public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {// 我们为了自己开发方便,一般直接使用 <String, Object>RedisTemplate<String, Object> template = n

2021-03-30 21:39:11 73

原创 RedisUtil

package com.example.demo.utils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.stereotype.Component;import org.springframework.util.CollectionUtils;impor

2021-03-30 21:38:27 92

原创 SwaggerConfig

package com.linyihan.config;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.core.env.Environment;import org.springframework.core.env.Profiles;import org.springf

2021-03-24 15:22:18 374

原创 代码生成器

MyBatis-Plus代码生成器package com.linyihan.util;import com.baomidou.mybatisplus.annotation.DbType;import com.baomidou.mybatisplus.annotation.FieldFill;import com.baomidou.mybatisplus.annotation.IdType;import com.baomidou.mybatisplus.core.exceptions.Mybat

2021-03-22 21:28:53 100

原创 Failed to import bean definitions from URL location [classpath:spring-mvc.xml]

整合SSM时报错:HTTP Status 500 – Internal Server ErrorType 异常报告消息 Servlet.init() for servlet [springmvc] threw exception描述 服务器遇到一个意外的情况,阻止它完成请求。Exceptionjavax.servlet.ServletException: Servlet.init() for servlet [springmvc] threw exception org.apache.

2020-12-04 11:25:56 6045

转载 关于使用MaterialCardView时闪退的原因与处理方式

最简单的方法:加一行: android:theme="@style/Theme.MaterialComponents" ,这样就不会闪退了。如下:<com.google.android.material.card.MaterialCardView android:layout_width="match_parent" android:layout_height="123dp" android:theme="@style/Theme.MaterialComponents"/&

2020-09-29 22:51:42 538

原创 JSP+JDBC案例代码(数据维护)

本文主要用于最近记录最近学习时所用到的代码,使用时需先与数据库建立连接,导入sqjdbc4.jar包并在数据库中建立相应的表。ZgCx.jsp<%@page contentType="text/html;charset=GB2312" language="java"%><%@page import="java.sql.*"%><%request.set...

2020-04-12 08:28:35 556

转载 Anaconda误安装PyQt5后无法打开Spyder的解决方法

使用spyder写ui界面时经常出现的一个问题是会手贱pip install PyQt5。这会导致pip安装的qt与conda自带的qt版本不兼容,spyder无法识别,从而启动失败。用Anaconda Prompt启动spyder后给出以下报错信息:Traceback (most recent call last):File "C:\Temp\anaconda3\lib\site-packa...

2020-03-30 18:19:35 1904 6

原创 关于初次使用python pip更新PyQt5包时发生的种种问题以及最后莫名其妙的解决之总结

在使用pip安装所需要地python模块时总会碰到许多问题,比如readtimeout错误,此时存在两种解决方法:1、使用pip --default-time=100 install PyQt5 #时间可自由设置,500亦可2、链接到国内开源网站,此处是我在网上找到的几种方法:(1)单次: 可以在使用pip的时候在后面加上-i参数,指定pip源pip install scrapy -i...

2020-03-30 00:35:16 1494

VC6.0安装包下载

Microsoft Visual C++ 6.0,简称VC6.0,是微软推出的一款C++编译器,将“高级语言”翻译为“机器语言(低级语言)”的程序。Visual C++是一个功能强大的可视化软件开发工具。自1993年Microsoft公司推出Visual C++1.0后,随着其新版本的不断问世,Visual C++已成为专业程序员进行软件开发的首选工具。

2020-03-30

空空如也

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

TA关注的人

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