自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

See what you want to see

simple collections

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

原创 java简易优先队列(小顶堆)

java简易优先队列(小顶堆)class Heap{ private int[] heap; private int size; public Heap(int n) { heap = new int[n + 1]; size = 0; } public void offer(int num) { int father = ((size - 1) >> 1), index = size; heap[index] = num; while (father &g

2021-03-21 13:23:39 289

原创 关于Scrapy的start_requests中的所有Requests不一口气加入请求队列这件事

Scrapy源码阅读记录文章目录Scrapy源码阅读记录爬虫启动Crawler类职责主要方法Engine类职责主要方法Scraper类职责主要方法结论更通俗的说因为爬虫需求比较特殊(毕设要做社交网络相关的内容),网上的博客写的都比较拉,互相抄来抄去,找不到有用的东西,只好去啃源码。主要围绕着scrapy.core包,具体流程就是从爬虫运行的顺序开始分析,各个从上至下基本上是按顺序来的。爬虫启动这部分没找到详细的流程,大致是执行了scrapy.cmdline的execute方法。Crawler类

2021-02-21 15:50:27 1260 4

原创 Java高并发笔记

文章目录(一)线程安全性原子性可见性有序性(二)安全发布原则安全发布策略(三)线程安全策略不可变对象线程封闭线程不安全的类与写法同步容器并发容器安全共享对象策略(四)JUC之AQSAQS接口CountDownLatchSemaphoreCyclicBarrierReentrantLock 与 Condition(五)JUC扩展Callable接口Future接口FutureTask类Fork/Join框架BlockingQueue接口(六)线程池对比Thread类ThreadPoolExecutor类线程池

2020-10-22 14:24:51 142

原创 Servlet总结

Servlet体系结构Servlet:接口|(继承)GenericServlet:抽象类|(继承)HttpServlet:抽象类|(继承)MyServlet extends HttpServletservlet常用方法: void init(ServletConfig config):初始化 void service(ServletRequest request,ServletResponse response):服务 处理业务逻辑 void destroy():销毁 Servl..

2020-10-22 14:22:36 152

原创 leetcode专题——回文串问题

回文串问题根据回文特性进行分析具体问题具体分析,往往思路就是从这里来的。回文问题主要是判断回文的时间复杂度太高,可以考虑DP、哈希表、字典树、字符串哈希、KMP、马拉车等优化对回文的判断。336.回文对暴力解有些问题可以先尝试,说不定能通过,但是形如O(n!)或者指数级复杂度就可以不考虑了。DP一般是子序列问题,迫不得已,没办法直接中心扩展。考虑类似LCS问题的区间DP思路516.最长回文子序列中心扩展算法从某个位置向两侧扩展,避免暴力法枚举所有的子串。5.最长回文子串647.

2020-10-09 14:28:23 155

原创 泛型带来的坑

Map<Short, String> map = new HashMap<>(); for(short i = 0; i <100; i++) { map.put(i, String.valueOf(i)); map.remove(i - 1);}System.out.println(map.size());这段代码输出是100,原因如下:首先JVM将i - 1自动向上转型为inti - 1被自动装箱为IntegerHashMap在比较两个

2020-06-08 22:46:35 169

原创 三路快排

三路快排适用于待排序元素存在大量重复的情况,可以接近线性时间复杂度。public class Test { public static void main(String[] args){ Random random = new Random(); int[] nums = new int[20]; for (int i = 0;i < nums.length;i++) { nums[i] = random.nextInt(3); } new Test().quick

2020-06-05 22:47:31 198

原创 Java数组排序(递归版&非递归)

public class Test { public void mergeSort(int[] nums, int low, int high) { if (low >= high) return; int mid = low + ((high - low) >> 1); mergeSort(nums, low, mid); mergeSort(nums, mid + 1, high);

2020-05-27 23:16:08 261

原创 tensorflow结果可重复

tensorflow结果可重复文章目录tensorflow结果可重复开发环境解决过程用CPU跑用GPU跑最近在学吴恩达的深度学习课程,在参考别人的代码的时候,发现在CPU多线程情况下和GPU运行的情况下,同样的代码、数据,每次训练出来的结果都不一样,这还怎么调参,于是stackoverflow走起。开发环境Windows10 64位python 3.6tensorflow 1.14keras 2.2.5CUDA 10.0cudnn for CUDA 10.0解决过程用CPU跑#

2020-05-10 15:46:28 1334 3

原创 PCA与线性代数的关系

PCA与线性代数的关系这篇博客记录一下今天花了几个小时复习线性代数以理解PCA原理的过程,内容比较粗浅,但是大致知道原理了,公式在这里就不多提了,最多扯一下矩阵和各个概念的涵义。PCA用处吴恩达说这玩意儿可以用来做可视化(高维降维成2维)和特征压缩,这个没什么异议。可视化没啥可说的,主要从降维来说说原理吧。原理其数学原理,主要就是从m*n的矩阵(m个样本,每个样本有n个特征)中选区分...

2020-05-01 18:15:28 394 1

原创 大话设计模式笔记

大话设计模式笔记文章目录大话设计模式笔记(一)简单工厂模式(二)策略模式(三)单一职责原则(四)开放-封闭原则(五)依赖倒转原则(六)装饰模式(七)代理模式(八)工厂方法模式(九)原型模式(十)模板方法模式(十一)迪米特法则(十二)外观模式(十三)建造者模式(十四)观察者模式(十五)抽象工厂模式(十六)状态模式(十七)适配器模式(十八)备忘录模式(十九)组合模式(二十)迭代器模式(二十一)单例模...

2020-04-29 19:20:20 269

原创 JDK源码阅读(一):java.lang.*

JDK源码阅读(一):java.lang.*文章目录JDK源码阅读(一):java.lang.*Object`public final native Class<?> getClass()``public native int hashCode();``protected native Object clone() throws CloneNotSupportedException;...

2020-04-28 18:05:20 247

原创 虚拟机执行子系统(二):虚拟机类加载机制

虚拟机执行子系统(二):虚拟机类加载机制文章目录虚拟机执行子系统(二):虚拟机类加载机制类加载的时机主动引用被动引用接口加载类加载过程加载验证准备解析初始化类加载器类与类加载器双亲委派模型破坏双亲委派模型Java模块化系统定义:Java虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型。Java与C/C++不同之处在...

2020-03-20 15:37:12 114

原创 虚拟机执行子系统(一):类文件结构

虚拟机执行子系统(一):类文件结构文章目录虚拟机执行子系统(一):类文件结构Class文件结构魔数与Class文件版本常量池访问标志类索引、父类索引与接口索引集合字段表集合方法表集合属性表集合Class文件结构一个Class文件对应唯一类或接口,但反过来则不是(譬如类或接口也可以动态生成,直接送入类加载器中)。Class文件是一组以8个字节为基础单位的二进制流,中间没有添加任何分隔...

2020-03-16 13:52:39 164

原创 JVM参数设置(一)

JVM参数设置(一)以下设置默认使用serial/serial Old收集器堆内存Xms堆内存的最小值,默认为物理内存的1/64Xmx堆内存的最大值,默认为物理内存的1/4Xmn新生代的大小,设置此值老年代的大小为Xmx-Xmn、-XX:Survivor-Ratio设置新生代Eden和Survivor区域的空间比例(n:1),新生代可用总容量为n+1,多出来一个1作为空闲的Su...

2020-03-11 15:54:41 107

原创 JVM自动内存管理(二):垃圾收集器与内存分配策略

JVM自动内存管理(二):垃圾收集器与内存分配策略(一)判断对象是否死亡引用计数法基本思路:在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加一;当引用失效时,计数器值就减一;任何时刻计数器为零的对象就是不可能再被使用的。主流的JVM没有选用此法来管理内存:意外情况很多(如:对象间的循环引用)、需要大量的额外资源来保证正确。可达性算法(主流JVM使用)思路:通过一系...

2020-03-06 21:05:13 330

原创 JVM字符串常量池

字符串常量池在JDK7之后,字符串常量池从运行时常量池中分离,放到堆中。String::intern如果存在堆中的对象,会直接保存对象的引用,而不会重新创建对象,否则在字符串常量池创建对象。以下代码分析基于JDK7以上public static void main(String[] args) { String s = new String("1");//字符串常量池由于class...

2020-02-16 22:55:32 486

原创 JVM自动内存管理(一):Java内存区域与内存溢出异常

JVM自动内存管理(一):Java内存区域与内存溢出异常(一)运行时数据区线程共享: 方法区(JDK8含运行时常量池)、堆内存(JDK8含字符串常量池)线程私有:栈内存(虚拟机栈、本地方法栈)、程序计数器PC直接内存:与NIO有关程序计数器PCNative方法定义:一个Native Method就是一个Java调用非Java代码的接口。方法的实现由非Java语言...

2020-02-15 17:02:46 151

原创 Java学习(十二)

Java学习(十二)类的加载机制与反射类的加载类也是一种对象,是java.lang.Class实例;类的初始化过程:加载、连接、初始化过程:类的加载由类加载器(默认由JVM提供)完成,指的是加载.class文件,这个文件可以是来源于JAR包,加载完毕后,系统会生成Class对象。类的连接该阶段负责把类的二进制数据合并到JRE中。过程:验证:验证加载的类的内部结构是否正确...

2019-10-23 18:45:14 116

原创 Java学习(十一)

Java学习(十一)网络编程基本网络支持InetAddress类其有两个子类分别表示ipv4和ipv6,即Inet4Address、Inet6Address该类没有构造器,通过两个静态方法:getByName(String host)和getByAddress(byte[] addr)来获取实例通过实例方法获取主机名、IP地址:getHostAddress()、getHostN...

2019-10-21 16:24:34 92

原创 Java学习(十)

Java学习(十)多线程线程的创建和启动三种方式:继承Thread类创建线程类(自定义线程类)重写run()方法,调用线程类对象的start()方法来启动Thread.currentThread()返回当前正在执行的线程对象getName()实例方法返回调用该方法的线程名,默认是Thread-n,可以用setName(String name)为线程设置名字但是如果不是这种方...

2019-10-20 15:44:18 83

原创 Java学习(八)

Java学习(八)Annotation概念用于修饰包、类、构造器、方法、成员变量、参数、局部变量的生命,用于设置元数据,这些信息存储在Annotation的name=value对中基本的Annotation@Override,用于指定方法重写,写在子类覆盖父类的方法之前,告知编译器必须检查子类是否重写父类方法@Deprecated表示内容已经过时,如果再使用,编译器会发出警告...

2019-10-19 14:56:27 95

原创 Java学习(九)

Java学习(九)Java I/O流字节流:8bit,InputStream、OutputStream为抽象基类字符流:16bit,Reader、Writer做抽象基类Java同样有着C/C++文件位置指针的类似概念通常的,打开一个文件之类的、从/向特定IO设备(磁盘、网络等)读写的流,称为节点流。处理流:对已存在的流做封装,使用起来更简便抽象基类输入流InputStream...

2019-10-19 14:54:41 105

原创 Java学习(七)

Java泛型泛型定义:意为参数化类型,即传入的参数是个类型,如集合List<String>,就是一个带类型参数的泛型接口,泛型允许在定义类、接口、方法时使用类型作为形参,这个类型形参将在声明变量、创建对象、调用方法时动态地指定。语法:Java7之后,在调用对象的构造器的时候,可以省略泛型中的参数类型,而只留下菱形语法,例如List<String> books...

2019-10-10 19:59:09 111

原创 Java学习(六)

java学习(六)java基础类库(部分)String、StringBuffer、StringBuilder类String类是不可变类,即一旦创建,这个对象中的字符串无法更改StringBuffer类代表字符串可变的对象。StringBuilder和StringBuffer基本相似,但后者是线程安全的,前者性能略高。补充:char和byte的区别byte 是字节数据类型 ,是有...

2019-09-23 19:58:21 90

原创 Java学习(五)

java学习(五)面向对象(下)java基本数据类型包装类[外链图片转存失败(img-vjIiNfPZ-1568981904775)(C:\Users\msi\AppData\Roaming\Typora\typora-user-images\1549177155001.png)]通过这些包装类就可以实现引用传递基本类型参数,这些包装类可以直接与基本数据类型相互赋值还可以通过包装类提供的...

2019-09-20 20:18:36 103

原创 Apache配置虚拟主机

一、修改端口号将httpd.conf中的Listen 80、ServerName localhost:80改为别的端口号,防止冲突;将httpd-ssl.conf的Listen 443改为别的端口号,防止冲突。二、启用虚拟主机服务修改httpd.conf启用apache重写模式,将AllowOverride None全改为AllowOverride all;并且启用重写服务模...

2019-07-18 11:28:16 105

原创 java学习(四)

java学习(四)java面向对象(上)static修饰符static修饰符用于修饰类的成员变量和方法,表示该变量或方法属于这个类本身而不属于任何一个实例static修饰的方法内不能写this,因为static表示这个方法属于一个类,因此省略的this引用无法指向有效的对象,静态成员不能直接访问非静态成员java参数传递java参数传递方式只有值传递,也就是形成一个副本,因此想...

2019-02-02 18:44:31 151

原创 java学习(三)

java学习(三)switch语句java 7之后支持switch表达式的是java.lang.String类型的变量或表达式,但StringBuffer和StringBuilder这两种类型是不允许的java标签java标签和其他语言标签类似——一个紧跟着英文冒号的标识符可以利用这个标签用break从内层循环一次性结束外层整个大循环,也可以用在continue后面用以跳过外层大循环的本...

2019-01-28 21:56:11 171

原创 java学习(二)

Java学习(二)java与cpp区别java必须在一个class内找到程序入口,也就是说必须定义一个类,在这个类里面需要有public static void main(String[] args)作为入口方法一个.java文件最多只能定义一个public类,且.java文件名必须与这个类相同垃圾回收机制由JRE在后台自动进行,通常在CPU空闲或内存不足时自动进行垃圾回...

2019-01-23 23:14:37 98

原创 java学习(一)

java学习(一)今天继续开始系统学习java,希望能坚持下去,打卡。。。java开发环境运行环境JRE各种API以及JVM开发环境JDK编译器(javac命令)JDK包含JREJDK包含JREJDK包含JRE重要的事情说三遍java运行机制先编译为字节码(*.class)后在JVM上解释java安装配置过程默认安装到C:\Program Files\Jav...

2019-01-22 20:47:17 95

原创 mysql学习(四)

mysql(四)MySQL中的多种时间和格式数据类型日期和时间类型是为了方便在数据库中存储日期和时间而设计的。MySQL中有多种表示日期和时间的数据类型。其中,year类型表示时间,date类型表示日期,time类型表示时间,datetime和timestamp表示日期和时间。实际情况,最后2种使用的比较多。mysql创建数据表注意和sqlite的区别是,primary ...

2018-03-25 22:13:14 160

原创 mysql学习(三)

mysql(三)常用的数据库属性、参数查询,相应的修改和维护:最大连接数show variables like '%max_connections%'; 查看set global max_connections=???; 修改,其为全局变量服务器端口show variables like '%port%'; 查看修改端口exit 退出MySQLnet s...

2018-03-21 16:18:54 211

原创 mysql学习(二)

mysql(二)首先以管理员身份进入cmd(一)启动和停止服务启动 net start MySQL停止 net stop MySQLexit退出mysql(二)连接mysql服务器输入mysql -u root -p 或 mysql -h localhost -u root -p(第一次登录没有密码,直接按回车过)但mysql服务器会要求设置密码。其他的...

2018-03-19 23:31:46 106

原创 mysql下载和初始配置

mysql学习(一)(1)mysql下载mysql的社区版是开源的,专业版要收费,学习用社区版完全够了。在官网找到mysql community server并下载对应的版本,选择no thanks;just start my download。(2)安装前的预配置解压到E:\MySQL\mysql-5.7.21在win10搜索框输入环境变量,进行设置,设置为系统变量,变量...

2018-03-19 16:33:22 234

原创 File system学习(二)

File system(二)基于linux v0.11内核文件类型与属性在shell下输入ls -l命令,出现的第一个字符即为文件类型,其中各类型表示如下:- ‘-’正规文件- ‘d’目录名 也是一种文件- ‘s’符号连接- ‘p’命名管道- ‘c’字符设备文件 如:tty终端- ‘b’块设备文件 如:/dev目录下的符号连接不影响被连接的文件,硬...

2018-03-18 14:20:40 149

原创 File system学习(一)

File system(一)基于linux v0.11内核Linux文件系统从功能上有4个部分​ 1.高速缓冲区管理程序 2.文件系统底层通用函数 3.对文件中数据的读写操作 4.文件系统调用接口(打开、关闭、创建等)单位磁盘块结构,从头到尾依次是​ 1.boot block 用于加电启动时由R...

2018-03-18 13:45:07 225

空空如也

空空如也

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

TA关注的人

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