
理论知识
文章平均质量分 78
一名路过的小码农啊
逆风的方向更适合飞翔,不怕万人阻挡,只怕自己投降
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JAVA|IO(BIO,NIO,AIO)详解
目录同步、异步、阻塞、非阻塞1.同步2.异步3.阻塞4.非阻塞BIONIOAIOBIO、NIO、AIO适用场景分析:同步、异步、阻塞、非阻塞同步、异步主要针对io数据读写来定义的,读写数据过程中不阻塞线程称为异步io,否则,称为同步io。1.同步用户进程触发IO操作并等待或者轮询的去查看IO操作是否完成2.异步用户触发IO操作以后,可以干别的事,IO操作完成以后再通知当前线程继续处理阻塞、非阻塞主要是针对线程发起io请求后,是否立即返回来定义的原创 2020-07-08 10:31:19 · 635 阅读 · 0 评论 -
JAVA泛型详解
目录引言概述特性(泛型擦除)泛型应用泛型类泛型接口泛型方法泛型通配符通配符上限通配符下限引言下面这段程序public class GenericTest { public static void main(String[] args) { List list = new ArrayList(); list.add("qqyumidi"); list.add("corn"); ...原创 2020-07-06 09:12:19 · 397 阅读 · 0 评论 -
网络协议|HTTP协议详解
目录简介发展史 (1)HTTP/0.9 (2)HTTP/1.0(3)HTTP/1.1 (4)HTTP/2总结HTTP常用的请求方式HTTP请求头HTTP响应头HTTP状态码COOKIE和SESSIONHTTPS简介 HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快...原创 2020-07-04 18:31:03 · 797 阅读 · 0 评论 -
B树、B+树、红黑树详细解析
目录B树特性结构应用:B+树特性数据结构应用:红黑树特性数据结构应用:相关问题B树跟B+树比较B树特性一个m阶的B树具有如下特征:根结点至少有两个子女。 每个中间节点都包含k-1个元素和k个孩子,其中 m/2 <= k <= m 每一个叶子节点都包含k-1个元素,其中 m/2 <= k <= m 所有的叶子结点都位于同一层。 每个节点中的元素从小到大排列,节点当中k-1个元素正好是k个孩子包含的元素.原创 2020-06-27 19:20:24 · 1893 阅读 · 1 评论 -
设计模式详解|原型模式
概述原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式是实现了一个原型接口,该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时,则采用这种模式。例如,一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象,在下一个请求时返回它的克隆,在需要的时候更新数据库,以此来减少数据库调用。原型模式:用原型实例指定创建对象的种类,并通过拷贝这些原型创建新的对象浅拷贝:将一原创 2020-06-23 16:16:54 · 151 阅读 · 0 评论 -
设计模式详解|建造者模式
目录概述数据结构优缺点实现概述建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。建造者模式:将一个复杂对象的构建与它的表示分离,使得相同的构建过程可以创建不同的表示。它关注如何一步一步的创建一个复杂的对象,如果用了建造者模式,那么用户就只需要指定需要建造的类型就可以.原创 2020-06-23 15:33:42 · 308 阅读 · 0 评论 -
设计模式详解|单例模式
目录概述适用场景优缺点实现饿汉式懒汉式概述单例模式是一种创建型模式许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统一读取,然后服务进程中的其他对象再通过这个单例对象获取这些配置信息。这种方式简化了在复杂环境下的配置管理。适用场景需要生成唯一序列的环境 需要频繁实例化然后销毁的对象。 创建对象时耗时过多或者耗资源过多,但又经常用到...原创 2020-06-23 10:22:19 · 189 阅读 · 0 评论 -
JVM 内存结构|1.7 1.8 区别详解
目录概述JVM内存分配各个分区介绍1.7和1.8区别概述字节码文件生成:首先Java源代码文件(.java后缀)会被Java编译器编译为字节码文件(.class后缀),然后由JVM中的类加载器加载各个类的字节码文件,加载完毕之后,交由JVM执行引擎执行。在整个程序执行过程中,JVM会用一段空间来存储程序执行期间需要用到的数据和相关信息,这段空间一般被称作为Runtime Data Area(运行时数据区),也就是我们常说的JVM内存。因此,在Java中我们常常说到的内存管理.原创 2020-06-17 15:25:28 · 5610 阅读 · 0 评论 -
java并发|synchronized关键字和锁升级过程详解
目录synchronized使用场景用法应用方式:实现原理:锁优化1、锁升级2、锁粗化3、锁消除synchronized使用场景用法synchronized可用来给对象和方法或者代码块加锁,当它锁定一个方法或者一个代码块的时候,同一时刻最多只有一个线程执行这段代码。应用方式:作用于实例方法,当前实例加锁,进入同步代码前要获得当前实例的锁;作用于静态方法,当前类加锁,进去同步代码前要获得当前类对象的锁;作用于代码块,对括号里配置的对象加锁...原创 2020-06-17 14:05:38 · 671 阅读 · 0 评论 -
设计模式|模板方法
目录模板方法概述模板方法模式结构与实现角色策略模式的优缺点优点缺点具体实现具体方法钩子函数模板方法概述模板方法的定义如下:定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模板方法模式是一种基于继承的代码复用技术,它是一种类行为型模式。在程序开发中,经常会遇到这种情况:某个方法要实现的算法需要多个步骤,但其中有一些步骤是固定不变的,而另一些步骤则是不固定的。为了提高代码.原创 2020-05-25 21:05:52 · 263 阅读 · 0 评论 -
设计模式|策略模式
目录策略模式概述策略模式结构与实现策略模式的适用场景策略模式的优缺点主要优点主要缺点具体实现策略模式概述策略模式定义如下:策略模式(Strategy Pattern):定义一系列算法类,将每一个算法封装起来,并让它们可以相互替换,策略模式让算法独立于使用它的客户而变化,也称为政策模式(Policy)。策略模式是一种对象行为型模式。在策略模式中,我们可以定义一些独立的类来封装不同的算法,每一个类封装一种具体的算法,在这里,每一个封装算法的类我们都可以称之.原创 2020-05-17 15:49:47 · 154 阅读 · 0 评论 -
JAVA|String 类详解
目录String 特性字符串常量池实例解析一、两个字符串常量二、new方式新建三、常量字符串拼接四、变量拼接五、常量拼接六、加了final修饰的拼接字符串总结1.String类初始化后是不可变的(immutable)2.引用变量与对象3.创建字符串的方式4.使用String不一定创建对象5.使用new String,一定创建对象String中方法intern方法String中的“+”String、StringBuffer、St.原创 2020-05-17 11:21:56 · 190 阅读 · 0 评论 -
设计模式|适配器模式
目录适配器模式概述适配器模式结构与实现对象适配器类适配器接口适配器具体实现笔记本电脑的工作电压大约是20V,而我国的家庭用电是220V,如何让20V的笔记本电脑能够在220V的电压下工作?答案是引入一个电源适配器(AC Adapter),俗称充电器或变压器,有了这个电源适配器,生活用电和笔记本电脑即可兼容。再例如,读卡器是作为内存卡和笔记本之间的适配器。将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。在软件开发中,有时也存在类似这种不兼容的原创 2020-05-16 20:51:10 · 398 阅读 · 0 评论 -
设计模式|代理模式
目录代理模式概述代理模式结构与实现案例分析静态代理JDK动态代理Cglib代理代理模式是常用的结构型设计模式之一,当无法直接访问某个对象或访问某个对象存在困难时可以通过一个代理对象来间接访问,为了保证客户端使用的透明性,所访问的真实对象与代理对象需要实现相同的接口。根据代理模式的使用目的不同,代理模式又可以分为多种类型,例如保护代理、远程代理、虚拟代理、缓冲代理等,它们应用于不同的场合,满足用户的不同需求。代理模式概述代理模式是一种应用很广泛的结构型设计模式。代理原创 2020-05-15 19:27:33 · 183 阅读 · 0 评论 -
leetcode|打家劫舍
198. 打家劫舍你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。 偷窃到的最高金额 = 1 + 3 = 4 。.原创 2020-05-14 11:56:36 · 166 阅读 · 0 评论 -
设计模式详解|装饰器模式
目录装饰器模式装饰模式概述装饰模式结构与实现具体案例装饰器模式装饰模式可以在不改变一个对象本身功能的基础上给对象增加额外的新行为,在现实生活中,这种情况也到处存在,例如一张照片,我们可以不改变照片本身,给它增加一个相框,使得它具有防潮的功能,而且用户可以根据需要给它增加不同类型的相框,甚至可以在一个小相框的外面再套一个大相框。装饰模式概述装饰模式是一种用于替代继承的技术,它通过一种无须定义子类的方式来给对象动态增加职责,使用对象之间的关联关系取代类之间的继承关系。在装饰模式中原创 2020-05-13 16:29:04 · 284 阅读 · 0 评论 -
设计模式|工厂模式详解
目录简单工厂模式的定义与特点模式的结构与实现具体案例工厂方法模式的定义与特点模式的结构与实现具体案例抽象工厂模式的定义与特点模式的结构与实现具体案例:工厂模式(Factory Pattern)是最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。用一个单独的类来做创造实例的过程,就是工厂。简单工厂模式的原创 2020-05-13 13:21:28 · 687 阅读 · 0 评论 -
剑指offer
数值的整数次方给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0需要判断exponent<0的情况。 public double Power(double base, int exponent) { if(exponent==0)return 1; if(exponent==1)return base; double res=expone原创 2020-05-12 14:39:31 · 180 阅读 · 2 评论 -
设计模式|面向对象设计的七大原则
综述单一职责原则 开闭原则 里氏转换原则 依赖倒转原则 接口隔离原则 合成/聚合复用原则 迪米特法则为什么要提倡“Design Pattern呢?根本原因是为了代码复用,增加可维护性。那么怎么才能实现代码复用呢?设计模式就是实现了这些原则,从而达到了代码复用、增加可维护性的目的。面向对象设计原则为支持可维护性复用而诞生,这些原则蕴含在很多设计模式中,它们是从许多设计方案中总结出的指导性原则。面向对象设计原则也是我们用于评价一个设计模式的使用效果的重要指标之一,在设计模式的学习中,经原创 2020-05-09 09:39:09 · 433 阅读 · 0 评论 -
设计模式详解|观察者模式
目录模式的定义与特点模式的结构与实现实现方式具体应用程序示例它用于建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应作出反应。在观察者模式中,发生改变的对象称为观察目标,而被通知的对象称为观察者,一个观察目标可以对应多个观察者,而且这些观察者之间可以没有任何相互联系,可以根据需要增加和删除观察者,使得系统更易于扩展。模式的定义与特点观察者模式(Observer Pattern):定义对象之间的一种一对多依赖关系,使得每当一个对象状态...原创 2020-05-09 09:15:54 · 307 阅读 · 0 评论 -
java 并发
1.happens-before对共享变量的写操作对其他线程的读操作可见线程解锁对象之前对变量的写,对于接下来对m加锁的其他线程对该变量的读可见 线程对volatile变量的写,对接下来其他线程对该变量的读可见 线程start前对该变量的写,对该线程开始后对该变量的读可见 线程结束前对该变量的写,对其他线程得知它结束后的读可见 线程t1打断t2(interrupt)前对变量的写,对...原创 2020-05-06 22:11:15 · 318 阅读 · 0 评论 -
数据库
1.数据库ACID性质原子性(Atomicity):事务所包含的所有操作,要么全部成功,要么全部回滚。一致性(Consistency):事务的开始前和结束前,数据库的一致性没有被破坏隔离性(Isolation):隔离性是当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启的事务,不能被其他事务的操作所干扰,多个并发事务之间要相互隔离。持久性(Durability)...原创 2020-05-04 14:33:43 · 447 阅读 · 0 评论 -
设计模式专栏
创建型模式单例模式某个类只能存在一个对象实例饿汉式(静态常量)public class Singleton { private static Singleton instance = new Singleton(); private Singleton (){ } public static Singleton getInstanc...原创 2020-05-01 11:54:05 · 611 阅读 · 0 评论 -
jvm
1.jvm结构程序计数器:当前线程所执行的字节码的行号指示器,用于记录正在执行的虚拟机字节指令地址,线程私有 注:如果正在执行的是Native方法,计数器值则为空 虚拟机栈:存放局部变量表、操作数栈、动态链接、方法出口,线程私有 本地方法栈:和虚拟栈相似,只不过它服务于本地方法,线程私有 堆:java内存最大的一块,所有对象实例、数组都存放在java堆,GC回收的地方,线程共享 方法...原创 2020-04-28 20:59:02 · 157 阅读 · 0 评论 -
操作系统
1.进程、线程区别1、进程是资源分配的最小单位,线程是程序执行的最小单位(资源调度的最小单位)2、进程有自己的独立地址空间,每启动一个进程,系统就会为它分配地址空间,建立数据表来维护代码段、堆栈段和数据段,这种操作非常昂贵。而线程是共享进程中的数据的,使用相同的地址空间,因此CPU切换一个线程的花费远比进程要小很多,同时创建一个线程的开销也比进程要小很多。3、线程之间的通信更方便,同一进程...原创 2020-04-27 16:05:12 · 173 阅读 · 0 评论 -
计算机网络
1.计算机网络分层OSI分层 (7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。TCP/IP分层(4层):网络接口层、 网际层、运输层、 应用层。五层协议 (5层):物理层、数据链路层、网络层、运输层、 应用层。2.TCP和UDP区别1.TCP是面向连接的,UDP是无连接的 2.TCP是可靠传输,UDP提供的是不可靠传输 3.TCP提供点对点的通...原创 2020-04-27 16:05:31 · 367 阅读 · 0 评论 -
什么是 AES-GCM加密算法
AES是一种对称加密算法,它的相关概念在此不赘述。GCM ( Galois/Counter Mode) 指的是该对称加密采用Counter模式,并带有GMAC消息认证码。在详细介绍AES-GCM之前,我们先了解一些相关概念。下文中出现的符号:Ek使用秘钥k对输入做对称加密运算XOR异或运算Mh将输入与秘钥h在有限域GF(2^128)上做乘法ECB( Electronic Mode 电子密码本模式)...转载 2018-03-01 14:55:31 · 4713 阅读 · 0 评论 -
机器学习实战 绘制决策树源代码
from math import *import operatordef calcShannonEnt(dataSet): numEntries=len(dataSet) labelCounts={} for featVec in dataSet: currentLabel=featVec[-1] if currentLabel not in labelCounts.keys()原创 2018-01-25 15:54:03 · 395 阅读 · 0 评论 -
决策树图形展示
绘图工具,基于python的Matplotlib,绘出决策树图形,以下代码亲测可用从原始数据集中创建决策树,并使用python函数库绘制树形图。#coding=UTF-8import matplotlib.pyplot as pltdecisionNode = dict(boxstyle="sawtooth",fc="0.8")leafNode=dict(boxstyle="roun原创 2018-01-26 10:24:48 · 2868 阅读 · 3 评论 -
KNN算法
最近在看机器学习实战这本书,第二章KNN算法,照着书上的代码敲了一遍,python+numpy库函数,感觉用起来还是不错的,附上KNN算法代码from numpy import *from os import *import operatordef createDataSet(): group=array([[1.0,1.1],[1.0,1.0],[0,0],[0,0.1]]) la原创 2018-01-25 11:26:32 · 853 阅读 · 0 评论 -
Merkle Tree(默克尔树)算法解析
Merkle Tree概念 Merkle Tree,通常也被称作Hash Tree,顾名思义,就是存储hash值的一棵树。Merkle树的叶子是数据块(例如,文件或者文件的集合)的hash值。非叶节点是其对应子节点串联字符串的hash。[1]1、HashHash是一个把任意长度的数据映射成固定长度数据的函数[2]。例如,对于数据完整性校验,最简单的方法是对整个数据做Ha转载 2018-01-24 16:39:45 · 337 阅读 · 0 评论 -
第五章 Logistic回归
from numpy import *def loadDataSet(): dataMat=[];labelMat=[] fr=open('testSet.txt') for line in fr.readlines(): lineArr=line.strip().split() dataMat.append([1.0,float(lineArr[0]),float(lineArr原创 2018-01-31 15:10:55 · 401 阅读 · 0 评论 -
RSA 中的平方-乘 ,模幂运算
考虑模指数,即计算形如的函数,在RSA密码体制中,加密和解密运算都是模指数运算。计算 可以通过c-1次模乘来实现,然而,如果c非常大,其效率会很低下。著名的平方-乘可以把计算所需的模乘的次数降低。以计算 X24为例:X24 将指数表示为 二进制形式 X11000 表示为Xb1b2b3b4b5开始扫描指数的每个Bit: 下面的红体表示数值为2进制表示原创 2018-01-22 17:11:51 · 11577 阅读 · 0 评论 -
群签名与环签名
啊,好久没有写博客了,都长草了,最近在看论文,想记录一下自己看到、学到的东西。关于群签名http://en.wikipedia.org/wiki/Group_signature 维基百科群签名的安全性要求1) 完整性(Soundness and completeness) 有效的签名能够被正确验证2) 不可伪造性(Unfo原创 2018-01-22 15:49:07 · 10726 阅读 · 0 评论