自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

路漫漫 始于足下

博客 让生活更充实

  • 博客(147)
  • 资源 (11)
  • 收藏
  • 关注

原创 十大经典排序算法小结

排序可以说是套路最多的基本算法了,今天来了兴致,那就总结一下这十大排序算法吧。冒泡法:这可以算是知名度最高的算法之一了吧,可以说不会这个算法都不好意思说自己写过代码。冒泡排序是最简单的排序之一了,其大体思想就是通过与相邻元素的比较和交换来把小的数交换到最前面。这个过程类似于水泡向上升一样,因此而得名。不多说了,直接上代码:#include#includeusing namespac

2017-04-15 20:52:10 2403 4

原创 dijkstra算法模板(优先队列优化)

dijkstra算法是由荷兰计算机科学家狄克斯特拉于1959年提出的,因此又叫狄克斯特拉算法。是从一个顶点到其余各顶点的最短路径算法,解决的是有向图中最短路径问题。迪杰斯特拉算法主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。 常规的dijkstra算法复杂度较高,为O(n^2),因为要花大量时间来找当前已知的距顶点距离最小的值,所以用优先队列(值小的先出队列)来优化

2015-11-21 10:42:12 12142 2

原创 JVM的BUG!?Java类静态初始化里启线程,居然导致main函数阻塞!!!

先来看这个代码是咋写的public class Lazy { public static boolean init = false; static { Thread t = new Thread(() -> init = true); t.start(); try { t.join(); ...

2019-07-20 21:55:05 665 1

原创 《深入理解计算机系统》1.3:计算机系统漫游

目录系统之间利用网络通信重要主题Amdahl定律并发和并行计算机系统中抽象的重要性系统之间利用网络通信现代系统经常通过网络和其他系统连接到一起,从一个单独的系统来看,网络可视为一个IO设备。当系统从主存复制一串字节到网络适配器时,数据流经过网络到达另一台机器,而不是比如说到达本地磁盘驱动器。相似地,系统可以读取从其他机器发送来的数据,并把数据复制到自己的主存。我...

2019-06-08 23:19:07 298

原创 《深入理解计算机系统》1.2:计算机系统漫游

目录高速缓存至关重要存储器层次结构操作系统管理硬件进程虚拟内存文件高速缓存至关重要hello程序的机器指令最初是存放在磁盘上,程序加载时,它们被复制到主存;当处理器运行时,指令又从主存复制到处理器。相似地,数据串"hello, world\n"开始时在磁盘上,然后被复制到主存,最后从主存复制到显示设备。这些复制,都是开销。系统设计者的一个主要目标就是使这些复制操作尽...

2019-06-08 00:02:34 322

原创 《深入理解计算机系统》1.1:计算机系统漫游

目录信息 = 位+上下文系统的硬件组成1.总线2.I/O设备3.主存4.处理器运行hello程序​信息 = 位+上下文系统中的所有信息,包括磁盘文件、内存中的程序、内存中存放的用户数据以及网络上传送的数据,都是由一串比特表示的。区分不同数据对象的唯一方法是我们读到这些数据对象时的上下文。比如在不同的上下文中,一个同样的字节序列可能表示一个整数、浮点数、字符...

2019-05-29 23:56:42 264

原创 Flyway简介与应用(SpringBoot整合Flyway)

目录什么是Flyway?为什么要使用Flyway?SpringBoot集成Flyway基本概念1.Versioned Migrations2.Repeatable Migrations使用其它什么是Flyway?Flyway是一款开源的数据库版本管理工具,Flyway可以独立于应用实现管理并跟踪数据库的变更,Flyway根据自己的约定,不需要复杂的配置就可以...

2019-04-21 14:17:47 2147

原创 《CleanCode-代码整洁之道》读书笔记

一本非常经典的书,读了之后,我感觉在如何写出简洁优雅的高质量代码方面对我很有启发。书中从各个方面,列举了许多原则与标准,但我们写代码的时候,不可能将这些东西都清楚记着并时刻提醒自己不能“违规”,这样就如同负重前行,不仅走得慢,还会累死。所以我个人总结了以下几条比较通用且重要的规则:  1. 一切代码与注释都是有实际意义的,没有冗余,整洁干净  2. 代码能通过所有测试,运行高效  3....

2018-08-03 00:31:42 16679

原创 Java中的IO技术简介

Linux网络IO模型简介1.阻塞IO模型2.非阻塞IO模型3.IO复用模型4.信号驱动IO模型5.异步IOIO多路复用技术Java的IO发展简史BIO伪异步IONIOAIO四种IO的对比[最好列出表格]...

2018-06-30 17:33:23 1089

原创 2PC,3PC,Paxos,ZAB

    首先我们要了解,什么是分布式一致性问题?    这个问题,我还真没找到明确定义。不过我个人的理解是:在一个分布式系统中,如何使多方达到一致性状态的问题,包括不同数据副本之间的一致性,数据修改的一致性,决策的一致性等等。关于这个问题,人们提出了许多经典的解决方案,下面我们就简单介绍几种。2PC    是Two-Phase-Commit的缩写,即二阶段提交,是计算机网络尤其是在数据库领域内,为...

2018-06-30 16:50:13 2443

原创 分布式入门:从集中式到分布式

    本文主要想简单介绍一下分布式的一些特点,分布式存在的一些问题以及分布式事务。集中式与分布式    既然讲到分布式,我们首先讲一讲集中式。曾经很长一段时间,由于大型主机强势地发展,集中式才是主流。大型机拥有卓越的性能和良好的稳定性,人们都喜欢将服务部署在一台大型机上。但集中式存在着一些问题:大型机价格昂贵,经济成本高。大型机运维人才培养成本高,需要运维人员掌握其技术细节。集中式有明显的单点问...

2018-05-19 16:43:44 1253

原创 自主实现RPC工具-myrpc

    源码位置:https://github.com/AsPhilosopher/myrpc    源码下载:https://download.csdn.net/download/jobsandczj/10309380    RPC(Remote Procedure Call),远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。在如今分布式盛行的年代,这一...

2018-03-16 17:54:05 1169 1

原创 数据库唯一序列号生成方案

首先,我们得知道为什么需要制定数据库唯一序列号生成方案,难道MySQL的主键自增长不好用吗?当然不是。由于现在的业务数据量越来越大,有时候将数据放在一张表里,压力非常大,所以要进行分库分表。一旦进行了分库分表,用MySQL自带的自增长主键就会有问题了。如何保证生成一个唯一的不重复的主键,这是一个严肃的问题。   我今天介绍一种方案,也是我公司的实现方案之一。几个模块如下: 1. 先定义一张表,

2017-12-22 14:49:23 8536

原创 自创简易加密算法

前几日和同事聊天,说到经常忘记密码,但记在一些地方,又不放心。我们就想,要是实现一个加密算法,每次记录加密结果,需要时再解密,那问题不就迎刃而解了嘛。后来根据需求,设计了一个基于异或的对称加密算法。算法非常简单:1.先定义一个由一系列不规则字符组成的盐值(SALT),然后生成一个密钥,密钥是一个整数数组,里面的值随机生成,对应盐值字符串的下标。2.加密时,根据密钥与盐值生成一个用来加密

2017-12-08 16:24:57 9894 3

原创 阿里开发规范终极版整理(精简)

Java开发规范命名【规范】类名使用UpperCamelCase 风格,必须遵从驼峰形式,但以下情形例外: ( 领域模型的相关命名 )DO / BO / DTO / VO 等。正例: MarcoPolo / UserDO / XmlService / TcpUdpDeal / TaPromotion反例: macroPolo / UserDo / XMLService /

2017-09-21 11:01:56 18774 1

原创 CopyOnWriteArrayList与ConcurrentHashMap原理解析

CopyOnWriteArrayList这两个都是非常常用的并发类,先从CopyOnWriteArrayList讲起。这个类我们从名字可以看出,他是在进行写操作时进行复制,因而其它线程进行读操作时不会出现并发问题。它的实现也很简单,我们来看一段简单源码:public boolean add(E e) { final ReentrantLock lock = this.lock;

2017-07-13 22:49:22 1225

原创 ServiceLoader原理解析

最近在公司的项目里看到了ServiceLoader这个类,就好奇地去了解了一下。我们都知道,根据一个类去找它的父类或者接口那很简单。毕竟类加载的时候,相关信息都加载进去了。但反过来就不简单了,那就是根据接口去找所有实现类。这个类主要作用就是加载某个接口的实现类。类似的功能,我以前用注解的形式实现过。就是扫描包,然后根据注解信息判断是否是某个类的子类,然后进行加载。但这显然是个不大好的方法,

2017-07-11 16:58:50 1608

原创 Java并发编程-活跃度问题

在讲问题前,我先说明一下什么是活跃度?一个并发应用及时执行的能力称作活跃度。我主要讲死锁问题,顺带介绍一下饥饿,弱响应性和活锁。死锁死锁这个词大家都听过,我先来罗列一下产生死锁的四个必要条件:(1) 互斥条件:一个资源每次只能被一个进程使用。(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。(3) 不剥夺条件:进程已获得的资源,在末使用

2017-06-25 21:46:31 815

原创 TCP为啥要三次握手,四次挥手?

三次握手“三次握手”,可以说是一个家喻户晓的名词,但为什么要这么麻烦,要握三次呢?不能一两次就解决咯,省得这么麻烦。那自然是有原因的。我们先来说一说三次挥手的简单过程:下面我们说说为什么需要三次握手,还是上图吧:其实三次握手一个很重要的原因,是为了避免服务器资源浪费。有时候,客户端发的第一次请求由于网络延迟等原因,没有及时到达服务器。因此客户端已经将这个请求

2017-06-25 12:00:46 583

原创 Executor框架相关类及原理

在并发编程中,经常会用到Executor这个框架,Executor就是Runnable和Callable的调度容器,今天我就来总结一下几个常用的类及相关原理。Runnable这个在多线程里几乎无所不在,连Thread类都是它的实现类。publicinterface Runnable { /** * When an object implementing inte

2017-06-06 13:21:05 557

原创 ThreadLocal原理解析

ThreadLocal从这个名字大概就能听出它是干啥的,差不多就是将一个变量绑定到一个线程上,解决一些并发问题并且使代码变得更优雅。那它是怎么将变量绑定到线程上的呢?我们先看Thread类源码,/* ThreadLocal values pertaining to this thread. This map is maintained * by the ThreadLocal c

2017-05-19 13:35:37 429

原创 自己实现一个简易的SpringMVC

上回实现了一个简易的Spring,那就顺便实现一些SpringMVC吧。自己实现的架构比较简单,下面简单介绍一下。源码下载:http://download.csdn.net/detail/jobsandczj/9844308实现思路及工作流程:定义一个DispatcherServlet,用来做请求入口。初始化时,去读取配置文件,获得Controller的包,然后“注入”Controll

2017-05-17 10:13:09 849

原创 自己实现的一个简易Spring框架(IoC+AOP)

IoC和AOP是Spring的核心,可以说没有他们就没有庞大的Spring家族。我也是心血来潮,自己动手写了一个简易的Spring框架。可以通过使用注解来实现IoC容器和AOP。先说IoC部分吧。源码下载:http://download.csdn.net/detail/jobsandczj/9841126IoC先定义了两个注解@MyBean和@MyAutowired,用来标记Bean和

2017-05-12 21:25:47 1469 5

原创 Java中的多线程常用方法

多线程一直是Java的一个重点和难点,前两天小结了一下。synchronized和Lock我们都知道ArrayList是非线程安全的,就拿它开刀。下面这个程序简单地展示了synchronized和Lock的用法。package temp.test;import java.util.ArrayList;import java.util.List;import java.util.

2017-05-11 20:11:57 610

原创 Spring AOP的一些基础知识

什么是AOPAOP是Spring的核心内容之一,Spring能有今天,它功不可没。那什么是AOP呢?我们先来让他和OOP进行对比一下,下面有一段描述比较不错,我就直接引用了。AOP的一些基础概念描述AOP常用的一些术语有通知(Adivce)、连接点(Join point)、切点(Pointcut)、切面(Aspect)、引入(Introduction)、织入

2017-05-10 16:23:36 410

原创 Java中的四大引用(强引用,弱引用,软引用,虚引用)

引用这个概念经常被提及,今天总结一下。强引用强引用即(StrongReference)我们最常使用的引用,A a=new A()。这个a就是一个强引用。软引用即(SoftReference),Object obj = new Object();SoftReference sf = new SoftReference(obj);obj = null;sf.g

2017-05-09 11:22:36 659

原创 数据库隔离级别以及Spring事务传播

数据库隔离级别说这个问题之前我们先说说三个概念。脏读当一个事务正在访问数据,并且对数据进行了修改,但这个修改了的数据还没提交到数据库中,然后另一个事务也访问了这个数据,那么我们就称这个事务读到的数据是脏数据。这个错误过程就叫脏读。不可重复读在同一个事务内,多次读同一个数据。在这个事务还没结束时,另一个事务也访问这条数据并做了修改最后提交了修改数据。那么第一个事务可能在某次读的数

2017-05-08 20:34:00 557

原创 Struts2和Hibernate原理与架构

前一阵子写了《深入分析JavaWeb技术内幕》的读书笔记,最后一章写的是框架。趁此机会把另外两个比较流行的框架也一起介绍了。Struts2整体架构先看一下Struts2的整体架构:现在的FilterDispatcher已经过时,替换成了StrutsPrepareAndExecuteFilter。改进的意义:处理流程在上述过程中所有的对象(Action,Res

2017-05-07 18:47:22 985

原创 设计模式之---总结

前面已经把设计模式都介绍了一遍,最后做个总结。先说分类:可根据模式的目的即模式是用来做什么的将模式分为三类:创建型( Creational)、结构型( Structural)、或行为型( Behavioral )三种。创建型模式与对象的创建有关;结构型模式处理类或对象的组合;行为型模式对类或对象怎样交互和怎样分配职责进行描述。Java设计模式之创建模式包括:Factory,

2017-05-06 18:42:29 740

原创 《深入分析JavaWeb技术内幕》读书笔记九.Spring,SpringMVC,MyBatis

这三个框架在JavaWeb项目中非常常见,书中也对它们进行了相关介绍,但书中讲的是iBatis,我这里则介绍MyBatis。这三个框架都非常优秀,也不是三言两语能讲清楚的,我这里只是对它们的架构和原理进行简单的介绍,具体应用请自行学习。SpringSpring的骨骼架构从这幅图中我们可以看出Spring的核心组件只有三个:Core、Context和Bean。它们构建起了整个Spri

2017-05-06 16:14:14 1056

原创 《深入分析JavaWeb技术内幕》读书笔记八.Tomcat

书中介绍了两个Servlet引擎,分别是Jetty和Tomcat。由于本人更熟悉Tomcat,所以只讲Tomcat部分吧。书中也明确说了,Tomcat很复杂,不是一章内容能说清楚的。这一章以Tomcat5为基础,也兼顾Tomcat6。Tomcat的基本设计思路和架构是有一定连续性的。Tomcat的总体结构ServiceServerLifecycle

2017-05-06 00:02:34 938

原创 设计模式之---访问者模式

package visitor;public interface IVisitor { void visit(Element element); }package visitor;public abstract class Element { public abstract void accept(IVisitor visitor); public abstract

2017-05-05 19:46:33 483

原创 设计模式之---解释器模式

解释器模式是个不怎么常用的设计模式。我们先来举一个简单的例子说明它。a+b-c这么一个表达式,+,-都是非终结符表达式,a,b,c都是终结符表达式。非终结表达式一般是文法中的运算符或者关键字,而终结表达式一般是文法中的运算单元。package interpreter;import java.util.HashMap;import java.util.Map;public clas

2017-05-05 19:04:57 274

原创 设计模式之---享元模式

下面来个实例,大家应该就明白了。package flyweight;public interface Flyweight { void operate();}package flyweight;public class FlyweightA implements Flyweight { @Override public void operate() { // TODO

2017-05-05 09:30:07 365

原创 《深入分析JavaWeb技术内幕》读书笔记七.Servlet,Session与Cookie

这三个东西接触过JavaWeb的同学应该都很熟悉吧,我们就依次聊一聊这三个东西。ServletServlet容器Servlet与Servlet容器就好比子弹和枪,枪为子弹而生而子弹又让枪有了杀伤力。它们通过标准化接口来相互协作,彼此依存却又独立发展。Servlet容器作为一个独立发展的标准化产品,目前种类繁多,它们有各自的市场定位,各有特点,很难说孰优孰劣。我们则选择Tom

2017-05-04 16:44:33 456

原创 设计模式之---中介者模式

有时候,几个对象之间会相互影响,我们把这些会相互影响的对象叫做”同事“,如果我们显示地去执行他们之间的相互影响的话,代码会变得很臃肿并且难以维护。所以我们引入中介者来帮我们维护他们之间的相互关系,这样就减少了系统耦合。比如,在一个能量守恒的系统里,两股能量是此消彼长,但总和不变。我们要用代码模拟并且每股能量都是单独的一个对象的话,这个关系我们便可以用中介者来维护。package media

2017-05-04 14:11:48 289

原创 设计模式之---命令模式

定义:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。package command;public class Receiver { public void doSomething(){ System.out.println("接收者执行业务逻辑处理"); } }

2017-05-04 11:42:20 378

原创 设计模式之---桥接模式

还是举例说明吧!现在有一个问题,那就是手机和手机应用。手机有很多牌子,应用也有很多,那某个手机上的应用,该怎么实现呢。第一种架构:这种架构非常简单,但有个明显的问题,那就是可扩展性差。比如再来一种手机或者应用,那类又得增加好几个。他虽然符合开放封闭原则,但却违背了职责单一性原则,即一个类应该只有一个引起它变化的原因。这个时候,桥接模式就派上用场了。从UML类图里我们就能看出来,

2017-05-04 10:23:50 393

原创 《深入分析JavaWeb技术内幕》读书笔记六.JVM

JVM体系结构何谓JVMJVM体系结构详解类加载器执行引擎Java内存管理JVM工作机制机器如何执行代码JVM为何选择基于栈的架构执行引擎的架构设计JIT:JVM在执行时会记录某个方法的执行次数,如果执行的次数到了一个阈值(客户端一般是1500次,服务器一般是1000

2017-05-03 15:29:52 587

原创 设计模式之---迭代器模式

现在很多编程语言都通过发语法糖来支持这种模式了,比如Java的for-each,但我们对这个模式做个了解还是有必要的。package iterator;public interface Iterator { public Object next(); public boolean hasNext(); } package iterator;impor

2017-05-03 11:18:35 328

JVM调优.pptx

JVM调优分享,简单的一些分享,希望能帮助大家。凑字数真的烦!!!

2019-10-27

myrpc-自主实习的RPC工具框架

自主实现的RPC工具框架,非常方便使用与学习,非常高效,可靠

2018-03-26

自主实现的简易SpringMVC

自主实现的简易SpringMVC 一个控制器

2017-05-17

自主实现的简易Spring框架

自主实现的简易Spring框架,通过注解实现IoC容器和AOP。

2017-05-12

模拟Spring的IoC容器实现注解自动装配

自己实现的简易的模拟Spring的IoC容器,实现注解自动装配

2017-05-10

2016年第四届湘潭大学新生趣味程序设计竞赛题解

2016-12-19

MyBlog(个人博客)

个人技术类博客,支持多种代码格式和动态地图。

2016-12-08

游戏OOXX棋

原创小游戏 内含人机对战

2016-06-24

源程序OOXX

OOXX源程序,java开发

2016-06-08

小游戏OOXX

java开发的小游戏,期末课程设计。

2016-06-08

OOXX源代码

自创游戏OOXX的源代码

2016-05-13

空空如也

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

TA关注的人

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