- 博客(48)
- 资源 (2)
- 收藏
- 关注
原创 IDEA Debug模式执行指定表达式修改参数
文章目录IDEA DebugDemoRun 结果Debug 结果方法IDEA Debug我们在Debug程序的时候,有时候需要修改中间参数,并且获取到值,同时在此过程中程序并不阻塞,避免超时。想法:不阻塞的修改中间参数并且获得修改后的结果。DemoRun 结果Debug 结果方法1、指定添加断点2、修改断点3、Debug模式运行即可...
2022-04-12 22:03:47 2238 2
原创 SpringBoot通过yml等配置文件动态生成多个Bean
SpringBoot通过application.yml等配置文件动态生成多个Bean到容器中。
2022-01-06 22:21:57 3275 1
原创 Java 面试并发常见编程题
文章目录1、写一个死锁2、两个线程交替执行3、三个线程交替执行整理常见的Java面试并发的编程题1、写一个死锁import java.util.concurrent.locks.ReentrantLock;/** * 死锁 * * @author wenei * @date 2021-08-14 11:38 */public class DeadLock { private static ReentrantLock lock1 = new ReentrantLock();
2021-08-14 12:09:36 273
原创 Java HashMap常见问题
文章目录1、HashMap中常见变量2、HashMap的hash函数3、HashMap底层结构4、put方法5、扩容6、JDK8对HashMap做了哪些改变1、HashMap中常见变量// 默认初始化容量// 设置容器大小要为2的整数幂// 这样数组长度-1刚好成为一个低位掩码,&的结果刚好可以用做数组下标访问static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 16// 最大容量static final i
2021-08-14 09:23:52 277
原创 MySQL索引
文章目录索引概念索引分类索引匹配原则底层结构聚簇索引和非聚簇索引索引概念索引是一种数据结构,用于优化数据库查询速度优点:加快查询速度缺点:1、维护索引需要占用数据库资源2、占用磁盘空间3、增删时会维护索引影响效率索引分类1、主键索引;主键默认创建的索引,不能为null2、单值索引;又是普通索引,给主键外的其他列建立索引 create index name_index from user(name)3、唯一索引;允许为null,但只能有一个null create unique index
2021-08-12 21:48:09 113
原创 JAVA nio 简单聊天室实现
文章目录服务端客户端服务端初始化一个ServerSocketChannel,绑定端口,然后使用Selector监听accept事件。当有accept发生时,表示有客户端连接进来了,获取客户端的SocketChannel,然后注册其read事件;用来接收客户端发送的消息。package chatroom;import java.io.IOException;import java.net.InetSocketAddress;import java.nio.ByteBuffer;import
2021-07-21 12:38:22 183
原创 Java NIO(一)
目录文章目录ChannelChannel的实现简单示例BufferScatterGatherSelector示例ChannelJAVA NIO的通道类似流:从通道中读取数据,也可以写数据到通道,但流的读写通常是单向的通道可以异步的读写通道中的数据总是要先读到一个Buffer,或从一个Buffer中写入Channel的实现FileChannel: 从文件中读写数据DatagramChannle:能通过UDP读写网络中的数据SocketChannel:能通过TC
2021-07-19 21:12:09 184
原创 Redis基础概念
文章目录Redis数据结构对象类型过期键删除策略回收策略持久化机制主从复制(slaveof)哨兵(sentinel)集群(cluster)事务Redis数据结构字符串:获取长度复杂度为O(1);空间预分配;惰性空间释放链表:双端;无环;带表头和表尾指针;带长度计数器;多态(保存不同类型的值)字典:底层使用哈希表;使用链表解决哈希冲突;默认有两个哈希表,rehash时使用另一个表跳跃表:用作于有序集合和集群的内部实现;按照分值大小排序整数集合:升级;整数集合是集合键的底层实现之一;实现为数组压缩
2021-07-18 16:42:39 212
原创 并发笔记(三)AQS
目录文章目录AQS概述框架源码分析1、节点模式2、节点状态waitStatus3、独占模式accquire实现release实现4、共享模式acquireSharedreleaseSharedAQS概述谈到并发,就会说到Lock,从而谈到ReentrantLock;而ReentrantLock就是基于AQS实现的。AQS(AbstractQueuedSynchronizer),类如其名,抽象队列同步器,定义了一套多线程访问共享资源的同步器框架。常用的ReentrantLock、Semaphore、
2021-07-14 19:08:40 449
原创 并发笔记(二)Sleep和wait和join
目录文章目录sleep和wait的区别joinsleep和wait的区别1、sleep方法是Thread类的静态方法。wait方法是Object类的成员方法。调用会阻塞调用对象的wait方法的线程,将其放置到该对象的等待池中。2、sleep方法不释放锁。调用wait方法时,线程会放弃对象锁,进入等待此对象的等待锁定池。3、sleep方法可能会抛出异常,需要异常处理。wait方法不需要处理。4、sleep方法可以在任何地方使用。wait方法只能在同步代码块中使用。5、sleep方法通过超
2021-07-13 12:54:36 108
原创 并发笔记(一) volatile和CAS
目录文章目录volatile实现原理缓存一致性协议从lock角度看CAS存在的问题volatilevolatile是并发中常见的关键词之一。它提供两种性质,可见性和有序性。可见性:保证修改的值立即更新到主存;当有其他线程需要读取时跳过该线程缓存区,直接读取主存数据。有序性:禁止指令重排。实现原理在通常的指令前加上了lock指令。处理器使用三个相互依赖的机制来实现加锁的原子操作:1、保证原子操作2、总线加锁,使用LOCK#信号和LOCK指令前缀3、高速缓存相干性协议,确保对高速缓存中的
2021-07-10 21:02:32 172
原创 物联网之智能家居系统设计和实现
文章目录1、课题概述2、参考博客3、开发环境4、准备设备5、系统设计5.1、硬件5.2、软件6、系统实现6.1、云服务器部署MQTT服务端6.2、ESP8266连接MQTT服务端6.2.1、arduino中先下载esp12e的相关组件库。6.2.2、导入其它库6.2.3、代码6.3、单片机实现6.4、HTTP服务实现6.5、App实现7、系统测试8、系统回顾9、项目地址1、课题概述实现一个手机App,可以控制家里设备,并获取到相关温湿度信息。App调用云服务器上的HTTP服务;HTTP服务封装了MQT
2021-06-27 13:48:24 18626
原创 基于Vue的SM4、DES、AES的算法实现
文章目录项目地址项目展示项目地址项目采用Vue.js实现,纯前端。加密算法也为JavaScript实现。Gitee地址项目结构:|—build:构建时的配置(默认创建时的)|—config:相关配置(默认创建时的)|—src:源代码 |—components:通用组件 |—pages:页面 |—router:路由信息 |—utils:加密算法实现工具类|—static:静态文件项目展示...
2021-06-10 17:00:09 457 4
原创 Bridge桥接设计模式
文章目录Bridge桥接模式类的层次结构的两个作用示例程序Display类CountDisplay类DisplayImpl类StringDisplayImpl类Test类Bridge桥接模式Bridge的意思是“桥梁”。桥梁的作用是将河流的两侧连接起来。Bridge模式的作用也是将两样东西连接起来,分别是类的功能层次结构和类的实现层次结构。类的层次结构的两个作用希望增加新功能时假设现有一个类something。当我们想在Something中增加新功能时(想增加一个具体方法时),会编写一个So
2021-06-03 20:08:22 112
原创 AbstractFactory抽象工厂设计模式
文章目录AbstractFactory模式factory包ItemLinkTrayPageFactorylistfactory包ListLinkLinkTrayListPageListFactory测试类Test相关角色AbstractFactory模式Abstract的意思是“抽象的”,Factory的意思是“工厂”。将它们组合起来我们就可以知道AbstractFactory表示“抽象工厂”的意思。抽象工厂的工作是将“抽象零件”组装为“抽象产品”。我们并不关心零件的具体实现,而是只关心接口(API
2021-05-25 12:02:47 228
原创 基于JavaScript的SM4算法加密解密实现(源码)
文章目录SM4实现ByteUtilSM4UtilSM4实现ByteUtilByteUtil.js,用于通用的字节处理.// 左移export let left_move = (text, number) => { if (text == null) { return null; } let result = ""; for (let i = number; i < text.length; i++) { result += text.charAt(i);
2021-05-09 17:49:52 4795
原创 基于JavaScript的AES算法加密解密实现(源码)
文章目录AES实现ByteUtilAESUtilAES实现ByteUtilByteUtil.js,用于通用的字节处理.// 左移export let left_move = (text, number) => { if (text == null) { return null; } let result = ""; for (let i = number; i < text.length; i++) { result += text.charAt(i);
2021-05-09 17:47:52 1841
原创 基于JavaScript的DES算法加密解密实现(源码)
文章目录DES实现ByteUtilDESUtilDES实现ByteUtilByteUtil.js,用于通用的字节处理,DESUtil.js需要使用其中的部分方法// 左移export let left_move = (text, number) => { if (text == null) { return null; } let result = ""; for (let i = number; i < text.length; i++) { resu
2021-05-09 17:45:46 1176 1
原创 SpringBoot读取application.properties配置原理以及中文乱码问题
文章目录SpringBoot读取application.properties原理ApplicationEnvironmentPreparedEvent事件ConfigFileApplicationListener监听器PropertiesPropertySourceLoader配置加载器OriginTrackedPropertiesLoader配置加载器application.properties中文出现乱码解决方案1解决方案2SpringBoot读取application.properties原理在S
2021-04-10 17:19:36 1624 3
原创 SpringJPA的CascadeType的作用
文章目录测试环境一无多无无级联报错添加级联PERSIST一有多无无级联报错添加级联MERGE添加级联PERSIST一无多有成功CascadeType.REFRESHCascadeType.REMOVEorphanRemoval属性测试环境Person类下有多个Car。一无多无新建一个Person并添加两个Cat到Person下。保存Person。 @GetMapping("/demo1") public String demo1() { Person person
2021-03-28 16:47:53 290
原创 IDEA启用application.properties自动提示功能
文章目录配置文件效果步骤配置文件效果到步骤1、添加依赖 <!--configuration-processor--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId>
2021-03-28 11:36:59 787
原创 [JAVA基础] 6、JNA的使用教程和示例
文章目录前言1、JNA2、windows环境下构建dll2.1、新建项目2.2、实现函数2.3、修改平台2.4、生成dll3、Linux环境下构建so4、JAVA调用JNA4.1、注意前言相关环境:Windows10,VS2013,IDEA2020,JDK1.8x64本项目git地址JNI的相关示例demo:JNI的使用和示例1、JNAJNA(Java Native Access)框架是一个开源的Java框架,是SUN公司主导开发的,建立在经典的JNI的基础之上的一个框架。2、windows
2021-02-26 14:52:56 2363
原创 [JAVA基础] 5、JNI的使用教程和示例
文章目录JNI示例注意事项JNIJNI是Java Native Interface的缩写,通过使用 Java本地接口书写程序,可以确保代码在不同的平台上方便移植。示例在windows环境下使用vs2013构建dll动态库。在liunx环境下构建so动态库。java项目中使用System.load加载动态库。教程根据上述教程完成一个简单示例demo。示例git地址注意事项windows环境下构建dll1、在classes执行 javah -jni cn.weezoo.jnademo.
2021-02-26 12:25:27 2209 3
原创 [JAVA基础] 4、构造器的隐式调用
文章目录总结总结1、一个类没有自定义构造器时,会生成一个无参构造器(隐式的)。2、每个类都会在他的构造器前面调用父类的无参构造器(隐式的)。子类没有自定义构造器时,会隐式生成一个无参构造器,并在该构造器中调用父类的无参构造器。当父类没有无参构造器时,必须显式调用父类的有参构造器。3、可以在构造器的第一行加上super去调用父类构造器(显式的)。当显示调用后不会再隐式调用(跟自动生成的构造器同理,有显式调用时不会再隐式调用)。...
2021-02-24 18:15:49 372
原创 [Java基础] 3、java.util.logging的Logger的使用原理
文章目录1、测试代码2、使用原理2.1、Logger.getLogger2.2、LogManager.getLogManager()获取LogManager.manager。2.3、LogManager.demandLogger2.4、LoggerContext.addLocalLogger2.5、Logger.info的使用1、测试代码package log.JDKLog;import java.util.logging.Logger;public class Test { publi
2021-02-24 12:11:18 260
原创 Spring的@AliasFor原理
文章目录1、@AliasFor2、原理2.1、定义使用AliasFor的注解2.2、使用2.3、源码解析2.3.1、AnnotationUtils#getAnnotation2.3.2、AnnotationUtils#synthesizeAnnotation2.3.3、AnnotationUtils#synthesizeAnnotation(annotation,annotatedElement)2.3.4、SynthesizedAnnotationInvocationHandler处理器源码1、@Ali
2021-02-23 19:04:30 1057
原创 [JAVA] 操作系统作业调度实现
文章目录先进先出最短任务优先最高响应比优先代码实现先进先出直接根据等待时间调度任务。当任务被加载后,最先加载进来的最先调度。最短任务优先直接根据服务时间调度任务。当多个任务在加载队列中,查询最短服务时间的任务先调度。最高响应比优先根据等待时间和服务时间调度任务。响应比:(等待时间 + 服务时间) / 服务时间当多个任务在加载队列中,查询响应比最高的任务先调度。代码实现package job;import java.math.BigDecimal;import java.math.M
2020-11-30 11:25:20 928
原创 [JAVA基础] 2、ArrayList源码分析
文章目录ArrayList继承图ArrayList相关属性构造器ArrayList继承图直接继承了AbstractList抽象类,实现了RandomAccess,Serializable,Cloneable接口AbstractList:对List接口的简单部分实现。RandomAccess:标识类是否可以随机访问。Serializable:标识类是否可以序列化与反序列化,实现了Serializable接口的类可以被ObjectOutputStream转换为字节流,同时也可以通过ObjectInpu
2020-11-26 16:52:06 103
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人