- 博客(103)
- 资源 (35)
- 收藏
- 关注
原创 AI人工智能-Jupyter Notbook&Pycharm:Py开发
如果你的ipynb文件,执行顺序不是按照从上到下写的,比如刚才定义、输出2的两段代码,别人执行可能会报错,这是因为别人执行的顺序是按照从上到下执行的,在第一行代码 - print("Hello World")上面增加新的内容。在代码 - print("Hello World")下面增加新的内容。我们平常做实验,希望在自己的文件夹下进行操作控制该如何做呢?前面数字代表第几次执行,数字越小越早执行。其实这个页面显示的内容,是我们电脑目录。- 选中代码所在代码框,敲键盘b。- 选中第一行代码框,敲键盘a。
2025-03-29 21:58:18
801
原创 Python - Anacond软件:安装、管理python相关包
有两种管理python包的方式,一种是通过pip管理用pip安装的包、另一种是通过conda管理用conda安装的包!可以看到,通过conda方式安装,如果会分析关联的软件包是否需要更新!以上操作是通过代码完成的,下面通过图形化操作完成上面操作!如果没有pip\pip.ini,可以创建一个。删除旧环境,需要先退出当前环境。通过conda list查看。克隆需要"重命名"的环境。通过pip list查看。通过conda查看安装包。通过pip查看安装包。
2025-03-28 01:50:08
340
原创 六、Redis集群搭建
CRC16算法产生的 hash 值有 16bit,该算法可以产生 2^16-=65536 个值。换句话说,值是分布在 0~65535 之间。那作者在做mod运算的时候,为什么不mod65536,而选择mod16384?对于这个问题,作者给出了解答。如果槽位为65536,发送心跳信息的消息头达8k,发送的心跳包过于庞大。两个 Redis 节点之间进行通信的时候,会定期发送 PING/PONG 消息,交换数据信息。交换的数据信息,由消息体和消息头组成。
2025-02-26 17:16:57
240
原创 五、Redis哨兵监控
主从模式中,当主节点宕机之后,从节点是可以作为主节点顶上来继续提供服务,但是需要修改应用方的主节点地址,还需要命令所有从节点去复制新的主节点,整个过程需要人工干预。于是,在 Redis 2.8 版本开始,引入了哨兵(Sentinel)这个概念,在上,哨兵实现了。Redis Sentinel 是分布式系统中监控 Redis 主从服务器,并提供主服务器下线时自动故障转移功能的模式。
2025-02-26 16:30:05
562
原创 四、Redis主从复制与读写分离
当主节点重启恢复后,从节点发起全量复制流程,此时主节点会为从节点创建RDB快照,如果在快照创建完毕之前,有多个从节点尝试与主节点进行全量同步,那么其他的从节点将共享这份RDB快照。master生成RDB同步到slave,slave加载RDB这段时间里,master的所有写命令都会保存到一个复制缓冲队列里(如果主从直接网络抖动,进行部分复制也是走这个逻辑),待slave加载完RDB后,拿offset的值到这个队列里判断,如果在这个队列中,则把这个队列从offset到末尾全部同步过来,这个队列的默认值为1M。
2025-02-26 16:06:19
732
原创 MQTT+SpringBoot2+Emqx实战
*** emqx的配置工具类*/@Slf4j@Resource/*** mqtt的连接*/@Bean//设置相关的属性//心跳//清空曾经连接的客户端信息//qosString playload ="设备断开连接";/*** paho factory ,把上面的mqtt的自定义连接放入factory工程中,便于连接需要*/@Bean/*** 开启连接通道*///// }/**
2025-02-25 00:29:33
988
原创 三、Redis持久化
Redis是一个内存数据库,可以将数据存储在内存中,并且读写速度比传统的将数据存储在磁盘上的数据库快得多,但是一旦进程退出,Redis的数据将丢失。为了解决此问题,Redis提供了两种持久性方案RDB和AOF,以将内存中的数据保存到磁盘并避免数据丢失。
2025-02-24 20:26:49
966
原创 二、Redis基本数据类型
散列相当于Java中的HashMap,内部是无序字典。实现原理跟HashMap一致。一个哈希表有多个节点,每个节点保存一个键值对。与Java中的HashMap不同的是,rehash 的方式不一样,因为 Java 的 HashMap 在字典很大时,rehash 是个耗时的操作,需要一次性全部 rehash。Redis 为了高性能,不能堵塞服务,所以采用了渐进式 rehash 策略。
2025-02-24 17:33:24
825
原创 一、Redis快速入门
Redis 是一个开源(BSD许可)的,中的数据结构存储系统,它可以用作。它支持多种类型的数据结构,如散列(hashes)列表(lists)集合(sets)与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。Redis 内置了复制(replication),LUA脚本(Lua scripting),LRU驱动事件(LRU eviction),事务(transactions)和不同级别的, 并通过。
2025-02-24 17:16:51
580
1
原创 七、高性能队列Disruptor原理剖析
解释 :1)EventFactory - 事件工厂,类似前面的MyEventFactory;2) ringBufferSize - RingBuffer有多长;3)ThradFactory - 线程工厂,参考前面讲过的线程工厂内容;4)ProductType - 生产者类型,枚举:SINGLE(一个)还是(MULTI)多个;5)WaitStrategy - 等待策略,Product和Handler的处理速度是不匹配的,所以这里设置的是Handler在等待时,执行什么策略。
2025-02-22 13:20:46
883
原创 六、线程间的协作原理场景剖析
解释:1.Future只提供了异步线程的结果返回,并没有提供回调机制;2.无法编排任务,处理有依赖关系的任务;3.无法处理有竞争的任务,比如实现最快的任务结束直接返回。/*** @Description:Future的不足*///生成订单的三个步骤//1 查询商品信息//2 查询用户信息//3 生成订单//查询商品信息try {});//查询用户信息try {return "小明";});//生成订单try {});try {
2025-02-19 22:02:49
664
原创 五、线程池原理剖析与实战
/自定义线程池(带返回值)// System.out.println("线程执行了");// });// return "CallAble返回值";// });如果没有传,使用默认拒绝策略演示示例:/***///演示默认拒绝策略TimeUnit.SECONDS,new ArrayBlockingQueue<>(1),new MyThreadFactory("订单业务"));
2025-02-18 01:05:43
824
原创 四、并发容器的线程安全性与实战
原理: 计算key的hash值,确定存放位置。参考:Java进阶:HashMap底层原理(通俗易懂篇)_java hashmap底层原理-优快云博客、数据覆盖问题:解释(红框内代码): 如果多线程同时保存数据(hashcode相同),都会走到628行,第一个线程会执行保存数据操作,第二个线程会执行覆盖操作。ConcurrentHashMap与HashMap数据结构都是数组+链表+红黑树,与HashMap不同的是, ConcurrentHashMap可以在并发环境下操作。读操作使用volati
2025-02-17 12:10:00
660
原创 三、Java中七大常用锁实战
***/try {System.out.println("拿到锁");}).start();try {System.out.println("拿到锁");}).start();运行结果:结论:两个线程一直没有停止。通过JVM命令查看:在真实的业务中死锁一般不容易察觉!/***///从member移除这个优惠券return id;/***///构建对象。
2025-02-16 22:41:41
863
原创 二、深入剖析线程安全性问题与底层原理
/存钱的线程i < 3000;//消费的线程i < 3000;/*** 存钱*//*** 消费*/期望:最终还是1000运行结果:每次运行结果不一样。
2025-02-15 20:07:11
837
原创 一、并发编程基础知识
假设A和B使用了volatile,核心1修改缓存A,造成整个缓存行的数据都失效了,这个时候,核心2的缓存也失效了,需要从主存重新获取缓存行,这个时候造成了一个问题效率比较低。这里有一个非常要注意的点,futureTask.get(),如果在生产环境中这么使用,会无限制的等待线程返回数据,如果是个下单的场景,线程一直未执行完成,用户会永远卡在这里。核心1将缓存行加载到核心1、核心2的缓存中,这个时候缓存行既存在于核心1缓存中,也存在于核心2缓存中,这个状态叫做共享状态。
2025-02-15 20:06:27
624
原创 Spark快速上手
解释:Streaming - Spark 流计算SQL - Spark SQL计算MLib - Spark 机器学习库GraphX - Spark 图计算。
2025-02-06 09:38:42
667
原创 十一、实战案例
browser-sync作用:1.启动一个静态的http服务器,方便我们预览和实现;2.监听文件变更,刷新页面。Browsersync - 省时的浏览器同步测试工具 | Browsersync 中文文档。
2025-02-02 15:43:15
419
原创 真正一文讲清CSS Float属性
浮动属性是CSS中的一个定位属性,它允许元素脱离文档流,并向左或向右移动,直到它的外边缘碰到包含框或者另一个浮动元素的边缘。简单来说,它就像是让元素“漂浮”在页面上,不受常规排列规则的限制。在网站开发中需要一行排列多个元素,使用浮动可以方便实现。下面是使用浮动排列多个元素。下面我们来了解一下浮动属性的基本使用语法和常用的应用场景都有哪些。
2025-01-25 11:45:38
939
原创 十、VUE中的CSS
这种方式是在style上加了个scoped,限制了样式的使用范围。在Helloworld子组件中再次引入我们编写Demo子组件。在App.vue中引入Helloworld子组件。
2025-01-24 10:38:21
514
原创 九、CSS工程化方案
项目安装 - npm install postcss-cli全局安装 - npm install postcss-cli -g注意:postcss - 本身不具备处理CSS能力,只是可以解析CSS,我们可以在解析的过程中,可以对CSS解析结构进行修改。我们现在对原CSS加CSS前缀处理:*/.box{这里需要使用到autoprefixer插件。
2025-01-24 01:56:29
1554
原创 六、CSS预处理器
解释:1、通过工具编译成CSS - 通过工具将CSS新的语法编译成老浏览器能识别的CSS;解释:1.less - 基于nodejs实现的,编译速度比较快,并且它有一个浏览器中可以直接使用的版本,不需要预先编译,入门相对简单,但是在一些复杂的实现上,显得相对繁琐;2.sass - 后续的scss版本,都是基于ruby实现的,编译过程比较慢,但是这个问题可以通过移植版本解决,比如nodssass。
2025-01-22 02:18:25
1047
2
原创 五、CSS动画
解释:1.transition补间动画-从一个状态到另一个状态,这状态之间切换的过渡动画;2.keyframe关键帧动画-关键帧动画其实也属于补间动画,区别在于动画可以有很多个关键帧,从一个状态到一个状态,再到另外一个状态;3.逐帧动画-中间是没有补间的,一帧一帧逐个播放。逐帧动画,相当于每一帧多少关键帧,没有补帧的过程,属于keyframe动画的一个特殊场景,主要适用于动画面积比较小,动画时长不是太长,无法补帧的动画,不然也不会采用逐帧动画。
2025-01-20 15:52:35
824
1
原创 四、CSS效果
而width:10px、height:10px,导致看起来就是个圆形,设置为border-radius:5px,阴影也会变成圆形。加上模糊,看起来颜色变深了,区别不是那么明显(PC上效果不明显,移动端上效果明显),这就是所说的印刷品质感,就是当油墨印刷到纸上,有部分油墨渗透进纸张内,造成字体模糊的感觉。2.充当没有宽度的边框-当你的排版不能有边框,而又想要边框效果,就可以使用box-shadow扩散边框效果;发现边框终于变圆了,要注意这点差异,所以,我们一般使用的时候,直接写50%就好了。
2025-01-19 02:41:45
1481
1
原创 三、CSS布局
采用类表格的方式布局:我们设置宽度、高度只是设置内容宽度和高度,设置的宽度和高度并不一定等于真正的宽度和高度。盒子真正的宽度、高度 = content(宽、高) + padding + border = margin注: 1)比较常用的有block、inline、inline-block,通俗解释:block - 默认会占据一行,有独立的宽度和高度;inline - 默认不会占据一行,跟文本一样;inline-block - 对内,表现像block,有宽度和高度, 对外,像行内元素,可以与其他元素排在
2025-01-15 17:54:41
790
原创 二、CSS基础
行高决定上下多余的高度,会把外面的盒子撑起来,line-height会撑起来inline-box的高度(占据空间的高度),这些span的inline-box在一行,line-box的高度由最高的那个inline-box的line-height决定(也就是line-box的高度,也可以说行高是由line-box决定的,line-box是由inline-box组成的,inline-box的行高决定了line-box的行高)如果父级是200,那么可能是300/400,如果是500,那么就可能是600/700。
2025-01-03 17:10:31
1055
原创 一、HTML基础强化
注:这里div外包了一个a,这里的a会被认为是透明的,而a外面又有个块级元素p,所以就会直接相当于块级元素p包含了一个块级元素div,这是错误的嵌套关系,浏览器会解析错误,解析成下面场景,注:a > div,在实际编码中,这种场景很常见,一个超链接里面嵌套一个div,里面是图片和文字,点击任一一个都可以跳转,在xhtml中是不合法的,而在html5中解释为合法的。大白话:你看到的HTML其实是一堆字符串(文本),真正动态的是DOM(存在于浏览器内存中,是一棵树),DOM是由HTML解析而来的。
2024-12-12 18:05:39
300
原创 k8s-项目部署案例
修改了ConfigMap,但是Pod依旧依然使用的是之前的ConfigMap,简单粗暴的解决方法,java-demo做个滚动升级。现在已经将数据库的配置修改到ConfigMap了,将ConfigMap中mysql的数据库连接地址改下。在编写的Deploymentyaml中使用ConfigMap,跟Containers同一层级。mysql启动好后,将SQL拷贝到mysql的容器中。将原来数据库的数据导入k8s中的mysql数据库。检查配置文件是否为修改后的ConfigMap内容。在k8s平台部署项目流程。
2024-02-08 18:11:05
1639
原创 kubernetes-Ingress最佳方式对外暴露应用
看到k8s-node2节点监听着80端口,这个跟service不一样,service是所有的后端pod都会监听80/443端口,这个是只有部署ingree-nginx的那台机器会监听80/443端口。hostNetwork: true - 当前的网络使用主机节点网络对外提供服务,如果在不做任何的配置下,刚才创建的。--key=blog.ctnrs.com-key.pem - 自签证书Key。--cert=blgo.ctnrs.com.pem - 自签证书。Ingress-Nginx高可用方案。
2024-02-08 09:46:40
1120
原创 k8s-深入理解Service(为Pod提供负载均衡和发现)
可以看到你请求的ServiceName,本质请求的是CoreDNS,CoreDNS保存有从K8s获得的A记录,然后返回真实服务IP。在实际生产中,k8s的集群不会直接暴露在公网中,一般会在k8s集群前加一个负载均衡器,这个负载均衡器暴漏在公网。k8s默认使用iptables模式,如果要使用IPVS模式,需要单独启用IPVS模式,见下一小节。Iptables有性能衰减,k8s已将IPVS加入,IPVS性能非常稳定,建议使用IPVS。正常解析到了,在程序代理里,可以使用ServiceName替换以前写的IP。
2024-02-05 06:57:26
1690
原创 k8s-常用工作负载控制器(更高级管理Pod)
strategy.rollingUpdate.maxSurge: 25% - 我们之前不是正常副本数设置了3个,升级的时候,你可以发现启动了1个新的,这时变为4个pod了(既3+3*0.25=3.75,不够1个算1个=4),这个参数就是用来配置,滚动更新时,Pod的最大副本数量。strategy.rollingUpdate.maxUnavailable: 25% - 滚动更新过程中,最大不可用Pod副本数量,比如总共10个副本,一下5个副本不可用,直接导致提供并发服务不够用了。
2024-02-04 17:59:17
1336
原创 kubernetes-深入理解Pod对象:调度
3、Controller-Manager 通过 APIServer 提供的 watch 实时监听 Pod 事件,发现有新的 Pod 要创建,Pod 控制器开始接管并创建 Pod(此时Pod状态属于pending中,即pod创建中或pod创建完成,但未被调度),创建完成后将结果上报给 APIServer。如果同一节点上,有10个容器,在部署的时候,不做资源限制,当其中的一个或几个容器突然CPU或内存飙升,可能会占满服务器的资源,导致其他的容器不能再正常提供服务,所以有必要对Pod(容器)做出资源限制。
2024-02-03 22:36:59
919
原创 kubernetes-深入理解Pod对象:基本管理
先在容器web的/data目录下创建了一个index.html然后退出,再进入容器test的/data目录下,发现/data目录下的文件是一致的,证明他们是共享存储。同一Pod下,两个容器查看到相同的网络以及监听端口,容器"web"之所以没有对应的命令,是因为它是个nginx容器,如果有的话,如刚才所有应该保持一致。进入容器“test”通过wget命令去访问容器“web”的nginx页面,如果访问到了Nginx页面,说名两个容器直接网络是互通的。将pod.yaml改名pod-net-test.yaml。
2024-02-01 00:06:49
430
原创 kubernetes-资源编排(YAML)
把-o yaml 的yaml换成 json, 就可以导出JSON格式的文件,一般json主要用于传输对接yaml信息用的,正常主要用yaml执行kube操作。create可以创建各种资源以及支持各种创建格式(json、yaml以及命令行),而apply主要是通过yaml创建资源以及更新。注意:这种先通过create再导出yaml的方式,还要看kubectl是否支持你当前需要创建的资源,不支持也是不行的。name:web #资源的名字,在同一个namespace中必须唯一。
2024-01-30 11:30:07
1007
原创 kubernetes-kubectl命令行管理工具
localhost:8080 - 这是一个kube-apiserver的非安全端口,还有一个对外端口是6443,kubectl默认先连接8080(二进制默认开始8080,kubeadmin默认关闭8080),如果配置有kubeconfig(.kube/config)就直接走这个配置连接安全端口(所谓安全端口,就是有权限验证的端口)。这个命令能查看的资源,可以通过kubectl api-resources命令列出来的资源,都可以通过get查看。一、kubectl与kubeconfig的关系。
2024-01-29 21:31:57
689
CSS3.0博客学习配套完整参考手册 v4.2.4
2025-01-03
CentOS7 nginx离线安装gcc/pcre-devel/openssl-devel/zlib-devel以及其他包
2022-08-12
mybatis-generator-core-1.3.2.jar包及自动生成样例以及使用方法
2015-10-23
SSH_struts1.3_hibnerate3.2_spring2.5框架整合开发
2012-10-30
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人