- 博客(87)
- 资源 (5)
- 收藏
- 关注
原创 jvm常见问题模拟以及解决方式
更多文章请关注微信公众号《短腿哥哥》最近公司推出技术培训任务,同事大多讲理论,在项目实践上使用较少。因此我从实践出发,总结jvm常见问题,以及给出解决这类问题的方式,汇集成一篇文章推送给大家。第一列为进程PID,第二列为进程名。jinfo -flags PID -- 根据pid查看该java进程所有的参数,-D为自定义参数,从图中可得,该服务年轻代使用ParNew垃圾收集器,老年代使用CMS垃圾收集器。
2023-03-30 11:25:19
440
原创 归并排序-- 自顶向下和自底向上(优化版)
思路参考来源图解算法:自顶向下与自底向上的归并排序 - 芳仔小脚印 - OSCHINA - 中文开源技术交流社区 private static int[] temp = null; public static void main(String[] args) { int[] arr = new int[]{9,2,3,4,1,5,6,7,4}; temp = new int[arr.length]; sort(arr);
2021-12-19 21:08:15
319
原创 Nettry中的工厂模式
netty中的io.netty.channel.ReflectiveChannelFactory用于创建继承io.netty.channel.Channel的子类,见下图。io.netty.channel.ReflectiveChannelFactory代码如下所示:public class ReflectiveChannelFactory<T extends Channel> implements ChannelFactory<T>{ priate final Cla.
2020-10-08 23:57:30
416
原创 JUC常见工具类(笔记)
ConditionCondition是一个多线程协调通信的工具类,可以让某些线程一起等待某个条件(condition),只有满足条件时,线程才会被唤醒。Condtion在lock.lock()以及Lock.unlock()方法体里面。Condition主要方法:condition.await()、condition.signal()、condition.signalAll();。Condtion调用await()方法后会释放锁。CountDownLatchcountDownLatch是一个同步
2020-09-06 13:03:54
298
原创 mybatis调用代码对象方法,执行SQL
##mybatis调用代码对象方法,执行SQL```mermaidsequenceDiagramMapperProxy(对接口进行代理)->>MapperMetho(处理参数,选择session方法):invoke()MapperMetho(处理参数,选择session方法)->>DefualtSqlSession(通过接口方法,调用执行器):execute(sqlSession)DefualtSqlSession(通过接口方法,调用执行器)->>Defual.
2020-08-22 21:41:33
610
转载 Mybatis四大对象生命周期(笔记)
publci void testMapper() throws IOException{ String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);}
2020-08-19 22:59:53
346
原创 Spring5的新特性
Spring5的新特性升级JDK8,J2EE7反应式的编程全面支持注解编程支持函数式编程全面支持REST风格配置对HTTP2.0全面支持Kotlin和Spring WebFlux可以直接使用Lambda表达式来注册BeanSpring Web MVC全面最新的Servlet APIJUnit5直接执行并发测试丢弃Hibernate3/4,只支持Hibernate5,对Portlet\Velocty\XMLBeans,JDO,Guava终止支持。Spring核心容器做了一些更新@Nu
2020-08-16 17:08:58
170
原创 happens-before的法则
内容来源于《JAVA并发编程实践》Java存储模型的定义是通过动作(actions)的形式进行描述的。所谓动作,包括变量的读和写、监视器加锁和释放锁、线程的启动和拼接(join)。JAVA存储模型(JMM)为所有程序内部的动作定义了一个偏序关系,叫做happens-before。要保证执行动作B的线程看到动作A的结果(无论A与B是否发生在同一个线程中),A和B之间就必须满足happens-...
2020-05-02 21:55:21
210
原创 JDK动态代理的原理
资料来源于网上JDK动态代理实际上是生成一个新的类,将增强和被代理类方法的代码加入到新的类中。原理:1.拿到被代理类的引用,并且获取它的所有的接口(反射获取)2.JDK Proxy类重新生成一个新的类,实现了被代理类的所有接口的方法。3.动态生成JAVA代码,把增强逻辑加入到新生成代码中。4.编译生成新的JAVA代码的class文件。5.加载并重新运行新的class,得...
2020-04-27 23:52:59
206
原创 Executors的四种连接池
文章摘抄于《Java并发实战》121页线程池概念 正如名称中所称的那样,线程池管理一个工作者线程的同构池(homongeneous pool)。线程池是与工作对列(wore queue)紧密绑定的。所谓工作队列,其作用是持有所有等待执行的任务。工作者线程从工作队列中获取下一个任务,执行它,然后回去继续等待另一个线程。 在线程池中执行任务线程,这种方法有很多“每任务每线程”无法比拟的优势。重用...
2020-03-22 23:44:39
319
原创 java使用ECC密钥长度为256的非对称加密算法案例
介绍椭圆曲线密码学(英语:Elliptic curve cryptography,缩写为ECC),一种建立公开密钥加密的演算法,基于椭圆曲线数学。椭圆曲线在密码学中的使用是在1985年由Neal Koblitz和Victor Miller分别独立提出的。ECC的主要优势是在某些情况下它比其他的方法使用更小的密钥——比如RSA加密算法——提供相当的或更高等级的安全。ECC的另一个优势是可以定...
2020-03-08 19:54:30
7727
6
原创 HTTP状态码
本文来源《图解HTTP》,仅用于学习和交流,如果侵权,请联系我。HTTP状态码负责表示客户端HTTP请求的返回结果、标记服务器端的处理是否正常、通知出现的错误等工作。状态码的职责是当客户端向服务器发送请求时,描述返回的请求结果。借助状态码,用户可以知道服务器端是正常处理了请求还是出现了错误。状态码如200 OK,以3位数字和原因短语组成。数字中的第一位指定了响应类别,后两位无分类。响应...
2020-02-23 22:48:33
242
原创 使用Linux和JDK命令分析JAVA哪行代码占用CPU较多(笔记)
1.先用top命令找出CPU占比最高的(找出pid)2.ps -ef 或者jps进一步定位,得知是哪个后台程序。(ps -ef | grep java )3.定位到具体线程或者代码(3.1 ps -mp 进程 -o THREAD,tid,time),主要是找出线程的tid,-m显示所有的线程,-p pid进程使用cpu的时间,-o表示用户自定义格式。4.将需要的线程ID转换为16进制...
2019-12-13 23:32:00
200
原创 test指令(笔记)
本文内容来自《鸟哥的linux私房菜》我们可以通过test -e指令查询对应的档名是否存在,但要结合&&和||才能出效果。test -e /tmp && echo "exist" || echo "Not exist"测试的标志 代表意义 1.关于某个档名的【文件类型判断】,如 test -e filename 表示存在否 -e ...
2019-12-01 13:53:25
2196
原创 部署多个springboot服务到外置的tomcat中
windows配置tomcat参考链接https://www.cnblogs.com/limn/p/9358657.htmlCATALINA_HOMEIDEA配置外置tomcat将项目的打包方式从jar包改成war包,<packaging>war</packaging> <groupId>com</groupI...
2019-11-23 20:32:11
475
原创 awk笔记
笔记来源:鸟哥的linux私房菜awk倾向于将一行当中分成数个【字段】来处理。因此,awk相当适合处理小型的数据处理。而sed常常用于一整行的处理。他运作的模式是这样的:awk '条件类型1[动作1] 条件类型2[动作2]...' filenameawk后面接两个单引号并加上大括号{}来设定想要对数据进行的处理动作,awk可以处理后续接的文件,也可以读取来自前个指令的standa...
2019-11-17 00:30:27
133
原创 基础正规表达式笔记
笔记来源于《鸟哥的linux私房菜》语系的数据会影响到正规表达法的输出结果,文件其实记录的仅有0与1,我们看到的字符文字与数字都是透过编码表住哪换而来的,由于不同语系的编码数据并不相同,所有就会造成数据获取的结果差异。举例来说,在英文大小写的编码顺序中,zh_TW.big5及C这两种语系的输出结果分别如下:LANG=C 时:0 1 2 3 4 ...A B C D....Z a...
2019-11-10 16:23:56
254
原创 bash按键笔记
笔记来源:鸟哥的linux私房菜组合键 功能与示范 [ctrl]+u 从光标处向前删除指令串 [ctrl]+k 从光标处向后删除指令串 [ctrl]+a 让光标移动到整个指令串的最前面 [ctrl]+e 让光标移动到整个指令串的最后面 变量设定方式 说明 ${变量#关键词} 若变量内容从头开始的数据符合【关键词】,则将符合...
2019-10-27 00:06:07
170
原创 vi按键说明(笔记)
笔记来源:<鸟哥的linux私房菜>第一部分:一般指令可用的按钮说明,光标移动、复制贴上、搜寻取代等移动光标的方法 h或向左箭头键(<-) 光标向左移动一个字符 j或向下箭头键() 光标向下移动一个字符(30j向下移动30列) k或向上箭头键() 光标向上移动一个字符 l或向右箭头键() 光标向右移动一个字符 [Ctrl]+[f]...
2019-10-22 23:00:29
401
原创 SpringBoot Cache笔记
SpringBoot Cache是将方法运行的结果进行缓存,以后再要用相同的结果,直接从缓存中获取,不用调用方法;CacheManager管理多个组件,对缓存中真正的CRUD操作是在Cache组件中,每一个缓存组件有自己唯一的名字;几个属性: cacheNames/value:指定缓存组件的名字; key:缓存数据使用的key,可以用它来指定,默认是使用方法...
2019-10-20 11:37:45
224
原创 Windows使用Cygwin编译redis以及手动安装GCC
对这个连接https://blog.youkuaiyun.com/johnf_nash/article/details/51794003做补充1. 安装Cygwin从Cygwin官网下载安装程序,下载完成后双击开始Cygwin进行安装。一直点击下一步,直到出现软件包管理界面,如下: ...
2019-10-10 22:44:54
726
原创 Java虚拟机(笔记)
MinorGC的过程:1.eden、SurvivorFrom复制到SurvivorTo,年龄加1。首先,当Eden区满的时候会触发第一次GC,把还活着的对象拷贝到SurvivorFrom区,当Eden区再次触发GC的时候会扫描到Eden区和From区域,并对这两个区域进行垃圾回收,经过这次回收后还存活的对象,则直接复制到To区域(如果有对象的年龄达到了老年的标准,则赋值到老年代区),同时把...
2019-10-06 23:43:10
107
原创 死锁编码以及定位分析(笔记)
死锁含义:死锁是指两个或两个以上的进程在执行过程中因争夺资源而造成的一种互相等待的现象。若无外力干涉,那它们都将无法推进下去,如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。产生死锁的主要原因:1.系统资源不足;2.进程推进的顺序不合适;3.资源分配不当;package com.atguigu.springb...
2019-10-06 16:35:46
166
原创 SpringBoot配置druid笔记
1.首先引入druid的jar包,如:<!--引入druid数据源--> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.9</version>...
2019-09-23 23:20:03
216
原创 线程池笔记
资源来源尚硅谷视频,侵权删。线程池做的工作主要是控制运行的线程的数量,处理过程中将任务加入队列,然后在线程创建后启动这些任务,如果先生超过了最大数量,超出的数量的线程排队等候,等其他线程执行完毕,再从队列中取出任务来执行.他的主要特点为:线程复用:控制最大并发数:管理线程.第一:降低资源消耗.通过重复利用自己创建的线程降低线程创建和销毁造成的消耗.第二: 提高响应速度.当任务到...
2019-09-22 23:16:00
122
原创 生产者消费者阻塞队列版(笔记)
首先我们了解BlockingQueue的核心方法:方法类型 抛出异常 特殊值 阻塞 超时 插入 add(e) offer(e) put(e) offer(e,time,unit) 移除 remove() poll() take() poll(time,unit) 检查 element() peek...
2019-09-19 22:23:46
216
原创 传统生产者消费者笔记
传统的生产者消费者模型:一个生产者 一个消费者,当生产者3一个时,消费者消费一个。package com.java.thread;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLo...
2019-09-18 23:28:24
145
原创 使用java自带的sercurity包解析x.509证书字符串
背景:本来是使用某个公司的jar包解析x.509证书,但他的包被扫描的时候却发现了很多安全漏洞,所以要使用其他方式对x.509证书进行解析,我解析的是前端传过来的一个字符串,类似于这样的“MIICMjCCAZsCCQD3/xw1j77JATANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJD”,据网上说,x.509的文本其实是这样的-----BEGIN CERTIFICAT...
2019-07-26 19:14:45
2368
原创 easyExcel设置单个单元格(颜色)样式
背景:需求是使用excel设置目标单元格的样式(颜色),但我之前没有学过easyExcel,在网上找资料的时候,发现有关easyExcel相关的单个单元格样式设置的资料比较少,有的还源码不全,只能说用来参考。我的代码很多一部分是借鉴这个博客的https://blog.youkuaiyun.com/abc20090208/article/details/89054599,但他没有设置颜色,需要设置颜色还需要找其...
2019-07-26 19:01:32
39287
6
转载 Java注解
原文链接:https://www.yiibai.com/article/detail/8350Java注解用于为Java代码提供元数据。作为元数据,注解不直接影响你的代码执行,但也有一些类型的注解可以用于这一目的。Java注解是从Java5开始添加到Java中。1. 什么是注解Java注解用于为Java代码提供元数据。作为元数据,注解不直接影响你的代码执行,但也有一些类型的注解实际上可...
2019-07-02 22:19:11
265
转载 svn学习总结
背景:自己以前是学的git作为自己的版本控制工具软件,但自己公司所使用的是svn,所以利用空闲时间将svn粗略的学了一遍,在此特意将学习结果进行总结。本文章是根据网上文档进行总结,仅用于个人学习。svn是一款实现版本控制的工具软件,他的特点主要有:1.目录版本控制。2.原子提交(要么完全进入版本库,要么一点都没有)。3.版本控制的元数据。4.可选的网络层。5.一致的数据处理。6.高效的分支和标...
2019-07-01 22:30:49
396
原创 android通过发送http请求与java后端进行响应
背景:最近有同学需要服务端和安卓进行交流的需求,我在大二的时侯也在想java和安卓端是如何交接的,但因为当时水平有限,所以没能解决,也是一直把这件事情埋在心中,如今也在网上找到了一种方法,这种方法是用http请求进行交流,但是原来的博主一些细节没有交代清楚,我也踩了一些坑。不过原博主的代码还是挺好的,有需求的朋友可在原代码上进行拓展,如连接数据库、将数据显示到网页上。解决了安卓和java服务端的交...
2019-05-08 16:45:23
4798
3
原创 百度api使用方法(java、js)
自己的项目使用到了百度地图api,我就论我使用到的部分进行说明。首先我们先了解几个网站http://lbsyun.baidu.com/ 这是百度地图开放平台首页 http://lbsyun.baidu.com/index.php?title=jspopular/openlibrary 这是javascript对接百度地图api的首页 http://lbsyun.baid...
2019-04-17 13:17:51
1370
原创 输入法跟在idea输入光标旁边
用过idea的人应该知道这款软件很好用,我印象最深的是可以自动保存代码,不过使用idea的时候有一个缺点,就是我用系统自带的输入法软件时,输入法显示的信息是在屏幕的右下角。这个导致了打字就慢了很多,眼睛一次看不过来。解决方法就是下载一个华宇拼音输入法,亲测有效。另外就是作为一个程序员,实在忍不住电脑屏幕的辐射,我就是用杀毒软件使用软件降低蓝光和买了一个防疲劳和防蓝光的电脑屏幕保护膜,这个保护膜...
2019-04-11 16:55:37
565
原创 Springboot发送邮件
因为自己毕业设计需要用到邮件发送和接收功能,所以打算记录一下如何使用springBoot来发送邮件。此文章思路来自于慕课网关于springboot发送邮件,相当于笔记。首先我们来了解一下关于邮件的一些协议。简单邮件传输协议 (Simple Mail Transfer Protocol, SMTP)是在Internet传输email的事实标准。SMTP是一个相对简单的基于文本的协议。在其之上...
2019-03-26 11:59:57
575
原创 基数排序(java)
在网上找基数排序的时候发现一个博主有点小bug,那就是把我这个数组输入,他会出现错误,原因是当个位是在数组中的时候,例如这里的3,2,他排序的时候会先输出3,2而不是2,3。他没有处理好n的关系,前面讲解挺好的,https://blog.youkuaiyun.com/u011863767/article/details/53912543这个是他的链接,等我有时间的时候,我再补充一下。public cl...
2019-03-20 20:44:23
425
原创 堆排序(Java)
网上有些代码是错误的,我调试改了下,我运行结果正确,如果有错误,可以评论,思路过段时间上传。package io;import java.io.*;public class Example14 { public static void main(String[] args) { int[] a=new int[]{9,8,6,122,65,90,798};...
2019-03-06 20:29:07
181
原创 定点数和浮点数的区别(Java)
首先我们了解定义:定点数:计算机中采用的一种数的表示方法。参与运算的数的小数点位置固定不变。浮点数:浮点数是属于有理数中某特定子集的数的数字表示,在计算机中用以近似表示任意某个实数。具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学计数法。我们先看一个例子:System.out.println("6.52-6.22=...
2019-01-05 15:28:40
3794
原创 通过Java虚拟机理解String s=new String("abc");创建几个对象
以前看java虚拟机的知识的时候都是零零散散看的,这段时间刚好自己可以有很多的时间做自己的事情了。所以抽空把《深入理解Java虚拟机》看完了。这本书讲了Java虚拟机是如何改善代码的,以及我们写的代码在虚拟机上运行的时候会发生什么,总结的一句话就是可以让我们通过现象看到本质,让我们写代码的时候不仅仅是做一个API小王子,也可以在写代码的时候优化程序,最大的感触就是多看看一些比较出名的书,比很多入门...
2018-11-10 15:39:41
751
原创 可以收藏的一些网站
http://www.java1234.com/a/javabook/javabase/2013/0825/645.html这个是一个可以查找各种电子书的网站,很实用,不过有钱的话,最好支持原创,给作者一些动力。https://www.processon.com/diagrams这是一个在线画图工具...
2018-10-29 18:02:52
486
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人