- 博客(41)
- 收藏
- 关注
原创 实习的一些经验总结
因为dubbo传数据会有8MB的限制,并且以优化SQL为目的,所以每一条SQL都要列出每个需要查询的字段,而不是全表查询。但是需要注意需求变更的时候,可能需要新增查询的字段,记得检查有没有新添加要查询的字段,不然返回的就是一大排空数据,弄得自己百思不得其解。有大量的判断条件一定要检查有没有写错,但是能否有更好的办法来校验呢? 有待补充。...
2021-09-26 16:40:21
488
原创 随手记录,idea无法创建class,文件夹没有小圆点
原因是因为创建package的时候带有 " 、"这个符号,导致包出错,需要去掉这个符号这样就正常了
2021-07-04 21:54:18
3779
2
原创 随手记录坑
在使用spring-cloud-gateway的时候,有两个注意点pom中不要有spring-boot-starter-web的依赖client千万别写成server了否则会报错改成client即可
2021-06-29 19:25:26
468
原创 操作系统学习笔记 原来自旋锁还可以这样实现!
在java中我们知道对线程使用CAS(compare and swap)来实现自旋锁,在没有学习操作系统之前,我以为这是唯一一种方法了。但是今天学到了操作系统中的同步互斥,终于明白了原来CAS、TS、Swap这些都是硬件提供的原子操作罢了!不仅CAS可以实现自旋锁,TS(Test and Set)同样可以!临界区临界区进程中访问临界资源的一段需要互斥执行的代码进入区检查可否进入临界区的一段代码如可进入,设置相应“正在访问临界区”标志退出区清楚“正在访问临界区”标志剩
2021-06-13 19:14:50
330
2
原创 操作系统学习笔记 页面置换算法(一)
置换算法的功能和目标功能当出现缺页异常,需调入新页面而内存已满时,置换算法选择被置换的物理页面设计目标尽可能减少页面的调入调出次数把未来不再访问或者短期内不访问的页面调出页面锁定(frame locking)描述必须常驻内存的逻辑页面操作系统的关键部分要求响应速度的代码和数据页表中的锁定标志位(lock bit)页面置换算法分类局部页面置换算法页面总数是不会变化的置换页面的选择范围仅限于当前进程占用的物理页面内最优算法、先进先出算法、最近最久未
2021-06-12 20:21:29
157
2
原创 mysql 8.x通用配置
-- jdbc 数据库配置文件 mysql8 jdbc.driver=com.mysql.cj.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/test?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghaijdbc.username=rootjdbc.password=password--springspring.
2021-06-06 14:45:16
163
原创 TCP可靠传输实现的核心:滑动窗口
TCP基于以字节为单位的滑动窗口来实现可靠传输我们如何描述发送窗口的状态?使用三个指针P1,P2,P3分别指向对应的字节序号小于P1的是已经发送并已收到确认的部分大于等于P3的是不允许发送的部分P3 - P1 = 发送窗口的尺寸P2 - P1 = 已发送但尚未收到确认的字节数P3 - P2 = 允许发送但当前尚未发送的字节数虽然发送方的发送窗口是根据接收方的接收窗口设置的,但在同一时刻,发送方的发送窗口并不总是和接收方的接收窗口一样大网络传送窗口值需要经历一定的时间滞后,并且
2021-06-03 16:41:36
351
原创 IntelliJ IDEA把普通Java项目变成Maven工程
有时候创建普通工程后想再转变成maven工程来导包操作如下图所示:右击项目名称,选择Add Framework Support然后在弹出来的框中找到并勾选Maven 选择OkMaven工程就搭建完成了
2021-05-31 14:12:57
289
原创 清华大学操作系统学习笔记——第一讲 操作系统概述(一)
开始复习操作系统啦~第一讲 操作系统概述教学内容操作系统结构中断及系统调用内存管理进程及线程处理机调度同步互斥文件系统I/O子系统操作系统实验实验0:实验环境准备实验1:系统启动及中断实验2:物理内存管理实验3:虚拟内存管理实验4:内核线程管理实验5:用户进程管理实验6:CPU调度实验7:同步与互斥实验8:文件系统什么是操作系统没有公认的精确定义,操作系统的内涵随着发展是在不断变化的操作系统是一个控制程序一个系统软件控制程序的执行过程,
2021-05-28 17:07:41
200
原创 深入浅出设计模式——单例模式(Java实现)
设计模式当中的单例模式想必是大家耳熟能详的了,或多或少都有些了解,但未必了解的全,在这里我总结了一共7种设计模式,仅供大家参考。饿汉式类加载到内存后,就实例化一个单例,JVM保证线程安全简单实用,推荐使用唯一缺点:不管用到与否,类加载时就完成实例化main方法是为了测试类是否是单例public class Singleton1 { //只会初始化一次 private static final Singleton1 INSTANCE = new Singleton1();
2021-05-26 21:40:11
85
原创 可以直接回答面试官的Java常见面试题!——面向对象篇
针对面试中一些容易忘记的难点,痛点做一个小小的总结。Java面向对象思想?面向过程:自顶向下的编程模式,是一种以事件为中心的编程思想,编程的时候把解决问题的步骤分析出来,然后用函数把这些步骤实现,在一步一步的具体步骤中再按顺序调用函数。面向对象:将事务高度抽象化的编程模式。将问题分解成一个个步骤,对每个步骤进行相应的抽象,形成对象,通过不同对象间的调用,组合解决问题要把属性、行为封装成对象,然后基于这些对象和对象的能力进行业务逻辑的实现封装客观事物封装成抽象的类,并且类可以把自己的属性和方法让可
2021-05-25 20:33:32
112
原创 汇总:Redis的通用命令
key通用命令key特征key是一个字符串,通过key获取redis中保存的数据key应该涉及哪些操作?对于key自身状态的相关操作,例如:删除,判定存在,获取类型等对于key有效性控制相关操作,例如:有效期设定,判定是否有效,有效状态的切换等对于key快速查询操作,例如:按指定策略查询keykey基本操作删除指定keydel key获取key是否存在exists key获取key的类型type keykey扩展操作(时效性控制)为指定key设置有效期exp
2021-05-25 17:05:42
108
3
原创 第四、五章 Kafka高级API——生产者事务、数据同步机制
Kafka的幂等性,只能保证一条记录的在分区发送的原子性,但是如果要保证多条记录(多分区)之间的完整性,这个时候就需要开启kafk的事务操作。在Kafka0.11.0.0除了引人的幂等性的概念,同时也引入了事务的概念。通常Kafka的事务分为生产者事务Only、消费者&生产者事务。一般来说默认消费者消费的消息的级别是read_uncommited数据,这有可能读取到事务失败的数据,所有在开启生产者事务之后,需要用户设置消费者的事务隔离级别。isolation.level = read_uncom
2021-05-25 14:45:18
554
1
原创 第四章 Kafka高级API——Acks&Retries&幂等写
Kafka生产者在发送完一个的消息之后,要求Broker在规定的额时间Ack应答答,如果没有在规定时间内应答, Kafka生产者会尝试n次重新发送消息。acks=1默认acks=1 Leader会将Record写到其本地日志中,但会在不等待所有Follower的完全确认的情况下做出响应。在这种情况下,如果Leader在确认记录后立即失败,但在Follower复制记录之前失败,则记录将丢失。acks=0 生产者根本不会等待服务器的任何确认。该记录将立即添加到套接字缓冲区中并视为已发送。在这种情况下,不
2021-05-24 20:12:39
383
原创 第四章 Kafka高级API——offset自动控制
因为基础API中地生产者,消费者,自定义分区,序列化,拦截器等等都是比较基础的知识,所以我们就先略过啦~今天说的是kafka高级中的offset自动控制offset自动控制偏移量的首次消费策略第一次访问kafka服务器的时候Kafka消费者默认对于未订阅的topic的offset的时候,也就是系统并没有存储该消费者的消费分区的记录信息,默认Kafka消费者的默认首次消费策略:latestauto.offset.reset=latestearliest -自动将偏移量重置为最早的偏移量lat
2021-05-23 15:51:56
317
3
原创 第三章 Kafka基础API——Topic操作DML管理
先配置host文件 用ifconfig命令查看ip地址引入依赖<dependencies> <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>2.2.0</version>
2021-05-22 11:39:59
139
2
原创 第二章 ——Kafka环境搭建&Topic管理
环境搭建-单机安装JDK1.8+,配置JAVA_HOME(CentOS 6.10 64bit)配置主机名和IP映射关闭防火墙&防火墙开机自启动安装&启动Zookeeper安装&启动|关闭Kafka环境搭建-集群安装JDK,配置JAVA_HOME(CentOS 6.10 64bit)配置主机名和IP映射关闭防火墙&防火墙开机自启动同步时钟 ntpate cn.pool.ntp.org | ntp[1-7].aliyun.com安装&启动Zoo
2021-05-19 22:16:35
170
1
原创 第一章(2)——Kafka特性Ⅱ
顺序写入&ZeroCopyKafka的特性之一就是高吞吐率,但是Kafka的消息是保存或缓存在磁盘上的,一般认为在磁盘上读写数据是会降低性能的,但是Kafka即使是普通的服务器, Kafka也可以轻松支持每秒百万级的写入请求,超过了大部分的消息中间件,这种特性也使得Katka在日志处理等海量数据场景广泛应用.Kafka会把收到的消息都写入到硬盘中,防止丢失数据.为了优化写入速度Kafka采用了两个技术顺序写入和MMFile 。因为硬盘是机械结构,每次读写都会寻址->写入,其中寻址是一个“机
2021-05-17 19:12:19
253
5
原创 第一章(2)——Kafka特性Ⅰ
分区&日志Topics and LogsKafka中所有消息是通过Topic为单位进行管理,每个Kafka中的Topic通常会有多个订阅者,负责订阅发送到该Topic中的数据。 Kafka负责管理集群中每个Topic的一组日志分区数据.生产者将数据发布到相应的Topic。负责选择将哪个记录分发送到Topic中的哪个Partition。例如可以round-robin方式完成此操作,然而这种仅是为了平衡负载.也可以根据某些语义分区功能(例如基于记录中的Key)进行此操作。每组日志分区是一个有序的不
2021-05-14 22:19:42
192
1
原创 第一章(1)——Kafka概述、介绍以及基础架构
Kafka概述、介绍Kafka是一种高吞吐量的分布式发布订阅消息系统,它可以收集并处理用户在网站中的所有动作流数据以及物联网设备的采样信息。Apache Kafka是Apache软件基金会的开源的流处理平台,该平台提供了消息的订阅与发布的消息队列,一般用作系统间解耦、异步通信、削峰填谷等作用。同时Kafka又提供了Kafka streaming插件包实现了实时在线流处理。相比较一些专业的流处埋框架不同,Kafka Streaming计算是运行在应用端,具有简单、入门要求低、部署方便等优点。kafka包
2021-05-13 14:36:27
162
原创 数据库连接时、数据库连接池的常见问题以及解决方案
导入commons-logging.jar包即可Exception in thread "main" java.lang.NoClassDefFoundError: com/mchange/v2/ser/Indirector我们应该知道mchange-commons包是c3p0数据库连接池的辅助包,如果没有这个包系统启动时会报classnotfoundexception,这是更新c3p0-0.9.2版本后分离出来的包翻译:请注意:不建议在没有服务器身份验证的情况下建立SSL连接。根据MySQ.
2021-05-04 09:31:10
481
原创 一个适合刚学习java的小白的demo项目——简单的水果超市
水果超市系统,把水果上架,水果有价格,要能看到,然后看到所有的水果,水果价格按照从小到大,下架,能查到任何一笔水果的信息1.查询全部2.增加3.修改4.删除5.查询全部6.增加功能这是我刚学习java时学长发给我的项目了,现在发出来给大家练练手也不错。以switch语句为主体,将不同功能分离,一步步实现,可以发现增删改查各种操作中明显有着一些相通之处,可以利用这些特点把一些方法封装,使得程序更加简易。由于代码比较长,我就不贴在下面了,有需要可以私聊我~...
2021-05-02 01:48:49
1001
3
原创 Java的fail-fast机制究竟是什么?
fail-fast机制快速失败模块的职责是检测错误,然后让系统的下一个最高级别处理错误。一旦发生异常, 直接停止并上报。尽最大努力去抛出异常。这样做的好处是可以预先识别出一些错误情况,但是它同样也可能会为我们带来一些问题。集合类的fail-fast机制当多个线程对部分集合进行结构上的改变操作,有可能会产生fail-fast机制,这时候会抛出ConcurrentModificationException使用增强for循环尝试删除集合中的元素会报这个异常我们对class进行反编译,可以发现forea
2021-04-27 14:57:52
449
5
原创 面试常问:Redis的数据删除策略?
今天我们来说一说redis中的删除策略过期数据Redis的数据特征Redis是一种内存级数据库,所有数据均存放在内存中,内存中的数据可以通过TTL指令获取其状态XX:具有时效性的数据-1:永久有效的数据-2:已经过期的数据 或 被删除的数据 或 未定义的数据那么 过期的数据真的删除了吗?答案是否定的,针对时效性数据,redis有3种删除策略数据删除策略定时删除惰性删除定期删除时效性数据的存储结构在redis的存储空间中开辟出了一块expires区用于保存时效性数据
2021-04-27 14:29:17
207
原创 网络中运输层TCP协议的拥塞控制是如何实现的?
在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏。这种情况就叫做拥塞(congestion)若出现拥塞而不进行控制,整个网络的吞吐量将随输入符合的增大而下降假定如下条件:数据单向发送,接收方总是有足够大的缓存空间,因而发送方发送窗口的大小因网络的拥塞程度来决定,以最大报文段MSS的个数来讨论问题的单位发送方维护一个叫做拥塞窗口cwnd的状态变量,其值取决于网络的拥塞程度,并且动态变化拥塞窗口cwnd的维护原则:只要网络没有出现拥塞,拥塞窗口就再增大一些,但
2021-04-25 17:39:30
219
1
原创 快速排序之partition分区问题版本、netherlandsFlag荷兰国旗问题版本,三次改进以及一个常规快排版本!
今天分享的是关于快速排序的思路以及三种版本的迭代优化我们先来介绍partition问题 多图预警!! 所有的算法都经过对数器核对,可以放心使用已知一个数组arr,要求我们以随机的一个数作为标准把数组分为以下两个区域,小于等于区、大于区,可以不用考虑各区数字的排序 下例我们假设这个数为4我们设置一个小于等于区(下称≤区),它的起始位置是-1;再设置一个变量index,它指向的是第一个数然后我们从左往右遍历,当index 大于 arr.length-1 时跳出循环,有以下两种情况
2021-04-20 17:39:51
496
原创 Redis常用的5种数据类型
Redis数据类型(5种常用)字符串类型 String String列表类型 list LinkedList散列类型 hash HashMap集合类型 set HashSet有序集合类型 sorted_set TreeSetredis数据存储格式redis自身是一个Map,其中所有的数据都是采用key:value的形式存储数据类型指的是存储的数据的类型,是value部分的类型,key部分永远是字符串string类型存储的数据:
2021-04-13 10:01:04
713
原创 java后端通过url接口获取甲方数据库并转化为json
项目在对接甲方数据库的时候,需要甲方提供接口来给我方传输数据,双方规定好以json的格式传送,为此整了一个通过url获取数据并转化为json的utilimport org.json.JSONObject;import java.io.ByteArrayOutputStream;import java.io.IOException;import java.io.InputStream;import java.net.HttpURLConnection;import java.net.URL;
2021-01-09 23:32:41
625
原创 IntelliJ IDEA 为方法设计Javadoc注释模板(可解决阿里巴巴代码规范检测中方法缺少javadoc注释的问题)
注:本文中的例子以IntelliJ IDEA为例问题来源如果下载了阿里巴巴代码规范检测这个插件,大家一定经常会为这个眼熟的提示感到头疼,然而强迫症又很想把它弄好,如果手敲会很麻烦,所以博主在网上查了一下如何设置javadoc注释模板,网上大多文章有内容但不齐全,所以写一篇博客并将个人比较喜欢的一种方式分享出来。解决方案点击 File → Settings... → Editor → Live Templates2.点击右侧的+,首先选择Template Group,任意取一个名字,这里我们.
2020-12-30 16:21:07
4944
3
原创 前后端交互时,后端通过api(url)获取数据时,一定要注意的点(encode编码)
在通过甲方提供的api获取json数据时,我们一般首先会通过以下步骤来进行测试:使用postman来进行测试Postman测试通过后,在项目里写好方法用swagger或者直接在浏览器上访问测试通过测试平时我们请求类似于:http://localhost:8080/xxxx/xxxxx/xxxxx/xxxxx/%E7%84%A6%E9%A1%B56-2HFhttp://localhost:8080/xxxx/xxxxx/xxxxx/xxxxx?xxxx=%E7%84%A6%E9%A1%B56-
2020-12-23 21:13:20
595
原创 [踩坑]使用shiro-redis插件退出登录报缺少id的错
在使用shiro-redis的时候报了这个错误:org.crazycake.shiro.exception.PrincipalInstanceException: class com.baskbull.library_system.shiro.vo.AccountProfile must has getter for field: idWe need a field to identify this Cache Object in Redis. So you need to defined an id
2020-12-10 14:07:04
1353
7
原创 关于SpringBoot自动注入@Autowired的一个容易疏忽的坑
有好些天没有更新博客了,这几天忙着做项目,准备考试,等忙过这一阵继续每天一更。今天想总结的是项目中遇到的一个问题最近在做项目中关于权限验证这一块的东西,想测试一下添加数据,突然报了这个错误:着实找了我一下午,debug看源码,网上搜,一直没找到原因,后来晚上回去之后想了一下,有可能是在哪new了对象,导致它注入不进去,所以报null,对着相关的类仔细查了一下,终于发现:在给shiro配置类注入jwtFilter的时候,用的是new一个filter,难怪一直会报null的问题改为自动注入就ok了
2020-12-05 19:55:19
2584
6
原创 【剑指Offer】JZ29最小的K个数 Tag:[数组][高级算法]
这几天忙项目去啦,课也很多,所以断更了几天。JZ29最小的K个数 tag:数组[高级算法]题目描述输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4。解题思路这个题目较难,可以使用冒泡/堆排/快排等等排序算法,但是我们有比较简便的方法,直接调用Arrays的排序功能,我们再从中筛选就可以了。代码部分import java.util.*;public class Solution { public Array
2020-11-28 12:13:15
124
2
原创 【剑指Offer】JZ19顺时针打印矩阵 Tag:[数组]
JZ19顺时针打印矩阵 tag:数组题目描述输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字例如,如果输入如下 4 X 4 矩阵:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.示例输入[ [1,2] , [3,4] ]返回值[1,2,4,3]解题思路我们可以把题目抽象化为 给一个二位矩阵,顺时针螺旋打印矩阵,再结合图示,就很好理解了。
2020-11-24 18:54:52
111
原创 springboot2.3之后,hibernate-validator依赖缺失【踩坑】
springboot2.3之后,hibernate-validator依赖缺失今天在写项目的时候,发现@Blank注解没有了,检查了一下,发现老版本springboot内集成的hibernate-validator依赖已经去掉了如图,当前版本2.4.0的spring-boot-starter-web包版本2.1.3在网上查阅了一下:官方解释解决方法:在pom文件里手动加入依赖<!-- https://mvnrepository.com/artifact/org.springfr
2020-11-23 20:19:39
5429
5
原创 【剑指Offer】JZ13调整数组顺序使奇数位于偶数前面 Tag:[数组]
JZ13调整数组顺序使奇数位于偶数前面 tag:数组题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。解题思路有一个非常讨巧的方法~可以直接开辟一个辅助数组,遍历一次数组,把所有的奇数放进数组当中,再遍历一次数组,把所有的偶数放入数组当中即可。代码部分import java.util.ArrayList;public class Solution {
2020-11-23 13:58:10
172
3
原创 【剑指Offer】JZ7斐波那契数列 Tag:[数组]
JZ7斐波那契数列 tag:数组先来一段背景:斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1)+F(n - 2)(n ≥ 2,n ∈ N*)题目描述大家都知道斐波那契数列,现在要求
2020-11-22 13:58:47
133
原创 Springboot整合Quartz 达到定时任务的效果
把自己博客的内容搬运过来QuartzQuartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。Jobs可以做成标准的Java组件或 EJBs。Quartz的最新版本为Quartz 2.3.2。job做什么事trigger什么时间做scheduler在什么时间做什么事创建xxx类实现job接口(org.quar
2020-11-21 21:15:26
122
原创 【剑指Offer】JZ1二维数据的查找 Tag:[数组][查找]
以前都喜欢把自己的学习经历写在本地,今天听学长传授经验,决定开始写博客啦,最近在学算法,来上一道《剑指Offer》的题。????JZ1 二维数据的查找 tag:数组 查找题目描述在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例7,[[1,2,8,9],[2,4,9,12],[4,7,10,13],[6,8,11,15]]返回值true
2020-11-21 20:52:30
106
原创 JDK的下载、安装与环境变量的配置
JAVA学习的预备工作:JDK的下载、安装与环境变量的配置1. JDK的下载Java又称C+±,由Sun公司开发,后Sun公司被Oracle(甲骨文)公司收购。建议使用谷歌Chrome浏览器下载地址:https://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html勾选Accept Lic...
2020-01-14 20:35:04
121
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人