
JAVA
文章平均质量分 65
Xyg-
这个作者很懒,什么都没留下…
展开
-
2022M6学习笔记
笔记整理原创 2022-06-08 19:42:42 · 259 阅读 · 0 评论 -
重温电商项目完整笔记(Undo)
慕课网17年项目完成电商web的用户模块、分类模块、商品模块等原创 2022-06-08 09:47:32 · 984 阅读 · 0 评论 -
Redis应用Consistent Hash分布式算法原理,连接池及接口封装
Consistent Hash (分布式算法)将0到2^32-1的数轴首尾相连,key和Cache采用同样的hash算法计算并分布在环行数轴上,每一个key存储在顺时针方向离它最近的一个Cache中。**hash倾斜性:**导致Cache节点分布不均匀导致有些Server负载过大,有些Server过于空闲。解决: 引入虚拟节点命中率公式:(1-n/(n+m))*100% n:服务器台数,m:新增台数**Redis应用:**使用SharedJedisPool,初始化时指定。RedisSha原创 2020-05-19 22:18:16 · 266 阅读 · 0 评论 -
Tomcat集群Nginx负载均衡配置笔记
电商项目中Tomcat集群配置带来的主要问题:1.session登录信息存取问题2.服务器定时任务并发问题解决方案:1.nginx hash ip优点:不改变现有架构,直接横向扩展缺点:分配不平均、IP变化无法服务2.nginx负载均衡 + session server+分布式锁单机部署多应用1.在/etc/profile 配置多个Tomcat环境变量2.第一个tomcat不变,在第二个tomcat的bin目录下打开catalina.sh,给catalina_base 和 Catalin原创 2020-05-19 00:15:12 · 183 阅读 · 0 评论 -
Lombok简介
官网:https://peojectlombok.org作用:通过简单注解,消除冗长代码优点:提高编码效率,使代码更简洁,避免修改方法字段时忘记修改方法名。原理:javac支持“JSR 269 API”规范,只要程序实现了这个API就能在javac运行时得到调用。编译程序对源代码进行分析,生成一棵AST抽象语法树,处理过程中运行LomBok注解处理器程序,对AST进行处理,然后Lombok Annotation Handler找到注解所在类对应语法树,修改语法树,输出修改过的抽象语法树并进行解析生成。原创 2020-05-18 16:05:59 · 168 阅读 · 0 评论 -
电商项目笔记(购物车模块)
购物车高复用核心方法private CartVo getCartVoLimit(Integer userId){ CartVo cartVo = new CartVo(); List<Cart> cartList = cartMapper.selectByUserId(userId); List<CartProductVo>...原创 2020-05-06 21:57:31 · 555 阅读 · 0 评论 -
电商项目要点笔记(商品模块)
用户模块要点Md5加密横向越权与纵向越权Guava Cache的使用设计和封装无限层级树状数据结构递归处理复杂对象排重重写hashcode和equal静态块PageHelper分页Mybatis 对动态list遍历Mybatis 对where动态拼装pojo、bo、vo 与 pojo、voMd5加密横向越权与纵向越权Guava Cache的使用分类模块要点Md5加密横向越权与纵向越权Gua...原创 2020-05-06 21:57:00 · 419 阅读 · 0 评论 -
电商项目要点笔记(分类模块)
分类模块要点设计和封装无限层级树状数据结构递归处理复杂对象排重重写hashcode和equal设计和封装无限层级树状数据结构递归处理复杂对象排重重写hashcode和equal...原创 2020-04-30 15:37:15 · 359 阅读 · 0 评论 -
电商项目笔记(用户模块)
用户模块要点Md5加密横向越权与纵向越权Guava Cache的使用Md5加密横向越权与纵向越权Guava Cache的使用原创 2020-04-30 15:21:54 · 265 阅读 · 0 评论 -
Java从0-1基础重刷 - 笔记(final与多线程高并发,多线程能否共享成员变量)
1.详解:https://www.cnblogs.com/yuanqinnan/p/11231274.html2.question:多线程同一对象引用会共享成员变量吗?answer:代码区和数据区是分开的,每个线程独自拥有自己的局部变量。创建的对象与方法放在堆中,但每个线程有自己的栈存放变量。...原创 2020-02-28 11:06:34 · 266 阅读 · 0 评论 -
Java从0-1基础重刷 - 笔记(基本类和包装类)
一. 基本类和包装类基本类包装类长度byteByte8charCharacter16shortShort16intInteger32floatFloat32longLong64doubleDouble64包装类不可被继承。1.包装类应用:集合类泛型只能使用包装类成员变量不允许有默认值时使用包...原创 2020-02-27 23:04:50 · 107 阅读 · 0 评论 -
题目笔记整理(一)
1.IP地址分类方法:A1.0.0.0 到126.0.0.0有效0.0.0.0 和127.0.0.0保留B128.1.0.0到191.254.0.0有效128.0.0.0和191.255.0.0保留C192.0.1.0 到223.255.254.0有效192.0.0.0和223.255.255.0保留D224.0.0.0到239.255.255.255用于多点广播E240...原创 2020-02-26 19:42:10 · 200 阅读 · 0 评论 -
JVM虚拟机及线程池学习笔记
线程池corePoolSize当前线程数=corePoolSize 阻塞,阻塞队列满时创建新线程,直至macPoolSize,再来任务时,执行reject()。初始化线程池newFixedThreadPool() 初始化指定大小,即使没有可执行任务也不会释放线程。阻塞队列:LinkedBlockingQueuenewCachedThreadPool() 初始化可以缓存的线程池,默认缓存6...原创 2019-03-09 11:32:40 · 225 阅读 · 0 评论 -
cookie和session的区别
Session 是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中; Cookie 是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现 Session 的一种方式。...原创 2019-03-09 11:32:22 · 128 阅读 · 0 评论 -
JVM虚拟机
内存模型线程私有: 程序计数器 记录正在执行的虚拟机字节码指令的地址,本地方法则为空; 虚拟机栈 Java方法在执行时会创建一个栈帧用于存储局部变量表、操作数栈、常量池引用等信息,调用至执行完成的过程,对应着一个栈帧在 Java 虚拟机栈中入栈和出栈的过程; 本地方法栈 本地方法:一般为使用其他语言编写的被编译为基于本机硬件和操作系统的程序,本地方法栈为之服务。 ...原创 2018-09-07 22:26:07 · 155 阅读 · 0 评论 -
线程、线程池、引用及volatile与synchronized的区别
sychronizated 底层实现自旋锁,偏向锁,轻量级锁,重量级锁的介绍以及升级过程volatile 底层实现CAS乐观锁的原理ASQ 的原理CountDownLanch 和 CyclicBarrier 的区别和用法线程池的使用和相关参数线程池的拒绝策略FixedThreadPool SingleThreadPool CacheThreadPool 一些细节,比如说用了什么队...原创 2018-09-11 20:00:26 · 368 阅读 · 0 评论 -
volatile实现原理
via:yzwall技术笔记 https://www.cnblogs.com/yzwall/p/6661528.html volatile变量写,汇编指令会多出Lock前缀,Lock前缀在多核处理器下的作用:将当前处理器缓存行的数据写回主存; 令其他CPU里缓存该内存地址的数据无效;针对编译器重排序:JMM针对编译器指定了volatile重排序规则表,规定哪些先后操作不能进行编译...转载 2018-09-06 08:36:50 · 258 阅读 · 1 评论 -
序列化和反序列化的方法及底层实现
个人学习摘抄与反思总结 via:徐刘根 https://blog.youkuaiyun.com/xlgen157387/article/details/79840134序列化和反序列化的方法实现了Serializable 或 Externalizable 接口才能被序列化,否则将会抛出异常。若一个实现了Serializable接口的类对象需要被序列化,则可以通过ObjectOutputStre...原创 2018-09-06 11:08:32 · 638 阅读 · 0 评论 -
Hibernate与Mybatis的区别、Hibernate一级缓存与二级缓存之间的区别
Hibernate对数据库提供了较为完整的封装,不需要手写SQL语句,自动生成、自动执行,持久层框架,开源的对象关系映射,对JDBC的进一步封装。 Mybatis着力点在于JAVA对象与SQL之间的映射关系,需要编写sql语句,半自动,需要注意的细节更多,但是更有益于sql的优化,移植性弱,缓存机制不如hibernate。Hibernate优点 (1)不需要编写SQL语句 (2)移植性好...原创 2018-09-12 18:03:05 · 3223 阅读 · 0 评论 -
String、StringBuffer、StringBulider的区别
1. String是不可变的字符串常量,StringBuffer和StringBulider是字符串变量; 2. String和StringBuffer是线程安全的,StringBulider是线程不安全的。 所有的不可变类都是线程安全的 StringBuffer中很多方法可以带有synchronized关键字而StringBulider没有 运行速度: StringBulider...原创 2018-09-07 08:27:37 · 160 阅读 · 0 评论 -
Mybatis三剑客——Mybatis Generator、Mybatis plugin、Mybatis
一、Mybatis Generator作用: 根据数据库自动生成pojo、dao(接口,供service调用)及对应xml文件。配置:1.倒入jar包。Maven托管: &amp;amp;lt;plugin&amp;amp;gt; &amp;amp;lt;groupId&amp;amp;gt;org.mybatis.generator&amp;amp;lt;/groupId&amp;amp;原创 2018-10-12 16:29:05 · 884 阅读 · 0 评论 -
电商网站横向越权与纵向越权问题解决
横向越权指攻击者尝试访问与他拥有相同权限的用户的资源,即同等级别的资源访问。如,一个用户试图访问其他用户的个人资料、尝试篡改其他用户的密码。解决方法: 添加有有效期的token值标识,操作时比对。解决案例:Q:编码时将重置密码问题与重置密码分为两个接口编写,重置密码传入值为用户名及密码,用户修改密码时进行密保答题,在成功答题后可通过持有其他用户用户名对同级用户进行密码修改。S:指提交答案...原创 2018-10-17 11:09:48 · 1184 阅读 · 0 评论 -
Vector、ArrayList和LinkedList的使用场景、elemenData为什么要用transient修饰
使用场景:(1)如果应用程序对各个索引位置的元素进行大量的存取或删除操作,ArrayList对象要远优于LinkedList对象;( 2 ) 如果应用程序主要是对列表进行循环,并且循环时候进行插入或者删除操作,LinkedList对象要远优于ArrayList对象;...原创 2019-03-09 11:30:09 · 263 阅读 · 0 评论 -
Java基础 数组、基本类型转换
基本类型转换基本类型: 浮点型(float、double)、整形(byte、short、int、long)、字符类型(char) 引用类型: 类类型、接口类型、数组类型从低位到高位排列: byte &amp;gt; short &amp;gt; char &amp;gt; int &amp;gt; long &amp;gt; float &amp;gt; doubleint[] a原创 2019-03-09 11:30:31 · 430 阅读 · 0 评论 -
Java中的“堆”,"栈","堆栈","队列"及其区别(笔记整理)
“堆”,”栈”,”堆栈”,”队列”详解及其区别**堆** ①堆通常是一个可以被看做一棵树的数组对象。堆总是满足下列性质: 堆中某个节点的值总是不大于或不小于其父节点的值; 堆总是一棵完全二叉树。 将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。常见的堆有二叉堆、斐波那契堆等。 ②堆是在程序运行时,而不是在程序编译时,申请某个大小的内存空间。即...转载 2018-09-04 08:54:12 · 3757 阅读 · 0 评论