- 博客(38)
- 资源 (12)
- 收藏
- 关注
原创 ThreadLocal实现原理与实战运用
ThreadLocal(线程本地)叫做线程变量,属于当前线程,该变量对其他线程而言是隔离的,也就是该变量是当前线程独有的变量。ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。同一个ThreadLocal所包含的对象,在不同的Thread中有不同的副本。因为每个线程Thread内有自己的副本,该副本只能由当前Thread使用。既然每个Thread有自己的实列副本,且其他Thread不可访问,那就不存在多线程间共享的问题。
2023-03-02 16:29:28 713
原创 每天一个面试知识点Java(7)为什么wait和notify必须放在synchronized中?
Object是超类,是所有类的父类,默认继承了Oject类(如果没有显式的继承Object,jdk6之前是编译器处理,jdk7之后是虚拟机处理默认继承)。Object类中有notify、wait等基本方法,所以继承了Object的类也拥有了Object的所有方法。 在多线程编程中,wait 方法是让当前线程进入休眠状态,直到另一个线程调用了 notify(notifyAll) 方法之后,才能继续恢复执行。而在 Java 中,wait 和 notify(notifyAll) 有着一套自己的使用格式要
2022-06-13 15:56:52 413
原创 设计模式(四)手撸抽象工厂模式与在JDK源码的应用
目标一次性深入学习,终身受益。今天我们主要是讲解工厂方法模式与之前的简单工厂的差异在于每个产品交由不同的工厂创建,这就解决了开闭原则。工厂方法模式定义:定义一个创建对象的接口(工厂接口),但让实现这个接口的类来决定实例化哪个类,工厂方法让类的实例化推迟到子类中进行。类型:创建型适用场景1. 创建对象需要大量的重复的代码。2. 客户端不依赖于产品类实例如何被创建,实现等细节。3. 一个类通过其子类来指定创建哪个对象优点用户只需要关心所需产品对应的工厂,无需关心细节。加入新产品符合开闭原则
2022-06-02 16:23:53 185
原创 Mybatis中#{}与${}的区别是什么?
#{}是占位符,即sql 预编译处理,会将sql中的#{}替换为?号,调用PrepareStatement来赋值, 对应的变量自动加上单引号。${}是拼接符,即sql拼接,会将sql中的${}替换为变量的值,调用Statement来赋值,对应的变量不会加上单引号。#{} 能有效防止sql 注入,提高系统安全性。项目操作-- 变量值定义userName= 'wukong'password = "1 or 1=1"select * from sys_user where user_name .
2022-06-02 16:20:16 154
原创 JRebel热部署的使用
JRebel:实现了不需要重启服务器达到热部署项目效果,它会对你当前所编辑过的页面进行编译,大幅度减少了重启服务器所带来的等待时间。注意事项:c盘下的用户名一定不能为中文名称,否则会一直提示路径错误,目前测试全部失败,以后的同学们安装可以试一试,如果成功了就留个言。1安装jrebel插件1.File–》Settings—》plugins----》marketplace----》搜索jrebel,点击install 安装,安装完成会出现Restart ,点击重启idea即可。2.安装成功后会出现如下
2022-05-29 18:19:01 2159 3
原创 每天一个面试知识点Java(7) maven 中clean package install和deploy有什么区别
maven 同学们在开发中 中clean package install 这个大多数人在项目实际开发中会用到,,deploy 可能是leader 或者写框架的同学才用到。比如一个功能写完 大家可能跟我一样用idea 写完代码然后Run项目,但是有时候项目不行,然后就一顿操作 clean、package、install。有没有仔细的想过 为啥我们要这么操作,为啥操作后能代码就正常运行了?很多同学肯定与运维有些交集,你偶尔也能看到他们手动帮你部署测试环境,或者看到自动化部署中的配置mvn clean
2022-05-25 23:03:09 629
原创 每天一个面试知识点Java(6)java中堆内存、栈内存、常量池详细讲解,学完就考同事
Java程序是运行在JVM(Java虚拟机)上的,因此Java的内存分配是在JVM中进行的,JVM是内存分配的基础和前提。Java程序的运行会涉及以下的内存区域:寄存器:JVM内部虚拟寄存器,存取速度非常快,程序不可控制。栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中。堆:存放new出来的对象,注意创建出来的对象只包含各自的成员变量,不包括成员方法。常量池:存放常量,如基本类型的包装类(Integer、Short)和String,注意常量池位于堆中。...
2022-05-20 10:55:09 574
原创 每天一个面试知识点Java(5) ==是地址比较还是值比较?Integer中有缓存?
Integer中进行==比较public class Test { static Logger logger = LoggerFactory.getLogger(Test.class); public static void main(String[] args) { int a1 = 127; int a2 = 127; logger.info("int a1与a2的==比较值是:{}",a1==a2); int b1 =
2022-05-18 16:02:29 290
原创 设计模式(四)手撸抽象工厂模式与在JDK源码的应用
目标一次性深入学习,终身受益。今天我们主要是讲解工厂方法模式与之前的简单工厂的差异在于每个产品交由不同的工厂创建,这就解决了开闭原则。工厂方法模式定义:定义一个创建对象的接口(工厂接口),但让实现这个接口的类来决定实例化哪个类,工厂方法让类的实例化推迟到子类中进行。类型:创建型适用场景1. 创建对象需要大量的重复的代码。2. 客户端不依赖于产品类实例如何被创建,实现等细节。3. 一个类通过其子类来指定创建哪个对象优点用户只需要关心所需产品对应的工厂,无需关心细节。加入新产品符合开闭原则
2022-05-16 18:20:51 216
原创 设计模式(三)手撸工厂方法模式与在JDK源码中的应用
目标一次性深入学习,终身受益。今天我们主要是讲解工厂方法模式与之前的简单工厂的差异在于每个产品交由不同的工厂创建,这就解决了开闭原则。工厂方法模式定义:定义一个创建对象的接口(工厂接口),但让实现这个接口的类来决定实例化哪个类,工厂方法让类的实例化推迟到子类中进行。类型:创建型适用场景1. 创建对象需要大量的重复的代码。2. 客户端不依赖于产品类实例如何被创建,实现等细节。3. 一个类通过其子类来指定创建哪个对象优点用户只需要关心所需产品对应的工厂,无需关心细节。加入新产品符合开闭原则
2022-05-13 22:13:31 284
原创 设计模式(二)手撸简单工厂模式与在JDK源码的应用
目标工厂模式有3种,分别是“简单工厂模式、工厂方法模式、抽象工厂模式”,接下来我们一个个的讲解。今天我们学习简单工厂模式,初入系统设计。简单工厂模式定义:由一个工厂对象决定创建出哪一种产品类的实例类型:创建型,但是不属于GOF23种设计模式试用场景1. 工厂类负责创建的对象比较少。2. 客户端只知道调用工厂类创建方法和传入参数,对于如何创建对象(逻辑)不关心优点只需要传入正确的参数,就可以创建你所需要的对象,而无需知道其创建的细节缺点工厂类的职责相对过重,增加新的产品需要修改工厂类的
2022-05-12 11:07:03 362
原创 设计模式(一)认识UML图提升代码阅读与设计能力
目的 几乎是程序员就都知道或者了解设计模式,但大部分小伙伴写代码总是习惯于一把梭。无论多少业务逻辑就一个类几千行,这样的开发也可以归纳为三步;定义属性、创建方法、调用展示,Done!只不过开发一时爽,重构火葬场。好的代码不只为了完成现有功能,也会考虑后续扩展。在结构设计上松耦合易读易扩展,在领域实现上高内聚不对外暴漏实现细节不被外部干扰。而这就有点像家里三居(MVC)室、四居(DDD)室的装修,你不会允许几十万的房子把走线水管裸漏在外面,也不会允许把马桶放到厨房,炉灶安装到卫生间。其实有一部分人并
2022-05-10 20:57:13 300
原创 手撸SSO单点登录(六)SSO单点退出原理
目标这一章节我们来一起学习,单点退出登录,是怎么让所有sso系统一起退出登录的。视频详细讲解请见https://www.bilibili.com/video/BV1b5411d7be/源码下载地址:https://gitcode.net/kiduo08/yuantai-sso.git时序图当用户点击某一个系统的退出登录时候统一的发起跳转到认证中心http://authentication.sso.com:8080/logout?redirectUri=http://client.sso.co
2022-05-09 21:36:46 4157 3
原创 手撸SSO单点登录(五)登录验证-OA系统页面刷新或者跳转新OA系统页面
目标 上一章节手撸SSO单点登录(四)登录验证-首次登录已经成功登陆并且跳转至OA系统,当OA系统刷新,或者OA系统打开其他菜单是怎么实现无需登陆,直接验证通过,跳转页面或者刷新页面。二 、系统UML工程类图三、代码实现a.当刷新OA系统页面的时候,进入com.yuantai.filter.LoginFilter请求拦截、进入isAccessAllowed方法@Override public boolean isAccessAllowed(HttpServletRequest reque
2022-05-08 16:14:28 1954
原创 每天一个面试知识点Java(3 )Java中重写(Override)与重载(Overload)的区别
利用摸鱼时间、每天积累一个知识点、学精学透、夯实基础、面试不用愁。一、重载(Overload) 方法重载就是让类用统一的方式处理不同类型的数据,不同参数的一种手段。a.创建一个重载类public class Overloading { int computed(int a,int b){ return a+b; } int computed(int a,int b,int c){ return a+b+c; }}b.main方法调
2022-05-07 11:28:27 232
原创 每天一个面试知识点Java(2 )Java中“goto“语句使用技巧
目标 继上一章节return、break和continue的区别 并没有直接跳出多层循环、在java中怎么才能跳出多层循环体呢?这一章节就利用“goto”语法跳出循环体语句。 有次和朋友聊天的时候,无意间聊到了 goto 语句,但是在 Java 中, goto 是保留关键字,但是朋友说 Java 中有和 goto 类似效果的语句,我竟然一点都不知道!顿时感觉 Java 白学了!心里万马奔腾!?立马回来查资料+写demo,还有这种操作???!!!哭了哭了。。。认识goto&标签首先b
2022-05-05 14:56:34 1654
原创 每天一个面试知识点Java(1) return、break和continue的区别还傻傻分不清
目标return、break和continue的在循环体中的区别demo代码地址 https://gitcode.net/kiduo08/learning-junior.git区别1、for循环-normal /** * @author yuantai * @Version: 1.0 */public class Junior1 { public static void main(String[] args) { String[] arr = {"a","b","
2022-05-05 10:30:07 650
原创 手撸SSO单点登录(四)登录验证-首次登录
目标这一章节的目标主要是讲解OA(这里代表client.sso.com:8082)统一登录后怎么回跳至OA页面,无论OA系统,还是认证系统等,在未登录的情况下怎么统一跳转至SSO登录页面。client 用OA系统代替更直观...
2022-05-03 22:05:34 2401
原创 手撸SSO单点登录(二):系统部署
前言以idea为例,导入并分别运行认证服务端和客户端,展示验证单点登录功能。1.代码下载导入从gitlab 克隆代码 https://gitcode.net/kiduo08/yuantai-sso.gitidea 导入代码
2022-04-28 14:42:03 2465 4
原创 Springboot 以输出流形式 在线预览PDF 文件分存储 (本地/远程)
原因:本来是前端直接用url 显示pdf、但是url 容易暴露。后来使用后台返回文件流的形式输出、前端显示、不多说直接上代码1、文件存在服务器本地@RequestMapping(value = "/preview", method = RequestMethod.GET)public void pdfStreamHandler(HttpServletRequest request, HttpServletResponse response) { //PDF文件地址 File file =
2021-06-28 13:33:32 3513 1
原创 文件解析(Java 解析 txt 文件)
public class ReadFromFile { /** * 以字节为单位读取文件,常用于读二进制文件,如图片、声音、影像等文件。 */ public static void readFileByBytes(String fileName) { File file = new File(fileName); InputStr
2014-09-01 14:56:01 889
原创 andriod闹钟源代码
此软件功能十分完整,而且界面设计的很漂亮、大方几乎可以直接使用。软件功能包括:设置闹铃时间、增加音乐、增加图片等功能。而且在主界面还提供了一个按钮,该按钮可以将窗口亮度降低有点你视频网站上的“关灯”功能很帅。代码的设计思路还清楚很适合有一定开发经验的人来做为进一步学习的资料。代码的编码风格也很好,代码可读性很高。
2014-08-03 14:11:02 1147
原创 做一名合格的前端开发工程师(12篇)——第一篇 Javascript加载执行问题探索
楼主做前端开发一年多了,对前端的见解还是多多少少有一点的,今天特拿出来跟大家分享分享。 做前端开发少不了各种利器。比如我习惯用的还是Google浏览器和重型武器Fiddller。 一: 原始情况首先大家看看如下的代码: 1 "C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="JsLoa
2014-01-09 17:27:46 552
原创 sqlserver2005重新安装(安装汇编错误,安装程序无法连接到数据库服务进行服务配置)
sqlserver2005重新安装(安装汇编错误,安装程序无法连接到数据库服务进行服务配置)在这里我写一下我的个人经验,减轻后辈们的时间,如果好的话记得给我好评哦!这一天我卸了装,装了卸n遍(公司的2003server服务器上)首先我安装的是server2005,cd1,cd2两个镜像文件,这个文件怎么打开就不在这里多说了;这是你没卸载的问题,你到删除安装程序里面把卸载
2014-01-09 16:41:36 7882 1
原创 存储过程语法及实例
存储过程如同一门程序设计语言,同样包含了数据类型、流程控制、输入和输出和它自己的函数库。--------------------基本语法--------------------一.创建存储过程create procedure sp_name()begin.........end二.调用存储过程1.基本语法:call sp_name()注意:存储过程名称后面必
2013-11-10 22:28:22 489
原创 将查询出的listmap 导出excel 实例 边看图边看代码
public String exportRruAlarmAsCsv() {List resultExport = null;//System.out.println("sqlExport:::" + sqlExport);if (null != sqlExport && !"".equals(sqlExport)) {Session session = databaseOracle
2013-10-08 17:14:10 596
原创 安卓 全国省份 地市联动
sdafdas hfklhasf dkasgfasdpackage com.myuupay.complete;import java.io.IOException;import java.util.HashMap;import java.util.Map;import org.json.JSONException;import org.json.JSONObject;impo
2013-07-24 14:25:06 647
原创 安卓 sinner 联动设置setOnItemSelectedListener初始默认值 实例
很多二级菜单联动的例子 很容易找到 但是有时候一开支就有值 比如我做的项目 现在就主要贴代码 关键处我标红 自己对照看看 package com.myuupay.complete;import java.io.IOException;import java.util.HashMap;import java.util.Map;import org.jso
2013-07-24 14:22:03 1102
原创 安卓 相机或相册图片上传至手机界面并显示 最后上传至服务器(界面xml布局代码前一个文章有)
这里主要是实例:首先有个图形界面首先是点击上传,从相册或相机处获取图片,然后在点击确定把图片上传到服务端,供大家参考,可以把代码整体考进项目然后慢慢参考注意:要把AndroidManifest 里面设置权限 能调用相机或相册 这三行千万别忘了 import java.io.ByteArrayOutputStream;import java.io.F
2013-07-22 18:52:00 1900
原创 学好安卓界面布局 实例图片上传篇
从学习安卓,我们知道Android中我们可以配置界面布局,那么今天和大家分享下界面布局的相关内容,界面布局主要分为LinearLayout (线性布局)、AbsoluteLayout(绝对布局)、RelativeLayout(相对布局)、TableLayout(表格布局)、FrameLayout(帧布局),其中绝对布局不是很常用,这里用实列给大家学习学习。http://www.xinyangzhu
2013-07-21 09:54:43 1397
原创 浅谈Android五大布局(二)——RelativeLayout和TableLayout
在浅谈Android五大布局(一)中已经描述了LinearLayout(线性布局)、FrameLayout(单帧布局)和AbsoulteLayout(绝对布局)三种布局结构,剩下的两种布局RelativeLayout(相对布局)和TableLayout(表格布局)相对之前布局结构稍显复杂一点,所以这里另起篇幅进行介绍。RelativeLayout: RelativeLayout按照各子元
2013-07-18 23:11:45 561
原创 浅谈Android五大布局(一)——LinearLayout、FrameLayout和AbsoulteLayout
Android的界面是有布局和组件协同完成的,布局好比是建筑里的框架,而组件则相当于建筑里的砖瓦。组件按照布局的要求依次排列,就组成了用户所看见的界面。Android的五大布局分别是LinearLayout(线性布局)、FrameLayout(单帧布局)、RelativeLayout(相对布局)、AbsoluteLayout(绝对布局)和TableLayout(表格布局)。 LinearLa
2013-07-18 23:08:53 426
taobao-sdk-java-auto-1479188381469-20180227.jar
2020-10-21
andriod闹钟源代码
2014-08-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人