
实训课
bishe_teacher
这个作者很懒,什么都没留下…
展开
-
好用!一键生成数据库文档,这个开源的文档生成工具值得了解
好用!一键生成数据库文档,这个开源的文档生成工具值得了解Gitee项目地址,可以直接去开源项目查看(推荐)https://gitee.com/leshalv/screw简介在企业级开发中、我们经常会有编写数据库表结构文档的时间付出,从业以来,待过几家企业,关于数据库表结构文档状态:要么没有、要么有、但都是手写、后期运维开发,需要手动进行维护到文档中,很是繁琐、如果忘记一次维护、就会给以后工作造成很多困扰、无形中制造了很多坑留给自己和后人。于是萌生了要自己写一个插件工具的想法,但由于自己前期在程序设原创 2020-12-24 17:06:33 · 608 阅读 · 1 评论 -
为啥这么多公司用 ZooKeeper?它到底解决了什么问题?
为啥这么多公司用 ZooKeeper?它到底解决了什么问题?ZooKeeper 很流行,有个基本的疑问:ZooKeeper 是用来做什么的?之前没有ZK,为什么会诞生 ZK?OK,解答一下上面的疑问:(下面是凭直觉说的)ZooKeeper 是用于简化分布式应用开发的,对开发者屏蔽一些分布式应用开发过程中的底层细节ZooKeeper 对外暴露简单的 API,用于支持分布式应用开发ZooKeeper 在提供上述功能的同时,其还是一个 高性能、高可用、高可靠的分布式集群上面说这么多,总结一下,ZK原创 2020-12-24 15:37:55 · 440 阅读 · 1 评论 -
JDK 16 即将发布,新特性速览!
JDK 16 即将发布,新特性速览!你还能追上 Java 的更新速度吗?当开发者深陷 Java 8 版本之际,这边下一版本 Java 16 有了最新的消息,与 Java 15 一样,作为短期版本,Oracle 仅提供 6 个月的支持。根据发布计划,JDK 16 将在 12 月 10 日和 2021 年 1 月 14 进入 Rampdown 阶段,2021 年 2 月 4 日到 2 月 18 日进入发布候选阶段。最终版本预计于 2021 年 3 月 16 日正式发布。日前, JDK 16 揭晓了即将到原创 2020-12-24 11:54:08 · 202 阅读 · 0 评论 -
JedisCluster没有Pipeline?
JedisCluster没有Pipeline?2020年4月30日,Redis 6.0.0正式发布,标志着redis从此告别单线程。在此之前,在大数据生产环境中使用的是一个30个节点的Codis集群,SparkStreaming以此作为缓存,QPS高峰大概在2000w/s。因为Codis不再更新迭代,于是在Redis 6.0.6版本发布的时候搭建了Redis Cluster,新的应用将不再使用Codis。之前连接Codis使用的Java客户端是Jedis,通过Pipeline方式批次执行命令,以此来提高原创 2020-12-19 13:29:34 · 257 阅读 · 1 评论 -
为什么许多原本的 Java 项目都试图用 go 进行重写开源?
为什么许多原本的 Java 项目都试图用 go 进行重写开源?对互联网来说,重构是政治斗争和大清洗的重要手段,尤其面向业务编程的公司和码农。比如某走出创业期已有平稳营收的互联网公司。35岁的技术总监在公司建立初期就加入公司,全程参与公司所有重大项目。技术总监拥有10年Java开发经验,年薪100万及若干股份。他手下还有一个平均薪资60万,平均在职6年的核心技术团队支撑公司运转。这时公司的项目随便增加删除一个功能或业务都得依靠这位技术总监及其团队,毕竟只有他们全程参与了公司的项目最有经验,只有他们更清楚原创 2020-12-19 12:19:43 · 536 阅读 · 1 评论 -
Excel大批量数据的导入和导出,如何做优化?
Excel大批量数据的导入和导出,如何做优化?概要Java对Excel的操作一般都是用POI,但是数据量大的话可能会导致频繁的FGC或OOM,这篇文章跟大家说下如果避免踩POI的坑,以及分别对于xls和xlsx文件怎么优化大批量数据的导入和导出。一次线上问题这是一次线上的问题,因为一个大数据量的Excel导出功能,而导致服务器频繁FGC,具体如图所示可以看出POI的对象以及相关的XML对象占用了绝大部分的内存消耗,频繁FGC说明这些对象一直存活,没有被回收。原因是由于导出的数据比较大量,大概原创 2020-12-19 11:33:29 · 1475 阅读 · 1 评论 -
后端接口如何提高性能?从MySQL、ES、HBASE等技术一起探讨下!
哪个男孩不想完成一次快速的查询?MySQL查询慢是什么体验?谢邀,利益相关。大多数互联网应用场景都是读多写少,业务逻辑更多分布在写上。对读的要求大概就是要快。那么都有什么原因会导致我们完成一次出色的慢查询呢?1.1 索引在数据量不是很大时,大多慢查询可以用索引解决,大多慢查询也因为索引不合理而产生。MySQL 索引基于 B+ 树,这句话相信面试都背烂了,接着就可以问最左前缀索引、 B+ 树和各种树了。说到最左前缀,实际就是组合索引的使用规则,使用合理组合索引可以有效的提高查询速度,为什么呢原创 2020-12-14 19:29:25 · 556 阅读 · 0 评论 -
使用Docker部署SpringBoot+Vue博客系统
使用Docker部署SpringBoot+Vue博客系统在今年年初的时候,完成了自己的个Fame博客系统的实现,当时也做了一篇博文Spring-boot+Vue = Fame 写blog的一次小结作为记录和介绍。从完成实现到现在,也断断续续的根据实际的使用情况进行更新。只不过每次上线部署的时候都觉得有些麻烦,因为我的服务器内存太小,每次即使只更新了前台部分(fame-front)的代码,在执行npm build的时候都还必须把我的后端服务(fame-server)的进程关掉,不然会造成服务器卡死(惨啊)原创 2020-12-14 17:59:57 · 524 阅读 · 0 评论 -
拥抱 Java 8 并行流吧,让执行速度飞起
拥抱 Java 8 并行流吧,让执行速度飞起!前言在 Java7 之前,如果想要并行处理一个集合,我们需要以下几步手动分成几部分为每部分创建线程在适当的时候合并。并且还需要关注多个线程之间共享变量的修改问题。而 Java8 为我们提供了并行流,可以一键开启并行模式。是不是很酷呢?让我们来看看吧并行流认识和开启并行流什么是并行流: 并行流就是将一个流的内容分成多个数据块,并用不同的线程分别处理每个不同数据块的流。例如有这么一个需求:有一个 List 集合,而 list 中每个 apple原创 2020-12-14 16:02:06 · 156 阅读 · 0 评论 -
Shell 应用:批量导入SQL文件,你还在复制粘贴文件名?
Shell 应用:批量导入SQL文件,你还在复制粘贴文件名?背景从一个数据库中导出了 N 个表的 SQL 语句,汇总到一个文件夹下。然后,再导入到目标数据库中。这个过程中,如果逐个敲 source 命令太繁琐了,不如写个脚本来搞定、顺便练练手。本文将介绍一个遍历文件夹下文件的 Shell 应用。脚本编写批量导入目标文件夹下的 SQL 文件,核心是,得到目录下所有 SQL 文件的名称,循环执行导入语句。所以,一个 ls 命令就搞定了。curDir=$1cd curDirecho′Startim转载 2020-12-09 15:11:49 · 274 阅读 · 0 评论 -
打造一款高逼格的Vim神器
打造一款高逼格的Vim神器Vim 是一个上古神器,本篇文章主要持续总结使用 Vim 的过程中不得不了解的一些指令和注意事项,以及持续分享一个开发者不得不安装的一些插件,而关于 Vim 的简介,主题的选择,以及为何使用 vim-plug 来管理插件等内容,有兴趣的同学下来可以自己了解和对比下。本文导航◈ 安装03%◈ 新手指南04%◈ 移动光标05%◈ 退出08%◈ 删除08%◈ 修改10%◈ 撤销11%◈ 复制粘贴剪切12%◈ 状态13%◈ 查找13%◈ 替换15%◈ 折叠16%原创 2020-12-09 12:50:10 · 1233 阅读 · 0 评论 -
15 张图, 把TCP/IP 讲得一清二楚!
15 张图, 把TCP/IP 讲得一清二楚!一、TCP/IP模型TCP/IP协议模型(Transmission Control Protocol/Internet Protocol),包含了一系列构成互联网基础的网络协议,是Internet的核心协议。基于TCP/IP的参考模型将协议分成四个层次,它们分别是链路层、网络层、传输层和应用层。下图表示TCP/IP模型与OSI模型各层的对照关系。TCP/IP协议族按照层次由上到下,层层包装。最上面的是应用层,这里面有http,ftp 等等我们熟悉的协议原创 2020-12-08 15:52:25 · 302 阅读 · 0 评论 -
滴滴十大技术方向开源项目出炉!
滴滴十大技术方向开源项目出炉!作为卓越的一站式移动出行和生活平台,滴滴在亚洲、拉美和澳洲为超过5.5亿用户提供出租车、快车、专车、豪华车、公交、代驾、企业级、共享单车、共享电单车、汽车服务、外卖、支付等多元化的服务。滴滴平台上,有数千万车主及司机获得灵活的工作和收入机会,年运送乘客超过100亿人次。滴滴开源的三年时间里,在滴滴高级副总裁、开源委员会主席章文嵩博士的倡导下,秉持「拥抱开放、合作共赢、创造价值」的理念。滴滴积极参与业界的开源项目,并不断对外输出内部的优秀项目。自2017年6月30日,滴滴首个原创 2020-12-05 16:54:23 · 568 阅读 · 0 评论 -
记一次 Linux 被入侵全过程
记一次 Linux 被入侵全过程0x00 背景周一早上刚到办公室,就听到同事说有一台服务器登陆不上了,我也没放在心上,继续边吃早点,边看币价是不是又跌了。不一会运维的同事也到了,气喘吁吁的说:我们有台服务器被阿里云冻结了,理由:对外恶意发包。我放下酸菜馅的包子,ssh连了一下,被拒绝了,问了下默认的22端口被封了。让运维的同事把端口改了一下,立马连上去,顺便看了一下登录名:root,还有不足8位的小白密码,心里一凉:被黑了!0x01 查找线索服务器系统CentOS 6.X,部署了nginx,tom原创 2020-12-05 16:11:26 · 346 阅读 · 0 评论 -
Spring-Retry重试实现原理
Spring-Retry重试实现原理概要Spring实现了一套重试机制,功能简单实用。Spring Retry是从Spring Batch独立出来的一个功能,已经广泛应用于Spring Batch,Spring Integration, Spring for Apache Hadoop等Spring项目。本文将讲述如何使用Spring Retry及其实现原理。背景重试,其实我们其实很多时候都需要的,为了保证容错性,可用性,一致性等。一般用来应对外部系统的一些不可预料的返回、异常等,特别是网络延迟,中原创 2020-12-05 15:06:31 · 979 阅读 · 0 评论 -
后端生成Token架构与设计详解
后端生成Token架构与设计详解目的:Java开源生鲜电商平台-Java后端生成Token目的是为了用于校验客户端,防止重复提交.技术选型:用开源的JWT架构。1.概述:在web项目中,服务端和前端经常需要交互数据,有的时候由于网络相应慢,客户端在提交某些敏感数据(比如按照正常的业务逻辑,此份数据只能保存一份)时,如果前端多次点击提交按钮会导致提交多份数据,这种情况我们是要防止发生的。2.解决方法:①前端处理:在提交之后通过js立即将按钮隐藏或者置为不可用。②后端处理:对于每次提交到后台的数据原创 2020-11-21 14:27:38 · 1414 阅读 · 0 评论 -
HashMap 的 7 种遍历方式+性能分析!
HashMap 的 7 种遍历方式+性能分析!本文先从 HashMap 的遍历方法讲起,然后再从性能、原理以及安全性等方面,来分析 HashMap 各种遍历方式的优势与不足,本文主要内容如下图所示:HashMap 遍历HashMap 遍历从大的方向来说,可分为以下 4 类:迭代器(Iterator)方式遍历;For Each 方式遍历;Lambda 表达式遍历(JDK 1.8+);Streams API 遍历(JDK 1.8+)。但每种类型下又有不同的实现方式,因此具体的遍历方式又可以分为原创 2020-11-21 10:31:19 · 1613 阅读 · 1 评论 -
一款PO VO DTO 转换神器,求求你别在到处找工具类了!
一款PO VO DTO 转换神器,求求你别在到处找工具类了!老铁们是不是经常为写一些实体转换的原始代码感到头疼,尤其是实体字段特别多的时候。介绍一个开源项目 mapstruct ,可以轻松优雅的进行转换,简化你的代码。当然有的人喜欢写get set,或者用BeanUtils 进行复制,代码只是工具,本文只是提供一种思路。先贴下官网地址吧:https://mapstruct.org/废话不多说,上代码:pom 配置: org.mapstru原创 2020-11-14 21:39:26 · 280 阅读 · 0 评论 -
你不知道的redis——主从复制,因为该命令redis作者曾摊上事
你不知道的redis——主从复制,因为该命令redis作者曾摊上事一、什么是主从复制主从复制就是我们建立数据存档的时候,将一份数据进行复制保存多分存储在不同的机器上。二、为什么要用主从复制在redis持久化机制一文中,我们已经提到为了防止数据丢失,redis提供了RDB和AOF两种方式持久化数据,将内存的数据持久化到磁盘上。但是当出现服务器出现故障,比如服务磁盘坏掉导致数据不可恢复时。那又该怎么办呢?那么为了避免单点故障,我们需要将数据复制多份部署在多台不同的服务器上,即使有一台服务器出现故障其他原创 2020-11-14 19:21:24 · 112 阅读 · 0 评论 -
介绍一个适合深入学习并实战的SpringBoot项目
介绍一个适合深入学习并实战的SpringBoot项目项目简介spring-boot-demo是一个用来深入学习并实战SpringBoot的项目,目前总共包含66个集成demo,已经完成54个,每个集成demo都有完整的代码和模块简介,并且作者还在不断更新中。该项目已经成功集成的demo:actuator(监控)admin(可视化监控)logback(日志)aopLog(通过AOP记录web请求日志)统一异常处理(json级别和页面级别)freemarker(模板引擎)thymeleaf(原创 2020-11-14 18:00:13 · 511 阅读 · 0 评论 -
话说关于 ZooKeeper 方面,面试有什么可问的啊?
话说关于 ZooKeeper 方面,面试有什么可问的啊?zookeeper的基本概念zookeeper是一款开源的分布式协调服务框架,为分布式环境提供了一致性服务的功能,常见应用场景有:发布订阅,主动通知,文件管理,集群管理,分布式锁等功能。zk在设计的时候满足了cp两要素,即一致性和分区容错性。zookeeper的设计理念这里我参考以往的一些经验,将其简单囊括为了以下几点:一致性如下图所示,所有的客户端一旦连接到了集群环境中,不论访问的zk是leader角色还是follower角色,每个zk原创 2020-11-14 11:00:30 · 143 阅读 · 0 评论 -
方法重载和方法重写 的原理
方法重载和方法重写 的原理前言JVM执行字节码指令是基于栈的架构,就是说所有的操作数都必须先入栈,然后再根据需要出栈进行操作计算,再把结果进行入栈,这个流程和基于寄存器的架构是有本质区别的,而基于寄存器架构来实现,在不同的机器上可能会无法做到完全兼容,这也是Java会选择基于栈的设计的原因之一。思考我们思考下,当我们调用一个方法时,参数是怎么传递的,返回值又是怎么保存的,一个方法调用之后又是如何继续下一个方法调用的呢?调用过程中肯定会存储一些方法的参数和返回值等信息,这些信息存储在哪里呢?我们知道原创 2020-11-08 17:00:27 · 755 阅读 · 0 评论 -
记一次使用 Lombok 翻车造成的事故!
记一次使用 Lombok 翻车造成的事故!序言去年在项目当中引入了Lombok插件,着实解放了双手,代替了一些重复的简单工作(Getter,Setter,toString等方法的编写)。但是,在使用的过程当中,也发现了一些坑,开始的时候并没有察觉到是Lombok的问题,后来跟踪了对应的其他组件的源码,才发现是Lombok的问题!Setter-Getter方法的坑问题发现我们在项目当中主要使用Lombok的Setter-Getter方法的注解,也就是组合注解@Data,但是在一次使用Mybatis原创 2020-11-08 16:08:52 · 441 阅读 · 0 评论 -
100%会用到的hashCode()和equals()方法及使用规范,你掌握了吗?
背景在看阿里巴巴Java开发手册手册时,看到了有关hashCode()和equals()方法的使用规范。只要重写 equals,就必须重写 hashCode。因为 Set 存储的是不重复的对象,依据 hashCode 和 equals 进行判断,所以 Set 存储的对象必须重写这两个方法。如果自定义对象做为 Map 的键,那么必须重写 hashCode 和 equals。并且举了String 重写了 hashCode 和 equals 方法,所以我们可以非常愉快地使用 String 对象作为 ke原创 2020-11-08 11:19:42 · 275 阅读 · 0 评论 -
如何设计一个通用的权限管理系统
如何设计一个通用的权限管理系统一个系统,如果没有安全控制,是十分危险的,一般安全控制包括身份认证和权限管理。用户访问时,首先需要查看此用户是否是合法用户,然后检查此用户可以对那些资源进行何种操作,最终做到安全访问。身份认证的方式有很多种,最简单的就是直接用户名密码,还有业内比较通用的方式CAS方式登陆等;授权的框架也很多,比如OAuth2,Shiro等。本文首先会讲解一下CAS的概念,以及基于角色的权限管理模型(RBAC)的概念,接着进行数据表的设计,最后讲解如何利用Shiro进行权限管理。一、CA原创 2020-11-08 09:58:56 · 828 阅读 · 0 评论 -
华为OD两轮技术面试记录
华为OD两轮技术面试记录1性格测试选积极向上的选项,注意,性格测试也会挂人,我一个朋友性格测试就没过。2机试一道编程题目 1h 用例60%通过即可任给一个数组,元素有20M,1T,300G之类的,其中1T=1000G,1G=1000M 按从小到大输出结果例如:输入:20M1T300G输出:20M300G1T我给出的代码如下(已通过100%用例):package Huawei;import java.util.Scanner;/**Created by xuzhenyu原创 2020-11-05 16:19:47 · 2626 阅读 · 0 评论 -
图文并茂,HashMap经典详解!
图文并茂,HashMap经典详解!什么是HashMap?HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。HashMap的数据结构在Java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMap也不例外。HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。文字描述永远要配上图才能更好原创 2020-11-05 11:24:07 · 237 阅读 · 0 评论 -
详细分析 Java 中实现多线程的方法有几种?
详细分析 Java 中实现多线程的方法有几种?正确的说法实现多线程的官方正确方法: 2 种。Oracle 官网的文档说明方法小结方法一: 实现 Runnable 接口。方法二: 继承 Thread 类。代码示例/**实现 Runnable 接口的方式创建线程@author 踏雪彡寻梅@version 1.0@date 2020/9/7 - 00:34@since JDK1.8*/public class RunnableStyle imple原创 2020-10-15 20:51:07 · 161 阅读 · 0 评论 -
Java中的hashCode() 和 equals()的若干问题解答
Java中的hashCode() 和 equals()的若干问题解答一、hashCode()的作用哈希表这个数据结构想必大多数人都不陌生,而且在很多地方都会利用到hash表来提高查找效率。在Java的Object类中有一个方法:public native int hashCode();根据这个方法的声明可知,该方法返回一个int类型的数值,并且是本地方法,因此在Object类中并没有给出具体的实现。为何Object类需要这样一个方法?它有什么作用呢?不妨举个例子:假设内存中有0 1 2 3 4原创 2020-10-15 18:06:44 · 253 阅读 · 0 评论 -
详细分析 Java 中启动线程的正确和错误方式
详细分析 Java 中启动线程的正确和错误方式start 方法和 run 方法的比较代码演示:/**start() 和 run() 的比较@author 踏雪彡寻梅@version 1.0@date 2020/9/20 - 16:15@since JDK1.8*/public class StartAndRunMethod {public static void main(String[] args) {// run 方法演示// 输出: name原创 2020-10-15 10:50:40 · 303 阅读 · 0 评论 -
日志框架,选择Logback Or Log4j2?
日志框架,选择Logback Or Log4j2?写在前面前段时间写了一篇文章(文章链接:Logback配置文件这么写,TPS提高10倍),反响还不错,有很多网友也发表了自己的意见:总结一下就是:logback性能测试同步和异步TPS相差不大都9102年了还在用logback看到网友的意见后又继续去做了一波测试和调研服务器硬件CPU 六核内存 8G测试工具JMeterJProfileAPM(New Relic)logback日志框架同步和异步测试之前的测试结果存在以下几点问题原创 2020-10-02 16:58:56 · 201 阅读 · 0 评论 -
卧槽,为什么 volatile 关键字保证不了线程安全啊
卧槽,为什么 volatile 关键字保证不了线程安全啊在当前高并发的时代,不懂一点高并发多线程都不好意思出去,即使没地方使用,网上大多数相关文档博客也都讲解了这些部分。我并不想具体介绍什么是volatile,我写这篇博客目的是说明白为什么volatile保证不了线程安全。想要线程安全必须保证原子性,可见性,有序性。而volatile只能保证可见性和有序性volatile具体介绍,可以看:面试官最爱的 volatile 关键字,这些问题你都搞懂了没?在说明这个问题之前,首先还是要说明下cpu和内存,原创 2020-10-02 15:32:24 · 183 阅读 · 0 评论 -
单元测试框架怎么搭?快来看看新版Junit5的这些神奇之处吧!
单元测试框架怎么搭?快来看看新版Junit5的这些神奇之处吧!为什么使用JUnit5JUnit4被广泛使用,但是许多场景下使用起来语法较为繁琐,JUnit5中支持lambda表达式,语法简单且代码不冗余。JUnit5易扩展,包容性强,可以接入其他的测试引擎。功能更强大提供了新的断言机制、参数化测试、重复性测试等新功能。ps:开发人员为什么还要测试,单测写这么规范有必要吗?其实单测是开发人员必备技能,只不过很多开发人员开发任务太重导致调试完就不管了,没有系统化得单元测试,单元测试在系统重构时能发挥巨原创 2020-10-02 13:52:36 · 177 阅读 · 0 评论 -
来谈谈MySQL事务及事务引发的问题
来谈谈MySQL事务及事务引发的问题说起事务,肯定能够想到这样一句话,这个事情要么不做,要么做完;或者是好兄弟不求同年同月同日生,但求同年同月同日死。有点过分,但是是这个理儿。四大特性我们都知道,提到事务,就不能不提事务的四大特性,ACID,即原子性,一致性,隔离性,持久性。原子性(Atom):事务的一组操作是原子的不可再分割的,这组操作要么同时完成要么同时不完成。一致性(Consistency): 事务在执行前后数据的完整性保持不变。数据库在某个状态下符合所有的完整性约束的状态叫做数据库具有完整原创 2020-10-02 10:29:35 · 348 阅读 · 0 评论 -
Java NIO:浅谈I/O模型
Java NIO:浅谈I/O模型一、什么是同步?什么是异步?同步和异步的概念出来已经很久了,网上有关同步和异步的说法也有很多。以下是我个人的理解:同步就是:如果有多个任务或者事件要发生,这些任务或者事件必须逐个地进行,一个事件或者任务的执行会导致整个流程的暂时等待,这些事件没有办法并发地执行;异步就是:如果有多个任务或者事件发生,这些事件可以并发地执行,一个事件或者任务的执行不会导致整个流程的暂时等待。这就是同步和异步。举个简单的例子,假如有一个任务包括两个子任务A和B,对于同步来说,当A在执原创 2020-09-30 17:41:48 · 177 阅读 · 0 评论 -
终于有人把 Docker 讲清楚了,别再说不会 Docker 了!
终于有人把 Docker 讲清楚了,别再说不会 Docker 了!一、讲个故事二、虚拟机与容器三、认识 Docker四、核心概念五、安装 Docker六、快速开始七、常规操作八、最佳实践九、总结富 Web 时代,应用变得越来越强大,与此同时也越来越复杂。集群部署、隔离环境、灰度发布以及动态扩容缺一不可,而容器化则成为中间的必要桥梁。本节我们就来探索一下 Docker 的神秘世界,从零到一掌握 Docker 的基本原理与实践操作。别再守着前端那一亩三分地,是时候该开疆扩土了。我们将会围原创 2020-09-30 16:50:14 · 667 阅读 · 0 评论 -
Java毕业设计_药品管理系统
药品管理系统药品管理系统mysql数据库创建语句药品管理系统oracle数据库创建语句药品管理系统sqlserver数据库创建语句药品管理系统spring+springMVC+hibernate框架对象(javaBean,pojo)设计药品管理系统spring+springMVC+mybatis框架对象(javaBean,pojo)设计药品管理系统登录注册界面高质量编程视频:shangyepingtai.xin药品管理系统mysql数据库版本源码:超级管理员表创建语句如下:create原创 2020-09-30 11:45:28 · 1052 阅读 · 0 评论 -
SpringMVC拦截器的使用
SpringMVC拦截器的使用SpringMVC 中的Interceptor 拦截器也是相当重要和相当有用的,它的主要作用是拦截用户的请求并进行相应的处理。比如通过它来进行权限验证,或者是来判断用户是否登陆,或者是像12306 那样子判断当前时间是否是购票时间。一、springMVC拦截器的实现方式springMVC拦截器的实现一般有两种方式:第一种方式是要定义的Interceptor类要实现了Spring的HandlerInterceptor 接口。第二种方式是继承实现了HandlerInter原创 2020-09-30 10:43:01 · 204 阅读 · 0 评论 -
JDK1.8源码分析:线程安全的CopyOnWriteArrayList与CopyOnWriteArraySet
JDK1.8源码分析:线程安全的CopyOnWriteArrayList与CopyOnWriteArraySet概述ArrayList不是线程安全的,所以如果需要保证ArrayList在多线程环境下的线程安全,即保证读的线程可见性和写的数据一致性,可以使用synchronized或者ReentrantLock对ArrayList的读写进行同步,或者使用Collections.syncrhonizedList来将ArrayList包装成SynchronizedList。由于以上方法对读写都需要加锁,一定原创 2020-09-30 09:48:46 · 159 阅读 · 0 评论 -
天天都在用注解,那你知道Java注解的基本原理吗?
天天都在用注解,那你知道Java注解的基本原理吗?注解目前非常的流行,很多主流框架都支持注解,而且自己编写代码的时候也会尽量的去用注解,一时方便,而是代码更加简洁。注解的语法比较简单,除了@符号的使用之外,它基本与Java固有语法一致。Java SE5内置了三种标准注解:@Override,表示当前的方法定义将覆盖超类中的方法。@Deprecated,使用了注解为它的元素编译器将发出警告,因为注解@Deprecated是不赞成使用的代码,被弃用的代码。@SuppressWarnings,关闭不当编原创 2020-09-04 08:58:49 · 147 阅读 · 0 评论