- 博客(36)
- 收藏
- 关注
原创 Redis与memcache的区别,以及Redis知识点梳理
今天电话面试被问及Redis与memcache的区别,当时一脸懵逼。面试结束之后查看笔记,发现我竟然了解过。。。果然知识点还是要梳理啊,好可惜Redis与memcache最主要的区别memcache只能存放在硬盘中,而Redis可以存储在磁盘。也就是说Redis可以持久化,而memcache不行 Redis的数据类型要比memcache丰富Redis知识点梳理Redis数据类型:...
2019-06-12 22:16:47
484
原创 Web安全问题:Xss攻击及解决方法
参考:蚂蚁课堂什么是Xss攻击?首先,这个词实际上是CSS(Cross Site Scripting),但它与CSS同名。所以名字是XSS。 ——摘自百度百科https://baijiahao.baidu.com/sid=1618267672561552800&wfr=spider&for=pc其实就是使用Javascript脚本注入进...
2019-06-12 19:25:05
811
原创 2019.6.8错误记录:SpringBoot用了@SpringBootApplication却扫不到包 & Type javax.xml.bind.JAXBContext not present
SpringBoot用了@SpringBootApplication却扫不到包以为用了@SpringBootApplication就可以不写扫包了,没想到@SpringBootApplication只默认扫描该类包就该早点看源码,还倒腾了好久解决方法:如果App类不跟Controller类一起,还是的加扫包要么加:@ComponentScan("com.ymk.api.c...
2019-06-08 20:22:53
605
原创 Tomcat运行war包中文乱码问题
conf文件下server.xml<?xml version='1.0' encoding='utf-8'?>server.xml端口配置中加 URIEncoding="UTF-8"<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" ...
2019-06-07 20:30:27
2207
原创 代理设计模式:静态代理、JDK动态代理、Cglib动态代理
参考:蚂蚁课堂用房屋中介模拟代理模式代理模式分类静态代理 动态代理(JDK动态代理、Cglib动态代理)静态代理程序员整理代理内容、委托关系,自定义创建代理类,所以叫做静态代理模拟中介,创建房子接口public interface House { public void sell();}卖家实现房子接口public class YMK imple...
2019-06-03 22:22:17
164
原创 设计模式:简单工厂模式与工厂生产模式的区别
参考:蚂蚁课堂先实战再总结,基于车的两个品牌:奥迪和奔驰 实现工厂模式和简单工厂简单工厂1. 都属于汽车,创建汽车接口public interface Car{ // 都能跑 public void run();}2. 奥迪实现Car接口public class AoDi implements Car { @Override public voi...
2019-06-02 22:12:36
692
原创 单例设计模式,以及4种实现方法(饿汉式、懒汉式、静态内部类、双重检测锁)
参考:蚂蚁课堂单例的实现方式什么是单例设计模式?在内存中保证只有一个实例,每次调用都是对同一个实例进行操作饿汉式:在class文件被加载的时候创建(因为怕饿) 懒汉式:只有在需要使用时,才会去创建(因为懒) 静态内部类:也是在class文件被加载时创建 双重检测锁:类似懒汉式懒汉式Java代码懒汉式线程不安全,一般都需要跟synchronized联用,用Singleton...
2019-06-02 21:40:40
229
原创 Linux:yum instal gcc失败,couldn't resolve host 'mirrorlist.centos.org问题
yum instal gcc失败报错:14: PYCURL ERROR 6 - "Couldn't resolve host 'mirrorlist.centos.org'" 不能访问百度(没网) 关闭防火墙也没效果万万没想到是之前改成了Manual,改回Automatic(DHCP)重启network,再执行yum命令就可以了(吐槽一下,百度各种修改配置文件害我倒腾了好久)...
2019-06-02 15:39:04
620
原创 Java使用自定义注解实现ORM框架(Mybatis底层实现原理)
参考:蚂蚁课堂创建需要使用到的注解创建表名称注解定义表名// 限制描述类(可加可不加)@Target(value = { ElementType.TYPE })// 描述注解的生命周期@Retention(RetentionPolicy.RUNTIME)public @interface SetTable { // 对应数据库表名 String value();}...
2019-06-01 22:21:11
647
原创 Java实现 JSON 的组装和解析
什么是JSON(JavaScriptObject Notation)JSON和xml一样都是数据交换格式。JSON是轻量级的,相比xml占带宽小、效率高JSON只有两种结构:对象和数组/*JSON对象,{}修饰,里面为 key1 : value1, key2 : value2形式,key和value可以是数字、字符串、对象和数组*/json object{ "name" : "y...
2019-06-01 21:10:57
3897
原创 Java中使用dom4j解析xml
客户端与服务器常用的数据交换格式有:xml、json、htmlxml体积、占宽带比较大,解析方式有Dom4j、Sax、Pullxml = “文档树”xml文件是树结构的,每个封闭的标签都是一个节点,每个节点都有自己的属性和内容一个xml文件只有一个根节点,但每个节点可以有多个子节点引入dom4j的jar包<dependencies> <!-- 添...
2019-06-01 20:06:54
196
原创 Redis哨兵机制(sentinel)
什么是哨兵机制Redis集群中,如果主服务器宕机(扑街)则需要手动去重启或者切换主服务器。通过哨兵机制能实现自动监听,并在从服务器中投票选举出新的masterRedis的哨兵机制功能如下:监控(Monitoring):哨兵(sentinel)会不断地检查你的Master和Slave是否运作正常。提醒(Notification):当被监控的某个Redis出现问题时,哨兵(s...
2019-05-29 17:16:34
403
原创 Redis主从复制(自带读写分离)
Redis主从复制特别方便,不需要其他中间件,而且自带读写分离前提准备至少两台服务器,或同一个IP的不同端口(我用的是VMware虚拟出来的三台Linux) 安装Redis 不同服务器务必关防火墙或开放端口号实现原理 ...
2019-05-28 21:50:07
263
原创 mycat反向代理,实现MySQL读写分离
为什么要读写分离减轻服务器的压力 提高效率,单做读或但做写,比交替执行效率高 增加冗余,高可用读写分离流程图(自绘的,有点丑...)读写分离前提至少3台服务器,一台用作mycat转发,两台用作读写(我把自己的window电脑用作转发,VMware虚拟出两台Linux作为master和slave) master和slave实现了主从同步,可以参照上一篇,传送门 安装MySQ...
2019-05-26 14:22:37
285
原创 MySQL主从复制(主从同步)的实现
主从复制的好处用作集群,缓解单台服务器的压力 读写分离的基础 数据备份 高可用前提和准备两台安装mysql的服务器我用的是两台VMware创建的虚拟机(镜像:CentOS 6.4)主服务器(master)ip --- 192.168.93.133从服务器 (salve)ip --- 192.168.93.134步骤 配置节点信息 主从服务器授权...
2019-05-26 12:18:44
334
原创 Host ‘’###‘’ is not allowed to connect to this MySQL server
登录mysql查看user表mysql> use mysqlmysql> select host,user,password from user;发现host只有localhostmysql> select host,user,password from user;+-----------------------+------+-----------------...
2019-05-25 11:28:02
207
原创 SSM整合中的SQLException: Mysql(8.0)db.properties配置
今天整合SSM没有想象中那么多错误,除去一些细节(比如忘写Autowired...)分享一下Mysql8.0 的注意事项db.propertiesjdbc.driver=com.mysql.cj.jdbc.Driver jdbc.host=localhostjdbc.database=testjdbc.userName=rootjdbc.passWord=123456jdbc...
2019-05-06 21:35:56
757
原创 ThreadLocal (本地线程)的实现原理
概述ThreadLocal 会为每个线程创建一个副本,类似于线程的私有变量,仅限于这些变量互不影响的前提下;但如果传入的是共享变量,取出的还是那个共享变量,多线程并发安全问题还是要通过其他方法去解决。ThreadLocal 只是提供了保持对象的方法和避免参数的传递,适用 ThreadLocal 的变量应该互相没有依赖关系,常用与:数据库连接、Session管理等ThreadLocal ...
2019-05-06 15:56:16
2868
原创 javax.net.ssl.SSLException MESSAGE: closing inbound before receiving peer's close_notify
今天用 generator 逆向生成的时候遇到一个报错,虽然不影响生成但是看着就是有点难受(强迫症)** BEGIN NESTED EXCEPTION **javax.net.ssl.SSLExceptionMESSAGE: closing inbound before receiving peer's close_notifySTACKTRACE:javax.net.ssl....
2019-05-04 21:42:25
7150
原创 Java并发编程:Volatile关键字
介绍Volatile之前,先要引入多线程的三个特性多线程三大特性多线程有三大特性,原子性、可见性、有序性1. 原子性:一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行例如:把买包子当成一个原子行为,我把钱给店家和店家把包子给我,要么都执行要么都不执行。不可能存在我付了钱,店家不给我包子;或者我没付钱,他送我包子的情况。原子性确保了数据的一致...
2019-05-04 15:39:40
355
2
原创 Java 守护线程(Daemon Thread)
什么是守护线程?Java中有两种线程:守护线程(后台线程)和用户线程(前台线程)守护线程顾名思义是线程中的守护者,为非守护线程(也就是用户线程)提供服务。所以当进程不存在或主线程停止,守护线程失去了存在意义,就会被停止。最好的例子就是垃圾回收线程守护线程的设置方式在线程start之前,调用 setDaemon(true) 方法将普通线程设置为守护线程要注意的是,在守护线程中的子...
2019-05-04 14:02:00
1236
原创 Spring 数据库封装工具类 jdbcTemplate 的简单使用
环境:eclipse maven+mysql 8.0+spring1. pom.xml的maven坐标注意根据自己数据库的版本选择mysql对应的jar包<dependencies> <!-- 引入Spring-AOP等相关Jar --> <dependency> <groupId>org.springframewor...
2019-05-02 12:48:38
825
原创 Strings in the Pocket(2019年 16届浙江省省赛 K题)manacher
Strings in the Pocket(题目链接)题意:输入2个串s1、s2,翻转区间s1(l, r)使s1=s2,限定(r>=l),问可翻转区间个数思路:分类讨论:1、存在不相同字符步骤:① 找到存在不相同字符的最大区间,验证s1和s2在该区间内的对称性 ② 如果满足对称性则向两边扩散,统计个数复杂度:O(n)2、不存在相同字...
2019-04-29 12:25:53
163
原创 Sequence in the Pocket(2019年 16届浙江省省赛 E题)思维题
Sequence in the Pocket(题目链接)题意:将给定序列操作成非递减序列的最小操作次数,规则:每次只能选择一个元素并将其移动到序列的开头。思路:思维题,每次移动未符合非递减规则的最大元素,可以推理出从最大元素开始往左找次大元素,再找次次大元素...都不需要移动灵光一现,最大元素往左找非递增子序列且不能中断复杂度O(n)#include <bi...
2019-04-29 10:45:56
266
原创 Element Swapping(2019年 16届浙江省省赛 B题)
Element Swapping(题目链接)思路:对于题目要求的序列a:a1+2*a2+...+k*ak = Xa;a1^2+2*a2^2+...+k*ak^2 = Ya输入的序列b:b1+2*b2+...+k*bk = Xb;b1^2+2*b2^2+...+k*bk^2 = Yb假设交换下标为l, r,对应bl, br①Xb-Xa = (br-bl)*(r-l)...
2019-04-28 21:36:58
317
原创 [Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated c
解决方法show variables like "sql_mode";set sql_mode='';set sql_mode='NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES';my.ini解决(mysql-8.0.13)sql-mode=""sql-mode="STRICT_ALL_TABLES,ERROR_...
2019-04-18 12:00:03
150
原创 Error querying database. Cause: java.sql.SQLException: The server time zone value '???ú±ê×??±??'
时区错误:解决方法:在mybatis.xml后加 “?serverTimezone=GMT%2B8” (设置时区)<property name="url" value="jdbc:mysql://localhost:3306/test?serverTimezone=GMT%2B8" />mysql解决set global time_zon...
2019-04-17 21:43:36
1759
1
原创 2019阿里校招在线笔试 —— 编程题第二题(装包裹)
忘记存原题了,不过题目数据倒是还记得题目大致描述:你拥有一个购物车免单机会,免单商品通过包裹派送,但快递限制了包裹的最大体积V和最大重量W有若干种商品,每个商品都有4个参数体积Vi、重量Wi、价值Pi、商品数量Ci、商品种类Ti(商品种类总4种:1、2、3、4,但已知1和3不能同时打包)计算出在不超出限制的最大免单价值思路:分组背包对于前两个约束(体积、重量)0...
2019-04-13 10:18:02
1279
5
原创 TNSLSNR.exe占用8080端口,tomcat无法启动
8080端口冲突 查看端口情况:netstat -ano找到对应PID原因:oracle10g 与 Tomcat端口冲突解决方法:SQL> call dbms_xdb.cfg_update(updateXML(dbms_xdb.cfg_get(), '/xdbconfig/s...
2019-04-05 14:25:29
296
原创 L3-007 天梯地图 (30 分)
题目来源:PTA题目链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805051153825792本题要求你实现一个天梯赛专属在线地图,队员输入自己学校所在地和赛场地点后,该地图应该推荐两条路线:一条是最快到达路线;一条是最短距离的路线。题目保证对任意的查询请求,地图上都至少存在一条可达路线。输入格式:...
2019-03-29 13:00:13
520
原创 Java多线程(三):线程安全问题 (下)Lock
上一篇文章提到通过synchronized实现同步,而在这篇文章中,同步会通过Lock和Condition配合实现,两者都来自jdk1.5并发包Lock本文章会使用java.util.concurrent.locks包内的ReentrantLock类(唯一实现Lock接口的类)和Condition接口模拟出synchronized和wait()配合的同步实现,首先介绍Lock类的方法...
2019-03-28 14:29:19
298
原创 Java多线程(三):线程安全问题 (上)synchronized
什么是线程安全问题?当多个线程共享相同的数据资源时,做读操作并不会被影响,而做写操作时可能会引起数据的冲突下面用代码模拟买票系统产生的线程安全问题:public class ThreadDemo { public static void main(String[] args) throws InterruptedException { ThreadTrain threadTr...
2019-03-28 11:30:33
196
原创 Java多线程(二):线程的常用方法
线程常用方法——join()、sleep()、interrupt()、setPriority()1、join()方法让调用该方法的线程先执行完毕,而其他线程都处于阻塞状态,直到调用该方法的线程死亡。源码:public final synchronized void join(long millis) throws InterruptedException { ...
2019-03-27 20:23:06
197
原创 Java多线程(一):进程与线程的区别、线程的生命周期和线程的创建方法
一、进程与线程的区别1、进程可以理解成程序的一次执行(即动态的),所以一个程序可以对应一个或多个进程(程序的多次执行),而一个进程往往包含一个或多个线程2、每个进程有独立的地址空间,包含资源。而线程共享进程的资源,可以把线程理解为轻量的进程3、线程是处理器调度的基本单位,进程是程序运行的实例为什么要区分进程和线程因为进程的执行开销比较大,把进程划分为多个线程能相对减小执行...
2019-03-26 13:47:55
1556
转载 乐观锁与悲观锁,以及Java对CAS的支持
转载自:https://www.cnblogs.com/qjjazry/p/6581568.html1 首先介绍一下乐观锁与悲观锁悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前...
2019-03-22 16:22:53
239
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人