- 博客(28)
- 问答 (3)
- 收藏
- 关注
原创 多线程设计模式笔记
黑马程序员并发编程笔记,视频链接:https://www.bilibili.com/video/BV16J411h7Rd?p=106&vd_source=6b87171a68df46e08936aaca61ffb974
2022-08-30 00:00:56
159
1
原创 类加载器及双亲委派原则验证
一、代码准备自定义类加载器,重写findClass方法:package com.test.source.jvm.classloader;import java.io.BufferedInputStream;import java.io.ByteArrayOutputStream;import java.io.FileInputStream;import java.io.IOException;public class MyClassLoader extends ClassLoader {
2021-03-26 15:12:36
157
原创 快速排序问题探讨
什么是快速排序?在一个无序的数组中选择一个基数,将数组中小于等于基数的元素放到基数左边,将大于等于基数的元素放到基数右边,不断循环此操作,完成排序。如何实现快速排序呢?指针法排序原理找到一个基数,左右设置两个指针,右指针找到小于等于基数的元素,左指针找到大于等于基数的元素,两个元素交换位置。循环上述流程,完成排序。下面是大神博客中指针法的核心代码:private static int partition(int[] arr, int startIndex, int endIndex) {//
2020-12-09 17:06:50
292
原创 直接选择排序
简介直接选择排序和插入排序类似,都是将数组分为有序部分和无序部分。不同点在于插入排序是将无序数组的第一位插入已排序数组中,插入位置可能是有序数组的前面、中间、后面,而插入排序是找出无序数组中的最小值插到有序数组末尾。实现获取最小元素下标找到数组中指定下标之后的最小元素下标,之所以要指定下标,是因为最小元素将会放到组数前端,不能再次参与最小元素的比较://找到数组中指定下标之后的最小元素下标 public static int getMim(int[] a, int index) {
2020-12-07 16:51:30
237
原创 堆排序
简介堆排序是将一个无序的数组看作一个完全二叉树,将完全二叉树构建成为一个大顶堆(或者小顶堆),构建完成后数组的第一个元素就是最大值(小顶堆是最小值),将第一个元素移动到数组最后位置,将剩余的数据看作一个新的数组,循环上面的操作,就可以完成排序。前提知识完全二叉树任意一个节点:R[i]其左子节点为:R[2i+1]其右子节点为:R[2i+2]其父节点为:R[(i-1)/2]最后一个非叶子节点为R[n/2-1],n为数组长度。构建大顶堆我认为堆排序的核心在于构建大顶堆(或小顶堆),构建完成之后就
2020-12-07 14:20:04
110
原创 希尔排序
排序思路插入排序在数据量小、基本有序的情况下效率比较高。那么数据量大,同时基本无序的情况呢?这种情况可以进行分组插入排序:根据特定步长将数组分为多个逻辑分组,对每个逻辑分组进行插入排序(每个逻辑分组数据量小,插入排序效率高),然后不断缩小步长,当步长为1时对整个数据进行一次插入排序。(基本有序,比直接使用插入排序效率高)排序实现参考大神思路希尔排序本质上是对插入排序的优化,可以在插入排序的基础上修改。或者把插入排序看成固定步长为1的希尔排序。要实现希尔排序,可以将插入排序的固定步长由1变为变量g
2020-12-03 18:05:53
109
原创 插入排序
排序思路将队列分为有序区和无序区两部分,每次从无序区选第一个元素插入到前面的有序区中的正确位置。插入前需要移动有序区元素。排序实现代码: //插入排序算法 public static int[] sort(int[] a) { //默认第一位为有序序列,从第二位开始判断 for (int i = 1; i < a.length; i++) { //拿到需要排序的值 int x = a[i];
2020-12-03 15:52:54
101
原创 工厂模式
文章参考:23种设计模式工厂模式分为:简单工厂模式(静态工厂方法模式)、工厂方法模式、抽象工厂模式简单工厂模式简单工厂模式有一个具体工厂类,没有抽象工厂类,可以生产多个产品。简单工厂模式不在 GoF 23 种设计模式之列。角色:简单工厂(SimpleFactory):是简单工厂模式的核心,负责实现创建所有实例的内部逻辑。工厂类的创建产品类的方法可以被外界直接调用,创建所需的产品对象。抽象产品(Product):是简单工厂创建的所有对象的父类,负责描述所有实例共有的公共接口。具体产品(Con
2020-11-30 17:45:41
104
原创 单例模式
内容参考23种设计模式单例模式定义指一个类 只有一个实例,且该类能 自行创建 这个实例的一种模式。单例模式特点根据上面的定义可知单例模式有 3 个特点:单例类只有一个实例对象;该单例对象必须由单例类自行创建;单例类对外提供一个访问该单例的全局访问点。思考:1. 单例模式如何保证不被外部类实例化?要保证单例类不被外部类实例化,那就必须重载构造方法,并且要设置为private 访问权限。2. 外部类如何获取单例模式的类实例?外部类不能new出单例模式的类,所以需要提供一个非 priv
2020-11-30 15:42:33
89
原创 JAVA学习路线
JAVA学习路线第一部分:java基础一、变量二、控制结构三、OOP四、数组五、java API六、异常和处理七、集合八、泛型九、IO十、反射十一、网络通信十二、Mysql基础SQLJDBC连接池第二部分:java高级一、java多线程/高并发并发基础互斥同步非阻塞同步指令重排synchronizedvolatile线程锁自旋锁偏向锁可重入锁线程池并发容器JUCexecutorcollectionslocksatomic(原子类)tools (CountDownLatch,Exchanger,ThreadL
2020-11-30 14:07:21
1446
原创 volatile不保证原子性的理解
目前可知volatile保证可见性:被volatile修饰的变量被修改后,新的值会从缓存刷新到主存其他线程的该变量失效,其他线程需要重新从主存获取新值情景:举例 count++操作,该操作分为三步:从主存读取count值,缓存到缓存区将线程缓存区的count值加1将缓存区的值写回到主存多线程下的问题:假设count初始值为 0 ,假设有线程A、B对 被 volatile 修饰的 count 做 count ++ 操作:线程A 从主存获取count值 0 ,缓存到自己的缓存区线
2020-05-27 00:18:56
318
原创 java守护线程与非守护线程
java守护线程与非守护线程代码逻辑当前网上结论1、主线程结束,守护线程跟着结束2、只要存在任何一个非守护线程,守护线程就全部工作测试代码第一段代码第二段代码结论代码逻辑代码里面包括:主线程、用户线程、守护线程。其中主线程和用户线程都属于非守护线程。当前网上结论1、主线程结束,守护线程跟着结束2、只要存在任何一个非守护线程,守护线程就全部工作测试代码第一段代码public class Daemon1 { public static void main(String[] args)
2020-05-22 00:40:00
295
原创 SpringMVC项目搭建练习
一、 IDEA环境搭建1、新建maven项目2、添加必要的包和配置文件二、基于非注解的相关配置1、配置pom.xml导入依赖包只导入了必须的依赖包:&amp;amp;lt;project xmlns=&amp;quot;http://maven.apache.org/POM/4.0.0&amp;quot; xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-i
2019-02-19 16:16:52
6066
原创 AOP知识点总结
在哔哩哔哩上看的Spring视频教程,对AOP做一点笔记,视频连接:spring教程一、AOP术语Joinpoint(连接点) --指被拦截到的点,在spring中这些点指方法,因为spring只支持方法类型的连接点Pointcut(切入点) --指我们要对哪些Joinpoint进行拦截的定义Advice(通知/增强) --指拦截到Joinpoint之后所要做的事情,通知分为...
2019-02-15 13:45:51
313
原创 Spring、SpringMVC解惑
Spring、SpringMVC解惑学习了Spring之后,再学习SpringMVC,其中有些问题一直想不通,直到最近查资料才搞明白,特此记录一下。学习Spring时发现每一个类在注册为bean时需要在xml文件中进行配置,即使使用@Autowired注解,也需要有对应得xml配置。而且学习Spring时总有一个获取bean的方法:而在后来接触到的SpringMVC项目中却从来没有见过。...
2018-11-13 09:53:32
145
原创 freemarker总结
freemarker的作用现在的任务是实现一个下载word文档的功能,而word文档是预先排版好的,我需要做的就是把从数据库或者别的地方拿到的数据填充到对应的位置。使用freemarker实现出来的效果很好。freemarker的使用首先需要一个word文档,将来你需要下载的文档是什么样就写成什么样,把需要填充的地方先写上数据。把文档另存为2003xml格式,然后打开xml文件,找到刚才填充...
2018-10-22 15:31:01
203
原创 Connection reset错误解决
记录一次工作中遇到的错误:Connection reset首先说明错误产生的背景:我的工作是调一个第三方接口,使用post方法传送JSON数据过去,接口返回的也是一个JSON数据。使用Postman直接测试URL,可以接收到数据,所以人家给的接口应该没有问题。使用我自己的代码一直连不上,考虑到URL中使用的是https,怀疑是自己的方法问题,改了代码还是不行,偶然在同事电脑上用同样的方法居然...
2018-09-28 10:58:09
16163
1
原创 Hibernate操作数据库问题总结
1、无法实例化问题 检查一下数据库是否正常连接。我使用的是IDEA,可以用它直接连接数据库试试,如果它都连接失败了,那肯定出问题。2、空指针问题 运行后报空指针的错误,后来打断点发现就是在session处出问题,后来检查各种注解,把 @Autowired public SessionFactory sessionFactory; public Session ge...
2018-09-12 17:29:30
247
原创 文件上传实例
文件上传实例记录 主要参照w3c实例:使用html格式做界面,使用jsp文件做后台处理。页面代码:<html><head> <title>File Uploading Form</title></head><body><h3>File Upload:</h3>
2018-09-04 10:53:55
304
原创 IDEA使用问题总结
1.无法实例化bean我运行的项目的是spring+spring MVC+hibernate整合,运行时报错无法实例化bean,后来发现是数据库没有连接好,如果有关连接数据库的bean无法被实例化,应该先检查IDEA是否与数据库正常连接。2.无法找到配置文件我在运行项目时遇到无法找到配置文件的问题,包括applicationContext.xml和database.properties...
2018-08-28 13:31:18
262
原创 Spring/Spring MVC/Hibernate配置文件总结
一、Spring的配置文件 1.关于Spring和SpringMVC的配置文件有两个:applicationContext.xml、spring-servlet.xml。 2.Spring配置文件对应于applicationContext.xml配置文件(Spring上下文环境的配置文件)。根据我的理解,这个文件和Beans.xml文件是一个性质,里面都是写bean的,当然也不仅限于此。...
2018-08-13 11:22:27
480
原创 Spring笔记
1:property和constructor-arg区别:(参考百度经验)constructor-arg注入方式是通过构造方法注入,property注入方式是通过setxxx的方法注入。constructor-arg注入: &amp;lt;bean id=&quot;provider&quot; class=&quot;.....&quot;&amp;gt; &amp;lt
2018-08-02 10:27:54
148
原创 HTML/CSS/jQuery学习笔记
1:HTML5画布 必须先创建Canvas才能使用javascript绘制图形,所以javascript必须在canvas之后。 2:HTML5拖放 主要分为“被拖动元素”和“位置元素”。“被拖动元素”需要将draggable属性设置为true,同时设置ondragstart属性,该属性调用某一函数,该函数实现dataTransfer.setData()方法,该方法设置数据类型和值,如 fun...
2018-07-25 15:17:21
168
原创 关于java中的JTable问题
需求与方法问题与解答1、JTable怎么实现?2、JTable的显示问题3、最小化窗口以后新表格不见了!4、点击按钮以后,表格全都不见了5、点两次按钮出现了两个表格! 最近用Java代码写一个界面,主要用来读取txt文档然后显示在窗口里面,由于是技术小白,所以遇到很多问题,现在记下来免得以后再犯。需求与方法1、我首先需要一个窗口,当然是写...
2018-04-15 16:37:03
1414
2
原创 C语言实现冒泡排序
冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。冒泡排序算法的运作如下:比较相邻的元素。如果第一个比第二个大,就交换他们两个。对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。针对所有的元素重复以上的步骤,除
2017-12-10 23:14:27
5325
原创 Kerberos认证协议
序言:近几天学习了Kerberos认证协议,觉得有必要把学习过程和学习心得记录一下,文章内容有William Stallings编著的《网络安全基础》中的部分内容,也有自己的理解和思考。我希望能用自己的理解来解释出Kerberos认证协议的工作过程。由于Kerberos比较复杂,所以需要通过多个假设会话来理解协议,对于有哪些不妥之处还请前辈批评指正。1.一个简单的会话(1)C—>AS: IDc |
2017-05-07 22:02:27
4315
原创 第 1 章 数据与数据类型
第 1 章 数据与数据类型1. 数据四类 (1)常量:值不发生变化的量 (2)变量:值随时随地发生变化的量 (3)表达式:用运算符将数据连接起来的合法式子 (4)函数:调用具有一定功能的函数作为运算量 2. 数据类型四大类 (1)基本类型:整型(int)、字符型(char)、浮点型(float、double)、枚举类型(enum) (2)构造类型:数组型、结构体类型(s
2017-04-30 01:35:19
167
空空如也
C语言中short类型有符号和无符号时占用字节不一样
2017-03-14
如何实现在ping程序中设置DF,发送一个大数据包,不让分片
2016-12-28
发送固定大小的数据包
2016-12-23
TA创建的收藏夹 TA关注的收藏夹
TA关注的人