深入浅出PostgreSQL pdf,mobi,epub,txt,百度云盘
PostgreSQL近几年来保持着强劲的发展趋势,在DB-Engines数据库流行度排行榜上稳居前几名,呈现较快增长趋势。PostgreSQL得益于其强大的SQL语法功能,在全球得到广泛应用,尤其是欧美等国,在我国也被广泛认可和采用,已经被广泛应用于金融、证券、电信、工业控制、农业现代化、移动互联网、社交媒体等领域。
PostgreSQL版本发布节奏相当快,PostgreSQL中文社区的活跃程度非常高。用户在实际工作中一般会选择稳定的版本,新版本通常要观察一段时间,等待足够稳定之后,才会真正上线使用。据调查,现在商用的主流版本大多还是PostgreSQL9,相信很快PostgreSQL10会成为实际工作中的主流版本。
本书的内容源于作者及所在数据库团队多年来的使用经验总结和提炼,也参考和引用了一些其他书籍及技术博客的材料,特别是PostgreSQL中文社区的官方文档,在此表示衷心的感谢!
作者把多年来在数据库研发及技术支持过程中遇到的一些经典案例列举给读者,希望对读者的学习有所帮助。
本书的篇章内容较多,涵盖PostgreSQL数据库的基本功能和高级功能,总体上,把一些比较高级的话题都放到后面几章进行介绍,如性能优化、服务端编程、高可用方案等。每个章节基本上是相对独立完整的,读者可以根据自己的情况跳过前面的基础章节,选读自己感兴趣的章节。
本书的特色
1.以PostgreSQL10版本为基准,内容较为新颖
PostgreSQL10版本增加了不少新功能,如声明式表分区等,同时某些原有功能也会发生一些变化,如WAL日志目录名称从“pg_xlog”变成了“pg_wal”。本书的所有实例(示例)都是基于PostgreSQL10版本的。
2.包含丰富的实例,可操作性强
本书在介绍数据库的SQL语法、数据类型及各种功能时,都同步提供了丰富的实例,以帮助读者更好地理解和掌握这些知识点。全书包含了100多个实例,读者可以真正做到“在操作中学习”。
3.书中很多实例来源于真实业务场景,实用性强
本书的很多实例是作者从真实业务场景中提炼出来的,如第15章和第16章中的实例,大多是中兴通讯数据库团队在调优数据库性能过程中遇到过的问题。这些实例实用性很强,可以帮助读者更好地应对相似问题。
4.内容循序渐进,可读性强
本书在结构上采用循序渐进的策略,先从PostgreSQL的起源发展及安装启动开始,接着带领读者熟悉PostgreSQL的基本操作,之后逐步添加新的知识点。对于初学者来说,只要按顺序逐章阅读,即可轻松学会本书的内容,逐步成为PostgreSQL应用的高手。
5.提供了操作的素材
数据库中的很多操作都需要操作环境,例如,要查询数据,需要有一个数据库及数据,否则操作无法进行。所以,本书提供了可操作的素材,如“第6章查询和修改数据”“第7章索引”“第8章视图”“第9章触发器”“第10章表继承和表分区”等。
6.注重方法和经验的传递
本书在讲解知识时,更注重方法和经验的传递。全书共有几十个“提示”体例,其内容都是成功经验分享与易错事项总结,有关于经验技巧的,也有关于风险规避的,都可以帮助读者在学习的路途上披荆斩棘,快速进步。
本书适用的读者对象
?没有任何数据库基础的初学者。
?有一定数据库基础,想精通PostgreSQL数据库编程的人员。
?有一定PostgreSQL数据库编程基础,没有项目实践的人员。
?大中专院校及培训学校的老师和学生。
深入浅出Spring Security pdf,mobi,epub,txt,百度云盘
前言
安全管理是Java应用开发中无法避免的问题,目前主流的安全管理框架就是SpringSecurity和Shiro,其中Shiro一直以使用简单和轻量级著称。然而,随着SpringBoot和微服务的流行,SpringSecurity受到越来越多开发者的重视,因为SpringSecurity在和SpringBoot整合时具有先天优势。
目前市面上缺少系统介绍SpringSecurity的书籍,网上的博客内容又比较零散,这为很多初次接触SpringSecurity的Java工程师学习这门技术带来诸多不便。
笔者最早于个人博客上连载SpringSecurity系列教程,连载期间有不少读者加笔者微信讨论SpringSecurity的相关技术点,让笔者感受到读者对SpringSecurity的热情,也因此萌生了写一本技术图书来系统介绍SpringSecurity的想法。在朋友和家人的鼓励之下,这一想法逐步付诸实践,最终完成大家现在看到的这本《深入浅出SpringSecurity》。
本书以SpringSecurity5.3.4为基础,详细介绍SpringSecurity的基本用法以及相关原理。得益于SpringBoot中的自动化配置,SpringSecurity上手非常容易,然而这种自动化配置,也让很多初次接触SpringSecurity的开发者“知其然,而不知其所以然”,仅限于会用,一旦出了漏洞,或者想要定制功能时,就会不知所措。因此,在写作本书过程中,除了基本功能的Demo演示外,还对SpringSecurity的相关源码做了深入分析,以便读者“知其然,更知其所以然”。
学习SpringSecurity不仅仅是学习安全管理框架,也是一个学习各种网络攻击与防御策略的过程,SpringSecurity对很多常见网络攻击,如计时攻击、CSRF、XSS等,都提供了相应的防御策略,因此,我们在学习SpringSecurity时,也可以顺便研究一下这些常见的网络攻击,以便设计出更加安全健壮的权限管理系统。
本书分为四部分:
第一部分:第1章,这一部分总体介绍SpringSecurity架构,方便读者从整体上把握SpringSecurity的功能。
第二部分:第2~12章,这一部分主要介绍SpringSecurity中的认证功能,以及由此衍生出来的会话管理、HTTP防火墙、跨域管理等。
第三部分:第13~14章,这一部分主要介绍SpringSecurity中的授权功能,以及常见的权限模型ACL和RBAC。
第四部分:第15章,这一部分主要介绍OAuth2协议在SpringSecurity框架中的落地。
示例代码约定
为了减少代码冗余和本书篇幅,书中的所有示例代码片段都省略了package和import部分,像下面这样:
@Configuration
publicclassSecurityConfigextendsWebSecurityConfigurerAdapter{
@Override
protectedvoidconfigure(HttpSecurityhttp)throwsException{
http.authorizeRequests()
.anyRequest().authenticated()
.and()
.formLogin()
.loginPage("/login.html")
.loginProcessingUrl("/doLogin")
.defaultSuccessUrl("/index")
.failureUrl("/login.html")
.usernameParameter("uname")
.passwordParameter("passwd")
.permitAll()
.and()
.csrf().disable();
}
}
有时候为了向读者演示代码的运行效果,一个案例可能会被反复修改多次,那么在后面展示代码时,将不再列出不变的部分,仅仅列出发生变化的代码片段,像下面这样:
@Autowired
TokenStoretokenStore;
@Autowired
JwtAccessTokenConverterjwtAccessTokenConverter;
@Bean
AuthorizationServerTokenServicestokenServices(){
DefaultTokenServicesservices=newDefaultTokenServices();
services.setClientDetailsService(clientDetailsService);
services.setSupportRefreshToken(true);
services.setTokenStore(tokenStore);
TokenEnhancerChaintokenEnhancerChain=newTokenEnhancerChain();
tokenEnhancerChain
.setTokenEnhancers(Arrays.asList(jwtAccessTokenConverter));
services.setTokenEnhancer(tokenEnhancerChain);
returnservices;
}
//省略其他
正常情况下,这样的代码片段并不会影响大家理解本书内容。如果读者想要看到完整的代码片段,可以下载本书提供的示例代码进行对照理解。
源码省略约定
在分析SpringSecurity源码时,为了简化源码和篇幅以便于读者理解,源码中的日志输出、注释以及一些无关紧要的代码会被移除掉,像下面这样:
@ConfigurationProperties(prefix="spring.security")
publicclassSecurityProperties{
privateUseruser=newUser();
publicUsergetUser(){
returnthis.user;
}
publicstaticclassUser{
privateStringname="user";
privateStringpassword=UUID.randomUUID().toString();
privateListroles=newArrayList();
//省略getter/setter
}
}
如果读者觉得这样阅读“不过瘾”,也可以下载SpringSecurity源码对照理解。
读者定位
阅读本书需要有一定的SpringBoot基础,对于无SpringBoot基础的读者,可以先学习SpringBoot然后再来阅读本书。学习SpringBoot,可以参考笔者编写的图书《SpringBoot+Vue全栈开发实战》或者笔者的教程:http://springboot.javaboy.org。
源码获取
本书所有的示例代码均存放在GitHub上,地址如下:
https://github.com/lenve/spring-security-book-samples
所有工程均为标准的Maven工程,可以用IntelliJIDEA或者Eclipse打开。
纠错与勘误
如果读者在阅读本书时发现错误,可以将错误提交到https://github.com/lenve/spring-security-book-samples/issues,笔者将错误内容汇总后同步发布在http://www.javaboy.org/spring-security-book以及微信公众号“江南一点雨”。修正后的内容将在后续重印的书中得到体现。
交流社区
学无止境,笔者将继续对SpringSecurity的发展保持关注。关于SpringSecurity的最新变化,笔者都将发布在微信公众号“江南一点雨”上,读者关注微信公众号后,也可以进入本书微信交流群进行交流。
王松
2021年1月