自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 瞧瞧,这就是JDK序列化

今天来聊聊JDK自带的序列化,企业级软件开发过程中一定会涉及到数据落盘或者网络传输数据,由于Linux操作系统要数据落盘或者传输数据前需要将数据转为二进制数据流,因此我们需要一套规则来将Java世界中的对象(数据)转化为二进制数据流,而JDK提供的序列化就是这套转换规则。以上就是使用JDK序列化/反序列化的流程,可能工作中我们不会频繁的写序列化代码,但是通信/存储相关的组件里一般都会高频的进行序列化/反序列化操作,因此如果之后我们要自己设计通信/存储的话,掌握序列化是非常有必要的。

2024-01-21 15:44:40 1135

原创 仰望星空,也要鲜花与掌声

因此再来看第二种方式,在有目标之后的第一件事是先将其拆分为独立的一个个小任务,每攻克一个小点时,我们都可以适当做下输出,无论是输出技术博客、还是技术分享或者是其他方式,在接受到“鲜花与掌声”后我们会拥有更多的动力对下一个“堡垒”发起进攻,在接受“鲜花与掌声”的同时,我们也能听到更多的反馈,例如可能会评论说你对IOC的某个理解是错误的、领导觉得你的这个方案一可能存在某个缺陷等等,那么在这个基础下,你在开启下一个环是有个更多的“注意事项”,这能让你更有条不紊的朝着最终目标前行。

2024-01-10 10:51:19 415 1

原创 漫画演绎策略设计模式

通过抽象出一层策略层来解耦“妈妈”和教育方式,“妈妈”和教育方式的细节都依赖于策略层,“妈妈“只需要告诉策略层自己要选择哪一种教育方式即可,具体内部复杂的逻辑不需要”妈妈关心“,从而达到了”职责分离“的效果,很好的解决了上面描述的两个问题,具体实现如下。从前有一个妈妈,她有一个叛逆的儿子,妈妈每天除了上下班就是要教育儿子,上下班的内容是固定的,现在每天唯一负责并且可能会变的就是教育儿子的方式,那么我们应该如何设计呢。可以看到改动很小,即便后续有新的教育方式,只需增加新的策略类并改动这一行代码即可。

2024-01-10 10:48:29 715

原创 AQS原来是这么设计的,泰裤辣!

在AQS中可以看到不少优秀的设计,这都要归功于Doug Lea老爷子;除了AQS,在juc里还有很多优秀的设计,如并发性能最好的字典ConcurrentHashMap、无锁高性能队列ConcurrentLinkedQueue等等在品完源码后,你会发现其设计思想丝毫不逊色于各个大数据组件“曾经想征服全世界,到最后回头才发现,这世界点点滴滴全部都是你” ——致JDK。

2024-01-05 10:08:21 1055 1

原创 pulsar原来是这样操作topic的

本篇主要讲述pulsar topic部分,主要从设计以及源码的视角进行讲述。在pulsar中,一个Topic的新建、扩容以及删除操作都是由Broker来处理的,而Topic相关的数据是存储在zookeeper上的。本篇文章模拟一个高效的学习流程进行展开在日常对pulsar Topic操作时,咱们常常会用到以下指令更多的操作可以参考 https://pulsar.apache.org/docs/3.0.x/admin-api-topics/在这里列举了针对分区并存储Topic的四个操作指令以上就是使用方式,

2024-01-05 09:58:32 1546

原创 学习录

这几年在迷茫中看了不少资料,有觉得写得很棒的,也有写的很糟糕的。所以一直想写这块的总结来进行归纳,同时也希望能给其他处于迷茫中的朋友提供一份高质量的资料列表(也许一个读者也没有),以下清单个人觉得值得反复看以及思考看完的读者会发现,博主通篇没有给任何东西定义对错。应试教育、功利心强、毕业了赚到钱不学习、投机取巧走捷径、只读书不转化为技能、不看完这篇博客或者否定这篇博客中所有的观点,可能都是“对”的。但所谓的对错真的重要吗?

2024-01-05 09:51:11 1225

原创 上帝视角俯视工厂设计模式

是不是回过神来好奇为啥原先的new方式变成了这么复杂的方式,让咱们捋一捋,首先咱们内心要切记一件事,就是每一个设计都是为了解决一个问题,把问题捋清楚了就不怕了。大致的梳理如下大致的演变方式如上图,无需死记硬背,理解就好相同点。

2024-01-04 15:33:22 1065 3

原创 详解bookkeeper AutoRecovery机制

在这里解答下引言小故事张三是通过什么规则被选成“监督者”的?张三是通过zookeeper的Paxos算法选举产生的如果张三也不辞而别呢?大狗和二狗也会通过zookeeper监听张三的状态,如果张三不辞而别的话,大狗二狗会通过zookeeper选举成为新的“监督者”为啥要通过签到本的方式,而不是张三直接去挨个挨个看?通过签到本的方式比较节约张三的时间,否则当员工比较多的时候并且对感知时间比较快的时候,张三就要每隔几分钟就要跑去挨个挨个看,这样没多久张三也要“不辞而别”了。

2024-01-04 15:25:46 1630 1

原创 LeetCode——2——两数相加

原题地址: https://leetcode-cn.com/problems/add-two-numbers/description/题目:给定两个非空链表来表示两个非负整数。位数按照逆序方式存储,它们的每个节点只存储单个数字。将两数相加返回一个新的链表。你可以假设除了数字 0 之外,这两个数字都不会以零开头。示例:输入:(2 -> 4 -> 3) + (5 ->...

2018-04-20 21:36:06 254

原创 寻找链表环的问题

寻找链表环的问题一、简介这篇博客主要介绍判断链表是否存在环、寻找环的入口点和计算链表的长度的解决方案,主要是介绍思想,不涉及代码。(因为本萌新的师傅一直教育思想的重要性)这里主要介绍三种解决方案: ① hash存储 ② 反转指针 ③ 快慢指针二、hash存储1、核心思想只要将遍历过的节点都存储下来,然后在遍历下一个节点的时候,使用下一个节点来和所存储的节点进行比较...

2018-04-12 19:20:07 1303 4

原创 两链表相交问题

两单向链表相交问题一、问题分析(1)两个链表相交,那么两个链表中的节点一定有相同地址。(2)两个链表相交,那么两个链表从相交节点开始到尾节点一定都是相同的节点。 (问:为什么? 答:因为每一个节点最多只能有一个下一节点,因此在相交节点之后,链表不可能再分为两个链表)二、问题解法根据两个链表是否存在环来分类讨论1、无环无环的情况有两种比较快速的解决方式,这两种方...

2018-04-11 15:14:01 2029 4

原创 线程池原理

一、线程池优点① 重用线程,提高性能(减少时间/空间开销) ② 控制最大并发数(提高资源利用率、避免过多的资源竞争) ③ 管理线程(使线程的使用简单、高效)二、线程池的框架Executorjava中的线程池是通过Executor框架实现的,Executor 框架包括 线程池接口:Executor和ExecutorService 线程池类:ThreadPoolExecuto...

2018-04-10 17:20:36 301

原创 责任链模式

一、概念 (行为派设计模式) 将能够处理同一类请求的对象连成一条链,使这些对象都有机会处理请求,所提交的请求沿着链传递。从而避免请求的发送者和接受者之间的耦合关系。链上的对象逐个判断是否有能力处理该请求,如果能则就处理,如果不能,则传给链上的下一个对象。直到有一个对象处理它为止。 学过C语言的朋友可以把这个理解为链表,每一个单元都是独立的个体,若是能处理请求就处理,不能请求就将请求发给下一个单

2017-06-02 15:20:04 316

原创 工厂方法模式

一、概念 定义一个创建产品对象的工厂接口,让子类决定实例化哪一个类,将实际创建工作推迟到子类当中。(和简单工厂不同,工厂方法不直接创建对象,而是在它的下面部门也就是子类来创建)二、应用场景 不管是简单工厂模式,工厂方法模式还是抽象工厂模式,他们具有类似的特性,所以他们的适用场景也是类似的。 1、作为一种创建类模式,在任何需要生成复杂对象的地方,都可以使用工厂方法模式。有一点需要注意的地方就是

2017-05-29 19:13:52 420

原创 简单工厂模式

一、概念 简单工厂模式是创建型设计模式,它根据你传入工厂的参数来确定具体实现哪个对象(比如在工厂里面要做一件事,你将一台机器的名字传进来,工厂就能根据这个参数来找到对应的机器来处理要做的事情)二、目的 帮我们把对象实例化的部分提取出来,进而优化系统架构,更好的体现开闭原则(可以帮我们忽略实例化的过程)三、使用场景 在不确定会有多少个处理操作时应该考虑使用简单工厂模式,如针对同样的接收到的数据,

2017-05-29 16:22:50 421

原创 设计模式原则

一、开闭原则 概念:软件实体对拓展开放,对修改关闭(在不修改原有代码上添加新的功能)例子:比如说一个拥有一个‘增’‘删’‘改’的功能模块,现在要增加‘查’的功能,此时只需要去开发一个接口增加该功能即可,不需要改变原有模块的内容(可扩展程度高,可维护性强,使变化的系统有一定的稳定性和延续性)如何实现该原则:区别哪些是变化的部分,哪些是不变化的部分。对于不变的部分,可以将其加以抽象成不变的接

2017-05-28 19:21:19 406

原创 插入排序

输入:n个数的一个序列 输出:输出序列的一个排序插入排序对于少量元素的排列是一个有效的算法思想:插入排序就像是有些人排序手中的扑克牌一样。 首先拿起牌堆的第一张牌放在左手,然后再拿起第二张牌来和左手的牌做比较,若是比左手的牌小就放在其左边,反之亦然。 在左手中有两张牌后,再拿起桌上的第三张牌,从右往左做对比,若是比最右的牌大,则放在其右边;若是比最右的的牌小,则和其左边的牌作比较: 1、左边的

2017-04-26 15:43:29 275

原创 当Myelipse遇上Git(旺旺篇)

让Myelipse姐姐帮忙开发是一件很愉悦的事情。但旺旺最近遇到了一件很苦恼的事情,每次项目做到一定的阶段时,为了防止修改出错,它都要手动的去myeclipse->workplace目录下把项目copy一份出来放在备份文件里面,一开始还没觉得什么,可是越到后面旺旺就开始想觉得累了。一方面不知道修改了哪些地方,一方面效率确实不行。那么有什么好的解决方法呢? 旺旺找上了村里最有智慧的猿猿,猿猿说:你这

2017-04-11 23:52:41 310

原创 SpringMVC_开天辟地

SpringMVC的优点太多,这里暂且不详细说明,就给大家分享一下如何搭建我们的第一个SpringMVC一、新建我们的项目在myelipse下新建Web Project创建我们的项目,然后在src里面分别创建四个包,分别是dao、domain、service、web(具体名字可以自己起)和一个beans.xml文件,这是spring最关键的一个文件,里面将来是要管理几乎项目里所有的

2017-04-06 08:52:21 448

原创 Linux基础

Linux查看所有用户在终端里.查看 /etc/passwd文件groupdel  用户组名       的格式来移除用户组dirname  Linux下获得目录路径比较常用的是pwd命令和getcwd()函数了,但是有时候并不能很容易的match一些比较常用的需求。问题来自闪电的一个问题,他写了一个程序放在一个文件夹里面交给客户,这个文件夹里面有若干应用程序和

2017-04-04 15:09:20 335

原创 数据库基础知识

几种数据库连接方式优缺点比较     能成功连接mysql的jdbc:  Class.forName("com.mysql.jdbc.Driver");  Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test","

2017-04-04 15:08:12 337

原创 JavaWeb开发实战经典笔记

JSP基础语法JSP注释隐式注释:          //注释,单行注释                         /*注释*/,多行注释                            JSP注释显式注释:        客户端看得见Scriptlet     JSP中三种Scriptlet代码:               

2017-04-04 15:07:12 1806

原创 html5

HTML5新增元素和废除元素取代的:          取代HTML4的div的有:                         表示页面中一个内容模块:section                         表示页面中的一块与上下文不相关的块,例如博客中的一篇文章:article                         表示

2017-04-04 15:06:04 927

原创 html基础知识2

HTML 布局网页布局对改善网站的外观非常重要使用 元素的网页布局div#container{width:500px}div#header {background-color:#99bbbb;}div#menu {background-color:#ffff99;height:200px;width:150px;float:left;}

2017-04-04 15:05:30 245

原创 html基础知识

HTML 是用来描述网页的一种语言。HTML 指的是超文本标记语言 (Hyper Text Markup Language)HTML 不是一种编程语言,而是一种标记语言 (markup language)标记语言是一套标记标签 (markup tag)HTML 使用标记标签来描述网页HTML 标签HTML 标记标签通常被称为 HTML 标签 (HTML tag)。

2017-04-04 15:05:07 316

原创 ng

ng是比较新的技术,版本1.0是在2012年发布的。是JS的框架,可通过标签添加到HTML页面ng通过指令扩展了HTML,通过表达式绑定数据到HTMLng通过ng-directives扩展HTML网页加载完毕时,ng自动开启ng-app 指令告诉ng,元素是ng应用程序的“所有者”ng-model指令把输入域的值绑定到应用程序变量nameng-bind指令把应用程序

2017-04-04 15:04:30 393

原创 Bootstrap

学习网址:http://www.runoob.com/bootstrap/bootstrap-tutorial.htmlBootstrap是 Twitter写的,是目前最流行的前端框架Bootstrap一般使用Html5文档类型 即:     如果在 Bootstrap 创建的网页开头不使用 HTML5 的文档类型,您可能会面临一些浏览器显示不一致的问题,甚至可能面临一

2017-04-04 15:03:59 1634

原创 CSS基础

CSS 简介CSS 指层叠样式表 (Cascading Style Sheets)样式定义如何显示 HTML 元素样式通常存储在样式表中把样式添加到 HTML 4.0 中,是为了解决内容与表现分离的问题外部样式表可以极大提高工作效率外部样式表通常存储在 CSS 文件中多个样式定义可层叠为一animate.css:http://www.dowebok.com/de

2017-04-04 15:03:13 842

原创 CSS3之路

http://www.dowebok.com/demo/2014/98/  animated.css  演示网站不同浏览器有不同的前缀(较新版本的浏览器不需要前缀,为了向前兼容)css3简化设计过程,加快页面载入速度css3强大的功能:                         选择器                    圆角效果

2017-04-04 14:59:19 444

原创 Servlet之路

IDE(eclipse[ java se] +myeclipse [ 插件  可以支持jsp/servlet/struct/spring/hibernate....]) response.setCharacterEncoding("utf-8"); 防止中文乱码response.setContentType("text/html;charset=utf-8"); //直接告诉浏览器

2017-04-04 14:58:18 360

原创 php之路

php是一种创建动态交互性站点的强有力的服务器端脚本语言php能够生成动态页面内容,创建、打开、读取、写入、删除以及关闭服务器上的文件php能够接收表单数据,发送并取回cookies;能够添加、删除、修改数据库中的数据php能限制用户访问网站中的某些页面,能够对数据进行加密php不仅能输出HTML,还能输出图像、PDF文件、甚至Flash影片。可以输出任何文本,比如XHTML和XM

2017-04-04 14:57:15 387

原创 JSP之路

使用post提交的时候参数有中文时,在接收页面接收前必须对参数进行编码request.setCharacterEncoding("UTF-8");解决获取中文乱码问题使用URLEncoder解决无法在Cookie当中保存中文字符串问题request.setCharacterEncoding("utf-8");String username = U

2017-04-04 14:55:07 645

原创 Hibernate之路

为什么学Hibernate?1、切换数据库需要重新编写sql2、使用jdbc操作数据库,sql编写比较麻烦3、程序员希望不关注数据库本身,而只关注业务本身Hibernate有三个重点:                                   1、hibernate  api                                   2、hibe

2017-04-04 14:54:12 263

原创 spring之路

spring是什么          struts2是web框架(jsp/action)(struts2充当web,接管jsp/action/表单 主要体现出mvc的数据输入、数据的处理,数据的显示分离)          hibernate是orm框架,处于持久层          spring是容器框架,用于配置bean,并维护bean之间关系的框架           

2017-04-04 14:53:10 458

原创 Struts2之路

http://commons.apache.org/struts2是一个web框架,框架提高了程序的规范的同时,也约束了程序员的自由为什么会有struts2?因为我们对mvc的理解不同,可能造成不同公司写程序的时候,规范不统一,这样不利于程序的维护和扩展/效率/可读性...所以我们有必要用一个统一的规范来开发项目->框架struts2具有以下的优点:1>

2017-04-04 14:45:15 235

es-hadoop二次开发包

es-hadoop二次开发包

2024-02-21

SpringMVC从无到有

SpringMVC框架从无到有,我已经解决了jar包冲突等问题,此资源是为了帮助更多的新人快速体验SpringMVC的快感

2017-04-06

空空如也

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

TA关注的人

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