自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 格物致知2

作者在阐述自己的观点,但他没有给出与这个观点相异的其他观点,此时如果读者没有其他相异观点的知识储备,也没有主动去思考其他相异观点,那读者就会有一种将所见之观点当做常识的倾向,此时读者对这个观点其实是没有辨识能力的,因为他的大脑只认识与这个观点正相关的特征,而这些正相关的特征并不能回答否定命题。比如一个小孩如果只见过猫,那么他在看到猫的时候能确定那是猫,但在看到狗的时候,他却不能确定那不是猫。要想正确认识一个观点或者结论,我们需要寻找与其有差异甚至是对立的观点或结论,否则我们就只是把自己泡在知识里,却

2020-09-13 23:07:57 108

原创 理解解耦的一种思路

大家肯定听说过程序要具有金字塔结构,也听说过IOC。问问大家,“解耦”这个词,更能让你联想到IOC,还是程序的金字塔。我觉得大多数人的答案应该是IOC,为什么IOC这个词和解耦的相关性更高呢?我猜测是大家在阅读文章的时候,特别是讲语言,讲编程思想的文章时,你大概率都会听到多态,面向接口编程,设计模式这些概念,以及它们在解耦方面的建树,而IOC使用到了开发语言的多态特性,也是面向接口编程的绝好案例。但是,大家思考过“为什么IOC能解耦”这个问题吗?在思考这个问题前,要先思考“什么是耦合”。耦合原本是机械和电学

2020-07-07 19:05:23 326 2

原创 由AnnotatedElementUtils延伸的一些所思所想

这篇博客的两个主题:spring的AnnotatedElementUtils个人源码阅读方法论分享为什么要分享AnnotatedElementUtils这个类呢,这个类看起来就是一个工具类,听起来很像apache的StringUtils,CollectionUtils。原因是,它包含着spring对java注解的另类理解,和运用。java的是怎样支撑注解的?Class<Tes...

2019-12-02 22:44:55 1736

原创 格物致知1

有一个问题经常会浮现在我脑中——为什么有的产品能给人这种感觉:它很美,它和谐一致,它不浮夸也不浪费;而有的产品却会给人这种感觉:它不靠谱,它没人爱,它的设计复杂又隐晦。苹果公司的产品就能给人前一种体验,而华为公司的产品我却隐约有后一种感觉。我很不喜欢消费的时候将钱花在某件我往后有可能不喜欢或者有可能弃用的对象上,所以我给自己列了一个简短的清单,当我想要购买某件东西的时候,我会拿出这个单子核对一...

2019-11-09 13:10:42 196

原创 Java以反码存储数字

以前只知道计算机使用反码来进行计算,但是没有想到,也没有想过计算机存储数字的时候是用什么格式存储的,当然它是二进制的,我的意思是它是原码,反码,补码中的哪一种。今天因为学习ServerSocketChannel,涉及到了这个问题,才把这个知识点摸透,是以反码形式存储的。认识到这一点有什么作用呢,且听我说。用byte数组表示IP地址编写服务器程序的时候,需要启动server socket监听某个...

2019-07-30 18:43:32 364

原创 耦合的形式(对以往思路的纠正)

耦合的形式不透明耦合(或者叫浑浊耦合)部件A直接驱动部件C,C对A不透明透明耦合部件A驱动代理B,代理B驱动部件C,C对A透明纠正曾经我将耦合的形式区分为:不透明耦合,单边透明耦合,双边透明耦合。其中双边透明耦合的定义是,驱动方对被驱动方透明,被驱动方也对驱动方透明。这个定义存在瑕疵,被驱动方对驱动方透明这一点是合理的,但驱动方对被驱动方透明则存在逻辑缺陷。被驱动方是被使用...

2019-07-23 15:21:26 140

原创 如果DAO,Service,Controller返回的数据实体结构一致,我们该怎么办?

如果DAO返回的实体结构,刚好也符合Service想要返回的实体结构,刚好也符合Controller想要返回的实体结构。我们该怎么办?按照较为规范的开发流程,我们会通过需求分析出Controller返回实体的结构,根据“下层为上层服务,以目标为导向”的原则,设计出Service层返回的实体结构,同理设计出DAO层返回的实体结构。三个实体结构一致,说明我们只是简单的返回数据库数据。DAO层和Se...

2019-07-02 14:00:33 439

原创 如何判断你该不该抛出异常,以及抛出什么异常?

前情最近在完成公司的一个上报征信数据的项目,项目不大,所以开发人员就我一个人,但是工期挺紧,所以每天都写代码写到起飞。项目到尾期后,有一些闲暇可以 review 一下代码。结果发现,我所有的参数校验都是在 controller 层完成的,service 层没有校验。思索了一下,发现一个有趣的之前我没有主要到的事情。问题所在controller 层校验后,可以通过返回字符串的形式,提示前端异常...

2019-06-28 12:38:04 2402

原创 代码是如何生长的

2014年,我还是一名大学生,在兴趣的驱使下走上了编程的道路。后在各种洪荒之力的推动下于2016年7月开始耗费半年多时间编写了一个叫做miniqueue的网站,项目虽然是失败的,不过经验是宝贵的。完成这个网站后,我写下了下面这些文字,它本已被我遗忘在脑海,今天整理电脑才又发现了它,读之,感觉颇有受益,在此分享,给学习编程的新手们,或是如我一般在个中摸爬滚打过的猿们。代码是如何生长的这是一篇对m...

2019-06-18 14:15:37 209

原创 小谈 FastConverter

前情几个月前我为公司写一个用于实现RESTful API的项目基础框架,它是一个位于spring cloud项目中的open service内的基础框架,用来统一处理请求和返回。其中,为了实现数据的转换,我开发了一个小工具,叫做“FastConverter”。最初它被用来将数据实体转换为json string,在转换的过程中,使用注解的方式来定义数据转换逻辑。后来在完成其他一些公司任务的过程中...

2019-06-18 14:11:34 306

原创 读书replay《博弈与社会》.2.20190527

前情《美丽心灵》,一部讲数学家约翰·福布斯·纳什的电影,我第一次听到博弈理论就是在这部电影里。看过电影之后就一直想知道,博弈论究竟讲了什么。很久之后,20190417这天,我刷JD的购物车凑单,看到了由张维迎老师著的《博弈与社会》一书,百度一番发现是本好书,择书不如撞书,就它了。这本书用了大量的例子来阐述博弈论对人类社会的理解。用张维迎老师的话说就是:“……我将使用博弈论(game theor...

2019-06-18 14:11:02 395

原创 读书replay《maven实战》.2.20190613

前情提要maven这个工具用了好久了,但是一直都用的迷迷糊糊的,没有对它进行过系统性的学习,只是知道一些常用的功能怎么实现,所以20190516这一天我从JD购买了徐晓斌老师所著的《maven实战》一书,准备系统性的学习一下maven。pom结构我工作的主力语言是java,spring框架这个体系,所以pom文件天天见。该文件下,有用来声明当前项目坐标的,,,这几个字段。还有用来声明依赖的...

2019-06-18 14:10:37 88

原创 读书replay计划

突然脑袋一闪,我有了这样一个主意:通过写博客的方式,将我阅读的书中的内容replay出来。我一般会找着我感兴趣的书去读,一般也会读书中我感兴趣的章节,或者当下对我有用的章节,所以这个replay,不会是对某本书的一个完整复盘,它更像是我自己的一个读书笔记。所有读书的replay博客,我会以:读书replay《xxx》.number.date 这样的形式命名。“读书replay”是固定的,后面跟...

2019-06-18 14:10:06 100

原创 通过设置虚拟机固定IP地址学到的知识

这篇博客全文出自我个人的理解,不是严谨的理论认知,但符合我的实验过程,并有效的指导了我的预测。此前我不明白存在于windows系统中的“网络适配器”这一概念的含义,但经过一次设置虚拟机固定IP地址的实践和学习,我对它有了自己的认识。过程我就不赘述了,直接上结果。VMWare安装后,它会在你的计算机上建立3个虚拟网络(可以建立更多,默认初始3个),这时你打开“控制面板-网络和共享中心-更改适配器...

2019-06-18 14:08:52 995

原创 突然明白了如何看待细枝末节

周末看某直播平台主播玩游戏,这是一种RPG游戏,有天赋点这样的东西,为了3%的命中率他研究了很久怎么点天赋,我就想,3%的命中率会影响多少战斗力呢?它会决定一场战斗的胜负吗?我觉得答案是明显的,不会。既然不会,何必浪费这么多时间精力纠结于此呢?有了这个问题,我继续往下想。如果这一个3%不重要,那另一个3%也不重要(也不足以影响战斗的胜负),没有任何一个3%是关键先生。也就是说你永远无法找到一个带...

2019-06-14 10:29:35 271

原创 使用java Bean时,is打头的boolean属性的小坑

申明属性,然后用idea自带的Generator生成getter,setter(封装类型和基本数据类型生成的还不一样),如下:当我去构造一个PropertyDescriptor时,会报错后来跟代码,发现,报错原因是PropertyDescriptor的构造函数去找一个叫setIsSuccess的写值函数时,发现找不到,于是报错了。从上图可以看到,实际在构造PropertyDescr...

2019-06-14 10:28:52 5071 4

原创 对《关于Dao层职责的思考》一文的修正

以前写过一篇关于DAO职责的文章,近来发现不对,我错了,在反复阅读了《阿里巴巴java开发手册》后,我重构了自己对这部分知识的认知。内容如下:关于返回值从dao返回的数据,要么是基本数据类型,要么是DO实体。从service返回的数据,要么是基本数据类型,要么是DTO实体。DAO如何工作每个DAO应该有一个主表,围绕这个主表产生DO,同时尽量避免联表。《高性能Mysql》中...

2019-06-14 10:27:54 145

原创 并行执行器

工作中出现某些代码需要并行执行以提高程序运算速度的情况,所以写了一个小工具。public class Main { public static void main(String[] args) { // 你可以通过注释下面的部分代码来探索它的功能, // 一些重要的说明请到代码中寻找,注释写的很清楚 new ParallelInvoker().call(invoker -> ...

2019-06-14 10:26:46 156

原创 记一个小小的转换工具的开发:FastConverter

背景介绍一个新写的小东西,叫FastConverter,叫这个名字是因为,它最初是被设计用来将服务器返回给前端的数据实体转换为json字符串的。需求背景是:服务器经过一系列计算后,最终数据被存放在一个数据实体中,经过toJSON化,输出到前端。但输出时我们对数据有一些格式化,或自定制化的需求,比如,数据实体中的Date,最终输出可能是时间戳,也可能是“yyyy-MM-dd”;数据实体中的用以表...

2019-06-14 10:24:42 334

原创 Java泛型的擦除特性小记

ArrayList<A> arrayList = new ArrayList<>();arrayList.add(new A());ArrayList arrayList2 = arrayList;ArrayList<B> arrayList3 = arrayList2;arrayList3.add(new B());上面这段代码会向同一个Arr...

2019-06-14 10:23:41 237

原创 记一次Controller改造,及SpringMVC处理流程

概述由于工作需要,需实现这样一个功能的controller框架:1,Restful API2,请求参数校验(请求中需要携带指定的参数,才能进入控制器方法。一次请求会携带一些基本信息,以及请求数据,此处校验的是请求数据的携带情况)3,请求格式校验(请求格式需要符合规定,才能进入控制器方法。此处校验的是基本信息的携带情况)4,数据绑定(通过@RequestBody注解能直接绑定请求数据到PO...

2019-06-14 10:22:12 140

原创 耦合的三种形式

耦合的三种形式不透明耦合,部件A直接或通过代理B驱动部件C,部件A知道部件C的存在单边透明耦合,部件A驱动代理B,代理B驱动部件C,部件A不知道部件C的存在,部件C知道部件A的存在双边透明耦合。部件A驱动代理B,代理B驱动部件C,部件A、C相互不知道对方的存在此处解释一下“驱动”这个词。系统运作一定是有一个动力源的,同一时刻A,C两个部件协作,其中一方一定是驱动方...

2019-06-14 10:20:50 5236

原创 关于解耦方式的思考

解耦都是需要代理的。本质上并不存在没有代理就发生两个部件之间解耦的情况。耦合,指的是两个协作的部件的关系。A和B发生了协作,则A和B的关系是耦合。如果A和O,P,Q,S…(简称集合F)协作,则A就和集合F发生了耦合,如果A发生了变化,想要维持系统正常,那么集合F就需要顺应A的变化而变化,以保持协作有效。同样的,集合F中的任何一个发生了变化,A也需要发生变化(至少是局部的变化),以保持协作有效...

2019-06-14 10:19:11 230

原创 关于耦合

耦合,是程序员面对的最主要的编程问题之一。无数编程技术的诞生其目的就在于为程序解耦。比如面相对象中的多态,解决了对功能的需求与特定实现紧耦合的问题。MVC的框架模式解决了数据与视图紧耦合的问题。工厂设计模式解决了功能使用者与功能提供者紧耦合的问题。MQ解决了请求与答复紧耦合的问题。耦合原本是机械和电学领域的概念,用以形容多个组件或元件相互影响,相互配合,相互制约。比如传动轴与齿轮的耦合,放大电路...

2019-06-14 10:16:36 285

原创 记一次Controller改造,及SpringMVC处理流程

概述由于工作需要,需实现这样一个功能的controller框架:1,Restful API2,请求参数校验(请求中需要携带指定的参数,才能进入控制器方法。一次请求会携带一些基本信息,以及请求数据,此处校验的是请求数据的携带情况)3,请求格式校验(请求格式需要符合规定,才能进入控制器方法。此处校验的是基本信息的携带情况)4,数据绑定(通过@RequestBody注解能直接绑定请求数据到PO...

2019-05-31 17:44:49 170

原创 编程之道.2.20190706

前言这是我个人总结的一些编程思想,从2014年我接触人生第一门编程语言(C)开始,它一直指引着我,我也不断的完善它。其中有些是我自己在实践中得出的结论,有些是书里学到的知识。在此分享。今后我也会一直完善它,所以你们能看到,博客标题带有编号,往后的新内容,我会直接追加在这篇博客里,并更新博客标题。对仗词add/remove increment/decrement open/clo...

2019-05-31 17:42:13 102

原创 为什么练习很重要?

    当你认识到1+1=2时,你需要去练习它吗?它是一个元知识,是固定的,原则性的。你对它的整个学习过程,到意识到它的层面,就足够了。    如若是由此发展出来的加法运算呢?它是一种方法,一种推理过程,它有两个可变的参数。你需要练习,以使你的大脑遇见这两个可变参数中的某些组合形式,以此总结某些规律,并运用规律来提高运算效率。这时你发现,练习有其存在的独特必要性。那么是什么带来了练习的必要性?要回...

2018-04-17 18:46:06 686

原创 web列表容器1.0 (可以为所欲为固定列表顶部的工具类)

可以固定头部和脚部的web列表容器。可以让你轻松管理web列表的可嵌套列表容器。万物归一,所有列表一类搞定。

2017-12-10 14:41:18 337

原创 基于jquery的web组件实现方式

//CB=ComponentBasevar CB={ createNew:function(cb){ var CB=$(cb); var refList={}; //为了解决元素嵌套时,ref不能正确取得元素的问题, //此处在加载元素时先提取出元素捕获为本地副本。 $.each(CB.find("[ref]"),

2017-11-25 22:50:09 282

空空如也

空空如也

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

TA关注的人

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