- 博客(281)
- 资源 (22)
- 问答 (6)
- 收藏
- 关注
原创 关于线上紧急数据与普通数据的处理方案
前言:线上数据如果出现问题,必须是优先处理,其优先级 > 待上线项目 > 测试bug > 开发中项目。所以假如出现线上问题,需要马上处理。线上问题场景1:假设有一个脚本跑用户转发介绍赠送礼品的数据,但是由于发版问题导致数据不一致,并且在几天后有用户投诉发现了这个问题。发现的情况是由于表库部分没建立,到时部分数据重复插入,用户不断获得礼品。针对这种线上问题...
2019-07-23 12:00:14 376
原创 关于本地开发对接前端的解决思路
场景1:假设局域网启动了一个禅道(管理项目的一个后台系统),ip为10.10.119.66:8081,我当然可以直接通过10.10.119.66:8081来访问到禅道了。但是我还想让别人都用个域名www.lidisam.cn:8081来访问禅道。解决步骤:1 打开C:\Windows\System32\drivers\etc\hosts,并编辑添加一行如下:10.10.119....
2019-07-21 17:58:54 725
原创 JVM常用参数及用法例子
声明:以下环境均是JDK1.8参考:实战Java虚拟机1 GC打印参数-XX:+PrintGC遇到GC就会打印日志-XX:+PrintGCDetails打印更详细信息,JVM退出前会打印JVM详情-XX:+PrintHeapAtGCGC前后打印堆信息-XX:+PrintGCTimeStamps会在当前GC时,打印当前启动后的时间...
2019-07-14 20:16:55 481
原创 IDEA使用JRebel实现代码热部署
1 为什么要热部署?因为如果不采用热部署,每一次写完代码都要重新编译,有些项目很大,重启要一两分钟,那一天啥都不干,启动项目就没时间了。所以需要采用热部署的方式,而JRebel是一个很好用的IDEA 热部署插件,甚至XxxMapper.xml这些修改了,重新编译后都会直接生效。这样代码改一下就生效,效率就能提高很多。2 IDEA安装JRebel教程1 打开IDEA2 ...
2019-07-12 22:15:39 660 1
原创 JVM基本结构及例子简析
参考自:《实战Java虚拟机》Java中函数返回时,栈帧从Java虚拟机栈中弹出,要么是return指令,要么是抛异常。1 下面演示一个递归调用例子:首先执行:javac TestStackDeep.java然后分别执行如下命令:-java -Xss128k TestStackDeep > TestStackDeep.log-java -...
2019-07-10 00:05:59 460
原创 centos7安装kafka
参考自: https://www.mtyun.com/library/how-to-install-kafka-on-centos7(含单机多broker集群配置)环境: jdk1.8 kafka2.11 centos7 启动前请确保装好了jdk1.8和zookeeper。安装教程分别如下:jdk安装教程:https://blog.csdn.net/...
2019-06-14 23:44:15 5859
原创 《代码整洁之道》简单归纳
混乱的代码原因:需求的快速迭代的同时,如果没有管理好代码,很有可能造成代码的混乱。导致后米娜越来越难维护,要招更多的人,但是新人又熟悉系统,会导致代码更混乱,更难维护。注:以上是混乱代码的生产力随着时间下降的图需要怎么做?1 代码块尽量小+无重复代码2 命名要一看就懂定义常量变量(不直接用字符或数字表示,可定义如下: priv...
2019-06-14 20:49:12 376
原创 《Google File System》阅读散记
以下纯属散记,属于片面知识记录,如无阅读过对应论文《Google File System》请勿往下阅读。如了解可先阅读:GFS浅析:https://www.cnblogs.com/lushilin/p/8665178.htmlGFS适用于以下场景 1 认为组件失效是一种常态,提供了容错机制,自动负载均衡,使得分布式文件系统可以在廉价机器上运行2)面向...
2019-06-05 23:14:35 2390
原创 《 Java并发编程的艺术》之Java中的锁(第五章)
1 Lock接口Lock和synchronized有何区别,区别在于synchronized是锁一个代码块或一个方法,需要先获取锁再释放锁,可操作性比不上Lock。而Lock的可操作性在于我们可以像下面这样操作:------------------------------------------------------Lock lock1 = new ReentrantLoc...
2019-05-25 11:12:49 356 2
原创 CAS与AQS源码简析
什么是CAS?CAS(Compare And Swap),顾名思义就是比较并交换。用于解决多线程使用锁带来的性能损耗的问题,是一种非阻塞算法,其交换原理如下图:CAS用法:- 数据库中的乐观锁:即表字段+version字段,然后每次更新时就比较当前version版本是否一致,一直才更新并且升级version=version+1。- unsafe的...
2019-05-23 23:58:32 306
原创 Java空指针异常优雅处理的方式
1 原因如下:由于Java开发过程中一不注意就会造成空指针异常,但是如果要避免这些空指针异常我们就可能需要写如下啰嗦有无聊的语句: if(test != null && test.size() > 0) {..............}为了避免写这些无聊的语句和 避免NPE错误,我们可以用如下用法进行替代。2 用法如下:@Testp...
2019-05-22 19:51:35 4037
原创 《 Java并发编程的艺术》之Java并发编程基础(第四章)
1 首先我们先通过书上例子来说明线程状态。下面例子 TimeWaiting只是设置了循环休眠, Waiting循环休眠,并且获取了锁,并调用wait()方法等待某个唤醒的时机 Blocked循环并获取锁,重点是还有多个线程去争这个锁(BlockedThread-1、BlockedThread-2) public class ThreadState {...
2019-05-14 23:36:18 228
原创 设计模式之一些其他知识
1 组合和继承有何区别?(暂时没想到更啥,先更着之前写的东西吧。。。)- 继承:is-a关系。实现对父类的扩展,但是继承的-- 缺点:父类细节对子类可见;高耦合- 组合:has-a关系。把组合类的对象加入到当前类中作为一个成员变量。-- 优点:通过所包含的对象去调用那个类的方法,即所包含对象内部细节对当前对象不可见;低耦合,修改被包含类仅需要修改那个类(不影响当前类);运...
2019-04-14 21:27:44 177
原创 设计模式之适配器模式
前提:适配器模式有三种-类、对象、接口适配器。(暂时没想到更啥,先更着以前写的适配器模式吧。。。)https://www.cnblogs.com/V1haoge/p/6479118.html使用场景:假设手上有一个ps2插头的设备,但主机对外是usb,这时候需要弄个转换器,将ps2转为usb插头。Java中使用场景:java中的I/O流将字节流转为字符流,如InputSt...
2019-04-14 21:25:40 162
原创 设计模式之责任链模式
http://www.runoob.com/design-pattern/chain-of-responsibility-pattern.html前提:含Chain管理类、抽象处理者类、具体处理者类。行为模式,当前类引用下游形成一条链。(暂时没想到更啥,先更着以前写的责任链模式吧。。。。)另一种方法:Filter接口、FilterA实现类、FilterB实现类、FilterChain有个...
2019-04-14 21:23:39 173
原创 设计模式之状态模式
https://www.cnblogs.com/java-my-life/archive/2012/06/08/2538146.html前提:含环境类、状态接口、具体状态类。将每个状态实现为一个对象即行为。(ps: 没想到更啥,先更着以前写的状态模式吧。。。。)1 状态接口:public interface VoteState { /** * 处理对...
2019-04-14 21:21:41 166
原创 设计模式之单例模式
单利模式的写法1懒汉单利模式2 饿汉单利模式(线程安全)一般直接用过饿汉即可,要求懒加载采用静态内部类publicstaticsynchronized Singleton getInstance() {3 双重检验锁模式避免多个线程进入同步块,volatile可避免重排序。如先分配instance内存在调用构造函数顺序颠...
2019-04-14 21:18:46 157
原创 设计模式之桥接模式
前提:含抽象类、扩展接口、具体实现类、具体扩展类。使用组合的方式替代继承。(ps:最近想不到更新啥,就先更着以前呆的桥接模式)区别:桥接模式与策略模式均采用组合的方式,区别在于可将策略模式当成桥接模式的子集,去掉桥接模式的扩展接口,那桥接模式与策略模式就基本一致,都是拥有一个使用接口的对象聚合某个接口后调用接口具体的实现类。参考:https://blog.csdn.net/sjtu...
2019-04-14 21:08:58 198
原创 设计模式之观察者模式
参考自:https://www.cnblogs.com/luohanguo/p/7825656.html前提:主要四个类(抽象被观察者(发布者)、抽象观察者(订阅者)、具体被观察者、具体观察者)(ps:好久没更新了,不知道更啥,先更着观察者模式。。。)用途:微信公众号消息推送1 抽象被观察者接口:public interface ObserverAble {...
2019-04-14 21:02:46 226
原创 设计模式之策略模式
参考:https://www.cnblogs.com/java-my-life/archive/2012/05/10/2491891.html前提:分为三部分(环境、抽象策略类、具体策略类),定义一组算法,并切封装这些算法继承自同一父类并可相互替换。(ps:好久没更新了,不知道更啥,先发着策略模式。。。)应用场景:如折扣的计算可分离开来。1 环境类:publi...
2019-04-14 20:59:47 193
原创 设计模式之装饰者模式
前提:装饰者和被装饰者类均继承自统一接口。装修者模式不控制被装饰者类,只是在方法属性上的叠加。增强对象行为。(ps:好久没更新,不知道更啥,先发着设计模式。。)1 公用接口:public interface Superman {String getWeapon();//武器}2 被装饰者类(咸蛋超人-刚出山的没装备)public cla...
2019-04-14 20:57:50 167
原创 设计模式之代理模式
前提:代理类和被代理类均继承自统一接口。代理模式是使用代理类去控制被代理类的方法。(ps:好久没更新,不知道更啥,先发着以前写的。。。)静态代理、JDK动态代理、Cglib动态代理区别(面试题):静态代理需要目标对象、代理对象均实现同一接口。JDK动态代理仅需目标对象实现接口。Cglib动态代理中目标对象、代理对象均不用实现接口,其底层通过ASM转换字节码来生成目标对象子类,从而...
2019-04-14 20:55:13 154
原创 RabbitMQ配置教程(非框架整合)
1 安装Erlang(spring整合及死信队列将在下一篇讲解)#wget http://erlang.org/download/otp_src_19.3.tar.gz# tar zxvfotp_src_19.3.tar.gz# cdotp_src_19.3# ./configure --prefix=/opt/erlang //如果上一步报错,则执行yum -y...
2019-04-08 23:32:40 390 1
原创 Windows搭建ELK教程
ELK由ElasticSearch(ES)、Logstash和Kiabana三个开源工具组成1 首先下载如下:分别去https://www.elastic.co/downloads/下载上面三个windows的安装包,以为Logstash依赖ES服务,Kibana依赖Logstash和ES,所以安装和启动顺序分别为:ES->Logstash->Kibana...
2019-03-25 22:30:27 6812 3
原创 Java邮件收发、解析工具封装
以javamail为基础,封装好的邮件收发工具包,github链接为:https://github.com/Lidisam/lisam-javamail。如想打包成maven,可使用maven clean install 来安装到本地maven仓库。项目基本目录结果如下:基本用法如下:public class Test { public static void main(St...
2019-03-23 22:32:00 584
原创 Java语言国际化代码
参考教程:https://www.cnblogs.com/jingmoxukong/p/5146027.html1 解决思路:客户端选择语言,然后将其加入cookie中传过来解析并切换语言包即可。主要用的是Locale和ResourceBundle类2 首先编写拦截器中的拦截代码如下:// 解析当前cookie,根据cookie处理当前语言包Cookie[] coo...
2019-03-16 13:46:13 1236
转载 使用 VisualVM 进行性能分析及调优
转自:https://www.ibm.com/developerworks/cn/java/j-lo-visualvm/index.html概述开发大型 Java 应用程序的过程中难免遇到内存泄露、性能瓶颈等问题,比如文件、网络、数据库的连接未释放,未优化的算法等。随着应用程序的持续运行,可能会造成整个系统运行效率下降,严重的则会造成系统崩溃。为了找出程序中隐藏的这些问题,在项目开发后期往...
2019-03-05 21:41:20 275
转载 Java8 函数式接口@FunctionalInterface的秘密
本文参考自:https://mp.weixin.qq.com/s/mOLQa2yOOmyJ2J9PWwE3NQ (以下为个人快速阅读总结部分) 前沿:jdk1.8引入函数式接口,即SAM(即single abbstrat method),一个只允许定义一个抽象方法,默认方法、静态方法、Object有的除外。 例子如下:@FunctionalInterface ...
2019-02-03 22:31:07 352
转载 Redis架构之防雪崩设计:网站不宕机背后的兵法
转自:https://mp.weixin.qq.com/s/TBCEwLVAXdsTszRVpXhVug (原文阅读更佳)导读:互联网系统中不可避免要大量用到缓存,在缓存的使用过程中,架构师需要注意哪些问题?本文以 Redis 为例,详细探讨了最关键的 3 个问题。一、缓存穿透预防及优化缓存穿透是指查询一个根本不存在的数据,缓存层和存储层都不会命中,但是出于容错的考虑,如果从存储层查不到数据...
2019-01-28 23:30:10 287
原创 Java 反射与Class.forName("xx")创建对象方式简述
总结如下:- java可通过5种来创建实例化一个对象(new、反射、Class.forName、clone、序列化),多的不讲,就说说反射与Class.forName- 从下面的代码可分析出如果在当前类没有加载到jvm前,代码中步骤1、2、3在没有调用newInstance()之前均只是执行到了<clinit>阶段(当然类加载进jvm后,即便执行如Class.forName...
2019-01-27 00:14:53 2011
原创 本地配置IDEA启动EDAS应用环境
参考链接:https://help.aliyun.com/document_detail/44163.html?spm=a2c4g.11186623.2.23.6c615919IjeBUt环境要求:jdk 1.7或以上、maven 3.0或以上、IDEA应为企业版非社区版 下面就以一个真实的EDAS项目配置作为讲解: 1 确定配置好maven、java环境是否符合要求...
2019-01-26 10:40:08 3313
原创 Dubbo原理之服务暴露
大致过程为:1 xml加载为对应的BeanDefinition。配置xml,然后找到spring.handlers对应的类DubboNamespaceHandler,调用其init()方法将dubbo对应的标识,通过DubboBeanDefinitionParser.parse()初始化为spring的beanDefinition,用于后续的对象反射初始化。2 暴露服务。通过Serv...
2019-01-26 10:28:14 579
原创 马拉车(Manacher)算法 - 解最小回文子串
什么是回文字符串?顺着反着输出都一样的就是回文字符串。如“abccba”、“level” 如何解最小回文子串:1 在当前字符串的每个字符左右侧插入"#",并在该字符串前后加入$...@用于标记边界,例子为"abc"=>"$#a#b#c#@"2 初始化一个p[i]数组。用于存储当前下标i对应的半径长度,如"$#a#b#c#@"对应的p数组为[1, 1, 2, 1, ...
2019-01-17 23:12:26 482
转载 Java不可重入锁和可重入锁理解
转自:https://blog.csdn.net/u012545728/article/details/80843595最近正在阅读Java ReentrantLock源码,始终对可重入和不可重入概念理解不透彻,进行学习后记录在这里。基础知识Java多线程的wait()方法和notify()方法这两个方法是成对出现和使用的,要执行这两个方法,有一个前提就是,当前线程必须获其对象的mo...
2019-01-12 11:47:00 1245
原创 JVM监控和故障处理自带的命令行工具
本文参考自:《深入理解java虚拟机》${JAVA_HOME}./bin目录下有很多jdk自带的jvm监控工具,以下将一一讲解: 1 jps(虚拟机进程状况工具)作用:与linux ps 一致(查找进程),查找的第一个参数即LVMID(也是进程pid),用于后面其他命令行工具的使用。 用法:格式:jps [options] [hostid]示例:jps...
2018-12-30 20:42:13 530
原创 关于linux中各种服务注意点及其脚本编写的技巧
为什么我们作为一个Java开发需要懂linux?我觉得是因为开发的各种服务毕竟是需要自己搭建的,运维只是协助我们监控环境、处理服务器硬件、管理部署上线的过程等。所以如果我们想变成高级开发工程师或更高的架构师,就必须需要学会处理linux一些基本的问题,做到半个运维的程度。 服务搭建过程中常见的问题一般是什么原因引起?!!权限、权限、权限!!重要的事说三次在环境能正常搭...
2018-12-30 11:21:41 295
原创 JVM运行数据区加载.class文件及new一个对象的过程
以下我们将会结合JVM运行时数据区+(加载、验证、准备、解析、初始化、使用、卸载) 来讲解加载过程,此过程不涉及到JVM运行时数据区外的内存空间。更多相关内存请看后续文章。1 先概述下JVM运行时数据区: 2 再说说[加载、验证、准备、解析、初始化、使用、卸载]七个阶段:2.1 jvm加载.class过程:1 加载(使用类加载器-详情见我其他博客的双亲委派模式/当...
2018-12-30 00:17:14 1123
转载 局部变量表Slot复用
转自:https://www.jianshu.com/p/a474dd20b08d为了尽可能节省栈帧空间,局部变量表中的Slot是可以重用的,方法体中定义的变量,其作用域并不一定会覆盖整个方法体,如果当前字节码PC计数器的值已经超出了某个变量的作用域,那这个变量对应的Slot就可以交给其他变量使用。不过,这样的设计除了节省栈帧空间以外,还会伴随一些额外的副作用,例如,在某些情况下,Slot的复用...
2018-12-27 21:06:39 676
原创 Java虚拟机站之操作数栈
环境:jdk1.8 首先来一张图看看jvm的运行时数据区如下(有个印象即可): 什么是操作数栈?- 与局部变量表一样,均以字长为单位的数组。不过局部变量表用的是索引,操作数栈是弹栈/压栈来访问。操作数栈可理解为java虚拟机栈中的一个用于计算的临时数据存储区。- 存储的数据与局部变量表一致含int、long、float、double、reference、...
2018-12-26 22:22:32 22329 13
转载 深入理解Java多态机制
转自:https://www.cnblogs.com/tsiangleo/p/4415628.html从字节码层面来看,Java中的所有方法调用,最终无外乎转换为如下几条调用指令。 invokestatic: 调用静态方法。 invokespecial: 调用实例构造器<init>方法,私有方法和父类方法。 invokevirtual: 调用所有的虚方...
2018-12-25 00:32:17 2376
Linux高性能服务器编程.pdf
2018-12-18
Maven权威指南中文版pdf(高清带完整目录).pdf
2018-12-17
构建高性能Web站点(修订版).pdf
2018-12-16
TOMCAT权威指南(中文版).pdf
2018-12-16
架构探险 从零开始写Java Web框架.pdf
2018-12-16
程序员的SQL金典(完整清晰版).pdf
2018-12-16
大数据概念介绍.pdf
2018-12-16
深入分析Java Web技术内幕修订版书籍.pdf
2018-12-16
七周七并发模型_PDF电子书下载 带书签目录 高清完整版
2018-12-16
《操作系统精髓与设计原理(原书第6版)》PDF中文版
2018-12-15
《算法导论》课后习题完整答案(包含思考题)
2018-12-15
Java面试宝典2017版
2018-12-15
swoole websocket实现五子棋
2017-05-11
swoole实现的你画我猜
2017-03-28
nodejs基于express简易聊天室
2016-07-27
PHP SOCKET如何释放所占用的端口
2015-11-24
PHP SOCKET如何释放所占用的端口
2015-11-23
PHP SOCKET如何释放所占用的端口
2015-11-23
PHP的curl模拟·登录老是失败出现了405错误
2015-08-20
Laravel5.0如何引入js,css,image这些啊
2015-08-19
php中如何用curl模拟http头信息进行模拟登陆并获取信息
2015-08-19
TA创建的收藏夹 TA关注的收藏夹
TA关注的人