- 博客(47)
- 收藏
- 关注
原创 T31训练营 DAY14
Spring Cloud Gateway的路由配置的功能是以Spring WebFlux中的Handler Mapping为基础实现的。Spring Cloud Gateway也是由许多的路由谓词工厂组成的。当Http Request请求进行谓词匹配。匹配成功则进行下一步处理,否则谓词失败直接返回错误信息。Spring Cloud Gateway内置了一系列的路由谓词工厂,以便我们可以在开发中灵活的使用Gateway进行请求转发。路由谓词工厂的作用是:符合Predicate的条件,就使用该路由的配置
2021-11-08 12:24:27 208
原创 T31训练营 DAY13
网关提供API全托管服务,丰富的API和路由规则动态管理功能,辅助管理大规模的API,以降低管理成本和安全风险,包括路由转发、协议适配、安全认证、访问控制、熔断限流等功能。一般来说,网关对外暴露URL或者接口等路由信息。网关的核心是谓词、路由和Filter过滤器链。Spring Cloud Gateway启动时基于Netty Server监听一个指定的端口(该端口可以通过server.port属性自定义)。当客户端发送一个请求到网关时,网关会根据一系列Predicate的匹配结果来决定访问哪个Route
2021-11-08 12:11:13 648
原创 T31训练营 DAY12
Q:对于枚举类型,接口定义中使用int还是String,比如表示移动端系统类型:1.使用int,0代表Android,1代表iOS,优点是不会拼写错误,缺点是不直观2.使用String,约定使用“Android”、“iOS”,优点是直观,不容易传错,缺点是容易拼写错误、大小写不一致A:数据库存储字段类型同样有这个问题,对于比较固定、长度较短的,建议直接使用字符串。Q:服务端的字段为int类型,初始时客户端没有这个数据需要传空,下列方式哪种好:1.定义一个整型值(如-1)表示空2.传null3
2021-11-08 12:08:49 195
原创 T31训练营 DAY11
移动API网关在移动开发平台中的作用是统一接收前端HTTP请求,并按设置的策略转发给具体的后端服务进行处理。服务在网关中以API的形式对外提供服务,网关既是开放入口又是访问屏障,这样服务就被网关保护起来,对所有的调用者透明。主要包括以下功能:安全信道:进行身份鉴别、标识,保证用户数据完整性和保密性,抗抵赖和防报文重放。 访问控制:令牌和会话检查、防重复提交、防报文重放、防SQL注入和防恶意访问,能够对非法IP/UID封禁。 限流熔断:核心业务失效快速响应,避免请求堆积,非核心业务降级处理,保证核心业
2021-11-06 10:00:00 212
原创 T31训练营 DAY10
随着分布式微服务架构逐步落地,原本单一的系统拆分成众多独立的微服务,服务的粒度更加精细。当外部的请求访问微服务时,都会遇到以下问题:需要对每个请求进行鉴权校验和访问控制 如果传输协议不一致,需要转换协议 如果调用水平扩展的微服务,需要进行负载均衡 一旦请求流量超过系统承受的范围,需要进行限流 接入业务流量后,如何更合理地将流量路由到合适的服务中所以,微服务化之后系统需要统一的出入口。移动API网关作为微服务体系中的核心基础设施,是连通前后端的门户和纽带,能够很好的解决路由、协议适配及统一接
2021-11-06 01:22:54 186
原创 T31训练营 DAY9
补充几点最近学习架构图设计的心得:以沟通范围来确定作图边界架构五视图逻辑架构图:用于面向产品、运营等所有非技术人员以及管理者的沟通约定方向系:北 - 用户侧,请求进入方向,如客户端南 - 基础设施,如数据库西 - 追踪、监控东 - 外部依赖,第三方接口方向 - 层级 - 模块颜色字体线条、线框、实线、虚线、箭头指向开发架构:组件图、包图、类图运行架构:协作图(时序图、状态图、活动图),可以没有严格的作图规范,反映上下游数据和逻辑流向,关注局部而不是整体物理架构
2021-11-04 01:44:28 159
原创 T31训练营 DAY8
JDK7引入了try-with-resources的语法,可以自动关闭在try括号内打开的实现Closeable或者AutoCloseable接口的资源。其实try-with-resource机制是一种语法糖,其底层实现原理仍然是try{}catch(){}finally{}写法,最先关闭最后打开的资源,逐个资源关闭,最先打开的资源最后关闭,先关闭的资源抛出的异常,会被后关闭的资源抛出的异常抑制(Suppressed),最后只抛出最后一个异常,可以通过getSuppressed()方法获得全部关闭连接的异常
2021-11-02 09:00:00 120
原创 T31训练营 DAY7
Java开发手册(嵩山版) > 二、异常日志 > (二) 异常处理 (第30页)不足1:4. 【强制】捕获异常是为了处理它,不要捕获了却什么都不处理而抛弃之,如果不想处理它,请将该异常抛给它的调用者。最外层的业务使用者,必须处理异常,将其转化为用户可以理解的内容。本条规约表述不够清晰。什么是处理?常见的处理方式有哪些?什么是不想处理?常见的异常处理方式有:1.记录日志2.尝试恢复3.降级使用默认值4.转换成上层异常类型5.不处理、忽略6.以上几种的组合有些
2021-11-01 18:15:00 235
原创 T31训练营 DAY6
【强制】不要在 finally 块中使用 return。说明:try 块中的 return 语句执行成功后,并不马上返回,而是继续执行 finally 块中的语句,如果此处存在 return 语句,则在此直接返回,无情丢弃掉 try 块中的返回点。进一步解释:return语句会把返回值放到一个临时变量中,在finally中修改原变量的值并不能改变已经放入方法返回值中的变量值,而当在finally中使用return,将改变try中的return语句已经放入方法返回值中的变量值。catch同理。.
2021-11-01 00:42:00 87
原创 T31训练营 DAY5
谈谈数据访问层框架(2)本文延续上一篇文章,继续谈谈常见的Java数据访问层框架的优缺点。tkMybatis优点:对MyBatis Generator插件生成单表模板的进一步封装,解决了每次改动数据表结构后的手工同步工作,单表操作几乎无需写额外代码或配置文件。缺点:和MyBatis Generator插件一样,提供了Criteria支持代码层面的查询条件组装,大规模使用容易造成使用不当。推荐指数:4星,推荐替代简单的单表操作,复杂查询还是用Mapper.xml中管理Mybat
2021-10-30 18:30:00 135
原创 T31训练营 DAY4
谈谈数据访问层框架(1)上一节课程中,谈及了ORM的一些规约,有同学提问对于Mybatis Plus这类自动生成SQL的Mybatis扩展如何看,本文进一步展开,谈谈常见的Java数据访问层框架。Spring JDBCTemplate优点:对JDBC的简单封装,易学易用缺点:需要代码层面拼装SQL和做查询结果与对象的映射推荐指数:3星,小型使用Spring框架开发的项目替代JDBC时推荐使用MyBatis优点:简单直观的数据库访问和对象映射工具,基本上看下官方文档就能上手
2021-10-30 02:25:54 225
原创 T31训练营 DAY3
前一节课后思考:什么是架构图,如何通过架构图清晰地表述系统的组件和决策?4+1视图4+1视图由Philippe Kruchten于1995年在《IEEE Software》上发表了题为《The 4+1 View Model of Architecture》的论文提出,随着RUP和UML而普及。4+1视图包括逻辑视图、开发视图、过程视图、物理视图以及把四大视图串联起来的场景。逻辑视图:使用面向对象的分解方法,逻辑架构主要支持功能需求,也就是系统应该提供怎样的服务给用户。当采用面向对象的设计方法时
2021-10-28 02:45:35 247
原创 T31训练营 DAY2
今天是第一次实践,课程项目的目标是构建一个类似12306的铁路订票系统,12306是公众都有使用经验的系统,2011年上线初期,常常被汹涌而来的访问量压垮,受到了公众的吐槽,但背后的逻辑的复杂性是公众无法获知的。应该说铁路订票系统是一个业务足够复杂来实践DDD和高并发架构的好案例,如果不熟悉业务,做成简单的增删改查,未免可惜。遗憾的是,课程未提供需求参考文档,所以花了一天简单整理了一些关键的概念供项目组参考,事实上,下面所描述的概念,也仅仅是简化后的一小部分。票价票价计算的各种因素在业务实现上分
2021-10-27 20:31:08 279
原创 T31训练营 DAY1
今天是31天孤尽代码规范与效能提升训练营第一课,先谈谈我报名的缘由。项目组今年进来了7名应届生,如何培训让新人能够尽快的成长,我设想开展一个实践型的业务项目来驱动,刚好和开课吧新开的孤尽班不谋而合。记得前几年在云栖大会现场与正在签售新书《码出高效》的孤尽老师有过一面之缘,所以报名取取经。孤尽老师现任开课吧首席技术官,前阿里P8,在阿里期间任研发工程师、架构师、技术主管等角色,在大数据、高并发、研发效能等领域有着长期深耕经验,同时也是阿里巴巴代码规约主要编写者。开班前完成了开营,孤尽老师介绍了课程的背
2021-10-26 18:37:39 356
Ruby Conf China 2009之东拉西扯
Ruby Conf China 2009回来一直很累、很忙,今天终于决定把这篇拖欠了近2周的文章写出来。我是20号下午从杭州出发到上海的,晚上住在同学的寝室,这里就从我们的聊天开始。工作再思考几个同学都是明年毕业,马上就要面临求职的问题。求职难,在经济危机下求职更难。这场源于美国的经济危机,使得历来处于IT领域高端的欧美外企收紧了招聘步伐,就连有过Google、微软实习经历的一个同学也显得有些茫然...
2009-06-02 14:00:12 146
谁知道Google App Engine大概是怎么实现的?
Google App Engine是一个分布式的虚拟机(语言解释器),还是仅仅是一套可伸缩的web架构?也就是说我们写的程序某个时间点最终是在某台装有python/java环境的服务器上跑还是google自己实现了python/java的分布式虚拟机? 从文档看应该只是一套可伸缩的web架构,这样就没什么希奇了,一般web架构中数据库是最不可伸缩的,现在用bigtable替代了,不允许back-e...
2009-05-22 18:15:54 363
重新出发
经过3天的鏖战,终于在VPS上搭建成功了LLMP(Linux/Lighttpd/MySQL/PHP)环境,顺便用SaBlog-x Plus2.0搭了一个自己的独立博客(blog.eoss.cn),争取早日能把blogjava上写的文章迁移过来。 对于有需要的朋友,这里推荐一下DiaVPS,本博客所在的VPS就用的是他们的服务。DiaVPS用的是美国的服务器,不需要备案,测试下来速度很棒,相...
2009-04-20 15:58:17 111
Play with Play! - 案例
abikenow http://www.abikenow.com分享和搜索自行车的iPhone应用Shigeta websitehttp://www.shigeta.frzebre企业内部管理系统,使用了JPA 、AJAX和Google charts API等技术。 B&B media websitehttp://www.bandbmed...
2009-01-05 12:46:00 122
Play with Play! - 应用实例
论坛涉及JPA、页面模板、控制器、Session、Flash、自定义404/403页面、安全、Email等下载Blog涉及JPA、页面模板、控制器、Session、Flash、自定义404/403页面、安全等下载多种模板类型Play!支持通过调用renderXXX方法输出json、html、xml、二进制等多种回复类型,如果只是调用render()方法,Pla...
2009-01-05 10:28:00 175
Play with Play! - Validation
目前Play!没有集成验证功能,暂时可以使用下面两个验证框架作为替代:Hibernate ValidatorOValPlay!开发团队有实现一个类似Hibernate Validator功能的验证框架的打算。----------Play With Play!系列目录http://www.blogjava.net/shinewang/archive/2008/12/25/2482...
2009-01-05 09:52:00 158
《梦想金山》读书笔记
在中国,没有一个企业像金山这样饱受争议;在中国也没有一个企业所走的路像金山这样戏剧和充满艰辛。金山在微软的阴影和盗版的围追堵截下生存了近20年,在国际软件巨头和盗版的双重压力下,金山软件始终不懈充满激情,从一路坎坷中顽强走来,被视为中国民族的软件产业的领导者,在这个坚持梦想的创业故事中,你可以看到一家软件企业在20年里的挣扎、转折、挫败、崛起和成长的全部历程。金山的20年历程就是一幅展现中国软件产...
2009-01-01 23:38:00 268
Grails 1.1 Beta 2发布
Grails 1.1 Beta 2发布了,Groovy1.6 final和Grails 1.1 final也越来越近,不过已经不是很感兴趣了。虽然对于Java开发者来说,相比Rails,Grails更容易上手,但它并不成熟的。在论证Grails的成熟度时,Graema说:“你会把Spring和Hibernate看作风险吗?” Spring和Hibernate确实不是风险...
2008-12-26 16:47:00 113
Play with Play! - Play!最酷的5个功能
本文通过5个例子展示了Play!框架背后的哲学。 1. 绑定HTTP参数到Java方法通过在Java方法中定义和HTTP参数同名的参数就可以方便的取得HTTP中的参数值。例如:/articles/archive?date=08/01/08&page=2你可以通过定义方法参数来获取date和page的值:public...
2008-12-25 13:09:00 153
Play With Play!合集
一个Rails-like的Java框架http://www.blogjava.net/shinewang/archive/2008/11/19/241435.html框架概要http://www.blogjava.net/shinewang/archive/2008/12/25/245464.htmlPlay!最酷的5个功能http://www.blogjava.net/shinewang/arc...
2008-12-25 12:59:00 492
MySQL Technical Overview笔记
之前参加过一次Sun的MySQL讲座,最近整理了一下笔记: 插件式的存储引擎是MySQL最具特色的功能之一。当用户将数据库应用到各个不同的领域时,每一种应用都对数据库提出了满足自己需求的性能特点,而MySQL的插件式存储引擎正是针对此而推出的。使用MySQL插件式存储引擎体系结构,允许数据库专业人员为特定的应用需求选择专门的存储引擎,完全不需要管理任何特殊的应用编码要求。MySQL服务器...
2008-12-20 18:53:00 122
网站工具
速度测试Pingdom 非常专业的网页测速服务,可对该网页中众多元素一一测速,清楚地看到是哪些托了你的后腿。提供该网页速度的综合测评分析,看看会对你博客的设计有些启发。Websiteoptimization 功能十分强大的网站速度测试服务,可通过URL、HTM、JAVA代码三种方式进行测试,结果十分齐全,包括HTML、Images、CSS、Javascript等各个类别的访问速度,难能可贵的是...
2008-12-17 16:40:00 148
谁能成为Java的接班者
成为Java的接班者的语言需要具有的重要特色:动态类型或者自动类型转换快速反馈,改变代码后马上可以看到运行效果基于虚拟机开放源代码支持分布式、多核计算...
2008-12-16 11:19:00 88
Java服务器性能测试
摘录:tomcat6.0.14、resin3.2.1、glassfish v2对同一个loginaction使用JMeter进行压力测试,具体流程:JMeter发送http请求-->login.jsp-->login.do-->控制台打印一条信息表示收到request请求。每种服务器测试两次,每次10个thread,每个thread以每秒10次的速度发请求,循环10次,每组共发1...
2008-12-16 11:17:00 809
优化JDBC访问数据库性能
1.使用连接地2.关闭自动提交功能conn.setAutoCommit(false)关闭后需要手工调用commit()和rollback()3.使用PreparedStatement预编译4.建立索引
2008-12-15 22:34:00 170
什么是精通——技术水平等级的排列
前几年在IT求职的简历中经常会用到一个词“精通”,精通Java,精通Hibernate等等,但事实往往正好相反。最近看到一个对技术水平等级的排列,很有意思,和大家分享一下:水平的等级是这样子排的:1.不会2.精通3.掌握4.用过5.熟悉6.不好用不喜欢有N个7.自己开发了同样的功能的开源项目8.写了开发辅助工具9.反问我为什么非要会这些个框架?...
2008-12-12 09:43:00 2432
IT并不万能
本文为SGLab原创,转载时务必以超链接形式标明文章原始出处和作者信息及版权声明网址: http://sglab.cn/blog/?p=68 记得有这么一个段子,在国内IT业最火的时候,大学的学生们都普遍偏科,而且不管是什么专业的都偏IT,荒废其他课程,气得一位教机械工程的老教授在课堂上大发牢骚:“就是信息科技再发达,你也不能坐着信息去美国!”。 老教授这话是气话,没有人能够否认IT...
2008-12-09 10:16:00 119
Note:Hibernate&JPA
JPA的Cascade(级联)不定义级联CascadeType.PERSIST (级联新建)CascadeType.REMOVE (级联删除)CascadeType.REFRESH (级联刷新)CascadeType.MERGE (级联更新)CascadeType.ALL 表示选择全部四项@OneToMany(mappedBy = "custom")mappedBy="custom"就相当于in...
2008-12-09 10:01:00 81
Note:Java
HttpServletRequest类getAttribute()和getParameter()的区别: getParameter()用来接受从Web客户端传到Web服务器端的HTTP请求中get方法或post方法传递的数据,返回String类型的数据。HttpServletRequest类有setAttribute()方法,而没有setParameter()方法。 setAttri...
2008-12-07 23:57:00 133
[zz]慢速软件开发
这是一个急三火四的年代,人们很不得一口吃下一个胖子,做软件开发的恨不得一下子就完成一个软件,然后就在家里数钞票。心急火燎的结果呢?下面的情景是否会让你有种似曾相识的感觉:* 费了半天努力修改的bug,仔细想来,其实已经在需求明明白白写好了,只是开发时未曾注意到。* 好容易写好的一段代码,还没来得及向别人炫耀,却发现原来一个好好的功能出了问题,更糟糕的是,根本看不出这两段代码有什么联系。* 这个bu...
2008-12-03 15:16:00 94
Grails开发笔记 - 如何输出SQL Log
Hibernate是一个流行的Java对象关系映射框架,Grails的数据访问层GORM就是建立在Hibernate的基础上。Hibernate能够根据配置自动生成SQL语句,使得程序员可以随心所欲的使用对象编程思维来操纵数据库。然而如果使用不当,往往容易造成性能问题,例如N+1次查询问题。在开发过程中,常常需要通过查看Hibernate生成的SQL来对数据访问层进行调优。Grails使用了Log...
2008-12-03 15:08:00 666
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人