什么是 MyBatis? MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。消除了 JDBC 的复杂性,MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生类型、接口和 Java 的 POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。 MyBatis vs JPA MyBatis 的优势 SQL 语句可以自由控制,更灵活、性能较高。 SQL 与代码分离、易于阅读和维护 提供 XML 标签,支持编写动态 SQL 语句 MyBatis 的劣势 简单的 CRUD 操作还得写 SQL 语句(XML 或注解) XML 中有大量的 SQL 要维护 MyBatis 自身功能很有限,但支持 Plugin MyBatis-Plus MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。 官网 码云 GitHun 无侵入:只做....
剖析:启动服务 # 服务启动主线 * Selector selector = sun.nio.ch.SelectorProviderImpl.openSelector() * ServerSocketChannel serverSocketChannel = provider.openServerSocketChannel() * selectionKey = javaChannel().register(eventLoop().unwrappedSelector(), 0, this); * javaChannel().bind(localAddress, config.getBacklog()); * selectionKey.interestOps(OP_ACCEPT); • Selector 是在 new NioEventLoopGroup()(创建一批 NioEventLoop)时创建。 • 第一次 Register 并不是监听 OP_ACCEPT,而是 0: selectionKey = javaChannel().register(eventLoop().unwrap....
全文搜索引擎 全 ⽂搜索引擎是 ⽬前 ⼴泛应 ⽤的主流搜索引擎。它的 ⼯作原理是计算机索引程序通过扫描 ⽂章中的每 ⼀个词,对每 ⼀个词建 ⽴ ⼀个索引,指明该词在 ⽂章中出现的次数和位 置,当 ⽤户查询时,检索程序就根据事先建 ⽴的索引进 ⾏查找,并将查找的结果反馈给 ⽤户的。 数据分类 结构化数据:通常可以通过 TRDB 以表的方式存储和搜索、也可以建立索引,通过 b-tree 等数据结构快速搜索数据。 非结构化数据:全文数据,不定长或无固定格式的数据。例如:邮件、word 文档等。对非结构化数据的搜索方法有两种:顺序扫描法、全文搜索法。 顺序扫描法 按字 ⾯意思,我们可以了解它的 ⼤概搜索 ⽅式,就是按照顺序扫描的 ⽅式查找特定的关键字。⽐如让你在 ⼀篇篮球新闻中,找出"科 ⽐"这个名字在哪些段落出现过。那你肯定需要从头到尾把 ⽂章阅读 ⼀遍,然后标记出关键字在哪些地 ⽅出现过。这种 ⽅法毋庸置疑是最低效的,如果 ⽂章很 ⻓,有 ⼏万字,等你阅读完这篇新闻找到"科 ⽐"这个关键字,那得花多少时间。 全文搜索法 对 ⾮结构化数据进 ⾏顺序扫描很慢,可以将 ⾮结构化数据中的....
什么是权限控制 将指定用户绑定到指定资源上,只能对指定资源进行(CRUD)操作。 限框架核心知识 ACL 和 RBAC ACL: Access Control List 访问控制列表 以前盛行的一种权限设计,它的核心在于用户直接和权限挂钩。 例子:常见的文件系统权限设计(Linux 文件系统权限设计), 直接给用户加权限 优点:简单易用,开发便捷。 缺点:用户和权限直接挂钩,导致在授予时的复杂性,比较分散,不便于管理。 RBAC: Role Based Access Control 基于角色的访问控制系统。权限与角色相关联,用户通过成为适当角色的成员而得到这些角色的权限。 例子:基于 RBAC 模型的权限验证框架与应用 Apache Shiro、Spring Security。 优点:简化了用户与权限的管理,通过对用户进行分类,使得角色与权限关联起来 缺点:开发对比 ACL 相对复杂 总结:不能过于复杂,规则过多,维护性和性能会下降, 更多分类 ABAC、PBAC 等。 Apache Shiro VS Spring Security Spring Security ....
常用压力测试工具对比 loadrunner: 性能稳定,压测结果及细粒度大,可以自定义脚本进行压测,但是太过于重大,功能比较繁多 。 apache ab(单接口压测最方便): 模拟多线程并发请求,ab命令对发出负载的计算机要求很低,既不会占用很多CPU,也不会占用太多的内存,但却会给目标服务器造成巨大的负载, 简单DDOS攻击等 。 webbench: webbench首先fork出多个子进程,每个子进程都循环做web访问测试。子进程把访问的结果通过pipe告诉父进程,父进程做最终的统计结果。 压测不同的协议和应用 Web - HTTP, HTTPS (Java, NodeJS, PHP, ASP.NET, …) SOAP / REST Webservices FTP Database via JDBC LDAP 轻量目录访问协议 Message-oriented middleware (MOM) via JMS Mail - SMTP(S), POP3(S) and IMAP(S) TCP 等等 使用场景及优点 功能测试 压力测试 分布式压力测试 纯 Java 开发 上手容易,高性能....
持续集成 持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通过每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽早地发现集成错误。 JDK [root@localhost test]# tar -zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/ [root@localhost jdk1.8.0_91]# pwd [root@localhost jdk1.8.0_91]# vim /etc/profile /usr/local/jdk1.8.0_91 JAVA_HOME=/usr/local/jdk1.8.0_91 export JAVA_HOME CLASSPATH=.:$JAVA_HOME/lib export CLASSPATH PATH=$PATH:$JAVA_HOME/bin:$CLASSPATH export PATH [root@localhost jdk1.8.0_91]# source /etc/profile [root@loca....
简介 是一个用于仓库管理系统的开源项目,使用 Git 作为代码管理工具,并在此基础上搭建起来的 Web 服务。 基础功能免费,高级功能收费。 基础功能开源,可自行搭建 。 可以进行权限控制,使得代码对部分人可见 。 GitLab 使用方便,非常适合企业内部使用。 部署 必须双核,内存最好 3G,否则报 502. # 在防火墙里开放http跟ssh端口 [root@localhost ~]# yum install lokkit yum install curl policycoreutils openssh-server openssh-clients systemctl start postfix.service chkconfig postfix on lokkit -s http -s ssh # 添加gitlab仓库,并安装 curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.rpm.sh | sudo b....