- 博客(37)
- 资源 (3)
- 收藏
- 关注
原创 JAVA设计模式第七章:解释器模式(Interpreter Pattern)
解释器模式解释器模式属于行为型模式是按照一定的语义进行解释的方案,在日常编码中使用较少在java中expression4J spring的SpEL表达式代码实现用解释器模式实现对一个简单的加减法计算的解析Context 解释器上下文Expression 解释器接口非终结符表达式: 通常由其它表达式组成;终结符表达式: 一般为取值表达式,为递归树的叶子节点/** * 上下文 * * @author cans * @date 2022/5/14 **/public clas
2022-05-14 14:41:56 245
原创 JAVA设计模式第六章:命令模式
命令模式命令模式在设计模式中属于行为型模式;在日常开发中也是比较常用的模式,只是可能我们没有意识到这属于命令模式;命令模式主要关注点在于请求发送方和请求接收方的解耦;命令模式基于java多态的特性,非常简单;在日常生活中也存在命令模式的原型,比如说电视机和遥控器:遥控器发送请求;电视机接收请求;电视机和遥控器是解耦的;代码使用命令模式模拟电视机和遥控器/** * 命令接口 */public interface Cmd { /** * 执行 *
2022-05-08 20:53:21 326
原创 JAVA设计模式第四章 -策略模式
策略模式世界上本没有模式;一些程序老鸟在长时间的编程工作总结出高效的代码写法被后世推崇;并整理出固定的写法规范,这个写法规范目前收录有23种这些规范被称之为 --> 设计模式策略模式是什么在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。简单说就是把变化点封装起来策略模式的使用场景Q: 我们知道策略模式最重要的就是封装变化点,那边对于变化点我们一般用什么处理呢?A: 是的 我们一般用if - else 处
2022-03-26 23:08:09 889
原创 java设计模式 第二章:观察者模式
观察者模式一方发生改变时通知多放进行相应的操作比如:商人进货了,通知村民商品进货微信公众号发文章了,通知所有关注者最新的消息为什么使用观察者模式降低代码耦合度增强扩展性我认为设计模式是死的但是业务是灵活的,我们需要根据业务灵活使用设计模式,心中无模式代码有模式观察者模式实践实现业务:良民: 张三 李四 劫匪: 张麻子 观察卖大米商人的信息张三 李四 监听到大米进货前去买大米张麻子 监听到大米进货带着枪前去零元购两个接口/** * 观察者接口 * * @author s
2021-11-27 16:18:06 219 1
原创 java设计模式 第一章: 代理模式
从今天开始更新java设计模式相关的东西,之前虽然也对java设计模式有过学习单都是走马观花或者应付面试.现在工作中遇到了挑战,编写出优雅的代码成为非常迫切的事情;代理模式代理模式是java中常用的设计模式,在比如说在spring中的事物管理就是使用的代理模式;1.为什么要使用代理模式所有的设计模式都具有一个目标: 提高代码的复用率,这一点非常重要;代理模式可以抽取通用的代码生成代理类,通过代理类执行目标对象的方法实现了代码的复用,经典的案列:spring的AOP;2.代理模式的分类静态代理
2021-11-14 18:32:40 255
原创 tomcat8.5 linux环境时区和系统时区不一致问题
处理方法进入tomcat/bin目录下,修改catalina.sh文件. 在文件头中添加如下配置:export JAVA_OPTS="$JAVA_OPTS -Duser.timezone=Asia/Shanghai"
2021-07-23 12:28:58 213
原创 JAVA 高级开发面试技术点
ConcurrentHashMap 内部实现原理看起来只问了一个问题,但是其中包含了大量知识点,我们将知识点罗列如下1. HashMapHashMap底层数据结构hash算法与hash碰撞1.7和1.8实现的区别扩容2. HashTable为什么要用HashTableHashTable和ConcurrentHashMap对比3. ConcurrentHashMap 原理底层结构怎么保证并发安全ConcurrentHashMap底层存储结构和算法ConcurrentHash
2021-06-04 14:15:08 540 2
原创 MySQL索引数据结构整理(二叉树 红黑树 B-Tree B+Tree)
我们都知道MySQL是使用B+Tree来存储索引的,但是B+Tree有什么优势呢,我们一起来研究一下吧.常见的数据存储结构二叉树红黑树B-Tree树B+Tree树二叉树每个结点最多有两颗子树,所以二叉树中不存在度大于2的结点左子树和右子树是有顺序的,次序不能任意颠倒即使树中某结点只有一棵子树,也要区分它是左子树还是右子树二叉树相对于全表扫描是有优势的,相当于二分查找提高了检索速度;红黑树红黑树又叫平衡二叉树,拥有自平衡功能,极端情况下二叉查找树会形成一个链表结构而红黑树就不
2021-05-28 16:47:59 408
原创 JPA Hibernate查询n+1问题,关联实体查询加载慢优化
问题出现场景伪代码如下:/** * 班级表 **/ @Entity @Tableclass { /** * 班级名称 **/ @Column(name="name") private String name;}/** * 学生表 **/ @Entity @Tableclass Student{ /** * 名称 **/ @Column(name="name") private String name; /** * 学号 **/ @
2021-05-06 17:19:40 2180
原创 java并发编程synchronized关键字的使用
1. synchronized的两种锁类型1.1 类锁锁的是类,也就是calss;执行同步的代码需要获得此class的锁;1.2 对象锁锁的是实例化的对象,不同的对象对应的锁不一样.不同对象之间的锁是隔离的;类锁和对象锁之间没有关系,不会出现互斥现象;2. synchronized 三种用法2.1 修饰方法修饰普通方法加的是对象实例锁,作用范围此实例对象;2.2 修饰静态方法修饰静态方法锁的是此类,范围是类;和实例对象不相关2.3 修饰代码块2.3.1 锁成员变量 public v
2021-04-23 10:13:36 85
原创 docker安装oracle
docker安装oracle配置docker仓库加速vim /etc/docker/daemon.json加入以下内容 { "registry-mirrors": [ "https://no1pfk8z.mirror.aliyuncs.com", "https://kfwkfulq.mirror.aliyuncs.com", "https://2lqq34jg.mirror.aliyuncs.com", "https://pee6w651.mirror.aliyuncs.com
2021-03-23 15:02:38 144
原创 Centos7安装Jenkins
Centos7安装Jenkins1.下载安装包清华镜像源选择对应的版本,这里使用:jenkins-2.224-1.1.noarch.rpm安装1.运行rpm -ivh jenkins-2.224-1.1.noarch.rpm2.修改启动端口修改:JENKINS_PORT = “8888”3.systemctl daemon-reload4. systemctl start jenkins4.浏览器访问服务器IP+端口长时间无反应可做如下尝试vi /var/lib/jenkins/hu
2021-03-08 14:49:15 183
原创 Centos7安装Nginx
Centos7安装Nginx版本: nginx-1.18.01.安装依赖安装 nginx 需要先将官网下载的源码进行编译,编译依赖 gcc 环境,如果没有 gcc 环境,则需要安装:yum install gcc-c++PCRE pcre-devel 安装 正则表达式解析yum install -y pcre pcre-develzlib 安装 用于压缩和解压缩yum install -y zlib zlib-develOpenSSL 安装 加密 启用https需要使用yu
2021-03-02 20:13:01 130
原创 Linux 防火墙常用操作
1 关闭防火墙systemctl stop firewalld.service2 开放端口如:开放3306端口firewall-cmd --zone=public --add-port=3306/tcp --permanent3 重启服务systemctl restart firewalld.service4 查看放行端口firewall-cmd --list-ports5 删除端口配置firewall-cmd --zone= public--remove-port=80/tcp --p
2021-01-05 10:31:23 160
原创 ELK 三件套下载地址
国内镜像下载ELK (ElasticSearch/logstacsh/kibana)三件套国内大家都懂的原因下载ELK包很慢使用华为云下载: 华为云下载ELK三件套亲测速度非常的快
2020-12-16 16:51:11 270
原创 使用jProfiler远程监控线上Linux环境JVM
jProfiler下载安装官网地址: 下载地址将windows版本的和Linux版本的都下载下来我使用的版本是11.0.2注意: linux和windows版本必须保持一致安装windows安装普通安装即可linux安装将下载的 jprofiler_linux_11_0_2.rpm 上传到linux服务器运行命令: rpm -ivh jprofiler_linux_11_0_2.rpm线上tomcat设置在tomcat的bin目录下在catalina.sh中加入以下代码C
2020-12-15 15:17:37 587 1
原创 JAVA获取线上堆栈信息
问题描述服务部署到线上以后隔一段时间就无法访问了,后台日志提示:java.lang.OutOfMemoryError: GC overhead limit exceeded,初步判断为内存泄露;下一步就是获取堆栈信息进行分析;使用kill -3 PID 获取堆栈信息获取进程的PID ps -ef|grep java获取堆栈信息 kill -3 PID获取文件1> 如果项目通过Tomcat进行发布(普通的web项目),则对应的堆栈信息会打印在catalina.out文件中。2>
2020-12-11 17:08:55 660
原创 tomcat 8.5 路径中有特殊字符报错
现象前端访问参数中有特殊字符的话会报错,直接返回400我的tomcat版本是 tomcat8.5.38处理方式由于用了docker,进入docker修改tomcat配置 在catalina.properties添加下面的配置tomcat.util.http.parser.HttpParser.requestTargetAllow=|{}...
2020-12-07 17:39:11 520
原创 JAVA 中级开发面试题 2~3年
JAVA 中级开发面试题 (2年经验)基础部分String,StringBuffer,StringBudilder 的区别1.String 是个不可改变的常量,是线程安全的适合操作少量数据;2.StringBuffer 可变的变量,线程安全;3.StringBudilder 可变的变量,线程不安全,性能比StringBuffer 强;hashtable和hashmap的区别是什么hashtable: 线程安全,不允许有null的键和值;hashmap: 线程不安全,允许有nu
2020-11-21 11:58:27 835 2
原创 Docker入门 仓库 镜像 容器 常用操作指南
docker 仓库 镜像和容器的关系docker是一种虚拟化技术,docker之所以能够兴起我认为是docker相比较于虚拟机实在是太轻量级了,下面认识一下docker的三大概念仓库: docker的仓库中存储了很多docker的镜像,对标maven的仓库;镜像: 镜像相当于是一个模板,相当于虚拟机安装文件;容器: 通过镜像可以创建容器,容器相当于安装好的虚拟机;通过一个简单的案例熟悉docker的操作1.docker拉取一个tomcat镜像 pull操作docker pull tom
2020-07-27 18:16:07 181
原创 JPA hibernate 复杂查询方式汇总 多表联查
以前写项目都是用mybatis,最近换了项目需要使用hibernate.从mybatis切换到hibernate需要攻克一些技术点,攻克之后写代码就得心应手多了.hibernate 常用查询方式ExampleMatcher 只能单表查询Specification 支持连表查询querydsl 支持连表查询并且上手简单ExampleMatcher模糊查询精确查询不支持多表查询java代码 @Test void test1() { SysUser sy
2020-07-26 16:26:10 1079
原创 java8 新特性stream流在开发中的常用方法
Java 8 API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。Stream 使用一种类似用 SQL 语句从数据库查询数据的直观方式来提供一种对 Java 集合运算和表达的高阶抽象。Stream API可以极大提高Java程序员的生产力,让程序员写出高效率、干净、简洁的代码。这种风格将要处理的元素集合看作一种流, 流在管道中传输, 并且可以在管道的节点上进行处理, 比如筛选, 排序,聚合等。java8 stream 在开发中的常用方法先创建一个list集合初始化一.
2020-07-26 13:30:31 461 1
原创 Centos7安装GitLab 离线安装
软件版本centos7gitlab-ce-13.1.4-ce.0.el7.x86_64下载软件Gitlab官网清华大学镜像我这里使用的是清华大学镜像地址,官网由于网络问题下载很慢安装将下载的gitlab-ce-13.1.4-ce.0.el7.x86_64.rpm文件上传运行: $ rpm -ivh gitlab-ce-13.0.5-ce.0.el7.x86_64.rpm 安装这里遇到一个问题提示依赖没有安装:policycoreutils-pythonwarning
2020-07-18 17:04:24 1034
原创 Centos7 安装JDK1.8 离线安装
Centos7 安装JDK1.81.下载JDK1.8这里使用的是 jdk-8u11-linux-x64.tar.gz2.将JDK安装包上传到/usr/local/jdk目录下3.解压文件tar -zxvf jdk-8u11-linux-x64.tar.gz4.配置环境变量vim /etc/profile加入以下代码 JAVA_HOME=/home/erp360/jdk/jdk_1.8/jdk1.8.0_11 CLASSPATH=.:$JAVA_HOME/lib/tool
2020-06-29 16:53:26 1221
原创 JPA 级联操作 CascadeType
JPA的级联操作 CascadeType级联操作是jpa表关联关系注解 OneToOne OnTOMany ManyToOne ManyTOMany 中配置的属性,代表本身对关联的实体拥有的操作权限;JPA的级联配置项4种ALL: 所有级联操作PERSIST: 级联保存MERGE: 级联更新REMOVE: 级联删除REFRESH: 级联刷新DETACH: 级联托管/游离操作为更方便的理解这里假设用户表:User部门表:Dept角色表中引用User对象的实体1.CascadeT
2020-06-25 11:26:52 743
原创 2020-3-15 vue入门
title: 2020-3-15 vue入门renderNumberedHeading: truegrammar_cjkRuby: true本篇内容vue框架搭建 √vue-router √使用软件IDE: webstormnodejs版本: v8.11.3npm版本: 5.6.0vue版本: 3.12.0记录后端程序员入门VUE过程vue框架搭建在文件夹下...
2020-03-15 21:14:01 164
原创 springboot集成quartz将任务持久化到数据库,实现定时任务的CRUD
springboot 集成 quartz实现定时任务的CRUD集成pom主要依赖<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version...
2020-03-10 21:30:15 961
原创 java将world转PDF
需求为客户生成PDF文档加水印,其中涉及到表格的遍历方案制作docx模板文件java读取模板文件使用Freemarker模板技术替换其中的部分内容;生成docx文件将docx文件转换为PDF文件技术选型Freemarker 模板技术生成docx文件使用Spire.Office将docx转换为PDF文件docx转换为PDF文件网上有很多方案但是都有各自的缺陷,使用Spir...
2020-02-11 20:23:15 919
原创 centos7搭建JAVA SAP JCO3 RFC 接口调用环境
环境安装tar -zxvf sapjco3-linuxx86_64-3.0.17.tgz 解压缩;将libsapjoc3.so复制到jdk安装目录:/usr/local/tools/jco3/;将libsapjoc3.jar移动到jdk安装目录下的lib下 如:/usr/local/java/jdk_1.8/lib/sapjco3.jar;将目录/usr/local/tools/jco3...
2019-10-22 18:51:10 893
原创 使用shiro进行登录密码安全验证
使用shiro进行登录密码安全验证使用框架版本SpringBoot 1.5.3.RELEASEshiro-spring 1.2.5shiro-ehcache 1.2.5Shiro配置ShiroConfig 中shiroFilter /** * ShiroFilter<br/> * 注意这里参数中的 StudentService 和 IScoreDao 只是一个
2017-06-15 15:23:32 9231
原创 Java基于Cookie的单点登录(SSO)实现
驱动公司有两个系统希望实现单点登录功能,故此研究.两个系统中域名不一样所以必须跨域实现;主要思想web应用1web应用2SSO验证服务器web应用1登录 访问SSO服务器–>登录成功–>创建token–>将Cookie写入SSO服务器和web应用1域名下;web应用2访问 不带有Cookie–>重定向SSO带有Cookie–>获取token重定向web应用2–>写入cookie–>访问到资源
2017-06-08 15:51:05 1612 2
sapjco3-Linux.zip
2019-08-06
nginx-1.17.2.tar.gz
2019-08-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人