- 博客(40)
- 资源 (19)
- 收藏
- 关注
原创 实现LRU缓存策略
/** * 使用LRU缓存淘汰策略 * least recently used(LRU) */public class LruLinkedList<T> extends LinkedList<T> { // 缓存大小 private int memory_size; // 默认缓存容量 static final int DEFAULT_CAPTION = 5; public LruLinkedList() { t
2020-07-08 11:57:09
238
原创 手写linkedlist 单向列表
/** * 单向链表实现 * @param <T> */public class LinkedList<T> { // 头节点 private Node first; // 链表长度 private int size; private LinkedList() { this.size = 0; } // 添加元素 // 头插法 private void put(T data) {
2020-07-08 11:32:05
169
原创 javax.net.ssl.SSLException: Received fatal alert: protocol_version 问题解决
记录一次线上bug修改过程。线上服务中有一个需要调用对接接口的业务,对接的接口是 https协议的,之前请求一直没有问题,最近对方反馈收不到我们的请求了,所以到线上看了下,发现了了一些错误日志:javax.net.ssl.SSLException: Received fatal alert: protocol_version at sun.security.ssl.Alerts.getSSLException(Alerts.java:208) ~[na:1.7.0_45]
2020-06-11 14:53:18
16896
原创 linux 脚本
什么是shellshell 是操作系统的一个软件。它包在linux 内核外面,为用户和内核之间的交互提供了一个接口。系统中的命令用shell解释,shell接收系统回应的输出并显示其到屏幕中。shell 是一个命令语言解释器,它拥有自己内建的shell命令集。shell 脚本。脚本是一种解释型语言。保存执行动作判定命令的执行条件实现动作的批量执行创建脚本vim test.sh 用vim编写脚本#! /bin/bash 脚本使用的解释器,通常用幻数 "#!" 指定#AUTHOR
2020-06-11 14:36:38
372
原创 Linux -- Find atime/ctime/mtime 探究
find atime/ctime/mtime 探究atime,access time,文件被读取或者执行的时间,修改文件不会改变access time。ctime, change time,文件状态改变的时间,指文件的i节点被修改的时间,如通过chmod修改文件的属性,ctime就会被改变。mtime:modify time,文件内容被修改的时间。可以使用 stat 命令查看文件的 atime,ctime,mtime也可以使用 ls 查看文件的atime,ctime,mtimels -l
2020-06-11 14:35:21
126
转载 SLF4J 作用及其实现原理
文章转载:https://www.cnblogs.com/xrq730/p/8619156.html简单回顾门面模式slf4j 是门面模式的典型应用,全称是 simple Loging Facade For Java, 是一个为Java程序提供日志输出的统一接口,并不是一个具体的实现方案。就好像JDBC一样,只是一种接口规则定义而已。门面模式,其核心为外部与一个子系统的通信必须通过一个统一的外观对象进行,使得子系统更易于使用。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(im
2020-06-11 14:33:53
274
原创 日志框架整理--logback
logback是有log4j 创始人设计的又一个开源日志框架logback 当前分为三个模块:logbakc-core,logback-classic 和 logback-accesslogback-core:是其他两个模块的基础模块logback-classic:是log4j的一个改良版本。此外logback-classic 完整实现SLF4J API,所以可以很方便的更换成其他日志系统,如 log4j 或 JDK14 Logginglogback-access:访问模块与Servlet容器基础
2020-06-11 14:33:16
246
转载 Java 泛型详解
原文:https://www.cnblogs.com/coprince/p/8603492.html概述泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。也就是说在泛型使
2020-06-11 14:32:33
116
原创 Java 设计模式--建造者(Builder)模式
建造者模式是日常开发中比较常见的设计模式,它的主要作用就是讲复杂事务创建的过程抽象出来,该抽象的不同实现方式,创建出的对象也不同。通俗地讲,创建一个对象一般都会有一个固定的步骤,这个固定的步骤我们把它抽象出来。建造者模式分为两种:经典建造者模式变种建造者模式经典建造者模式UML类图[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pIuNyKwS-1591857099537)(file:///Users/yangmingyue/Documents/Gridea/
2020-06-11 14:31:55
120
原创 Java调用实现调用http请求的几种常见方式
Java项目中调用第三方接口的几种方式:通过JDK网络类 java.net.HttpURLConnection通过common封装好的 HttpClient通过Apache封装好的CloseableHttpClient通过SpringBoot-RestTemplate通过JDK网络类 java.net.HttpURLConnection实现过程:Get:1. 创建远程连接2. 设置连接方式3. 设置连接超时时间4. 设置响应读取时间5. 发起请求6. 获取请求数据7. 关闭连
2020-06-11 14:31:22
1025
原创 Java 写文件三种方法比较
import java.io.File;import java.io.FileOutputStream;import java.io.*;public class FileTest { public static void main(String[] args) { FileOutputStream out = null; FileOutputStream outSTr = null; BufferedOutputStream Buff =
2020-06-11 14:30:38
342
原创 Java 读取文件完整版
public class ReadFromFile { /** * 以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。 */ public static void readFileByBytes(String fileName) { File file = new File(fileName); InputStream in = null; try { S
2020-06-11 14:30:04
208
原创 索引的作用
深入浅出理解索引结构索引可以理解为是一种特殊的目录微软的SQL SERVER提供了两种索引:聚集索引(也称聚类索引,簇集索引)非聚集索引(也称非聚类索引,非簇集索引)聚集索引和非聚集索引的区别:1、正文内容本身就是一种按照一定规则排列的目录称为“聚集索引”,例如:汉语字典的正文本身2、目录纯粹是目录,正文纯粹是正文的排序方式称为“非聚集索引”。需要两个过程:先在目录中找到结果,然后在正文中找到具体内容。例如:汉语字典的偏旁表。每个表只能有一个聚集索引,因为目录只能按照一种方法进行排
2020-06-11 14:29:15
1681
原创 Java 基础篇
让程序性能优异的并发利器线程池创建参数对工作机制对影响线程池构造函数:public ThreadPoolExecutor(int corePoolSize,int maximumPoolSize,long keepAliveTime,TimeUnit unit,BlockingQueue<Runnable> workQueue,ThreadFactory threadFactory,RejectedExecutionHandler handler)参数含义:corePoolSiz
2020-06-11 14:28:25
251
原创 资深架构师成长路线 -- 分布式方案及团队协作工具
1、分布式事务解决方案事务与锁标准分布式事务两阶段提交BASE理论与柔性事务TCC方案补偿性方案异步确保型与最大努力型2、单点登录方案单点登录的问题背景页面跨域问题Session跨域共享方案Session 的扩展3、分布式任务调度方案Quartz调度的用法Elastic-Job示例分布式调度的疑难点Quartz集群定制化分布式调度4、Maven安装与配置使用入门坐标和依赖聚合与继承生命周期与插件仓库及版本管理私服-Nexus手写Maven插件实战5、J
2020-06-11 14:26:10
96
原创 资深架构师成长路线 -- 分布式扩展到微服务架构
1、从RPC开始服务注册与发布动态代理序列化与反射手写RPC框架实战2、DUBBO10分钟学会Dubbo使用项目之间的依赖划分实战传统项目拆解分布式实战Dubbo api 扩展实战Dubbo 源码深度解读Dubbo 面试题指南3、Spriing BootSpring Boot 快速入门核心组件分析性能优化jta+atomikos分布式事务SpringBoot核心源码解读手写SpringBoot实战SpringBoot面试汇总4、Spring Cloud Netfli
2020-06-11 14:25:36
171
原创 资深架构师成长路线 -- 高效存储让项目性能起飞
1、Redis5分钟搞定Linux下Redis安装String,List,Hash,Set,Zset类型使用场景时间轴、队列应用场景设计实战购物车开发与设计实战Redis与Lua模拟抢红包实战网站投票设计与开发实战Lua+Redis联合开发指南Redis慢操作优化Redis哨兵机制及底层机制分析10分钟搭建Redis高可用集群实战动态扩容,缩减集群节点实战Redis 常见面试题汇总2、缓存解决方案实战15分钟掌握项目中SpringCache的用法缓存的一致性策略(跟下及失效处
2020-06-11 14:25:06
98
原创 资深架构师成长路线 -- 性能直线提升架构技术
1、分布式架构思维大型互联网架构严谨过程架构师应具备的分布式知识主流分布式架构设计详解2、Zookeeper5分钟搞定Zookeeper安装及指令解析原始客户端、zkclient、curotor快速开发实战zookeeper应用实战配置中心命名服务集群选举实战分布式锁实战zookeeper底层协议解读2p, 3pcapbasepaxoszabzookeeper 面试资料整理3、nginx5分钟将你的项目实现nginx分流nginx安装及基本使用nginx
2020-06-11 14:24:24
143
原创 资深架构师成长路线 -- 设计思想解读开源框架
1、六大原则单一职责原则开闭原则里氏替换原则依赖倒置原则接口隔离原则迪米特法则2、结构型模式桥接模式适配器模式装饰器模式代理模式组合模式3、创建型模式建造者模式单例模式抽象工厂模式工厂方法模式静态工厂模式4、行为型模式模版方法模式策略模式观察者模式责任链模式命令模式访问者模式5、Spring 5源码解读5分钟快速理解Spring核心流程熟练掌握Spring工作常用注解及陷阱后置处理器源码解读BeanFactoryPostProcessorBe
2020-06-11 14:23:47
190
原创 资深架构师成长路线 -- 架构师筑基必备技能
1、并发编程进阶线程共享和写作文CPU核心数,线程数,时间片轮转机制解读synchronized,volatile,ThreadLocal 如何实现线程共享wait,notify/nofityAll,join 方法如何实现线程间协作并发工具类实战Fork/Join 分而治之原理及实战CountDownLatch,CyclicBarrier应用场景和实战Callable,Future和Future Task源码解读及应用实战Semaphore,Exchange应用场景和实战站在巨
2020-06-11 14:23:21
292
转载 JAVA IO 体系学习总结
1.Java Io流的概念,分类,类图。1.1 Java Io流的概念 java的io是实现输入和输出的基础,可以方便的实现数据的输入和输出操作。在j...
2020-05-29 15:48:53
116
原创 nginx 小功能
跨域问题问题:浏览器拒绝执行其他域名下的 ajax 请求由来:如果浏览器可以在某域名下访问其他域名的内容 来填充自己的页面,那么互联网秩序将混乱。为了防止这种混乱,W3C 组织制定了浏览器安全规范,即 html 页面发起的 ajax 请求仅 限于同域名后段范围,跨域 域名的 ajax 请求不得执行,此谓之 跨域问题。解决方法:Jsonpw3c 指定的规则不允许ajax跨域请求,...
2019-12-16 15:32:15
184
原创 nginx 配置文件
main { user nobody; worker_processes 1; # 指定nginx 要开启的进程数,一个进程一个线程 worker_rlimit_nofile 10000; # worker 进程的最大打开文件数限制 event { # 设定nginx 的工作模式 及 连接数上限 use epoll; # epoll 多路复用, nginx支持的工作模...
2019-12-16 11:51:26
78
原创 nginx 路由匹配规则
路由- location 的使用语法规则: location [=|~|~*|^~] /uri/ {...}首先匹配=(精确匹配),其次匹配^~(非正则),其次是按文件中顺序的正则匹配,最后是交给 / 通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。注意:= 精准匹配命中时,停止location 动作,直接走 精准匹配;一般匹配(含非正则)命中时,先收集所有的普通匹配,...
2019-12-16 11:47:08
1919
原创 听书 -- 《睡眠质量》
昨天听了下睡眠质量这本书,主要是教人们怎么高效的睡眠。一的一生,睡眠占据了三分之一还要多的时间。能高效的睡眠,才能不浪费我们有效的时间。说一下本书的观点:误区:每天必须睡够8个小时。很多人都认为我们每天都必须要睡够8个小时,才是正常的,才可以精神饱满,一旦没有睡够8个小时,心情就会很焦虑,感觉没有休息好。其实很多时候,我们睡七个小时就已经够了,已经休息过来。但是因为受没有睡够8个小...
2019-12-02 11:31:00
363
原创 日志效率对比 -- log4j log42 logback
实例测试不同日志框架性能, 通过修改BaseLogInfo中的线程数和数据总数,可以测试不同量级情况下,性能的差距。依赖:<dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> ...
2019-04-19 11:55:54
1008
原创 Gson 深究
依赖添加<!-- https://mvnrepository.com/artifact/com.google.code.gson/gson --><dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId>...
2019-04-09 19:14:55
1048
转载 从一道面试题彻底搞懂hashCode与equals的作用与区别及应当注意的细节 --- 转载
最近去面试了几家公司,被问到hashCode的作用,虽然回答出来了,但是自己还是对hashCode和equals的作用一知半解的,所以决定把它们研究一下。以前写程序一直没有注意hashCode的作用,一般都是覆盖了equals,缺没有覆盖hashCode,现在发现这是埋下了很多潜在的Bug!今天就来说一说hashCode和equals的作用。先来试想一个场景,如果你想查找一个...
2019-04-08 14:53:28
105
原创 arrayList 线程不安全问题探究
源码分析:arraylist 类:public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable{ /** * 列表元素集合数组 * 如果新建...
2019-03-29 16:05:45
142
转载 深入解析策略模式
在讲策略模式之前,我们先看一个日常生活中的小例子: 现实生活中我们到商场买东西的时候,卖场往往根据不同的客户制定不同的报价策略,比如针对新客户不打折扣,针对老客户打9折,针对VIP客户打8折... 现在我们要做一个报价管理的模块,简要点就是要针对不同的客户,提供不同的折扣报价。如果是有你来做,你会怎么做?我们很有可能写出下面的代码:package strate...
2019-03-27 18:06:59
152
原创 设计模式 --- 策略模式
Strategy --- 策略模式:模式动机:在软件开发中,常遇到类似问题,实现某一个功能的途径有很多,如查找,排序等,一种常用的方法是"硬编码"(Hard Coding)在一个类中,如果需要提供多种查找算法,可以将这些算法写到一个类中,在该类中提供多个方法,每一方法对应一个具体的查找算法;当然也可以将这些查找算法封装在一个统一的方法中,用过if...else... 等条件判断语句来进行选择...
2019-03-22 14:59:28
187
原创 设计模式 -- 观察者模式
Observer --- 观察者模式 :定义了对象之间的一对多依赖, 当一个对象改变状态的时候,他所有的依赖都会收到通知并自动更新。观察者模式又叫:发布 - 订阅 (Publish/Subscribe)模式模型 - 视图 (Model - View)模式源 - 监听器 (Source - Listener)模式从属者(Dependents)模式使用原因:减少对象之间的耦合,利于...
2019-03-22 10:33:31
148
原创 设计模式 --- 桥接模式
Bridging -- 桥接模式: 将抽象部分与实现部分分离,使他们都可以独立的变化。// 创建桥接接口, 是抽象接口 和 不同实现方式之间的桥梁public interface DrawAPI {public void drawCircle(int x, int y);// 可以继续添加不同的行为// public void drawRedtangle(int x, in...
2019-03-22 10:31:23
119
原创 设计模式 -- 装饰器模式
Decorator -- 装饰器模式: 丰富原接口的功能,并且不改动原先的接口。// 创建Shape接口public interface Shape {void draw();}// 创建Shape接口的实体类public class Circle implements Shape {@Overridepublic void draw() { System.ou...
2019-03-22 10:30:00
88
原创 设计模式 --- 代理模式
Proxy -- 代理模式 : 为其他对象提供一种代理以控制对这个对象的控制 (静态代理)特点: 实现相同的接口// 公共接口 -- 代理角色public interface Subject{ void request();}// 真正实体 -- 真实角色public class RealSubject implements Subject{ private S...
2019-03-22 10:28:51
122
原创 设计模式 --- 适配器模式
Adapter -- 适配器模式: 将一个接口转换成客户希望的另一个接口, 使原本因为接口不兼容而不能在一起工作的两个类可以在一起工作。特点: 兼容代码上特点: 适配器与原来的类有不同的接口,并且实现了需要适配的类的实例举例:// 适配前接口public interface A { public void specificRequest(String ...
2019-03-22 10:26:55
100
原创 猴子选大王算法
猴子选大王游戏,或者报数游戏。给定人数,选择一个要报的数,报到这个数的人退出报数队列,最后计算出剩下的人,也就选择出的大王。两种方法:1、记录每次遍历报数人群中最后一个人报出的数,计算下次遍历时,偏移多少的人应该退出 (逻辑略复杂,其代码麻烦)2、记录每次的报数,报到指定数就退出队伍,然后从1开始继续报,报到最后一个人再从第一个开始报(逻辑清楚,代码简单) package...
2018-12-19 15:04:39
299
原创 java简单算法--输出指定层级的菱形图案
输入层级,能打印出指定的菱形 package api;import java.util.Scanner;public class Suanfa { public static void main(String[] args) { Scanner scanner = null; while (true) { System.out.println("输入要打印的菱形的高度...
2018-12-09 10:32:39
733
原创 javescript ECMAScript Node关系
ECMAScriptECMAScript 是一种脚本语言的标准。 最初制定的目标是给不同浏览器的脚本语言提供一种统一的标准。该语言与web浏览器没有依赖关系,web浏览器只是ECMAScript标准实现的一种宿主环境之一。其他的宿主环境还包括NODE 和 Adobe Flash。ECMAScript是脚本语言的基础,在此基础上可能构建出更完善的脚本语言。ECMAScript标准主要...
2018-11-23 15:39:13
212
infobright-社区版.zip
2022-01-10
kibana-6.2.4-darwin-x86_64.tar.gz.zip
2020-08-18
mac-pkg-net.downloadhelper.coapp-1.3.0.zip
2020-02-08
zookeeper-3.4.10.tar.gz.zip
2019-09-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人