- 博客(110)
- 资源 (6)
- 论坛 (1)
- 问答 (1)
- 收藏
- 关注
原创 设计模式学习笔记---------------------------------------------工厂模式和匿名类
实现原理:利用多态的特性,将定义和实现彻底分开。 应用场景:对于某一群拥有公共接口的类,只用知道类名,就可以得到该类的实例对象。这对于一些复杂的对象,直接通过new创建会比较复杂,而且对于使用者来说没有必要,还有就是如果修改了创建对象时的参数,使用该类的方法都要进行修改。为此将对象的定义和实现分开,符合软件设计的开闭原则,对扩展开放,对修改关闭。 举例 马路上...
2019-09-29 21:06:25
89
转载 pom标签详解
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4....
2019-09-25 09:15:27
69
原创 《JAVA编程思想》读书笔记(1-8章)
JAVA语言的五个特性1、万物皆为对象。将对象视为奇特的变量,它可以存储数据,除此之外,你还可以要求它在自身上执行操作。理论上讲,你可以抽取待求解问题的任何概念化构件(狗、建筑物、服务等),将其表示为程序中的对象。2、程序是对象的集合,它们通过彼此发送消息来告知彼此所要做的。要想请求一个对象,就必须对该对象发送一条请求消息。更具体的说,可以把消息想象成对某个特定对象的方法的调用请求。3...
2019-08-12 20:05:15
109
1
原创 char类型byte类型或short类型进行无符号右移遇到的神奇问题
代码package com.ggp.test.Third;/** * @Author:ggp * @Date:2019/7/27 17 23 * @Description: */public class URShift { public static void main(String[] args) { byte b = -1; Syst...
2019-07-27 19:20:21
98
原创 探究ThreaLocal
前言 ThreadLocal提供一个(只有一个)线程的局部变量,为了确保多线程环境下,线程的安全性。其实可以这样理解,ThreadLocal其实就是一个普通类,它声明的对象有明确的作用范围,这个范围就是用ThreadLocal去声明对象的线程,当然每个线程可以有多个ThreadLocal变量,这些ThreadLocal变量被保存在ThreadLocalMap中,这个ThreadLocal...
2019-07-05 15:04:53
75
原创 浅谈java的类加载机制和双亲委派模型
类加载器虚拟机设计团队把类加载阶段中的“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到java虚拟机的外部去实现。以便让应用程序自己决定如何去获取所需要的类。实现这个动作的代码模块称为类加载器。 类加载器可以说是java语言的一项创新,也是java语言流行的重要原因之一。它最初是为了满足java Applet的需求而开发出来的。虽然目前java Applet技术基本上...
2019-04-24 20:02:55
392
原创 自定义类加载器,发现会自动加载类和类的父类一直加载到java.lang.object为止
下面是自定义加载器的实现package com.ggp.jvm;import java.io.IOException;import java.io.InputStream;/** * @author: ggp * @Date: 2019/4/24 08:46 * @Description: */public class ClassLoaderTest { publ...
2019-04-24 19:11:56
490
原创 记录CenOS7上一次Mysql数据库的迁移
昨天一台服务器坏了,影响了好多项目的正常进行,这个任务被交给了我,解决方案是拆掉坏掉机器的硬盘,挂载到新的服务器上,将数据库迁移。 第一步,把拆掉的硬盘装到新的服务器上 第二步,挂载 使用命令 fdisk -l 查看外接设备信息 通过打印的信息可以看出sdb是我们要挂载的硬盘 首先创建 挂载的目录 mkdir...
2019-04-23 11:20:50
85
原创 《自己动手写java虚拟机》学习笔记(九)-----指令集和解释器
项目地址:https://github.com/gongxianshengjiadexiaohuihui 后面的笔记将不会区分go很java,也会改变以前大篇幅的写代码,更加注重对思想的讲解,但是两种语言的代码会同步更新 我们只到cpu是通过执行一条条设定好的指令,来指挥我们的电脑,同样虚拟机的工作也是执行一条条指令,那么我们的指令放在那里呢?如果有印象的话,实在Membe...
2019-03-28 20:26:06
107
原创 使用Sm3周期性hash计算
配置类package com.ggp.sqy42d;/** * @author: ggp * @Date: 2019/3/18 11:06 * @Description: */public class Configure { /** * SM3的摘要结果 */ public static String srcStr; /** ...
2019-03-22 14:56:05
1239
原创 new String()传入字节数组生成String后,通过getBytes()得到的结果和原来不同
发现一个神奇的问题。 package com.ggp.sqy42d;import java.util.Arrays;/** * @author: ggp * @Date: 2019/3/22 14:30 * @Description: */public class test { public static void main(String[] a...
2019-03-22 14:51:47
2661
原创 使用Sm2进行签名验签
需要的jar包bcprov-jdk15on-1.59.jarcommons-lang3-3.1.jar代码package com.ggp.sqy42d;import org.bouncycastle.asn1.gm.GMNamedCurves;import org.bouncycastle.asn1.gm.GMObjectIdentifiers;import org.bo...
2019-03-22 14:28:51
10325
5
原创 《自己动手写java虚拟机》学习笔记(八)-----线程私有运行时数据区(java)
项目地址:https://github.com/gongxianshengjiadexiaohuihui这个图就是线程私有的数据区结构我们按照从外到内的方式来构建线程Threadpackage classfile.rtda;/** * @Author:ggp * @Date:2019/2/13 14 27 * @Description:线程 */public c...
2019-02-14 14:53:15
134
原创 win10 c盘压缩卷只能压出一半?或只能压缩出一点空间的完美解决方案
今天一个高中同学过来问我一个问题?他c盘剩余空间很大,想压缩出来剩余的空间,分成其他盘,网上的方法大多是关闭系统保护,但是我发现自己电脑上的系统保护默认是关闭的,我刚开始以为是虚拟内存的问题,但是关闭了仍然不能够起作用,最后我想是不是权限不够呀,毕竟c盘是系统盘,修改的话需要的权限应该是最高的。磁盘管理工具并不能用管理员身份打开。于是我想到用命令的方式分区前 第一步用管理员身份打开...
2019-02-13 10:16:50
23061
8
原创 手写spring(五)------------------------------------------------------------------依赖注入、关联映射、请求分发
项目地址:https://github.com/gongxianshengjiadexiaohuihui/noobspring依赖注入 private void doAutowired(){ logger.info(">>>>>>>>>>>>>>>>&
2019-02-12 15:25:39
78
原创 手写spring(四)------------------------------------------------------------------aop(jdk动态代理和cglib动态代理)
项目地址:https://github.com/gongxianshengjiadexiaohuihui/noobspring我们先来理一下思路,aop是需要织入通知,我们是按照动态代理来实现的,目的就是生成一个代理类对象替代ioc容器中原有的对象。 private void doAspect(){ logger.info(">>>>>>...
2019-02-12 14:23:14
94
原创 手写spring(三)------------------------------------------------------------------初始化配置文件、扫描包获取类名、实例化
项目地址:https://github.com/gongxianshengjiadexiaohuihui/noobspring通过手写spring(一)我们知道,我们可以调用父类的config获取初始化参数contextConfigLocation的值,这里面在spring中存的是一个正则表达式,这里我为了图方便,并没用用正则表达式(后续会完善),得到这个之后我们就知道配置文件的路径,所以我们...
2019-02-12 11:19:26
87
原创 手写spring(二)------------------------------------------------------------------自定义注解
项目地址:https://github.com/gongxianshengjiadexiaohuihui/noobspring我们知道spring使用了大量的注解,首先我们需要了解注解是用来干嘛的,这里我讲一下个人的理解和看法。 在我看来注解的作用主要是用来标记,这个标记可以被保留到不同的时期,这个后面会有叙述,然后呢我们可以在不同的时期,获取到这个标记,然后我们就可以根据这个标记的内...
2019-02-12 09:42:03
166
原创 手写spring(一)------------------------------------------------------------------基本的加载流程
项目地址:https://github.com/gongxianshengjiadexiaohuihui/noobspring准备工作:这个项目是一个maven项目,pom文件内容<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" ...
2019-02-06 10:25:56
90
原创 设计模式学习笔记---------------------------------------------门面模式(外观模式)和日志框架(sl4j、logback、log4j)
最近在使用日志框架的过程中,有了一些疑惑,这么日志框架,我们如何选择,开发过程中,需要用到的框架很多,不同框架的日志框架一般又不相同,那么如何兼容不同的日志框架呢? 我们知道的日志框架有logback、log4j、logging等。 log4j出现的最早,而logback是对log4j进行了优化,两个框架同是出自Ceki Gülcü之手,其实sl4j也是出自他。 ...
2019-01-31 16:04:45
526
1
原创 java.util.concurrentModificationException详解(为什么要这样做,如何实现)以及解决问题过程中的有趣发现
今天遇到一个极为神奇的问题。改了名字就报错,不改就正确。 定位到错误代码注意我黑色圈出来的东西。ioc是一个HashMap,ioc.values()返回的是一个Collection,在进行迭代的过程,我对ioc里面的内容进行了修改,看一下括号括起来的东西,我进行了remove和put,这就会引发fail-fast,即快速错误,就是知道后面肯定会报错,提前中断,抛出错误原因。...
2019-01-29 10:33:48
353
转载 Spring MVC是如何逐步简化Servlet的编程的
Spring MVC是如何逐步简化Servlet的编程的Servlet和JSP是开发java Web应用程序的两种基本技术,Spring MVC是Spring框架中用于Web应用程序开发的一个模块,能够清晰的了解到从Servlet到Spring MVC开发技术之间逐步简化的过程对于深刻理解Spring MVC在Web应用程序开发中的作用具有很大的帮助。我们会从项目的目录结构来介绍这个简化的过程...
2019-01-16 15:31:19
280
1
原创 设计模式学习笔记---------------------------------------------装饰器模式和IO流
怎么理解装饰器模式装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。 这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。 其实我们可以这样理解装饰器模式, 就拿自己举例子,你把自己裸体的样子,想象成被装饰的对象。你的鞋子,你的寸衣,...
2019-01-16 14:34:51
83
原创 网络中的数据(阻塞篇)-----------------IO的阻塞与非阻塞,同步与异步,IO复用
首先引入大佬们对此的理解 另一种理解 首先是对阻塞和非阻塞的理解,阻塞是指专心只做当前一件事,及时是等待好久一段时间去拿到结果,这段时间什么也不能做,而且等待的这段时间对最终结果毫无影响,等到拿到了结果,才能去做下一件事,而非阻塞,就灵活多了,你可以在等待的时间里去做其他事,但是你需要在一定间隔内去咨询结果 是否出来。 第一个例子和第二个例...
2019-01-08 15:51:42
129
原创 网络中的数据(传输篇)-----------------浅谈HTTP和HTTPS及socket
【Socket】 socket第一次接触的时候是叫套接字,当时听的我一脸懵逼,后来接触的多了,我觉得插座这两个字更适合去形容socket,为什么呢?其实socket是对TCP/IP(也可以选择UDP)协议的封装,我们面向socket编程,就无需去建立三次握手,也无需去管数据传递时,确认机制、重传机制、拥塞控制,这些细节都已被实现在底层。socket一般是成对出现的,一个clientSocke...
2019-01-07 16:34:29
135
原创 网络中的数据(传输篇)-----------------UDP协议 TCP协议
TCP协议TCP:Transmission Control Protocol 传输控制协议 主要作用:把数据流分割成适当长度的报文段之后进行传输 工作机制:紧小细微型。 面向连接意味着两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据包之前必须先建立一个TCP连接。这一过程与打电话很相似,先拨号振铃,等待对方摘机说“喂”,然后才说明是谁。在一个TCP连接中,仅有两方进行...
2019-01-07 15:42:00
120
原创 openssl安装(踩坑)
本以为openssl的安装和其他软件没什么不同,谁知道踩了好多坑。相关软件下载地址:1、ActivePerl 5.24.3:https://www.activestate.com/activeperl/downloads2、openssl-1.0.2g:http://www.openssl.org/source 第一步安装ActivePerl,这是一个脚本语言我们在后面会用到...
2018-12-16 16:47:28
770
原创 String StringBuilder和StringBuffer的区别
首先我们进入到String StringBuffer StringBuilder的源码中可以看到StringBufferStringBuilderString类中使用字符数组保存字符串,我们可以看到它是被final修饰的,所以知道String对象是不可变的Stringbuffer和StringBuilder都是继承AbstactStringBuilder...
2018-12-16 16:01:53
50
原创 PKI学习之路(七)-----------------------证书的几种格式
一般来说,主流的Web服务软件,通常都基于两种基础密码库:OpenSSL和Java。Tomcat、Weblogic、JBoss等,使用Java提供的密码库。通过Java的Keytool工具,生成Java Keystore(JKS)格式的证书文件。Apache、Nginx等,使用OpenSSL提供的密码库,生成PEM、KEY、CRT等格式的证书文件。此外,IBM的产品,如Websphe...
2018-12-06 16:42:53
508
1
原创 PKI学习之路(六)-----------------------Tomcat配置https双向认证
根据我们PKI学习之路三的内容,我们在此的基础上展开 首先我们要修改一些内容,我们生成客户端的证书后缀为.cer,这个格式的证书仅包含公钥信息,但是我们要实现加解密还需要私钥的信息,因此我们重新生成client的证书。然后导出客户端证书到服务端的证书管理仓库 我们需要额外三个步骤: 一,安装服务端证书到本地 双击server_pub_cer.cer点击...
2018-12-03 16:32:40
177
原创 Tomcat的主页可以通过IP访问,但是无法通过localhost或者127.0.0.1访问
早上在公司电脑装了tomcat,去发现只能通过本机的内网IP访问,无法通过localhost访问,查看了以下host文件,发现并没有什么问题呀。 后来想到,公司电脑配置的是内网,通过浏览器访问外网的时候需要走代理,但是会设置一些内网地址,访问时不用代理服务器,我想着如果把localhost加入到这些ip会不会问题得到解决、 如果没有这样设置,应该会通过代理...
2018-12-03 14:09:22
434
原创 《自己动手写java虚拟机》学习笔记(七)-----线程私有运行时数据区(go)
项目地址:https://github.com/gongxianshengjiadexiaohuihui 在运行java程序时,Java虚拟机需要使用内存来存放各种各样的数据,Java虚拟机规范把这些内存的区域叫做运行时数据区。运行时数据区可以分为两类:一类是多个线程共享的,另一类是线程私有的。多线程共享的运行时数据区需要在java虚拟机启动时创建,在java虚拟机退出时销毁...
2018-12-02 13:56:58
95
原创 PKI学习之路(五)-----------------------SSL双向认证日志分析
根据上一篇的运行结果,我们根据它的日志分析交互的过程"C:\Program Files\Java\jdk1.8.0_161\bin\java.exe" "-javaagent:D:\IntelliJ IDEA 2018.1.5\lib\idea_rt.jar=52038:D:\IntelliJ IDEA 2018.1.5\bin" -Dfile.encoding=UTF-8 -classpa...
2018-11-30 15:00:09
294
原创 PKI学习之路(四)-----------------------SSL双向认证
项目地址:https://github.com/gongxianshengjiadexiaohuihui/PKI/tree/master/ssl上一篇 我们讲了如何用java自带的keytool工具生成数字证书,我们需要准备两个证书,一个是server的一个是client的 keytool -import -file client_pub_cer.cer -keystore ...
2018-11-30 11:02:43
354
原创 PKI学习之路(三)-----------------------数字证书的生成
用JDK提供的证书管理工具keytool可以制作证书,如果jdk系统变量配置没毛病的话打开cmd输入keytool会出现下面界面我们选择 -genkey 根据我们的请求生成证书完整命令keytool -genkey -keyalg RSA -keysize 2048 -validity 36500 -alias SEC_TEST -keypass 123456 -keystor...
2018-11-29 15:45:29
399
1
原创 PKI学习之路(二)-----------------------浅谈socket
首先为什么要用socket?如果没有socket,我们传输数据需要借助TCP/IP协议,不仅需要三次握手,还要友好分手,每次传输都要经过复杂的连接,具体传输过程中,也会有一大堆的问题,什么滑动窗口,什么累计确认,分组缓存,流量控制,,,听着就头皮发麻,而socket就是TCP/IP的实现讲一个人:Bill Joy 是一个天才程序员,主要工作包括BSD Unix操作系统, 实现T...
2018-11-29 13:49:35
151
原创 PKI学习之路(一)------------------------java实现简单的socket通信
项目地址:https://github.com/gongxianshengjiadexiaohuihui/PKI关于什么是socket通信,我会写一篇博客去叙述这次我们主要实现client和server通过socket进行通信server代码package com.ggp.server;import java.io.*;import java.net.ServerSocke...
2018-11-29 11:21:02
230
转载 SSL工作原理
关键词:SSL,PKI,MAC挑 希望:SSL使用数据加密、身份验证和消息完整性验证机制,基于TCP和其他的应用层协议提供可靠的连接安全保障。本文介绍了SSL后台、安全机制、工作过程和典型网络应用。缩略语: 缩略语 英文全名 中文解释 AES Advanced Encryptio...
2018-11-28 14:42:38
1680
原创 Java虚拟机栈和本地方法栈
java虚拟机栈由栈帧组成,帧中保存方法的执行状态,包括局部变量表和操作数栈等。在任一时刻,某一线程肯定是在执行某个方法。这个方法叫做该线程的当前方法;执行该方法的帧叫做线程的当前帧;声明该方法的类叫做当前类。如果当前方法是java方法,则pc寄存器中存放当前正在执行的java虚拟机指令的地址,否则,当前方法是本地方法,pc寄存器中的值没有明确定义本地方法 native method 由本地方...
2018-11-23 15:29:10
1925
3
原创 RabbitMQ学习笔记(四)-----------------RPC
项目地址:https://github.com/gongxianshengjiadexiaohuihui/RabbitMQ/tree/master/RPC_RabbitMQ RPC远程服务调用,举个例子就是客户端远程调用服务端的方法帮自己运算,并把结果返回 流程图:项目结构Client创建一个反馈队列,这个队列的作用是等待服务器返回处理结果 发送请...
2018-11-22 10:50:11
72
javaMessageDigest md5算法详细实现
2018-07-20
bootstap和jquery的js文件
2018-09-05
csdn访问量一周没有更新了
发表于 2018-10-13 最后回复 2019-01-11
问一个c语言的初级问题
2015-12-28
TA创建的收藏夹 TA关注的收藏夹
TA关注的人 TA的粉丝