
后端
文章平均质量分 67
码上行舟
接受自己的普通,然后全力以赴的出众
展开
-
java线程的几种操作
如果需要一个比较可靠的 suspend() 方法,可以利用 wait() 方法和 notify() 方法,在应用层面实现 suspend() 方法和 resumme() 方法。等待线程终止,指的是:主线程中调用该方法,就会让调用该方法的线程先执行,等执行结束后,再回到主线程继续执行。方法,其本质只是设置该线程的中断标志,将中断标志设置为true,并根据线程状态决定是否抛出异常。使用suspend()方法挂起线程回导致线程在暂停的同时,不释放任何锁资源。线程让步,指的是让当前线程暂停执行,并执行其他线程。原创 2023-02-15 13:56:47 · 575 阅读 · 0 评论 -
java创建线程的三种方式
即在一个程序中可以同时运行多个不同的线程来执行不同的任务, 也就是说允许单个程序创建多个并行执行的线程来完成各自的任务。考虑道 Java 是单继承的,也就是说继承本身也是一种很宝贵的资源,因此,我们也可以使用 Runnable 接口来实现同样的操作。线程 Thread 有一个 run() 方法,start() 方法就会新建一个线程并让这个线程执行 run() 方法。Callable 规定的方法是 call(),而 Runnable 规定的方法是 run()。:不要用 run() 方法开启新线程。原创 2023-02-15 13:24:18 · 516 阅读 · 0 评论 -
redis实现分布式锁
加锁:使用set扩展命令,key:锁标识,value:持有当前锁线程标识,NX是if not exists(如果不存在)的简写,PX:超时时间(毫秒)。Redisson分布式锁的主要原理非常简单,利用了lua脚本的原子性。解锁:只有当前锁的持有者才可以执行删除操作,通过lua脚本保证了get和del命令执行的原子性操作。如果在一个客户端持有锁的期间,这个客户端崩溃了,也要保证后续的其他客户端可以上锁。分布式锁的目的其实很简单,就是为了保证多台服务器在执行某一段代码时保证只有一台服务器执行。原创 2023-02-14 14:05:16 · 480 阅读 · 0 评论 -
Zookeeper实现分布式锁
分布式应用程序可以基于Zookeeper实现诸如数据发布/订阅,负载均衡,命名服务,分布式协调/通知,集群管理,Master选举,分布式锁和分布式队列等功能。然后 B 来获取锁,他按照顺序创建了000001的临时顺序节点,发现前面有一个比他小的节点,那么就获取锁失败。A 先来了,他创建了000001的临时顺序节点,他发现自己是最小的节点,那么就成功的获取到了锁。多个客户端来竞争锁,各自创建自己的节点,按照顺序创建,谁排在第一个,谁就成功的获取了锁。就像排队买东西一样,谁排在第一个,谁就先买。原创 2023-02-13 11:51:47 · 460 阅读 · 0 评论 -
docker-compose部署dubbo+zookeeper项目
Dubbo在Docker中部署时向注册中心注册的是Docker实例的IP地址,通常为:172.128.0.*,而不是宿主机的ip地址,这样如果微服务需要跨宿主机调用的话,则是调用不到的,因此就需要让dubbo在向注册中心注册服务的时候,使用的ip地址是宿主机的ip地址。,如果是springboot jar包部署的可以用shell脚本暂停几秒钟再启动,或者用自启动的方式监听端口,如果不存在,则启动项目。dubbo 可以通过下面的属性,在启动docker的时候进行设置。原创 2023-02-12 10:24:40 · 859 阅读 · 0 评论 -
docker-compose搭建zookeeper集群
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。注意:如果使用volumes绑定了/conf,则environment里zookeeper的配置会失效。如果没有提供zoo.cfg文件,则使用ZooKeeper推荐的默认值。这个参数可以设高一些,否则可能会出现超时,例如20000ms。原创 2023-02-10 10:21:15 · 1042 阅读 · 0 评论 -
解决fastjson解析数据后顺序改变的问题
问题描述使用JSON.parseArray出现的情况// 原始数据[{"price":"121","num":"212","alertNum":"11","name":"1121 联通2G 5寸 16G 16G 300万像素 红 实施","spec":{"网络":"联通2G","手机屏幕尺寸":"5寸","机身内存":"16G","存储":"16G","像素":"300万像素","颜色":"红","测试":"实施"},"categoryId":3,"categoryName":"电子书"原创 2021-11-29 19:24:53 · 2085 阅读 · 0 评论 -
层级数据存储
文章目录数据表设计算法设计完整代码要存储的数据如下图所示要求:把下面的数据存储到 mysql 数据库中,并能把数据库中读取数据转换成原来的数据data: [{ label: '一级 1', children: [{ label: '二级 1-1', children: [{ label: '三级 1-1-1' }] }]}, { label: '一级 2', children: [{原创 2021-09-07 16:57:05 · 480 阅读 · 0 评论 -
servlet 执行流程
servlet 执行流程编写一个 servlet 程序编写 Servlet 的映射执行流程配置 tomcat编写一个 servlet 程序编写一个普通类实现 servlet 接口,这里我们直接继承 HttpServletpackage com.carve.servlet;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpSe原创 2021-03-08 22:04:52 · 594 阅读 · 0 评论