自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(191)
  • 资源 (22)
  • 收藏
  • 关注

原创 A*寻路算法

A*寻路算法就是启发式探索的一个典型实践,在寻路的过程中,给每个节点绑定了一个估计值(即启发式),在对节点的遍历过程中是采取估计值优先原则,估计值更优的节点会被优先遍历。如下图区域,被简化成6*6的小方格。其中绿色表示起点,红色表示终点,黑色表示路障,不能通行。先描述A*算法的大致过程:将初始节点放入到open列表中。 判断open列表。如果为空,则搜索失败。如果open列表中存在目标节点,则搜索成功。 从open列表中取出F值最小的节点作为当前节点,并将其加入到close列表中。 计

2021-07-01 14:55:02 630

原创 理解Spring boot的自动装配

Spring boot的自动装配可以从官方文档得出答案:Spring boot自动装配的特性可以由@EnableAutoConfiguration来激活。@SpringBootApplication又是包含以下三个注解:@SpringBootConfiguration、@ComponentScan、@EnableAutoConfiguration。因此@SpringBootApplication也是可以进行自动装配的。(从这里可以看出@SpringBootApplication注解不是spring boot

2021-07-01 14:45:16 655

原创 线程池

基础知识:Executor.newFixedThreadPool(3);newFixedThreadPool是linkedBlockQuene就是无界阻塞队列。3就是核心线程,当线程1进来之后,判断此时线程数是否小于核心线程。如果不小于,则创建线程执行任务,否则进入到阻塞队列,等待线程执行。原代码如下: public static ExecutorService newFixedThreadPool(int nThreads) { return new...

2021-02-18 23:13:10 244

原创 AQS

基础知识:多线程同时访问一个共享数据,synchronized、cas、concurrentHashMap、lock等。多个线程过来,都尝试对同一个lock对象进行加锁ReentrantLock lock = new ReentrantLock ();Lock.lock();// 业务代码Lock.unlock();AQS的原理图:ReentrantLock 默认是非公平锁,要想变为公平锁,则需要初始化的时候传入参数true。(唤醒的时候如果这个时候线程3强制执行cas且执行

2021-02-18 23:11:57 129

原创 concurrentHashMap

基础知识:在普通的hashmap多线程访问的时候是会存在线程安全的,如果这个时候对整个map进行加锁,效率低下。如:线程1要put位置是数组5,线程2要put是数组21,实际上这个时候是不需要加锁。那么jdk中提供了concurrentHashMap默认实现了线程安全性。在jdk1.7及之前,是分段加锁数组1,数组2,数组3, 每一个数组对应一个锁// 多个线程来的时候,线程1要put的位置是数组1,线程2要put的位置是数组2Jdk1.8之后,做了一些优化和改进,锁粒度的细化一个大的数

2021-02-18 23:10:19 98 1

原创 CAS

基础知识:多个线程需要访问同一数据,synchrnized是一种的解决办法。下面再看看并发包下的其他的技术:CASInt i=0;一段代码// 会有多个线程进行执行Public synchrnized void method(){i++;}上述的代码肯定是存在线程安全问题的,在一个对象实例加synchrnized是可以解决的,这样就只有一个线程可以成功加锁,可以对他关联的monitor计数器加1。但是上述的解决办法效率低,一旦多个线程去并发进行加锁,串行化执...

2021-02-18 23:07:50 92 2

原创 Synchronized

基础知识:加锁一般来说都是必须对一个对象进行加锁的。实现的底层原理是什么?两个指令:monitorenter \ monitorexit答:每个对象都有一个monitor,如果要加锁,就必须先对对象关联的monitor进行获取,然后进行加锁。Monitor是有一个计数器,最开始等于0,现在如果有一个线程进入了,那么这个时候就设置为1,如果该线程再次进行加锁,则设置为计数器为2,以此类推。如果执行完代码片段之后,则执行指令monitorexit,将计数器设置为0,这个其他的线程就可以继续进入进

2021-02-18 23:04:24 72

原创 dubbo报错Data length too large: 10710120处理

工作中遇到以下报错信息cause: java.io.IOException: Data length too large: 10710120, max payload: 8388608, channel: NettyChannel [channel=[id: 0x09396776, /10.195.2.51:48887 => /10.195.2.21:20881]]java.io.IOException: Data length too large: 10710120, max paylo

2021-02-18 19:04:28 2888

原创 Hashmap深究

Hashmap底层首先就是基于数组实现,后面就可以围绕数组进行解释。Hash算法的优化:// jdk1.8之后的原代码Return (key==null) ?0 :(h=key.hashcode())^(h >>>16))1111 1111 1111 1111 1111 1010 0111 1100 key.hashcode0000 0000 0000 0000 1111 1111 1111 1111 h >>>16^1111 1111 1..

2021-02-17 15:57:13 78

原创 spring的autowired与resource

经过工作中的开发经验可以用一句话进行总结其区别与联系:@autowired与@resource就只是默认的装配类型不一致,@autowired默认byType注入,如果找不到byType(也就是一个接口的实现类有多个),那么就按照byName注入。@resource是默认按照byName注入,当byName找不到的时候,则按照byType注入。代码如下:@autowired示例@Componentpublic class IndexDaoImpl implements IndexDao {

2020-10-13 18:49:35 398

原创 LoadingCache

缓存,在我们日常开发中是必不可少的一种解决性能问题的方法。简单的说,cache 就是为了提升系统性能而开辟的一块内存空间。 缓存的主要作用是暂时在内存中保存业务系统的数据处理结果,并且等待下次访问使用。在日常开发的很多场合,由于受限于硬盘IO的? 缓存在很多系统和架构中都用广泛的应用,例如: 1.CPU缓存 2.操作系统缓存 3.本地缓存 4.分布式缓存 5.HTTP缓存 6.数据库缓存 等等,可以说在计算机和网络领域,缓存无处不在。可以这么说,只要有硬件性能不对等...

2020-09-04 17:23:35 496

原创 如何简单有效而彻底实现跨域访问

在一次接口开发过程中,前端同事访问了我的接口:user/getUserInfo.html,前端的代码是加载在localhost:8080服务上的,访问远程这个接口的时候出现跨域问题,中间查询了很多资料,终极版本的解决方案如下:import org.springframework.web.bind.annotation.CrossOrigin;import javax.servlet.*;import javax.servlet.http.HttpServletRequest;import j

2020-09-03 18:24:20 194

原创 @PropertySource与@ImportResource的区别

@PropertySource 自定义配置文件名称,多用于配置文件与实体属性映射。引入说明在从配置文件里获取值,与JavaBean做映射。存在一个问题,我们是从主配置(application.yml)里读取的。如果全部的配置都写到application里,那么主配置就会显得特别臃肿。为了按照不同模块自定义不同的配置文件引入了@PropertySource配置person.propertiesperson.lastName=李四person.age=25person.birth=201

2020-09-01 11:56:05 292

原创 guava cache(LoadingCache)使用和源码分析

guava简介guava cache是一个本地缓存。有以下优点:很好的封装了get、put操作,能够集成数据源。 一般我们在业务中操作缓存,都会操作缓存和数据源两部分。如:put数据时,先插入DB,再删除原来的缓存;ge数据时,先查缓存,命中则返回,没有命中时,需要查询DB,再把查询结果放入缓存中。 guava cache封装了这么多步骤,只需要调用一次get/put方法即可。 线程安全的缓存,与ConcurrentMap相似,但前者增加了更多的元素失效策略,后者只能显示的移除元素。 Guav

2020-08-14 15:28:36 426

原创 modCount与exceptModCount

大家先看看如下示例:public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("111"); list.add("111"); list.add("111"); list.add("333"); list.add("333"); for

2020-08-11 12:07:03 651

原创 utf8mb4和utf8有什么区别

utf8mb4和baiutf8区别如下:MySQL在5.5.3之后增加了对这个utf8mb4的编码,mb4就是most bytes 4的意思,专门用dao来兼容四字节的unicode。好在utf8mb4是utf8的超集,除了将编码改为utf8mb4外不需要做其他转换。当然,为了节省空间,一般情况下使用utf8也就够了。下图进行更好的说明其区别:...

2020-08-10 11:43:13 436

原创 URLClassLoader浅析

背景:在启动项目得时候发现打印了关于URLClassLoader的日志,于是对该日志进行了一个demo书写,熟悉其使用场景。private static Connection conn; // 定义一个获取数据库连接方法 public static Connection getConn(String url , String user , String pass) throws Exception {

2020-07-21 14:14:27 206

原创 @Param注解

一.xml形式实例一 @Param注解单一属性dao层示例Public User selectUser(@param(“userName”) String name, @param(“userpassword”) String password);xml映射对应示例<select id=" selectUser" resultMap="BaseResultMap"> select * from user_user_t where use

2020-07-17 11:53:44 614

原创 mybatis.mapper-locations 包含jar包文件配置多个mapper路径

在一次的公司项目微服务化的时候,遇到一个问题:项目A中带有mapper.xml文件,项目B中也有其他的mapper.xml。这个时候项目A在某些场景的情况下需要把B打成JAR包引入到A,那么这个时候两个项目的包路径不一致,,mapper.xml的路径也不一样,这个时候就需要引入多个路径。项目A:mapper.xml 路径在 resources/mybatis/mapper/push 下面mybatis-plus: mapper-locations: classpath:mybatis/*.xm

2020-07-17 11:17:05 4924

原创 REST模式下不同请求方式的浅析

Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是POST,GET,PUT,DELETE;而PATCH是后来新增的方法。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的POST,GET,PUT,DELETE,PATCH就对应着对这个资源的创建,查看,创建或更新,删除,部分更新等五种操作。在介绍五种方法的含义之前,先来理解幂等的含义:幂等(idempotent、idempotence)是一个数学与计算机学概念,常见于抽象代数中。在编程中

2020-07-14 19:51:54 160

原创 DNS多级缓存系统

DNS基础DNS,是英文Domain Name System的简称,中文称之为“域名系统”。互联网主机之间通信是通过IP地址来互相访问,IP地址是十进制数,比如10.11.10.235,但这样的数字串对人类来说很难理解和记忆。于是,人们发明了DNS系统,使用人类可读、可理解的字符串来代替一堆堆数字。其实DNS本质是”命名系统“,为什么不叫“名字”而叫“域名”呢?这是因为在因特网的命名系统中使用了许多的“域(domain)”,因此就出现了“域名”这个名词。“域名系统”明确地指明这种系统是应用在因特网中

2020-06-01 15:37:42 1005

原创 服务发现追求CP还是AP?

服务发现生产环境中服务提供者对外提供服务,集群里面得ip随时再发生改变,那么就需要一个“通讯录”随时去获取服务节点,那么这个就是服务发现为什么需要服务发现对于服务提供者来说,契约就是接口,也就是相当于通讯录中得名字,服务节点就是提供该服务得一个实例。服务ip集合作为通讯录中得地址,可以通过获取服务ip来完成服务得发现,这就是RPC的服务发现机制。1、服务注册:再服务启动的时候,将服务提供者暴露的服务注册到注册 中心,注册中心将服务名称和IP地址保存。2、服务订阅:再服务调用方启动得时

2020-06-01 15:12:06 1415

原创 为什么JSON占用额外开销大

这个就相对于二进制文件占用内存少来说的。文本文件:是基于字符编码的文件,常见的编码有ASCII编码,UNICOD。 ASCII:是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准,并等同于国际标准ISO/IEC 646 二进制文件:是基于值编码的文件(在很多问题中我们还可以采用直接的值编码,也就是说用一些比较复杂的数来编码,比如说 实数) 文本文件基本上是定长编码的,基于字符,每个字符在具体编码中是固定的; ASCII码是8个比特的编码,UNIC...

2020-06-01 10:40:20 841

原创 Spring的注解使用

直接上代码,代码中有注释AspectJ.javapackage com.wemew.wmgame.spring_mybatis.config;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Before;import org.aspectj.lang.annotation.P...

2020-04-17 14:27:32 214 1

原创 Spring 如何解决循环依赖?

在Spring实际的开发过程中,可能会出现一种情况:BeanA 依赖BeanB ,BeanB依赖BeanA,代码如下:@Componentpublic class A { private B b; public void setB(B b) { this.b = b; }}@Componentpublic class B { private A a; pu...

2020-04-15 18:52:46 215

原创 volatile

为了更好的说明volatile可见性的使用场景,看下面的案例:/** * <p> * cpu现在是多核的,那么各自之间会存在缓存不一致的问题。 * 以前的解决办法是:总线加锁,在第一个线程来的时候开始加锁,当这个线程执行完成后,进行 * 解锁后,第二个线程才可以进行读取值进行操作。这样的话,效率低下。 * <p> * 现在的解决办法是:MESI缓存一致性协...

2020-04-09 21:48:40 98

原创 手写HashMap

为了便于进行深刻了解HashMap的底层实现,所以手写了一个可以put和get值的简易版本的HashMap,代码如下:/** * 手写HashMap * <p> * 为什么使用红黑树,不使用平衡二叉树和链表? * 答:因为平衡二叉树查询效率虽高,但插入数据慢。链表查询速度低,插入速度快。红黑树就是基于两者之间,查询效率 * 和插入效率都适合。...

2020-04-09 20:02:34 177

原创 ThreadLocal

在线上的时候遇到一个关于ThreadLocal的问题,伪代码如下:private static final ThreadLocal<Integer> currentUser = ThreadLocal.withInitial(() -> null);@GetMapping("wrong")public Map wrong(@RequestParam("userId...

2020-04-07 16:48:22 430

原创 关于write()和fsync()

writessize_t write(int fd, const void *buf, size_t count);将数据写到文件中. 注意, 如果文件是保存在硬盘中, write() 函数调用返回之后, 并不表示数据已经写入到硬盘中, 这时如果掉电, 数据可能会丢失.fsyncint fsync(int fd);程序调用本函数, 通知内核把数据写到硬盘(file)中. 比如,...

2020-03-23 11:15:04 1821 1

原创 彻底解决mysql报错:1030, 'Got error 28 from storage engine'

这个问题确实是服务器系统盘满了,mysql指定的临时文件目录满掉,大概就是这个意思.下面解决/dev/vda1系统盘满了,其实我压根不知道/dev/vda1这在哪,是什么,后来了解这是 virtio-block 类型的设备。科普一下:以 'c' 开头的一行表示该设备是一个字符设备,以 'b' 开头的行表示这是一个块设备。/dev/vda 和 /dev/vdb 都是 virtio...

2020-03-23 10:56:56 356

原创 redis探析

Redis(REmote DIctionary Server)是一个由Salvatore Sanfilippo写的key-value存储系统。Redis过期键删除策略redisDb 结果的 expires 字典保存了数据库中所有键的过期时间,我们称这个字典为过期字典过期字典的键是一个指针,这个指针指向键空间的某个键对象 过期字典的值是一个 long long 类型的证书,用...

2020-03-20 18:50:45 122

原创 logback的additivity="false" 与root关系

它是 子Logger 是否继承 root的Logger 的 输出源(appender) 的标志位。具体说,默认情况下子Logger会继承root的Logger的appender,也就是说子Logger会在root的Logger的appender里输出。1.若是additivity设为false,则子Logger只会在自己的appender里输出,不会在root的logger的appende...

2020-03-16 11:38:51 996

原创 binlog_format=row不生效

binlog 有两种格式,一种是 statement,一种是row。可能你在其他资料上还会看到有第三种格式,叫作 mixed,其实它就是前两种格式的混合。查看当前的格式:show VARIABLES like '%binlog_format%'mysql> SET GLOBAL binlog_format = 'ROW';然而设置如上的方式不能生效,这是因为这个...

2020-03-05 11:34:19 2272

原创 Spring事务传播行为详解

前言Spring在TransactionDefinition接口中规定了7种类型的事务传播行为。事务传播行为是Spring框架独有的事务增强特性,他不属于的事务实际提供方数据库行为。这是Spring为我们提供的强大的工具箱,使用事务传播行可以为我们的开发工作提供许多便利。但是人们对他的误解也颇多,你一定也听过“service方法事务最好不要嵌套”的传言。要想正确的使用工具首先需要了解工具。本文...

2020-03-04 17:38:25 1078 2

原创 如果你的 MySQL 现在出现了性能瓶颈,而且瓶颈 在 IO 上,可以通过哪些方法来提升性能呢?

1. 设置 binlog_group_commit_sync_delay 和 binlog_group_commit_sync_no_delay_count 参数,减少 binlog 的写盘次数。这个 方法是基于“额外的故意等待”来实现的,因此可能会增加语句的响应时间,但没有丢失数据的风险。 2. 将 sync_binlog 设置为大于 1 的值(比较常见是 100~1000)。这...

2020-03-04 10:59:28 717

原创 如何解决幻读?

现在你知道了,产生幻读的原因是,行锁只能锁住行,但是新插入记录这个动作,要更新的是记录之间的“间隙”。因此,为了解决幻读问题,InnoDB 只好引入新的锁,也就是间隙锁 (Gap Lock)。 顾名思义,间隙锁,锁的就是两个值之间的空隙。比如文章开头的表 t,初始化插入了 6个记录,这就产生了 7 个间隙。这样,当你执行 select * from t where d...

2020-02-26 11:36:41 2019

原创 幻读是什么?

为了便于进行解释幻读,新建一张表进行详细阐述:CREATE TABLE `t` ( `id` int(11) NOT NULL, `c` int(11) DEFAULT NULL, `d` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `c` (`c`)) ENGINE=InnoDB;insert into t values(0,0...

2020-02-26 10:57:13 1600 1

原创 慢查询记录

慢查询分析MySQL语句查询性能的方法除了使用 EXPLAIN 输出执行计划,还可以让MySQL记录下查询超过指定时间的语句,我们将超过指定时间的SQL语句查询称为“慢查询”。注意:超过指定时间,这个时间是可以设置的,如果设置为0秒,那么所有的查询都会记录再慢查询日志中,都被视为慢查询。慢查询开启先查看系统的慢查询设置:show global variables like 'sl...

2020-02-26 10:03:35 315

原创 Hibernate 限制查询数目,解决Limit在hql不能使用问题

在hql语句中,不能使用limit来限制显示的条数。例如:FROM user_info order by createdTime desc limit 1显示的数目不是1条,而是你查询出来的条数,所以上述写法是错误的。如何解决limit在hql中不能使用,并设置查询出来集合的数目,我们应该使用setMaxResults(e)方法来解决。以下是使用Hibernate查询并限制查...

2020-02-25 18:06:04 724

原创 针对mysql delete删除表数据后占用空间不变小的问题

开发环境MySQL前言物流规则匹配日志表记录订单匹配规则相关日志信息,方便管理员维护和查阅不匹配的订单,四个月时间,该日志表数据就有174G,当前,这么大的数据量,不仅对数据库造成了很大的负载压力,同时查询等维护也缓慢,所以采取将日志记录移出到文件进行存储。但是短期内,还需要数据库中的部分日志记录,故而有了下面的删除记录、优化表操作。日志表大小一览表本身有六七百万条数据,从...

2020-02-24 17:27:32 384

weathermap-1.0.0.zip

weathermap本指南通过一个示例向您展示微服务引擎的治理能力。包括注册发现、服务降级、路由策略以及灰度发布,其他功能的使用方法请参考微服务管理。 示例是一个天气预报应用,该应用可以为您提供世界各地当前的天气详情以及未来5天的预报。

2019-08-13

jweixin-1.0.0.js

该jar包支持微信的开发,比如微信支付,微信权限获取等等

2018-11-30

aspose-words-15.8.0.jar

全面支持DOC, DOCX, OOXML, RTF HTML, OpenDocument, PDF,EPUB, XPS, SWF 相互转换

2018-11-30

redis安装文档

redis安装文档

2018-10-19

FSCapture截屏小助手

《FSCapture》是一款抓屏工具,体积小巧、功能强大,不但具有常规截图等功能,更有从扫描器获取图像,和将图像转换为 PDF文档等功能。FastStone Capture支持不同的截图方式,可设定不同的快捷键进行操作。

2018-05-12

近5年软件设计师真题分析与解答(2014-2017)

近5年软件设计师真题分析与解答(2014-2017)、软件设计师、软考

2018-05-12

采用Subversion进行版本控制(中文)

Subversion 是一个自由/开放源码的版本控制系统, 也就是说 Subversion 管理着随 时间改变的档案. 这些档案放置在一个中央 档案库 (repository) 中. 这个档案库 很像一个寻常的档案服务器, 不过它会记住每一次档案的变动. 这样你就可以把 档案回复到旧的版本, 或是浏览档案的变动历程. 许多人会把版本控制系统想象 成某种 “时光机器”

2018-04-08

Git魔法书籍

Git(http://git.or.cz/)是一个版本控制的瑞士军刀。一个可靠通用多用途版本控制工具,它超强的灵活性使得一般人学着使用它没那么直白,更别说掌握它了。我把到目前为止弄明白的记下来,因为在我试图理解Git用户手册的时候也是困难重重;希望对别人有用

2018-04-08

Activiti-5-14.pdf

Activiti 5.14 用户手册 Activiti流程引擎的配置文件是名为activiti.cfg.xml的XML文件。 注意这与使用Spring方式创建流程引擎 是不一样的。

2018-04-08

日报的模板

PL/SQL Developer 是一个为 Oracle 数据库开发存储程序单元的集成开发环境(IDE),使用 PL/SQL Developer 可以方便地创建你的客户/服务器应用程序的服务器部分。主要的功能有: · 使用文本编辑器写程序单元(过程、触发器等等)。 · 使用 Oracle SQL*Plus 编译源文件。 · 如果有编译错误,你必须找出它位于源文件何处,纠正它,转回到 SQL*Plus 重新编译它,然后再找下一处错误。 · 使用 SQL*Plus 或你的客户端应用程序测试程序单元。 · 使用解释计划工具或 tkprof 工具优化你的 SQL 语句。 · 使用 SQL*Plus 或另外的工具在你的数据库里查看或修改其它对象和数据。 这些任务 - 编辑、编译、纠正、测试、调试、优化和查询,在不离开 PL/SQL Developer IDE 的情况下都能被完成。

2017-11-26

代码笔记代码笔记代码笔记代码笔记

PL/SQL Developer 是一个为 Oracle 数据库开发存储程序单元的集成开发环境(IDE),使用 PL/SQL Developer 可以方便地创建你的客户/服务器应用程序的服务器部分。主要的功能有: · 使用文本编辑器写程序单元(过程、触发器等等)。 · 使用 Oracle SQL*Plus 编译源文件。 · 如果有编译错误,你必须找出它位于源文件何处,纠正它,转回到 SQL*Plus 重新编译它,然后再找下一处错误。 · 使用 SQL*Plus 或你的客户端应用程序测试程序单元。 · 使用解释计划工具或 tkprof 工具优化你的 SQL 语句。 · 使用 SQL*Plus 或另外的工具在你的数据库里查看或修改其它对象和数据。 这些任务 - 编辑、编译、纠正、测试、调试、优化和查询,在不离开 PL/SQL Developer IDE 的情况下都能被完成。

2017-11-26

就业面试题

汇聚了就业面试常见题型 详细剖析

2016-06-22

巴巴运动网站源码

巴巴运动网站源码 可以从中学到各个页面跳转 显示 等业务逻辑的处理

2016-06-18

论坛技术源码

bbs论坛 实现了将静态的页面动态化

2016-06-18

绕过防盗链技术

一个简单的代码演示如何绕过网站设置的防盗链技术

2016-05-28

myeclipes多版本的破解软件

myeclipes多版本的破解软件 myeclipes2013,2014,10.x

2016-05-25

java高手秘笈

java高手秘笈是基于java5.0的新特性而言,全面了解java技术!

2016-05-25

张孝祥Java就业面试题大全

传智播客创始人张孝祥整理的Java就业面试题大全,深刻实用,对程序员影响深远!

2016-05-25

推箱子游戏

javase技术的灰太狼推箱子游戏。主要涉及的知识点有:IO流 GUI编程 事件监听 eclipse使用

2016-05-25

mysql驱动jar包

mysql驱动jar包

2016-05-25

ps的常用笔刷

文鼎字体打包下载,山水,树木,动物各种笔刷,满足您的需要

2016-05-25

酒店管理系统

该资源源码全面,主要利用javase知识解决点餐 预定 收款 财务管理业务。以达到对javase的透彻的认识和运用!

2016-05-25

空空如也

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

TA关注的人

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