自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 启发式算法

什么是启发式算法启发式算法一般用于解决NP-hard问题,其中NP是指非确定性多项式。启发式算法(Heuristic Algorithm)有不同的定义:一种定义为,一个基于直观或经验的构造的算法,对优化问题的实例能给出可接受的计算成本(计算时间、占用空间等)内,给出一个近似最优解,该近似解于真实最优解的偏离程度不一定可以事先预计;另一种是,启发式算法是一种技术,这种技术使得在可接受的计算...

2019-04-09 22:34:47 795

转载 BIO/NIO/同步/异步/阻塞/非阻塞

在高性能的IO体系设计中,有几个名词概念常常会使我们感到迷惑不解。具体如下: 序号问题1什么是同步?2什么是异步?3什么是阻塞?4什么是非阻塞?5什么是同步阻塞?6什么是同步非阻塞?7什么是异步阻塞?8什么是异步非阻塞?散仙不才,在查了一部分资料后,愿试着以通俗易懂的方式解释下这几个名词。如...

2018-10-07 15:32:46 493

转载 Spring Bean生命周期详解

  在Spring中 Bean 可谓是一个核心的元素,当我们结合Spring进行编程的时候也离不开Bean,面对这样重要的一个角色,了解其生命周期和该生命周期所涉及的环节对我们更加熟练灵活地使用Bean是很有Bean必要的,下面我们就来详细分析下Bean的生命周期吧。生命周期流程图  我...

2018-10-06 19:50:38 274 1

转载 线程池原理

线程池的优点1、线程是稀缺资源,使用线程池可以减少创建和销毁线程的次数,每个工作线程都可以重复使用。2、可以根据系统的承受能力,调整线程池中工作线程的数量,防止因为消耗过多内存导致服务器崩溃。线程池的创建1 public ThreadPoolExecutor(int corePoolSize,2 int maximumPool...

2018-09-29 21:04:57 185

转载 正确建立索引以及最左前缀原则

索引建立的原则用于索引的最好的备选数据列是那些出现在WHERE子句、join子句、ORDER BY或GROUP BY子句中的列。仅仅出现在SELECT关键字后面的输出数据列列表中的数据列不是很好的备选列SELECTcol_a <- 不是备选列FROMtbl1 LEFT JOIN tbl2ON tbl1.col_b = tbl2.col_c <- 备选列WHEREcol...

2018-09-28 13:54:42 486

转载 Linux kill进程

 long long ago,曾有一个想法,就是完全脱离windows,使用linux生活、工作。以前迫于各种专业工具不支持linux,只能无奈的使用xp。最近工作内 容是android移植+单片机开发,android就不说了,必须用linux开发。单片机也找到一些linux的工具,于是乎有...

2018-07-29 13:16:23 147

转载 SVN教程

1、Svn介绍SVN全名Subversion,即版本控制系统。SVN与CVS一样,是一个跨平台的软件,支持大多数常见的操作系统。作为一个开源的版本控制系统,Subversion管理着随时间改变的数据。这些数据放置在一个中央资料档案库(repository)中。这个档案库很像一个普通的文件服务器,不过它会记住每一次文件的...

2018-06-29 21:10:51 195

转载 Protobuf3教程

定义一个消息类型 指定字段类型分配标识号指定字段规则添加更多消息类型添加注释保留标识符(Reserved)从.proto文件生成了什么?标量数值类型默认值枚举使用其他消息类型 导入定义使用proto2消息类型嵌套类型更新一个消息类型AnyOneof 使用OneofOneof 特性...

2018-06-27 11:49:15 25314

转载 Linux下使用g++编译C++

单个源文件生成可执行程序下面是一个保存在文件 helloworld.cpp 中一个简单的 C++ 程序的代码:/* helloworld.cpp */#include <iostream>int main(int argc,char *argv[]){ std::cout << "...

2018-06-22 20:28:06 2201

转载 SSH服务的安装、启动和卸载

1.查看ssh服务的状态输入以下命令:sudo service sshd status如果出现Loaded: error (Reason: No such file or directory)提示的话,说名没有安装ssh服务,按照第二步:安装ssh服务。如果出现Active: inactive (...

2018-06-22 20:15:17 10374

转载 Python时间格式化

对于时间数据,如2016-05-05 20:28:54,有时需要与时间戳进行相互的运算,此时就需要对两种形式进行转换,在Python中,转换时需要用到time模块,具体的操作有如下的几种:将时间转换为时间戳重新格式化时间时间戳转换为时间获取当前时间及将其转换成时间戳1、将时间转换成时间戳将...

2018-06-09 16:25:15 1891

转载 get/post 幂等性

理解HTTP幂等性基于HTTP协议的Web API是时下最为流行的一种分布式服务提供方式。无论是在大型互联网应用还是企业级架构中,我们都见到了越来越多的SOA或RESTful的Web API。为什么Web API如此流行呢?我认为很大程度上应归功于简单有效的HTTP协议。HTTP协议是一种分布式的面向资源的网络应用层协议,无论是服务器端提供Web服务,还是客户端消费Web服务都非常简单。再加上浏

2018-05-09 18:26:37 9509

转载 TCP流量控制和拥塞控制

流量控制 - Flow Control拥塞控制 - Congestion Control1 慢启动 - Slow Start 和 拥塞避免 - Congestion Avoidance2 快重传 - Fast Retransmission 和 快恢复 - Fast Recover两者简单比较1. 流量控制 - Flow Control序言:数据的传送与接收过程当中很可能出现收方来不及接收的

2018-04-02 14:45:31 200

转载 MySQL隔离级别和封锁协议

一直以来对数据库的事务隔离机制的理解总是停留在表面,其内容也是看一遍忘一边。这两天决定从原理上理解它,整理成自己的知识。查阅资料的过程中发现好多零碎的概念如果串起来足够写一本书,所以在这里给自己梳理一个脉络,具体的内容参考引文或在网上搜一下。由于平时接触最多的是MySQL,所以文章中某些部分是MySQL特有的特性,请读者注意。数据库并发操作会引发的问题:多个事务同时访问数据库时候,会发生下列5类问题

2018-04-02 12:53:23 2298

转载 MySQL索引详解

什么是索引?1、索引索引是表的目录,在查找内容之前可以先在目录中查找索引位置,以此快速定位查询数据。对于索引,会保存在额外的文件中。2、索引,是数据库中专门用于帮助用户快速查询数据的一种数据结构。类似于字典中的目录,查找字典内容时可以根据目录查找到数据的存放位置,然后直接获取即可。索引由数据...

2018-04-02 11:57:58 228

转载 内部类笔记

这是我学习Java内部类的笔记1.为什么使用内部类?使用内部类最吸引人的原因是:每个内部类都能独立地继承一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影响1.1.使用内部类最大的优点就在于它能够非常好的解决多重继承的问题,使用内部类还能够为我们带来如下特性:(1)、内部类可以用多个实例,每个实例都有自己的状态信息,并且与其他外围对象的信息相互独。(2)、在单个...

2018-03-25 11:17:11 138

转载 ConcurrentHashMap实现原理

  ConcurrentHashMap是Java并发包中提供的一个线程安全且高效的HashMap实现(若对HashMap的实现原理还不甚了解,可参考我的另一篇文章HashMap实现原理及源码分析),ConcurrentHashMap在并发编程的场景中使用频率非常之高,本文就来分析下ConcurrentHashMap的实现原理,并对其实现原理进行分析(JDK1.7).ConcurrentHashM...

2018-03-21 22:12:33 1614

原创 this引用逃逸

this逃逸就是说,在构造函数返回之前,其他线程就已经取得了该对象的引用,由于构造函数还没有完成,所以,对象也可能是残缺的,所以,取得对象引用的线程使用残缺的对象极有可能发生错误的情况,因为这两个线程是异步的,取得对象引用的线程并不一定会等待构造对象的线程完结后在使用引用。this逃逸经常发生在构造器中启动新线程的时候,如:public class ThreadThisEscape { ...

2018-03-21 21:25:05 763

转载 并发内存模型和volatile

在多线程环境中,我们需要考虑的主要问题是:线程之间如何进行通信,在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信。在消息传递的并发模型里,线程之间没有公共状态,线程之间必须通过明确的发送消息来显式进行通信。Java的并发采用的是共享内存模型,Java线程之间的通信总是隐式进行,整个通信过

2018-03-21 21:02:43 119

原创 网段划分和IP地址范围

将192.8.8.0~~~192.8.8.256 分为尽可能 IP 数量 接近的4个网段,这四个网段的子网掩码地址是多少,每一个子网可分配给主机的IP地址范围是多少?1.C类地址192.168.8.0,默认情况下的子网掩码是255.255.255.0,首先我们要懂子网掩码这个东西ipv4的地址共32位的二进制数表示。那么:默认子网掩码十进制表示:255.255.255.0,那么二进制怎么表示?如下...

2018-03-16 14:48:52 35959

转载 InnoDB和MyISAM区别

区别:1. InnoDB支持事务,MyISAM不支持,对于InnoDB每一条SQL语言都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语言放在begin和commit之间,组成一个事务; 2. InnoDB支持外键,而MyISAM不支持。对一个包含外键的InnoDB表转为MYISAM会失败; 3. InnoDB是聚集索引,数据文件是和索引绑在一起的,必须要有主键,通过主键索引效...

2018-03-15 15:39:35 137

转载 TCP三次握手四次挥手

建立TCP需要三次握手才能建立,而断开连接则需要四次握手。整个过程如下图所示:先来看看如何建立连接的。【更新于2017.01.04 】该部分内容配图有误,请大家见谅,正确的配图如下,错误配图也不删了,大家可以比较下,对比理解效果更好。这么久才来更新,抱歉!!错误配图如下:首先Client端发送连接请求报文,Server段接受连接后回复ACK报文,并为这次连接分配资源。Client端接收到ACK报文

2018-03-12 20:21:31 135

转载 TCP/IP相关知识点

第一部分:TCP/IP相关知识点 对TCP/IP的整体认 链路层知识点 IP层知识点 运输层知识点 应用层知识点 (这些知识点都可以参考:http://www.cnblogs.com/newwy/p/3234536.html) 第二部分:常见面试题 TCP协议和UDP协议的区别是什么

2018-03-11 22:03:32 205

原创 排序算法之快速排序

package sort;import java.util.Arrays;public class QuickSort { private static final int CUTOFF = 10; public static void main(String[] args) { int[] a = {4,9,32,6,18,2,10,18,9,7,9,25,12}; q...

2018-03-05 16:44:55 174

原创 排序算法之归并排序

package sort;import java.util.Arrays;public class MergeSort { /** * @param args */ public static void main(String[] args) { int[] a = {3,6,2,9,5,8,7,1,4}; System.out.println(Arrays.toSt...

2018-03-04 21:30:41 121

转载 排序算法总结

排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。    当n较大,则应采用时间复杂度为O(nlog2n)的排序方法:快速排序、堆排序或归并排序序。   快速排序:是目前基于比较的内部排序中被认为是最好的方法,当待排序的关键字是随机分布时,快速排序的平均时间最短;   ...

2018-03-04 16:34:04 420

原创 排序算法之堆排序

package sort;import java.util.Arrays;public class HeapSort { public static void main(String[] args) { int[] a = {3,6,2,9,5,8,7,1,4}; heapSort(a); System.out.println(Arrays.toString(a)); }...

2018-03-04 16:08:47 208

原创 排序算法之希尔排序

package sort;import java.util.Arrays;public class ShellSort { public static void main(String[] args) { int[] a = {3,6,2,9,5,8,7,1,4}; shellSort(a); System.out.println(Arrays.toString(a));...

2018-03-03 21:35:12 129

原创 排序算法之插入排序

package sort;import java.util.Arrays;public class InsertionSort { public static void main(String[] args) { int[] a = {3,6,2,9,5,8,7,1,4}; insertionSort(a); System.out.println(Arrays.toSt...

2018-03-03 20:15:34 106

转载 IT牛们的bat面试心得与经验总结

面试心得与总结 面试心得与总结—BAT、网易、蘑菇街 之前实习的时候就想着写一篇面经,后来忙就给忘了,现在找完工作了,也是该静下心总结一下走过的路程了,我全盘托出,奉上这篇 诚意之作,希望能给未来找工作的人一点指引和总结, 也希望能使大家少走点弯路 , 如果能耐心读完,相信对你会找到你需要的东 西。 先说一下LZ的基本情况,LZ是四川某985学校通信专业的研究生(非计算机),大学阶段也就学

2018-02-03 22:41:42 211

原创 经典最大子序列和问题

//最大子序列和问题的四种算法//注意以下算法只是求出最大的和,并没有找出对应的子序列public class MaxSubSum { public static void main(String[] args) { int[] a = { 4, -3, 5, -2, -1, 2, 6, -2 }; System.out.println(maxSubSum1(a)); Syst

2018-02-03 19:09:52 182

转载 java 23种设计模式

设计模式的分类总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。其实还有两类:并发型模式和线程池模式

2018-01-28 15:42:59 186

原创 java线程状态图

关于java线程状态,网上有很多错误的图。下面是个人认为比较合理的解释。由Thread.State的定义可知,java中线程共有6种状态:1. NEW至今尚未启动的线程处于这种状态。 2. RUNNABLE正在 Java 虚拟机中执行的线程处于这种状态。 3. BLOCKED受阻塞并等待某个监视器锁的线程处于这种状态。 4. WAITING无限期地等待另一个

2018-01-27 16:25:48 650

原创 生产者消费者问题

public class ProducerConsumer { public static void main(String[] args) { SyncStack ss = new SyncStack(); Producer p = new Producer(ss); Consumer c = new Consumer(ss); new Thread(p).start();

2018-01-27 14:46:00 188

原创 死锁小程序

//死锁小程序,经常发生在同步中嵌套同步public class DeadLock { public static void main(String[] args) { new Thread(new DeadLockThread(true)).start(); // 如果让线程休眠一毫秒,发现有时能锁上有时锁不上。休眠两毫秒基本锁不上。// 这说明判断锁还是比较耗时的操

2018-01-25 21:13:32 384

转载 进程和线程的联系及区别

1.定义进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.2.关系

2018-01-25 12:21:19 153

转载 HashMap实现原理

哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,而HashMap的实现原理也常常出现在各类的面试题中,重要性可见一斑。本文会对java集合框架中的对应实现HashMap的实现原理进行讲解,然后会对JDK7的HashMap源码进行分析。目录  一、什么是哈希表  二、HashMa

2018-01-20 20:41:15 234

原创 cascade算法的java实现

import java.util.ArrayList;import java.util.Arrays;import java.util.Collections;import java.util.HashSet;import java.util.LinkedList;import java.util.List;import java.util.Random;import java.ut

2018-01-16 16:53:52 976

原创 matplotlib基本作图方法小结

matplotlib作为python的基本绘图包,用起来还是挺方便的,与matlab大同小异。个人觉得比matlab的图稍微好看一些。科研中用的最多的还是折线图,下面是其基本用法:import matplotlib.pyplot as pltx = [1,2,3,10]y = [8,5,4,12]#可用字符串表示线的样式,比如"b^-",ms是标记大小,label是图例#还可以根据需

2018-01-16 16:47:11 3218

转载 java各版本新特性总结

Java5:1、泛型 Generics:        引用泛型之后,允许指定集合里元素的类型,免去了强制类型转换,并且能在编译时刻进行类型检查的好处。        Parameterized Type作为参数和返回值,Generic是vararg、annotation、enumeration、collection的基石。        A、类型安全           抛弃List、Map,

2018-01-15 15:22:59 4995

空空如也

空空如也

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

TA关注的人

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