自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ALiangXLogic的博客

talk is cheap

  • 博客(57)
  • 收藏
  • 关注

原创 谈谈面试大厂中碰到的问题

分享面试中的小技巧以及之前面试碰到的问题

2023-07-20 15:28:43 301

原创 谈谈数据库调优

碰到面试官,别上来就光优化索引和分库主从了,先把单机性能拉满才是关键!

2023-07-15 18:18:02 684

原创 谈个人信息保护

互联网公司在处理用户数据时,必须严格遵守数据隐私法规和标准,同时采取一系列措施来保护用户数据的安全和隐私。

2023-07-04 14:35:26 247

原创 拧螺丝需求:递归算法的极致应用

在一个平平无奇的下午,接到一批螺丝

2023-06-30 16:25:42 353

原创 shell脚本自动化部署tomcat

在一个月黑风高的晚上,10分钟写了个shell脚本

2023-06-21 14:24:10 2226

原创 Spring集成Kafka

Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。

2023-06-12 16:54:29 4875

原创 Java泛型基本知识附面试题

Java泛型是Java语言的一个特性,它的主要目的是提高Java程序的类型安全性和可靠性。

2023-05-22 16:11:50 965

原创 Java Stream API的基本使用方法

使用Stream API可以使代码更加简洁、清晰,提高开发效率。但是,使用不当可能会导致代码出现问题,因此需要仔细考虑使用场景和条件。在实际开发中,应该根据具体情况选择合适的数据结构和操作方法,以达到最佳的开发效果。

2023-05-09 18:02:38 690

原创 Java开发初学者实用网站

2.多样化的内容:博客园的内容涵盖了IT技术的方方面面,从编程语言、操作系统、数据库到前端技术、后端开发等等,几乎你能想到的技术领域都能在这里找到相关的博客。2.付费资源过多:博客园中有不少付费资源,尤其是一些基础的文章和教程,需要额外付费才能获取,这对于一些初学者来说可能会造成一定的困扰。3.广告和弹窗过多:博客园中也存在不少广告和弹窗,这些广告不仅会影响用户体验,还可能分散用户的注意力,影响他们对于博客内容的专注度。3.收费模式:码云采用会员制模式,每月需要支付一定的费用才能享受全部功能。

2023-05-04 13:59:04 619

原创 如何写出高质量代码

高质量的代码还可以提高软件的可靠性和安全性。由于高质量的代码采用了优秀的编程范式和最佳实践,遵循了最佳实践和标准,避免了常见的错误和漏洞,减少了代码出现问题的可能性,从而可以提高软件的可靠性和安全性。总之,写出高质量的代码需要从多个方面进行分析和改进,包括设计、编码规范、代码质量、测试、可读性、可维护性、性能、安全性、可靠性和代码风格。只有从多个方面入手,不断进行改进,才能够写出高质量的代码。

2023-04-27 14:18:49 392

原创 关于如何合理设置线程池参数解决方案

如何合理的设置线程池的参数

2023-03-02 17:20:37 582

原创 java处理返回文件的API(java.net.URL的基本使用)

java.net.URL的基本使用

2022-12-09 17:08:58 607

原创 java读取Excel文档内容

java通过poi获取Excel文档内容

2022-10-26 19:38:50 1524

原创 java 获取文件内容并放入内存

Spring boot项目获取文件内容,并放入内存

2022-10-24 11:40:39 1453

原创 Java延时队列(DelayQueue)用起来真香啊啊啊~

Java延时队列(DelayQueue)的使用及内部源码解析无敌大目录Java延时队列(DelayQueue)的使用及内部源码解析前言延时队列(DelayQueue)的使用方式DelayQueue源码解析PriorityQueue使用方式和内部源码解析概念PriorityQueue的使用方式PriorityQueue源码解析构造器队列内部实现原理(二叉树小顶堆/大顶堆)小顶堆大顶堆offer(E e)排序源码解析poll()排序源码解析peek()remove(Object o)一键三连,冲啊!!!创作

2021-04-29 22:36:39 1767 2

原创 [全网首发]多线程最全知识万字总结(源码解析 ps:不信你能一次看完,建议收藏)

这是场硬战,冲啊!!!1.什么是线程进程与线程在解释什么是多线程之前,我们先来了解了解什么是进程和线程进程是计算机操作系统分配资源的最小单位,线程是操作系统执行任务调度的基本单位一个程序其实就相当于一进程,这个进程里面最少有一个线程来对程序中的各个功能来进行处理现代操作系统对进程线程的支持单核CPU执行指令都是一条一条执行的,但是并不代表不支持多任务同时执行场景:在播放视频的同时,也可以打字,但是这并不能说它们一定是并行的,其实这种并行还是依赖于操作系统对多任务的调度,A进程执行0.001

2021-04-21 00:23:47 2474 8

原创 异常:org.apache.catalina.LifecycleException: Protocol handler start failed

端口占用异常一般项目出现这个异常就是服务的端口被占用了,我们可以使用下面的指令来查看端口使用情况windows使用cmd查看端口,输入下面的指令netstat -ano|findstr "需要查询的端口号"linux:netstat -tunpl |grep 需要查询的端口号查询结果:杀死进程指令windows:taskkill -f -pid 进程号linux:kill -9 进程号执行指令:一般来说,这样来项目就可以启动了...

2021-04-13 17:38:10 309

原创 经典笔试题(一)——反转链表

反转链表题目特别简单,如下输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULL这里我给出两种做法使用栈暂存链表中的元素我们先上代码再讲思路public class ListNode { int val; ListNode next; ListNode(int x) { val = x; }}class Solution { public ListNode re

2021-04-10 22:54:52 251

原创 力扣每日一题——263、丑数解答

力扣每日一题——263、丑数解答263、丑数题目链接:看着本题的题目我们知道什么是丑数质因子只含有5、3、2的数,而且只需要判断传进来的数是否为丑数,这样就好办了,我们直接上代码采用除法+取余运算当我们传进来一个数,分别与5、3、2做除法运算,要是最终的结果等于1则表示它是丑数,这么说大家可能不太理解,我直接上代码class Solution { public boolean isUgly(int n) { if(n < 1) return false;

2021-04-10 11:48:35 272 1

原创 力扣多线程笔试题(Leetcode 1115、1116、1117、1195)

并发编程本章笔试题需要用到的并发编程知识,可以看看我这篇文章 Semaphore、CyclicBarrier和CountDownLatch三者的区别目录并发编程1115、交替打印FooBar(中等)CyclicBarrier解答Semaphore解答无锁模式(在Leetcode中测试超时)1116、打印零与奇偶数(中等)Semaphore1117、H2O 生成(中等)ReentrantLock + Condition1195、交替打印字符串(中等)Semaphore总结1115、交替打印FooBar

2021-04-09 17:15:16 501

原创 Semaphore、CyclicBarrier和CountDownLatch三者的区别

Semaphore首先我们来看看Semaphore,中文名称信号量我们来看看它的最常使用的方式Semaphore semaphore = new Semaphore(1);我们通过这个构造方法,传进去一个int型变量,这就是通过这个int型变量,来限制线程所能使用的资源,当我们通过semaphore.acquire();方法来阻塞线程的执行,比如我下面这种情况public class demo1 { Semaphore semaphore1 = new Semaphore(1);

2021-04-09 13:01:38 594 1

原创 Springboot整合Redis(RedisConfig等工具类编写)

我们使用的是上一期创建的Spring boot项目,没看过那边文章的可以去看看Springboot整合数据库 +JpaRepository实现简单数据查询我们直接进入正题添加依赖在pom文件中添加redis常用依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-

2021-04-08 22:40:14 3853 1

原创 Redis常用命令大全

写在前面各位看官老爷如果本篇文章对你有帮助就给个赞赞赞赞赞吧Redis基本数据结构String、list、set、hash、zset,本篇文章我们主要根据这五种基本数据结构的使用来展开当然还有,使用Redis之前我们要知道Redis本身是一个NoSQL数据库,数据一般都用key-value(键值对)来存储启动redis切换到redis安装目录下,输入下面语句,就可以启动redis了,也可以设置为开机自动启动redis-server.exe redis.windows.conf启动了red

2021-04-07 22:52:37 904

原创 硬肝系列:23种设计模式之状态模式

行为型模式—状态模式硬肝系列目录创建型模式23种设计模式之工厂模式23种设计模式之抽象工厂模式23种设计模式之建造者模式23种设计模式之原型模式23种设计模式之单例模式结构型模式23种设计模式之适配器模式23种设计模式之桥梁模式23种设计模式之代理模式23种设计模式之外观模式23种设计模式之装饰器模式23种设计模式之享元模式23种设计模式之组合模式行为型模式23种设计模式之责任链模式23种设计模式之命令模式23种设计模式之迭代器模式23种设计模式之中介者模式23种设

2021-04-06 18:35:48 161

原创 设计模式之观察者模式(发布订阅模式 > 观察者模式)

写在前面各位看官老爷如果本篇文章对你有帮助就给个赞赞赞赞赞吧行为型模式—备忘录模式硬肝系列目录创建型模式23种设计模式之工厂模式23种设计模式之抽象工厂模式23种设计模式之建造者模式23种设计模式之原型模式23种设计模式之单例模式结构型模式23种设计模式之适配器模式23种设计模式之桥梁模式23种设计模式之代理模式23种设计模式之外观模式23种设计模式之装饰器模式23种设计模式之享元模式23种设计模式之组合模式行为型模式23种设计模式之责任链模式23种设计模式之命令模

2021-04-06 00:16:17 172

原创 Spring boot整合AOP实现日志切面(面向切面编程)

什么是Spring AOP(面向切面编程)AOP(Aspect Orient Programming),也就是 面向切面编程,AOP 是一种编程思想,是OOP(面向对象编程)的一种补充,面向对象编程将程序抽象成各个层次的对象,而面向切面编程是将程序抽象成各个切面。为什么需要AOP场景:当你手上有一个毕设项目,一开始开发的时候并没有验证用户权限的功能以及打印详细操作日志的功能,现在被甲方巴巴看上了,需要大部分的方法上加上这两个功能来完善系统,现在我有30多个方法需要这两个功能,难道需要在这些方法上都加上

2021-04-05 00:52:27 1318

原创 Java基础——注解的艺术

Java注解因为本篇文章我选择的是自定义注解来是实现切面的功能,所以先来带大家来看看Java提供的一些元注解,这些元注解是注解自定义注解很重要的一部分元注解java提供的java.lang.annotation包里给大家提供了这些元注解,今天要给你们讲的也是比较重要的四个,我都给大家框起来了,这四个元注解就是用来注解自定义注解的也就是说几乎每个注解都要用到元注解我来给大家逐个分析这些元注解的作用以及含义@Documented@Documented@Retention(RetentionPo

2021-04-04 17:03:02 491 1

原创 Java基础——反射有多强,用过才知道

反射是什么在Java中,反射(Reflection)指的是在程序运行期间可以拿到一个对象的基本信息(属性、方法、注解等),所以反射是为了解决在运行期间,对某个未知的对象去获取其信息,调用其方法如何使用反射获取类信息这里先明确一点,Class对象是在JVM执行过程中动态加载的(使用到了才会去加载),除了八大基本类型,其它类都是class,当然也包括接口(interface)、自定义类等在这里我们新建一个People类import lombok.Data;@Datapublic class P

2021-04-03 20:09:49 1115 7

原创 面试难点---Redis之String底层详解(sds简单动态字符串)

Redis基本数据结构Redis有5种基本的数据结构,分别是String: 字符串Hash: 散列List: 列表Set: 集合Sorted Set: 有序集合我们会在Redis专栏的文章中去了解它们的底层原理以及基本使用方法,我们章先对String扩展讨论明确:Redis 所有的数据结构都是以唯一的 key 字符串作为名称,然后通过这个唯一 key 值来获取相应的 value 数据。不同类型的数据结构的差异就在于 value 的结构不一样。但是这个key使用的结构,都是字符串类型。Str

2021-04-02 20:12:37 390

原创 硬肝系列:23种设计模式之备忘录模式

行为型模式—备忘录模式硬肝系列目录创建型模式23种设计模式之工厂模式23种设计模式之抽象工厂模式23种设计模式之建造者模式23种设计模式之原型模式23种设计模式之单例模式结构型模式23种设计模式之适配器模式23种设计模式之桥梁模式23种设计模式之代理模式23种设计模式之外观模式23种设计模式之装饰器模式23种设计模式之享元模式23种设计模式之组合模式行为型模式23种设计模式之责任链模式23种设计模式之命令模式23种设计模式之迭代器模式23种设计模式之中介者模式23种

2021-04-01 17:57:07 170

原创 Springboot整合数据库 +JpaRepository实现简单数据查询

Spring boot 整合数据库系统环境:win10 x64Java version:8数据库:mySQL开发工具:Navicat15、IDEA2020.2在这个专题中,我们会在Spring boot这个框架中,我们的重点在于技术的实现,也就是最基础的东西,关于业务类的代码可能会有点少,如果有疑问欢迎在评论区留言一、创建一个Spring boot项目到这就可以创建一个Spring boot 项目了,我们来看看创建后的目录结构连接数据库在Spring boot里连接数据库并不需要

2021-04-01 00:35:46 875

原创 Netty基础---IO多路复用知识(附高频面试题)

引子对于现在网络上的资源,当我们打开浏览器搜索的时候,就会启动一个线程去请求该地址,然后将我们需要的数据返回给我们,随着时间的发展,资源越来越多,一开始碰到10个资源我们可以启动10个线程去获取,但是100个呢?100W个呢?不可能起100W个线程吧,直接能把你的电脑干报废了,首先我们要想到,不是时时刻刻都去获取资源的,所以给每一个资源都单独开一个线程不太现实,所以就需要一个线程来管理多个资源,达到资源的有效利用,就出现了我们IO多路复用举个栗子吧比如你开了一家酒店,正好100间房都住满人了,你们酒店

2021-03-31 13:58:55 502

原创 硬肝系列:23种设计模式之中介者模式

行为型模式—中介者模式硬肝系列目录创建型模式23种设计模式之工厂模式23种设计模式之抽象工厂模式23种设计模式之建造者模式23种设计模式之原型模式23种设计模式之单例模式结构型模式23种设计模式之适配器模式23种设计模式之桥梁模式23种设计模式之代理模式23种设计模式之外观模式23种设计模式之装饰器模式23种设计模式之享元模式23种设计模式之组合模式行为型模式23种设计模式之责任链模式23种设计模式之命令模式23种设计模式之迭代器模式23种设计模式之中介者模式到目前

2021-03-30 23:41:45 142

原创 阿里规约---为什么建议使用ThreadPoolExecutor自定义线程池

创建线程池的四种方式newSingleThreadExecutor 创建一个拥有一个线程的线程池,该线程池的优点是保证事件的执行顺序(先进先出队列(FIFO)、后进先出(LIFO))newFixedThreadPool(int nThreads) 创建一个定长线程池,传进去的参数为可同时并发的线程数,超出的任务放进阻塞队列newScheduledThreadPool(int corePoolSize) 创建一个定长的能执行周期任务的线程池Executors.newCachedThreadPool()

2021-03-30 16:48:26 1552

原创 硬肝系列:23种设计模式之迭代器模式

行为型模式—迭代器模式硬肝系列目录创建型模式23种设计模式之工厂模式23种设计模式之抽象工厂模式23种设计模式之建造者模式23种设计模式之原型模式23种设计模式之单例模式结构型模式23种设计模式之适配器模式23种设计模式之桥梁模式模式23种设计模式之代理模式模式23种设计模式之外观模式模式23种设计模式之装饰器模式23种设计模式之享元模式23种设计模式之组合模式行为型模式23种设计模式之责任链模式23种设计模式之命令模式23种设计模式之迭代器模式到目前为止、23种设计

2021-03-29 22:55:11 195 2

原创 Netty基础,Netty实现群聊系统

NIO群聊系统这里面的知识比较全面,用到了我们之前学习的三大组件,首先我先来给大家介绍本系统的功能服务端功能最基本的当然是注册功能,也就是将serverSocketChannel注册进Selector,Selector负责调度事件监听、读取客户端发来的消息收到客户端的信息后将其转发到其它客户端,完成群聊功能客户端功能连接服务端,注册进Selector读写消息以上就是群聊系统最基本的功能,我们直接上代码,每句话的含义我都标在它的顶上了服务端源码package com.hecl.desig

2021-03-28 20:21:20 662

原创 Netty基础---NIO组件---Selector选择器(四)

Selector(选择器)在我们使用一个线程处理多个客户端的连接事件时就可以使用Selector ,Selector采用轮询的机制,去检测每条连接通道是否有事件发生,如果有事件发生,便可以根据发生的事件去做相应的处理,使用选择器之后,只有真正发生读写事件的时候才去启动线程读写,实现了一个线程管理多个通道,减少了多个线程上下文切换的开销我们来看看Selector的模型图这上面是简略图,意思就是多个客户端注册进Selector后,当有读写事件发生时,Selector去启动一个线程来完成读写操作1.因为

2021-03-28 15:38:41 3124 6

原创 硬肝系列:23种设计模式之命令模式

行为型模式—命令模式硬肝系列目录创建型模式23种设计模式之工厂模式:https://blog.csdn.net/ALiangXLogic/article/details/11480751223种设计模式之抽象工厂模式:https://blog.csdn.net/ALiangXLogic/article/details/11484812623种设计模式之建造者模式:https://blog.csdn.net/ALiangXLogic/article/details/11488551923种设计模式

2021-03-28 00:55:16 220 1

原创 Netty基础---NIO组件---Channel通道(三)

Channel(通道)还不知道Channel(通道)在NIO处于什么位置的,可以去看看我Netty学习专题的第一篇Netty基础—NIO简介(一)Channel(通道)有一个特点,它是双向读写的,也就是说它不像流对象(FileInputStream/FileOutputStream)那样,只能读或写我们来看看Channel的源码public interface Channel extends Closeable { //判断通道是否打开 public boolean isOpen();

2021-03-27 17:49:33 357 1

原创 Netty基础---NIO组件---Buffer缓冲区(二)

BufferBuffer(缓存区),在本质上Buffer我们可以称为内存块,线程read()和write()都需要经过Buffer,java中提供了一些方法可以让开发者更便捷的使用BufferBuffer源码:public abstract class Buffer { static final int SPLITERATOR_CHARACTERISTICS = Spliterator.SIZED | Spliterator.SUBSIZED | Spliterator.OR

2021-03-27 17:40:37 191

空空如也

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

TA关注的人

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