自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

笔记小屋

新奇的事物总是吸引着爱冒险的人们!Good Luck!

  • 博客(219)
  • 资源 (8)
  • 收藏
  • 关注

原创 领域模型的代码结构梳理

工程结构介绍模块依赖关系 -------------- | | | common | | | ------------

2022-08-23 20:36:32 401

原创 系统设计注意事项

系统设计

2022-07-17 14:12:09 436 1

原创 互联网技术同学如何写PPT

每天都在写材料

2022-07-16 11:06:21 344

原创 kafka与消息队列

kafka定义Apache kafka is a distributed streaming platform,即官方定义 kafka 是一个分布式流式计算平台。而在大部分企业开发人员中,都是把 kafka 当成消息系统使用,即它是一个分布式消息队列,很少会使用 kafka 的流式计算。消息队列的特点模式这个模式主要是针对消费者来讲的,生产者是无模式概念说法的,生产者生产消息都是主动的。点对点pull模式,消费者主动拉取消息,消费者根据自身性能,消费的快就多拉消息,消费的慢就少消费,同时pul

2022-01-22 16:15:39 1738 1

原创 背包问题九讲的总结

背包问题的奇妙设计

2022-01-16 18:06:44 176

原创 线程池submit方法如何获取执行结果

FutureTask 来获取线程结果

2022-01-15 21:22:20 1603

原创 DDD领域驱动设计:概念解析

高内聚、低耦合

2022-01-15 20:09:49 336

原创 mysql一些刁难的查询问题

1、SQL18 获取当前薪水第二多的员工的emp_no以及其对应的薪水salaryselect e.emp_no, s.salary, e.last_name, e.first_namefrom salaries as sjoin employees as e on e.emp_no = s.emp_nowhere s.salary = (select s1.salary from salaries as s1 join salaries as s2 on s1.salary <= s

2022-01-02 17:26:30 579

原创 秒杀场景设计核心:热点数据

秒杀场景遇到的问题

2021-12-12 15:35:35 547

原创 mysql事务提交前,索引会更新吗

前言今天突然奇想,想着如果开启了一个事务,这个事务是修改一条数据记录的索引字段数据,那么这个事情索引会不会立马更新掉,还是等事务提交后再更新我的理解我理解是会立马更新的,因为一般来说除了串行化这种隔离级别,其他隔离级别都是支持并行的,某种程度上是可以读取到其他事务的东西,只不过RC这个隔离级别采取了MVCC,但其实还是会更新数据,只不过通过版本链来控制数据透出,所以这里还是会更新索引的,这样就存在下面两个情况本事务内还可以根据索引字段搜索到数据其他事务根据索引查不到数据另一个问题索引更新这

2021-12-12 12:23:45 1168

原创 selenium爬虫

selenium调取浏览器来访问网站,获取网站的相关信息,除了淘宝、京东这类爬取数据难搞,其他都还好,今天我们看下如何实现这类代码逻辑,安装库包// 利用安装pip安装pip install jupyter// 打开 jupyterjupyter notebook 1、下载selenium模块:    pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple selenium    或者在pycharm中下载2、安装浏览器驱动

2021-11-30 00:13:16 127

原创 分布式架构关于数据分页问题

分布式数据库的分页方案业界难题-“跨库分页”的四种方案ES分页看这篇就够了

2021-11-14 15:56:13 4561

原创 CurrentHashMap设计

1.7 VS 1.8JDK1.7中,采取的是 Segment分段锁(继承ReentrantLock分段锁锁来实现的,1.8采取的是Node+CAS+Synchronized实现线程安全,为什么这么设计锁粒度降低了不采用 segment 而采用 node,锁住 node 来实现减小锁粒度。官方对synchronized进行了优化和升级,使得synchronized不那么“重”了如果是线程并发量不大的情况下,那么Synchronized因为自旋锁,偏向锁,轻量级锁的原因,不用将等待线程挂起,

2021-11-07 23:57:58 383

原创 领域模型的模型结构

common层通用工具层domain层定义抽象的领域模型,抽象领域的能力和entity,resource层提供具体的领域层的实现类,外部接口、表操作相关的各类Repository类,Adaptor层适配domain层与外部层的处理逻辑Repository外部接口、表操作相关接口,dao、mapper等,静态变量、常量biz业务层flow层业务工作流,里面操作各类domainHandler层外部的消息处理层schedule定时任务层apid

2021-08-22 15:11:16 351

原创 设计模式的区别

适配器与装饰器模式的区别装饰器与适配器都有一个别名叫做 包装模式(Wrapper),它们看似都是起到包装一个类或对象的作用,但是使用它们的目的很不一一样。适配器模式的意义是要将一个接口转变成另一个接口,它的目的是通过改变接口来达到重复使用的目的。装饰器模式不是要改变被装饰对象的接口,而是恰恰要保持原有的接口,但是增强原有对象的功能,或者改变原有对象的处理方式而提升性能。所以这两个模式设计的目的是不同的。适配器模式:一个适配允许通常因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口

2021-08-15 17:05:01 156

原创 Comparable与Comparator排序对比

Comparable接口,一般是采取实现类接口compareTo方法的方式来达到内部排序的目的。也就这一个方法,一般也叫做自然排序,也就是实现了就只能按照这个排序规则,不能随意更改排序规则。例子:public class Book implements Comparable<Object> { // 定义名为Book的类,默认继承自Object类 public int id;// 编号 public int compareTo(Ob

2021-07-11 16:29:36 246

原创 mysql为什么使用索引、什么时候不使用索引

不加索引没有索引,整张表读取数据,然后利用数据来比较条件,捞出符合条件的数据,表有很多数据,这些数据都会通过磁盘IO来读取,很耗时。加索引加索引后 ,通过索引可以找到主键,根据主键id去聚簇索引里读取数据,更准确的找到数据所在的页,减少磁盘IO。总结手段是加索引,目的是减少磁盘IO。...

2021-06-14 14:39:16 765

原创 mysql锁事

select 语句 需要加锁的只有2种场景:加排他锁可以使用select …for update语句加共享锁可以使用select … lock in share mode语句

2021-05-26 18:55:07 104

原创 mysql MVCC不能避免幻读

幻读并发情况下,A事务读取了一条记录,此时B事务插入一条记录,A事务又读取,读到了两条数据,此时就造成了读取数据不一致,一般到这幻读通常说的是事务提交了,而且是指删除、插入带来的问题。问题mysql MVCC 多版本并发控制中我们介绍了什么是MVCC,MVCC会为每个事务生成一个某个时间点的快照数据,保证事务内可以避免每次读数据不一致的问题,是RC、RR隔离级别下用于提高数据库性能,避免频繁锁,读写分离实现的一种方式,既然读快照信息,那么是不是MVCC就可以避免幻读,因为事务已经有了快照数据,如果这样

2021-05-17 09:52:14 855

原创 区块链是什么

区块链区块链本质上是一个去中心化的分布式账本数据库。区块链解决什么问题区块链解决信任问题,就是一旦写进去的数据,不能随意篡改,或者说没法篡改,也就保证数据一定是本人操作的,里面的数据也都是正确的,因为没人可以篡改,但中心化的账本会有一个管理员,管理员可以篡改数据,比如银行给你多转了100元,银行会把100元收回去,所以管理员如果天抽风,账号清零多恐怖。区块链构成只要了解区块链,才能知道为什么它解决了信任问题,首先它是一个数据库,也就是里面可以存储数据,数据格式是什么呢?难道跟我们的表结构一样,需要

2021-05-16 15:34:44 426

原创 jvm YGC是如何识别要回收的对象?

问题我们通常说jvm识别垃圾对象有两个方法:引用计数法可达性分析老年代肯定是用的可达性分析,先标记GC roots,然后依据这些根对象来做遍历访问,能够访问的对象就是活的对象,其他对象就是没有引用的对象,可以回收,那么针对年轻代的垃圾回收,它是如何来标记的?可达性分析首先,引用计数法无法解决循环引用的问题,几乎不被采纳,可达性分析是一个比较好的方法,所以答案是YGC采用的也是可达性分析方法来做垃圾回收处理。那么YGC和FGC是都是可达性分析,也都要找GC Roots,那么2者找到的root集

2021-04-24 15:07:01 350

原创 tair缓存学习

前言Tair主要有mdb,rdb,ldb三种存储引擎。定位 应用场景mdb 缓存类似于memcache 业务中当缓存用(后端有DB之类的数据源)。集团内绝对多数cache服务都是采用的tair mdb。rdb cache缓存采用了redis的内存存储结构。支持k/v,list,hash,set,sortedset等复杂数据结构。 业务需要高速访问某些数据结构,例如用户存储(set);一个商品的多个属性(hashmap);消息队列(list)等。ldb 高性能存储,可选内嵌mdb cache

2021-04-11 16:08:13 1201

原创 Java 每天一个小bug :判断字符串是否为正整数的正确方法

public static boolean isNumericZidai(String str) { for (int i = 0; i < str.length(); i++) { System.out.println(str.charAt(i)); if (!Character.isDigit(str.charAt(i))) { return false; } ...

2021-04-08 09:49:50 742

原创 LRU算法

LRU算法LRU算法全称是 Latest Recently Used。其含义是在内存有限的情况下,内存使用后容量不足时,为了保证程序的运行,这时就不得不淘汰内存中的一些对象,释放这些对象占用的空间,那么选择淘汰哪些对象呢?LRU算法就提供了一种策略:淘汰最久未使用的对象。举个例子:一共3个单位的对象空间,现在进来了A、B、C,然后再插入D,空间满了,A是最早进来的,且未重复使用,LRU算法会把A淘汰掉。实现LRU算法最为精典的实现,就是HashMap+Double LinkedList。HashM

2021-03-28 14:42:58 297

原创 为什么 java wait/notify 必须与 synchronized 一起使用

为什么 java wait/notify 必须与 synchronized 一起使用这个问题就是书本上没怎么讲解,就是告诉我们这样处理,但没有解释为什么这么处理?我也是基于这样的困惑去了解原因。synchronizedwait/notify这两个是Java对象都有的属性,表示这个对象的不用synchronized 会怎么样lost wake up参考博客为什么 java wait/notify 必须与 synchronized 一起使用,jvm究竟做了些什么面试官:为什么wait()方法要

2021-03-23 09:16:01 2509 1

原创 redis各种模式优缺点对比

主从模式客户端可对主数据库进行读写操作,对从数据库进行读操作,主数据库写入的数据会实时自动同步给从数据库。slave初始化第一步:slave启动后,向master发送SYNC命令,master将快照信息给到slave节点,并利用缓冲区来记录持续的写请求slave初始化第二步:收到快照信息完成初始化,slave初始化第三步:将缓冲区写请求给到slave节点,slave接收命令并执行,完成复制初始化开始同步写请求,master收到写请求后,同步给slave节点优点读写分离:master能自动

2021-03-10 09:59:25 1594

翻译 kafka到底会不会丢消息?

前言网上很多文章都有讲解Kafka是如何保证不丢失消息的,但是真正的不丢消息吗?特别是当我看到broker写消息是写入内存中,也就是操作系统页缓存中,我就在想,如果这个时候物理机重启,内存东西都没了,消息不久没有了吗,于是带着这个疑问去找了很多资料,我们今天就谈谈到底会不会丢消息。丢消息的三个场景1、生产者发消息给Kafka Broker2、Kafka Broker 消息同步和持久化3、Kafka Broker 将消息传递给消费者1、生产者发消息给Kafka Broker生产者

2021-03-06 14:13:56 287

原创 kafka架构生产、消费、broker如何分工

分工合作我们将kafka的分成三个部分:生产者存储Broker消费者然后看看这三个部分都分别做什么事情。kafka生产者都干了什么事情这是一张生产者大图,我们可以从一下几点来看下:KafkaProducer:生产消息对消息塞上Topic、分区、key、消息内容等数据。这里就可以了解到消息分区的逻辑其实是在客户端这边处理的,并不是在broker上确定分区的,这里主要看分区计算的逻辑:对于指定了 key 的消息,partition 位置的计算方式为:Utils.murmur2(ke

2021-02-28 17:49:17 312

原创 彻底理解 IO 多路复用实现机制

多路复用IO 多路复用是一种同步IO模型,实现一个线程可以监视多个文件句柄;一旦某个文件句柄就绪,就能够通知应用程序进行相应的读写操作;没有文件句柄就绪就会阻塞应用程序,交出CPU。其中多路是指网络连接,复用指的是同一个线程利用单线程采用select\poll\epoll等等系统调用获取 fd 列表,遍历有事件的 fd 进行 accept/recv/send ,使其能支持更多的并发连接请求。文件描述符FD文件描述符(File descriptor)是计算机科学中的一个术语,是一个用于表述指向文件的引

2021-01-17 18:36:47 491

原创 缓存与数据库数据一致性探索

改数据改数据的时候就删除缓存,并做数据库修改操作选项:可以对缓存key做锁处理查数据查数据 先查缓存,再查库,由于之前更改了记录,所以缓存无数据,这个时候走库,将库的数据插入到缓存中,这样下次用户查数据,就都是走缓存,利用缓存兜住。这样弊端就是很多人同时查库,而且都是第一次,这样导致穿库,但也还好。另一个方案cv:缓存版本号dv:数据库版本号每次写入 给cv一个时间戳,写...

2021-01-02 16:48:20 274

原创 5分钟一个算法编程小点:顺序去重

题目:316. 去除重复字母要求去重字符串中的字符,还要保留字符原本中的顺序,第一点好理解,第二天不太好理解,什么意思呢?bcabcb、c 要去掉一个,保留原本的顺序,得到最小的字符串,应该是后缀三个字符 :abcbcadbc答案是adbc,这里主要在d的位置已经固定,不能打乱原本字符在输入字符中的位置解法:数组+栈这里涉及到两个数组,一个数组来标示那些已经字符访问过了,另一个字符来标示字符数量,通过栈的特性:后进先出的特点,从前到后比较数据,如果碰到字符比较小的数据,栈就自动pop字符,

2020-12-20 21:33:14 121

原创 协程概念

协程的诞生线程切换在IO密集型的程序中由于IO操作远远小于CPU的操作,所以往往需要CPU去等IO操作。同步IO下系统需要切换线程,让操作系统可以再IO过程中执行其他的东西。这样虽然代码是符合人类的思维习惯但是由于大量的线程切换带来了大量的性能的浪费,尤其是IO密集型的程序。异步IO所以人们发明了异步IO。就是当数据到达的时候触发我的回调。来减少线程切换带来性能损失。但是这样的坏处也是很大的,主要的坏处就是操作被 “分片” 了,代码写的不是 “一气呵成” 这种。 而是每次来段数据就要判断 数

2020-11-29 16:34:58 3192 2

原创 聊聊一个电商优惠券产品形态

优惠券形式我们经常浏览淘宝、京东等电商平台,可以领取优惠券来购买商品,像双11有很多满减优惠券,及无门槛的叠猫猫购物红包等,这些其实都是一种营销手段,本文来解析如何来实现一套优惠券方案。优惠券方案1、优惠券基本信息优惠券基本信息主要分为两个方面:派发 和 使用派发派发是指优惠券可以领取的时间范围、领取方式(唯一兑换码、通用兑换码)、总的派发数量、单日派发数量、领取指定用户(会员、新用户等)、每人领取限制、派发渠道(app、小程序)等。使用使用就是具体的优惠券的使用时间、满足条件及优惠金额、

2020-11-28 18:59:51 679

原创 单例模式多线程引发的思考

单例模式内存屏障和重排序单例模式中懒汉式的方式中,其中提到了双重校验锁的内容,比直接在方法上枷锁要好,但很多博客写的都有问题,他们忽视了内存屏障和指令重排序,一般是要给变量加volatile关键词,我们先看下正确的写法:public class Singleton { /** * 该函数限制用户主动创建实例 */ private Singleton() {} privat...

2020-11-08 16:25:16 182

原创 线程池一些知识解答

线程池如何保持线程复用其实开启一个线程后,再线程的run 方法中 写一个循环,执行一个任务后就从队列中获取任务对象Worker,Worker对象是线程池定义的对象,一个Worker对象中都有一个线程,可以任务Worker的多少就表明线程的多少,不过代码里没有利用Worker集合的大小来做判断,而是利用了AtomicInteger对象来控制线程数量。每一个任务 也都是一个Runnable对象在线程池里每一个任务也都是一个可执行的Runnable对象,在线程的run 方法中执行 task.run()方法

2020-11-08 15:42:55 170 1

原创 5分钟思考网络模型:IO、BIO、NIO

IOIO其实指的是Input/Output,是指输入输出,主要用来传输数据,各个设备之间的数据传输,那么为何慢慢有了很多IO?NIO、BIO、AIO等,这些都是其实现形式,基于不同的操作系统机制来包装的IO模型,我们慢慢就会知道这些模型的区别。IO流的分类根据处理数据类型的不同分为:字符流和字节流根据数据流向不同分为:输入流和输出流字符流和字节流字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象。本质其实就是基于字节流读取时,去查了指定的码表。 字节流和字符流的区别:读写单

2020-11-02 10:13:42 209

原创 bug分享:跨国项目中时间戳引发的问题

问题一个面向多国家的电商网站,商家在后台网站设置时间,被后台校验拦截,其拦截的代码如下:代码payStartTime().compareTo(startTime) >= 0 && payStartTime().compareTo(endTime) <= 0这里的时间 payStartTime、startTime、endTime 都是Date的时间,后面发现商家看到的时间跟国内商家客服看到的时间不一致,由此引发了对时间的思考。时间戳这个时间也是大家比较熟悉的,例如Sy

2020-10-29 22:14:19 1039

原创 5分钟一个算法编程小点:链表判断是否有环,并且给出环的位置

问题:链表链表结构,判断是否有环解决方法:快慢双指针经典的双指针方法,一个指针每次向后移动两个节点,一个指针每次向后移动一个节点,如果链表有环,最终两个指针会碰到一起,主要问题:有环链表,能找出环的切入口节点吗?也是利用快慢双指针,不过技巧在于,第一次相遇后,如果从头节点再来一个慢指针,两个慢指针相遇的节点就是入口节点,有点抽象,我们来形象描述一下,如下图:这是第一次相遇的时候,我们根据快慢指针可以得到公式:2∗(k+m)=k+L+m2k+2m=k+L+mk=L−m\begin{align

2020-10-11 14:22:41 166

原创 Redis 底层数据结构

前言redis对外有一些5种基本类型,内部其实还是用的自己封装的数据结构,这篇文章主要是讲解数据结构的。简单动态字符串(SDS)链表字典跳跃表整数集合压缩列表简单动态字符串(SDS)参考博客...

2020-09-22 10:08:34 95

原创 Java 生产者消费者代码

介绍生产者和消费者模式是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此并不直接通信,而是通过阻塞队列进行通信,所以生产者生产完数据后不用等待消费者进行处理,而是直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列中获取数据,阻塞队列就相当于一个缓冲区,平衡生产者和消费者的处理能力。单个线程实现生产者消费者生产者:import java.util.List;public class Producer implements Runnable{ private Lis

2020-09-22 09:29:39 2074

【新人赛】快来一起挖掘幸福感!

【新人赛】快来一起挖掘幸福感!https://tianchi.aliyun.com/competition/entrance/231702/information

2019-07-08

PotPlayer64位v.1.7.13622

有一次需要找个视频播放软件,发现这个PotPlayer真的太好用了,但是下载太慢了,官网下载就很缓慢,其他国内网站的资源很流氓,会有其他乱七八糟的软件绑架,网络及其不稳定,好不容易下载好了,分享到csdn中,方便大家下载。

2018-08-08

时间轴插件

时间轴插件,可以展示数据

2017-07-20

捕鱼达人文档和源码

捕鱼达人文档和源码

2015-12-27

asp.net 视频播放、利用flexpaper+swtools实现文档在线浏览

2015年本人的毕业设计,关于网页设计,其中有几个功能不错,其中是一个视频播放功能,然后就是文档转化为PDF然后转化为SWF最后在网页上浏览,代码没带数据库,但是有基础的人应该可以看懂,功能可以是实现,我自己测试过,你们要改数据库的连接语句,当然也是总结论坛大神的结晶,感谢大神的指导,5分不多,希望大家体贴我的努力。

2015-05-22

类似QQ的局域网聊天系统

利用VC++编写的关于局域网聊天系统,利用SOCKET编程,点对点利用TCP,广播采用UDP。

2015-01-04

超市管理系统

方便超市管理,有进货售货功能,还有经销商信息,员工信息,商品信息。界面还行,可自行修改。

2015-01-04

空空如也

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

TA关注的人

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