自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(309)
  • 资源 (1)
  • 收藏
  • 关注

原创 手把手用keras分类mnist数据集

实战流程获得数据,并将数据处理成合适的格式按照自己的设计搭建神经网络设定合适的参数训练神经网络在测试集上评价训练效果一、认识mnist数据集from keras.utils import to_categoricalfrom keras import models, layers, regularizersfrom keras.optimizers import RMSprop...

2020-04-29 19:11:44 9035 6

原创 分门别类刷PAT甲级

\quad博主正在准备PAT考试中,已经刷完一次甲级题,现将PAT155道甲级考试题分门别类罗列出来,再刷一次,这样刷能让自己对每种类型的题有一个综合的认识,进一步提升。欢迎大家加我QQ:1613511883一起探讨一、模拟题1、字符串处理2、模拟3、进制转换4、图形输出5、查找元素...

2019-08-19 17:25:05 1938

原创 社区发现算法之——Louvain

1、什么是社区如果一张图是对一片区域的描述的话,我们将这张图划分为很多个子图。当子图之内满足关联性尽可能大,而子图之间关联性尽可能低时,这样的子图我们可以称之为一个社区。2、社区发现算法及评价标准社区发现算法有很多,例如LPA,HANP,SLPA以及我们今天的主人公——Louvain。不同的算法划分社区的效果不尽相同。那么,如何评价这些算法孰优孰劣呢?用模块度modularity来衡量。模...

2018-10-25 09:13:39 14003 138

原创 linux下分析c++程序各个函数运行时间和调用次数

\quad博主当前系统为centos7,如果是其他linux会在安装c++性能分析工具时有所区别,但使用方法完全一样。1、gprof\quad准备工作:假设你写了cpp程序命名为test.cpp,首先将其编译:g++ -o test test.cpp -pg -std=c++11,这里需要指定选项-pg,能产生供gprof剖析用的可执行文件,编译后可执行文件为test。\quad第一步:执行可执行文件./test,会在当前目录下生成gmon.out。注意:此时执行时间会更长一些,主要原因时gprof内

2021-03-31 16:21:22 38

原创 Java面经

1、 类加载机制和类加载器的双亲委派机制\quad虚拟机将描述类的class二进制字节码文件加载到内存,并对数据进行校验、转换解析和初始化,最终成为可以被JVM使用的Java类型,这一整套流程就是类加载机制。细节如下:加载:通过全限定类名获取定义此类的二进制字节流,并将此字节流所代表的静态存储结构转化为方法区运行时的数据结构,最后在内存中生成一个代表这个类的Class对象,这样可以在后面通过该对象获得该类的各种数据,例如获得该类的Methods,Fields等等验证:主要是确保字节码文件中包含的信息

2021-03-06 21:52:22 208 2

原创 Java并发编程(三)——管程:使用悲观锁的思想解决多线程并发中的共享问题

一、共享带来的问题\quad当多个线程访问一个共同的资源时,会发生线程安全问题。假设有共享变量i=0,有两个任务,任务1对该变量进行+1操作,任务2对该变量进行-1操作。假设线程t1对i进行+1操作,但还未来得及保存,此时i=0,时间片就切换给线程2,此时线程2又对i进行-1操作并保存,此时i=-1,t2线程结束,时间片给t1,t1将上次未保存的结果1给i,最终输出i=1。按理说i最后等于0,但是由于多个线程操作共享资源,导致了线程安全问题。例如下面程序,返回结果就可能是:[-10000,10000]中任

2021-03-05 22:22:24 20

原创 剑指offer:最小的k个数

\quad输入整数数组 arr ,找出其中最小的 k 个数。例如,输入4、5、1、6、2、7、3、8这8个数字,则最小的4个数字是1、2、3、4。示例 1:输入:arr = [3,2,1], k = 2输出:[1,2] 或者 [2,1]示例 2:输入:arr = [0,1,2,1], k = 1输出:[0]\quad这里给出一个三路partition的操作,速度最快,可见测试数据中有很多重复元素。class Solution {public: int partition(vect

2021-03-04 21:49:28 21

原创 Java并发编程(二)——线程中的常见方法(join,yield,sleep等)和线程状态

1、start():启动一个新线程,在新的线程中运行run方法。注意:该方法只是让线程进入就绪状态,里面代码不一定立刻执行(CPU时间片还没分给它)。2、join():等待线程运行结束,写上t1.join(),程序运行到这句话时会等待线程t1运行结束后再执行后续操作,该方法提供了线程间运行顺序的控制,假设t2线程需要等待t1线程运行完才能执行,则可以在t2线程前加上t1.join()。static int r = 0;@Testpublic void test1() throws Interrupt

2021-03-03 22:03:10 35 1

原创 HashMap源码剖析

\quad红黑树底层实现是数组+链表+红黑树。大体逻辑是:创建一个长度为2的幂大小的数组table,里面存放Node节点当一个键值对插入散列表时,首先计算当前键值对Key的hash值,根据寻址算法(index=(table.length-1)&hash(key)),这样每一个键Key都能映射到[0,table.length-1]的区间中去当多个键值对的Key对应的hash值相同时,会在其对应的位置形成链表或者红黑树,当相同hash值Key数目达到8个时,会从链表树化为红黑树;反之当其数目减少

2021-03-03 18:59:57 39 1

原创 Java并发编程(一)——进程与线程概念和创建线程的方法

一、进程和线程概念进程概念进程是指在系统中正在运行的一个应用程序每个进程之间是独立的,每个进程均运行在其专用的且受保护的内存线程概念线程是进程的基本执行单元,一个进程的所有任务都在线程中执行进程要想执行任务,必须得有线程,进程至少要有一条线程一个进程可以分为多个线程,一个线程就是一个指令流,将指令流的一条条指令交给CPU执行Java中线程是最小调度单位,进程作为资源分配的最小单位二者关系进程间相互独立,线程是进程的组成部分进程的资源供其线程共享,因此线程间通信简单,多个线程可

2021-03-03 11:13:52 12

原创 JVM中实用性细节

1、设置Java虚拟机栈大小-Xss\quadJava默认栈大小为1M,如果在多次使用递归函数的情况下可能会爆栈,例如示例程序,我是用递归函数dfs来求解1+2+3+...+n的值,在n=100000时就会爆栈。\quad我们修改配置,加上编译参数-Xss1024m就可以防止爆栈,但是也不能修改得太大,因为总的内存是一定的,如果给每个线程开启的栈内存过大会导致无法开启多个线程。\quad上述爆栈称为栈帧数目过多导致爆栈,在一个线程里面,每一次调用函数都会形成一个栈帧放入栈内,上述例子会调用1000

2021-02-21 21:00:43 59 4

原创 Java 8新特性

1、接口里面不仅可以有抽象方法,还可以有默认方法\quad默认方法需使用default关键字修饰。接口中除了可以定义抽象方法,还可以定义静态常量和静态方法,java8以后还可以定义默认方法。接口中方法都是public的,故而可以省略public不写。如下例子:public interface Formula { // 静态常量 static final String s = "Hello"; // 静态方法 static void say(){ Syst

2021-01-31 22:33:28 289

原创 微软笔试题

题目三\quad给一个无向图,N个顶点,M条边,0为起点,N-1为终点,每条边初始权值为 1。图中除普通节点外有 4 种节点。第一种:走过这种节点后的两条边权值翻倍(Sand)第二种:走过这种节点后的两条边权值减半 (Nitro)第三种:走到这个节点就停止,不能再走了(Cop)第四种:走到这个节点,下一条边的权值+1(Crash)求节点 0 到 N-1 的最短权值和路径。输入样例:第一行为点数和边数;第二行为n个字符串表示这n个点的属性;接下来有m行,每行两个节点编号,表示这两个节点有一条

2021-01-30 17:20:13 366

原创 子集划分问题

一、将一个数组划分为两个子集数组里面数取值范围无限制:爆搜+优化数组里面数取值范围有限制:背包1、Leetcode416 分割等和子集\quad给定一个只包含正整数的非空数组。是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。每个数组中的元素不会超过 100;数组的大小不会超过 200。输入: [1, 5, 11, 5]输出: true解释: 数组可以分割成 [1, 5, 5] 和 [11].int f[10010];class Solution {public:

2021-01-29 23:51:16 331

原创 Java lambda表达式

package lambdaTest;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.List;public class test1 { public static void sort1(){ List<Integer> arr = new ArrayList<>(); arr.

2021-01-26 16:33:19 266 1

原创 Java读取配置文件:xml、properties和yml

\quad在项目中,常常使用配置文件,配置文件类别大都分为三种:xml、properties和yml。接下来我们一一解析这三种文件在java中如何读取。一、读取xml文件\quad我们可以借助dom4j进行解析,先点击此处下载该jar包,将包导入工程中去。我们新建一个class.xml文件,内容如下:<class name="uestc"> <student> <name>张三</name> <age>

2021-01-26 16:33:01 356

原创 Java注解和反射

一、Java注解的概念\qquadJava 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制。Java 语言中的类、方法、变量、参数和包等都可以被标注。和 Javadoc 不同,Java 标注可以通过反射获取标注内容。在编译器生成类文件时,标注可以被嵌入到字节码中。Java 虚拟机可以保留标注内容,在运行时可以获取到标注内容 。\quad接下来介绍几个常见的注解:@Override:检查该方法是否是重写方法。如果发现其父类,或者是引用的接口中并没有该方法时,会报

2021-01-21 16:15:09 286

原创 redis学习和Java调用Redis

一、redis基础知识\quad博主建议redis基础数据类型以及命令在菜鸟教程过一遍即可,一两个小时足矣,点击此处。\quadJava调用redis可以在IDEA上新建一个maven工程,在配置文件pom.xml中导入redis的依赖即可,这样就不需要自己手动下载包再导入了,非常的方便。在pom.xml中依赖如下:<dependencies> <dependency> <groupId>redis.clients</groupId&g

2020-12-24 16:12:17 2466

原创 Java垃圾回收机制GC

一、如何判断对象是否为垃圾1、对象被判定为垃圾的标准没有被其他对象引用2、判断对象的引用数量来决定是否是垃圾判定标准:通过判断对象的引用数两来决定对象是否可以被回收;每个对象实例都有一个引用计数器,被引用则+1,完成引用则-1;任何引用计数为0的对象实例可以当作垃圾优点:执行效率高,程序执行受影响小缺点:无法检测出循环引用的情况,如父对象引用子对象,子对象反过来引用父对象,这样这两个对象永远不可能为0,导致内存泄漏。3、可达性分析算法来决定对象是否为垃圾\quad通

2020-12-23 21:07:58 2454

原创 JVM

一、Java跨平台性\quadJava源码首先被编译成字节码,再由不同平台的JVM进行解析,Java语言在不同的平台上运行时不需要进行重新编译,Java虚拟机在执行字节码时,把字节码转换成具体平台上的机器指令。查看Java程序对应的字节码:首先使用javac xxx.java指令生成Java文件对应的字节码文件:xxx.class使用javap -c xxx.class指令反编译字节码文件二、JVM如何加载class文件1、JVM架构Class Loader:依据特定格式,加载cla

2020-12-22 16:07:34 2480 2

原创 数据库学习

一、什么是关系型数据库和非关系型数据库1、关系型数据库\quad关系模型可以简单理解为二维表格模型,而一个关系型数据库就是由二维表及其之间的关系组成的一个数据组织。\quad关系型数据库中有许多张表,每张表表示现实世界的各种实体。各种实体之间的联系均用关系模型来表示。特点1.存储方式:传统的关系型数据库采用表格的储存方式,数据以行和列的方式进行存储,要读取和查询都十分方便。2.存储结构:关系型数据库按照结构化的方法存储数据,每个数据表都必须对各个字段定义好(也就是先定义好表的结构),再根据表的

2020-12-22 09:03:14 324

原创 Spring框架剖析

一、Spring概念Spring是轻量级的开源的JavaEE框架Spring可以解决企业应用开发的复杂性Spring有两个核心部分:IOC和AOPIOC:控制反转,把创建对象的过程交给Spring进行管理Aop:面向切面,在不修改源代码的情况下进行功能增强Spring框架的特点:(1)方便解耦,简化开发;(2)Aop编程支持;(3)方便程序测试;(4)方便集成各种优秀框架;(5)方便进行事务操作;(6)降低API使用难度入门案例1.下载Spring5.2.6,地址,下载dist.zip文

2020-12-21 14:55:25 273

原创 Maven快速上手

1. Maven的强大之处Maven是一个项目管理工具传统Java工程,jar包在项目中;而在maven开发项目时,jar包不在项目中,放在maven仓库中,通过在项目中建立jar包坐标映射到真实的包中去。这就是依赖管理:maven工程对jar包的管理过程。如果本地仓库没有坐标,则去中央仓库下载,中央仓库几乎放置了开源的所有jar包maven目录结构2. Maven常见命令mvn compile:ompile是maven工程的编译命令,作用是将src/main/java下的文件编译为cl

2020-12-03 16:40:21 282

原创 Java多线程

1. 进程和线程概念进程:指一个内存中运行的程序,应用程序都需要在内存中执行线程:线程是进程中的一个执行单元,负责当前进程中程序的执行,一个进程中至少有一个线程。一个进程中可以有多个线程,这样的程序称为多线程程序。四核八线程指的是该CPU可以同时执行8个任务。单线程CPU处理多线程任务时CPU在多个线程之间高速切换。线程调度:1.分时调度:所有线程轮流使用CPU的使用权,平均分配每个线程占用CPU的时间;2.抢占式调度:抢先让优先级高的线程使用CPU。Java程序属于抢占式调度。2. 主线程\

2020-11-28 15:09:21 288

原创 Java 异常处理

1. 异常概念和体系\quad异常指程序在执行过程中,出现的非正常的情况,最终会导致JVM的非正常停止。在Java中异常本身是一个类,产生异常就是创建异常对象并抛出一个异常对象,出现异常导致程序中断。\quad异常的根类是Throwable,底下有两大子类:Error和Exception。2. 异常分类\quadException:编译器异常,编译程序时出现的问题。旗下有RuntimeException:运行期异常,是Java程序运行过程中出现的问题。把异常处理掉,程序可以继续执行。若不手动处理异常

2020-11-24 22:08:40 283

原创 Java集合之Map

\quad存放键值对的集合。Map常用的实现类有HashMap(无序),TreeMap(无序)和LinkedHashMap(有序)。1. Map接口常用方法V put(K key, V val):添加元素(若键已存在,则用新的值替换之)V get(K key):获取建为key的元素,若不存在则返回nullV remove(K key)boolean containsKey(K key)Set<K> keySet():把map集合中所有的key取出来放在Set集合中,用于遍历Map

2020-11-24 15:12:08 205

原创 Java 集合之Collection

1. 集合框架介绍\quad集合是Java提供的一种容器,可以用来存储多个数据。数组也可以存放数据,但其长度固定,而集合的长度是可变的。集合只能存储对象。\quad集合按照其存储结构可以分为两大类:单列集合Collection和键值对集合Map。本博客就Collection抽象类、对应接口及其实现类进行阐述。2. Collection中共性的方法boolean add(E e)void remove(E e)void clear()boolean isEmpty()int size()

2020-11-24 10:28:37 451

原创 Java 内部类

\quad一个类内部包含另一个类,被包含的类称为内部类。可以分为成员内部类和局部内部类(包含匿名内部类)。内部类访问外部类,随意访问外部类访问内部类,一定需要新建内部类对象使用成员内部类的两种方法:1.间接使用,通过外部类对象在外部类中使用内部类;2.直接使用,外部类名称.内部类名称 对象名 = new 外部类名称().new 内部类名称()public class Body { // 外部类 public class Heart{ // 成员内部类 public

2020-11-22 10:17:04 433

原创 Java之多态

\quad多态:一个对象拥有多种形态,它既有其本身的形态,也有其父类的形态,因此要想一个对象有多种形态,可以这样调用:父类名称 对象名 = new 子类名称() or 接口名称 对象名 = new 实现类名称(),简记为:父类引用指向子类对象。含义:右侧创建一个子类对象,把它当作父类来看待使用,相当于自动类型转型中的向上转型,从小范围转向了大范围,是安全的。一旦向上转型了,子类的特有方法便不再能使用。对于成员变量而言,编译看左边,运行看左边对于成员方法而言,编译看作边,运行看右边public c

2020-11-20 22:06:50 279

原创 Java接口

\quad接口是多个类的公共规范。接口时一种引用数据类型,最重要的内容就是其中的抽象方法。接口中可以包含的内容有:常量,抽象方法,在最新的JDK版本中还可以使用私有方法、静态方法和默认方法。接口中的抽象方法,修饰符必须时两个固定的关键字一起修饰:public abstract;但是可以选择性的省略接口不能直接使用,必须有一个实现类来实现该接口:public class 实现类名称 implements 接口名称{}接口的实现类必须重写接口中所有的抽象方法默认方法是为了解决接口升级带来的所有实现类都

2020-11-19 21:21:38 293

原创 Java之继承和抽象类

推荐一篇Java继承的博客。\quad继承主要解决不同类之间共性抽取的问题,减少程序量。子类可以继承父类的内容,还可以拥有自己特有的内容。继承使用extends关键字,格式为public class 子类 extends 父类 {}。子类中调用父类中重名的变量和方法需使用super区分子类中对父类方法的重写请使用@Override。一般来说,写与不写没什么区别,JVM可以自识别,但还是要养成良好的习惯。子类方法的返回值方法必须小于等于所重写父类方法的返回值范围,子类方法的权限修饰符必须大于等于父类方

2020-11-19 10:19:50 330

原创 Java常用API之ArrayList,String和Arrays

\quad请点击此链接JDK_API_1_6_zh_CN.CHM下载Java官方给出的中文的API文档来使用。1. 动态数组ArrayList\quad定义一个动态数组对象ArrayList<Integer> arr = new ArrayList<>();add(int val):往数组末尾添加一个数add(int index, val):往数组index位置添加一个数ArrayList重载了toString()方法,可以直接打印输出get(int index):取出

2020-11-18 22:07:56 309

原创 Java常用API之Scanner,Random,Math,Date,Calendar和StringBuilder

1. API查询和使用步骤\quad请点击此链接JDK_API_1_6_zh_CN.CHM下载Java官方给出的中文的API文档来使用。2. 键盘读入Scanner\quad情形一:读入n个数并存放在数组中// 可读取int, byte, short, long, float, double, boolean, 字符串,大整数和一整行读取// 这是标准写法不用改变Scanner sc = new Scanner(System.in);int n = sc.nextInt();int[] ar

2020-11-18 22:07:30 283

原创 Java基础快速解读

1. Java语言历史Java由Sun公司在1995年开发,版本为1.01997年发布Java 1.1版本2004年发布Java 5版本2009年Sun被Oracle收购,并发布Java 7版本2018年发布Java 10版本2. JVM——Java跨平台性的保证JVM是Java虚拟机,是Java程序的运行环境,该特性保证了用Java编写的程序可以运行在任何的操作系统上,这就是Java的跨平台性Java的虚拟机本身不具备跨平台功能,每个操作系统下都有不同版本的虚拟机3. JRE和J

2020-11-18 15:32:10 295

原创 整数划分问题

\quad一个正整数n可以表示成若干个正整数之和,形如:n=n1+n2+…+nkn=n_1+n_2+…+n_kn=n1​+n2​+…+nk​,其中n1≥n2≥…≥nk,k≥1n_1≥n_2≥…≥n_k,k≥1n1​≥n2​≥…≥nk​,k≥1。我们将这样的一种表示称为正整数n的一种划分。现在给定一个正整数n,请你求出n共有多少种不同的划分方法。输入格式共一行,包含一个整数n。输出格式共一行,包含一个整数,表示总划分数量。由于答案可能很大,输出结果请对109+710^9+7109+7取模。数据范围

2020-11-03 15:57:26 489

原创 最长上升子序列的两种方法

方法一:简单dp(O(n2)O(n^2)O(n2))f[i] 表示以a[i]结尾的子序列的最大长度f[i] = max(f[j] + 1), j < i && a[j] < a[i]#include <iostream>using namespace std;const int N = 1010;int a[N], f[N];int main(){ int n; cin >> n; for(int i = 1; i

2020-11-03 11:22:22 425

原创 Identifying Infected

\quad对于每次查询(a,b),都去循环遍历图中每个点f,假设去掉这个点后a是否还能到b,如果去掉f后a不能到b,则f点一定被感染。这样的话时间复杂度为O(Q∗N∗(N+M))O(Q*N*(N+M))O(Q∗N∗(N+M)),可以过掉30%的数据。#include <iostream>#include <queue>#include <vector>using namespace std;const int N = 1010;vector<int&

2020-10-27 14:27:08 448

原创 c++实现split功能

vector<string> split(string s, char c=' '){ s += c; vector<string> ret; string t; for(int i = 0; i < s.length(); i ++ ) { if(s[i] == c) ret.push_back(t), t = ""; else t += s[i]; } retu

2020-10-23 14:53:34 478 1

原创 数论——约数问题

一、一个数的约数个数有多少\quad取个例子,对于12而言,其约数有1,2,3,4,6,126个不同的约数。怎么快速的求出一个数的约数数目有多少个呢?可以对这个数进行质因子分解,分解成N=p1α1p2α2⋯pnαnN=p_1^{\alpha_1}p_2^{\alpha_2}\cdots p_n^{\alpha_n}N=p1α1​​p2α2​​⋯pnαn​​,这样其约数个数为(α1+1)∗(α2+1)∗(αn+1)(\alpha_1+1)*(\alpha_2+1)*(\alpha_n+1)(α1​+1)∗(

2020-10-22 19:16:49 420

原创 Trie树模板

\quad这里实现一个通用的Trie树模板,支持单词插入,查询某个单词出现次数和打印输出所有以某个字符串为前缀的所有字符串这三个功能。程序如下:#include <iostream>#include <map>using namespace std;struct Node{ char c; int cnt; // 以该节点为结尾的单词数目 map<char, Node *> child; Node(char c) {

2020-10-21 10:33:36 454

推特事件检测

事件检测的大牛文章,IEEE影响因子10分以上,可供下载。

2018-10-25

空空如也

空空如也

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

TA关注的人 TA的粉丝

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