5 wanxiangming1994

尚未进行身份认证

暂无相关简介

等级
TA的排名 23w+

格物致知1

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

2019-11-09 13:09:55

Java以反码存储数字

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

2019-07-30 18:43:32

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

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

2019-07-23 15:21:26

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

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

2019-07-02 14:00:33

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

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

2019-06-28 12:38:04

代码是如何生长的

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

2019-06-18 14:15:37

小谈 FastConverter

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

2019-06-18 14:11:34

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

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

2019-06-18 14:11:02

读书replay《maven实战》.2.20190613

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

2019-06-18 14:10:37

读书replay计划

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

2019-06-18 14:10:06

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

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

2019-06-18 14:08:52

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

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

2019-06-14 10:29:35

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

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

2019-06-14 10:28:52

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

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

2019-06-14 10:27:54

并行执行器

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

2019-06-14 10:26:46

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

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

2019-06-14 10:24:42

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

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

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

2019-06-14 10:22:12

耦合的三种形式

耦合的三种形式不透明耦合,部件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

关于解耦方式的思考

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

2019-06-14 10:19:11

查看更多

勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv2
    勤写标兵Lv2
    授予每个自然周发布4篇到6篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。