- 博客(40)
- 资源 (7)
- 收藏
- 关注
原创 悲观锁与乐观锁
每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,可以使用版本号机制和CAS算法实现。悲观锁,在每次读取数据的时候总是认为别的事务会更改数据,所以会加锁,导致其他事务想访问当前数据时,会阻塞等待。当竞争激烈(出现并发冲突的概率大)时,悲观锁更有优势,因为乐观锁在执行更新时频繁失败,需要不断重试,浪费CPU资源。悲观锁和乐观锁是并发场景下解决冲突问题的两种思想。
2024-07-26 17:50:56 100
原创 java 集合
hashmap只能有一个key为null,底层是hashmap的linkedhashmap,hashset,linkedhashset也是。treeMap不能存在为null的key,以treeMap为底层的treeSet也是。hashtable的key和value都不能为null。
2024-01-26 11:03:39 52 1
原创 高内聚低耦合
定义:相关的功能逻辑组织在一起,组成一个紧密耦合的单元。这样的组织单元内部的元素相互依赖,协同完成一定的功能逻辑。比如用户相关的功能放在用户模块,商品相关的功能放在商品模块。定义:模块之间的依赖程度要低,一个模块的改变不容易到影响其他模块的正常执行。
2024-01-21 09:04:19 410
原创 vue 学习笔记
2.5) beforeUpdate:数据更新之前调用,此时data中数据的状态值已经更新为最新的,但是页面上显示的数据还是最原始的,还没有重新开始渲染DOM树。2.2)Created:vue实例初始化之后调用,这个阶段vue实例在内存中已经创建好了,data和methods也能够获取到了,但是模板还没编译。2.6) updated:数据更新之后调用,此时data中数据的状态值是最新的,而且页面上显示的数据也是最新的,DOM节点已经被重新渲染了。1)定义:vue实例从创建到销毁的过程。
2023-12-18 13:34:35 122
原创 nacos 学习笔记
4.2)订阅注册中心的服务并注册一个listener,如果注册中心的服务有变更,由listener来通知服务消费者更新本地服务列表。3)如果注册中心长时间没有收到服务提供者的心跳,则剔除该实例或把监控状态设置为false。2)服务提供者注册成功后,定时发http请求(即心跳)到注册中心,证明自身服务实例可用。1)服务提供者启动时把服务注册到nacos注册中心。5)服务消费者获取服务相关信息进行远程调用。4.1)一种是主动请求注册中心获取服务列表。
2023-12-18 11:07:07 110
原创 分布式学习笔记
1)一致性: 同一时间访问所有节点得到的数据都是一样的,提交事务时,数据同步到所有的节点后,才算事务提交成功。分布式系统无法同时满足强一致性,可用性和分区容错性,设计中往往需要弱化某个特性的需求。3)分区容错性:出现网络分区故障时,故障的节点不应该影响其他节点提供服务。4.1)牺牲一致性(AP):继续提供服务,故障节点恢复时,再同步数据。4.2)牺牲可用性(CP):拒绝提供服务,直到故障节点恢复。2)可用性:系统可以一直处理请求,并在正常时间内处理完。
2023-12-18 09:44:22 63
原创 nodejs事件循环
从上到下执行同步代码执行过程中将宏任务和微任务添加至对应的队列中同步代码执行完后执行微任务的回调微任务执行完后,执行所有满足条件的宏任务的回调注意:每执行完一个宏任务之后,立即检查微任务队列循环时间操作
2023-12-05 16:53:55 54
原创 http 与 grpc
2)和http1.1 一样,浏览器可以同时打开多个并行连接减少这种停顿,增加了总体的吞吐量,但增加了服务器的负担。4)TCP实现可靠性的恢复时间长,效率低,在一个TCP连接上传输,就会有头部阻塞的问题。1)H0L阻塞:仍然在一个TCP连接上,恢复一个段的丢失,仍然要停止所有后续对象的传输。2)任何传输丢失,都会对后续的传输造成影响,毕竟恢复丢失需要花一些时间。2)将对象分割成多个帧,调整这些帧的传输次序来缓解头部阻塞。5)支持头部压缩,用编码表示相同的头部,减少传输的数据量。2)HOL阻塞的问题依然存在。
2023-11-22 08:34:48 68
原创 函数式编程的优缺点
副作用是指它不是一个单纯的计算,而是涉及到一个与外部进行交互的一个过程,比如调用一些外部的API,或者做一些IO的操作,它不是一个单纯的计算,它的输出不仅仅取决于你调用这个计算时所给的输入,它还依赖外部的环境条件。变量的值是不可变的,一但赋予了它某个的值,它的值就不会再改变,这种编程方式使程序员能够更好的进行分析,也就是不会出现某些全局变量的修改,能够修改这些变量的方式有很多种,导致你整个程序的行为是不确定度,增加了这个分析的难点。定义:函数式编程是一种编程范式,和面向过程,面向对象是同一个范畴的概念。
2023-10-23 10:38:35 213
原创 常用加密算法
5)安全分析:任何人都可以利用公钥加密,把信息发给自己,但只有自己的解密,其他人截获了也没有用(无法查看,也无法篡改)4)适用场景:身份识别,防篡改,比如文件下载,需要对文件内容进行信息摘要,防止被截取,返回恶意文件。6)适用场景:服务与服务之间的加密,只需要一个相同的密钥 比如;4)缺点:密钥管理难度大,必须双方约好一个密钥,而且每个用户的密钥不能相同。1)作用:主要作用不是加密,而是生成信息摘要,防止信息被篡改。1)定义:有一对密钥:公钥,私钥,公钥加密,私有解密。3)优点:加密解密快,
2023-06-28 14:38:43 59
原创 koa 动态更改路由中间件
(ctx, next)=>{if(ctx.path.startsWith(‘/api/v1/auth’)){ctx.request.query.fileKey = ctx.path.substring(‘/api/v1/auth’.length);ctx.routerPath = ‘/api/v1/auth’;ctx.path = ‘/api/v1/auth’;}return next();}
2023-06-08 16:09:46 64
原创 liunx 查找命令
liunx 在打开的文件查找关键字:命令模式下/关键字,查找下一个点n保存退出:wq! 不保存退出:q!linux 查找某目录下包含关键字内容的文件:grep -r “test” /data/reports
2023-04-20 10:34:59 47
原创 在javascript中,slice与splice的区别
众所周知,Javascript中的数组是能够保存多个值的变量,我们有多种方法来处理数组。其中最常用的是 slice 和 splice,有时人们会混淆这两者。因此,在本博客中,我们将了解这两种方法以及它们之间的区别。slice() 方法用于返回一个包含该数组的一部分的新数组,它不修改原始数组,而是返回一个新数组。case5: 当结尾大于索引范围时,它将提取它直到 arr.length。在这种情况下,返回最后 3 个元素。case 6: 这里它返回从第二个到最后一个元素的第三个元素。
2022-09-15 10:00:07 2779
原创 node 缺失依赖
报错:gyp ERR!gyp ERR!gyp ERR!gyp ERR!gyp ERR!gyp ERR!gyp ERR!gyp ERR!gyp ERR!gyp ERR!gyp ERR!
2022-08-12 14:48:28 248
原创 node 简单连接mongodb
@[TOC]mongodb的简单使用const http = require(‘http’);const mongose = require(‘mongoose’);const { runInNewContext } = require(‘vm’);mongose.connect(‘mongodb://localhost:27017/user’,function(err){if(err){console.log(‘连接mongodb失败’)}else{console.log(‘连接mongo
2020-11-18 10:00:34 101
原创 离线下载安装node插件
项目内库项目的内库直接把开发环境的包都带上就行了,不需要npm install再装一次全局库主要问题还是在全局库的离线安装上,例如forever这类的工具。在一台可以在线install的机子把目标库install下来,然后在 /path/to/nodejs/lib/node_modules 里面找到刚才下载的库文件夹,这个文件夹里面库需要的依赖都已经下好的了。把找到的库文件夹传到离线的机...
2019-11-19 19:20:06 509
原创 nodeJS与java的性能比较
在处理原始计算任务方面,Node.js并不比Java快;一旦涉及到IO型任务,Java就没有竞争力了。也就是说,在典型的Web应用程序执行的任务类型场景中,Node.js运行速度确实比Java更快。为了更好的理解Node.js如何完胜Java,需要考虑到3个性能因素:IO,并发和计算。这三大因素对于提高应用程序的整体运行速度和吞吐量都是有影响的。1、IO根据servlet规范,Java在早...
2019-11-15 00:15:29 6954 1
原创 java 创建桌面快捷方式
private void createDesktopShortcut() {try {/** if(Platform.getInstance().isQualcomm()) { return; }*/if(Station.getInstance().isStationTOOL()) {return;}String desktop = FileSystemView.getFileSy...
2019-11-13 10:34:17 847
原创 java 开机自启exe文件
private void startFolderMethod() {if(Platform.getInstance().isQualcomm()) {return;}String savePath = “”;String osName = System.getProperty(“os.name”);String userHome = System.getProperty(“user.h...
2019-11-13 10:32:32 442
原创 java 重启exe文件
public class ReStartExeUtil {public static boolean reStart(String filepath, String pidName, int waitingTime) {BufferedReader reader = null;try {Runtime runtime = Runtime.getRuntime();Process pro ...
2019-11-13 10:30:07 339
原创 抽象类与接口的区别
接口和抽象类都是抽象的,都不能实例化,都可以用来做设计,都可以包含抽象方法。接口只提供了形式,而未提供任何具体的实现,抽象类可以有具体实现。抽象类是普通类与接口之间的一种中庸之道,是一个过渡地带接口的侵入性小,因为接口可以多实现,而继承是单根性,在都可以使用的前提下通常优先考虑接口尽管在构建具有某些未实现方法的类时,你的第一想法可能是创建接口,但抽象类仍然是用于此目的的一种重要而必须的工...
2019-08-04 19:41:36 107
原创 枚举
enum Season{SPRING,SUMER,AUTUMN,WINTER;} 相当于Class Season{private static final Season SPRING = new Season();private static final Season SUMER= new Season();private static final Season SUME...
2019-08-04 16:21:42 86
原创 Java 序列化
概念:序列化:把对象转为字节序列的过程称为对象的序列化反序列化:把字节序列恢复为对象的过程称为对象的反序列化。为什么序列化?1.持久存储时,如果保存到文件中或者是数据库中。2.网络传输对象时通过RMI传输对象时如何实现序列化实现方式:实现Serializable接口遇到的问题transient 修饰的属性,不会被序列化静态static的属性,不会序列化实现这个Serial...
2019-08-04 11:00:44 75
原创 Android 开发实现短信验证
Mob是免费的短信验证平台,利用该平台最主要的是注册之后获取到的AppKey和AppSecret。官网:http://www.mob.com/操作步骤如下:1.下载官方sdk,并复制到libs目录下2.在build.gradle中添加如下部分3.在清单文件AndroidManifest.xml中添加权限4.代码实现:4.1获取验证码,通过该函数会向手机发送验证码SMSSDK.g...
2019-08-04 10:10:39 353
原创 redis读写分离
1.是什么?主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主。2.能干嘛?读写分离容灾恢复3.这么玩3.1 配从不配主3.2 从库配置:slaveof 主库IP主库端口:每次与master断开之后,都需要重新连接,除非你配置进redis.conf文件Info replication...
2019-04-18 00:43:26 324
翻译 秒杀解决方案
一、秒杀业务分析1.1 需求分析所谓“秒杀”,就是网络卖家发布一些超低价格的商品。所有买家在同一时间网上抢购的一种销售方式,通俗一点讲就是网络商家为促销等目的组织的网上限时抢购活动,由于商品价格低廉,往往一上架就被抢购一空,有时只用一秒钟。秒杀商品通过有两种限制:库存限制,时间限制。需求:(1)商家提交秒杀商品申请,录入秒杀商品数据,主要包括:商品标题、原价、秒杀价、商品图片、介绍等信息。...
2019-04-15 16:40:32 221
翻译 数据库连接池
1.什么是数据库连接池?提供数据库管道操作对象且管理数据管道对象的使用的这么一个集合就是数据库连接池架构。.池化技术体现(资源池模式的思想:缓存有备无患)1.解决了峰值请求过来的时候,我们数据库连接池架构有一些预备存量来削峰。2.用完之后,做一个状态标记,标记该管道是否目前被占用3.减少更多临时new管道4.设定最大提供管道的限制5.总结:保证DB在高并发场景下面高效稳定的运行。...
2019-04-15 15:53:43 90
原创 NoSQL入门与概述
一、互联网时代背景下,为什么用nosql?1.单机MYSQL的美好年代 在90年代,一个网站的访问量并不大,用单个数据库完全可以轻松应付。更多的是静态页面,动态交互类型分网站并不多。数据存储的瓶颈:a.数量的总大小一个机器放不下b.数据的索引(B+Tree)一个机器的内存放不下c.访问量(读写混合)一个实例不能承受2.Memcached+MySQL+垂直拆分...
2019-04-08 01:56:46 221
原创 事物
事务:对于一个工作逻辑单元的一系列操作,要么全部执行,要么完全不执行。对于执行了一半出现异常的情况,可以通过回滚的操作,返回到完全不执行的状态。创建一个自定义列表MarkdownText-to-HTML conversion toolAuthorsJohnLuke如何创建一个注脚一个具有注脚的文本。1注释也是必不可少的Markdown将文本转换为 HTML。KaTeX数学...
2018-12-14 15:22:37 201
mysql-5.7.25-winx64.zip
2020-06-10
vsual studio 提取码.txt
2020-02-10
ios开发-swift快速入门.zip
2019-10-04
mysql-5.7.25-winx64.zip
2019-05-28
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人