JAVA
梦诺
人称小马哥
展开
-
Java用户锁-针对不同用户不同的锁
场景:用户点赞、取消点赞。问题:避免点赞与取消点赞冲突,在不考虑其他方法前提下,采用JAVA synchronized 进行同步锁操作,如果直接锁方法,那A用户点赞、取消点赞时,会导致其他用户无法点赞、取消点赞。所以采用锁用户ID的形式 public static void main(String[] args) {// System.out.println(DigestUtils.md5DigestAsHex(("20210928#888" + "1010").getBytes原创 2022-01-20 11:05:12 · 2028 阅读 · 1 评论 -
基于Redis实现分布式定时任务
原理利用redis(2.8.0+版本)订阅发布模式 ,当key过期时触发相关事件修改redis配置文件# 在配置文件种加入这句话,开启key过期通知。然后重启redisnotify-keyspace-events Ex测试是否配置正确redis-cli开两个窗口cli-1 订阅频道__keyevent@0__:expired127.0.0.1:6379> PSUBSCRIBE __keyevent@0__:expiredReading messages... (press Ctrl原创 2021-11-24 17:11:48 · 2207 阅读 · 0 评论 -
MYSQL悲观锁-用户余额
1.乐观锁乐观认为并发不高,甚至没有并发。其中一种实现方式依靠在表中多加一个版本号字段,每次查询更新就按这个版本号,假设在修改时版本号与数据库不一致,就需要尝试重连(重新执行)。查询SELECT * FROM user WHERE id = #{id}修改UPDATE user SET .... WHERE id = #{id} AND version = #{version}缺点:当出现并发时,可能会一直尝试重连2.悲观锁悲观认为并发经常出现,比如用户的余额问题。需要注意在Spring原创 2021-08-25 12:16:19 · 278 阅读 · 0 评论 -
Spring-Boot捕获处理异常并让事务回滚
1.不捕获异常可以正常回滚 @Transactional(rollbackFor = Exception.class) @Override public boolean testTransaction() { baseMapper.updateById(new Person().setId(1).setTicket(10)); Integer i = null; i = i.intValue() + 1; return原创 2021-08-25 11:27:45 · 1034 阅读 · 0 评论 -
SPRING-BOOT多种打包方式
JAR1.完整打包<1<plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId></plugin>java -jar server-0.0.1-SNAPSHOT.jar2.不打包依赖<!-- 不打包依赖 --><plugin> &原创 2021-01-12 09:32:42 · 278 阅读 · 0 评论 -
SPRING-BOOT打包成WAR
第一步修改pom.xml1.打包方式改成war<packaging>jar</packaging>替换成<packaging>war</packaging>如果没有“project”子节点没有“packaging”节点,直接复制添加即可2.将spring-boot-starter-tomcat的scope属性设置为provided<dependency> <groupId>org.springframew原创 2021-01-11 13:52:55 · 392 阅读 · 0 评论 -
Linux搭建Git
1.安装$ yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel$ yum install git接下来我们 创建一个git用户组和用户,用来运行git服务:$ groupadd git$ useradd git -g git$ passwd git// 查看是否成功$ id git2.新建一个Git仓库$ cd /home$ mkdir git$ chown原创 2020-09-08 16:23:20 · 137 阅读 · 0 评论 -
Java 生成自己的
相信很多人和我一样,很多时候不同的项目有时候却需要一模一样的算法方法,但是每次都重新写,太浪费时间,所以可以把自己写的方法制作成SDK.右击要封装的包,选择导出选择JAR文件,然后点击NEXT,!点击下一步点击下一步这里需要选择Main类,点击“浏览”,然后选择写有main方法的类,点击OK。最后点击完成就可以了一个属于你的SDK就完成啦!...原创 2018-10-04 23:03:02 · 297 阅读 · 0 评论 -
Java 并发控制实例 (银行问题取钱存钱)
并发主要的就是解决同步问题。如果数据不同步,如假设A的银行余额为500。A用网银取了500,同时用ATM机取了500,那A将会有概率总共取得1000(因为网银与ATM是独立的,出现网银取钱了,但还未扣款,或者扣了钱但数据还没反馈到总服务器,然后ATM的得的数据还是原来的数据,即余额任然为500,所以依然可以取出500,500+500=1000).所以需要并发控制来解决问题,此实例采用Java ...原创 2018-09-22 01:04:56 · 4098 阅读 · 0 评论 -
Java 并发之 synchronized
synchronized通俗的说就是告诉JVM被他标记的东东就是同步区,需要注意1. 同步方法public synchronized void method1(){ System.out.println("a");}public synchronized void method2(){ System.out.println("b");}当线程1调用method1,线程2调用me...原创 2018-09-21 23:36:19 · 104 阅读 · 0 评论 -
Java 解析 wait(),notify(),notifyAll()
wait() 让线程处于阻塞状态(让他暂时不工作,睡觉)notify() 唤醒处于睡觉的线程(运行了wait() 的线程),但是只随机的唤醒一个线程(随机由JVM决定,人不能决定)notify() 唤醒所有沉睡的线程3者都需要放在同步代码中,线程中需要Thread先获取某个Object对象的锁,不然会报异常错。(虽然在同步块中,但当折行到wait()时,锁将被释放,即其他线程可以调用wait...原创 2018-09-21 23:08:15 · 139 阅读 · 0 评论 -
JAVA 解析 类和对象
人类分为男,女。男女就是类。具体到每一个人就是对象。对象来源于类。原创 2018-09-21 00:39:33 · 400 阅读 · 0 评论 -
JAVA 解析 static
1.修饰成员变量相当于把变量变成全局变量,修饰后属于类,不再属于对象,即来源于同一个类的多个对象共享它,其中一个对象修改它的值,其他对象访问的时候以最后一次修改的值为标准。2.修饰成员方法static的另一个作用,就是修饰成员方法。相比于修饰成员属性,修饰成员方法对于数据的存储上面并没有多大的变化,因为我们从上面可以看出,方法本来就是存放在类的定义当中的。static修饰成员方法最大的作用,...原创 2018-09-21 00:59:28 · 123 阅读 · 0 评论 -
Java中private、protected、public和default的区别
https://www.cnblogs.com/dotgua/p/6354151.html?utm_source=itdadao&amp;utm_medium=referral原创 2018-09-21 01:00:40 · 181 阅读 · 0 评论 -
Java 自定义接口类
自定义接口类,可以理解为声明方法类public interface Tools(){ public void Method(Object o);}自定义实现类,实现接口类中声明的方法的算法public class ToolsImp(){ public void Method(Object o){ System.out.println(o); }}调用接口,不需要实例化p...原创 2018-10-03 18:15:42 · 2493 阅读 · 0 评论 -
JSONObject 解析
JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互。在java中使用,需要导入**–net.sf.json.下的类(jar包是json-lib-x.x.jar*)JSON在对Object转换的时候,是按照domain类(写有get和set方法的对象类,如下面的Student类)中的所有getXXX(...原创 2018-10-03 18:32:17 · 309 阅读 · 0 评论 -
Java并发性和多线程介绍目录
http://ifeve.com/java-concurrency-thread-directory/转载 2018-09-21 21:58:30 · 117 阅读 · 0 评论 -
Java并发控制实例(读者与写者)
package com.asmn.test;import static com.asmn.tools.Tools.*;public class Test { public static void main(String[] args){ Signal signal = new Signal(); pl("start writer"); new Thread(new Write...原创 2018-09-21 22:48:58 · 207 阅读 · 0 评论 -
Java 游戏开发 模板1
package com.asmn.sudoku;import java.awt.Color;import java.awt.Graphics;import javax.swing.JFrame;import javax.swing.JPanel;public class MainGame extends JPanel { static int width, height; /...原创 2018-09-23 19:42:47 · 363 阅读 · 0 评论