- 博客(63)
- 问答 (1)
- 收藏
- 关注
原创 This request has been blocked; the content must be served over HTTPS
【代码】This request has been blocked;
2023-05-12 15:06:56 567
原创 Redis 的 最新windows 版本 5.0.14
官网最新版本已经到7.0了,我们知道。官网没有适配window 的版本,但是微软维护了适配weindows版本的,不过最新的版本是2016年发布的3.2 ,貌似后面再没有维护了3.2window地址不过幸运的是 github 有志愿者进行了后期维护,并且已经到 5.0.14了,下载地址我们发现还有对应的4.X版本 ,非常感谢这群可爱的大佬...
2022-06-21 10:49:52 1326
原创 SpringBoot 启动类 源码解析 (二 . run() 方法之 prepareEnvironment createApplicationContext 解析)
// * 方法为重要的方法 不加 * 的可以不看 意义不大@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })public class CmasApplication{ public static void main(String[] args) { // 点击run方法进入 SpringApplication.run(CmasApplication.clas..
2022-03-17 16:50:15 843
原创 SpringBoot 启动类 源码解析 (一 .new SpringApplication 解析)
// * 方法为重要的方法 不加 * 的可以不看 意义不大@SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })public class CmasApplication{ public static void main(String[] args) { // 点击run方法进入 SpringApplication.run(CmasApplication.class..
2022-03-15 16:38:13 739
原创 String、StringBuffer与StringBuilder之间区别(源码分析)
string:不可变字符串,每次修改都回生成一个新的变量,浪费内存StringBuilder:可变字符串 线程不安全,单线程操作效率高StringBuffer:可变字符串 线程安全package com.example.spring;/** * @Author: hyh * @Date: 2022/2/22 14:57 **/public class Test003 { public static void main(String[] args) {
2022-03-03 10:25:45 164
原创 对象在内存中的存储布局
对象在堆内存中的存储布局分为三个部分:对象头,实例数据,对齐填充对象头分为两个部分:一:MarkWord: 记录了对象的 哈希码 GC分代年龄,锁信息等二:类型指针,即对象指向它的类型元数据指针,如果对象是一个Java数组,那在对象头中还必须有一块用于记录数组长度的数据(4个字节)在32位系统下,类型指针大小是4字节,MarkWord是4字节,对象头为8字节。在64位系统下,类型指针大小是8字节,MarkWord是8字节,对象头为16字节。在64位开启指针压缩的情况下 -XX:+UseComp
2022-02-26 09:37:03 1000
原创 ArrayList 和 LinkList 区别(源码分析)
ArrayList 底层时动态数组 查找数据比较快,当执行 get(index)方法时,直接返回数组对应下表的元素 数组在内存存储时是一块连续的空间,知道首地址,当要查找第几个元素时,通过计算就能一次定位到该元素的地址LinkList 底层实现是双向链表,增加和删除元素比较快,链表的节点除了存储当前节点值外还存储上一个节点和下一个节点对象 当执行get(index)方法时,首先会判断 查找索引在前半段还是后半段,如果前半段,那就从第一个位置开始找,反之从最后一个找。// ArrayList //.
2022-02-24 16:46:08 501
原创 es 聚合统计
最新项目做ES 统计 就分享一下:直接上代码 /** * 根据门类名称来分组统计 ,同时根据时间段获取数据 */ @Override public List<Map> esTjByMl(EsSearchDto esSearchDto) { List<Map> returnResult = new ArrayList<>(); String index = esSearchDto.getIndex(); try { SearchRequest
2022-01-05 10:49:07 2931
原创 读 Spring Boot实战笔记--day007
接上一章:读 Spring Boot实战笔记–day006声明式事务@Transactionalpublic void savesomething(Long id,String name) {//数据库操作}Spring 提供了一个@EnableTransactionManagement 注解在配置类上来开启声名式事务的支持。使用了@EnableTransactionManagement后,Spring 容器会自动扫描注解@Transactional@configuration@Enabl
2021-12-14 15:03:06 366
原创 读 Spring Boot实战笔记--day006
接上一节:读 Spring Boot实战笔记–day005Spring Boot优点:(1)快速构建项目;(2)对主流开发框架的无配置集成;(3)项目可独立运行,无须外部依赖Servlet容器;(4)提供运行时的应用监控;(5)极大地提高了开发、部署效率;(6)与云计算的天然集成。spring Boot 核心:入口类和@SpringBootApplication:Spring Boot通常有一个名为*Application 的入口类,入口类里有一个main方法,这个main方法其实就是一
2021-11-24 16:32:25 564
原创 读 Spring Boot实战笔记--day005
接上一节:读 Spring Boot实战笔记–day004自定义 HttpMessageConverter (http 信息转换器)HTTP 请求和响应的传输是字节流,意味着浏览器和服务器通过字节流进行通信。但是,使用 Spring,controller类中的方法返回纯 String 类型或其他 Java 内建对象。如何将对象转换成字节流进行传输HttpMessageConverter是用来处理request 和response里的数据的。Spring为我们内置了大量的HttpMessageConv
2021-11-19 17:46:00 485
原创 读 Spring Boot实战笔记--day004
接上一节:读 Spring Boot实战笔记–day003其他配置viewController 配置:package com.example.springboot.mvc;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.ModelAttr
2021-11-19 11:49:34 240
原创 读 Spring Boot实战笔记--day003
接上一章:读 Spring Boot实战笔记–day002测试测试是开发工作中不可缺少的部分。单元测试只针对当前开发的类和方法进行测试,可以简单通过模拟依赖来实现,对运行环境没有依赖;但是仅仅进行单元测试是不够的,它只能验证当前类或方法能否正常工作,而我们想要知道系统的各个部分组合在-起是否能正常工作,这就是集成测试存在的意义。集成测试一般需要来自不同层的不同对象的交互,如数据库、网络连接、loC 容器等。其实我们也经常通过运行程序,然后通过自己操作来完成类似于集成测试的流程。集成测试为我们
2021-11-15 19:09:24 601
原创 记录一下:ORA-39001参数值无效 ORA-39000转储文件说明错误...
从客户那里拿到的oracle dmp文件,一个文件大概13G1.首先查看是不是版本问题 高版本导出的dmp 导入低版本oracle 会出这个问题 ,查看自己的版本select * from v$version; 如果文件太大打不开 可以通过导出的日志查看用户oracle 版本:;;; Export: Release 11.2.0.4.0 - Production on Tue Aug 31 16:34:52 2021Copyright (c) 1982, 2011, Oracle and
2021-11-10 17:12:41 6621
原创 读 Spring Boot实战笔记--day002
Spring AwareSpring 的依赖注入的最大亮点就是你所有的 Bean对 Spring容器的存在是没有意识的。即你可以将你的容器替换成别的容器,如 Google Guice,这时 Bean之间的耦合度很低。但是在实际项目中,你不可避免的要用到Spring容器本身的功能资源,这时你的 Bean必须要意识到Spring容器的存在,才能调用Spring所提供的资源,这就是所谓的Spring Awareo其实 Spring Aware本来就是Spring 设计用来框架内部使用的,若使用了Spring
2021-11-06 15:10:48 130
原创 读 Spring Boot实战笔记--day001
Spring java bean 配置Java 配置是通过 @Configuration和 @Bean来实现的:@Configuration声明当前类是一个配置类,相当于一个 Spring 配置的xml文件。@Bean注解在方法上,声明当前方法的返回值为一个 Bean。如下:此处没有使用@Service声明 Bean。使用功能类的 Bean。//1package com.example.springboot;/** * @Author: hyh * @Date: 2021/10/7
2021-11-02 09:17:33 138
原创 记录一个vue 的引入两个组件有相同 ID 问题
最近做项目 遇到一个神坑,我的一个页面引入了两个组件,两个组件下有相同ID 的 div 如下这是我组件的 div 高拍仪组件和扫描仪组件都有 这个div<div width="100%" height="250px" id='ActiveXDivOne'></div>这是我的页面 引入了 扫描仪和高拍仪 通过 v-show 控制 <SMY v-show="showDiv('6')" ref="smyViewRef"
2021-09-15 14:23:58 2313
原创 effective-java-day001
考虑使用静态工厂方法替代构造方法下面是一些静态工厂方法的常用名称。以下清单这是列出了其中的一小部分:// from —— 类型转换方法,它接受单个参数并返回此类型的相应实例,例如:Date d =Date.from(instant);//of —— 聚合方法,接受多个参数并返回该类型的实例,并把他们合并在一起,例如:Set<Rank>faceCards = EnumSet.of(JACK, QUEEN, KING);//valueOf —— from 和 to 更为详细的替代.
2021-09-10 17:20:20 112
原创 记录一次mapper.xml 字符串判断的小坑
Integer queryDaNumByParam(@Param("timeType") String timeType, @Param("dazt") Integer dazt, @Param("tableName") String tableName);timeType 参数是字符串 和数字比较时 必须使用双引号 下面是错误的<select id="queryDaNumByParam" resultType="java.lang.Integer"> SELECT c
2021-09-07 09:26:52 577
原创 Redis入门指南 --day007
接上一章:Redis入门指南 --day006**集群**复制通过持久化功能,Redis保证了即使在服务器重启的情况下也不会损失(或少量损失)数据。但是由于数据是存储在一台服务器上的,如果这台服务器出现硬盘故障等问题,也会导致数据丢失。为了避免单点故障,通常的做法是将数据库复制多个副本以部署在不同的服务器上,这样即使有一台服务器出现故障,其他服务器依然可以继续提供服务。为此,Redis提供了复制(replication)功能,可以实现当一台数据库中的数据更新后,自动将更新的数据同步到其他数据库上。
2021-09-06 13:44:14 203
原创 Redis入门指南 --day006
接上一章:Redis入门指南 --day005管道客户端和 Redis使用TCP协议连接。不论是客户端向Redis发送命令还是Redis向客户端返回命令的执行结果,都需要经过网络传输,这两个部分的总耗时称为往返时延。根据网络性能不同,往返时延也不同,大致来说到本地回环地址(loopback address)的往返时延在数量级上相当于Redis处理一条简单命令(如LPUSH list123)的时间。如果执行较多的命令,每个命令的往返时延累加起来对性能还是有一定影响的。在执行多个命令时每条命令都需要等待
2021-09-06 08:59:16 157
原创 Redis入门指南 --day005
接上章:Redis入门指南 --day004实现缓存具体的设置方法为:修改配置文件的maxmemory参数,限制Redis最大可用内存大小(单位是字节),当超出了这个限制时Redis会依据maxmemory-policy参数指定的策略来删除不需要的键直到Redis占用的内存小于指定内存。maxmemory-policy支持的规则如表4-1所示。其中的LRU (Least Recently Used)算法即“最近最少使用”,其认为最近最少使用的键在未来一段时间内也不会被用到,即当需要空间时这些键是可以
2021-09-03 14:22:06 129
原创 Redis入门指南 --day004
事务Redis 中的事务(transaction)是一组命令的集合。事务同命令一样都是 Redis的最小执行单位,一个事务中的命令要么都执行,要么都不执行。事务的应用非常普遍,如银行转账过程中A给B汇款,首先系统从A的账户中将钱划走,然后向B的账户增加相应的金额。这两个步骤必须属于同一个事务,要么全执行,要么全不执行。否则只执行第一步,钱就凭空消失了,这显然让人无法接受。事务的原理是先将属于一个事务的命令发送给Redis,然后再让Redis依次执行这些命令。例如:127.0.0.1:6379&g
2021-09-01 08:54:46 137
原创 Redis入门指南 --day003
接上节继续获得集合中元素个数127.0.0.1:6379> smembers letters1) "b"2) "c"3) "a"127.0.0.1:6379> scard letters(integer) 3进行集合运算并将结果存储SDIFF target key key… 多个集合的差集 并将结果存储在 target中SINTER target key key… 多个集合的交集 并将结果存储在 target中SUNION target key key
2021-08-30 17:56:46 137
原创 读设计模式之禅--桥梁模式
定义:将抽象和实现解耦,使得两者可以独立地变化桥梁模式是一个非常简单的模式,它只是使用了类间的聚合关系、继承、覆写等常用功能,但是它却提供了一个非常清晰、稳定的架构桥梁模式是为了解决类继承的缺点而设计的。一个类想拥有另一个类的方法,可以不继承,只需要铺设一个桥梁(引用)架过去就OK了。package design.bridge;/** * @Author: hyh * @Date: 2021/8/30 14:21 * 抽象一个共享单车 **/public interface Shar.
2021-08-30 14:52:25 119
原创 读设计模式之禅--享元模式
定义:享元模式是池技术的重要实现方式,使用共享对象可有效地支持大量的细粒度的对象package design.share;import java.util.HashMap;/** * @Author: hyh * @Date: 2021/8/30 9:26 * 抽象一个共享单车 **/public abstract class ShareBicycle { // 使用用户姓名作为外部条件 一个用户对应唯一一个对象 protected final String use.
2021-08-30 14:50:49 105
原创 读设计模式之禅--解释器模式
定义:给定一门语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示来解释语言中的句子简言之:是一种按照规定语法进行解析的方案package interpreter;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.HashMap;import java.util.Stack;/** * @author hy.
2021-08-30 14:49:37 100
原创 读设计模式之禅--状态模式
定义:当一个对象内在状态改变时允许其改变行为,这个对象看起来像改变了其类。状态模式的核心是封装,状态的变更引起了行为的变更,从外部看起来就好像这个对象对应的类发生了改变一样环境角色有两个不成文的约束:把状态对象声明为静态常量,有几个状态对象就声明几个静态常量。环境角色具有状态抽象角色定义的所有行为,具体执行使用委托方式。package state;/** * @author hyh * @create 2021-08-28 11:05 * 抽象一个电梯 */public.
2021-08-30 14:47:17 132
原创 读设计模式之禅--访问者模式
定义:封装一些作用于某种数据结构中的各元素的操作,它可以在不改变数据结构的前提下定义作用于这些元素的新的操作。package design.visitor;/** * @Author: hyh * @Date: 2021/8/27 15:10 **/public abstract class Employee { private String name; private String sex; public String getName() { .
2021-08-30 14:45:20 115
原创 Redis入门指南 --day002
散列 我们现在已经知道Redis是采用字典结构以键值对的形式存储数据的,而散列类型(hash)的键值也是一种字典结构,其存储了字段(field)和字段值的映射,但字段值只能是字符串,不支持其他数据类型,换句话说,散列类型不能嵌套其他的数据类型 散列类型适合存储对象:使用对象类别和ID构成键名,使用字段表示对象的属性,而字段值则存储属性值。例如要存储ID为2的汽车对象,可以分别使用名为color、name和price的3个字段来存储该辆汽车的颜色、名称和价格。存储结构如图3-5所示。HSET k.
2021-08-26 09:23:49 143
原创 读设计模式之禅--备忘录模式
定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。通俗地说,备忘录模式就是一个对象的备份模式,提供了一种程序数据的备份方法package design.memorandum;/** * @Author: hyh * @Date: 2021/8/24 10:09 * 备忘录 **/public class Memorandum { private String state; public Memo.
2021-08-25 11:46:38 126
原创 Redis入门指南 --day001
启动redis直接启动 直接运行 redis-server 默认6379 端口redis-server --port 6378 可以指定端口启动redis_server /conf/redis.conf 可以通过指定配置文件启动redis 客户端:redis_cli -h 127.0.0.1 -p 6379 自定义地址和端口, 输入 PING 测试客户端是否正常连接常用命令:判断键是否存在 exists key1 存在返回 1 否则返回 0127.0
2021-08-24 09:15:45 118
原创 读设计模式之禅--门面模式
定义:要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。简言之:就是接口封装,隐藏实现细节。package design.facade;/** * @Author: hyh * @Date: 2021/8/23 14:18 * 定义一个快递接口 **/public interface Express { // 发什么东西 public void sendSomething(); // 填写快递单.
2021-08-23 15:11:49 115
原创 读设计模式之禅--观察者模式
定义:定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。package design.Observer;import java.util.ArrayList;/** * @Author: hyh * @Date: 2021/8/23 10:52 * 抽象一个 baby 类 **/abstract class Baby { private ArrayList<Elder> elders = new ArrayL.
2021-08-23 15:07:35 105
原创 读设计模式之禅--组合模式
定义:将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。简言之:就是将数据组装成树结构package design.Combination;import java.util.ArrayList;/** * @Author: hyh * @Date: 2021/8/21 17:36 * 举一个族谱 抽象一个家庭成员类 **/public abstract class FamilyMember { // 成员姓名 pr.
2021-08-23 15:06:12 108
原创 读设计模式之禅--迭代器模式
定义:它提供一种方法访问一个容器对象中各个元素,而又不需暴露该对象的内部细节。如果你是做Java开发,尽量不要自己写迭代器模式!省省吧,使用Java提供的Iterator一般就能满足你的要求了,迭代器现在应用得越来越广泛了,甚至已经成为一个最基础的工具。一些大师级人物甚至建议把迭代器模式从23个模式中删除,为什么呢?就是因为现在它太普通了,已经融入到各个语言和工具中了。package design.iterator;import java.util.Vector;/** * @Autho.
2021-08-21 15:45:38 81
原创 读设计模式之禅--适配器模式
定义:将一个类的接口变换成客户 端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。package design.Adapter;/** * @Author: hyh * @Date: 2021/8/20 9:03 * 抽象一个电脑接口 **/public interface Computer { // 充电 public void needCharge();}// usb 端口电脑class UsbComputer impleme.
2021-08-20 14:01:58 107
原创 读设计模式之禅--策略模式
定义:定义一组算法,将每个算法都封装起来,并且使它们之间可以互换。package design.Strategy;/** * @Author: hyh * @Date: 2021/8/19 14:04 * 抽象一个策略 **/public interface Strategy { // 执行 void excute(int a, int b);}// 加法class Add implements Strategy { @Override publ.
2021-08-19 17:30:01 98
原创 读设计模式之禅--装饰模式
定义:动态地给一个对象添加一些额外的职责。 就增加功能来说,装饰模式相比生成子类更为灵活。package decorate;/** * @author hyh * @create 2021-08-18 22:34 * 抽象一个演讲 */public abstract class Speech { public abstract void taiking();}// 英语演讲class EnglishSpeech extends Speech{ @Override.
2021-08-19 08:51:42 139
原创 读设计模式之禅--责任链模式
定义:使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止。package design.ResponsibilityChain;/** * @Author: hyh * @Date: 2021/8/18 15:26 * 抽象一个请求处理类 **/public abstract class Handler { // 下一个处理者 private Handler nextHandler;.
2021-08-19 08:48:22 83
空空如也
ES 动态表 通过logstach 动态构建索引
2021-08-06
TA创建的收藏夹 TA关注的收藏夹
TA关注的人