摘要: 代码存管 Github Gitee Sourceforge 算法 Leetcode LintCode 数据结构在线展示 codetop 技术框架 MySQL Spring Netty Java JDK Linux内核 Nginx Docker Tomcat Jetty 学习网站 掘金 极客时间 简书 阅读全文
posted @ 2021-10-16 23:05 冬眠的山谷 阅读(88) 评论(0) 推荐(0) 编辑
摘要: 以下所有资料均可在:Java知识分享网下载。 大家有推荐的书可以在下方留言! 开源代码GitHub仓库总结 计算机基础 计算机科学导论 --(如果不是计算机科班的,应先看看计算机基础,了解一些基本概念,有助于之后的学习) 计算机操作系统 操作系统原理及应用(Linux) 操作系统原理及应用(Linu 阅读全文
posted @ 2018-12-18 17:15 冬眠的山谷 阅读(7840) 评论(1) 推荐(9) 编辑
摘要: 常见的网站验证方式有手机短信验证,图片字符验证,滑块验证,滑块图片验证.本文主要讲解的是滑块图片验证的实现流程.包括后台和前端的实现. 实现效果 使用的API java.awt.image.BufferedImage BufferedImage是Java类库中是一个带缓冲区图像类,主要作用是将一幅图 阅读全文
posted @ 2020-03-31 18:12 冬眠的山谷 阅读(3646) 评论(0) 推荐(0) 编辑
摘要: 前言 JDK,CGLIB,JAVASSIST是常用的动态代理方式。 JDK动态代理仅能对具有接口的类进行代理。 CGLIB动态代理方式的目标类可以没有接口。 Javassist是一个开源的分析、编辑和创建Java字节码的类库,JAVASSIST可以动态修改类,比如添加方法和属性。JAVASSIST的 阅读全文
posted @ 2019-07-11 03:21 冬眠的山谷 阅读(1524) 评论(1) 推荐(0) 编辑
摘要: 前言 一般可以使用cookie,localstorage,sessionStorage来实现浏览器端的数据缓存,减少对服务器的请求。 1.cookie数据存放在本地硬盘中,只要在过期时间之前,都是有效的,即使重启浏览器。但是会在每次HTTP请求中添加到请求头中,如果数据过多,会造成性能问题。 2.s 阅读全文
posted @ 2019-06-28 15:56 冬眠的山谷 阅读(2635) 评论(0) 推荐(0) 编辑
摘要: 前言 实际开发中有这样的场景,用户每日签到,可获取相对应的积分赠送,如果连续签到,则可获得额外的积分赠送。 本文主要讲解使用位图算法来优化签到历史记录的空间占用。当然如果业务中仅仅是获取连续签到的最大天数,使用一个计数器即可记录。 需求: 1.记录一年的签到历史 2.获取某月的签到历史 3.获取过去 阅读全文
posted @ 2019-06-27 14:26 冬眠的山谷 阅读(1062) 评论(2) 推荐(0) 编辑
摘要: 前言 本文讲解了在Spring 应用中创建Bean的多种方式,包括自动创建,以及手动创建注入方式,实际开发中可以根据业务场景选择合适的方案。 方式1: 使用Spring XML方式配置,该方式用于在纯Spring 应用中,适用于简单的小应用,当应用变得复杂,将会导致XMl配置文件膨胀 ,不利于对象管 阅读全文
posted @ 2019-06-20 18:36 冬眠的山谷 阅读(42410) 评论(2) 推荐(9) 编辑
摘要: docker 容器在启动时出现异常,删除容器或者暂停容器时会出现cannot stop container 先使用sudo aa-remove-unknown ,再进行其他操作 aa-remove-unknown将清点/etc/apparmor.d/中的所有配置文件,将该列表与当前加载到内核中的配置 阅读全文
posted @ 2019-06-16 23:43 冬眠的山谷 阅读(7660) 评论(0) 推荐(1) 编辑
摘要: 在安装软件包时如果出现Could not get lock /var/lib/dpkg/lock-frontend,说明之前使用apt时出现异常,没有正常关闭,还在运行。 解决,使用ps 和 grep查找apt的pid,并使用kill杀死掉。 执行安装指令 如果仍然出现,需要手动删除 /var/li 阅读全文
posted @ 2019-06-16 00:53 冬眠的山谷 阅读(51509) 评论(1) 推荐(3) 编辑
摘要: 前言 同源策略:判断是否是同源的,主要看这三点,协议,ip,端口。 同源策略就是浏览器出于网站安全性的考虑,限制不同源之间的资源相互访问的一种政策。 比如在域名https://www.baidu.com下,脚本不能够访问https://www.sina.com源下的资源,否则将会被浏览器拦截。 注意 阅读全文
posted @ 2019-06-15 02:32 冬眠的山谷 阅读(6096) 评论(0) 推荐(0) 编辑
摘要: 前言 MyBatis开放用户实现自己的插件,从而对整个调用过程进行个性化扩展。 这是MyBatis整个调用流程的主要参与者。 我们可以对其中的一些过程进行拦截,添加自己的功能,比如重写Sql添加分页参数。 拦截的接口 MyBatis允许拦截的接口如下 Executor ParameterHandle 阅读全文
posted @ 2019-06-10 16:18 冬眠的山谷 阅读(1405) 评论(0) 推荐(2) 编辑
摘要: 前言 我们都知道,kill在linux系统中是用于杀死进程。 kill命令可将指定的信号发送给相应的进程或工作。 kill命令默认使用信号为15,用于结束进程或工作。如果进程或工作忽略此信号,则可以使用信号9,强制杀死进程或作业. 因此,如果确保将进程杀死,可以使用-9参数 linux 中常见的信号 阅读全文
posted @ 2019-06-09 01:25 冬眠的山谷 阅读(3406) 评论(0) 推荐(1) 编辑
摘要: 在后端发生异常或者是请求出错时,前端通常显示如下 对于用户来说非常不友好。 本文主要讲解如何在SpringBoot应用中使用统一异常处理。 实现方式 第一种:使用@ControllerAdvice和@ExceptionHandler注解 第二种: 使用ErrorController类来实现。 第一种 阅读全文
posted @ 2019-06-07 16:11 冬眠的山谷 阅读(55287) 评论(1) 推荐(5) 编辑
摘要: 本文章主要讲述如何创建镜像并上传到自己的dockerhub中。 如果还没有安装docker,请参考docker安装 第一步 在dockerhub https://hub.docker.com/上创建帐号。 docker是和github类似的仓库,用于存放自己的镜像。可以创建私有和公开的仓库。私有的仓 阅读全文
posted @ 2019-06-05 23:23 冬眠的山谷 阅读(17789) 评论(3) 推荐(2) 编辑
摘要: Swagger 是一款RESTFUL接口的、基于YAML、JSON语言的文档在线自动生成、代码自动生成的工具。 通过在controller中添加注解,即可轻易实现代码文档化。 Swagger提供ui界面,方便查看接口说明和测试接口功能。 swagger-github 本文主要讲解如何创建一个swag 阅读全文
posted @ 2019-06-05 16:10 冬眠的山谷 阅读(1357) 评论(0) 推荐(0) 编辑
摘要: Doccker Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。 一个完整的Docker有以下几个部分组成: DockerClient客户端 Do 阅读全文
posted @ 2019-06-02 13:13 冬眠的山谷 阅读(5414) 评论(2) 推荐(2) 编辑
摘要: 在使用git时,有些文件是不需要上传到仓库中的,比如idea/eclipse相关的文件,编译后的文件(target目录)等。 可以使用.gitignore文件进行配置。在git本地仓库创建.gitignore文件。 #: 注释一行 aa/: 忽略aa目录下的所有文件 bb: 忽略bb文件 *.a: 阅读全文
posted @ 2019-05-27 11:48 冬眠的山谷 阅读(2476) 评论(0) 推荐(0) 编辑
摘要: 在开发中会碰到一种场景,如下 func3()需要等待func1和func2的执行结果。总共需要等待130ms.如果能够让func1和func2同时执行,那么最少的等待时间将会是80ms. 下面使用CompletableFuture来实现。 JDK1.8才新加入的一个实现类CompletableFut 阅读全文
posted @ 2019-04-29 15:57 冬眠的山谷 阅读(3298) 评论(0) 推荐(1) 编辑
摘要: 在使用SpringBoot开发中需要将一些配置参数放在yml文件中定义,再通过Java类来引入这些配置参数 SpringBoot提供了一些注解来实现这个功能 ConfigurationProperties Value EnableConfigurationProperties 下面提供例子来说明如何 阅读全文
posted @ 2019-04-24 16:00 冬眠的山谷 阅读(10970) 评论(0) 推荐(0) 编辑
摘要: 概念 序列化:将Java对象转化为字节数组 反序列化:将字节数组转化为Java对象 在RPC应用中,进行跨进程远程调用的时候,需要使用特定的序列化技术,需要对进行网络传输的对象进行序列化和反序列化。 影响序列化选择有两个因素 1. 序列化之后码流的大小,如果太大,那么将会影响网络传输的性能。 2. 阅读全文
posted @ 2019-04-18 17:40 冬眠的山谷 阅读(8740) 评论(0) 推荐(0) 编辑
摘要: 在分布式项目中,为了提高系统的可用性,服务提供者一般都会做集群处理,当其中一个服务出现宕机的时候,集群的其他服务仍然能够提供服务,从而提高系统的可靠性。 常用的负载均衡算法有: 随机算法 加权随机算法 轮询算法 加权轮询算法 最小时延算法 一致性hash算法 负载均衡追求的是每个服务提供者的负载一致 阅读全文
posted @ 2019-04-18 02:34 冬眠的山谷 阅读(3271) 评论(0) 推荐(0) 编辑
摘要: Java提供注册钩子线程,在JVM进程关闭之前,会自动执行这个钩子线程。 运用这个技巧,可以再JVM关闭之前,释放一些系统资源。 这个功能利用的是Runtime类来实现。 输出 可以看到,执行顺序和注册顺序是不一致的。一般也不会 注册多个钩子函数。 同时,还提供了移除钩子函数的功能 阅读全文
posted @ 2019-04-08 11:52 冬眠的山谷 阅读(5246) 评论(0) 推荐(0) 编辑
摘要: 本文代码GitHub地址 Bean的生命周期是开始创建到销毁的过程。需要实现相关的类BeanNameAware ,DisposableBean, InitializingBean ,并注册InstantiationAwareBeanPostProcessor。 Bean类实现BeanNameAwar 阅读全文
posted @ 2019-04-07 10:48 冬眠的山谷 阅读(702) 评论(0) 推荐(0) 编辑
摘要: 消费者相关配置类为 org.apache.kafka.clients.consumer.ConsumerConfig 具有以下配置参数 1. GROUP_ID_CONFIG = "group.id"; 阅读全文
posted @ 2019-03-21 11:52 冬眠的山谷 阅读(11287) 评论(1) 推荐(0) 编辑
摘要: Topic在Kafka中是主题的意思,生产者将消息发送到主题,消费者再订阅相关的主题,并从主题上拉取消息。 在创建Topic的时候,有两个参数是需要填写的,那就是partions和replication-factor。 partions 主题分区数。kafka通过分区策略,将不同的分区分配在一个集群 阅读全文
posted @ 2019-03-21 01:25 冬眠的山谷 阅读(40235) 评论(2) 推荐(1) 编辑
摘要: 安装配置JAVA开发环境 下载ZOOKEEPER zookeeper下载地址 在下载的zookeeper目录里创建3个文件,zk1,zk2,zk3,用于存放每个集群的数据文件。 并在三个目录下创建data和logs目录 配置配置文件 将conf目录下的zoo-sample.cfg 更改为zoo1.c 阅读全文
posted @ 2019-03-17 11:23 冬眠的山谷 阅读(968) 评论(1) 推荐(0) 编辑
摘要: 安装插件 file-settings-Plugins 搜索zookeeper,并安装,安装完成后重启IDEA 配置IP地址和端口 位于Other settings 中的zookeeper选项中配置 注意需要勾选Enable Zookeeper选项,设置完成后保存。 使用 可以看到左侧工具栏出现了zo 阅读全文
posted @ 2019-03-17 00:21 冬眠的山谷 阅读(19158) 评论(2) 推荐(0) 编辑
摘要: 众所周知,InnoDB使用的索引结构是B+树,但其实它还支持另一种索引:自适应哈希索引。 哈希表是数组+链表的形式。通过哈希函数计算每个节点数据中键所对应的哈希桶位置,如果出现哈希冲突,就使用拉链法来解决。更多内容可以参考 百度百科-哈希表 从以上可以知道,哈希表查找最优情况下是查找一次.而Inno 阅读全文
posted @ 2019-03-08 00:15 冬眠的山谷 阅读(2047) 评论(1) 推荐(0) 编辑
摘要: 慢查询日志会将查询过程中超出你设置的时间的查询记录下来,以便供开发者进行分析和优化。 1. 开启慢查询 1.1 查看当前设置 输出 三个参数 slow_query_log ON/OFF ,使能开关 slow_query_log_file 慢查询日志目录和文件名称 long_query_time 超过 阅读全文
posted @ 2019-02-27 22:59 冬眠的山谷 阅读(1031) 评论(1) 推荐(0) 编辑
摘要: 今天发现,当使用Ajax请求时,如果后台进行重定向到其他页面时是无法成功的,只能在浏览器地址栏输入才能够实现重定向。 Ajax默认就是不支持重定向的,它是局部刷新,不重新加载页面。 需要实现的功能是,后台网关拦截请求,看请求中是否存在token.如果不存在就跳转到登录页面。因为大多数请求都是使用Aj 阅读全文
posted @ 2019-02-27 17:53 冬眠的山谷 阅读(26176) 评论(4) 推荐(1) 编辑
摘要: iframe高度自适应使用场景是类似于微博,新闻等点击加载更多这种功能实现,要求iframe的高度能够跟随内容的变化而变化。 被引用的Html文件 阅读全文
posted @ 2019-02-22 13:05 冬眠的山谷 阅读(4961) 评论(1) 推荐(0) 编辑
摘要: 开发中经常碰到这样的场景,从数据库查询出来全部的字段,但是有些字段是不想给 客户端看到,这时就需要将属性从DAO复制到传给客户端的DTO对象,如果采用get/set, 那显得很麻烦。可使用反射实现。 Spring框架的 org.springframework.beans.BeanUtils 类帮我们 阅读全文
posted @ 2019-02-21 15:22 冬眠的山谷 阅读(1825) 评论(0) 推荐(0) 编辑
摘要: 安装插件 free mybatis plugin,安装完成后重启,ctrl+单击即可跳转。 阅读全文
posted @ 2019-02-18 23:39 冬眠的山谷 阅读(7684) 评论(0) 推荐(0) 编辑
摘要: 可以看到上面代码中的灰色波浪线,特别影响观感,可以看到是因为有了重复代码。不确定它是怎么确定重复代码的。 解决办法: Setting--Editor--Inspections--General Duplicated Code fragment ,把勾去掉即可。 去除mapper.xml文件的背景色 阅读全文
posted @ 2019-02-18 18:52 冬眠的山谷 阅读(14524) 评论(1) 推荐(1) 编辑
摘要: 1.下载octotree-chrome插件 下载地址 2.安装问题 由于新版chrome为了安全,已经不支持像以前一样拖拽插件进行安装,只能从其 Chrome Web Store 下载安装扩展程序。 解决办法: Linux环境:google-chrome --enable-easy-off-stor 阅读全文
posted @ 2019-01-09 16:50 冬眠的山谷 阅读(1680) 评论(0) 推荐(0) 编辑
摘要: Java为我们提供了大量的工具辅助我们进行开发,位于jdk目录下的bin目录里,本篇博客将会随时更新相关工具的使用说明。 jps 获取当前运行的java应用 jps -q 获取运行的pid jps -mlvv 输出pid / 运行类 / 虚拟机配置信息 jps 输出pid /运行类 阅读全文
posted @ 2019-01-08 00:56 冬眠的山谷 阅读(3733) 评论(0) 推荐(0) 编辑
摘要: 第一次创建rabbitmq交换机后,更改交换机类型,继续创建时出现。 原因时存在同名的交换机。 比如rabbitmq服务器中已经存在direct类型的交换机(name=“exchange”),你再创建一个同名的但是类型为fanout时就会出错,需要更换名字后再创建。 阅读全文
posted @ 2019-01-06 18:18 冬眠的山谷 阅读(19943) 评论(3) 推荐(0) 编辑
摘要: 1. 下载 下载地址,选择稳定的版本,比如3.4.13,beta为在测版本 2. 复制到任意的目录,解压 3. 修改配置文件 配置文件位于conf目录下,原配置文件为zoo_sample.cfg,更改为zoo.cfg才能被识别。 在配置文件末尾加上 : server.1=bogon:2888:388 阅读全文
posted @ 2019-01-05 18:36 冬眠的山谷 阅读(549) 评论(0) 推荐(0) 编辑
摘要: 前言 @Reference 用在消费端,表明使用的是服务端的什么服务 @Reference @Service 阅读全文
posted @ 2019-01-05 17:41 冬眠的山谷 阅读(39503) 评论(0) 推荐(0) 编辑
摘要: 在启动Dubbo项目时,出现该异常 java.lang.ClassNotFoundException: org.I0Itec.zkclient.IZkStateListener 解决,引入 阅读全文
posted @ 2019-01-03 00:23 冬眠的山谷 阅读(2881) 评论(0) 推荐(0) 编辑
摘要: 编译器 IDEA (个人觉得IDEA比较好用) Eclipse MyEclipse IDEA插件 Lombok: 使用注解,免去实体类中get /set/构造器等代码 ,需要引入lombok包 Alibaba Java Coding Guidelines :《阿里巴巴Java开发规约》扫描插件,安装 阅读全文
posted @ 2018-12-25 15:51 冬眠的山谷 阅读(395) 评论(0) 推荐(0) 编辑