自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

浪迹白杨的博客

会弹吉他的程序猿

  • 博客(28)
  • 资源 (7)
  • 收藏
  • 关注

原创 DDD领域建模

DDD领域建模

2022-06-26 23:42:19 1400 1

原创 RPC框架

RPC

2022-06-26 22:34:20 309

原创 Redis

Redis

2022-06-26 22:15:30 261

原创 分库分表中间件

分库分表

2022-06-26 15:33:31 1339

原创 mybatis

mybatis

2022-06-25 23:57:17 494

原创 慢SQL优化

慢SQL

2022-06-25 23:47:23 1869

原创 Mysql之innodb

innodb

2022-06-25 14:46:33 2360

原创 Kafka

kafka

2022-06-25 14:27:38 11137 3

原创 搜索基本概念

搜索入门

2022-06-05 15:14:51 878

原创 JVM之监控与运维

1、JDK自带命令工具--jstat查看JVM中各种信息包括内存情况,GC次数等2、JDK自带命令工具--jmap生成java堆信息3、JDK自带命令工具--jstack生成虚拟机当前时刻线程快照,也就是每一条线程正在执行的方法对栈集合,生成快照的目的是为了定位线程出现长时间停顿或无相应的原因4、JDK可视化工具--JConsole可以对内存、线程等信息进行监控,但分析能力较弱5、JDK可视化工具--Visual VM除了拥有更强大的监控以外,还具备较强的分析能力,其中B

2021-09-21 13:45:55 194

原创 JVM之垃圾回收

1、 回收算法1.1、Java堆对象回收判断(1)引用计数法给对象添加一引用计数器,被引用一次计数器值就加 1,实现简单,但是无法解决循环依赖(2)可达性分析法(默认)从GC Roots 到这个对象是否可达,在Java语言中,可作为 GC Roots 的对象包括下面几种:a. 虚拟机栈(栈帧中的局部变量表)中引用的对象。b. 方法区中常量或类静态属性引用的对象。c. 本地方法栈中 JNI(Native方法)引用的对象1.2、永久代(方法区)回收判断永久代的垃圾收集主要

2021-09-21 13:44:47 109

原创 JVM之类加载机制

1、类加载流程加载:指的就是将class文件加载到内存中,并将这些静态数据转换成方法区中的运行时数据结构,在堆中生成一个java.lang.Class对象。验证:要确保加载的信息符合jvm的规范,没有安全问题。准备:给类变量(静态变量)分配内存,并设置初始值。解析:虚拟机常量池的符号引用替换为直接引用的过程。初始化:初始化是执行clinit方法(类构造方法)的过程,也就是执行静态变量赋值或者静态代码块卸载:一个已经加载的类型被卸载的几率很小,一般来说用户自定义类加载器加载的类是可

2021-09-21 13:43:51 91

原创 JVM之内存模型

1、 CPU和内存的交互在计算机中,cpu和内存的交互最为频繁,相比内存,磁盘读写太慢,内存相当于高速的缓冲区。但是随着cpu的发展,内存的读写速度也远远赶不上cpu。因此cpu厂商在每颗cpu上加上高速缓存,用于缓解这种情况。现在cpu和内存的交互大致如下。在多核cpu中,每个处理器都有各自的高速缓存(L1,L2,L3),而主内存确只有一个 。虽然加入高速缓存解决了处理器和内存的矛盾(一快一慢),但是引来了新的问题 -缓存一致性1.1、缓存一致性如何保证多个处理器运算涉及到同一个.

2021-09-21 13:42:07 205

原创 一种带有超时功能的CompletableFuture异构任务并发工具

1、背景通常我们会有多个异构(异构:是指任务不同,返回结果也不同;同构:同一类型的任务,返回结果也相同)任务并发执行,且需要整合所有返回结果的场景。比如,构建一个商品信息,我需要知道商品的基础信息--标题、详描,还需要知道运费,以及库存等信息。这个3个服务,返回结果是异构的,而且没有关联,因此可以并发的去分别查询,然后汇总结果。我们很容易想到使用Java8里面的并发包CompletableFuture。可是我们调用外部服务时很有可能会超时,而CompletableFuture没有超时功能,为了服务间相互

2021-09-21 13:15:52 1416

原创 Mysql之Innodb锁模式和死锁解析

一. 背景知识InnoDB与MyISAM的最大不同有两点:一是支持事务(TRANSACTION);二是采用了行级锁。由于后面的死锁问题基本都是并发事务的前提下发生,因此我们先了解一下事务的相关知识。1、事务的ACID属性事务是由一组SQL语句组成的逻辑处理单元,事务具有以下4个属性,通常简称为事务的ACID属性。原子性(Atomicity):事务是一个原子操作单元,其对数据的修改,......

2018-10-11 23:22:44 1502

翻译 Java构造器的调用顺序和多形性

在读到《Java编程思想》一文中的构造器部分时,觉得有几个知识点印象深刻,故在此记录一下,仅当随笔。一、构造器的调用顺序在深层继承的复杂对象中,构建器的调用顺序到底是怎样的呢。首先,我们知道衍生类(子类)在继承基础类(父类)时可以访问基础类的任何public 和 protected 成员。这意味着在使用衍生类的时候,必须能假定基础类的所有成员都是有效的。为达到这个要求,唯一的办法就是首先调用基础类...

2018-07-03 00:01:15 306 2

原创 Java抽象类与接口

一、抽象类的概念通俗一点说,抽象类就是用abstract关键字进行修饰的类,不能直接实例化(为什么不能直接实例化?有些答案指出是因为抽象类中的抽象方法未实现,无法分配内存空间,为了安全,不允许直接实例化。但事实上,抽象类中可以只包含普通方法而不包含抽象方法,所以个人觉得这是由Java语法规定的,是一种设计上的需要,其目的是为了被子类继承)。一般情况下,抽象类会包含抽象方法,而抽象方法则是将普通方法...

2018-07-01 22:23:30 266 1

原创 基于Gson的Http请求解析long型日期时出错的解决方案

在http的post方法中,我们通常使用Gson来实现对象和Json的相互转换。然而,原生的Gson在将包含Date类型对象序列化的过程中,会自动将Date类型转换为long型。此时若想反序列化对象,则Gson将会抛出一个JsonSyntaxException,表示解析失败。那么为什么会失败呢?通过查看源码可知,Gson默认的日期适配器DateTypeAdapter,只支持这种“yyyy-MM-d...

2018-06-26 00:11:23 2410

原创 Java中的final关键字解析

我们有时会发现jdk的源码中经常出现final这个关键字,那么它到底有什么作用呢?只是一种规范?还是说在某种场景下有性能上的优化?首先我们从字面意义上进行初步阐述,final的英文意思是:最终的,不可更改的。也就是说被final关键字修饰的“东西”至少具有某种不变的性质。事实上,我们可根据“东西”的类别来分别描述final关键字的作用。一、修饰类(非抽象类)若final关键字修饰类,则表示该类不能...

2018-06-16 12:26:24 256

原创 ubuntu16.04安装TensorFlow的正确步骤

一、查看系统所安装的python版本打开终端输入指令:python,如图1所示,我的系统是ubuntu16.04.03,默认安装的python版本为2.7.12。图1二、安装python对应版本的pip和依赖包若python版本为2.7,则输入如下命令:sudo apt-get install python-pip python-dev若python版本为3.x

2017-11-29 22:58:46 64931 19

原创 详谈String的intern()方法

Java中String的intern()方法,其设计的初衷就是重用String对象,以节省内存消耗。但是在JDK1.6和JDK1.7中intern()方法的功能有点点不同,具体怎么个不同法,且看看下面代码,这个例子是网上流传较广的一个例子:String s1 = new String("1"); s1.intern(); String s2 = "1"; System.out.pr

2017-10-20 10:10:14 685

原创 ubuntu14.04编译openjdk7

一、编译环境准备首先我们打开终端输入指令:java -version,来查看是否已安装jdk,以及安装的版本。若果已经安装了jdk,则请先卸载!(当然可以不用卸载,只是想尽量避免一些干扰)1、ANT等编译工具下载首先打开终端输入指令:sudo apt-get install build-essential gawk m4 libasound2-dev libcups2-dev libx

2017-09-26 17:51:12 700

原创 dubbo分布式框架中swagger环境的搭建

一、swagger环境搭建在安装swagger前,需要先创建一个名为swagger的文件夹用于启动swagger的根目录,比如,在D盘的Program Files文件夹下新建了一个名为swagger的文件夹。1.安装node.js首先去nodejs官网(https://nodejs.org/en/download/)下载最新版本的nodejs进行安装,安装成功后,我们在之前创建的swa

2017-09-18 11:38:41 4079

原创 详谈Java设计模式之原型(Prototype)模式

一、概念原型模式属于对象的创建模式。通过给出一个原型对象来指明所有创建的对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象。二、复制原理在Java中,原型模式的实现主要通过原型对象(Prototype类)的复制来完成。Prototype类需具备如下条件。实现Cloneable接口。其实Cloneable接口是个空接口,你可以任意定义实现类的方法名,如cloneA

2017-09-12 17:29:13 426

原创 详谈Java设计模式之外观模式(门面模式)

一、概念外观模式(Facade)为子系统中的一组接口提供一个统一的高层接口,这个接口使得子系统更容易被使用或访问。外观模式又称为门面模式,它是一种对象结构型模式。二、结构外观模式结构如图1所示,主要有三种角色。1、子系统角色(SubSystem):实现子系统功能,并对外提供接口2、外观角色(Facade):封装子系统功能,对外提供满足客户需求的接口3、客户角色(Client

2017-09-11 15:14:53 441

原创 VMware12.5.7安装Ubuntu16.04.2失败的解决方案

当我们在VMware12.5.7中安装Ubuntu16.04.2时,在重启之后会出现黑屏并显示:[    0.641455] cpufreq: cpufreq_online: Failed to initialize policy for cpu: 0 (-19)如果忽略这个问题,再次重启之后可以勉强进入Ubuntu界面,但是安装不了VMware tools工具,因为VMware tools光盘里...

2017-09-06 10:26:09 7506 4

原创 CentOS 7中安装指定的Kernel版本

我们在CentOS 7中安装了gcc以后,往往还需要安装对应版本的kernel作为依赖,如图1所示。图1这时我们该怎么安装这个kernel版本呢,其实很简单,我们只需要输入如下指令:sudo yum install "kernel-devel-uname-r == $(uname -r)"然后出现如图2所示下界面。图2我们选择'y',然后出现如图3所示的界面

2017-09-05 20:43:49 25990

原创 一种基于平均思想的任务分配算法

假设现在有20个任务需要分配给员工去做,但是每个员工手头上还有未完成的任务,且未完成任务数不同。

2017-08-28 19:37:52 28178 10

hsdis-amd64.dll和hsdis-i386.dll

windows下的HotSpot虚拟机JIT编译代码的反汇编插件,有32位和64位两个版本,放在类似\jre1.8.0_141\bin\server和\jdk1.8.0_1414\jre\bin\server目录下即可

2017-11-03

基于Dubbo框架的简易支付系统源码

该项目是基于dubbo分布式微服务框架的完整商业项目源码,项目的主体框架为dubbo +spring+mybatis,涵盖了Redis、读写分离、CMS、分布式部署nginx、Restful API开发、HttpClient、FastDFS、Zookeeper、keepalive等多个技术模块

2017-09-13

javaweb实战项目之网上书城

该项目是javaweb技术的实战操作,采用了MVC设计模式,包括基本的entity,jscript,servlet,以及ajax异步请求,查询分页,持久化层方法的封装等等,对javaweb技术的巩固很有帮助,为J2EE的学习打下基础。

2017-09-07

服务器TCP接收数据并存入access数据库VB程序(支持多线程)

服务器TCP接收数据并存入access数据库VB程序(支持多线程)

2016-05-03

基于BH1415F的数控调频发射器设计

类似校园广播电台的数控调频发射器,单片机,BH1415F

2016-05-03

接收客户端数据并写到数据库(支持多线程)

本代码为服务端程序,主要功能是接收远程客服端(联网的pc机或手机)发来的数据,可同时接收多个客服端的数据发送请求(多线程处理)并将数据写到数据库(oracle或mysql)。

2016-05-03

空空如也

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

TA关注的人

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