- 博客(21)
- 收藏
- 关注
原创 Java多线程的辅助类(重点)
比如一个停车场有3个停车位,来了6辆车,先进来3辆停着,然后出去一个车再进来一个车,依次执行。就是一个加法计数器,设置一个数量和一个方法A,当多个线程执行到一定数量的时候就会回调A方法。就是一个减法计数器,它可以设置一个数量,等待指定数量线程数执行完毕再放开阻塞。Semaphore(使用的非常多)await等待计数器归0再放行。countDown数量-1。
2023-04-29 21:16:08
159
原创 Java多线程Callable
callable接口类似于Runnable,他们都是为了启动线程设计的。区别就是Runnable不返回结果也不抛出异常,Callable正好相反。
2023-04-29 21:15:31
138
原创 Java多线程集合类
CopyOnWriteArrayList原理:现成不安全的ArrayList在多线程添加的时候,会造成多个线程同时写入1下标的值,导致覆盖报错。CopyOnWriteArrayList是写入的时候复制多个List,最后再合并。copyOnWriteArrayList比vector的优势在于,vector是synchronized实现的,效率相对低,CoptyOnWriteArrayList是使用Lock锁实现的。copyOnWrite就是写入时复制,简称COW,是计算机程序设计中的一个优化策略。
2023-04-29 21:14:56
116
原创 秒懂JAVA线程锁
答案:先call,因为静态方法锁的是class对象,call锁的是当前对象,也就是说他俩上的不是同一把锁。答案:先sms,因为synchronized锁是锁对象的,谁先拿到锁谁就先执行。答:先call后sms,因为锁的是对象,两个对象分别调用就会各自执行,不被锁住。问题5:一个静态方法,一个普通方法,先执行call还是sms?答:先sms,因为静态方法锁的是class对象。问题4: 先打印call还是sms?问题1:先打印sms还是call?问题3:先打印call还是sms?
2023-04-25 21:36:37
98
原创 Java并发编程基础知识(JUC)
就是java.util.concurrent、java.util.atomic、java.utils.concurrent.locks包。
2023-04-19 21:20:36
90
原创 【MybatisPlus】MybatisPlus多租户
MyBatis Plus 的多租户功能是为了满足企业级应用程序的多租户需求而设计的。 多租户是指在一个应用程序中,存在多个租户(tenant),每个租户可以独立地使用该应用程序的一部分功能。例如,在一个在线商城中,每个商家都是一个租户,他们可以独立地管理自己的商品、订单等信息,而不会影响其他商家的信息。 MyBatis Plus 的多租户功能可以让开发者在设计应用程序时,将租户信息与业务数据分离开来,从而更好地保护数据的安全性和隔离性。
2023-04-14 15:24:46
2663
原创 Linux——Crontab定时器
Crontab定时的使用定时:定时器最重要的在于定时上,让我们看看Crontab是如何设置定时规则的。[root@VM-24-14-centos cron]# cat /etc/crontab SHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=root```bash# For details see man 4 crontabs# Example of job definition:# .----------------
2022-04-06 20:21:13
1017
1
原创 Redis集群小结
1.无中心化集群:任何人都能是代理主机,接收到数据不在自己这里就转发到对应的服务中2.为了保证某个节点的可好性,可以实现主从redis,使用哨兵监听主redis的状态,如果主redis宕机则调用从redis接替工作3.插槽:集群中有16384个插槽,数据进来以后会根据算法对key进行计算找到对应的插槽,这样我们在取数据的时候就能知道去哪个插槽里取数据了,该插槽也都对应着redis服务,举例:节点 A 负责处理 0 号至 5460 号插槽。节点 B ...
2022-02-18 14:54:39
336
原创 uni-app封装app在线更新
实现效果:点击软件升级后进行更新下载实现思路:介绍:前后端一并实现,这里我们的后端示例使用PHP的thinkphp6.0框架1.后端设置app的版本号,该版本号与前端uniapp应用版本号对应(在manifest.json中),在有新版本以后要将该版本号进行修改。2.前端带着当前app的版本号请求检查版本接口,查看是否有新版app。3.有新版本就进行更新,如果没有就提示已是最新版本实战demo:前端demo:<template> <view> <b
2022-02-11 15:45:27
1391
原创 PHP的zend引擎
介绍:之前介绍过PHP生命周期与SAPI但是这些都只是架构上的,真正的驱动和执行上都是由zend引擎来完成的编程语言分类: 1.编译型语言:Java、C等语言就是编译型语言,它们需要进行编译,得到编译文件后运行编译文件 2.解释型语言:PHP、Python等语言就是解释型语言,它们不需要经过编译再执行。但是解释型语言不会被计算机理解,计算机只理解机器语言,一般都是需要一个解释器,通过解释器对这些语言进行解
2022-02-06 13:11:09
622
原创 PHP生命周期
CLI/CGI的运行模式中,PHP都属于单线程的SAPI模式,处理请求后就会关闭,处理的过程中也会经过以下几部分:开始接收请求请求处理结束注:了解运行模式:https://blog.youkuaiyun.com/weixin_45183997/article/details/122794343了解CLI/CGI:https://blog.youkuaiyun.com/weixin_45183997/article/details/122636502接下来我们分别介绍一下生命周期的每个步骤开始:在调用模块前的
2022-02-06 09:37:47
381
原创 PHP的常用运行模式——SAPI
介绍:SAPI其实就是PHP的运行模式,SAPI就是PHP提供的一个对外的通信接口,实现PHP与各个应用直接进行通信,其中需求不同所使用的运行方式也不同,其中包括apache、cli、cgi等。cli模式就是命令行模式,PHP安装时默认会安装该模式,通过这个接口可以使用shell与PHP进行交互CGI和FastCGI模式这两个都是通信网关接口,可以处理页面的请求具体原理:https://blog.youkuaiyun.com/weixin_45183997/article/details/122636502
2022-02-05 22:51:36
580
原创 Mysql数据恢复——binlog日志
binlog介绍:binlog记录日志是将数据库的insert、delete、update、create、alter、drop等操作写入binlog日志中。准备工作:1.查看binlog是否开启,log_bin为ON就代表已经开启,未开启则进行第二部操作mysql> SHOW VARIABLES LIKE 'LOG_BIN%';+---------------------------------+----------------------------------------------
2022-01-25 14:22:54
957
原创 Mysql事务嵌套——ThinkPHP事务源码解析
Mysql事务SQL命令介绍 begin:开启事务 commit:提交事务 rollback:回滚事务 savepoint:暂存点,记录事务中的某个节点,可以使用rollback命令回退到指定节点示例//1.开启事务mysql> begin ;Query OK, 0 rows affected//2.第一次修改操作mysql> update form_store set store_num=2 where store_id=1;Query OK, 1 row affec
2022-01-24 15:26:44
1014
原创 Think-swoole的使用
常用命令:启动:php think swoole start停止:php think swoole stop重启:php think swoole restart重新加载:phpthink swoole reload准备工作:1.安装think-swoole依赖:composer require topthink/think-swoole2.查看config下是否有swoole.php配置文件,如果没有就去依赖中复制一份到config下 依赖配置文件路径vendor\topthink\t
2022-01-23 12:17:20
2266
原创 小程序与H5相互跳转
小程序跳H5页面A <view bindtap="nav"> 官网搜索:点击跳转 </view> nav:function nav(){ wx.navigateTo({ url: 'in', }) },页面B<web-view src='https://www.jinchikexin.com/'></web-view> 仅此一句,src=‘url’
2020-05-22 09:51:03
491
原创 PHP基础算法合集
本片文章中low是开始下键low是开始下键low是开始下键heigh是结束的下键//冒泡排序 for ($i=0;$i<count($arr);$i++){ for($j=0;$j<count($arr)-$i-1;$j++){ if($arr[$j]<$arr[$j+1]){ $temp = $arr[$j]; $arr[$j] = $arr[$j+1];
2020-05-16 19:33:44
147
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人