自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

茄子的博客

生命不息,学习不止

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

原创 通俗易懂HashMap为何喜欢2的倍数扩容,(数组容量是2的次幂)

aa

2020-04-03 16:15:16 2738 7

原创 带宽与并发数

如有转载请注明出处哦!目的:做并发测试的时候,我们要根据自己的带宽看看网络能承受我们每秒到底能发送出多少个数据包,本篇博文是,介绍带宽与我们每秒最多发送的数据包的关系先说推出的结果 并发数= 带宽(Mb)*67.2/数包大小(KB) //注意这里的带宽 Mb ,发送出的数据大小单位是KB下面为推到过程:首先要分清一下单位一个字节的等于八个位,位就是我们常说的二进制...

2019-01-05 15:17:39 16063 3

原创 随笔篇-操作系统的int80

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2022-03-04 14:58:01 1240

原创 dnsmasq搭建

rpm 包下载:链接: https://pan.baidu.com/s/1m3CRYY59-Un8Tnrcsnru5w 提取码: du5vrpm安装:rpm -ivh nettle-2.7.1-8.el7.x86_64.rpmrpm -ivh dnsmasq-2.76-16.el7_9.1.x86_64.rpmyum 安装yum install -y dnsmasq1 vim /etc/dnsmasq.conf修改以下内容resolv-file=/etc/resolv.dnsmasq.co

2021-12-07 10:34:12 908

原创 离线安装ntp

搭建ntp

2021-12-07 10:01:25 3929 3

原创 随笔记录之---maven版本管理(dependencyManagement,import)

前言原来以为看懂了某些知识,但实践的时候发现并不是一回事,例如maven 这个工具,dependencyManagment介绍前先说,没有这个东西的时候产生发问题 ,大家都知道maven 的父子工程目的是为了,像代码一样抽出公共部分的内容,放到父类里,减少重复的代码,maven 多个依赖 例如 dependency 管理的版本有,(整个项目里,业务人员不用关心自己的版本,由框架组统一定好版本,每个业务维护好自己的版本,每个业务只要有dependcyManagment 即可,并且这个通常在 父p

2021-10-25 22:35:10 811

原创 demo篇---同一个用户开启多个webSocket连接

目的:一个用户下建立多个连接,例如:一个用户开启多个网页,每个网页都建立一个socket连接。最终表现:用户的多个页面,能收到统一的消息:具体使用方式:前端客户端页面使用 http://www.websocket-test.com/ 与项目建立连接,充当web客户端注意下图的红框中是我们服务段地址,其中 /websocket/fjp 是我们服务端注解里的@ServerEndpoint("/websocket/{userId}"){userId} 类似于SpringMVC中的 @

2021-09-27 20:31:25 11710 2

原创 随笔篇----比特的传输

琐碎的知识又增加了,这是我觉的比较有意思的科普,解开了一些生活中的小疑问。例如:电话,网页,电视,这些信号怎么传递的。人们怎么就成了千里眼,顺风耳。本文目的为,简单科普我们生活周围的信息是如何传递。如果学过通信的朋友可以略过啦哈。关键词: ADSL ,同轴电缆,光纤1 比特介绍举两个古老的信息传递的例子,古时长城的烽火狼烟,或者以烟花为信号,人们根据事先约好的规定,收到什么样的信号,表达某种含义,在近代,例如:摩斯密码,人们通过短音来代表”点“,长音来代表“短划线”,通过这种组合表达暗语,例如 ··

2021-09-26 21:59:16 1782 2

原创 随笔之---maven的知识

1 maven-metadata.xml 这个文件是干嘛的2 setting 中 * 是啥表示所有依赖仓库的获取 走 这里 例如:任何仓库的请求 都被转到 下面的地址, 如果 不是* 是central则关于 中央仓库的请求会转到 下面的地址...

2021-09-24 14:08:43 117

原创 算法篇--链表求和

问题描述给两个链表,每个链表为一个整数的倒序,如下:1 - 2 - 34 -5 - 7- 9两个数字的结果:321+9754= 10075那么! 请得到 链表的结果为 5 - 7 - 0 - 0 - 1思考思路总结: 两个链表肯定有一个最长的(等于情况取哪个都行),所以两个链表相加时候就用 短的限制循环边界,跳出循环后则 遍历长的 相加几点注意:1 每两个节点相加时,也要加 上一次的进位信息2 当长的链表遍历后,注意进位信息的处理代码

2021-09-02 14:56:41 597

原创 idea 无法编译,错误: 找不到或无法加载主类

记一次普通java 项目的无法编译报错 找不到或无法加载主类

2021-08-26 10:58:42 207

原创 记一次idea莫名其妙报错找不到依赖问题

背景idea 里有个工程基本 上天天用,突然有一天工程里的maven 依赖列表里,显示依赖找不到,而且有的java 类里显示 import 类不存在,报红色。但是但是,我根本就没有更改任何代码!!!!也没有改依赖,我认为这是idea 的bug。解决 办法将现有代码提交git ,保存好 ,然后:1 在本地通过git CMD 窗口再次 git clone 重新拉一份代码。2 修改idea ,菜单栏中的 File---->Other Settings----->Setting f

2021-08-16 14:05:53 3075 2

原创 钢铁打工人的自我修养,成为一名合格的打工人,自己的工资自己算。(2020年度个人所得税算法)

钢铁打工人的自我修养,自己的工资自己算。怎么算,该补还出是该退?退?补?问题的产生:补税情况(你要交钱 ):税务局根据你的公司在6月份给你,上报的薪资,来确定你将来12个月内的税率,所以如果在6月份后,你张工资了,应该增加税率,多扣你的税,但是税务局统计的时候,依然按照你6月份的工资水平的税率扣税。所以少扣了。到时年度汇总要补税了…退税情况(返给你钱):**其实一般在北京的年轻人主要是 通过住房租金来减少扣税。假如你的年度薪资是12万,而住房租金每月2000元,实际住了10个月缴费20000元,

2021-08-16 11:28:08 150

原创 希尔排序图解与代码

前言今天是学习排序算法的最后一个,小计一下,内心已经没有最初的畏难情绪,和排斥学习,信心在增强,一开始觉的很难,但是当过了某个点以后,特别是过了归并排序,快排后,觉得适应了很多,当然也可能是排序算是基础的算法,不管怎样后面加油吧。算法介绍希尔排序(Shell Sort)是插入排序的一种算法,是对直接插入排序的一个优化,也称缩小增量排序。希尔排序是非稳定排序算法。希尔排序因DL.Shell于1959年提出而得名。算法思想先用白话说描述,先排个大概近似的,有序数列,然后再次基础上在细分,排个近似有序

2021-08-13 11:41:22 824 1

原创 基数排序图解与代码

适用范围与背景前几天写了,计数排序,刚好学习基数排序,我认为基数排序是计数排序的一个补充或者说延伸,因为计数排序不适合,数列元素间差值较大的情况,而基数排序就解决了此情况,它适用于大整数排序。算法思想不像传统排序算法,两个元素间相互比较大小,进行排序,而是通过数列索引天然有序的特性来排序。一图胜千言:每一位的比较,都保留了上一次比较的结果,例如说: 当比较百位时, 那么前两个次 ,个位,和十位的比较的结果不会被破坏,可以看第三列,的结果所有百位以下的数字,是有序的。核心代码 @Test

2021-08-12 11:52:22 199

原创 计数排序动漫与代码

从复杂度较高的,冒泡排序,选择排序,插入排序(不包含二分插入排序) ,这些时间复杂度为 O(N^2) 的排序,再到归并排序,快速排序,堆排序, @Test public void counrtSort () { int[] arr = {2, 11, 1, 8, 7, 18, 18, 6, 5, 3, 20, 4}; System.out.println(Arrays.toString(arr)); int max = arr[0];

2021-08-11 09:33:10 96

原创 桶排序动态图与代码

感谢:https://www.geeksforgeeks.org/fundamentals-of-algorithms/?ref=shm#SearchingandSorting计数排序不能解决当数字有,小数的情况,但是桶排序算法做出了弥补。步骤实现:创建桶将元素放入桶每个桶里的元素,做好排序遍历所有桶,放入到结果数组中步骤实现的关键点通常情况下被排序的数组有几个元素我们就建几个桶元素怎么确定放入第几个桶,通过元素值*桶数 例如: arr[i] 放入桶里哪个同理? index

2021-08-09 19:55:23 956

原创 归并排序动态图与代码

感谢: https://www.bilibili.com/video/BV1Ma4y1n7E2?from=search&seid=18386669306238899564采用分治的思想,递归调用,把复杂的逻辑,留个计算机去实现。 @Test public void test10() {//归并 int[] arr = {2, 11, 1, 8, 7, 18, 9, 0, 6, 5, 3, 20, 4}; int[] temp = new int[ar

2021-08-05 21:00:20 163

原创 选择排序动图与代码

顾名思义: 每次都选择一个最小(或最大),并依次在整个循环里比较,找到最小(或最大),叫选择排序 @Test public void choiceSort() { int[] arr = {2, 11, 1, 8, 7, 18, 9, 0, 6, 5, 3, 20, 4}; for (int i = 0; i < arr.length; i++) { int min = i; for (int j = i;

2021-08-05 20:33:18 94

原创 冒泡排序动态图与代码

两个两个比较,直到没有数可以交换的时候结束这个数,再到下个数,直到整个数组排好顺序。因一个个浮出所以叫冒泡排序。双重循环时间 O(n^2) @Test public void test2() {//冒泡int[] arr = {2, 11, 1, 8, 7, 18, 9, 0, 6, 5, 3, 20, 4}; for (int i = 0; i < arr.length - 1; i++) { for (int j = 0; j < ar

2021-08-05 20:13:25 354

原创 插入排序动态图与代码(二分插入与普通插入)

普通插入排序核心思想:脑海里要有个虚拟数组,从做往右,是个排好序的。具体做法,从第二个数字开始,每个数字都试图跟它前一个比较并做交换,并重复这个动作,直到前一个数不存在,或者,比他小,或者相等的时候停下来。 @Test public void insertSort(){ for (int i = 0; i < arr.length; i++) { int temp = arr[i]; for (int j = i-1

2021-08-05 20:02:26 535

原创 log4j2源码解析(2.2版本)

目的搞懂下面这两行代码到底是怎么打印出日志的private static final Logger logger=Logger.getLogger(Log4j2Test.class);logger.info(“log4j info”);完整代码如下public class Log4j2Test { private static final Logger logger = LogManager.getLogger(Log4j2Test.class); public static v

2021-07-20 22:41:43 1767 5

转载 随笔之-UML转载总结

感谢:https://www.cnblogs.com/owenzh/p/11206335.html聚合: 班级由学生组成,强依赖的特殊聚合关系,如果总体不在了则部分也不存在了, 上图表示含义,如果班级不存在了,则学生也不存在了组合: 小汽车由,轮胎和发动机组成,如果总体 不在了,但是部分还可以存在,上图含义,如果小汽车不在了,则轮胎和发动机依然存在。依赖: 学生对象里面有,自行车对象的引用。描述一个对象在运行期间会用到另一个对象的关系关联:关联关系默认不强调方向,表示对象间相互知道,**它描述

2021-07-13 15:55:14 56

原创 log4j打印日志源码浅析

并不存在一些行为和习惯会比其他的行为和习惯更有意义,很多观点是大部分人一致认为那是有意义的。人要活出自己,对未来充满希望,积极面对人生。不要嫌弃与我行为,认知,和感受不同的人,我会保持自己的生活方式,即使自己不能接受其他人相反的方式,但并不妨碍我去理解并尊重与我不同的人,而且真心为他们的快乐而感到开心和祝福目的搞懂下面这两行代码到底是怎么打印出日志的private static final Logger logger=Logger.getLogger(Log4jTest.class);logger

2021-07-08 23:59:34 246

原创 jdk日志的实现

感谢链接:https://blog.csdn.net/qingkangxu/article/details/7514770?spm=1001.2014.3001.5501术语介绍LogManager:整个JVM内部所有logger的管理,logger的生成、获取等操作都依赖于它,也包括配置文件的读取。LogManager中会有一个Hashtable【private Hashtable<String,WeakReference> loggers】用于存储目前所有的logger,如果需要获

2021-07-08 18:43:16 227

原创 随笔之---java版本哲学家就餐问题【信号量的实现】

很喜欢这样的描述如果你喜欢也不防读一读 从许多许多年前,石头就呆在那座岭上了。△↗那是座无名的低岭,毫不起眼,没有足以称道的风景名胜,那块石头只是许多石头中的一颗,见证过日升日落,经历过沧海桑田,承受四季变迁。黄河水数度从它的身上淹没而过,人群在周围来来去去时,放牛的孩子偶尔也在它的身上歇脚。在许久许久的光阴里,它都没有挪动过位置了可以收获:对线程间的同步互斥有更深的理解。对问题的解决如何抽象到具体转为一个具像的代码流程梳理。这很重要!!例子可以直接跑起来,直接copy!问题描述:哲学家

2021-07-05 00:14:07 542

原创 随笔--实现一个对象池,例如线程池使用信号量

package com.mytest.semaphore;import java.util.LinkedList;import java.util.concurrent.Semaphore;/** * @ClassName: TestSemaphore * @Description: * @Author fjp * @Date 2021/7/1-9:53 * @Version 1.0 */public class PoolSemaphore<T> { priva

2021-07-01 22:12:38 86

原创 随笔---信号量实现,读共享,读写互斥,写写互斥,读优先,锁模型

class ReadWriter{ int Rcount=0; Semaphore WriteSem = new Semaphore(1); Semaphore ReadSem = new Semaphore(1); Data data;//数据public void writerMethod(data){ WtireSem.wait()}}

2021-07-01 16:10:06 114

原创 感悟--学习一个新东西

总结学习一个新东西:当学习更高的层次的东西,看原来之前学过的东西觉的不在难【最开始学习jsp标签,nginx 使用】原因是,没有站在高纬度视角,不知道我站在哪里,本以为是个大山,其实是就是山谷中一棵大树上的一片页里的细节脉络以下按照顺序来摸索心里建设,心里一定不要有畏难情绪,并且要有蔑视技术的心里,缩小他在心中的难度。他是什么?在计算机广大体系中哪个位置?要理解重要的概念才能更容易接受。怎么用?...

2021-06-30 10:28:03 140

原创 随笔之---基于信号量实现,生产者与消费者模型

Class BoundedBuffer{ mutex = new Semaphore(1); hasBuffer= new Semaphore(n);// 有n个空buffer 用来装数据 hasData= new Semaphore(0);//记录有数据的buffer个数}// 生产者数据c 存到bufferBoudedBuffer::Deposit(c){ hasBuffer->P(); //-- 要不要等?有空buffer 才能生产数据,没有就等待, 使用一个bu

2021-06-29 15:25:33 105

原创 User-agent往事

http 请求头里的User-agent这个是什么鬼!!!!! 天书嘛…user-aget:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.106 Safari/537.36下面开始 User-agent的历史往事…主角Mosaic /məʊˈzeɪɪk/ 第一个支持图片的浏览器本来仅仅是 为了,client 为了告诉 server 浏览器类

2021-06-24 10:40:25 170

原创 java处理图片失真的问题-水印-裁剪-压缩

问题描述: 某些图片,的背景色是透明,但是java 处理后,可能变黑色,其实问题原因就是失真啦!!!解决办法 BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);// 获取bufferedImage对象 Graphics2D g2d = image.createGraphics(); // 下面两行解决png透明图片会变黑的问题 i

2021-06-02 17:02:10 1066

原创 java itext水印错误 class org.bouncycastle.asn1.ASN1Primitive

java itext水印错误 class org.bouncycastle.asn1.ASN1Primitivejava.lang.VerifyError: class org.bouncycastle.asn1.ASN1Primitive overrides final method equals.(Ljava/lang/Object;)Zat java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.8.0_271] at java.lang

2021-05-31 22:08:11 3612

原创 4https-原理

在时代这座大山面前,个人的身影是那么的渺小,两人好像变了许多,又好像什么都没变文章目录1 http的缺点2 加密算法2.1 对称加密2.2 非对称加密算法的实现的思路公钥加密私钥解密2.3 ca的诞生ca如何生成证书数字签名生成证书的步骤如何验证证书3 SSL和TLS4 https交换整体流程1 http的缺点通信使用的是明文网络传输中,可能被攻击人,篡改。不验证身份,所以不论是client 还是server 都会有人伪装。这里插一张图大家之间感受一下,网络传输的过程,原

2021-04-27 22:22:03 521

原创 随笔篇之------为啥32位系统他的存储最大是4G

今天早早起来,因为驾校要考科目一,我内心竟然有些小紧张,晚上睡觉的还醒了两次,看了手机两点多,又翻身睡去。昨天看了操作系统原理课,陈愈老师说 16位的系统有 64KB的地址空间,我一时没有反应过来,?很纠结这个问题,然后问了早上一起同考的同事,他说了一句 就像为啥 32 位系统 最大支持 4GB 内存。他说的让我似懂非懂。但是就在刚刚,突然想通了 ( 现在已经晚上10点了),我真是个死脑筋呀,之所以称为32 位系统,cpu是32位的,所以称为32位操作系统, 而地址总线也是32位,那自然是2的.

2021-04-22 23:44:05 276

原创 精简的LRU

hashMap + 双链表 实现注意:最巧妙在于 首尾节点,用一个无用的 节点,占位,(其实在AQS的队列里,就是这样的)好处是,当移除或者新增加节点时,程序不用考虑 首节点和尾节点的特殊情况,全部按照中间节点来操作。你品!你细品,!!!package com.leetcode.LRU;import lombok.Data;import java.util.HashMap;import java.util.Map;/** * @ClassName: LRUCache4 *

2021-04-10 11:50:31 46

原创 经典语录

《深入理解计算机系统》一书中提到:“指令集是对CPU的抽象, 文件是对输入/输出设备的抽象, 虚拟存储器是对程序存储的抽象, 进程是对一个正在运行的程序的抽象, 而虚拟机是对整个计算机(包括操作系统、处理器和程序)的抽象。 如果你对这句话透彻理解了,说明对计算机系统的认识已经很深刻了。...

2021-03-12 18:15:08 68

原创 装饰模式与代理区别

相同点:装饰者类与目标类要求实现同一接口;静态代理类与目标类要求也实现同一接口。装饰者类与静态代理类都可以实现增强目标类的功能。装饰者类与静态代理类中都具有目标类的引用,目的都是为了在其中调用目标类的方 法。不同点装饰者设计模式就是为了增强目标类;静态代理设计模式是为了保护和隐藏目标对象, 让客户类只能访问代理对象,而不能直接访问目标对象。装饰者类中的目标类的引用是通过带参构造器传入的;静态代理类中的目标类的引用, 一般都是在代理类中直接创建的,目的就是为了隐藏目标对象。装饰者基类一般不对目标对象进行增

2021-03-12 10:51:47 196

原创 尾递归

记录一个妙的递归,递归次数始终用一个栈先来看,多个栈的情况 求n的阶乘int fun(int n){ if(n==1){ return 1; }else{ return n*fun(n-1); }}上面的结果会在栈顶反回,而最出的计算发生在栈底 fun(1)最终结果 432*fun(1)注意这里的 4 ,3 ,2 都需要算出来。【现在你还不理解这句话,接着看下面】下面看只用一个栈,但是每次调用还是从前的栈int fun(int n,int result)

2021-03-11 18:44:29 61

原创 总结如何用 AbstractQueuedSynchronizer实现一个同步组件

1 创建一个名字为 MyTestLock接口 implment Lock2 在 MyTestLock中 创建一个内部类 MyTestSyn 但是继承AbstarctQueuedSynchronizer3 AbstarctQueuedSynchronizer 中有y

2021-03-10 09:17:23 59

空空如也

空空如也

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

TA关注的人

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