自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 资源 (1)
  • 收藏
  • 关注

原创 积少成多系列传送门

文章目录一 前言二 传送门2.1 算法2.2 数据机构2.3 设计模式2.4 JVM2.5 生产问题2.6 编程技巧2.7 分布式设计2.8 缓存一 前言  已经休息到第五天了,书也看了,游戏也玩了,准备调整一下生活状态为节后工作做个铺垫,然后突然冒出一个想法,是时候整理一下零散的知识点了。  近两年慢慢的发现,个人能力的高低和收入的多少并没有什么线性关系,究其本质在于市场的需求量有多大。如...

2019-10-05 13:13:48 154 2

原创 网络编程 二 Socket通信上篇

文章目录一 Socket二 连接类型三 ServerSocket常用API3.1 构建服务端ServerSocket对象3.1.1 绑定服务端口3.1.2 等待连接超时设置3.1.3 限制可接受连接数量3.1.4 绑定IP地址3.1.5 后置绑定3.2 访问绑定信息3.3 超时Socket地址复用3.4 接收缓冲区大小3.5 其他API附录RFC一 Socket所谓套接字(Socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程

2020-08-27 11:18:45 51

原创 网络编程 一 设备信息

文章目录一 网络设备接口信息二 网络设备子接口信息三 地址信息3.1 硬件地址3.2 IP地址四 网络接口地址五 其他设备信息附录一 回环网卡二 MTU一 网络设备接口信息  Java中提供了NetworkInterface供应用访问设备IP地址信息,这是一个被final修饰的类,足见其重要程度:/** * This class represents a Network Interface made up of a name, * and a list of IP addresses assi

2020-08-25 19:55:57 64

原创 NIO 五 文件通道

文章目录一 通道和流的区别二 已实现的主要通道三 FileChannel四 API介绍4.1 获取FileChannel对象4.2 数据写入4.2.1 write(ByteBuffer src)4.2.2 write(ByteBuffer\[] srcs)4.2.3 write(ByteBuffer\[] srcs, int offset, int length)4.2.4 write(ByteBuffer src, long position)4.3 数据读取4.3.1 read(ByteBuffer d

2020-06-26 15:42:22 64

原创 NIO 四 通道接口

文章目录一 通道二 通道接口三 接口说明3.1 AutoCloseable3.2 Closeable3.3 Channel2.4 InterruptibleChannel2.5 ReadableByteChannel2.6 ScatteringByteChannel2.7 WritableByteChannel2.8 GatheringByteChannel2.9 ByteChannel2.10 SeekableByteChannel2.11 AsynchronousChannel2.12 Asynchro

2020-06-06 22:04:34 91

原创 NIO 三 缓冲区数据读写

文章目录一 自增读写1.1 单数据自增读写1.2 批量数据自增读写1.2.1 定长读写1.2.2 完全读写1.3 剩余数据写入二 目标读写三 值类型数据读写四 结语一 自增读写  先打预防针,缓冲区的读写复用是通过数据写入覆盖实现的,所谓数据清理都是通过移动核心参数值实现的,实际上数据写入后会永久存在,这意味着在读写缓冲区数据时,必须要时刻了解position、limit、mark和capacity。  读写数据时对position参数的依赖非常强,很多时候都可以将position作为下一次读写数据对

2020-06-01 15:37:43 90

原创 NIO 二 创建缓冲区

文章目录一 前言二 通过显式的数组对象创建三 通过隐式的数组对象创建四 创建直接缓冲区五 复制缓冲区5.1 浅拷贝缓冲区5.2 只读拷贝5.3 缓存切分六 缓存数据格式转换四 结语一 前言  前一篇博客中介绍了缓冲区Buffer,其中大量的篇幅在描述缓冲区的4个核心参数的设置/访问API,这是所有Buffer类设计的基础,这一篇则在此基础上介绍如何创建不同类型的缓冲区。  创建缓冲区大致分为两种模式,第一种基于JVM数组对象创建的缓冲区,内存分配在JVM中;第二种是直接缓冲区,数据操作直接和核心交互。

2020-05-22 15:11:21 65

原创 NIO 一 缓冲区

文章目录一 缓冲区1.1 什么是缓冲区1.2 直接缓冲区1.3 NIO缓冲区实现二 核心参数2.1 参数介绍2.2 参数限定条件2.3 参数终值2.4 参数操作API2.4.1 获取缓冲区尺寸2.4.2 获取缓冲区可读写尺寸限制2.4.3 设置缓冲区可读写尺寸限制2.4.4 获取缓冲区可读写数据索引2.4.5 设置缓冲区可读写位置索引2.4.6 获取可用缓冲区大小2.4.7 标记重置位置2.4.8 重置核心参数2.4.9 写读模式转换2.4.10 数据重读三 缓冲区API3.1 缓冲区是否只读3.2 是否

2020-05-21 15:39:53 57

原创 通信问题引出进制转换Bug

文章目录一 数组长度为负二 排查过程三 数据存储四 码制转换五 进制转换六 结语一 数组长度为负  历时两年半,项目终于成功上线(????,现阶段还没有对外发布项目上线的新闻公告,大家再等两天)。所以很久一段时间我都没有再写学习笔记了,今天在家办公,恰巧昨天夜里在给应用组做技术支持的时候发现了一个较为严重的bug,所以今天我把它记录下来。  问题发生在一笔外发交易,当核心服务在接收外围系统的应答报...

2020-05-07 15:40:31 60

原创 AOP层层递进 第二部分 切面

文章目录一 AOP由来二 如何实现AOP三 Spring AOP3.1 编程式3.2 配置式3.2.1 抛出增强3.2.2 引入增强3.2.3 切面切点四 Spring+AspectJ五 小结一 AOP由来  AOP全称Aspect-Oriented Programming,和OOP相对应,前者是面向切面编程,后者面向对象编程,若要更加直白的描述两者的区别,个人认为面向对象在纵向通过派生来实现...

2019-12-28 11:21:57 38

原创 AOP层层递进 第一部分 代理

文章目录一 理解代理二 增强函数三 代理模式四 JDK动态代理五 CGLIB动态代理一 理解代理  代理是一种设计模式,指对目标对象方法的间接调用,可以实现不修改原方法逻辑的前提下扩展功能,这遵循了开闭原则。但我始终觉得代理这个词描述的不准确,原因在于代理的本质因该指代为执行,但实际上对象方法的执行并非跳过,代理之后的表现仅仅为原对象方法执行的前后多了补充逻辑,这难道不是函数增强吗?  代理...

2019-12-25 22:20:38 50

原创 DJB算法

文章目录一 缓存原理二 随机性三 Time33四 近似碰撞五 位移计算5.1 取整形最大值5.2 乘除2的N次方5.3 乘33的位移元算六 其他Hash算法七 结语一 缓存原理  诸如我们经常使用的Redis,其读写速度非常快的原因在于它的存储结构是一个Hash表,这是一个非常基础的数据结构,缓存便以K-V的形式存储在Hash表中。Hash表的读写时间复杂度为O(1),其工作流程如下:计算...

2019-11-12 16:38:48 1805

原创 ORM框架设计及实现

文章目录一 对象记录映射二 效率和性能三 数据访问描述信息四 字段类型转换五 数据访问基类六 统一异常处理七 数据访问框架八 数据源创建工厂九 SQL指令解析十 补充DAO接口实现十一 测试十二 其他问题一 对象记录映射  本质上来说,ORM框架需要处理的就是如何将JAVA对象与数据表记录进行关联,便于JAVA对象的持久化,以及将表记录自动转换为JAVA对象。  这就需要存在一个中间态的描述...

2019-11-03 13:34:25 652

原创 Log4j2代码方式配置实现线程级动态控制

文章目录一 需求二 对外暴露的接口三 代码方式配置Log4j2日志对象四 线程级日志对象的设计五 标准日志头六 异常日志的堆栈信息打印七 测试一 需求  最近平台进行升级,要求日志工具从Log4j升级到Log4j2,以求性能上的提升。之前我写过以代码方式的配置Log4j,来实现线程级日志对象的管理,今天把版本升级到Log4j2,依然采用原有思路来做,但是实现上有诸多区别,这是因为Log4j2的...

2019-10-17 21:37:00 710 2

原创 JVM参数设置——配置入口篇

文章目录一 前言二 配置JVM参数的入口2.1 JavaApplication的参数配置入口2.2 IDE工具的参数配置入口2.2 WEB容器的参数配置入口2.3 服务端进程的配置入口三 查看JVM配置信息四 结语一 前言  从今年六月份开始,一直到节前,都在给数据中心进行我公司平台部分的技能培训,其中也穿插了一些Java服务开发、运维相关的知识点介绍。  令人惊讶的是,这样一个非常专业的运...

2019-10-07 15:41:22 914

原创 LRU算法及应用

文章目录一 什么是LRU算法二 手工实现LRU2.1 简单链表实现2.2 解决命中率和缓存污染问题2.3 解决执行效率问题三 Redis如何利用LRU3.1 缓存淘汰策略3.2 LRU实现3.2.1 近似算法3.2.2 近似算法优化3.2.3 LFU算法四 结语一 什么是LRU算法  LRU的全名为Least Recently Used,意指最近少用,这是一种非常经典的算法,应用范围非常的广,...

2019-10-05 18:51:05 844

原创 Java锁应用及源码原理分析

文章目录一 前言二 CAS源码分析及应用三 重入锁ReentrantLock四 共享锁ReentrantReadWriteLock一 前言  上一篇《Java锁手册》中以特性为角度对Java中的各类锁进行了初步的介绍,并且以平衡性能损耗和解决并发安全问题为核心思想,把锁的演进过程简单的梳理了一遍。所以对本文中出现的一些概念性问题如果不甚了解,可以回头再去看看上文。  作为一名开发者,光说不练...

2019-10-03 12:38:36 129

原创 Java锁手册

文章目录零 致歉一 前言二 锁分类三 锁介绍2.1 悲观锁2.2 乐观锁2.3 阻塞锁2.4 自旋锁2.4.1 TicketLock2.4.2 CLHLock2.4.3 MCSLock2.5 无锁2.6 偏向锁2.7 轻量级锁2.8 重量级锁2.9 公平锁2.10 非公平锁2.11 可重入锁2.12 不可重入锁2.13 独占锁2.14 共享锁四 锁对比五 附录5.1 CAS算法及实现5.2 线程状...

2019-10-01 20:06:24 66

原创 桥接模式于外发设计的应用思路

文章目录一 设计模式二 设计原则2.1 单一职责2.2 里氏替换2.3 依赖倒置2.4 接口隔离2.5 知道最少2.6 开闭三 外发需求四 桥接模式五 维度抽象六 应用装配七 加深优化一 设计模式  今天在同事工位上看到了一本《大话设计模式》,倍感亲切。本科曾经开过这门课程,很清楚记得当时老师推荐的就是这本书。遗憾的是当时并没有特别深入的学习了解,直到后来参加了工作,才越发的重视设计模式。 ...

2019-09-27 21:54:04 84

原创 Unity2D开发笔记二 动态设置正交摄像机对焦距离

文章目录一 摄像机分类二 适应屏幕分辨率三 脚本实现一 摄像机分类  首先说一下什么是摄像机,这和我们现实生活里的摄像机概念一样,只不过Unity里的摄像机是用来拍摄游戏场景的,我们透过屏幕能够看到的游戏场景都是通过摄像机拍摄出来的,从游戏开始摄像机就在工作,把每一帧游戏画面反映到屏幕上。  Unity提供了两种摄像机类型:透视摄像机正交摄像机  透视摄像机主要用于3D游戏开发上,...

2019-05-26 19:47:18 460

原创 Unity2D开发笔记一 动起来

文章目录一 初衷二 环境介绍三 资源推荐四 心得体会一 初衷  本职工作是Java服务端开发,但是一直对游戏开发抱有幻想,我仍记得当初填写大学志愿的时候,就是想以后从事游戏开发所以才报考的软件工程专业。不过自己真的懒惰,而且整个大学期间也没有专业的学习过这方面知识,在南京裸辞的那段时间有打算报一个学习班专门来学习下游戏开发的,后来也因为各种原因不了了之。  慢慢上了年纪,但是心里的那团小火苗...

2019-05-26 19:18:05 596 1

原创 单点部署周期调度服务框架设计

文章目录一 需求背景二 如何处理工作任务二 线程池选择三 并不采用周期调度模式四 数据模型设计五 封装工作任务六 调度框架设计七 结语一 需求背景  当前参与的大型分布式项目中,需要一个点单部署的服务环境,以定时调度的方式来使一些处理任务能够于后台执行一些特殊功能,包括数据加工、外发通讯以及信息推送等。  按常规的设计思路应该以常驻任务的方式来实现,比如在应用程序内部死循环、阻塞等。但是考虑...

2019-05-14 21:53:58 111

原创 完整JavaWeb项目笔记 第十一部分-登陆页设计

文章目录一 需求二 页头设计三 主内容区设计四 页尾设计五 Js文件引用六 Login.js的实现七 服务端对请求的处理八 结语一 需求  服务端设计已经准备完毕,各类数据访问接口设计都已经实现,前端的页面模板、Js模板也已就绪,剩下最后的Html设计及Js编写工作,这部分没有太多的新鲜技术,而且我个人对前端技术不是很熟练,所以剩下部分我仅针对部分Bootstrap和服务端接口设计进行介绍。...

2019-01-07 22:42:48 239

原创 Java虚拟机内存结构介绍

文章目录一 前言二 JVM内存结构三 程序计数器四 虚拟机栈五 本地方法栈六 GC堆七 方法区八 运行时常量池九 直接内存十 总结一 前言  最近项目开始了各种频繁的测试,各组工作也日渐紧张,联机交易及日终批量在高压力测试下,出现了越来越多的内存溢出问题。  其实这里说内存溢出并不严谨,因为我们没有办法很直观的判断出究竟是溢出还是泄漏。今天又有同事问我:为什么会出现OOM?这个问题说起来简单...

2019-01-05 14:09:03 479

原创 完整JavaWeb项目笔记 第十部分-Javascript的MVC设计模式

文章目录一 MVC是一种设计思想二 面向对象的设计三 简单的拆解及拼装一 MVC是一种设计思想  老生常谈的一个词儿“MVC”,各种框架都会说自己是MVC、MVVC或者其他的云云,那么MVC到底是什么?我个人倾向于这是一种设计思想。将业务设计、数据访问以及请求处理或视图绘制等功能实现分离,各自进行调整时而不会产生严重的耦合问题。这是对代码可维护性、健壮性的一种保障。  在进行服务端设计的时候...

2019-01-05 11:05:15 99

原创 完整JavaWeb项目笔记 第九部分-Bootstrap模板设计

文章目录一 为何使用Bootstrap二 需求三 设计模式化四 较为标准的Bootstrap模板一 为何使用Bootstrap  Bootstrap确实很优秀,但这里我并不想多介绍它,有关它的信息大家可网上自行搜索。  毕竟自己还是做Java的,前端部分虽然了解一些,但绝谈不上精通。选择Bootstrap很大程度上还是它的一些特性很吸引我,容易上手,移动设备优先,并且提供了很多优秀的组件设计...

2019-01-04 19:51:00 529

原创 完整JavaWeb项目笔记 第八部分-后端开发部分总结

文章目录一 具体Servlet实现二 测试一下三 服务端开发总结一 具体Servlet实现  到第七部分为止,整个服务端的设计基本上就结束了,还剩下具体的和业务相关的Servlet编写,涉及数据库访问层的设计请参考第二部分,这里对Module模块再简单介绍下。  因为所有的基础设施已经准备完毕,剩余的开发就变得异常的简单,按之前的约定(约定大于配置,这是很重要、很实用的开发经验)我们编写一个...

2018-12-30 15:05:00 232

原创 完整JavaWeb项目笔记 第七部分-JNDI数据源配置及DBUtil封装

文章目录一 何为JNDI二 为单独的项目JNDI配置三 DBUtil封装四 DBUtil缺陷一 何为JNDI  按百度百科的说法,是SUN公司提供的一种标准的Java命名系统接口。呃……再细点说我也不知道该说点啥了。因为我也只是在配置数据源的时候才会用上,或许都不一定会用上。  那说说为什么会用到JNDI来配置数据源,如果不用JNDI我们在做Java开发的时候,自然而然的会选择JDBC,然而...

2018-12-30 13:55:21 123

原创 完整JavaWeb项目笔记 第六部分-核心Servlet主处理实现

文章目录一 主处理逻辑做什么二 补充处理耗时三 拼装IResponse并响应氢气四 解决跨域问题一 主处理逻辑做什么  其实在第五部分已经把IServlet的整体设计做的差不多了,但是process()并没有实现,process()就是我所谓的主处理方法。  这个方法要做几件事情:请求处理耗时统计分发请求到具体处理方法拼装IResponse应答结构解决跨域处理  所以先定义方法...

2018-12-29 16:44:34 92

原创 完整JavaWeb项目笔记 第五部分-通过方法句柄实现动态方法调用

文章目录一 方法句柄二 如何使用方法句柄三 核心Servlet的大致框架构建一 方法句柄  方法句柄是Java7的JSR 292版本中新增的功能,我简单介绍下。方法句柄和反射是较为类似的,但是两者的使用场景有所却别,相对而言反射速度慢,安全性差,但是使用更简单,而方法句柄执行速度快,但使用上也较为麻烦。  当我设想通过的一个通用的Servlet来将所有请求进行分发的时候,我首先想到了这个机制...

2018-12-29 16:09:16 136

原创 完整JavaWeb项目笔记 第四部分-Gson再封装

文章目录一 Gson工具设计的必要性二 Gson序列化及反序列化时指定样式三 封装GsonUtil类一 Gson工具设计的必要性  Gson是什么,做什么用的这里不多赘述,但凡做过Java的朋友都不陌生,如果你真的没用过,请网络搜索下。  这里要说明的是一些略微复杂的用法,我们决定统一应答为JSON格式,那么就需要对IResponse对象进行JSON序列化,因为IResponse对象内部有一...

2018-12-26 14:24:39 182

原创 完整JavaWeb项目笔记 第三部分-核心Servlet公用部分设计

文章目录一 核心Servlet设计思路二 设计公用应答模型三 设计公用服务异常一 核心Servlet设计思路  前面很简略的设计了数据表和Bean结构,以及Dao层的数据访问,没有设计任何复杂设计,这部分开始,逐步向核心的服务端设计延展。  传统的JavaWeb项目中,每一个Servlet都被作为请求的处理程序,这里我对请求处理的公共部分抽离出来,单独封装在一个核心Servlet中,所有的请...

2018-12-24 21:12:41 116

原创 完整JavaWeb项目笔记 第二部分-项目结构及Bean和Dao设计

文章目录一 服务端项目结构二 表结构设计三 bean设计三 Dao设计一 服务端项目结构  Java开发工具我用的是Eclipse,配置完Maven后,创建的war工程,接下来就是项目目录结构的划分,这一点的重要性说来可大可小,结构清晰,则开发更加顺利,结构不合理则变动会比较频繁,对于体量较小的项目而言虽然影响不大,但是出于习惯的考虑,还是对结构进行下划分:bean包中为数据表对应的Ja...

2018-12-23 15:58:14 797

原创 完整JavaWeb项目笔记 第一部分-总体介绍

文章目录一 设计初衷二 项目总体介绍三 重点内容四 设计步骤一 设计初衷  不知不觉已经毕业了快五个年头,五年时光,五年蹉跎。有同学朋友在职场上一路狂飙,也有人黯然神伤夜半落泪。我则不痛不痒,进退无门。这倒是有点印证了当初在签名里留下的话——没有患得患失的诚惶诚恐,而是随遇而安的处之泰然。  虽然自己不是技术狂人,也没有八面玲珑的本事,但我依然相信付出会有回报,我从不寄希望于运气,所以我自己...

2018-12-23 15:45:47 515

原创 代码方式配置Log4j并实现线程级日志管理 第五部分

文章目录一 第三方程序不应仅限于会用二 同时按日期和文件大小备份三 调整ThreadLogger使用复写的Appender四 简单测试下五 结语一 第三方程序不应仅限于会用  关于日志文件备份的问题,我跟很多人都沟通过,但是结果很遗憾,绝大部分人对于Log4j的理解仅限于常规的使用,网路上能搜索到的资源绝大部分也只是关于配置的介绍。  其实这样的现象并不少见,略微延展起来就变成了老生常谈的一...

2018-12-22 12:55:29 101

原创 代码方式配置Log4j并实现线程级日志管理 第四部分

文章目录一 异步输出模式二 增加异步输出模式开关三 重构日志输出接口四 异步处理线程五 总结及一些其他的建议一 异步输出模式  目前尚剩余两个需求,一个是实现日志的异步输出模式,一个是实现日志同时按日期和文件大小进行备份。  异步输出模式在第三部分说过了,在这部分单独讲,日志的备份则放在第五部分结束。  这部分我只提供一个设计思路,重心还是放在代码执行性能上,总体的思路为:维护一个日志...

2018-12-17 21:35:56 140

原创 代码方式配置Log4j并实现线程级日志管理 第三部分

文章目录一 对第二部分的一些补充二 如何实现线程级日志对象管理三 实现ThreadLogger四 重构LogUtil一 对第二部分的一些补充  第二部分用很简单的样例来描述了Logger对象的初始化,其实逻辑是不严谨的,而且运行时会有一些异常,这里我简单修正下,还是以RollingFileAppender为例,能够让其进行日志输出,如果有更加丰富的需求,那么请参考官方文档,或者自行百度下,我的...

2018-12-15 13:32:57 1487

原创 代码方式配置Log4j并实现线程级日志管理 第二部分

文章目录一 设计类结构二 成员设计三 方法设计四 实现Logger对象实例化方法一 设计类结构  第一部分说了两件事儿:如何根据配置文件分析有用的信息以便对底层结构进行挖掘如何查看源码的类结构以便调研需求完成后续开发设计  在了解我们的终极目标之后,不忙写代码,之前的工作仅仅是调研,为的是确认需求能否实现,以及实现过程中可能触及的技术风险。接下来我们需要根据需求及之前所做的调研,对我...

2018-12-05 22:51:19 106

原创 代码方式配置Log4j并实现线程级日志管理 第一部分

文章目录一 为什么写略显过时的东西二 需求三 面对复杂需求如何进行设计四 我是如何分析Log4j的一 为什么写略显过时的东西  讲道理,现在还说Log4j有点过时了,因为自从Log4j2问世,全世界都在谈Log4j2的配置,所以今天要说的核心并不在如何配置Log4j,不论是配置文件方式,还是代码方式。  我要说的重点,首先是通过以代码的方式来配置Log4j,为后面同样以代码方式配置Log4j...

2018-12-03 19:51:07 435

原创 我是如何走上Java开发这条路的

文章目录一 写在前头二 什么是Java三 什么是面向对象四 什么是抽象五 什么是封装六 什么是继承七 什么是多态七 Java能做什么八 Java延申的方向九 Java学习路线十 附一张Java技能扩展图一 写在前头  越来越多的人问我:Java该怎么学?过来人回过头来自然有很多话说,这里先说说我自己。  2014年毕业,目前就职北京领驭框架软件,做过业务设计,做过混合开发,做过WEB开发,也...

2018-12-02 23:01:29 596

设计模式工厂和抽象工厂

是设计模式课程中很简单的两个模式的例子,一个是工厂模式,一个是抽象工厂模式,初学者可以看看主要函数是什么,为什么这样做代码是稳定的,希望对初学者有所帮助。

2013-06-26

空空如也

空空如也

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

TA关注的人 TA的粉丝

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