自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(566)
  • 资源 (7)
  • 收藏
  • 关注

原创 yt-dlp 使用教程

windows下载.exe版本,放到指定路径下,我的是C:\Users\bellychang\Downloads查看视频所有分辨率结果标题行含义:ID:文件IDEXT:格式RESOLUTION:分辨率FPS:视频的帧率FILESIZE:文件大小VCODEC:audio only表示仅音频ACODEC:video only表示仅视频(没有音频);像mp4a.40.2(720p)就直接包含了音频。

2023-06-10 19:29:51 2881

原创 下载多个ts文件,合并为一个mp4文件,并发送到微信

5. 合并后的文件大于100M,将其上传到把百度网盘,在手机上下载下来,通过微信进行发送即可。1. 使用internet download manager 来下载ts文件。2. 使用tsMuxer来split ts文件。4. 使用MP4Tools将两个ts文件合并。

2023-06-10 14:59:53 878

原创 https证书缺失报错:PKIX path building failed 问题解决

背景:当使用java来进行爬虫操作的时候,会遇到处理https站点时报错:PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target解决方案:可以下载该站点的SSL证书,将SSL的证书添加到安装到JDK 可信证书库中具体步骤:第一步:下载证书参考:导

2022-04-23 22:18:15 7317

原创 javascript 获取网页上所有a href title

var elements = document.getElementsByTagName('a');for(var i=0; i< elements.length; i++){ console.info(elements[i].getAttribute("title"));}

2022-03-26 14:27:55 1609

原创 定位linux服务器上应用程序是否存在I/O瓶颈

参考徐文浩老师 理解IO_WAIT:I/O性能到底是怎么回事儿?定位服务器上的应用程序是否存在I/O瓶颈,分为3步步骤1:执行top命令第三行 %Cpus需要特别注意的是 wa 项目,那个项目代表的是 I/O wait,也就是 CPU 等待 IO 完成操作花费的时间占 CPU 的百分比。通常你的系统会变慢都是 I/O 产生的问题比较大!步骤2:执行iostat命令,查看实际I/O操作情况知道了 iowait 很大,那么我们就要去看一看,实际的 I/O 操作情况是什么样的。这个时候,你就可以去.

2021-04-15 17:10:02 421

原创 java调用本地及远程shell脚本

文章目录场景:需求:方法:java调用本地shell脚本java通过ssh方式调用远程shell脚本安全注意场景:在linux服务器上有这样一个脚本文件/home/xxxx/my_script/run_dev_job_etl_usermonitor_task_list.sh需求:在java代码中直接调用此sh脚本文件方法:定义一个接口com.xxx.service.ShellServicejava调用本地shell脚本@Overridepublic int exec(String[]

2021-03-30 21:14:14 1788

原创 实现一个短网址系统

短网址服务的两个核心功能,把原始的长网址转化成短网址。当用户点击短网址的时候,短网址服务会将浏览器重定向为原始网址。输入source_url,返回short_url访问短网址服务,输入source_url,返回short_url首先使用hash函数,将其转换为32位的数字之后对32位数字进行62进制编码,在网址 URL 中,常用的合法字符有 0~9、a~z、A~Z 这样 62 个字符。关键问题在于处理hash冲突如:http://xxxxxxx与http://ooooooo以及http

2021-03-20 10:09:07 732

原创 以TCC-Transaction框架以及Seata为例分析分布式事务TCC执行原理

文章目录场景整体处理流程使用TCC开发需要做的TCC-Transaction开源框架执行原理1. 事务存储器2. 事务拦截器CompensableTransactionAspect主事务ROOT分支事务Provider作用总结ResourceCoordinatorAspect3. 事务管理器4. 事务处理JOBseata先以tcc-transaction开源分布式事务框架为例场景以下订单,之后扣减库存、扣款业务为例。创建订单并付款主事务:订单提交成功两个子事务:扣款,扣减库存也都成功成功场景:

2021-03-12 15:12:54 1330

原创 hystrix和sentinel的使用实践

使用场景据杨波老师说,熔断、限流、资源隔离80%的场景是使用在网关上,信号量方式准备在gateway上使用sentinel,直接系统规则配置信号量使用sentinel,可以对某个指定的接口进行限流使用nginx,配置单个接口的location,使用limit_req就可以限制这个接口20%的场景是使用在第三方接口调用上,线程池隔离的方式准备使用hystrix两者功能上区别sentinel相比hystrix,其提供了控制台,操作更加方便。是一个更丰富、更工业化的框架,hystrix更像是一

2021-03-02 10:02:33 904

原创 java内存模型及常见的几种非原子性操作

文章目录java内存模型(JMM)1. 自增操作2. instance = new Singleton();3. y = x;java内存模型(JMM)java内存模型 (java memory model JMM)指定了java虚拟机如何与计算机的主存RAM进行工作(可以类比RAM和cpu L1 L2 L3高速缓存)java内存模型定义了线程和主内存之间的抽象关系线程不能直接操作主内存,只有先操作了工作内存之后才能写入主内存。工作内存和java内存模型一样也是一个抽象的概念,它其实并不存在,其

2021-02-26 17:25:28 513

原创 为什么需要线程上下文类加载器

文章目录线程上下文类加载器基础案例1:JDK SPI机制问题解决方案案例2:tomcat中spring加载业务类问题解决方案补充:facade模式类加载问题线程上下文类加载器基础线程上下文类加载器是一种类加载器传递机制。为什么叫作“线程上下文类加载器”呢,因为这个类加载器保存在线程私有数据里,只要是同一个线程,一旦设置了线程上下文加载器,在线程后续执行过程中就能把这个类加载器取出来用。线程上下文加载器其实是线程私有数据,跟线程绑定的属性。站在开发者角度,其他线程都是由main线程,也就是main函数

2021-02-26 17:04:44 792 2

原创 从0开始实现一个线程池(对标java jdk ThreadPoolExecutor)

关于线程池的基础知识,参考:java线程池ThreadPoolExecutor的原理及使用这篇文章从实现的角度来实现两个版本的线程池,并对比java jdk中的ThreadPoolExecutor,看一下与工业级线程池的差距。文章目录关于线程池的四个思考第一版线程池JDK线程池中的实现1:核心执行流程第二版线程池JDK线程池中的实现2:回收线程JDK线程池中的实现3:关闭线程池JDK线程池中的实现4:任务拒绝策略关于线程池的四个思考线程池刚刚创立,还没有Task到来的时候,池中的线程处于什么状态?

2021-02-26 16:20:40 232 1

原创 arthas整体执行流程

arthas可以理解为由server, client, spy三大模块组成整体执行流程启动arthas server,利用JVMTI技术(参考:当我们谈Debug时,我们在谈什么(Debug实现原理)),在运行时attach到jvm进程上arthas server异步调用bind方法,该方法最终启动server监听线程,监听arthas客户端的连接,包括telnet和websocket两种通信方式启动arthas client,请求时,从本地System.in读取,发送到 telnet.

2021-02-25 13:22:16 608

原创 Eclipse Memory Analyzer(MAT)功能介绍

文章目录提供的功能1. overview部分2. unreachable objects Histogram3. Histogram视图4. Dominator Tree视图5. Group分组功能6. Thread Overview7. List objects8. Path To GC Roots9. Merge Shortest Paths to GC roots10. Leak Suspects Report使用MAT分析线上内存泄漏案例场景:分析:原因:提供的功能1. overview部分

2021-02-25 09:43:40 2295

原创 如何分析java thread dump文件

文章目录jstack命令基础知识:java线程状态blocked状态和waiting状态区别thread dump文件分析重点关注1:程序死锁DeadLock重点关注2:waiting on condition重点关注3:Blocked线程阻塞重点关注4:Waiting for monitor entry 和 in Object.wait():thread dump文件示例实例1:Waiting for monitor entry 和 Blocked实例2:Waiting on condition 和 TI

2021-02-24 20:15:26 1075

原创 G1(Garbage First Collector)是如何进行垃圾回收的

文章目录G1 收集器的设计目标:替换掉 CMS实现思路G1 GC的两种收集模式G1运行过程1. G1 Young GC2. 全局并发标记(global concurrent marking)3. 混合模式 mixed gc什么时候发生 Mixed GC?4. Full GCG1总结G1收集器特点G1 的适合场景G1最佳实践代码验证及G1 gc日志解析G1应用G1 收集器的设计目标:替换掉 CMSCMS的缺点参考:cms垃圾收集器是如何进行垃圾回收的不牺牲系统的吞吐量;与应用线程同时工作,几乎

2021-02-23 22:10:22 611 3

原创 cms垃圾收集器是如何进行垃圾回收的

文章目录CMS 垃圾回收器核心垃圾回收过程完整垃圾回收过程阶段一:初始标记阶段二:并发标记(Concurrent Mark)阶段三:并发预清理阶段阶段四:可终止的预处理阶段五:重新标记阶段六:并发清理阶段七:并发重置CMS 优缺点总结缺点1:总吞吐量降低缺点2:无法处理浮动垃圾缺点3:空间碎片问题缺点4:GC 的时间难以预估代码验证CMS 垃圾回收器CMS(Concurrent Mark Sweep)收集器是一种以获取最短回收停顿时间为目标的收集器。目前很大一部分的 Java 应用集中在互联网网站或者

2021-02-23 20:20:20 2019 2

原创 leetcode46: Permutations 全排列解析及时间复杂度分析

思路递归解决问题分3步:大问题==》小问题如果我们确定了最后一位数据,那就变成了求解剩下 n−1个数据的排列问题。而最后一位数据可以是 n 个数据中的任意一个,因此它的取值就有 n 种情况。所以,“n 个数据的排列”问题,就可以分解成 n 个“n−1个数据的排列”的子问题。递推公式比如[1,2,3]perm(1,2,3) = perm(2,3) 1 + perm(1,3) 2 + 3 perm(1,2) 3终止条件终止条件 当子数组长度为1的时候 输出当前数组的值代码实

2021-02-10 10:22:18 3058

原创 通过prometheus mysql exporter + grafana dashboard来看mysql需要监控的指标

数据库监控需要监控哪些指标呢?文章目录1. 对数据库服务可用性进行监控2. 对数据库性能进行监控1. 周期性获取QPS和TPS2. 如何监控innodb的阻塞3. 监控buffer pool4. 监控binlog是否使用了磁盘5. 监控写的能力grafana mysql dashboard1. Uptime2. Current QPS3. InnoDB Buffer Pool Size4. ConnectionsConnectionsMax Used ConnectionsMax Connections5

2020-12-24 17:20:38 2362 2

原创 mysql面试经典问题:如何设计一个关系型数据库

模块划分能力relational database management system底层需要一个存储模块(文件系统)我们还需要组织并使用这些数据,因此需要有程序实例。用逻辑结构来映射出物理结构来,并且在程序中提供获取以及管理数据的方式,以及必要的问题追踪机制。文章目录1. 存储管理模块2. 缓存机制3. sql解析模块4. 日志管理5. 权限划分6. 容灾机制7. 索引管理8. 锁管理接下来来细分一下程序的模块。首先,需要对数据的格式以及文件的风格进行统一的管理,即把物理数据通过逻辑的形式给

2020-12-24 16:21:19 453 1

原创 mysql innodb可重复读隔离级别下是如何实现避免幻读的

表象:快照读(非阻塞读)–伪MVCC内在:next-key锁(行锁+gap锁)文章目录快照读和当前读next-key lock案例分析情况1:where条件全部命中,则不会用Gap锁,只会加记录锁情况2:where条件部分命中或者全不命中,则会加gap锁情况3:当前读走的是非唯一索引的情况情况4:不走索引的情况,会对所有的gap都上锁,这也就类似于锁表了快照读和当前读当前读:select…lock in share mode, select… for update当前读:update, delet

2020-12-24 16:15:14 1249 1

原创 mysql面试关键知识点:四种数据库隔离级别

文章目录Read UnCommitted(未提交读)Read COMMITTED(提交读)REPEATABLE READ (可重复读)SERIALIIZABLE (可串行化)总结Read UnCommitted(未提交读)在Read UnCommitted级别,事务中的修改,即使没有提交,对其他事务也都是可见的。事务可以读取未提交的数据,这也被称为脏读(Dirty Read)。这个级别会导致很多问题,从性能上来说, Read UnCommitted 不会比其他的级别好太多,但却缺乏其他级别的很多好处,除

2020-12-24 16:02:46 256 1

原创 数据库各隔离级别下的存在的并发访问问题:更新丢失、脏读、不可重复读、幻读

注意这里讨论的是抽象意义上的数据库,mysql数据库有自己特有的实现。事务隔离级别更新丢失脏读不可重复读幻读未提交读RU(Read Uncommited)避免发生发生发生已提交读RC(Read Commited)避免避免发生发生可重复读RR(Repeatable Read)避免避免避免发生串行化(Serializable)避免避免避免避免事务并发访问引起的问题以及如何避免文章目录1. 更新丢失问题2. 脏读问题3. 不可重

2020-12-24 15:55:49 600 2

原创 mysql面试关键知识点:锁机制

比如说数据库设计的时候,可以设计有以下4个级别的锁:数据库级别的锁表级别的锁页级别的锁记录级别的锁实际上innodb没有数据库级别的锁,也没有页级别的锁,其只有表级别的锁和记录级别的锁。加锁是从上往下(表到记录),一层一层的加锁释放锁就是从下向上(记录到表)逐层释放的innodb中的锁S 行级共享锁 record-lock(包含record lock + gap lock)X 行级排他锁 record-lock(包含record lock + gap lock)IS

2020-12-24 15:24:39 214

原创 mysql innodb 表空间物理存储结构及内部逻辑组织结构

在物理存储层面,每个mysql的表(非系统表)就是.frm文件及一个.ibd文件(前提是开启了独立表空间)。在物理层面就是一个二进制文件。在这个二进制文件的基础上,分析其内部逻辑组织结构。文章目录表空间 tablespace段 segment区 extent页页记录格式1. file Header2. Page Header3. lnfimum 和Supremum Record4. User Record5. Free Space6. Page Directory7. File Trailer行/记

2020-12-24 14:27:44 1090 1

原创 数据库查询性能优化方法3:合理设计查询语句

查询性能优化,有3个方法。如何设计最优的库表结构如何建立最好的索引合理的设计查询库表结构优化、索引优化、查询优化需要齐头并进,一个不落。在尝试编写快速的查询之前,需要清楚一点,真正重要是响应时间。提升性能的两个方法:空间换时间,随机转顺序方法1:设计最优的库表结构,参考:数据库查询性能优化方法1:设计最优的库表结构方法2:建立最好的索引,参考:数据库查询性能优化方法2:建立最好的索引本篇为方法3:合理设计查询语句文章目录合理设计查询语句1. 确认是否返回了大量的无用数

2020-12-24 11:11:24 580

原创 数据库查询性能优化方法2:建立最好的索引

查询性能优化,有3个方法。如何设计最优的库表结构如何建立最好的索引合理的设计查询库表结构优化、索引优化、查询优化需要齐头并进,一个不落。在尝试编写快速的查询之前,需要清楚一点,真正重要是响应时间。提升性能的两个方法:空间换时间,随机转顺序本篇为方法2:建立最好的索引方法1:设计最优的库表结构,参考:数据库查询性能优化方法1:设计最优的库表结构建立最好的索引MySQL可以使用同一个索引既满足排序,又用于查找行。因此,如果可能,设计索引时应该尽可能地同时满足这两种任务,这

2020-12-24 10:57:17 1114

原创 数据库查询性能优化方法1:设计最优的库表结构

查询性能优化,有3个方法。如何设计最优的库表结构如何建立最好的索引合理的设计查询库表结构优化、索引优化、查询优化需要齐头并进,一个不落。在尝试编写快速的查询之前,需要清楚一点,真正重要是响应时间。提升性能的两个方法:空间换时间,随机转顺序本篇为方法1:设计最优的库表结构文章目录设计最优的库表结构1. 数字类型2. 日期类型DATETIME类型TIMESTAMP类型3. char类型4. VARCHAR类型注意事项设计最优的库表结构主要就是选择合适的数据类型MySQL

2020-12-24 10:42:03 523

原创 mysql索引B+ Tree数据结构:主键B+ Tree,复合索引B+ Tree,二级索引B+ Tree及对应的查询过程分析

文章目录B+ Tree数据结构主键B+ Tree复合索引(Compound Index) B+ Tree二级索引B+ Tree查询生命周期回表不回表的情况回表的情况回表优化案例B+ Tree数据结构mysql索引就是通过B+ Tree实现的B+树的primary value(主要作用)是在block-oriented storage context 块存储环境下,in particular, filesystems,比如说文件系统中,来存储数据。与B树对比,all records都被存储在树的le

2020-12-23 17:11:31 827

原创 mysql面试关键知识点:binary log(binlog)以及 binlog与redo log的对比

binlog要与redo log对比来看,这篇文章就通过两者的对比来说明binlog的功能。文章目录binlog功能binlog工作过程对比binlog和redo logbinlog功能二进制日志(binlog),其用来进行point in time(PIT 基于时间点的恢复)的恢复及主从复制(Replication)环境的建立。binlog也是一种恢复机制,其实现的是基于时间点的恢复,比如通过binlog将数据库恢复到某个时间点。从表面上看其和重做日志非常相似,都是记录了对于数据库操作的日志。然而

2020-12-23 16:04:03 758 2

原创 mysql 事务提交底层处理过程(写操作)及redo log实现原子性及持久性分析

这篇文章来回答这个问题:当应用层提交了一个事务,mysql底层是如何将增删改写入到最底层的.ibd文件中,并保证这个已提交的事务的原子性和持久性的文章目录背景知识LSN(log sequence number)buffer pool部分写失效及Double Write写过程基于redo log实现事务的原子性及持久性为了解决这个问题,要分析mysql的写过程。整体上来看,可以分为这两大部分:左侧为数据部分。左侧上部分是innodb内存缓冲池buffer pool,左侧下部分是磁盘上的record

2020-12-23 14:36:13 1187

原创 真实落地架构:开放平台架构及实现

真实业务场景下的开放平台结构及实现文章目录需求:架构设计:API网关开发者中心授权中心控制后台实现:需求1:app登录需求2:小程序需求3:APP自身H5页面需求4-1:第三方H5页面,无server端需求4-2:第三方H5页面,有server端令牌有效期及scope的处理需求:APP支持多种登录方式包括:用户名和密码手机号加验证码其他渠道的第三方登录,如微信、支付宝等第三方登录支持微信小程序、支付宝小程序对受保护资源的请求支持APP自身H5页面对受保护资源的请求支持

2020-12-16 18:11:23 5360

原创 oauth2.0开发总结

oauth2.0协议解决什么问题?来解决资源拥有者如何委托第三方应用访问受保护资源的问题解决方案是什么?用令牌代替用户名和密码在OAuth 协议中,通过为每个第三方软件和每个用户的组合分别生成对受保护资源具有受限的访问权限的凭据,也就是访问令牌,来代替之前的用户名和密码。而生成访问令牌之前的登录操作,又是在用户跟平台之间进行的,第三方软件根本无从得知用户的任何信息。oauth2.0中的4种角色在OAuth 2.0的体系里面有4种角色,按照官方的称呼它们分别是资源拥有者、客户端(第三方软件)、授权

2020-12-16 14:22:46 208

原创 为接入oauth2.0,受保护资源服务需要做哪些工作

受保护资源最终指的还是Web API,比如说,访问头像的API、访问昵称的API。对应到我们的打单软件中,受保护资源就是订单查询API、批量查询API等。首先要做的是检查令牌的合法性,之后确定权限范围。提供一个统一的网关层来处理校验。文章目录1. 检查令牌的合法性2. 确定权限范围权限维度1:不同的权限对应不同的操作权限维度2:不同的权限对应不同的数据权限维度3:不同的用户对应不同的数据3. 提供一个统一的网关层来集中处理校验1. 检查令牌的合法性受保护资源来调用授权服务提供的检验令牌的服务方案有

2020-12-16 14:10:18 229

原创 为接入oauth2.0,第三方软件需要做哪些工作

如果要基于开放平台构建一个第三方软件的应用,第三方软件的研发人员应该做哪些工作?要到开放平台申请注册为开发者,在成为开发者以后再创建一个应用,之后就开始开发了开发第三方软件应用的过程中,第三方软件的研发人员需要重点关注哪些内容呢?这些内容包括4部分,分别是:注册信息、引导授权、使用访问令牌、使用刷新令牌1. 注册信息第三方软件软件需要先拥有自己的app_id和app_serect等信息,同时还要填写自己的回调地址redirect_uri、申请权限等信息。2. 引导授权比如,用户要使用第三方软件

2020-12-16 13:51:05 388 1

原创 oauth2.0授权协议中授权服务的功能及工作原理分析

授权这个大动作的前提,肯定是第三方软件要去平台那里“备案”,也就是注册。注册完后,开放平台就会给第三方软件app_id和app_secret等信息,以方便后面授权时的各种身份校验。同时,注册的时候,第三方软件也会请求受保护资源的可访问范围。授权服务可以说是整个OAuth 2.0体系中的 “灵魂” 组件,任何一种许可类型都离不开它的支持,它也是最复杂的组件。它将复杂性尽可能地“揽在了自己身上”,才使得第三方软件接入OAuth 2.0的时候更加便捷。授权服务器组成提供4个端点 endpoint

2020-12-16 13:24:22 461 1

原创 oauth2.0授权协议中刷新令牌refresh token的工作原理及生命周期分析

在学习oauth2.0协议的时候,对于刷新令牌refresh token感觉很困惑。主要是为啥需要刷新令牌,以及刷新令牌是如何工作的,技术细节是啥?比如通过refresh token可以让access token永久不过期吗?下面就针对这两个问题进行分析。为什么需要刷新令牌如果access token超时时间很长,比如14条,由于第三方软件获取受保护资源都要带着access token,这样access token的攻击面就比较大。如果access token超时时间很短,比如1个小时,那其超时之后

2020-12-16 10:48:47 10380 1

原创 web 单点登录sso(single sign on)的实现方案:CAS, SAML, OIDC,JWT

什么是SSO?web登录的本质是什么?如何增加状态/会话单个系统的登录扩展到多个系统,就是SSO方案1:共享cookie,后台共享sessionspring session项目就是共享session,共享session放到redis中Session Cookie要种在Web应用的根域上,也就是说不同Web应用的根域必须相同,否则会有跨域问题。方案2:共享cookie,后台不共享session签名的方式来校验方案3:使用独立的认证中心CAS(central authen

2020-12-15 18:09:10 3136 1

原创 面试经典问题:请说出至少N种网络攻击方式

XSS攻击Cross Site Scripting 跨站脚本攻击,是代码注入攻击的一种把用户在此网站的cookie窃取到如何防范:像Thymeleaf等html模板引擎,都会做编码的server端程序使用commons-lang3#StringEscapeUtils,做转义CSRF攻击cross-site request forgery:跨站请求伪造攻击方式1:用户在浏览器中访问了mybank.com,所以这个浏览器中已经包含了相关的cookie,这个cookie是非常重要的如

2020-12-11 15:36:34 789

原创 面试经典问题:请说出至少N个http响应码

100 Continue:向迅雷上传大文件的时候,会使用到101 服务升级使用,如websocket或http2.0301 永久重定向302 临时重定向304 Not Modified,缓存标识400 Bad Request:服务器认为客户端出现了错误,但不能明确判断为以下哪种错误时使用此错误码。比如HTTP请求格式错误401 Unauthorized:浏览器访问一个需要基本认证的页面服务器发送401 unauthorized,并传递了一个WWW-Authent..

2020-12-11 14:56:44 91

kafka-manager-1.3.3.16编译好的zip包

sbt编译kafka-manager项目的苦难经历,参考:https://blog.csdn.net/u013905744/article/details/85007922#t4

2018-12-14

spring jdbc示例代码

spring jdbc示例代码,包括增删改查等一系列操作。了解spring jdbc与jdbc、orm框架的区别

2017-10-24

使用SessionListener+持久化Session+Springmvc拦截器实现单点登录

使用SessionListener+持久化Session+Springmvc拦截器实现单点登录

2017-10-24

IntelliJ_idea_keymaps_eclipse_copy快捷键_重新整理

IntelliJ_idea_keymaps_eclipse_copy快捷键_重新整理

2017-06-09

IntelliJ_idea_keymaps_eclipse_copy快捷键

IntelliJ_idea快捷键 with keymaps using eclipse copy

2017-06-09

使用面向对象思想以及应用设计模式实现计算器

01面向对象计算器_封装版 02面向对象计算器_继承多态虚方法版 03面向对象计算器_抽象类版 04面向对象计算器_接口版 05面向对象计算器_构造方法进行参数传递 06面向对象计算器_简单工厂模式 07委托多态计算器 08计算器终极版_插件机制(反射)

2016-02-09

骑士飞行棋项目需求及c#控制台程序实现

传智播客骑士飞行棋项目总结,包括项目需求,实现代码,适合初学者进行面向过程的方法调用的联系

2015-01-04

空空如也

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

TA关注的人

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