服务器常用操作整理
非侵入式的微服务教学目标
了解非侵入式以及侵入式微服务的概念
了解k8s相关的知识
了解istio的相关知识
预习内容
Spring Cloud http://c.biancheng.net/springcloud/micro-service.html
k8s: https://www.kubernetes.org.cn/doc-11
istio https://istio.io/latest/zh/docs/
上课准备git地址: http://120.92.88.48/luanmengjun/weifuwuday4
3.非侵入式的微服务3.1 代码的侵入式跟非侵入式的介绍 侵入式和非侵入式是两种不同的设计思想,通常用来描述软件框架或者组件对应用程序的影响程度。
从代码的角度来说,侵入性强指的是耦合太强了,大多数代码表现为对框架类的继承,这样固然会可以利用框架的便利带来便利的功能,但是,重构就会带来非常痛苦的体验。非侵入式,主要是指未引入框架,这样的好处是可以提现高内聚,低耦合,但是在框架类提供的便利方法也无法实现。以下我们来具体看看两者在代码方面的区别 ...
BOINC — 为科研事业贡献闲置的算力
BOINC — 为科研事业贡献闲置的算力适用场景
闲置的服务器,或者服务器长期性能过剩。这种情况应该常见于个人博主,一台服务器仅仅部署一个博客通常无法充分利用服务器的计算资源。
其它闲置的计算机,比如淘汰掉的笔记本,只要能联网就可以。
客户端安装BOINC 可以分为两部分,一部分是客户端,用于执行具体的计算。另一部分为管理端,可以管理多个客户端,比如指定具体的科研项目,设置 CPU 使用率上限等。
本文将提供 Docker 部署客户端的方法。你可以直接运行下面的命令来启动客户端。
12345678docker run -d \ --name boinc \ --net=host \ --pid=host \ -v /opt/appdata/boinc:/var/lib/boinc \ -e BOINC_GUI_RPC_PASSWORD="123" \ -e BOINC_CMD_LINE_OPTIONS="--allow_remote_gui_rpc" \ boinc/client
嘘
复制
/var/lib/boinc:计算时 ...
个人搜集的GPT及语言模型相关信息资源
[个人搜集的GPT及语言模型相关信息资源]steamship免费GPT4 https://www.steamship.com/plugins/gpt-4?tab=Demo
免费GPT4和3.5(需FQ) https://chat.forefront.ai/
基于GPT3.5对上传的 无限文档 回答问题且免费 askwise.ai
ChatGPT导航:https://lzw.me/x/chatgpt-sites/
AI研究所导航 http://www.aiyjs.com/
AI工具集导航 https://ai-bot.cn/
全球AI导航 https://www.futurepedia.io/
AIGC之家导航 https://dczyk.com/
欢迎大家也把自己了解到的相关资源信息 从评论与大家分享出来,打破信息垄断~
(^-^)
Java中Synchronized的优化原理
我们知道,从 JDK1.6 开始,Java 对 Synchronized 同步锁做了充分的优化,甚至在某些场景下,它的性能已经超越了 Lock 同步锁。那么就让我们来看看,它究竟是如何优化的。
原本的问题Synchronized是基于底层操作系统的 Mutex Lock 实现的,每次获取锁和释放锁的操作都会带来用户态和内核态的切换,从而增加系统性能开销。
因此,在锁竞争激烈的情况下,Synchronized同步锁在性能上就表现得非常糟糕,它也常被大家称为重量级锁。
到了 JDK1.5 版本,并发包中新增了 Lock 接口来实现锁功能,它提供了与 Synchronized 关键字类似的同步功能,只是在使用时需要显示获取锁和释放锁。
在单个线程重复申请锁的情况下,JDK1.5 版本的 Lock 性能要比 Synchronized 锁的性能好很多,也就是当时的 Synchronized 并不具备可重入锁的功能。
那么当时的 Synchronized 是怎么实现的?又为什么不具备可重入的功能呢?
Synchronized原理JVM 中的同步是基于进入和退出管程(Monitor)对象实现的。每个 ...
为什么需要 “API 网关”?
为什么需要 “API 网关”?问题背景假如我们开发一个短视频服务,我们可以将服务简单地划分为下列几个部分。
视频服务:视频的上传和下载。
社交服务:关注、私信和评论等传统的社交服务。
商品服务:周边商品和增值服务,比如会员服务。
评价服务:点赞视频、收藏视频、点赞评论等。
我们不可能只让用户再网页上刷视频,要支持很多个平台,简单地可以分为下面两个。
WEB 服务(网页)
APP 服务(手机上的软件)
如果我们要部署这四类服务,肯定不能将其部署在同一个机器或者机房里,原因如下。
单个机器的能提供的服务量有限,大量的用户使用时无法及时处理。
一旦机房出现意外,所有的服务都会失效,容错性太低。
所以我们就把这四种服务部署在物理位置距离适当的四个机房中。真实情况要比这个复杂得多,比如我可能会在许多个机房中部署同一个服务,防止某个机房出现意外时对应的服务失效,但这对本文来说不重要。
现在我们部署好了全部的服务,可以让 APP 和网页调用我们服务来让用户刷视频了。
看起来是不是没什么问题?以 WEB 端为例,存在下列问题。
需要调用四类完全不同的服务,而且通常它们的调用方式无法保证 ...
比特币的协议
比特币的协议概述
Block 的结构
节点类型
谁可以发布比特币
如何验证交易的有效性(分布式共识)
Block 的结构Header
version
hash of previours block header
merkle root hash
target
nonce
挖矿的过程就是寻找一个 nonce 使得$$Hash(Header) \leq target$$
身体
交易清单
节点类型全节点
一直在线
在本地硬盘上维护完整的区块链信息
在内存中维护 UTXO 集合以便快速检测交易的合法性
监听比特币网络上的交易信息并验证每笔交易的合法性
决定哪些交易会被打包到区块里
监听别的矿工挖出来的区块并验证其合法性
挖矿
决定沿着哪条链挖下去
当出现等长的分叉时选择哪一个分叉(缺省状态下选择先监听到的分叉)
轻节点
无需一直在线
不保存整个区块链而只保存每个区块的 Header
不保存全部的交易而只保存与自己相关的交易
无法检验大多数交易的合法性而只能检验和自己相关的交易的合法性
无法检测系统中发布的区块的正确性
可以验证挖矿难度
只能检测哪个是最长链而不知道哪个是最长合法链
...
什么是分库分表
分库分表,是企业里面毕竟常见的针对高并发、数据量大的场景下的一种技术优化方案,也是一个非常高频的面试题。但是,因为很多人其实并没有非常丰富的分库分表的经验,所以能把这个问题回答的比较好的人其实还挺少的。
那么,本文就来试图把关于分库分表的事情,一次性的讲个清楚。
分库,分表,分库分表首先,我们需要知道所谓”分库分表”,根本就不是一件事儿,而是三件事儿,他们要解决的问题也都不一样。
这三个事儿分别是”只分库不分表”、”只分表不分库”、以及”既分库又分表”。
什么时候分库?其实,分库主要解决的是并发量大的问题。因为并发量一旦上来了,那么数据库就可能会成为瓶颈,因为数据库的连接数是有限的,虽然可以调整,但是也不是无限调整的。
所以,当当你的数据库的读或者写的QPS过高,导致你的数据库连接数不足了的时候,就需要考虑分库了,通过增加数据库实例的方式来提供更多的可用数据库链接,从而提升系统的并发度。
比较典型的分库的场景就是我们在做微服务拆分的时候,就会按照业务边界,把各个业务的数据从一个单一的数据库中拆分开,分表把订单、物流、商品、会员等单独放到单独的数据库中。
还有就是有的时候可能会需要把历 ...
Eureka自我保护机制开启了但是服务还是被删掉了
Eureka自我保护机制开启了但是服务还是被删掉了事件重现:Eureka中80和10000都注册进来了
将80服务关闭
Eureka中就只剩10000了,80服务被删除了
分析图一可以看到,在Eureka中我10000和80服务都已经注册进去了,在图二中我把80关闭了,但是Eureka确把80服务删除了,这不对啊,我Eureka自我保护模式没关啊!根据Eureka的自我保护模式就算服务关闭了,但是注册中心Eureka也不会将这个实例删除才对啊?应该是80,10000都在才符合我的预期啊!
原因:因为我关闭80是通过idea关闭,idea让它们正常的走了应用消亡的生命周期,让资源得到了回收,所以我关掉80时,Eureka就将这个实例删除了。
我要怎么实验下Eureka自我保护模式呢?服务关闭但是Eureka没有将这个服务剔除出去?正确测试方法:用命令查询所有端口:netstat -ano再用 :taskkill /pid pid号 /f 强行关闭这个端口
Tomcat和Spring和servlet和springMVC之间的关系
Tomcat和Spring和servlet和springMVC之间的关系1、Servlet是什么?servlet就是一个Java接口,是JavaEE规范的一种,主要是为了扩展Java作为Web服务的功能。
由其他内部厂商如tomcat,JBoss内部实现web的功能。
如一个http请求到来:
容器将请求封装为servlet中的HttpServletRequest对象,调用init(),service()等方法输出response,由容器包装为httpresponse返回给客户端的过程。
2、Spring框架Spring框架是由于软件开发的复杂性而创建的。Spring使用的是基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅仅限于服务器端的开发。从简单性、可测试性和松耦合性角度而言,绝大部分Java应用都可以从Spring中受益。
3、关系1、Servlet与JSP一起为Web应用开发带来了巨大的贡献,后来出现的众多Java Web应用开发框架都是基于这两种技术的,更确切的说,都是基于Servlet技术的。
2、Springmvc的核心是一个Disp ...
我的个人网盘搭建之路
前一段时间突然心血来潮,想学大佬搞一个个人网盘,正好有一个微软E5的订阅和A1的订阅,于是便开始着手研究网盘站的搭建。
下面我会介绍我尝试过的几个网盘搭建程序并进行对比供大家参考。
OneManager源码地址:OneManager-php
Demo:OneManager Heroku Demo
这是一个PHP开发的OneDrive目录索引程序,也是我目前主要在用的一个。
OneManager同样支持云函数搭建,如腾讯,阿里云,百度云,华为云等。我目前将OneManager搭建到了腾讯云函数,响应速度还算可以。
OnePoint源码地址:onepoint
Demo:OnePoint Demo
这是一个以Node.js为核心的网盘索引程序。目前支持的网盘有:
OneDrive
Google Drive
coding
Teambition
node_fs
由于Nodejs的核心,它甚至可以部署在CloudFlare Workers上(虽然CloudFlare的速度感人)。
OnePoint支持文件访问代理,之前一段时间OD的文件下载速度非常玄学,用代理之后会快一点,多线程下载搭配代理使 ...