自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 收藏
  • 关注

原创 Relief特征提取算法实战

简介及其演变Relief算法最早由Kira提出,最初局限于两类数据的分类问题。Relief算法是一种特征权重算法(Feature weighting algorithms),根据各个特征和类别的相关性赋予特征不同的权重,权重小于某个阈值的特征将被移除。Relief算法中特征和类别的相关性是基于特征对近距离样本的区分能力。算法从训练集D中随机选择一个样本R,然后从和R同类的样本中寻找最近邻样本H,称为Near Hit,从和R不同类的样本中寻找最近邻样本M,称为NearMiss,然后根据以下规则更新每个特征的

2021-07-19 10:45:52 1995 3

原创 MySQL性能优化总结(更新)

MySQL性能优化总结(更新)常规优化长连接导致的OOM问题尽量不要使用查询缓存事务启动方式控制刷脏页速度否则会变慢如何正确的删除表避免使用orderBy语句避免使用函数计算就用不上索引redolog与binlog双1操作索引优化锁:常规优化长连接导致的OOM问题定期断开长连接。使用一段时间,或者程序里面判断执行过一个占用内存的大查询后,断开连接,之后要查询再重连。如果你用的是 MySQL 5.7 或更新版本,可以在每次执行一个比较大的操作后,通过执行 mysql_reset_connection

2021-07-18 21:52:49 921 2

原创 MySQL主备同步与主从同步

MySQL主备同步与主从同步主备同步binlog三种格式对比循环复制问题主备延迟问题并行复制能力及其演变MySQL 5.5 版本的并行复制策略MySQL 5.6 版本的并行复制策略(用的不多)MariDB并行复制策略MySQL 5.7 的并行复制策略MySQL 5.7.22 的并行复制策略一主多从读写分离主备同步MySQL通过binlog实现主备同步,其中实现的主要原理是binlog。在主备同步中从库B会设置为readonly。在状态 1 中,客户端的读写都直接访问节点 A,而节点 B 是 A 的备库,

2021-07-18 20:40:04 2194 2

原创 redolog与binlog笔记

redo log与binlog笔记从极客时间丁奇老师的课程中总结一条语句的简易更新流程redo log介绍binlog(归档)介绍redolog与binlog区别详细更新流程之两阶段提交为什么需要两阶段提交(反正法)?redo log的写入机制binlog写入机制MySQL双1操作组提交提升写入效率常见问题怎样让数据库恢复到半个月内任意一秒的状态(binlog归档)?redo log 和 binlog 是怎么关联起来的正常运行中的实例,数据写入后的最终落盘,是从 redo log 更新过来的还是从 buff

2021-07-13 14:24:55 476

原创 (六)并发工具类 CompletableFuture(异步编程)

CompletableFuture(异步编程)CompletableFuture异步化CompletionStage 接口串行关系AND 聚合关系OR 汇聚关系异常处理案例CompletableFuture优势CompletableFuture异步化异步化是并行方案得以实施的基础,更深入地讲其实就是:利用多线程优化性能这个核心方案得以实施的基础。例如:将两个串行的操作,交给新创建的子线程去执行,主线程无需等待这两个任务执行完毕,这就是所谓的异步化操作Java 在 1.8 版本提供了 Completa

2021-07-07 10:38:43 494 1

原创 (五)并发工具类FutureTask

FutureTask多线程返回实现FutureTaskFutureTask 实现案例FutureTask多线程利用excute方法虽然可以提交任务,但是却没有办法获取任务的执行结果(execute() 方法没有返回值)。Java 通过 ThreadPoolExecutor 提供的 3 个 submit() 方法和 1 个 FutureTask 工具类来支持获得任务执行结果的需求。// 提交Runnable任务Future<?> submit(Runnable task);// 提交Ca

2021-07-07 09:48:50 257

原创 线程池之提交优先级与执行优先级

问题发现在使用newfixedThreadPool时设置核心线程10,最大线程20,采用arrayBlockingQueue10。在for循环里打印i,以及线程id,发现线程的顺序是先打印1到10,然后打印21到30。也就是说后提交的数据中间输出。提交优先级提交优先级:就是先交付核心线程、等待队列、非核心线程。代码如下:public void execute(Runnable command) { if (command == null) throw new NullP

2021-07-04 17:14:55 2382 2

原创 (四)并发工具类ReadWriteLock(读写锁)与StampedLock(读写锁优化)

ReadWriteLock(读写锁)与StampedLock(读写锁优化)ReadWriteLock读写锁降级StampedLock乐观读ReadWriteLock针对读多写少这种并发场景,Java SDK 并发包提供了读写锁——ReadWriteLock,其目的在于分场景优化性能,提升易用性。读写锁都遵守以下三条基本原则:允许多个线程同时读共享变量;只允许一个线程写共享变量;如果一个写线程正在执行写操作,此时禁止读线程读共享变量。读写锁类似于 ReentrantLock,也支持公平模式和

2021-07-04 16:47:46 484

原创 (三)并发工具类Semaphore(真正的限流器)

Semaphore(限流)概述信号量模型使用方法概述CountDownLatch(门闩)与CyclicBarrier(栅栏)看似需要等待线程数达到相同的数量才能继续执行,但它们并不能作为限流器使用,例如实现一个车辆限流,小于10辆直接通行,大于10辆则等待。CountDownLatch(门闩)与CyclicBarrier(栅栏)在小10辆时也无法通行,因此不适合作为限流器使用。Semaphore信号量主要用于两个目的,一个是用于多个共享资源的互斥使用,另一个用于并发线程数的控制。信号量模型信号量模型

2021-07-04 16:20:58 162 2

原创 (二)并发工具类CountDownLatch(门闩)与CyclicBarrier(栅栏)

CountDownLatch(门闩)和CyclicBarrier(栅栏)CountDownLatch 实现线程等待CyclicBarrier 实现线程同步CountDownLatch 实现线程等待如何实现主线程需要等待子线程运行完毕才能运行,Java 并发包里已经提供了实现类似功能的工具类:CountDownLatch?定义:让一些线程阻塞直到另一些线程完成一些列操作之后才被唤醒。即使门闩的意思,给定一个数,当这个数被减到0时才能开始运行另一个线程。主要有两个方法一个是await方法等待,一个是co

2021-07-03 15:00:32 206

原创 (一)并发工具类Lock与Condition

Lock(互斥)与Condition(管程)概述可重入公平锁生产者消费者概述并发编程领域,有两大核心问题:一个是互斥,即同一时刻只允许一个线程访问共享资源;另一个是同步,即线程之间如何通信、协作。这两大问题,管程都是能够解决的。Java SDK 并发包通过 Lock 和 Condition 两个接口来实现管程,其中 Lock 用于解决互斥问题,Condition 用于解决同步问题。为什么不用synchronized?因为synchronized无法破坏死锁中的请求与保持条件, synchronize

2021-07-03 14:43:21 272

原创 (二)SpringBoot启动流程(概括)

SpringBoot启动流程(概括)Spring boot是Spring家族中的一个全新的框架,它用来简化Spring应用程序的创建和开发过程。特性1.自动配置:针对很多Spring应用程序和常见的应用功能,Spring boot能自动提供相关配置;:2.起步依赖:告诉Spring boot需要什么功能,它就能引入需要的依赖库;3.Actuator:让你能够深入运行中的Spring Boot应用程序,一探Spring boot程序的内部信息;4.命令行界面:这是Spring Boot的可选特性,

2021-06-29 15:39:05 378

原创 (一)Spring启动过程(概括)

Spring启动过程Spring在BeanFactory基础上提供了一些列具体容器的实现,其中AnnotationConfigApplicationContext是一个用来管理注解bean的容器,从AnnotationConfigApplicationContext的实现结构图中可以看出:AnnotationConfigApplicationContext继承GenericApplicationContext这个通用应用上下文,GenericApplicationContext内部定义了一个Defau

2021-06-29 15:33:23 852 1

原创 八 消息队列及Rabbitmq

八 消息队列及Rabbitmq消息队列基础八 Rabbitmq实现消息队列基础消息队列应用场景:解耦(耦合性高容错性低)、异步、削峰(秒杀项目将请求缓存起来)消息队列选型:消息队列缺点系统可用性降低(一旦MQ宕机);系统复杂性高(如下所示);一致性问题如何保证高可用?(以Rabbitmq为例)普通集群:1.在多台机器上分别启动RabbitMQ实例。2.多个实例之间可以相互通信。3.创建的Queue只会放在一个RabbitMQ上,其他实例都同步元数据。4.消费的时候,如果连接的没有Que

2021-06-27 15:37:54 172 1

原创 七 Freemarker(项目实现)

七 Freemarker(项目实现思路)初始用背景:目前的文章详情页是一 个普通html, 详情数据是需要经过请求发送到后端才能获得数据,静态化就是每个文章的页面都是独立的一个htm页面,不需要经过后端请求就能直接独立打开供用户浏览。而媒体类网站、或者电商商品页通常会进行页面静态化。页面静态化的优点:●更容易做SEO (被百度和某些其他搜索引擎收录)●加速用户访问,先展示主体部分,也就是文章的详情,然后其他数据异步加载●不经过url请求的同时也降低请求数据库的压力常见的模板引擎: JSP, F

2021-06-27 13:25:29 356

原创 十 ElasticSearch(分布式搜索引擎)

ElasticSearch(分布式搜索引擎,记录自己项目中的使用)Elasticsearch 是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎 Apache Lucene™ 基础上的搜索引擎.当然 Elasticsearch 并不仅仅是 Lucene 那么简单,它不仅包括了全文搜索功能,还可以进行以下工作:分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。实时分析的分布式搜索引擎。可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。核心概念(对比数据库)E

2021-06-27 13:19:42 247

原创 利用浏览器存储介质减少数据库压力(Redis)

利用浏览器存储介质减少数据库压力(Redis)背景:用户的基本信息几乎在每个页面都会查询,对与GetUserInfo这个接口来说压力就比较大(即使没有使用数据库的情况下解决措施:用户的基本信息并会频繁的操作,通过浏览器特性,可以存储在浏览器sessionStorage(前端),避免用户频繁刷新,造成的压力。浏览器存储介质其实本质上也可以称之为缓存,比如cookie, 就是早期我们使用最多的,目前用户的id以及token也是保存在cookie理的。通过保存数据后,那么可以获得并且和后端服务器交互。co

2021-06-26 21:35:15 378

原创 九 springcloud微服务

springcloud微服务springcloud微服务EurekaRibbonFeginHystrixZuulConfigBusStreamSleuthspringcloud微服务什么是微服务?简单来说,微服务就是把几个类似相似的功能放在一起, 对外提供接口调用,不论是前端调用,还是后端别的系统调用,只要他能尽到自己的职责,为他们提供服务,那么这就是微服务。服务之间彼此可以通过http调用,或者RestTemplate调用。为什么使用微服务?传统的单体架构虽然开发简单,部署简单(甚至不需要运维)

2021-06-26 21:28:19 152

原创 IDEA 报错Error creating bean with name ‘elasticsearchClient‘,

IDEA 报错Error creating bean with name ‘elasticsearchClient’,问题描述:由于IDEA需要elasticsearch的版本为6.8.7,于是就安装了6.8.7版本的elasticsearch,结果报错(可以先查看自己安装的版本是否与IDEA中一致)。解决方案:在你使用到elasticsearch的微服务的启动类中进行system.setProperty配置:@SpringBootApplication@MapperScan(basePac

2021-06-26 21:17:10 1129 2

原创 垃圾回收器GC(更新)

年轻代、老年代、永久代堆内存划分为三个区域年轻代、老年代、永久代。新生代 ( Young ) 又被划分为三个区域:Eden、From Survivor、To Survivor。 (to区永远是空的那一个)垃圾回收机制(就是清理堆)在java中,程序员是不需要显示的去释放一个对象的内存的,而是由虚拟机自行执行。在JVM中,有一个垃圾回收线程,它是低优先级的,在正常情况下是不会执行的,只有在虚拟机空闲或者当前堆内存不足时,才会触发执行,扫面那些没 有被任何引用的对象,并将它们添加到要回收的集合中,进

2021-03-28 16:40:37 250

原创 JVM对象(更新)

对象创建方式Header解释使用new关键字调用了构造函数使用Class的newInstance方法调用了构造函数使用Constructor类的newInstance方法调用了构造函数使用clone方法没有调用构造函数使用反序列化没有调用构造函数对象创建过程虚拟机遇到一条new指令时,先检查常量池是否已经加载相应的类,如果没有, 必须先执行相应的类加载。类加载通过后,接下来分配内存。若Java堆中内存是 绝对规整的,使用“指针碰撞“方式分配内

2021-03-28 16:18:58 159

原创 双亲委派模型

双亲委派模型概念:加载类的时候,⾸先会把该请求委派该⽗类加载器的 loadClass() 处理,因此所有的请求最终都应该传送到顶层的启动类加载器 BootstrapClassLoader 中。当⽗类加载器⽆法处理时,才由⾃⼰来处理。(从下往上,从上往下)代码:public class ClassLoaderDemo { public static void main(String[] args) { System.out.println("ClassLodarDemo's ClassLoad

2021-03-28 16:10:22 173

原创 JVM内存模型体系结构(更新)

JVM内存模型JVM内存模型类加载过程双亲委派运行时数据区对象执行引擎垃圾回收器(GC)JVM内存模型框架图:过程:首先通过编译器把 Java 代码转换成字节码,类加载器(ClassLoader) 再把字节码加载到内存中,将其放在运行时数据区(Runtime data area)的方法区内,而字节码文件只是 JVM 的一套指令集规范,并不能直接交给底层操作 系统去执行,因此需要特定的命令解析器执行引擎(Execution Engine),将 字节码翻译成底层系统指令,再交由 CPU 去执行,而这个过

2021-03-28 15:51:40 176

原创 synchronized与CAS(更新)

synchronized与CAS(更新)synchronized(重量级锁)synchronized概念synchronized原理CAS(轻量级锁)CAS概念CAS底层ABA问题对象:对象创建过程对象的访问定位有哪两种⽅式堆内存中对象的分配的基本策略对象内存布局对象头hotspot实现锁升级过程锁消除 lock eliminate锁粗化 lock coarsening锁降级synchronized(重量级锁)synchronized概念原子性:synchronized保证语句块内操作是原子的可见性

2021-03-26 17:33:14 536

原创 MySQL索引面试(更新)

MySQL索引索引介绍及特点:面试问题:谈谈你对索引的了解?什么是聚簇索引与非聚簇索引?数据库最左匹配原则索引介绍及特点:概念:索引就是一个数据结构,我们把表中的记录用一个适合高效查找的数据结构来表示,目的就是让查询变得更高效。优点:加快对表中记录的查找或排序缺点:创建索引和维护索引需要成本,这个成本随着数据量的增加而加大使用场景:数据库中表的数据量较大的情况下,对于查询响应时间不能满足业务需求,可以合理的使用索引提升查询效率。面试问题:谈谈你对索引的了解?首先几种适合快速查找的数据结构,

2021-03-26 11:08:35 113

原创 DCGAN生成cifar10的图片

DCGAN(Deep Convolutional GAN):DCGAN的贡献提出了一类基于卷积神经网络的GANs,称为DCGAN,它在多数情况下训练是稳定的。与其他非监督方法相比,DCGAN的discriminator提取到的图像特征更有效,更适合用于图像分类任务。通过训练,DCGAN能学到有意义的 filters。DCGAN的generator能够保持latentspace到image的“连续性”。DCGAN model实际上,DCGAN是一类GAN的简称,满足以下设计要求(这些要求更像

2021-03-21 16:22:58 1246

原创 如何用resnet网络建立基于cifar10的简单分类器

resnet:esNet在2015年被提出,在ImageNet比赛classification任务上获得第一名,因为它“简单与实用”并存,之后很多方法都建立在ResNet50或者ResNet101的基础上完成的,检测,分割,识别等领域里得到广泛的应用。它使用了一种连接方式叫做“shortcut connection”,顾名思义,shortcut就是“抄近道”的意思,下面是这个resnet的网络结构:详细内容请查看链接文件夹结构及配置:data下存放cifar10数据集models下存放res

2021-03-21 16:10:25 758

原创 Java中Deque、Queue与Stack用法

Queue(单向队列):Queue接口,是集合框架Collection的子接口,是一种常见的数据结构,遵循先进先出的原则。是基于链表来进行实现,的单向队列。LinkedList接口,实现了Queue,所以LinkedList,在插入和删除操作,效率会比较高。//定义字符类型的单向队列Queue<Character> queue = new LinkedList<>();poll():将队首的元素删除,并返回该元素。peek():返回队首的元素,但不进行删除操作。offe

2021-03-11 20:24:11 1157

原创 Java多模块项目国际化

Java国际化:假设我们正在开发一个支持多国语言的Web应用程序,要求系统能够根据客户端的系统的语言类型返回对应的界面:英文的操作系统返回英文界面,而中文的操作系统则返回中文界面——这便是典型的i18n国际化问题。对于有国际化要求的应用系统,我们不能简单地采用硬编码的方式编写用户界面信息、报错信息等内容,而必须为这些需要国际化的信息进行特殊处理。简单来说,就是为每种语言提供一套相应的资源文件,并以规范化命名的方式保存在特定的目录中,由系统自动根据客户端语言选择适合的资源文件。SpringMVC国际化:

2021-03-05 13:19:46 566 2

原创 多模块项目No message found under code ‘loginname‘ for locale ‘zh_CN‘.

问题描述:Java多模块项目场景下找不到message配置文件,并且报错。No message found under code ‘loginname’ for locale ‘zh_CN’.文件存放位置如下:spring-mvc.xml配置如下: <!--国际化--> <bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"&g

2021-03-01 14:36:18 2294

原创 动态规划Dynamic programming笔记自用

动态规划Dynamic programming笔记笔记用途介绍及解题思路例题:CoinChange题目类型分类坐标型动态规划Unique PathsUnique Paths II最小路径和轰炸敌人(Bomb Enemy)序列型动态规划Paint House涂房子2(Paint House2)最长连续单调子序列Decode Ways比特位技术(Counting Bits)打家劫舍(House Robber)打家劫舍 II(House Robber II)买卖股票的最佳时机(Best Time To Buy A

2021-02-23 15:55:44 473 1

原创 从二进制角度理解快速乘与快速幂

前提知识:十进制与二进制相互转换n&1 (与操作): 判断 n 二进制最右一位是否为 1如为1则返回真n>>1 (移位操作): n 右移一位(可理解为删除最后一位,n除以2)快速乘法模板:无论是快速乘法a∗ba*ba∗b还是快速幂 aba^{b}ab ,对其进行二进制拆分,把b拆成二进制形式。 a∗b=a∗(a*b=a*(a∗b=a∗(ck-1∗2k−1+*2^{k-1}+∗2k−1+ck-2∗2k−2+*2^{k-2}+∗2k−2+ck-3∗2k−3+*2^{k-3}+

2021-02-09 14:16:18 261

原创 java对多级目录文件夹压缩并解压(亲测不乱码)

文件夹压缩与解压:利用apache提供的ant.jar,提供对单个文件与目录的压缩,并支持是否需要创建压缩源目录、中文路径并且提供了测试类import org.apache.tools.zip.ZipEntry;import org.apache.tools.zip.ZipFile;import org.apache.tools.zip.ZipOutputStream;import java.io.*;import java.util.Enumeration;import java.uti

2021-01-31 15:30:13 1435 1

原创 java如何从excel中读取、写入信息(POI)

注意事项:从excel中读取文件的内容应该没一行一列都有对应元素素,如下图所示:POI读取excel代码:import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.text.DecimalFormat;import java.text.SimpleDateFormat;import java.util.

2021-01-31 15:05:47 331 3

原创 遍历xml多级树形结构

问题描述:清楚电脑中不堪入目的恶意插件以及恶意弹窗:解决方案:提示:这里填写该问题的具体解决方案:例如:新建一个 Message 对象,并将读取到的数据存入 Message,然后 mHandler.obtainMessage(READ_DATA, bytes, -1, buffer).sendToTarget();换成 mHandler.sendMessage()。...

2021-01-29 10:52:56 423

原创 如何从torch官网下载相对应的torch版本

问题描述:在复现Github上论文代码时需要,安装与之对应的版本包,但有时候包的版本不对应,会导致代码无法运行。解决方案:下载最新版本的torch登录 https://pytorch.org/,移动至如图处,根据需要,选择对应的版本,OS:你的操作系统,Package:你的安装方式,Language:编程语言,CUDA:你的显卡的版本,如何查看请根据:https://blog.youkuaiyun.com/qq_38295511/article/details/89223169。复制相关命令在命令行运行就可

2020-12-21 20:47:26 15057 7

原创 Leetcode刷题顺序(自用更新中)

Leetcode刷题顺序与总结(更新中)文章目录Leetcode刷题顺序与总结(更新中)前言一、数组1.二分法二、链表总结前言刷题顺序:先从同一类型里题目开始刷起,同一类型里再从简单到中等到困难刷起,题型顺序建议:数组-> 链表-> 哈希表->字符串->栈与队列->树->回溯->贪心->动态规划->图论。整理一些自己在刷题时的想法,参考链接:https://github.com/youngyangyang04/leetcode-master

2020-12-09 20:55:12 1311

原创 从头开始上传项目至Github

从头开始上传项目至Github文章目录从头开始上传项目至Github前言一、Git的下载与安装二、上传1.本地打开bash2.输入git init3.输入git add .4.输入git commit -m "first commit" .5.输入git remote add origin https://自己的仓库url地址三、问题解决1.输入git remote add origin https://自己的仓库url地址时报错前言首先需要下载Git一、Git的下载与安装Git最新下载网

2020-12-09 10:27:10 284

原创 java Swing点击按钮新建界面卡死

项目场景:java Swing问题描述:通过点击按钮调用本机摄像头,出现原Jframe与调用摄像头Jframe卡死 原因分析:原Jrame是一个线程,新建的调用摄像头Jframe可能与原Jframe冲突,因此将调用摄像头的代码写入新开的线程即可解决方案:新建线程。@Override new Thread() { public void run() { //写插入的代码 try {

2020-12-08 10:22:34 958 1

原创 no opencv_java430 in java.library.path

no opencv_java430 in java.library.path问题状况解决措施问题状况在导入Java opencv包后,编译运行出现错误解决措施去官网https://opencv.org/下载,把opencv_java430.dll 放在C:\Program Files\Java\jdk1.8.0_231\bin 目录下即可运行成功。...

2020-12-08 09:59:53 2046

空空如也

空空如也

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

TA关注的人

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