自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

特立独行的猿

寻找老程序员的自由职业之路

  • 博客(316)
  • 资源 (12)
  • 问答 (1)
  • 收藏
  • 关注

原创 学习编程的必经之路

编程是当今社会必不可少的一项技能,越来越多的人开始学习编程以求在职场和未来的竞争中拥有更多优势。但对于初学者来说,学习编程有时候可能会感到困难和无从下手。那么,面对编程学习这个庞大的知识体系,我们应该如何着手呢?

2023-06-24 13:37:11 268

原创 借鉴Mysql,Hbase解决Redis丢数据问题

业务背景在订单业务领域会遇到订单超时的情形,要实现这样的功能,有2种解决方案:定时JOB捞取订单状态为支付超时的订单,去批量取消。这个方案是定时全量捞取,效率低,容易积压订单,如果没有超时订单,JOB还是会空跑浪费资源,不可取。Redis的List做延时堵塞队列的情况,从队列使用BLpop取超时订单取消,避免了空跑,和全量扫描。问题可是问题来了,Redis存在数据丢失的情况:比如Redis的数据没有及时刷盘的情况下,宕机了。比如Redis主从切换,主的数据还来得及同步到从就宕机了,这个时

2021-04-22 23:09:36 394

原创 局部性原理-用代码验证原理

/** * 操作系统局部性原理 */public class PartialPrinciple { public static void main(String[] args) { int[][] array = new int[10000][10000]; for (int i = 0; i < 10000; i++) { for (int j = 0; j <10000 ; j++) { .

2021-04-18 08:37:46 410

原创 telnet后立刻被拒绝Connetion closed by foreign host的原因

telnet后立刻被拒绝Connetion closed by foreign host的原因现象是22.188,telnet 22.122 可以通,如下22.152,telnet 22.122 报错,如下刚开始以为是22.122网络规则问题,被122拒绝了。后来通过外网,意思是不是服务器的配置问题,而是应用程序给拒绝了。然后我把22.152的应用关闭,再次telnet ,成功了,问题解决了。...

2021-03-16 17:05:53 25934 5

原创 Java进程被杀死排查过程

相关知识Linux oom-killer 是一种自我保护机制,当系统分配不出内存时(触发条件)会触发这个机制,由操作系统在己有进程中挑选一个占用内存较多,回收内存收益最大的进程kill掉来释放内存。系统为每个进程做评估(/proc//oom_score中数值最大的进程被kill掉。当发生oom的时候,可以记录在/var/log/messages中,如下:排查思路推测原因:进程被kill可能的原因有哪些?被人为的 kill -9 pid了,可能性不大,暂不讨论。操作系统内存不足,触发了oo

2020-11-03 23:31:42 1777

原创 减肥坚持不下去?一个立竿见影的方法

减肥坚持不下去?一个立竿见影的方法大家好,我是vac。今年29了,程序员一枚,本不以为自己可以「靠年轻吃饭」,随着新进的同事中几个97年的「后浪」,给了我当头一棒。我开始问自己我还年轻吗?我照了下镜子,打量了一下自己,“稀疏的头发,穿着格子衫,休闲裤,还挺着一个大肚子,双下巴上还长满了胡子。”从我的服装,外形体态和精神状态,我一眼看去像是一个37左右的老大叔。于是,我决心减肥。减肥过程中,遇到了很多的困难,让我坚持不下去,下面介绍我是怎么应对的方法。01 写下坚持不下去的原因举个例子,我当时在

2020-10-30 10:08:02 237 2

原创 Sql查询为什么要小表驱动大表

分析mysql的join实现原理是,以驱动表的数据为基础,“嵌套循环”去被驱动表匹配记录,select * from a join b on a.bid =b.id假设 a表10000数据,b表20数据这里有2个过程,b 表数据最少,查询引擎优化选择b为驱动表,循环b表的20条数据,去a表的10000数据去匹配,这个匹配的过程是B+树的查找过程,比循环取数要快的多。小表驱动的方式for 20条数据 匹配10000数据(根据on a.bid=b.id的连接条件,进行B+树

2020-10-28 11:31:22 2667 5

原创 垃圾收集器入门

垃圾收集器入门1. GC的由来C语言是如何清理内存的?C语言本身是没有提供GC能力的,是程序员通过malloc来获取堆内存,通过free函数来释放内存。那么让我想想,垃圾回收的执行逻辑跟业务操作是没有关系的。让我联想到“让程序员专注于业务开发“这句话,大师们应该会将垃圾回收这块工作给封装起来,下沉到高级语言的功能包中,于是Java,c++,c#…此类高级语言自带gc功能应运而生。2. GC的步骤关于GC,主要有以下步骤第一步:哪些对象需要回收?第二步:如何回收?接下来,我围绕这2个步骤分

2020-10-08 23:59:46 215

原创 habase集群访问慢,hbase shell查询快的原因

问题现象今天早上,我还在上班路上,测试老大在群里面喊,xx应用仿真环境访问不了,并且截图了log日志,我看了一下是dubbo服务访问超时,第一反应是dubbo服务挂了,找运维重启,重启后无果,然后等我去了公司,看了详细日志,是dubbo接口响应时长达到6s,明明是测试通过的接口,接口性能不可能这样慢, 分析了下这个接口功能,是直连hbase查询,还是rowkey的get查询,应该是几十毫秒内响应。遇到此类,本来好好的,现在不行的问题,一般都是一脸问号,没办法,只能撸起袖子找原因了。第一步:hbase数

2020-10-02 21:02:38 983

原创 JAVA锁优化

Synchronizd 锁升级过程最近在整理自己的技术体系,关于并发编程,入门级知识重量级锁Synchronized,接下来试着解释这块知识。为什么说Synchronized是重量级锁jdk1.6之前,还没有引入“偏向锁”和”轻量级锁“,synchronized是依赖monitorenter指令和monitorexit指令实现的,而这个jvm指令集是依赖操作系统内核来完成的,就会涉及到用户态与内核态的数据传递,是比较耗性能的,所以,我们前辈称之为重量级锁。锁存放在哪里对象的内存布局如下[外链图片

2020-09-28 22:43:41 139

原创 Linux磁盘不足排查过程

今天,群里面有人@我服务挂了,群里都是公司那些老资格的大佬,心里一揪,还好是开发环境。我故作镇定的说,我看看,我打开Linux服务器,shell里面敲了服务状态命令,的确是挂了。于是我先重启,报错提示no space left on device。看这意思是没有空间了,不知道是内存没有空间了还是磁盘没有空间了,英语不好,于是只能轮流试一下[root@storm bin] free -m total used free shared buffe

2020-09-25 16:23:37 467

原创 缓存穿透解决方案:布隆过滤器

BitSet基础我们会遇到这样的需求,在海量数据中找出某个数据,我们想要的就是BitSet,BitSet本质是一个bit数组,使用1表示存在,0表示不存在。简单使用示例: BitSet bitSet = new BitSet(10);# 数组大小10 bitSet.set(1); # 索引1,记1 bitSet.set(2); # 索引2,记1 System.out.println(bitSet.get(1212));# 索引1212,没有数据,所以为0

2020-09-22 23:52:44 754

原创 jdk8自带时间操作利器

1、获取当前时间Instant instant = Instant.now(); //获取当前时间戳LocalDate localDate = LocalDate.now(); //获取当前日期LocalTime localTime = LocalTime.now(); //获取当前时刻LocalDateTime localDateTime = LocalDateTime.now(); //获取当前具体时间ZonedDateTime zonedDateTime = ZonedDate

2020-09-17 18:11:09 140

原创 JVM堆内存优化技术:指针压缩

JVM堆内存优化技术:指针压缩想要将知识转化为能力,第一步进行知识拆解,第二步,进行验证应用.前置知识oop是什么oop, 原意object origin pointer, 原始对象指针.对应虚拟机中的kclass地址,可以理解为对象在堆内存中的地址指针.寻址空间32位cpu架构,最大寻址内存为4g(2的32次方),64位cpu架构,寻址内存为TB级别(2的64次方)对象的内存布局对象在堆内存中 = 对象头+实例数据+对齐补充.对象头= markword + kclass地

2020-08-29 21:16:23 775

原创 责任链和命令模式在订单系统的实战记录

责任链和命令模式在订单系统的实战记录写在前面“纸上得来终觉浅,绝知此事要躬行”.读完23种设计模式后,感觉肚子还是空空的,不知道无从下手,今天翻了一下之前的博客,曾经记录过关于Apache Commons Chain的使用,它其实基于责任链,命令模式来写的,它很适合做流程化的逻辑代码,比如订单的下单,支付流程以及退款流程,让代码写的很nice,下面把我应用在订单系统的实战记录下,看下对其他人有没有帮助.概念Command接口: 1. 命令模式,实现它来执行责任链中某个节点的业务.

2020-07-29 16:25:03 818 1

原创 费曼学习法-聊聊设计模式

什么是设计模式?设计模式就是前人总结的代码设计的模型,就像武侠里面的武功的招式,套路。为什么需要设计模式啊?我平时代码敲的也没有问题啊,功能也完成了,线上跑的很健康1、统一编程风格实现功能,这属于硬编码,没有什么技巧,形成不了模式,只能说是个copyer,复制人。大部分代码都是cv的。不能称得上工程师,你敲的代码不能成为工程级别的项目。可能你写的代码只能你自己看得懂,如果你的命名不规范的化,就会形成自己的一套代码风格。2、易维护,行内统一语言如果你使用设计模式,大家的代码风格统一了,大家都有了共

2020-06-06 22:44:41 255

原创 JAVA工作流的优雅实现方式

今天查找线上问题,看到一个让我脑洞大开的工作流实现方式。以前用过责任链模式,也用过模板模式实现类工作流的方式,但是对比这个工具,逊色不少,不卖关子了,就是Apache Commons Chain,它是Command模式与责任链模式的综合体。1Apache Commons Chain 中的角色有:chain、context、command。2在我们订单系统有这样的业务,就是退票的时候,会根据核损后的...

2018-07-01 17:41:12 31831 6

原创 算法图解:快速排序

快速排序:假设有数组arr=[3,4,8,1,23,4]1 选择一个基准值,通常arr[0],2 选择一个基线条件:有且经仅当一个数组 或者 数组为空。if arr.length&lt;2  return arr;3 将arr分为2组数据,通过基准值比较,将&gt;基准值的放入新的数组greaterArr,其他的放入lessArr;4 分别对greaterArra 重复 2 3 4操作。俗称 分而...

2018-06-30 18:25:36 1091

原创 算法图解:选择排序

选择排序,时间复杂度O(n*n),查询效率慢。步骤:假设数组int [] arr = {5,3,6,2,1,0},按照从小到大排序。1:取第一个位置的数为最小值,最小值所在的位置为0,即 min = 5, min_index = 0;2:跟arr第1个位置的值开始 比较,如果找到最小值,即 arr[1]&lt;min,则更换最小值min=3,min_index=1;...................

2018-06-30 15:04:36 424

原创 算法图解:二分法查找

二分法查找:从排序好的数组,找到你需要找到的值(t=1),算法复杂度:O(log n)步骤:首先确认查找的数组索引范围,1:假设数据int[] arr = {0,1,2,3,4,5,6,7,8,9}; 2:则搜索范围为 [0,9];即int start =0;int end = 9;3:取数组索引中间的值跟t比较,int middle  = (start + end)/2=4;4:如果arr[mi...

2018-06-30 12:54:40 9740

原创 图解:垃圾回收的那些算法

标记-清除复制标记-压缩

2018-06-28 22:41:35 329

原创 图解JVM系列总纲

JVM运行期内存分配

2018-06-28 21:52:01 185

原创 图解:JVM虚拟机栈与组成部分

程序计数器虚拟机栈虚拟机栈与线程相关。启动一个线程,程序调用函数,栈帧被压入栈中,函数调用结束,相应的是栈帧的出栈。栈帧由局部变量表,操作数栈,帧数据区组成。局部变量表:存放的是函数的入参,以及局部变量。操作数栈:存放调用过程中的计算结果的临时存放区域。帧数据区:存放的是异常处理表和函数的返回,访问常量池的指针。本地方法栈堆方法区:常量池直接内存...

2018-06-28 21:50:20 1922

原创 「所谓的稳定,不过是在浪费生命」,你怎么看待这句话?

“追求稳定,就是浪费生命”,首先这是个主观命题,而且未免把话说的严重了点。如果咱们把话题换成“追求稳定,或许某些时候,像温室里的花朵,不利于个体的发展”,这样的表达更容易让人接受些。一对于稳定的好坏,这个要看每个人追求的是什么,有些人爱安稳,有些人爱折腾,投其所好就好;另外还跟每个阶段有关,年轻的时候,还是挑战一下自己,等到中年的时候,可以功成身退,求一份安稳的生活。二如果说“追求稳定就是浪费生命...

2018-06-22 22:06:12 537

原创 《围城》里的教会我的人情世故

      《围城》个中的句子,总让你饶有兴味的品尝好久,好的作品总能让人看完后,有所思或有所悟。比如有段关于人如何与人相处才能避免冲突,又能保持团结亲密。       方鸿渐是这样说的:“天生人是教他们孤独的,一个个该各归各,老死不相往来。身体里容不下的东西,或消化,或排泄,是个人的事,为什么心里容不下的情感,要找同伴来分摊?聚在一起,动不动自己冒犯人,或者人开罪自己,好像一只只刺猬,只好保持着...

2018-06-10 12:35:01 1533

原创 就国内而言,读大学的意义是什么?

我是工作五年的程序员,以我个人的社会阅历来回答一下上大学的意义。论上大学的意义,撇开社会和家庭的,对我们自己,得从二方面理解。第一、对自身修养、品质大学,本身也是一种社会群体。在里面,你会遇到来自不同地方的人,你就被各种性格的人生活,你会感到不习惯,看不惯,渐渐地你知道你改变不了环境,只能去适应,你学会了包容。在校期间,你也会遇到社会黑暗,你只能学会低头。多少同学为了奖学金绞尽脑汁去凑学分,或者拉...

2018-06-08 22:04:38 5730

原创 一篇文章洞悉java动态代理

    最近在读特立独行的猫的小说(你以为的极限只是别人的起点),如果你对她有所了解,就知道她写的这本也是一本很浓的鸡汤的书籍,虽然我们听过很多道理却依旧过不好这一生,我觉得偶尔读读鸡汤,给自己打点鸡血还是蛮不错的体验。今天读了一篇文章,推荐一下,论写作对技术的重要性mp.weixin.qq.com/s/-bXP2jAcz8M1c9-nElOsJA一、什么是动态代理动态代理分为jdk动态代理与cg...

2018-06-04 13:26:01 267

原创 互联网系统架构的思考

     16年,我成功的进入了一家上市的互联网公司,来了这里半年多了,通过对系统的慢慢了解,想总结一些东西,以供后续改进与提升。     一、系统面临的问题     降级开关与灾备方案做的不足     优质人才缺乏,导致上线问题多    灰度环境无人维护,开发分支,版本控制       没有 统一规范     二、大型系统应该有的功能特点         ( 一)服务治理      大型项目都会...

2018-06-01 10:46:26 796

原创 人人都需要精神食粮

 今天,星期天,小雨。我坐在办公室里,趁着周末,周围安静祥和的环境,记录下我这段时间的沉淀的感悟吧。       二年前,我很幸运,来到了这家公司。至于福利薪水待遇,就不值得提了,幸亏这里还有一些优秀的同事,融洽的工作环境,我跟着他们学习一些我所缺失的某个领域,打破了我之前建立的价值观,对事物的看法。也不是说我之前的想法就是错的,就是有点局面了,和他们交流能使我的思想更饱满。       韩寒说过...

2018-05-31 17:18:48 860

原创 skycloud博客详细设计v1.0

博客详细设计v1.0 一、 功能分析 目的:v1.0:能发布博客,能评论,页面简洁大方 主要功能点: 1、首页 2、文章 3、详情页 参考http://www.bysocket.com/ 简单大方第一天: 项目名称:skycloud Git库:https://git.oschina.net/stefan2014/skycloud.git View效果: 二、页面设计三、前端开

2016-10-23 19:02:09 557

原创 底层解惑-spring的IOC相关接口:BeanFactory与FactoryBean

一、区别 BeanFactory是个 Factory ,也就是 IOC 容器或对象工厂; FactoryBean 是个 Bean,但是不是普通的bean,该bean是通过getobject()返回一个修饰的bean,而不是它本身,它的实现与设计模式中的工厂模式和修饰器模式类似。 二、代码package org.springframework.beans.factory;import o

2016-05-19 15:16:44 811

原创 底层解惑-spring的@service的原理及其一接口多实现的解决方案

spring  @service注解的接口实现类,如果是单一实现类,直接在controller用@Resource注入就可以了如果是多实现类,还这样做的话,就会报错(不止一个实例对象),于是可以如下做法:     1、在需要注入的地方使用如下方式引入:        @Autowired        @Qualifier("timeFilter")        Fi

2016-05-19 11:56:44 5754

原创 底层解惑-jndi与数据库连接池的联系与区别

在Tomcat4.1.27之后,在服务器上就直接增加了数据源的配置选项,直接在服务器上配置好数据源连接池即可。在J2EE服务器上保存着一个数据库的多个连接。每一个连接通过DataSource可以找到。DataSource被绑定在了JNDI树上(为每一个DataSource提供一个名字)客户端通过名称找到在JNDI树上绑定的DataSource,再由DataSource找到一个连接。如上图所示。

2016-05-18 11:42:04 2547

原创 多数据源 atomikos 打造Java分布式事务

SSH + atomikos 打造Java分布式事务 web工程

2015-08-27 14:12:57 697

原创 Tomcat的性能与最大并发(1000)

当一个进程有 500 个线程在跑的话,那性能已经是很低很低了。Tomcat 默认配置的最大请求数是 150,也就是说同时支持 150 个并发,当然了,也可以将其改大。 当某个应用拥有 250 个以上并发的时候,应考虑应用服务器的集群。 具体能承载多少并发,需要看硬件的配置,CPU 越多性能越高,分配给 JVM 的内存越多性能也就越高,但也会加重 GC 的负担。 操作系统对于进程中的线程数有一定

2015-07-22 17:21:58 4070

原创 SQL语句的执行原理分析

原理: 第一步:应用程序把查询SQL语句发给服务器端执行。 我们在数据层执行SQL语句时,应用程序会连接到相应的数据库服务器,把SQL语句发送给服务器处理。 第二步:服务器解析请求的SQL语句。 1:SQL计划缓存,经常用查询分析器的朋友大概都知道这样一个事实,往往一个查询语句在第一次运行的时候需要执行特别长的时间,但是如果你马上或者在一定时间内运行同样的语句,会在很短的时间内返回查询结果。

2015-06-30 12:25:26 1222

原创 java代码实现文件上传到linux服务器及问题汇总及解决

近段时间java代码向服务器上传文件的代码。可是屡试不行。很是郁闷。最终还是完成了。自己也总结了许多上传中的错误及解决分析,都是自己自己总结的,若有什么理解错误,欢迎大家留下宝贵意见,还有很多不懂得大家一起深入了解。在此谢过了下面附上代码。jar包我资源里免费的,欢迎大家下载。[html] view plaincopypack

2015-06-14 20:46:55 10074 2

原创 手写Java框架(一)-----理想的开源框架与设计原则

理想的开源框架•她应该是小的、简单的,满足Simple Is Beautiful•她应该是成长性好的,随着不断的扩展,她可以越来越丰满•她应该是有良好工具支持的,为什么要花时间做工具可以完成的事情呢?•她应该是自组装的,也就是尽可能的脱离配置,而是用一种依赖即可用,取消依赖即消失的全自动处理模式•她应该是模块化的,所有的内容都可以被打入jar包而作为一个整体进行发布,并且能支持

2015-06-09 11:26:15 1835

原创 Lucene与DB结合示例

今天发一个简单的和数据库交互的Lucene示例,只是初步的靠Lucene自带的分词实现中文分词,效果肯定没有网上琳琅的分词器相媲美,只为了示例,用了自带的高亮。页面不好看,将就一下哦。    主要是由 Spring + Struts1 + Mysql 5 实现, 只是为了实现功能。请各位大侠拍砖。    好了,不多说了。贴代码:     1. T_ARTICLE 表Ja

2015-05-20 19:56:31 2014

原创 lucene快速入门---一个例子读懂

一、一句话描述                  Lucene不是一个完整的全文索引应用,而是是一个用Java写的全文索引引擎工具包,它可以方便的嵌入到各种应用中实现针对应用的全文索引/检索功能。二、举例应用                  Eclipse:基于Java的开放开发平台,帮助部分的全文索引使用了Lucene三、例子import java.io.Buffere

2015-05-20 19:54:21 2415 1

spring多数据源 分布式事务实例

SSH + atomikos 打造Java分布式事务 web工程

2015-08-27

springmvc_hibernate+json lib包

springmvc_hibernate+json lib包

2014-04-16

少有的城市四级联动的js弹出选择框

最近做了一项项目,要求用城市用四级联动,于是我们找到了一个插件弹出,里面有省市县三级的,经过努力成功的改造成四级联动具体到区,兼容各种主流浏览器,chrom,ie,firefox

2014-04-15

ssh开发实例

ssh开发实例

2013-01-16

个人理财系统 毕业设计

个人理财系统 毕业设计

2013-01-15

poi官方文档 pdf

poi文档 官方文档 pdf 方便查找 目录查询

2013-01-05

我自制的小型图书管理系统

图书管理系统 我自制的小型图书管理系统 有源代码 供初学者学习下载 期末作业

2012-05-16

图书馆管理系统

图书馆管理系统 免费的 下再把 少年 冲把

2012-05-15

java API 中文文档

“学语言看书本 搞技术 看文档” java的开发离不开文档

2012-03-27

j2sdk-1_4_2-windows-i586.exe

j2sdk-1_4_2-windows-i586.exe 欢迎使用 ,学java还是开发装用

2011-11-01

Java入门必备(初学者必下)

初学者,必备的基础知识,和我一起进步吧,需要的下载吧,只为共同学习

2011-08-15

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

TA关注的人

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