自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 问答 (1)
  • 收藏
  • 关注

原创 java 的代理模式

代理模式代理proxy是一种设计模式,提供对目标对象的另外的访问模式。好处是可以扩展目标对象的功能。在实际开发中,可以不修改别人已经写好的代码,通过代理的方式来扩展功能。生活中的例子:我们们要邀请明星,并不是直接联系明星,而是通过经纪人。关键点是代理对象对目标对象的扩展,并且会调用目标对象1.静态代理静态代理需要定义接口或者父类,被代理的对象和代理对象要实现相中的接口或者继承相同的父类/***接口*/public interface IUserDao{ public void wor

2021-10-14 15:26:23 117

原创 java 线程安全问题

JVM启动之后,操作系统会为JVM进程分配一定的内存空间,这部分内存空间就称为“主内存”。Java程序的所有工作都由线程来完成,而每个线程都会有一小块内存,称为“工作内存”, Java中的线程在执行的过程中,会先将数据从主内存中复制到线程的工作内存,然后再执行计算,执行计算之后,再把计算结果刷新到“主内存”中。假如有两个线程,主内存有变量A=0线程T1从主内存中获取变量A到工作内存后A++;线程T2从主内存中获取变量A到工作内存后A++;线程T1和T2 都进行++运算,两个线程的工作内存中的变量值

2021-09-16 16:57:33 141

原创 Spring 配置文件

Bean 标签的范围配置singleton:默认值,单例的prototype:多例的request:WEB项目中,Spring船舰一个Bean的对象,将对象存入到request域中session:WEB项目中,Spring船舰一个Bean的对象,将对象存入到session域中global session:WEB项目中,应用在Portlet环境,如果没有Portlet环境那么globalSession相当于session当scope的取值为singleton时:Bean的实例化个数:1实例化时

2021-06-20 17:45:43 170

原创 spring security分布式认证流程

网关负责转发请求到各个微服务,转发之前要校验客户端传的令牌是否合法,其次校验客户端是否有权限访问网关下的微服务。转发token到微服务,微服务验证是否有访问资源的权限

2021-05-20 23:03:00 144

原创 java中的装饰设计模式

装饰设计模式也成为包装模式,属于结构性设计模式。该模式也是继承关系的替代方法之一,对比继承的优点是装饰模式的低耦合性,被装饰类的变化与装饰类无关。装饰设计模式,就是动态的给对象添加一些额外的功能。比如一个毛坯房,可以装修成不同的风格以达到不同的功能,如中式、欧式等。步骤:获取被装饰类的引用在构造方法中传入被装饰类的对象对原有的功能进行升级public class Demo { public static void main(String[] args){ SuperStudent su

2021-02-19 17:04:11 185

原创 java中泛型的简单理解

面向对象的一个重要目标是对代码重用的支持。支持这个目标的一个重要的机制就是泛型机制。–《数据结构与算法分析Java语言描述》Java 5提供了对泛型方法和泛型类的支持。之前使用继承的基本原则来实现。使用Object超类表示泛型public class Memory{ private Object storedValue; public Object read(){ return storedValue; } public void write(Object o){ storedVa.

2021-01-28 23:00:18 129

原创 什么是OAuth2.0

OAuth是一个开放标准,允许用户授权第三方访问他们储存在另外的服务提供者上的信息,而不需要用户将用户名和密码提供给第三方应用或者分享他们数据的内容。例子:网站的微信授权登录用户授权之后得到授权码,拿到授权码之后到微信认证服务申请令牌,然后携带令牌从微信的用户信息服务中获取用户信息。服务提供商不会允许随便一个客户端就能介入到它的授权服务器,服务提供商会给准入方一个身份,用户接入时的凭据:client_id 客户端标识、client_secret 客户端密钥对接过微信服务接口或是小程序提供的服务接口

2021-01-25 00:05:27 236 1

原创 Java 递归的简单解释

当一个函数用它自己来定义的时候就称为是递归的。–《数据结构与算法分析java语言描述》例如:我们可以在非负整数集上定义一个函数f,满足f(0)=0且f(x)=2f(x-1)+x*x。可以得到f(1)=1,f(2)=6,f(3)=21。public int f(int x){ if(x == 0){ return 0; }else{ return 2 * f(x-1) + x * x; }}基本法则1.基准情况:必须要有某些基准的情形,不用递归就能求解。2.不断推进:对于那些要递归

2021-01-16 22:25:20 125

原创 Spring Security的结构

Spring Security解决的问题是安全访问控制。安全访问控制就是对所有进入系统的请求进行拦截,校验每个请求是否合法,是否访问到它所需要的资源。之前我们可以用Filter和AOP等实现功能。而Spring Security对web资源的保护也是靠Filter过滤器实现的当Spring Security初始化会创建SpringSecurityFilterChain的Servlet过滤器,实现了servlet的Filter因此外部的请求会经过此类采用Filter链,校验用户身份和校验用户权限。.

2021-01-14 15:10:43 186 1

原创 odoo 12 导入功能二开,导入多规格属性(变体)的产品

创建 HrEmployeeImport 类,加入到_init_.py。该类继承import基础模块base_import.import重写base_import.import 对应类下的do 方法。也可根据需要重写其他方法class HrEmployeeImport(models.TransientModel): _inherit = 'base_import.import' @api.multi def do(self, fields, columns, options.

2021-01-08 16:44:12 707

原创 spring Security 创建工程

构建maven工程,在springMvc 、servlet 3.0 基础上引入spring Security 依赖<dependency> <groupId>org.springframework.security</groupId> <artifactId>spring-security-web</artifactId> <version>5.0.1.RELEASE</version> </de

2020-12-07 23:41:33 93

原创 servlet 3.0 新特性

注解的支持:servlet、Filter、Listener无需再web.xml进行配置,可以再Java类中通过对应的注解进行配置Servler 异步处理文件上传API简化: (Part part = request.getPart())1.@webServlet:修饰Servle类,用于部署该类//xml 配置文件<web-app> <servlet> <servlet-name>helloworld</servlet-name> &l.

2020-12-03 23:38:26 84

原创 ES6中的箭头函数、剩余参数、扩展运算符

箭头函数箭头函数是用来简化函数定义语法的const fn = () => { console.log(2132);}fn();函数体中只有一句代码,并且代码的执行结果就是返回值,可以省略大括号const sum = (num1,num2) => num1 + num2;如果形参只有一个,可以省略小括号const fn = (v) => { alert(v);}fn(20);const fn2 = v => { alert(v);}fn(30

2020-09-02 23:17:29 203

原创 ES67的解构赋值

ES6允许从数组中提取值,按照对应位置对变量赋值。对象也可以实现解构。按照一定的模式,从数组或者对象中提取值,将提取出来的值赋值给变量数组解构let [a,b,c] = [1,2,3]console.log(a);console.log(b);console.log(c);如果结构不成功,变量的值为undefinedlet [a,s,d,f] = [11,22,33];console.log(a);//11console.log(s);//22console.log(d);//33

2020-09-02 17:45:26 184

原创 JavaScript中正则表达的使用

什么是正则表达式正则表达式(Regular Expression)是用于匹配字符中的字符组合的模式,在JavaScript中,正则表达式是对象作用:匹配:验证表单替换:过滤敏感词提取:从字符串中获取想要的特定部分// /表达式/ var regexp = new RegExp(/asd/);var rg = /asd/;test() 正则对象方法,用于检测字符串是否符合该规则,该对象会返回true或false,参数是测试字符串regexObj.test(str)...

2020-09-02 16:56:29 169

原创 JavaScript浅拷贝和深拷贝详解

浅拷贝只是拷贝一层,更深层次对象级别的只拷贝引用深拷贝拷贝多层,每一级别的数据都会拷贝Object.assgin(target,…sources) ES6新增方法可以浅拷贝浅拷贝var obj = { id :1, name : '蜘蛛侠', msg : { age: 20 }}var o = {};//方法一for (var i in obj){ o[i] = obj[i];}//方法2Object.assign(o,ibj);//浅拷贝第一层之外的更深层只是拷贝.

2020-08-29 18:56:34 170

原创 JavaScript 中的递归函数详解

如果一个函数在内部可以调用本身,,那个这个函数就是递归函数。递归函数的作用和循环的效果一样递归很容易发生“栈溢出"Stack overflow 错误,所以必须要添加退出条件returnvar num = 1;function fn(){ console.log('打印hello'); if(num == 6){ return; } num++; fn();}fn();利用递归函数求1-n的阶乘12345…nfunction fn(n){ if(n== 1) { re

2020-08-28 18:02:06 940 1

原创 Linux 的网络设置和ssh 服务

网卡配置文件的位置:/etc/sysconfig/network-scripts在目录网卡中的配置文件的命名格式:ifcfg-网卡名称

2020-08-28 16:38:39 174

原创 Linux用户组管理的命令

每个用户都有一个用户组,系统可以给一个用户组中的所有用户进行集中管理。不同Linux系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。对用户的操作就是对/etc/group 文件的更新文件结构用户组名:密码:用户组ID:组内用户名用户组添加 groupadd 选项 用户名选项:-g:设置一个自定义的用户组ID数字,默认从500之后递增用户组的编辑 groupmod 用户组名选项:-g:设置一个自定义的用户组ID数字-n:

2020-08-28 15:11:03 108

原创 Linux 用于用户管理的命令

2020-08-27 22:45:03 113

原创 Linux vim编辑器 的命令模式、末行模式和编辑模式

vi 编译器是所有Unix和Linux的标准编译器,vim 可以理解为升级版本,vi适用于文本编辑器,vim更适用于coding写代码

2020-08-24 23:40:59 5461

原创 Linux 常用命令示例

重启系统 reboot在命令中快速删除光标前/后的内容前:ctrl +u 后:ctrl + k删除/tmp 下所有A开头的文件rm -f /tmp/A*把/etc/passwd备份到/tmp目录下cp /etc/passwd /tmp/查看系统最后创建的3个用户tail -3 /etc/passwd统计当前有多少个账户wc -l /etc/passwd 或者 cat /etc/passwd | wc -l创建 /tmp/test.conftouch /tmp/test.co.

2020-08-22 11:19:27 86

原创 Linux 高阶命令 进程相关的

ps -ef作用:查看服务器的进程信息选项含义:-e:等价于-A,表示列出全部的进程-f:显示全部的列执行结果的表头的信息:UID:用户IDPID:进程IDPPID:该进程父级的ID;如果一个程序的父级进程找不到,该进程的进程称之为僵尸进程C:Cpu的占有率STIME:进程的启动时间TTY:终端设备;发起该进程的设备识别符号,如果显示"?"则表示该进程并不是由终端设备发起(系统默认)TIME:进程的执行时间CMD:该进程的名称或者对应的路径通过管道过滤出某个进程ps -ef|.

2020-08-20 22:51:38 116

原创 linux 高级指令详解

du -sh作用:查看目录的真实大小语法:#du -sh 目录路径选项含义:-s:只显示汇总的大小-h:表示以高可读性的形式进行显示find 指令作用:用于查找文件(参数有55个)语法:#find 路径范围 选项 选项的值选项:-name:按照文档名称进行搜索,支持模糊搜索-type:按照文档的类型进行搜索;文档类型"-"表示文件(用 f 替换),"d"表示文件夹例子:find /etc -name *.conf拓展:find /etc -name *.conf | wc..

2020-08-20 22:50:16 150

原创 javaScript 中的严格模式

ES5的严格模式是采用具有限制性javaScript变体的一种方式,即在严格的条件下运行。IE10以上支持,旧版本会被忽略。特点:消除了JavaScript语法的一些不合理、不严谨之处消除代码运行中的不安全之处,保证运行安全提高编译器效率,增加运行速度。禁用了在ECMScript的未来版本中可能会定义的一些语法,如一些保留字不能做变量名(class、enum、export、extends、import、super)严格模式可以应用到整个脚本或者个别函数中为脚本开启严格模式

2020-08-06 11:28:18 172

原创 js 继承父构造函数的属性和方法

ES6之前没有extends,可以通过构造函数 + 原型对象实现继承,叫组合继承call()调用这个函数,并修改函数运行时this指向fun.call(thisArg,aeg1,aeg2....)thisArg 调用函数的this的指向对象aeg1,aeg2 传递参数调用函数function fn(x,y){ console.log(this); console.log(x + y);}var star = { name : "刘德华"} fn.call(.

2020-07-27 16:41:18 359

原创 javaScript 中this 的指向及改变this指向

函数内this指向this的指向是在函数调用的时候决定的,调用方式不同决定了指向不同,一般都指向调用者。普通函数 指向window,window为普通函数的调用者,window.fun();对象方法的调用指向该对象。构造函数调用指向实例对象,原型对象里面的方法也指向实例对象事件绑定函数指向绑定事件对象定时器函数和立即执行函数 都指向window改变函数内部this的指向javaScript 提供了一些方法能改变this的指向,常用的有bind(),call(),apply()call

2020-07-22 10:12:04 91

原创 ES6面向对象和类Class,及属性和方法

什么是对象对象是为了描述显示世界中的事物,事物本身的或者是赋予事物的属性和行为,像生活中的事物一样,js中创建的对象由数据和方法组成,也就是属性和行为。JS中的函数、数组、等都可以理解为是一个对象。对象会有抽象、封装、继承、多态的特征。由class 关键字声明个类,之后以这个类通过new关键字实例化对象。类是抽象了对象的公共部分,是泛指的某一大类。对象是特指的某一个,通过类实例化一个具体的对象。特点是抽象对象共有的属性和行为封装成为一个类,对类实例化,获取类的对象class Star{ .

2020-07-22 10:09:53 412

原创 ES6 类的继承,this 的指向,super关键字的使用

继承:子类可以继承父类的一些属性和方法<body> <button>加法 </button><script>var that;class Father{//父类 constructor(x,y){ that = this; this.x=x; this.y=y; this.btn=document.querySelector('button');.

2020-07-21 16:40:12 847

原创 JavaScript中什么是闭包?

闭包变量作用域根据作用域不同分为:全局变量和局部变量1.函数内部可以使用全局变量2.函数外部不可以使用局部变量3.当函数执行完毕,本作用域内的局部变量会销毁什么是闭包闭包指有权访问另一个函数作用域中变量的函数。–JavaScript高级程序设计可以理解为:一个作用域可以访问另外一个函数内部的局部变量。function fn(){ var num = 10; function fun(){ console.log(num ) } fun();}fn();//fn

2020-07-21 16:33:44 135

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除