自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(20)
  • 资源 (1)
  • 收藏
  • 关注

原创 线程的学习

public class SynchronizedDemo {static Integer count=0;public static void incr(){synchronized (count) {try {Thread.sleep(1);} catch (InterruptedException e) {e.printStackTrace();}count++;}}public static void main(String[] args) throws IOExcepti

2023-03-09 17:59:39 85

原创 简易RPC框架

微服务已经是每个互联网开发者必须掌握的一项技术。而 RPC 框架,是构成微服务最重要的组成部分之一先看一下简易rpc的调用流程server端,通过自定义注解标记实现服务的注册(可以通过实现BeanPostProcessor在before之前进行处理,将标记的类存放到一个路由类的Map集合中,后续通过调用key来查找),client通过通过自定义注解标记实现服务的调用及参数的返回等,通过java的object对象输入输出流实现通信,在server端接收到后,去路由类匹配对应的类和方法,通过反射调用方法返回

2023-03-09 17:59:26 113

原创 mysql学习记录-B+树索引篇

首先这个不符合最左匹配,按理说是不能使用联合索引的,但这里的select值决定了是可以使用的;而这里是需要using where的,因为在这个联合索引中是没有排好序的(不明白的就去查一下“最左匹配原则”),所以必须对这棵联合索引树进行“全表扫描”,存储引擎层扫描完后将所有的结果发送到了服务器层,这时服务器层需要使用b=1来进行过滤,所以就有了using where;如果索引的数据/当前的数据 < 10% ,索引是不合理的。临时表分:外部临时表、内部临时表(sql产生的临时表)查询当前表及当前索引的记录数。

2023-03-03 14:38:25 124

原创 mysql 学习记录-基础

在页的设计中有一个页目录的定义,page Directory,页目录中存储页记录中划分的每个小组中最后一条记录的地址偏移量,这些偏移量称之为槽(slot),这样查找数据时就不用遍历页中的每一条记录,只需要通过二分法遍历槽中的位置,同理很多页之间也会进行一个归类将页号、偏移量等信息归类用一个页去存储(这样就形成了一个树)从而实现快速查询,如下图所示。关键在于记录头信息的设计,记录了当前行的删除状态,在B+树上的信息,指向下一条记录的相对位置信息等,下图为二进制位代表的含义。

2023-03-02 14:21:59 67

原创 集合相关学习Map、List、Set

HashMap分析通过数组+链表的方式组合构成,通过hash的方式找到数组的下标hash碰撞问题 -> 多个key通过hash运算后得到同一个数组下标线性探索(开放寻址法)多个不同的key通过hash函数运算之后落到同一个是数组下标的位置 解决方案: 1、线性探索(开放寻址法),ThreadLocal运用线性探索解决 2、链式地址法 ,hashMap中运用到的 3、再hash法(通过多个hash函数)->布隆过滤器 4、建立公共溢出区hashMap通过链表的方式解决hash冲突

2021-08-31 21:52:26 81

原创 Redis 相关学习笔记

redis基本数据结构string -> 通过动态字符串sds实现,set nxhash ->1、 当满足hash对象小于512,且value长度小于64byte时使用ziplist实现;2、 当不满足时使用hashTable + dict 实现,会存在两个hash表一个存储数据一个为空,为空的为扩容做准备,触发扩容条件 -> 当hash碰撞时数组下的链表长度超过扩容因子的时候,此时会进行扩容rehash可以实现商品购物车list -> 有序的列表,元素允许重复,最大数

2021-08-27 00:20:54 127

原创 java 8 map convert anthor map ,通过转换成有序的LinkedHashMap,获取key值对应的下标

`` Map<String,Integer> 转成有序的排行榜 TreeMap<String, Integer> public static Integer getStatisticRank(String id, Map<String, Integer> idCntMap , Integer rank){ TreeMap<String, Integer> collect = idCntMap .entry

2020-12-17 16:22:04 1502

原创 zipOutputStream压缩后用RAR解压出现“不可预料的压缩文件末端”错误

最近需要压缩做一个多重压缩文件的需求,出现了一个不可预料的压缩文件末端错误代码: public void getBatchDocDownload(HttpServletRequest request, HttpServletResponse response,DownloadDocReq downloadDocReq) throws Exception { List<GroupReq> groupReqList = downloadDocReq.getGroupReqs();

2020-11-13 20:25:06 1320

原创 关于EasyPoi动态复合表头及需要统计合并数据

直接进入主题,pom文件需要引入最新版本,旧版本有bug,千万不能使用!!! <dependency> <groupId>cn.afterturn</groupId> <artifactId>easypoi-spring-boot-starter</artifactId> <version>4.2.0</version>

2020-10-23 17:12:44 1062 3

原创 序列化与反序列化,微服务之间的通信

如何实现跨JVM传递对象####### 序列化,把一个对象转化为特定的形态,然后以数据已逇方式传输;xml,jsonobject->json格式->传输(json字符串转化的数据流)【减少对象的大小,实现对象传递的跨平台/语言】####### 反序列化数据流->json格式->objectjava中的序列ObjectInputStream 对象输出流ObjectOutputStream 对象输入流实现Serializable...

2020-06-28 13:37:34 798

原创 java远程通信之socket、selector、select/poll/epoll/BIO/NIO/AIO的理解

服务与服务之间的通信,在Java领域中有很多可实现远程通讯的技术,例如:RMI、MINA、ESB、Burlap、Hessian、SOAP、EJB和JMS等。远程通信之socket代码demopackage com.socket.demo;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import j

2020-06-17 16:36:43 683

原创 线程池的设计与原理解析

线程池的设计与原理解析什么是线程池池化技术,比如连接池(数据库、redis)有若干个连接放入池中,这样可以提升性能容器中有若干线程,线程可以进行复用如果是通过new Thread()当我们方法的请求量比较大的时候,且方法的执行时间比较长(当方法中有IO操作的时候)会导致几个问题,消耗内存资源,CPU的开销(上下文切换)线程池大小的设置1)CPU密集型->保持和CPU核心数量一致 8CORE 8个线程2) IO密集型->多设置一些,设置CORE*2(线程池设定的线程等待时间+线程C

2020-06-03 22:49:41 298 1

原创 深入分析阻塞队列以及原子操作等并发工具

CountDownLatch 工具使用,类似于join的功能可以通过CountDownLatch 去控制线程的结果和等待AQS的共享锁机制CountDownLatch countDownLatch = new CountDownLatch(3);这里的3肯定存储在state中阻塞/唤醒-》AQS-》AQS队列 private void doAcquireSharedInterruptibly(int arg) throws InterruptedException {

2020-06-02 22:02:28 157 1

原创 nginx设置https、代理及websocket连接60s自动关闭

申请域名,首先要先备案申请成功之后会提供一个压缩下载文件,如下截图打开nginx目录下面有两个 SSL 证书文件将这两个文件上传至/usr/local/nginx/conf/目录下,通过ps -ef | grep nginx进行把进程关闭然后进入源文件夹下/usr/local/nginx-1.17.9/执行./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

2020-06-02 17:38:39 1993

原创 springboot @Cacheable和通过RedisTemplate之间去相互获取数据

文章目录@Cacheable和通过RedisTemplate之间去相互获取数据通过继承CachingConfigurerSupport并且开启@EnableCaching去设置cache的配置通过RedisCacheConfiguration.defaultCacheConfig()去设置序列化的方式RedisTemplate@Cacheable和通过RedisTemplate之间去相互获取数据@Cacheable注解存储redis缓存数据和通过RedisTemplate去获取存储的数据,由于@Cache

2020-06-02 09:48:48 3045 1

原创 ConcurrentHashMap jdk1.8源码讲解

先了解Hash表例如:ThreadLocal->hash表1、hash函数->MD5/SHA2、通过hash函数来计算数据位置的数据结构3、数组[]存在hash冲突问题多个不同的key通过hash函数运算之后落到同一个是数组下标的位置解决方案:1、线性探索(开放寻址法),ThreadLocal运用线性探索解决2、链式地址法 ,hashMap中运用到的3、再hash法(通过多个hash函数)->布隆过滤器4、建立公共溢出区jdk1.7->1.8hashTabl

2020-05-31 22:55:51 229

原创 设计模式之桥接模式

桥接模式(Bridge Pattern)也称为桥梁模式、接口模式或者柄体(handle and body)模式,是将抽象部分与它的具体实现部分分离,使他们都可以独立地变化,属于结构型模式。桥接模式主要目的:通过组合的方式建立两个类之间的联系,而不是继承。但又类似于多重继承方案,但是多重继承方案往往违背了类的单一职责原则,复用性比较差,桥接模式是比多重继承更好的替代方案。桥接模式的核心在于解耦抽象和实现。优点:1、分离抽象部分及其具体的实现部分2、提高系统的扩展性3、符合开闭原则4、符合合成复用原

2020-05-31 16:05:47 117

原创 并发编程之condition的使用以及原理解析

abstractQueuedSynchronizerCAS (原子性、可见性、有序性)1、加入volatile保证可见性2、cas()保证原子性:Atomic来保证原子性,在内部会调用缓存锁3.缓存锁(MESI、总线锁)多个线程并行访问内存的更改Condition条件控制await调用await方法将线程放入到Condition队列中 public final void await() throws InterruptedException { if (Thread

2020-05-29 23:09:04 258

原创 设计模式之适配器模式

适配器模式又叫做变压器模式,它的功能是将一个类的接口变成客户端所期望的另一个接口,从而使原本接口不匹配而导致无法在一起工作的两个类能够一起工作。属于结构型设计模式。适配器模式的使用场景1、已经存在的类,它的方法和需求不匹配的情况2、适配器模式不是软件设计阶段考虑的设计模式,是随着软件维护,由于不同产品、不同厂家造成功能类似而接口不相同情况下的解决方案。(类似于一种后期的修改方案,符合开闭原则,主要是解决兼容问题)类适配器 不满住最小知道原则对象适配器 通过构造方法传入原角色符合最小知道原则接口适

2020-05-26 23:40:00 162

原创 java并发包java.util.Concurrent之ReentrantLock.lock源码分析

lock锁在源码中是怎么设计的?1)、首先要有互斥的条件,通过一个volatile修饰的变量来标记锁是否被占用 volatile state (0无锁,1有锁,>1 重入锁)2)、当线程抢占失败时,要进行等待和唤醒,释放CPU时间片资源3)、等待队列资源的存储(通过数据结构存储)4)、可重入特性(通过线程的ThreadId来判读是否为当前线程)5)、公平非公平(能否插队)从源码中分析:互斥的条件...

2020-05-26 00:13:09 120

基于jsp+servlet开发的电子商务平台

电子商务购物平台 概要设计说明书 1引言 作为互联网战略的延伸,电子商务的热潮一度兴起,但是一直以来,很多企业网站都局限在信息发布等一些基本的功能,而越来越深入的实践表明,这些仅仅代表了企业网站的一个起点功能。随着企业网络环境的发展成熟,企业门户网站可以帮助企业把现有的业务系统整合起来,集中优势资源为客户提供个性化服务,并为企业创建一个良好的收入渠道。 1.1编写目的 锻炼本阶段学校的成果,让我们更加的熟练运用所学的知识,对应web开发的流程更加的清晰,增加了我们对servlet的理解。 1.2背景 网上购物是电子商务的重要组成部分。网上购物就是通过互联网检索商品信息,并通过电订购单发出购物请求,然后填上私人支票帐号或信用卡的号码,厂商通过邮购的方式发货,或是通过快递公司送货上门。国内的网上购物,一般付款方式是款到发货(直接银行转帐,在线汇款)。担保交易(淘宝支付宝,百度百付宝,腾讯财付通等的担保交易),货到付款等 2总体设计 2.1运行环境 Jdk1.7 Tomcat7.0.61 Oracle 11g 2.2软件功能框架图 基于jsp+servlet开发的电子商务购物平台 3相关设计 3.1类框图(必须包括DAO相关类框图) 基于jsp+servlet开发的电子商务购物平台 1.1编写目的 锻炼本阶段学校的成果,让我们更加的熟练运用所学的知识,对应web开发的流程更加的清晰,增加了我们对servlet的理解。 2未完成功能说明 重置用户所有密码 3安装与初始化 3.1可执行程序安装运行说明 前台登录url:http://localhost:8080/EbProject/ 后台管理登录url:http://localhost:8080/EbProject/admin/AdminIndex.jsp 3.2数据库安装说明 百度安照教程去操作http://jingyan.baidu.com/article/ed15cb1b785b1c1be3698105.html 3.3初始数据说明 前台登录账号与密码, 账户0002密码2222 后台登录账号与密码 账户Admin密码8888 普通管理员: 账户0008密码8888 4操作简要说明 结合项目效果图说明操作步骤,每一个功能对应一张效果图 基于jsp+servlet开发的电子商务购物平台基于jsp+servlet开发的电子商务购物平台基于jsp+servlet开发的电子商务购物平台基于jsp+servlet开发的电子商务购物平台基于jsp+servlet开发的电子商务购物平台基于jsp+servlet开发的电子商务购物平台

2017-03-20

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除