深度好文
诚o
这个作者很懒,什么都没留下…
展开
-
Java特殊的代码注释XXX、TODO、FIXME以及自定义代码注释
TODO: + 说明: 如果代码中有该标识,说明在标识处有功能代码待编写,待实现的功能在说明中会简略说明。FIXME: + 说明: 如果代码中有该标识,说明标识处代码需要修正,甚至代码是错误的,不能工作,需要修复,如何修正会在说明中简略说明。XXX: + 说明: 如果代码中有该标识,说明标识处代码虽然实现了功能,但是实现的方法有待商榷,希望将来能改进,要改进的地方会在说明中简略说明...原创 2019-02-04 17:19:31 · 3771 阅读 · 1 评论 -
高性能网站设计之缓存更新的套路
看到好些人在写更新缓存数据代码时,先删除缓存,然后再更新数据库,而后续的操作会把数据再装载的缓存中。然而,这个是逻辑是错误的。试想,两个并发操作,一个是更新操作,另一个是查询操作,更新操作删除缓存后,查询操作没有命中缓存,先把老数据读出来后放到缓存中,然后更新操作更新了数据库。于是,在缓存中的数据还是老的数据,导致缓存中的数据是脏的,而且还一直这样脏下去了。我不知道为什么这么多人用的都是这...转载 2019-02-04 13:16:00 · 178 阅读 · 0 评论 -
数据库配置导致的时区问题
在代码编写过程中发现用eclipse插入mysql数据库的时间在代码中查到的不一致,代码中查到的时间晚几个小时,而进而用eclipse查询发现时间是正确的,进而觉得应该是时区配置的原因。发生时区问题的配置:spring: datasource: url: jdbc:mysql://xxx.xxx.xxx.xxx:3306/seckill?useUnicode=true&ch...原创 2019-02-02 13:08:57 · 4665 阅读 · 1 评论 -
彻底解决mysql中文乱码
mysql是我们项目中非常常用的数据型数据库。但是因为我们需要在数据库保存中文字符,所以经常遇到数据库乱码情况。下面就来介绍一下如何彻底解决数据库中文乱码情况。1、中文乱码1.1、中文乱码 create table user(name varchar(11)); # 创建user表 insert into table user("carl"); # 添加数据 se...转载 2019-02-01 18:45:55 · 1203 阅读 · 0 评论 -
Java线程生命周期图
原创 2019-01-08 19:29:02 · 969 阅读 · 1 评论 -
重排序与对象创建
为什么多线程重排序就不安全了:原创 2019-01-07 21:35:40 · 861 阅读 · 0 评论 -
Linux 中如何卸载已安装的软件
Linux软件的安装和卸载一直是困扰许多新用户的难题。在Windows中,我们可以使用软件自带的安装卸载程序或在控制面板中的“添加/删除程序”来实现。与其相类似,在Linux下有一个功能强大的软件安装卸载工具,名为RPM。它可以用来建立、安装、查询、更新、卸载软件。该工具是在命令行下使用的。在Shell的提示符后输入rpm,就可获得该命令的帮助信息。 软件的安装 Linux下软件的安装...转载 2019-02-06 16:23:18 · 10926 阅读 · 0 评论 -
Java的三种代理模式
Java的三种代理模式1.代理模式代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法举个例子来说明代理的作用:假设我们想邀请一位明星,那么并不是直接...转载 2019-02-28 22:02:36 · 98 阅读 · 0 评论 -
eclipse使用git提交项目
准备工作:目的:eclipse使用git提交本地项目,提交至远程github上eclipse版本:eclipse4.5 64位jdk版本:jdk-1.7 64位项目类型:maven web项目备注:eclipse高版本自带git插件,而低版本则需自己安装git插件,这里使用eclipse高版本,低版本安装git插件这里不进行介绍。eclipse使用git提交项目有2种方式...转载 2019-02-14 12:06:09 · 323 阅读 · 0 评论 -
SpringBoot的JSR-303数据校验
一、 JSR-303 介绍 JSR 是Java Specification Requests 的缩写,是指向 JCP(Java Community Process) 提出新增一个标准化技术规范的正式请求。 任何人都可以提交 JSR,以向 Java 平台增添新的 API 和服务,已审核通过的规范涉及 Java 各个领域,有兴趣可以了解一下。 Bean Validation 是一个运行时...原创 2019-02-14 13:04:50 · 2232 阅读 · 0 评论 -
Redis单线程解读
之前面试时被面试官问了一个问题,Redis是多线程还是单线程的?依稀记得Redis为单线程,其更深层次的技术原理完全懵逼。所以此篇文章旨在解读Redis为什么为单线程。1、基本原理 采用多路 I/O 复用技术可以让单个线程高效的处理多个连接请求(尽量减少网络IO的时间消耗) (1)为什么不采用多进程或多线程处理?多线程处理可能涉及到锁 多线程处理会涉及到线程...转载 2019-02-25 20:27:41 · 164 阅读 · 0 评论 -
TCP三次握手
一、报文格式:标志位有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急)Sequence number(顺序号码) Acknowledge number(确认号码)先来看看三次握手时标志位的情况:第一次握手的标志位我们可以看到标志位里...原创 2019-02-27 11:14:48 · 826 阅读 · 0 评论 -
手动建立JavaEE项目
为了解“徒手”建立一个web应用,此博客建立简单过程1、在任意一个目录下,建立一个文件夹,取名字 webDemo 。这个应用名字。2、在 webDemo 内建立一个 WEB-INF 文件夹,此处大小写敏感。3、在 Tomcat 的项目例子中(tomcat 的 webapps 目录内有例子),复制一个 web.xml 文件。放到 WEB-INF 文件夹下。4、修改复制后的 web.xml 文...转载 2019-04-02 17:15:10 · 385 阅读 · 0 评论 -
Java对象的复制三种方式
1、概述在实际编程过程中,我们常常要遇到这种情况:有一个对象A,在某一时刻A中已经包含了一些有效值,此时可能 会需要一个和A完全相同新对象B,并且此后对B任何改动都不会影响到A中的值,也就是说,A与B是两个独立的对象,但B的初始值是由A对象确定的。例如下面程序展示的情况:class Student { private int number; public int g...转载 2019-04-03 19:30:13 · 1140 阅读 · 0 评论 -
Java黑科技之源:JVMTI完全解读
Java生态中有一些非常规的技术,它们能达到一些特别的效果。这些技术的实现原理不去深究的话一般并不是广为人知。这种技术通常被称为黑科技。而这些黑科技中的绝大部分底层都是通过JVMTI实现的。 形象地说,JVMTI是Java虚拟机提供的一整套后门。通过这套后门可以对虚拟机...转载 2019-09-06 11:33:47 · 523 阅读 · 0 评论 -
红黑树入门
————————————————————————二叉查找树(BST)具备什么特性呢?1.左子树上所有结点的值均小于或等于它的根结点的值。2.右子树上所有结点的值均大于或等于它的根结点的值。3.左、右子树也分别为二叉排序树。下图中这棵树,就是一颗典型的二叉查找树:1.查看根节点9:2.由于10 > 9,因此查看右孩子13:3.由于10 < 13,因此查看左孩子11:4.由于10 <...转载 2019-01-06 20:06:28 · 150 阅读 · 0 评论 -
两个字段都建立了索引,会使用哪一个?
做为一个开发者,关于MySQL的索引是必不可少的一个问题比如一条SQL查询:select * from userstatic where nick like "辛巴%" and rip=3726854906;可能问到的问题有:1、如果nick不是索引,rip是索引,这样的条件顺序会不会有问题? 这个问题比较简单,MySQL本身会对条件和...转载 2019-01-05 15:17:22 · 6321 阅读 · 0 评论 -
SpringSecurity配置多个HttpSecurity(SpringBoot适用)
package pers.lbw.digitalmall.config;import org.springframework.context.annotation.Configuration;import org.springframework.core.annotation.Order;import org.springframework.security.config.annotati...原创 2018-11-20 20:59:47 · 9169 阅读 · 0 评论 -
Spring Security 配置多个标签与HttpSecurity对应关系
在把以前的xml配置改到java配置,找了半天没找到…于是试出来以后才在官方文档搜索到引用一句话: http拥有一个匹配URL的pattern(对应.antMatcher()),未指定时表示匹配所有的请求,其下的子元素intercept-url也有一个匹配URL的pattern(对应.antMatchers...转载 2018-11-20 20:06:36 · 2111 阅读 · 1 评论 -
Spring Security配置多个HttpSecurity
我们可以通过继承WebSecurityConfigurationAdapter 去配置多个HttpSecurity实例,例如,下面是一个以/api/开头的url的不同配置的示例:@EnableWebSecuritypublic class MultiHttpSecurityConfig { @Autowired public ...转载 2018-11-20 20:03:15 · 5814 阅读 · 0 评论 -
SpringBoot静态资源的访问和配置(或者说文件上传配置)
首先科普下涉及的API:String dir = System.getProperty(&amp;quot;user.dir&amp;quot;);//获得项目当前路径/*与系统有关的默认名称分隔符。此字段被初始化为包含系统属性 file.separator 值的第一个字符。在 UNIX 系统上,此字段的值为 '/';在 Microsoft Windows 系统上,它为 '\'。*/File.separatorChar...原创 2018-11-12 10:45:11 · 1819 阅读 · 0 评论 -
RequestBody只能用一次,angularjs用post提交json请求
public JsonModel register(@RequestBody User user, @RequestBody String code, HttpSession session) { //验证码校验 if(session.getAttribute(CodeController.codeSessionKey)==null){ return null; } Stri...原创 2018-11-11 16:20:09 · 966 阅读 · 0 评论 -
Linux 软件安装到哪里合适,目录详解
Linux 的软件安装目录是也是有讲究的,理解这一点,在对系统管理是有益的/usr:系统级的目录,可以理解为C:/Windows/,/usr/lib理解为C:/Windows/System32。/usr/local:用户级的程序目录,可以理解为C:/Progrem Files/。用户自己编译的软件默认会安装到这个目录下。/opt:用户级的程序目录,可以理解为D:/...转载 2018-11-10 21:33:07 · 12520 阅读 · 0 评论 -
深度好文-@RequestBody及相关知识讲解
提示: 建议一定要看后面的@RequestBody的核心逻辑源码以及六个重要结论!本文前半部分的内容都是一些基本知识常 识,可选择性跳过。说明:@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数据的); GET方式无请求体,所以使用@Req...转载 2018-11-07 16:48:38 · 1343 阅读 · 0 评论 -
String的中文操作
1.判断字符串是否全是汉字。String str1 = “java判断是否为汉字”String str2 = “全为汉字”String reg = “[\u4e00-\u9fa5]+”boolean result1 = str1.matches(reg)//falseboolean result2 = str2.matches(reg)//true2.提取字符串中的汉字。String...转载 2018-11-19 20:04:32 · 4038 阅读 · 0 评论 -
Java中弄懂Unicode和UTF-8编码方式
1.UnicodeUnicode 是全球文字统一编码。它把世界上的各种文字的每一个字符指定唯一编码,实现跨语种、跨平台的应用。Unicode 只是一个符号集,它只规定了每个符号的二进制数,却没有规定这个二进制数应该如何存储。比如,汉字‘严’的 Unicode 是十六进制数4E25,转换成二进制数足足有15位(100111000100101),也就是说,这个符号的表示至少需要2个字节。表示其他更...原创 2018-11-19 22:08:26 · 50358 阅读 · 12 评论 -
springMVC传递list对象三种情况使用方法
前言概念1.ajax请求里Content-type2个常用类型JSON对象和JSON字符串dataType与contentType对象复杂度dispatchServlet-mvc.xml配置最简单:单个数组对象和key-value就比较简单了前端后端稍微复杂:只接收对象数组前端后端最复杂:对象数组与key-v...转载 2018-11-17 19:56:01 · 1446 阅读 · 0 评论 -
java的wait()方法使用注意事项
1.本文解决的问题(1)wait()方法一定要使用sycronized进行同步吗?不用sycronized修饰会有什么问题? (2)wait()方法会释放对象锁,那么这里指的锁是什么? (3)wait()会释放对象锁,而sleep()不会释放对象锁,这在实际情况中有什么区别?2.结论(1)wait()一定要使用sycronized进行同步,否则会报“java.lang.I...转载 2018-12-16 11:12:04 · 5722 阅读 · 2 评论 -
Java中局部变量、实例变量和静态变量在方法区、栈内存、堆内存中的分配
Java中的变量根据不同的标准可以分为两类,以其引用的数据类型的不同来划分可分为“原始数据类型变量和引用数据类型变量”,以其作用范围的不同来区分可分为“局部变量,实例变量和静态变量”。根据“Java中的变量与数据类型”中的介绍,“变量是在内存中分配的保留区域的名称。换句话说,它是一个内存位置的名称”,也就是说...转载 2018-12-16 09:37:21 · 358 阅读 · 0 评论 -
Java并发-对象监视器
对于同步块的实现使用了monitorenter和monitorexit指令,而同步方法则是依靠方法修饰符上的ACC_SYNCHRONIZED来完成的。 无论采用哪种方式,其本质是对一个对象的监视器进行获取,而对这个获取过程是排他的,也就是说同一时刻只能有一个线程获得到由synchronized所保护对象的监视器。任意线程对Object的访问,首先要先获得Object的监视器。...转载 2018-12-15 21:44:03 · 298 阅读 · 2 评论 -
Java对象创建的顺序
实践出真知,上代码:package test;//用来检测创建顺序的类public class C { public C(String name,String state) { System.out.println(name+"的"+state); }}package test;//父类public class A { public A() { System.out...原创 2018-11-28 15:02:47 · 3175 阅读 · 0 评论 -
【MySql】Update批量更新与批量更新多条记录的不同值实现方法
如果是更新为同样的内容,没啥难度,直接在where里面下功夫就好了,大家都懂,我要说的是针对更新内容不一样的情况首先,先看看网上转载的方法:mysql 批量更新如果一条条去更新效率是相当的慢, 循环一条一条的更新记录,一条记录update一次,这样性能很差,也很容易造成阻塞。mysql 批量更新共有以下四种办法1、.replace into 批量更新replace into...转载 2018-11-30 22:01:57 · 3048 阅读 · 0 评论 -
MySQL 中你应该使用什么数据类型表示时间?
当你需要保存日期时间数据时,一个问题来了:你应该使用 MySQL 中的什么类型?使用 MySQL 原生的 DATE 类型还是使用 INT 字段把日期和时间保存为一个纯数字呢?在这篇文章中,我将解释 MySQL 原生的方案,并给出一个最常用数据类型的对比表。我们也将对一些典型的查询做基准测试,然后得出在给定场景下应该使用什么数据类型的结论。如果你想直接看结论,请翻到文章最下方。原生的...转载 2018-11-30 13:43:40 · 1202 阅读 · 0 评论 -
JavaScript调用AngularJS的函数/$scope/变量(也适用用Jquery)
使用背景:需要在其他JavaScript文件中调用AngularJS内部方法或改变$scope变量,同时还要保持双向数据绑定;首先获取AngularJS application:方法一:通过controller来获取appvar appElement = document.querySelector('[ng-controller=mainController]');然后在获取$sc...转载 2018-11-26 16:27:30 · 1661 阅读 · 0 评论 -
【秒懂】byte的取值范围为什么是-128~127?
直接给总结:计算机规定了0000 0000 代表0,1000 0000代表的-0没有意义,必须找个~127~127之外的数和它对应,「人为规定-0就是-128」,而且这么做完美适合计算机做减法运算。来我们一步步分析分析:1.byte占用8位,每位用0或1表示,能够表示256(2^8)个数据。2.这8位分为符号位(最高位)和数值位(剩余七位),符号位0...转载 2018-11-25 16:33:05 · 17673 阅读 · 10 评论 -
MySQL实现序列(Sequence)效果
MySQL实现序列效果&nbsp;一般使用序列(Sequence)来处理主键字段,在MySQL中是没有序列的,但是MySQL有提供了自增长(increment)来实现类似的目的,但也只是自增,而不能设置步长、开始索引、是否循环等,最重要的是一张表只能由一个字段使用自增,但有的时候我们需要两个或两个以上的字段实现自增(单表多字段自增),M...转载 2018-11-12 21:54:36 · 471 阅读 · 0 评论