![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java编程
码农小虾
笔记
展开
-
CAS理解
一、概念CAS:Compare and Swap,即比较再交换。CAS是乐观锁的一种实现方式。 对CAS的理解,CAS是一种无锁算法,CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。CAS是CPU指令级的操作,只有一步原子操作二、应用场景乐观锁的适用场景于就是读多写少的场景。若发生大量的线程...原创 2019-12-13 10:44:11 · 265 阅读 · 0 评论 -
Redis分布式锁的正确实现方式
https://blog.csdn.net/yb223731/article/details/90349502首先,set()加入了NX参数,可以保证如果已有key存在,则函数不会调用成功,也就是只有一个客户端能持有锁,满足互斥性。其次,由于我们对锁设置了过期时间,即使锁的持有者后续发生崩溃而没有解锁,锁也会因为到了过期时间而自动解锁(即key被删除),不会发生死锁。最后,因为我们将value...转载 2019-12-04 16:12:26 · 179 阅读 · 0 评论 -
java 如何提交list 到后台
1、在jsp 隐藏提交多个name相同的值 ${status.index +1 } 2、js 脚本处理 var原创 2017-10-18 15:29:19 · 4777 阅读 · 0 评论 -
springboot(1)入门
https://www.cnblogs.com/moonlightL/p/7891803.htmlhttp://www.ityouknow.com/springboot/2016/01/06/springboot(%E4%B8%80)-%E5%85%A5%E9%97%A8%E7%AF%87.html一、什么是springboot?Springboot设计的目的是简化spring应用初始搭建以及开发...转载 2018-03-24 17:59:32 · 173 阅读 · 0 评论 -
springboot中整合thymeleaf模板
http://www.cnblogs.com/moonlightL/p/7891806.htmlhttp://www.ityouknow.com/springboot/2016/02/03/springboot(%E4%BA%8C)-web%E7%BB%BC%E5%90%88%E5%BC%80%E5%8F%91.html一、什么是 Thymeleaf?Thymeleaf是一款用于渲染XML/XHT...转载 2018-03-25 22:53:41 · 165 阅读 · 0 评论 -
springboot整合redis
一般版本https://www.cnblogs.com/gyjx2016/p/5893192.html详细版本https://blog.csdn.net/abombhz/article/details/78123253?locationNum=6&fps=1一、在pom文件中引入即可pom.xml<dependency> <groupId>org.spri...转载 2018-03-27 17:56:26 · 1889 阅读 · 0 评论 -
springboot整合Apache Shiro
Apache Shiro Features 特性Authentication(认证), Authorization(授权), Session Management(会话管理), Cryptography(加密)被 Shiro 框架的开发团队称之为应用安全的四大基石。那么就让我们来看看它们吧:Authentication(认证):用户身份识别,通常被称为用户“登录”Authorization(授权)...原创 2018-05-18 16:15:00 · 199 阅读 · 0 评论 -
springboot配置
1、@SpringBootApplication 包含哪些主要注解?① @Configuration :可以和@Bean一起创建一个简单的spring配置类(java),用来代替相应的xml配置文件@Configuration public class Conf { @Bean public Car car() { Car car = new Car(); c...原创 2018-06-21 10:54:25 · 141 阅读 · 0 评论 -
并发容器
一、有N张火车票,多线程售票1、放arraylist ,销售一张remove()一次 出现 重卖,超卖2、放Vector ,调用remove ,问题依旧,因为虽然集合vector的判断和remove为原子性但是放一起执行 中间的调用代码无法保持原子性,3、加入sycnize,锁住当前对象,问题解决,但效率低4、使用队列 static Queue<String> ticket...原创 2018-07-25 10:38:14 · 177 阅读 · 1 评论 -
马士兵高并发(一)笔记
一、1.synchronized关键字锁定的是对象不是代码块,demo中锁的是object对象的实例(堆内存中)2.锁定的对象有两种情况:①类的实例 ②类的字节码(.class)3.关于线程安全:加synchronized关键字之后不一定能实现线程安全,具体还要看锁定的对象是否唯一。二、1.synchronized(this)锁定的是当前类的实例,demo中锁定的是Demo02类的实例...转载 2018-07-25 15:05:15 · 4254 阅读 · 0 评论 -
冒泡排序性能优化详解
一、双重循环 第一层for循环 控制排序的轮数回合的趟数,第二层相邻元素两两比较,交换元素,ints.length-i-1为无序数列的边界,随着趟数的变大,是不断缩小的import java.util.Arrays;public class BubbleSort_1 { //冒泡排序 public static void sort(int[] ints){ ...转载 2018-08-24 16:10:20 · 297 阅读 · 0 评论 -
【策略模式】如何结合spring实现一个接口多个实现,如何解决接口选择问题
1、首先把映射关系放在spring-mvc.xml配置文件<bean id="dispatcher" class="com.ms.kai.bms.dispatcher.AbstractDispatcherImpl"> <property name="serviceMap"> <map> <entry key=&quo原创 2018-09-13 15:11:23 · 3214 阅读 · 0 评论 -
自定义header字段跨域报错问题
项目后台用header的token字段接收token数据String token = request.getHeader("token");前端ajax请求报错:from origin 'http://192.168.1.100:8020' has been blocked by CORS policy: Response to preflight request doesn't pass a...原创 2019-04-26 10:07:49 · 4545 阅读 · 0 评论 -
Linux环境下MongoDB 安装以及配置
一、下载并解压压缩包https://www.mongodb.com/download-center?jmp=nav#community 下载最新的压缩包mongodb-linux-x86_64-4.0.12.tgztar -zxvfmongodb-linux-x86_64-4.0.1.tgzmv /usr/local/mongodb/bin二、配置系统环境变量:vim/etc...原创 2019-09-19 17:27:05 · 342 阅读 · 0 评论 -
马士兵高并发(二)笔记
https://www.jianshu.com/p/bb5105303d85 CountDownLatch、Semaphore和CyclicBarrier。一、ReentraLock手动锁,重入锁 ReentranLock,可替代synchronize,更灵活1、必须要手动释放锁,经常在finally中进行锁释放。2、可以尝试锁定tryLock,或者指定时间内无法锁定,线程可以决...原创 2019-09-19 17:30:34 · 431 阅读 · 0 评论 -
在Eclipse中使用JUnit4进行单元测试(spring中调用DAO)
参考 :http://blog.csdn.net/andycpp/article/details/1327147/ http://blog.csdn.net/zhangzikui/article/details/11071881jar包下载 http://www.jb51.net/codes/539546.htmlpackage com.zte.quartz;import jav转载 2018-03-01 08:50:06 · 1854 阅读 · 1 评论 -
java多线程
1、多线程的优点:1.防止阻塞 2.并发执行,充分利用CPU,提高程序效率 2、如何创建一个线程:1.实现Runnable接口,然后将它传递给Thread的构造函数,创建一个Thread对象public class DisplayMessage implements Runnable { public void run() {//重写run方法 } }Runnable h原创 2018-03-01 08:40:32 · 116 阅读 · 0 评论 -
公钥和私钥
总结:公钥和私钥是成对的,它们互相解密。公钥加密,私钥解密。私钥数字签名,公钥验证。A——>BA用B公钥加密,B用B的私钥解密。B——>AB用B私钥数字签名,A用B公钥验证。原创 2017-08-02 13:52:50 · 286 阅读 · 0 评论 -
关于Spring的AOP容器的简单理解
AOP这个就是面向切面编程,可以为某一类对象 进行监督和控制(也就是 在调用这类对象的具体方法的前后去调用你指定的 模块)从而达到对一个模块扩充的功能。比如说日志、安全、缓存等那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码AOP的核心思想就是“将应用程序中的商业逻辑同对其提供支持的通用服务进行分离。”代理的两种方式:1、静态代理转载 2017-08-09 16:07:44 · 1086 阅读 · 0 评论 -
大型网站架构技能图谱(Java版)
在大型网站技术架构中,涉及到许多的技术,这些技术是具备大型网站架构设计能力的前提和基础。因为笔者对Java比较熟悉,所以下面的技术图谱都是围绕Java后端工程师展开的。如有不正确或者不完善的地方,欢迎补充转载 2017-08-04 14:25:04 · 320 阅读 · 0 评论 -
简单说下String、StringBuffer和StringBuilder的区别
String :String是字符串常量,也就是不可变的对象,每次操作字符串时,都是不断创建一个新的对象,而原来的对象被GC回收,效率低StringBuffer:字符串变量,线程安全,性能慢StringBuilder:字符串变量,线程不安全,性能快总结:如果是少量的数据可以用String,单线程大量数据操作字符串的用StringBuilder,多线程操作字符串的原创 2017-09-13 10:11:26 · 180 阅读 · 0 评论 -
java支付接口开发
业务流程步骤:1、生成订单信息2、商户到银行,商户发起请求到银行把订单信息的部分数据拼接,然后通过银行端给的MD5加密工具加密,然后作为参数,通过http的post请求 发送到支付提供的目标银行网站var bankURL = "b2bpay.ccb.com/NCCB/NECV5B2BPayMainPlat"; // 生产环境的银行请求地址 tmp = 'MERCHANTID原创 2017-08-04 10:58:45 · 15034 阅读 · 1 评论 -
关于数据库字段为DATE类型的日期处理
数据库查询出来字段为TIMESTAMP类型一般建议不使用MySql的 DATE_FORMAT(T.EVENT_DATE, '%Y-%m-%d %H:%i:%S')或者 Oracle的 to_char(date,’format’) 在sql语句做转换String如果换数据库得修改代码,所以最好是在js做转换/** * 将日期格式化成指定格式的字符串 * @p原创 2017-09-20 11:18:56 · 9290 阅读 · 0 评论 -
eclipse右键卡死
1、如果是刚导入的新项目,第一次加载项目,项目比较大的话,会比较卡,没响应就等一下让它加载,加载完这一次,之后就比较快了2、第二种就是之前右键很快响应,后面一右键就卡死,可以使用下面这种方法只要删除掉工作空间下的.metadata\.plugins\org.eclipse.ui.workbench下的重启eclipse即可。原创 2017-11-07 11:29:20 · 4173 阅读 · 2 评论 -
Spring Quartz 和 Spring Task使用比较
Spring Quartz 和 Spring Task执行时间对比: 1. Quartz设置同步模式时:一个任务的两次执行的时间间隔是:“执行时间”和“trigger的设定间隔”的最大值 2. Task默认同步模式:一个任务的两次执行的时间间隔是:“执行时间”+“trigger的设定间隔”,即一个任务完成执行后,才开始trigger计时精确度和功能 Quartz可以通过cron表达转载 2017-11-07 11:33:06 · 1085 阅读 · 0 评论 -
java 如何读取配置文件
很多时候,经常改动的变量都会写入配置文件里面,程序里面再读入。common.propertiesOERP_TABLESPACE=APPS.工具类CommonUtils.javaimport java.util.Properties;public class CommonUtils { //根据文件名获取属性文件 public static Pr原创 2017-10-24 11:28:07 · 201 阅读 · 0 评论 -
mybatis通过存储过程同步数据(向table插入数据)
service.javaMap<String, Object> params = new HashMap<String, Object> (); params.put("bill_no", billNo); checkListDao.synchronizeAc(params); String rtn_code = params.get("rtn_code"...原创 2018-02-26 10:43:53 · 1056 阅读 · 0 评论 -
java IO流总结梳理
http://blog.csdn.net/yuebinghaoyuan/article/details/73880591、什么是流? 流是对数据传输的总称或抽象。即数据在两设备间的传输称为流。本质就是数据传输2、io流的分类根据数据流的方向:输入流和输出流根据处理数据单位:字节流和字符流根据实现功能不同:节点流和处理流输入流和输出流输入和输出都是从程序的角度来说的字节流和字符流字节流:一次读入或者...转载 2018-03-08 16:36:18 · 543 阅读 · 0 评论 -
集合框架总结
Collection 接口的接口 对象的集合 ├ List 子接口 按进入先后有序保存 可重复 │├ LinkedList 接口实现类 链表 插入删除 没有同步 线程不安全 │├ ArrayList 接口实现类 数组 随机访问 没有同步 线程不安全 │└ Vector ...转载 2018-03-15 11:31:10 · 153 阅读 · 0 评论 -
spring中使用线程池
bean 配置applicationContext.xml =notifyScheduledMainExecutor.maxNum;默认为Integer.MAX_VALUE --> maven配置jar包pom.xml org.spring原创 2018-03-01 08:39:46 · 4660 阅读 · 0 评论 -
关于Spring的IOC容器的简单理解
一、IOC的由来:当某个角色(可能是一个Java实例,调用者)需要另一个角色(另一个Java实例,被调用者)的协助时,在 传统的程序设计过程中,通常由调用者来创建被调用者的实例。A类调用B类的方法时候,需要new一个B,才能调用B的方法我们可以手写个B的工厂,让工厂去创建B。如果A类还需要C类,D类。。。当业务逻辑复杂的时候,我们就需要创建多个工厂,而且还要主要每次创建保证一个实例原创 2017-08-09 11:07:27 · 286 阅读 · 0 评论