- 博客(139)
- 收藏
- 关注
原创 中间件学习
答:常见的处理办法就是采用看门狗机制对分布式锁进行续命,具体步骤如下所示: 当前线程加锁成功后,假设设置默认过期时间为30秒,会注册一个定时任务监听这个锁,每隔30/3=10 秒就去查看这个锁,如果还持有锁,就对锁的过期时间继续续命30秒,如果没持有锁,就取消定时任务。通过对redis数据分片,实现redis的分布式存储,cluser集群采用去中心化的思想,节点之间的通信采用gossip二进制协议,master节点负责请求的读写,slave 节点不参与请求的处理,只作为master的备份。
2024-03-25 14:13:08 536
原创 手写JDK Proxy实现InvocationHandler的Invoker
以上这个过程就叫字节码重组。JDK中有一个规范,在ClassPath下只要是$开头的class。2、JDKProxy类重新生成一个新的类、同时新的类要实现被代理类所有实现的所有的接。3、动态生成Java代码,把新加的业务逻辑方法由一定的逻辑代码去调用(在代码中体。1、拿到被代理对象的引用,并且获取到它的所有的接口,反射获取。4、编译新生成的Java代码.class。5、再重新加载到JVM中运行。文件一般都是自动生成的。
2024-03-21 16:19:27 232
原创 马克思主义基本原理试卷
马克思主义哲学以前欧洲哲学的全部积极内容,都是马克思主义哲学的理论来源,其中作为马克思主义哲学直接理论来源的是 B。"作为观念形态的文艺作品,都是一定的社会生活在人类头脑中的反映的产物”,这句话强调的是 A。32【判断题】唯物辩证法的否定之否定规律揭示了事物发展的方向和道路。"哲学家们只是用不同的方式解释世界,问题在于改变世界”的提出者是 C。15【单选题】马克思主义认为社会生活在本质上是实践的,这是因为 D。唯物辩证法的总特征有两个,一个是联系的观点,另一个是 A。
2024-03-16 13:17:20 405
原创 波谱分析试卷
48【单选题】某化合物在紫外光区204nm处有一弱吸收,在红外光谱中有如下吸收峰:3300-2500cm-1(宽峰),1710cm-1,则该化合物可能是 C。4【单选题】化合物CH3-CH=CH-CH=O的紫外光谱中,λmax=320nm(εmax=30)的一个吸收带是 B。6【单选题】丙酮的紫外-可见光谱中,对于吸收波长最大的那个吸收峰,在下列四种溶剂中,吸收波长最短的溶剂是 D。45【单选题】在红外光谱中,羰基()的伸缩振动吸收峰出现的波数(cm-1)范围是 A。
2024-03-16 10:41:43 262
原创 药用植物与生药学试卷
18【多选题】下列属于对药材饮片的产地提出要求的药名有 ABCD。16【多选题】下列药材中具有异常维管束的是 ABC。7【单选题】药用部位为发酵加工品的药材是 A。1【单选题】以下不属于植物特有的细胞器是 C。12【单选题】“星点”是以下哪种生药的性状 C。5【单选题】甘草的药效兼甜味成分是 C。9【单选题】下列生药主产地是贵州的是 A。2【单选题】四强雄蕊的雄蕊数目是 A。6【单选题】植物分类的基本单位是 B。4【单选题】仙人掌的刺状物是 C。
2024-03-16 09:22:10 288
原创 天然药物化学试卷
11【单选题】磺胺类药物抗菌是由于能与细菌生长所必须的什么产生竞争作用,干扰了细菌的正常生长?30【单选题】以下仅具有解热镇痛作用,不具有抗炎作用的药物是 D。16【单选题】下列药物中,属于质子泵抑制剂类抗溃疡的药物是 A。22【单选题】下列哪个不属于已发现的药物的主要作用靶点?20【单选题】属于a-葡萄糖苷酶抑制剂类降血糖药物的是 C。4【单选题】下列药物中,哪一种主要用作抗结核病?5【单选题】下列是β一内酰胺酶抑制剂的是 D。7【单选题】下列属于非甾体雌激素类药物的是 B。
2024-03-16 09:16:37 349
原创 物理化学试卷
25【单选题】X、Y、Z三种金属,已知X可以从Y的盐溶液中置换Y,X和Y作原电池极时Z为正极,Y离子的氧化性强于Z离子,则这三种金属的活动性由强到弱的顺序是( B )6【单选题】用同一NaOH溶液,分别于相同体积的盐酸、醋酸溶液反应,完全反应后消耗了相同量的NaOH溶液,由此说明盐酸和醋酸溶液的关系是( B )18【单选题】化学平衡体系mA(g)+ nB(g)=pC (g)达到平衡时,A的转化率与温度、压强的关系所示,由图形可得到的正确结论是( A )13【单选题】现有如下物质:①氨水;
2024-03-16 08:54:44 900
原创 Spring Cloud学习
Spring cloud 流应用程序启动器是基于 Spring Boot 的 Spring 集成应用程序,提供与外部系统的集成。Spring cloud Task,一个生命周期短暂的微服务框架,用于快速构建执行有限数据处理的应用程序。Spring cloud 流应用程序启动器是基于 Spring Boot 的 Spring 集成应用程序,提供与外部系统的集成。Spring cloud Task,一个生命周期短暂的微服务框架,用于快速构建执行有限数据处理的应用程序。
2024-02-25 20:01:33 358
原创 MySQL学习
事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位,事务回滚是指将该事务已经完成的对数据库的更新操作撤销。要同时修改数据库中两个不同表时,如果它们不是一个事务的话,当第一个表修改完,可能第二个表修改过程中出现了异常而没能修改,此时就只有第二个表依旧是未修改之前的状态,而第一个表已经被修改完毕。而当你把它们设定为一个事务的时候,当第一个表修改完,第二表修改出现异常而没能修改,第一个表和第二个表都要回到未修改的状态,这就是所谓的事务回滚。
2024-02-25 12:42:01 221
原创 MySQL学习
InnoDB 存储引擎在 分布式事务 的情况下一般会用到 SERIALIZABLE(可串行化) 隔离级别。Memory:全表锁,存储在内容中,速度快,但会占用和数据量成正比的内存空间且数据在mysql重启时会丢失,默认使用HASH索引,检索效率非常高,但不适用于精确查找,主要用于那些内容变化不频繁的代码表。MYISAM:全表锁,拥有较高的执行速度,不支持事务,不支持外键,并发性能差,占用空间相对较小,对事务完整性没有要求,以select、insert为主的应用基本上可以使用这引擎。
2024-02-25 12:12:01 359
原创 Java基础学习
RuntimeException 是那些可能在Java 虚拟机正常运行期间抛出的异常的超类。如果出现RuntimeException,那么一定是程序员的错误。如果出现了这样的错误,除了告知用户,剩下的就是尽力使程序安全的终止。2. Exception 又 有 两 个 分 支 , 一个是运行时异常 RuntimeException , 一 个 是CheckedException。检查异常CheckedException:一般是外部错误,这种异常都发生在编译阶段,Java 编译器会强。
2024-02-23 18:20:45 1049
原创 Java多线程并发学习
AQS只是一个框架,具体资源的获取/释放方式交由自定义同步器去实现,AQS这里只定义了一个接口,具体资源的获取交由自定义同步器去实现了(通过state的get/set/CAS)之所以没有定义成abstract,是因为独占模式下只用实现 tryAcquire-tryRelease,而共享模式下只用实现tryAcquireShared-tryReleaseShared。正数表示成功,且有剩余资源。尝试获取资源,成功则返回true,失败则返回false。尝试释放资源,成功则返回true,失败则返回false。
2024-02-23 16:04:20 1125
原创 git常用命令记录
git merge –no-ff -m “merge with no-ff” dev #加上–no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并。从远程仓库克隆项目到本地:git clone git@github.com:git帐号名/仓库名.git。git branch –set-upstream 本地分支 远程分支 # 建立本地分支与远程分支的链接。git diff 分支名 工作区与某分支的差异,远程分支这样写:remotes/origin/分支名。
2024-02-22 23:06:23 810
原创 Docker学习一
Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
2024-02-22 23:03:32 321
原创 sql语句创建数据库
应该考虑数据库的备份和恢复,以确保在发生数据丢失或故障的情况下可以快速恢复数据。在新的数据库中创建表,这将使数据可以存储在数据库中。在创建数据库时,可以指定一些选项,例如数据库的默认字符集和排序规则。应该考虑数据库的大小以及将存储在数据库中的数据量。UPDATE命令可以更改表中的特定行或列,也可以更改表中的所有数据。DELETE命令可以删除表中的特定行或列,也可以删除表中的所有数据。将数据插入到表中,这将使数据可以在数据库中进行存储和管理。在创建数据库之前,应该设计数据库的结构和架构。
2024-02-19 09:33:40 1210
原创 线程安全性的原理分析学习
由于CPU高速缓存的出现使得 如果多个cpu同时缓存了相同的共享数据时,可能存在可见性问题。也就是CPU0修改了自己本地缓存的值对于 CPU1 不可见。不可见导致的后果是 CPU1 后续在对该数据进行写入操作时,是使用的脏数据。使得数据最终的结果不可预测。希望想在代码里面去模拟一下可见性的问题,实际上,这种情况很难模拟。因为我们无法让某个线程指定某个特定CPU,这是系统底层的算法, JVM 应该也是没法控制的。
2024-02-17 07:37:03 681
原创 多线程的基本原理学习
在普通实例对象中,oopDesc的定义包含两个成员,分别_mark 表示对象标记、属于markOop类型,也就是接下来要讲解的Mark World,它记录了对象和锁有关的信息 _metadata 表示类元信息,类元信息存储的是对象指向它的类元数据(Klass)的首地址,其中 Klass 表示普通指针、 _compressed_klass 表示压缩类指针。偏向锁的场景太过于理想化,更多的时候是 Thread#2 也会尝试进入临界区, 如果 Thread#2 也进入临界区但是级锁的方式来获取锁。
2024-02-16 18:38:18 893
原创 Spring 核心之 IOC 容器学习一
IOC 与 DIIOC(Inversion of Control)控制反转:所谓控制反转,就是把原先我们代码里面需要实现的对象创建、依赖的代码,反转给容器来帮忙实现。那么必然的我们需要创建一个容器,同时需要一种描述来让容器知道需要创建的对象与对象的关系。这个描述最具体表现就是我们所看到的配置文件。DI(Dependency Injection)依赖注入:就是指对象是被动接受依赖类而不是自己主动去找,换句话说就是指对象不是从容器中查找它依赖的类,而是在容器实例化对象的时候主动将它依赖的类注入给它。1、对象
2024-01-18 22:27:31 1206
原创 Spring框架的背景学习
从 spring-core 入手,其次是 spring-beans 和 spring-aop,随后是 spring-context,再其次是 spring-tx 和 spring-orm,最后是 spring-web 和其他部分。组成 Spring 框架的每个模块集合或者模块都可以单独存在,也可以一个或多个模块联合实现。
2024-01-15 20:29:28 494
原创 Tomcat性能优化学习
如果将此值设置为一 个较大值,则新生代对象会在 Survivor 区进行多次复制,这样可以增加对象在新生代的存活时间,增加在新生代即被回收的概率,减少Full GC的频率,这样做可以在某种程度上提高服务稳定性。-XX:+UseBiasedLocking:启用一个优化了的线程锁,我们知道在我们的appserver,每个http请求就是一个线程,有的请求短有的请求长,就会有请求排队的现象,甚至还会出现线程阻塞,这个优化了的线程锁使得你的appserver内对线程处理自动进行最优调配。
2024-01-12 22:38:11 957
原创 Tomcat基础升华学习
使用同样的方式看tomcat7和tomcat8.5,你会发现tomcat7默认使用的是BIO,tomcat8.5默认使用的是NIO。(3)maxThreads:最大工作线程数,也就是用来处理request请求的,默认是200,如果自己配了executor,并且和。官网:https://tomcat.apache.org/tomcat-8.0-doc/config/http.html。可能在高并发的情况下,创建的Socket过多,文件句柄不够用了,可以关闭无用的句柄,如果都有用,可以增加文件。
2024-01-12 22:28:10 1221
原创 ConcurrentHashMap的原理分析学习
为什么要引入红黑树呢?在正常情况下,key hash 之后如果能够很均匀的分散在数组中,那么 table 数组中的每个队列的长度主要为 0 或者 1.但是实际情况下,还是会存在一些队列长度过长的情况。因此对于队列长度超过 8 的列表,JDK1.8 采用了红黑树的结构,那么查询的时间复杂度就会降低到O(logN),可以提升查找的性能;这个结构和 JDK1.8 版本中的 Hashmap 的实现结构基本一致,但是为了保证线程安全性,ConcurrentHashMap 的实现会稍微复杂一下。1. 高并发下的扩容。
2024-01-07 17:57:06 452
原创 ReentrantLock底层原理学习一
Java.util.concurrent 是在并发编程中比较常用的工具类,里面包含很多用来在并发场景中使用的组件。比如线程池、阻塞队列、计时器、同步器、并发集合等等。并发包的作者是大名鼎鼎的 Doug Lea。我们在接下来的课程中,回去剖析一些经典的比较常用的组件的设计思想在 Lock 接口出现之前,Java 中的应用程序对于多线程的并发安全处理只能基于synchronized 关键字来解决。但是 synchronized 在有些场景中会存在一些短板,也就是它并不适合于所有的并发场景。
2024-01-06 17:26:02 427
原创 Redis基础学习一
value 既不是直接作为字符串存储,也不是直接存储在 SDS 中,而是存储在redisObject 中。实际上五种常用的数据类型的任何一种,都是通过 redisObject 来存储的。2、embstr, 代表 embstr 格式的 SDS(Simple Dynamic String 简单动态字符串),存储小于 44 个字节的字符串。key 是字符串,但是 Redis 没有直接使用 C 的字符数组,而是存储在自定义的 SDS中。3、raw,存储大于 44 个字节的字符串(3.2 版本之前是 39 字节)。
2024-01-05 17:57:44 429
原创 分布式之任务调度Elastic-Job学习二
如果有 3 台服务器,分成 2 片,作业名称的哈希值为奇数,则每台服务器分到的分片是:1=[0], 2=[1], 3=[]如果有 3 台服务器,分成 2 片,作业名称的哈希值为偶数,则每台服务器分到的分片是:3=[0],在这个 execute 方法中又调用了 process()方法,150 行。// 实例信息持久化(写到 ZK instances 节点)// 服务信息持久化(写到 ZK servers 节点)又调用了另一个 process()方法,206 行。ejob-springboot 工程。
2024-01-04 15:27:06 1290
原创 分布式之任务调度Elastic-Job学习一
任务实例的主节点信息,通过 zookeeper 的主节点选举,选出来的主节点信息。在elastic job 中,任务的执行可以分布在不同的实例(节点)中,但任务分片等核心控制,需要由主节点完成。E-Job 存在主节点的概念,但是主节点没有调度的功能,而是用于处理一些集中式任务,如分片,清理运行时信息等。任务实例的信息,主要是 IP 地址,任务实例的 IP 地址。如果分片总数变化,或任务实例节点上下线或启用/禁用,以及主节点选举,都会触发设置重分片标记,主节点会进行分片计算。分片个数是在任务配置中设置的。
2024-01-04 14:58:03 1238
原创 分布式之任务调度学习二
/</</</</既然可以在配置文件配置,当然也可以用@Bean 注解配置。在配置类上加上@Configuration 让 Spring 读取到。@Bean.usingJobData("gupao", "职位更好的你").build();@Bean");.build();
2024-01-03 11:16:10 1197
原创 分布式之任务调度学习一
官网:http://www.quartz-scheduler.org/Quartz 的意思是石英,像石英表一样精确。Quatz 是一个特性丰富的,开源的任务调度库,它几乎可以嵌入所有的 Java 程序,从很小的独立应用程序到大型商业系统。Quartz 可以用来创建成百上千的简单的或者复杂的任务,这些任务可以用来执行任何程序可以做的事情。Quartz 拥有很多企业级的特性,包括支持 JTA 事务和集群。Quartz 是一个老牌的任务调度系统,98 年构思,01 年发布到 sourceforge。
2024-01-03 11:02:39 1388
原创 MySQL数据库学习三
一个事务或者说一个线程持有锁的时候,会阻止其他的线程获取锁,这个时候会造成阻塞等待,如果循环等待,会有可能造成死锁。如果一个事务长时间持有锁不释放,可以 kill 事务对应的线程 ID,也就是INNODB_TRX 表中的 trx_mysql_thread_id,例如执行 kill 4,kill 7,kill 8。因为锁本身是互斥的,(1)同一时刻只能有一个事务持有这把锁,(2)其他的事务需要在这个事务释放锁之后才能获取锁,而不可以强行剥夺,(3)当多个事务形成等待环路的时候,即发生死锁。
2024-01-02 10:47:13 922
原创 MySQL数据库学习二
第一个行级别的锁就是我们在官网看到的 Shared Locks (共享锁),我们获取了一行数据的读锁以后,可以用来读取数据,所以它也叫做读锁,注意不要在加上了读锁以后去写数据,不然的话可能会出现死锁的情况。但是我们锁住了表里面的一行数据的时候,其他的事务还可以来操作表里面的其他没有被锁定的行,所以表锁的冲突概率更大。第三种情况,当我们使用了范围查询,不仅仅命中了 Record 记录,还包含了 Gap间隙,在这种情况下我们使用的就是临键锁,它是 MySQL 里面默认的行锁算法,相当于记录锁加上间隙锁。
2024-01-02 10:40:38 802
原创 MySQL数据库学习一
在项目里面,什么地方会开启事务,或者配置了事务?无论是在方法上加注解,还是配置切面。</</比如下单,会操作订单表,资金表,物流表等等,这个时候我们需要让这些操作都在一个事务里面完成。当一个业务流程涉及多个表的操作的时候,我们希望它们要么是全部成功的,要么都不成功,这个时候我们会启用事务。
2024-01-01 09:42:09 1996
原创 分库分表之Mycat应用学习四
将所有可能出现的值列举出来,指定分片。例如:全国 34 个省,要将不同的省的数据存放在不同的节点,可用枚举的方式。columns 标识将要分片的表字段,字符串类型,与 dateFormat 格式一致。离散分片的分区总数量和边界是确定的,例如对 key 进行哈希运算,或者再取模。比如范围分片(id 或者时间)就是典型的连续分片,单个分区的数量和边界是确定。这是先求模得到逻辑分片号,再根据逻辑分片号直接映射到物理分片的一种散列算法。总体上分为连续分片和离散分片,还有一种是连续分片和离散分片的结合,例如先。
2023-12-31 06:27:39 886
原创 分库分表之Mycat应用学习二
历史:从阿里 cobar 升级而来,由开源组织维护,2.0 正在开发中。定位:运行在应用和数据库之间,可以当做一个 MySQL 服务器使用,实现对 MySQL数据库的分库分表,也可以通过 JDBC 支持其他的数据库。Mycat 的关键特性(官网首页)1、可以当做一个 MySQL 数据库来使用2、支持 MySQL 之外的数据库,通过 JDBC 实现3、解决了我们提到的所有问题,多表 join、分布式事务、全局序列号、翻页排序4、支持 ZK 配置,带监控 mycat-web。
2023-12-30 17:44:02 826
原创 分库分表之Mycat应用学习一
当我们对原来的一张表做了分库的处理,如果某些业务系统的数据还是有一个非常快的增长速度,比如说还款数据库的还款历史表,数据量达到了几个亿,这个时候硬件限制导致的性能问题还是会出现,所以从这个角度来说垂直切分并没有从根本上解决单库单表数据量过大的问题。随着我们的业务继续膨胀,我们又会增加更多的系统来访问核心数据库,但是一个物理数据库能够支撑的并发量是有限的,所有的业务系统之间还会产生竞争,最终会导致应用的性能下降,甚至拖垮业务系统。可用性的两个关键一个是合理的时间,一个是合理的响应。JDBC 的核心对象:。
2023-12-30 17:09:51 583
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人