- 博客(92)
- 资源 (11)
- 收藏
- 关注
原创 初识Netty
Netty介绍:2、事件驱动的含义,根据客户端的ACCPECT、等等事件进行处理的同步模型与异步模型各层次封装原型netty的应用场景
2022-02-20 15:04:14
299
1
原创 RabbitMq延迟队列
延时队列,延时队列内部是有序的,最重要的特性就体现在它的延时属性上,延时队列中的元素是希望在指定时间到了以后或之前取出和处理,简单来说,延时队列就是用来存放需要在指定时间被处理的元素的队列死信队列其实也是延迟队列,因为正常队列中设置时间就会发送到死信队列中(消息过期)...
2022-01-26 09:31:01
131
原创 RabbitMq 死信队列
死信队列死信,顾名思义就是无法被消费的信息。一般来说,producer将消息投递到broker或者直接到queue里,consumer从queue取出消息进行消费,但某些时候由于特定的原因导致queue中的某些消息无法被消费,这样的消息如果没有后续的处理,就变成了死信(Dead Letter),所有的死信都会放到死信队列中。 应用场景:为了保证订单业务的消息数据不丢失,需要使用到RabbitMq的死信队列机制,当消息消费发生异常时,将消息投入死信队列中。还有比如说:用户在商城下单成功并点击支...
2022-01-24 20:57:05
2504
原创 好的设计方法例子设计方法
package 好用设计1;@FunctionalInterfacepublic interface CallBackInterface { void handler(int playerId, String data) throws Exception;}package 好用设计1;public class ChoiceMethod { public static CallBackInterface CALL_1 = ((playerId, data) ->.
2021-09-30 16:56:15
110
原创 JVM分析学习
Java GC机制主要完成3件事:确定哪些内存需要回收确定什么时候需要执行GC如何执行GC。理解并行与并发的区别1、并发是指用户线程与GC线程同时执行(不一定是并行,可能交替,但总体上是在同时执行的),不需要停顿用户线程(其实在CMS中用户线程还是需要停顿的,只是非常短,GC线程在另一个CPU上执行);2、并行收集是指多个GC线程并行工作,但此时用户线程是暂停的;GC管理的区域:GC管理的主要区域是Java堆,一般情况下只针对堆进行垃圾回收。方法区、栈和本地方法区不被GC所管理栈:堆是由
2020-09-05 00:11:37
245
原创 Eclipse操作的一些方法
(1)新建maven项目时没有出现src/main/java和src/test/java目录的解决方法https://blog.youkuaiyun.com/xiangwangxiangwang/article/details/78392456(2)在Eclipse中使用Project Explorer视图与Package Explorer视图https://blog.youkuaiyun.com...
2019-10-27 16:04:26
134
原创 RabbitMQ教程
安装好RabbitMQ之后:我们就可以进行代码编辑了简单队列:添加依赖:P:消息的生产者C:消息的消费者红色:队列生产者将消息发送到队列,消费者从队列中获取消息。(1)添加依赖:<dependency> <groupId>com.rabbitmq</groupId> <artifactId>a......
2019-09-30 16:36:20
505
原创 idea线上debug
连接上对应的服务器和debug的端口(123)可以在启动的时候设置为debug模式./....sh debug进入服务器:查看debug端口是否有开启:netstat -nptl | grep 123(如果出现证明端口开启了)如果没有开启就进行iptables-IINPUT-ptcp--dport123 -jACCEPTwindows...
2019-09-23 19:02:04
579
转载 服务器排查
先理解java中的堆、栈、方法区堆:线程共享,存储对象以及数组(数组也是对象的一种 new方式创建出来的),同时由于对象内存是动态分配的,对象在超过生命周期及空指针的时候会被gc垃圾回收机制回收,所以效率较慢。栈:用于存储基本数据类型以及对象的引用类型(这里指的基础类型是指不为static修饰的变量,如成员变量 局部变量等.)同时栈存在着先进后出的特点与队列需要区分开(队列是2个口子,...
2019-09-22 22:38:45
190
原创 主键与索引
总体来说:主键相当于一本书的页码,索引相当于书的目录。两者的比较:主键是一定是唯一性索引,但唯一性索引不一定是主键数据库管理系统对于主键自动生成唯一索引,所以主键是一个特殊的索引唯一索引标识索引值唯一,一个表可以有多个唯一索引,但主键只能有一个主键列不能为空,但唯一索引列可以为空一张表只能有一个主键,但可以有多个索引...
2019-09-05 16:52:22
156
原创 Linux(5)-inode节点
索引节点:inode分区要格式化,创建文件系统Inode:中文意思是索引节点(index node),在每个Linux存储设备或存储设备分区(存储设备可以是硬盘,软盘,U盘)被格式化为文件系统后,一般都有两部分:第一部分是Inode,第二部分是Block。(Linux特有的)Block是用来存储实际数据用的,例如:照片,视频等普通文件数据。而inode就是用来存储这些数据...
2019-08-25 22:51:54
479
原创 数据库基础
关键字的执行顺序:select--from--where--group by--having--order by其中select和from是必须的,其他关键词是可选的,这六个关键词的执行顺序与sql语句的书写顺序并不是一样的,而是按照下面的顺序来执行from--where--group by--having--select--order by,from:需要从哪个数据表检索数据whe...
2019-08-19 16:00:47
133
原创 Linux(2)- Linux基础命令
Linux命令形式: 命令 [参数] [路径文件] []代表可选 rm -f /tmp/log.log 为什么需要参数,因为一个命令有多重功能,多种用途1、创建一个目录: mkdir /data (make directory)2、查看某个目录...
2019-08-17 17:03:07
386
原创 Linux基础(2)---系统基础
Linux中,通过设备名来访问设备,设备名称放在“/dev”目录中。Linux中常用的外部设备文件名: 光驱:/dev/cfrom 硬盘(IDE)/dev/hdX (X=a,b,c) 硬盘(SCSI) /dev/sdX(X=a,b,c)Linux系统分区的要求:(a)至少要有 / (根目录) (b) swap(交换分区)的作用:...
2019-08-17 17:02:38
983
原创 java基础题(2)
(1)& 与 &&的区别& 的两种用法(1)按位与 (2)逻辑与&&:称之为短路运算,如果 && 左边的表达式的值为false,右边的表达式会被直接短路掉,不会进行运算。 当在验证用户登录时判定用户不是 null 而且不是空字符串,应当写为 username!=null && !usern...
2019-08-11 01:55:51
134
原创 java多线程(3)synchronized
synchronized关键字几种应用方式 在并发编程中存在线程安全问题,主要原因有:1.存在共享数据 2.多线程共同操作共享数据。关键字synchronized可以保证在同一时刻,只有一个线程可以执行某个方法或某个代码块,synchronized关键字是java并发编程中常使用的同步锁,用于锁住方法或者代码块,锁代码块时可以是synchronized(this){}...
2019-08-08 13:10:44
117
转载 容器CopyOnWriteArrayList
ArrayList和CopyOnWriteArrayList都是实现了List接口List接口中的方法:public interface List<E> extends Collection<E> { int size(); boolean isEmpty(); boolean contains(Object o); Itera...
2019-08-05 13:34:58
166
原创 Linux基础(4)-
Linux文件类型和扩展名在Linux系统中,可以说一切设备(包括目录、普通文件)皆为文件。文件类型包含有普通文件、目录、字符设备文件、块设备文件、符号链接文件等等Linux里文件扩展名和文件类型没有关系ls -ld /aaa (看目录本身必须加 d ,要不然就看里面的文件了)输入 ls -l-rw-r--r-- (第一个 - 表示文件的类...
2019-08-04 16:05:44
138
原创 Java多线程(2)-Interrupt
中断在java中主要有3个方法,interrupt(),isInterrupted()和interrupted()。interrupt(),在一个线程中调用另一个线程的interrupt()方法,即会向那个线程发出信号——线程中断状态已被设置。至于那个线程何去何从,由具体的代码实现决定。isInterrupted(),用来判断当前线程的中断状态(true or false)。i...
2019-07-29 13:11:36
173
原创 RSA
实现签名与验证:package com.fosu.rsa;import java.io.IOException;import java.security.KeyPair;import java.security.KeyPairGenerator;import java.security.PrivateKey;import java.security.PublicKey;...
2019-07-26 21:02:53
118
转载 编程思想
单例模式获取单例的时候判断单例是否为空两次的问题if(heroFate == null){ synchronized (this){ if(Student == null){ student = new Student(); // 根据playerId 和 HeroId 从数据库中找出一条记录 S...
2019-07-24 09:01:34
161
转载 Linux(3)---Shell
Shell 是实现 Linux 系统自动化管理的工具。必备知识:vi/vim编辑器的熟练使用,SSH 终端 及“.vimrc”的设置需要熟练使用。 Linux150个常用命令使用 常见Linux网络服务部署及排错:例如:crond,nfs,rsync,inotify,lanmp,sersync,ssh等 Sh...
2019-07-12 21:14:05
119
转载 设计模式:
一、代理模式 通过代理对象访问目标对象,这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。 编程中的思想:不要随意去修改别人已经写好的代码或者方法。如果需要修改,可以通过代理的方式来扩展方法。 主要思维:代理对象与目标对象,代理对象是目标对象的扩展,并会调用目标对象。如下图所示:一、静态代理静态代理在使...
2019-06-26 00:30:50
109
原创 java基础题
java面向对象的特性: (1)继承 (2)封装 (3)多态性:不同子类型对同一消息做出不同的相应。方法重载是编译时的多态性(前绑定),方法重写是运行时的多态性(后绑定)。 (4)抽象:访问修饰符:java对象clone()方法java赋值是复制对象引用,如果我们想要得到一个对象的副本,使用赋值操作是无法达到目的的:...
2019-06-24 23:10:42
145
转载 Linux(1)- Linux基础
Linux的组成: Linux操作系统、文本编辑器、高级语言编辑器、图形界面 Linux操作系统 = 内核 + 系统软件 + 应用程序 (系统版本,内核版本) Linux特点: 多任务系统:可以同时听歌,打游戏等等 多用户:多个用户同时登录系统。 多进程系统GNU: GNU项目本...
2019-06-23 16:05:31
123
原创 服务端(7)netty+protobuf
1、protobuf protobuf是一种很协议,是谷歌推出的一种序列化协议:(把对象转换成2进制数据)1、创建一个 player.proto 文件 先java中写一个类package com.protoclass player{ long playerId; int age; String name; List&...
2019-06-22 17:18:40
267
原创 netty服务端(五)Netty实现单客户端多连接程序
线程池工作原理: 创建线程池的时候一开始会初始化好几个线程,会给每一个线程分配一个工作队列。然后从任务队列中取出一个任务,如果有任务,执行线程的run方法,如果没有任务,则进行阻塞队列,直到工作队列有新的任务进来。才继续取出一个任务。 如果线程池中有多个工作队列就是如下所示(下图假设有 这个线程池有三个工作队列),会有顺序分配到三个队列,这三个队列是并发的执行。...
2019-06-22 00:17:56
10854
8
原创 java服务端(一)线程池(2)
多线程中的队列 并发队列 并发队列ConcurrentLinkedQueue(非阻塞队列) 并发与并行:并行是多个Cup,而并发是指资源有限的情况下,两者交替使用资源。交替使用,提高效率。 ConcurrentLinkedQueue是Queue的一个安全实现.Queue中元素按FIFO原则进行排序.采用CAS操作,来保证元素...
2019-06-20 00:12:19
177
原创 TCP 协议
TCP 黏包和拆包: 发生TCP粘包或拆包的几种原因(还有) 1、要发送的数据大于TCP发送缓冲区剩余空间大小,将会发生拆包。 2、待发送数据大于MSS(最大报文长度),TCP在传输前将进行拆包。 3、要发送的数据小于TCP发送缓冲区的大小,TCP将多次写入缓冲区的数据一次发送出去,将会发生粘包。 4、接收数据端的应用层没有及时读取接收缓冲区中的数据...
2019-06-05 14:25:59
112
原创 java服务端(三)NIO实现Netty框架
NIO实现Netty框架 简介:Netty就是有 看门服务员(线程+selector)是迎接客人(接受请求),点菜服务员 (线程+selector)去 处理客人的点菜等等。客人就相当于一个客户端的请求。 各个类的流程 一、主启动类流程:(Start.java) 1、创建线程池管理者: 用于管理 Boss (看门服务员) 和 Worker ...
2019-06-02 23:26:38
293
原创 java服务端(3)netty框架基础
netty各种对象:Netty服务器创建流程:创建步骤: 1、创建服务类bootstrap://服务类ServerBootstrap bootstrap = new ServerBootstrap(); 2、两个重要的线程池://boss线程监听端口,worker线程负责数据读写ExecutorService boss = Executors.newCache...
2019-06-01 23:59:42
527
转载 Java服务端(二)- Java网络编程NIO
Java Nio 基础知识点 并发:多线程抢占CPU,可能不同时执行,侧重于多个任务交替执行。(一个CPU) 并行:线程可以不共享CPU,可每个线程一个CPU同时执行多个任务。(多个CPU) 阻塞:相对于数据而言,需要一直等待数据准备好才能进行下一步操作(BIO,accept) 非阻塞:不管数据有没有准备好都可以往下执行下一步逻辑 同步:相对于IO操作而言,在...
2019-06-01 19:40:39
266
原创 Java服务端(二)- Java标准输入输出NIO
基础知识: NIO即New IO,在之前的Java编程中,一般使用流的方式来处理IO,所有的IO都被视作单个字节的移动,通过stream对象一次移动一个字节。流IO负责把对象转换为字节,然后再转换为对象。 NIO与IO有相同的作用和目的,但实现方式不同,NIO主要用到的是块。所以NIO的效率要比IO高。流与块的比较: IO是以流的方式处理数据,...
2019-05-31 23:41:16
256
原创 多线程
理解并发与并行并发:多线程抢占CPU,可能不同时执行,侧重于多个任务交替执行。(一个CPU)并行:线程可以不共享CPU,可每个线程一个CPU同时执行多个任务。(多个CPU)什么是线程安全:多个线程并发执行时,仍旧能保证数据的正确性,这种现象称之为线程安全。导致线程不安全的因素:多个线程并发执行 多个线程并发执行时存在共享数据集(临界资源) ...
2019-05-12 20:42:51
149
转载 java服务端(一)线程池
线程池中的四个构造方法:构造方法一:public ThreadPoolExecutor(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue) { t...
2019-05-12 20:22:41
338
原创 函数的多态原理
1、面向对象的三大概念、三种境界(封装,继承,多态) 封装:突破了C语言的概念,有用了类,成员函数与属性 继承: 继承可以复用以前人写的代码 多态:多态,不仅继承以前的人代码,后来人的代码 2、加了virtual的时候回发生多态#include <iostream>using namespace std;...
2018-09-08 10:07:45
1104
原创 类的设计方法和程序
首先我们需要对类进行函数声明:array.h#pragma once#include <iostream>using namespace std;// 进行类的声明class Array{public: Array(int length); Array(const Array& obj); // 构造函数 ~Array(); ...
2018-09-07 19:07:00
1181
Windows程序设计(第五版pdf代码)深入浅出MFC
2018-06-06
算法导论第三版答案(中文版和英文版).zip
2018-05-03
2018年软件设计全部试卷(07到17年历年考试真题)
2018-04-14
词法分析作业
2018-03-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人