- 博客(77)
- 收藏
- 关注
原创 逻辑题 :谁是凶手?
乙进不去作案现场,我们从(3) 乙是凶手,一定可以进去作案现场,但现在乙进不去,我们推出,乙不是凶手,所以 推出B取反 (这我猜想就是老师说的公式吧 比如说 B -> E 就有 B取反 -> E取反)(B - > E 如果E取反就能推出 B取反)非A(A我们假设是凶手)推出 B 并 C(并集是开口往上,交集是开口往下 )也就是乙或者是凶手,或者是知情人,并集就是他可以是知情人,可以是凶手,或者俩者都是,不过凶手肯定是知情人…这里列出的 (1)(2)(3)(4)(5)都是题中给出的,我们通过公式描述。
2024-06-11 11:44:49 871
原创 多线程打印
缺点:效率低,会出现浪费的竞争。比如说,一直是偶数线程拿到锁,进行判断后不满足条件,就不会去执行打印语句,然后跳出,这样的话很多次竞争拿到锁是没有意义的。线程 1 输出 a 5 次,线程 2 输出 b 5 次,线程 3 输出 c 5 次。● 第二,如果有些干扰线程错误地 notify 了 wait 线程,条件不满足时还要重新等待,使用了 while 循环来解决 此问题。优点:效率高,一个线程拿到锁就去打印,打印完,唤醒其他线程,自己就休眠,每次的竞争都是有意义的。比如,必须先 2 后 1 打印。
2024-06-09 18:24:57 324
原创 JDK1.6、1.7、1.8内存区域的变化和String str=“aaa“与 String str=new String(“aaa“)一样吗?new String(“aaa”);创建了几个字符串对象
创建了两个对象,一个在堆中的StringObject对象,一个是在堆中的“3”对象,并在常量池中保存“3”对象的引用地址。在常量池中寻找与s3变量内容相同的对象,没有发现“33”对象,在常量池中创建“33”对象,返回“33”对象的地址。创建了两个对象,一个在堆中的StringObject对象,一个是在堆中的“2”对象,并在常量池中保存“2”对象的引用地址。在常量池中寻找与s变量内容相同的对象,发现已经存在内容相同对象“2”,返回对象“2”的引用地址。s 被初始化为一个新的字符串对象,内容为 “2”。
2024-06-09 18:16:43 984 1
原创 Mybatis源码剖析---第三讲
是个类的对象,而不是接口的对象,所以这块我们才推导出这个对象,应该是这个接口实现类的对象。由于我们方法中还存在一些toString()方法,wait()方法,notify()方法,这些都是派生于Object,这些不需要sqlSession进行处理,所以这块匹配的就是Object的类的方法进行处理,另一个就是对默认方法进行的处理。是典型的动态代理就是。左边的login()方法调用右边的login()方法,典型的RPC,dubbo对此进行了封装,左边是右边的代理人,增加了什么功能呢,数据传输和网络连接。
2024-05-28 12:18:09 750
原创 从0开始带你成为Kafka消息中间件高手---第五讲
如果你现在创建一个Topic,肯定会分配几个Partition,每个partition还会指定几个副本,这个时候创建的过程中就会在zookeeper中注册对应的topic的元数据,包括他有几个partition,每个partition有几个副本,每个partition副本的状态,此时状态都是:NonExistentReplica。每个partition的副本在哪台机器上呢?包括你的kafka集群的各种元数据,比如说每台机器上有哪些partition,谁是leader,谁是follower,是谁来管理的?
2024-05-27 23:49:20 748
原创 从0开始带你成为Kafka消息中间件高手---第四讲
接着follower再次发送fetch请求过来,自己的LEO = 1,leader发现自己LEO = 1,follower LEO = 1,所以HW更新为1,同时会把HW = 1带回给follower,但是此时follower还没更新HW的时候,HW还是0。我们生产环境遇到的一些问题,kafka,机器层面,某台机器磁盘坏了,物理机的磁盘有故障,写入性能特别差,此时就会导致follower,CPU负载太高了,线程间的切换太频繁了,CPU忙不过来了,网卡被其他的程序给打满了,就导致网络传输的速度特别慢。
2024-05-27 23:47:50 980
原创 从0开始带你成为Kafka消息中间件高手---第三讲
每次leader发送数据给follower的时候,都会发送自己的HW值,然后follower获取到leader HW之后,就会跟自己的LEO比较一下,取里面小的那个值作为自己的HW值,换句话说,如果follower的LEO比leader HW大了,那么follower的HW就是leader HW。offset = 0 ~ offset = 4,LEO = 5,代表了最后一条数据后面的offset,下一次将要写入的数据的offset,LEO,你一定要明白他的名词。
2024-05-26 08:41:21 788
原创 从0开始带你成为Kafka消息中间件高手---第二讲
通过副本partition可以继续体统这个partition的数据写入和读取,这样就可以实现容错了,这个副本partition的专业术语叫做follower partition,所以每个partitino都有多个副本,其中一个是leader,是选举出来的,其他的都是follower partition。这个过程里,发生了好几次上下文切换,而且还涉及到了好几次数据拷贝,如果不考虑跟硬件之间的交互,起码是从os cache到用户缓存,从用户缓存到socket缓存,有两次拷贝是绝对没必要的。
2024-05-26 08:38:40 904
原创 从0开始带你成为Kafka消息中间件高手---第一讲
京东,我平时比较喜欢用的是京东,送货很快,自营商品,都是放在自己的仓库里,送货很快,用的比较多的是,直男,买东西都是开门见山的,女孩儿不一样,女同志,喜欢逛网站,她喜欢在网站里上下浏览,看网站推荐的一些东西。磁盘随机写,你要随机在文件的某个位置修改数据,这个叫做磁盘随机写,性能是很低的,磁盘顺序写,仅仅追加数据到文件末尾。假设每天有50万个订单,商品(价格、库存、信息),订单,评价,售后,积分,促销,很多其他的数据,每天新增的都是以订单为核心的一些数据,每天都有的增量数据,其他的数据都是围绕订单来的。
2024-05-26 08:38:17 686
原创 Mybatis源码剖析---第二讲
然后executor可以进行对数据库进行操作,对缓存进行处理,对事务进行操作,具体对数据库的操作由statementhandler来做,通过parameterhandler进行参数处理,resultsethandler进行数据库的返回,相关类型由typehandler来进行控制,statementhandler封装了statement,resultsethandler封装了resuletset,至此我们流程就通了。它是不是还有缓存的操作 所以实际上executor他做的是三件最主要的工作。
2024-05-25 15:37:20 1394
原创 微信支付篇---用户支付订单
因为cetus项目还没有发布,没有固定网址,所以我们写程序的时候,这个回调地址可以先随便写一个,等将来我们把cetus项目部署在腾讯云上面,再把这个回调通知地址改成真实的网址即可。body参数是商品的概要描述,这个内容你可以随便写,是给支付订单做备注的,一般写的都是商品的名称。spbill_create_ip参数是终端的IP地址,这里我们上传Cetus主机的IP地址即可,你写什么IP地址,都不会影响到微信支付的。mch_id参数是商户号,申请微信支付的时候,可以在微信商户平台的网站上面得到商户号。
2024-05-25 08:47:42 640
原创 Mybatis源码剖析---第一讲
和其他相关的对象,你用configuration就可以了,你要想获得某一个具体的标签,它相关的内容你是不是有map pedstatement对象就够了?任何一个mybatis应用都有configuration和n个mappedstatement,而每一个mappedstatement,它对应的就是一个一个的标签至此,核心对象数据存储这块的内容,我就给大家分析完了。在这儿你一定要注意,它封装的是这些标签,那这些标签\的内容是和mybatis的mappedstatement一一对应的,而且哎。
2024-05-24 21:08:52 954
原创 从0开始回顾MongoDB
MongoDB 是在2007年由DoubleClick公司的几位核心成员开发出的一款分布式文档数据库,由C++语言编写。目的是为了解决数据大量增长的时候系统的可扩展性和敏捷性。MongoDB要比传统的关系型数据库简单很多。在MongoDB中数据主要的组织结构就是数据库、集合和文档,文档存储在集合当中,集合存储在数据库中。MongoDB中每一条数据记录就是一个文档,。文档类似于 JSON 对象,它的数据结构被叫做BSON。
2024-05-23 09:29:14 717
原创 从0开始回顾ElasticSearch
Lucene是Apache软件基金会Jakarta项目组的一个子项目,提供了一个简单却强大的应用程式接口,能够做全文索引和搜寻。在Java开发环境里Lucene是一个成熟的免费开源工具。就其本身而言,Lucene是当前以及最近几年最受欢迎的免费Java信息检索程序库。但Lucene只是一个提供全文搜索功能类库的核心工具包,而真正使用它还需要一个完善的服务框架搭建起来进行应用。Elasticsearch和Solr,这两款都是基于Lucene搭建的,可以独立部署启动的搜索引擎服务软件。
2024-05-23 09:27:45 1186
原创 消费系统故障导致的RocketMQ百万消息积压问题,应该如何处理
此时,我们可以临时修改这4个消费者的代码,让它们在捕获到消息后,不写入NoSQL,而是直接将消息写入一个新的Topic。新的Topic和消费者:为新的Topic创建更多的MessageQueue,并部署相应数量的消费者实例来消费这些消息并写入NoSQL数据库,以提高处理能力,使用一个新的Topic来允许更多的消费者系统并行处理。数据库的压力管理:在扩容消费者的同时,我们必须确保NoSQL数据库能够承受临时增加的5倍读写压力,因为原来只有4个消费者在读写数据库,现在临时变成了20个。
2024-05-22 12:39:50 622
原创 访问域名报The requested url was not found on this server.
官网首页点击控制台 -> 搜索域名注册 -> 点击我的域名 -> 在记录管理下删除第一行记录类型为txt的解析记录。这个问题是由于购买了CDN加速,但没有配置导致的。再次输入域名,成功访问。
2024-05-22 12:24:04 2627
原创 微信支付篇---微信账号登陆小程序
如果商户系统接收到的请求里面没有OpenID值,或者OpenID值跟数据库里面的对不上,就说明这不是一个合法的用户。因为我们搭建的后端项目,整合了Shiro和JWT技术,所以成功登陆小程序的用户,后端系统都会返回一个Token字符串。我们先要实现支付流程,首先必须要做的是,给小程序实现微信登陆的功能。各位同学你仔细想一想,如果是POSTMAN软件,或者HTTPClient这样的客户端程序,模拟小程序发出请求,他们根本都不是真实的用户,而且也没有登陆小程序,所以商户系统必须要加以判断。
2024-05-20 14:30:11 1197 1
原创 微信支付篇---小程序支付接口原理说明
既然这些重要的材料应该保存在商户系统上面,那么申请创建支付订单的请求,就应该由商户系统发出了,各位同学,你说是这个道理吧。在微信平台眼中,商户比微信用户更值得信任,这是因为想要开通微信支付,必须要通过企业认证,而微信用户是不需要实名认证的。然后商户系统,会把支付订单的参数,返回给小程序。使用微信支付,那么就要在微信平台生成支付订单,注意这个支付订单微信平台上面的,跟电商平台的购物订单不是一回事儿。微信平台收到这些信息之后,核实之后没有问题,那么微信平台上面就会生成支付订单,并且把订单的信息返回给商户系统。
2024-05-19 22:58:04 945
原创 SpringMVC
SpringMVC是一个基于Java实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的及部分,简化开发,减少出错,方便组内开发人员之间的配合。MVC● Model(模型):数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型或JavaBean组件(包含数据和行为),不过现在一般都分离开来:Value Object(数据Dao)和服务层(行为Service)。
2024-04-01 19:08:07 1129
原创 从0开始回顾MySQL---事务四大特性
针对快照读(普通 select 语句),是通过 MVCC 方式解决了幻读。针对当前读(select … for update 等语句),是通过 next-key lock(记录锁+间隙锁)方式解决了幻读。我举例了两个发生幻读场景的例子。第一个例子:对于快照读, MVCC 并不能完全避免幻读现象。因为当事务 A 更新了一条事务 B 插入的记录,那么事务 A 前后两次查询的记录条目就不一样了,所以就发生幻读。
2024-03-15 21:26:50 1011
原创 贪心(基础算法)--- 货仓选址
若P < Q,则每把仓库的选址向右移动1单位距离,距离之和就会变少Q - P.同理,若P > Q,则仓库的选址向左移动会使距离之和变小。题目要求的是n个商店与货仓的距离之和s最小,那么我们可以先来看看当商店如何选择才能使得s最小?把A[0]~A[N-1]排序,设货仓在X坐标处,X左侧的商店有P家,右侧的商店有Q家。当N为偶数时,仓库建在A[(N -1)/2]~A[N / 2]之间处都可。因此仓库应该建在中位数处,先把A进行排序,我们数组从0开始,当N为奇数时,货仓建在A[N /2]处,
2024-03-04 13:26:49 545 1
原创 贪心(基础算法)--- 牛马耍杂技
一头牛只撑不住的可能性取决于它头上所有牛的总重量(不包括它自己)减去它的身体强壮程度的值,现在称该数值为风险值,风险值越大,这只牛撑不住的可能性越高。也就是比较W(i) - S(i + 1)(交换前 ) 和W(i + 1) - S(i)(交换后)W(i) - S(i + 1)(交换前 ) > W(i + 1) - S(i)(交换后)W(i) - S(i + 1)(交换前 ) < W(i + 1) - S(i)(交换后)也就是 W(i) + S(i) < W(i + 1) + S (i + 1)
2024-03-04 11:55:39 837
原创 从0开始回顾Mysql --- MySQL初体验
大白话从0开始回顾MySQL,去除了一些繁琐的操作的演示以及内容,如MySQL安装等,本篇文章适合复习MySQL语法,学习MySQL语句,对MySQL不太熟练的同学,希望对大家有一些帮助。
2024-03-03 17:54:01 1268 1
原创 贪心(基础算法)--- 区间选点
遍历区间,如果当前区间左端点不包含在前一个区间中,则选取新区间,所选点个数加1,更新当前区间右端点。为证明 Ans == Cnt ,我们只需证明 Ans >= Cnt , Ans = 4。:在遍历其他区间的时候,同时更新区间右端点取最小值。既然Ans为最小数量,易得Ans
2024-03-03 17:49:56 788 1
原创 从0开始学Docker ---Docker安装教程
本安装教程参考Docker官方文档,地址如下:1.卸载旧版2.配置Docker的yum库首先要安装一个yum工具3.安装Docker最后,执行命令,安装Docker4.启动和校验。
2024-02-08 19:22:32 944
原创 从0开始学Git指令(3)
现在的情景是,你已经在本地创建了一个Git仓库后,又想在GitHub创建一个Git仓库,并且让这两个仓库进行远程同步,这样,GitHub上的仓库既可以作为备份,又可以让其他人通过该仓库来协作,真是一举多得。在GitHub上的这个learngit仓库还是空的,GitHub告诉我们,可以从这个仓库克隆出新的仓库,也可以把一个已有的本地仓库与之关联,然后,把本地仓库的内容推送到GitHub仓库。为什么Fatal呢,找找原因,原来我们用的是https的链接,但我们需要用的是ssh的链接,我们试着修改重新绑定。
2024-01-11 13:46:23 998
原创 从0开始学Git指令(2)
Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git resetore --staged ,就回到了场景1,第二步按场景1操作。因为我们创建Git版本库时,Git自动为我们创建了唯一一个master分支,所以,现在,git commit就是往master分支上提交更改。
2024-01-10 20:38:32 982
原创 SpringSecurity完整认证流程(包含自定义页面和自定义登录逻辑)
retrieveUser() 的具体实现在 DaoAuthenticationProvider 中,代码如下:当我们成功的读取 UserDetails 后,下面开始对其进行认证:在上图中,我们可以看到认证校验分为 前校验、附加校验和后校验,如果任何一个校验出错,就会抛出相应的异常。所有校验都通过后,调用 createSuccessAuthentication() 返回认证信息。
2024-01-09 19:13:18 1192
原创 Swagger快速入门
官网:https://swagger.io/Swagger 是一个规范和完整的Web API框架,用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。功能主要包含以下几点:A. 使得前后端分离开发更加方便,有利于团队协作;B. 接口文档在线自动生成,降低后端开发人员编写接口文档的负担;C. 接口功能测试;使用Swagger只需要按照它的规范去定义接口及接口相关的信息,再通过Swagger衍生出来的一系列项目和工具,就可以做到生成各种格式的接口文档,以及在线接口调试页面等等;
2023-12-25 20:58:56 1416
原创 从0开始学会nvm管理工具(node卸载,nvm安装以及使用)
在工作中,我们可能同时在进行2个或者多个不同的项目开发,每个项目的需求不同,进而不同项目必须依赖不同版本的NodeJS运行环境,这种情况下,对于维护多个版本的node将会是一件非常麻烦的事情,nvm就是为解决这个问题而产生的,他可以方便的在同一台设备上进行多个node版本之间切换。
2023-12-24 18:05:06 1094
原创 npm常见错误
npm ERR! code ELIFECYCLEnpm ERR! errno 1npm ERR! phantomjs-prebuilt@2.1.15 install: `node install.js`npm ERR! Exit status 1npm ERR! npm ERR! Failed at the phantomjs-prebuilt@2.1.15 install script.npm ERR! This is probably not a problem with npm. Ther
2023-12-24 17:45:43 1022
原创 2023IDEA报错:Error:java: Compilation failed: internal java compiler error 解决办法
取消勾选使用Java 9 and later之后编译,并确认jdk版本。
2023-12-23 23:37:54 737
7z2107-x64.zip
2023-07-28
Everything-1.4.1.10fd17.x64-Setup.zip
2023-07-28
史上最好用鹅截图,贴图工具,没有之一
2023-07-28
用户管理系统(javase完成的无界面)
2023-07-28
自习室座位预约系统(预约座位)
2023-07-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人