自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 收藏
  • 关注

原创 小技巧!CSS 整块文本溢出省略特性探究

今天的文章很有意思,讲一讲整块文本溢出省略打点的一些有意思的细节。文本超长打点我们都知道,到今天(2021/03/06),CSS 提供了两种方式便于我们进行文本超长的打点省略。对于单行文本,使用单行省略:{ width: 200px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;}而对于多行文本的超长省略,使用-webkit-line-clamp相关属性,兼容性..

2021-03-30 16:13:24 79

原创 java基础语法

1.注释、标识符、关键字Java中的注释单行注释 // 多行注释 /* */ 文档注释 /** */关键字标识符所有标识符都应该以字母、$、下划线 ( _ ) 开始. 首字符之后可以是字母、$、下划线或数字的任何字符组合 不能使用关键字作为变量名或方法名 标识符大小写敏感2.数据类型强类型语言所有变量都必须先定义后才能使用(安全性高)弱类型语言Java的数据类型 基本类型 数值类型 整数类型 -- byte(一个字节):范

2021-03-30 16:05:25 61

原创 python 对象真假值的实例(哪些视为False)

对于python语言的True和False我们并不陌生了,在学习的过程中常会遇到这样的返回值,那么True真和False假的具体含义是什么?本文就为大家来说说python中真假的含义。真和假的概念同许多程序语言一样,python中真假也是可以用整数0和1来表示,整数0表示假,整数1表示真。其实真和是python每个对象都具体的一种属性,这种属性不是真就是假。在python中一切都是对象,像是数据结构,python视空的数据结构为False假,相反不是空的数据结构则为True真。下面来看下py

2021-03-30 16:00:24 335

原创 前端学习笔记之强制类型转换

1.避免使用 true 和 == false 。因为在比较中,会将true和false强制类型转换为1和0。2.在==中,null和undefined相等,其它值和他俩都不相等。3.抽象关系比较时,如果出现非字符串,就根据ToNumber规则,将双方强制转换为数字比较。如果双方都是字符串,则按字母顺序比较。4.||和&&并不返回布尔值,而是返回两个操作数中的一个。5.JSON.stringify()在对象遇到undefined、function、symbol时会自动将其忽略。

2021-03-29 19:46:26 382

原创 Jdk动态代理 底层源码分析

前言java动态代理主要有2种,Jdk动态代理、Cglib动态代理,本文主要讲解Jdk动态代理的使用、运行机制、以及源码分析。当spring没有手动开启Cglib动态代理,即:<aop:aspectj-autoproxy proxy-target-class="true"/>或@EnableAspectJAutoProxy(proxyTargetClass = true),默认使用的就是Jdk动态代理。动态代理的应用范围很广,例如:日志、事务管理、缓存等。本文将模拟@Cacheable,即缓

2021-03-29 19:43:50 217

原创 说说在 Python 中如何快速复制序列

1 基本用法把序列乘以一个整数,就会产生一个新序列。这个新序列是原始序列复制了整数份,然后再拼接起来的结果。l=[1,2,3]l2=l * 3logging.info('l2 -> %s',l2)l3=5 * 'deniro'logging.info('l3 -> %s',l3)运行结果:INFO - l2 -> [1, 2, 3, 1, 2, 3, 1, 2, 3]INFO - l3 -> denirodenirodenirodeniro..

2021-03-29 19:10:32 194

原创 做了3年测试,靠着这份面试题和答案,我成功跳槽字节跳动拿到了前端offer

个人经历给大家一个参考,计算机信息工程专业,大学学过前端,毕业后阴差阳错在小公司做了三年测试后,意外地拿到了字节跳动前端的offer,成功跳槽到了字节跳动事业部。字节跳动面试对基础比较看重,然后需要你有两三个比较好的项目,一面重视面试者对前端基础的把握,还要手写代码,不过不难。二面部门的leader面,这一面比较难,面试官会对你的项目细节进行深挖,所以说项目要牛逼一点,最后还会有一道逻辑题(侥幸),三面是还是技术面,最后是HR面,如果你想进大公司的话,下面这些技术是肯定要掌握的:html5,css

2021-03-24 13:38:07 256

原创 Java多线程

1. 线程概述1.1 线程和进程进程是处于运行过程中的程序,并且具有一定的独立功能 并发性:同一个时刻只能有一条指令执行,但多个进程指令被快速轮换执行 并行:多条指令在多个处理器上同时执行 线程是进程的执行单元1.2 多线程的优势进程之间不能共享内存,但线程之间非常容易 系统创建进程时需要为该进程重新分配系统资源,但创建线程则代价小得多,因此使用多线程效率更高 Java语言内置了多线程功能2. 线程创建与启动2.1 继承Threadpublic class Firs.

2021-03-24 13:35:54 72

原创 从0基础学Python:装饰器及练习(基础)

装饰器概念装饰器,说白了,就是用来装饰函数的一个函数。装饰器遵循 开放封闭原则、依赖倒置原则,这两个原则概念,自行百度下,装饰器长啥样def wrapper(f): def inner(*args,**kwargs): ret = f(*args,**kwargs) return ret return inner上述代码是装饰器的固定格式调用装饰器@wrapper # 简称语法糖def test(): ..

2021-03-24 13:32:19 54

原创 JavaScript 的 switch 条件语句

switch语句是典型的多分支语句,作用与嵌套使用if语句基本相同,但switch语句更具有可读性,且其允许在找不到的情况下执行默认的一组语句。switch 语句用于基于不同条件执行不同动作,结束switch语句。语法:switch(表达式) { case 1: 执行代码块 1 break; case 2: 执行代码块 2 break; default: 默认代码块} 【首先设.

2021-03-23 13:39:03 246

原创 高效java工具类总结

Number类型数值类型,通常用于存储数值,是最常用的变量类型;Python中的数值类型包括如下种类:Integer、Long integer、Boolean、Double-precision floating、Complex number。Integer 整型相当于C中的long;32 位机器,整型位宽位 32 Bit:- 2^31 ~2^31 - 1,即-2 147 483 648 ~ 2 147 483 62764 位机器,整型位宽为 64 Bit:- 2^63 ~2^63 -

2021-03-23 13:06:31 119

原创 Python学习笔记(三)数据类型--Number类型

Number类型数值类型,通常用于存储数值,是最常用的变量类型;Python中的数值类型包括如下种类:Integer、Long integer、Boolean、Double-precision floating、Complex number。Integer 整型相当于C中的long;32 位机器,整型位宽位 32 Bit:- 2^31 ~2^31 - 1,即-2 147 483 648 ~ 2 147 483 62764 位机器,整型位宽为 64 Bit:- 2^63 ~2^63 -

2021-03-23 13:02:21 219

原创 JVM源码分析之Object.wait/notify(All)完全解读

概述本文其实一直都想写,因为各种原因一直拖着没写,直到开公众号的第一天,有朋友再次问到这个问题,这次让我静心下来准备写下这篇文章,本文有些东西是我自己的理解,比如为什么JDK一开始要这么设计,初衷是什么,没怎么去找相关资料,所以只能谈谈自己的理解,所以大家看到文章之后可以谈谈自己的看法,对于实现部分我倒觉得说清楚问题不大,code is here,看明白了就知道怎么回事了。Object.wait/notify(All)大家都知道主要是协同线程处理的,大家用得也很多,大概逻辑和下面的用法差不多.

2021-03-22 16:15:16 110

原创 Python 远程开关机

用 Python 关机你肯定听过或者实践过,那么用 Python 开机呢?这是一个神奇的方法,教你如何用 Python 来开机。GitHub 仓库地址:https://github.com/injetlee/Python/tree/master/Python%20%E9%BB%91%E9%AD%94%E6%B3%95本文目标远程开机原理 Python 远程开机代码实现 Python 关机说明Python 开机关于用程序来开机,是怎么做到的呢?这就是 WOL 技术 Wake-On-Lan

2021-03-22 15:25:05 366

原创 jQuery王者归来

曾经jQuery也是王者,只是时代变了,不过时代仍然在变,我们会发现jQuery还是那个王者。react和jquery比起来,你会不会发现,那些花里胡哨的东西,在jquery面前,就是笨拙的大象么?react的生态如此庞大,以及react本身所提出的协程,不都是因为react慢吗?项目里面打包一个react-dom,噢,让界面打开再飞一会儿。总而言之,现代前端虽然有很多创新,但带来的痛苦也不尽其数。让我们再回头,弹一弹jQuery身上的尘土,看,它还在发光。 react之所以让我们热爱,抛开工程化的那一

2021-03-19 18:14:24 366

原创 Spring Cloud源码分析——Ribbon客户端负载均衡

年前聊了Eureka和Zookeeper的区别,然后微服务架构系列就鸽了三个多月,一直沉迷逛B站,无法自拔。最近公司复工,工作状态慢慢恢复(又是元气满满地划水)。本文从以下3个方面进行分析(参考了翟永超[程序猿DD])的《Spring Cloud微服务实战》)LoadBalancerInterceptor拦截器对RestTemplate的请求拦截; RibbonLoadBalancerClient实际接口实现; 负载均衡策略1、LoadBalancerInterceptor源码p..

2021-03-19 17:19:20 223

原创 从0基础学Python:装饰器及练习(基础)

装饰器概念装饰器,说白了,就是用来装饰函数的一个函数。装饰器遵循 开放封闭原则、依赖倒置原则,这两个原则概念,自行百度下,装饰器长啥样def wrapper(f): def inner(*args,**kwargs): ret = f(*args,**kwargs) return ret return inner上述代码是装饰器的固定格式调用装饰器@wrapper # 简称语法糖def test(): ..

2021-03-19 16:28:39 61

原创 三十分钟包会——正则表达式

一、前言正则表达式,对大家来说既熟悉又陌生。熟悉是因为工作中有很多场景能用到,比如手机号、邮箱、密码等规则校验。陌生则是因为正则表达式看上去就是一堆乱码,且一眼看上去很难看懂匹配规则。有时候在网上去找一个特定规则的正则表达式,搜出来的结果各不相同,执行效果更是不尽人意,想自己去修改,感觉也无从下手。今天就花费30分钟时间,带领大家从另一个角度去剖析匹配的目的,理解匹配的思路,一步一步抽丝剥茧去学会怎么写正则表达式(读正则表达式远比写正则表达式要困难的多)。二、理解正则要干的事情正则要干的

2021-03-17 12:50:08 196

原创 Java 16 正式发布

主要特性Vector API(孵化)提升了Java在CPU向量计算的性能,这是对大规模的张量计算的支持,提升了Java在AI领域的能力。启用了新的C++特性允许在JDK中C++源代码中使用 C ++ 14的新特性。从 Mercurial 迁移到 GitGit目前已经成为代码版本管理领域的绝对统治者,现在Java顺应潮流也使用Git进行源代码管理。迁移到GitHubOpenJDK的代码现在有GitHub托管。ZGC垃圾收集器并发线程堆栈处理的垃圾收集器。Unix域套

2021-03-17 12:37:22 1230

原创 字节跳动最爱考的前端面试题:计算机网络基础

3)问:HTTP 缓存HTTP 缓存又分为强缓存和协商缓存:首先通过 Cache-Control 验证强缓存是否可用,如果强缓存可用,那么直接读取缓存 如果不可以,那么进入协商缓存阶段,发起 HTTP 请求,服务器通过请求头中是否带上 If-Modified-Since 和 If-None-Match 这些条件请求字段检查资源是否更新: 若资源更新,那么返回资源和 200 状态码 如果资源未更新,那么告诉浏览器直接使用缓存获取资源 (5)问:HTTP 常用的状态码及使用场景?1xx:

2021-03-15 13:59:33 233

原创 浅析五种最常用的Java加密算法,以后可以直接拿来用了

一)关于加密算法信息加密是现在几乎所有项目都需要用到的技术,身份认证、单点登陆、信息通讯、支付交易等场景中经常会需要用到加密算法,所谓加密算法,就是将原本的明文通过一系列算法操作变成密文。接下来就介绍一下目前比较常用的一些加密算法,本期不涉及算法底层,以应用介绍和代码展示为主。如果只想了解原理,可跳过代码部分,代码可直接拿来使用。(二)MD5算法准确来讲,MD5不是一种加密算法,而是一种摘要算法,MD5能将明文输出为128bits的字符串,这个字符串是无法再被转换成明文的。网上一些MD5解密

2021-03-15 13:39:36 537

原创 Python常用模块集锦

常用模块主要分为以下几类(缺失的后续再补充):时间转换 时间计算 序列化和反序列化:json,pickle 编解码:unicode,base64 加解密:md5,sha1,hmac_sha1,aes 常见装饰器: 计算执行时间装饰器 缓存装饰器 错误重试装饰器 延迟装饰器 尾递归优化装饰器 ini配置文件读取代码整合如下:#!/usr/bin/env python# -*- coding: utf-8 -*-"""Created on 9/21/17 1

2021-03-15 12:52:11 99

原创 JS: 浅拷贝vs深拷贝 | 刷题打卡

1. 概念在JavaScript中,拷贝一般是指变量的复制过程。对于简单类型,拷贝就是直接赋值的过程;对于复杂类型,浅拷贝是指复制对象的引用地址的过程。如果修改了源对象的某个属性,由于引用相同,所以目标对象的属性也会被改变。2. 测试// 测试1function test() { var obj = { id: 1, name: 'Tom', props: { age: 18, }, color: ['red', 'green

2021-03-12 18:20:23 118

原创 一文读懂Java多线程原理

前言线程池,故名思意,就是一个存放线程的池子,学术一点的说法,就是一组存放线程资源的集合。为什么有线程池这一概念地产生呢?想想以前我们都是需要线程的时候,直接自己手动来创建一个,然后执行完任务我们就不管了,线程就是我们执行异步任务的一个工具或者说载体,我们并没有太多关注于这个线程自身生命周期对于系统或环境的影响,而只把重心放在了多线程任务执行完成的结果输出,然后目的达到了,但是真正忽略了线程资源的维护和监控等问题。随着大型系统大量多线程资源的使用,对多线程疏于重视、维护和管理而对资源占用和拉低性能的影响

2021-03-12 18:06:36 280

原创 Python 包管理

1. 模块一个模块就是一个包含python代码的文件,后缀名称是.py就可以,模块就是个python文件 为什么我们用模块 程序太大,编写维护非常不方便,需要拆分 模块可以增加代码重复利用的方法 当作命名空间使用,避免命名冲突 如何定义模块 模块就是一个普通文件,所以任何代码可以直接书写 不过根据模块的规范,最好在本块中编写以下内容 函数(单一功能) 类(相似功能的组合,或者类似业务模块) 测试代码 如何使用模块 模块直接导入 模块名称直

2021-03-12 18:03:28 245

原创 Promise对象

Promise是什么Promise是异步编程的一种解决方案,比传统的方案--回调函数和事件--更合理且更强大。所谓Promise,简单来说就是一个容器,里面保存着未来才会结束的事件(通常是一个异步操作)结果。从语法上说,Promise是一个对象,可以获取异步操作的消息。有了Promise对象,就可以将异步操作以同步操作的流程表达出来,避免了层层嵌套的回调函数。Promise的特点对象的状态不受外界的影响。Promise对象代表一个异步操作,有3种状态:Pending(进行中)、Fulfil

2021-03-11 18:15:08 199

原创 试试给对象这样赋值吧

前言最近在接手库存相关的业务。由于金三银四跳槽季的到来,公司的一些小伙伴终于还是选择了离开。于是交接和开发便成了这一阵子的主要工作内容(啥,你问我为啥不跳槽,还不是因为菜没人要T_T)。看了几天代码,在熟悉业务的同时,也发现了这些模块开发当中一些值得诟病的地方,所以我觉得可以拿出来可以分享一下,也当做是一种自省。背景库存服务这个系统主要是对接各个电商平台当中库存上传功能,即将自有系统当中的库存按照一定的策略上传到平台当中。由于不同的平台会采用不同的策略,所以导致系统库存对应到各个平台上则会显示

2021-03-11 18:07:27 99

原创 Python 正则表达式

正则表达式(RegularExpression, re)是一个计算机科学的概念 用于使用单个字符串来描述,匹配符合某个规则的字符串 常常用来检索,替换某些模式的文本正则的写法 .(点号): 表示任意一个字符,除了\n,比如查找所有的一个字符 . []: 匹配中括号中列举的任意字符,比如[L,Y,0], LLY, Y0, LIU \d: 任意一个数字 \D: 除了数字都可以 \s: 表示空格,tab键 \S: 除了空白符号 \w: 单

2021-03-11 18:01:22 110

原创 再见 Docker !5分钟转型 containerd !

摘要Docker作为非常流行的容器技术,之前经常有文章说它被K8S弃用了,取而代之的是另一种容器技术containerd!其实containerd只是从Docker中分离出来的底层容器运行时,使用起来和Docker并没有啥区别,本文主要介绍下containerd的使用,希望对大家有所帮助!containerd简介containerd是一个工业级标准的容器运行时,它强调简单性、健壮性和可移植性。containerd可以在宿主机中管理完整的容器生命周期,包括容器镜像的传输和存储、容器的执行和管理、存

2021-03-10 12:53:53 1107 1

转载 python str模块

str字符串str 转义字符 格式化 内建函数字符串表示文字信息 用单引号,双引号,三引号括起来s = 'I love 'print(s)复制代码I love 复制代码s = "I love "print(s)复制代码I love 复制代码s = """ILove"""print(s)复制代码ILove复制代码转义字符用一个特色的方法表示出一系列不方便写出的内容,比如回车键,换行符,退格键 借助反斜杠字符,一旦字符串中

2021-03-10 12:49:39 145

原创 three.js 实现图片粒子爆炸特效

大家好,这里是 CSS 魔法使——alphardex。以下是最终实现的效果图撒,哈吉马路由!准备工作笔者的three.js模板:点击右下角的fork即可复制一份世界同步在我的上一篇博文中,讲到了如何将HTML世界和webgl的世界同步起来,本文也是同样的思路,先同步好两个世界,再进行特效创作首先搭建HTML和JS<div class="relative w-screen h-screen"> <div class="absolute w-scree

2021-03-09 17:00:27 1801 1

原创 JDK8新特性之Lambda表达式和四大函数接口

在Java8中,加入了Lambda(Lambda expression),在使用它以前我们先聊聊为什么要加入Lamdba,使用它对于编程上有什么好处一、Lamdba的作用1.在我们需要把一些功能传递给某些方法时,在 Java 8 以前,我们就需要去写匿名内部类。引入lambda表达式后,你可以在一个类中简便的定义参数和方法,替代大部分匿名内部类和功能接口,使得代码更加优雅,Lambda提供了一个参数列表和只用这些参数的功能体,也被称为闭包。二、使用Lambda表达式要知道的规范1.一个La.

2021-03-09 16:56:25 101

原创 花三分钟给女票写一个爬虫,做一回模范男友!

烦恼波及女票是做运营的,一直苦恼于起推文标题。领导还会频繁突袭:“XX,给这次活动拟一个标题。”tmd,自己分内的活都干不完,却要为活动策划起标题流汗,不是自己的活,还得笑着干!着实烦人!更坏的是,负面情绪都是会传染的,女票的烦恼就是咱的烦恼,甚至是大于咱的烦恼。/(ㄒoㄒ)/~~不过幸好!,咱程序员的本领就是四个字:解决问题。(●'◡'●)为此,我们可以花几分钟简单写一个爬虫,再想要什么标题,就不用空想了,直接让她挑选就行!女孩子什么的,最爱“逛该”了!闲言少叙,直接奥里给!解

2021-03-09 13:06:13 138

原创 前端进阶-手写Vue2.0源码(三)|技术点评

前言今天是个特别的日子 祝各位女神女神节快乐哈 封面我就放一张杀殿的帅照表达我的祝福 哈哈此篇主要手写 Vue2.0 源码-初始渲染原理上一篇咱们主要介绍了 Vue模板编译原理它是 Vue 生成虚拟 dom 的基础 模板编译最后转化成了 render 函数 之后又如何能生成真实的 dom 节点去替换掉 el 选项配置呢 那么通过此篇的学习就可以知道 Vue 初始渲染的流程 此篇主要包含虚拟 dom 以及真实 dom 的生成适用人群:没时间去看官方源码或者看源码看的比较懵而不想去看的同学...

2021-03-08 12:58:59 170

原创 七种方案!探讨Redis分布式锁的正确使用姿势

最近也收到很多后端同学的提问,为什么Go的web框架速度还不如Java?为什么许多原本的 Java 项目都试图用 go 进行重写开源?Java会不会因为容器的兴起而没落?Java这个20多年的后端常青树难道真的要走下坡路了?橙子邀请了淘系技术部的同学对以上问题进行解答,也欢迎大家一起交流。Q:为什么Go的web框架速度还不如Java?**风弈:**华山论剑,让我们索性把各框架的性能分析跑一下再说话。各种框架的应用场景不同导致其优化侧重点不同,下面我们展开详细分析。http server 概述

2021-03-08 12:53:24 205

原创 python3+tkinter实现的黑白棋,代码完整 100%能运行

今天分享给大家的是采用Python3+tkinter制作而成的小项目——黑白棋tkinter是Python内置的图形化模块,简单易用,一般的小型UI程序可以快速用它实现,具体的tkinter相关知识王老师会在以后开辟专栏单独讲解我们先来看看这个黑白棋项目吧一、项目演示二、代码完整代码如下,用到的素材(图片等)下载地址为:www.itprojects.cn/detail.html…from tkinter import *from tkinter.messagebox

2021-03-08 12:42:17 1107 1

原创 Java并发——Java与多线程

并发处理的广泛应用是Amdahl定律代替摩尔定律成为计算机性能发展源动力的根本原因,也是人 类压榨计算机运算能力的最有力武器。 主流的操作系统都提供了线程实现,Java语言则提供了在不同硬件和操作系统平台下对线程操作的统一处理,每个已经调用过start()方法且还未结束的java.lang.Thread类的实例就代表着一个线程。Thread类与大部分的Java类库API有着显著差别,它的所有关键方法都被声明为Native。在 Java类库API中,一个Native方法往往就意味着这个方法没有使...

2021-03-07 22:15:14 164

原创 python时间模块的使用

前言:在开发中经常会与时间打交道,如:获取事件戳,时间戳的格式化等,这里简要记录一下python操作时间的方法。python中常见的处理时间的模块:time:处理时间的模块,如获取时间戳,格式化日期等 datetime:date和time的结合体,处理日期和时间 calendar:日历相关的模块,如:处理年历/月历time模块介绍说明:time模块主要讲解如下内容:1.时间戳 --> 时间元组格式(time.struct_time) --> 日期字符串 2.日期字符串

2021-03-07 22:09:34 305

原创 面试 Javascript 中的 CJS, AMD, UMD 和 ESM是什么?

最初,Javascript没有导入/导出模块的方法, 这是让人头疼的问题。 想象一下,只用一个文件编写应用程序——这简直是噩梦!然后,很多比我聪明得多的人试图给Javascript添加模块化。其中就有CJS、AMD、UMD和ESM。你可能听说过其中的一些方法(还有其他方法,但这些是比较通用的)。我将介绍它们:它们的语法、目的和基本行为。我的目标是帮助读者在看到它们时认出它们CJSCJS是CommonJS的缩写。经常我们这么使用:// importing const ...

2021-03-05 13:00:47 11142 1

原创 别再这么写代码了,这几个方法不香吗?

JDK8 应该是 Java 中最坚挺一个版本,这个版本新增很多特性,让我们开发起来多了很多便利。不过最近 Review 项目代码的时候发现,虽然很多项目工程已经使用了 JDK8,但是工程代码却很少使用到 JDK8 新特性、新方法。如果单从代码正确性上来说,老方式写法写当然没有什么问题,那唯一的缺点其实就是代码行数比较多,比较繁琐。那同样的需求,使用 JDK8 新方法,其实几行代码就可以搞定,这样代码就会变得非常简洁。今天就以三个比较常见的场景为例,教你几招,使用 JDK8Map新增的方法简.

2021-03-05 12:50:35 108

空空如也

空空如也

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

TA关注的人

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